From a2c57089afefbdb844b834f1b198869a8de93506 Mon Sep 17 00:00:00 2001 From: absolute idiot <174307533+churginator@users.noreply.github.com> Date: Fri, 24 Jul 2026 12:28:08 -0400 Subject: [PATCH 1/7] pee dubya arr --- .../com/hbm/tileentity/machine/TileEntityPWRController.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityPWRController.java b/src/main/java/com/hbm/tileentity/machine/TileEntityPWRController.java index 4ecf97689..391df724b 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityPWRController.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityPWRController.java @@ -655,6 +655,8 @@ public class TileEntityPWRController extends TileEntityMachineBase implements IG PREFIX_VALUE + "rods", PREFIX_VALUE + "coreheat", PREFIX_VALUE + "hullheat", + PREFIX_VALUE + "coldbuf", + PREFIX_VALUE + "hotbuf", PREFIX_VALUE + "flux", PREFIX_VALUE + "depletion", PREFIX_FUNCTION + "setrods" + NAME_SEPARATOR + "percent", @@ -671,6 +673,8 @@ public class TileEntityPWRController extends TileEntityMachineBase implements IG if((PREFIX_VALUE + "rods").equals(name)) return "" + (int) (100 - this.rodLevel); // why the fuck did i invert this again? if((PREFIX_VALUE + "coreheat").equals(name)) return "" + this.coreHeat; if((PREFIX_VALUE + "hullheat").equals(name)) return "" + this.hullHeat; + if((PREFIX_VALUE + "coldbuf").equals(name)) return "" + this.tanks[0].getFill(); + if((PREFIX_VALUE + "hotbuf").equals(name)) return "" + this.tanks[1].getFill(); if((PREFIX_VALUE + "flux").equals(name)) return "" + (int) this.flux; if((PREFIX_VALUE + "depletion").equals(name)) return "" + (int) (this.progress * 100 / this.processTime); return null; From 6d289ccfd890b5a8486d601c842eb17260e04c52 Mon Sep 17 00:00:00 2001 From: polyvus Date: Sat, 25 Jul 2026 12:20:57 +0200 Subject: [PATCH 2/7] Delete src/main/resources/assets/hbm/structures/tower_base.nbt Need a slight tweak --- .../assets/hbm/structures/tower_base.nbt | Bin 6846 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 src/main/resources/assets/hbm/structures/tower_base.nbt diff --git a/src/main/resources/assets/hbm/structures/tower_base.nbt b/src/main/resources/assets/hbm/structures/tower_base.nbt deleted file mode 100644 index f2af67a08ce17afa06ce01502a783bb568ce5ee9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6846 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 sA1eE}mg Date: Sat, 25 Jul 2026 12:21:53 +0200 Subject: [PATCH 3/7] slight tweak --- .../assets/hbm/structures/tower_base.nbt | Bin 0 -> 6855 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 src/main/resources/assets/hbm/structures/tower_base.nbt diff --git a/src/main/resources/assets/hbm/structures/tower_base.nbt b/src/main/resources/assets/hbm/structures/tower_base.nbt new file mode 100644 index 0000000000000000000000000000000000000000..7f5f27a5ec247aeca2b24ce77d052120439a26d8 GIT binary patch literal 6855 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 literal 0 HcmV?d00001 From 05b57df2213ed5a659392e375360aa5eedf7bb20 Mon Sep 17 00:00:00 2001 From: polyvus Date: Sat, 25 Jul 2026 12:25:34 +0200 Subject: [PATCH 4/7] Delete src/main/resources/assets/hbm/structures/tower_base.nbt didn't use the right fucking file --- .../assets/hbm/structures/tower_base.nbt | Bin 6855 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 src/main/resources/assets/hbm/structures/tower_base.nbt diff --git a/src/main/resources/assets/hbm/structures/tower_base.nbt b/src/main/resources/assets/hbm/structures/tower_base.nbt deleted file mode 100644 index 7f5f27a5ec247aeca2b24ce77d052120439a26d8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6855 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 From 23ed29e64b04d6320f9a50b18efc63323f8de90c Mon Sep 17 00:00:00 2001 From: polyvus Date: Sat, 25 Jul 2026 12:26:43 +0200 Subject: [PATCH 5/7] finally --- .../assets/hbm/structures/tower_base.nbt | Bin 0 -> 6857 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 src/main/resources/assets/hbm/structures/tower_base.nbt diff --git a/src/main/resources/assets/hbm/structures/tower_base.nbt b/src/main/resources/assets/hbm/structures/tower_base.nbt new file mode 100644 index 0000000000000000000000000000000000000000..79cb1d87869c34ed4bfdda5ac489b8d881d04545 GIT binary patch literal 6857 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 Date: Sat, 25 Jul 2026 14:43:38 +0200 Subject: [PATCH 6/7] can someone test this crap i think we're done here --- .../recipes/AssemblyMachineRecipes.java | 4 ++-- src/main/java/com/hbm/main/NEIConfig.java | 6 ++++-- src/main/java/com/hbm/qmaw/QMAWLoader.java | 4 ++++ .../java/com/hbm/qmaw/QuickManualAndWiki.java | 10 +++++++++- .../machine/pile/TileEntityPileCore.java | 15 +++++++++++++++ src/main/resources/assets/hbm/lang/en_US.lang | 2 +- .../assets/hbm/manual/material/etcoal.json | 3 ++- .../resources/assets/hbm/manual/pile/pile.json | 12 ++++++++++++ .../assets/hbm/manual/pile/pilecontrol.json | 12 ++++++++++++ .../assets/hbm/manual/pile/pileloader.json | 12 ++++++++++++ .../assets/hbm/manual/pile/pileop.json | 12 ++++++++++++ .../assets/hbm/manual/pile/pilevent.json | 12 ++++++++++++ .../assets/hbm/textures/items/clay_tablet.png | Bin 227 -> 286 bytes 13 files changed, 97 insertions(+), 7 deletions(-) create mode 100644 src/main/resources/assets/hbm/manual/pile/pile.json create mode 100644 src/main/resources/assets/hbm/manual/pile/pilecontrol.json create mode 100644 src/main/resources/assets/hbm/manual/pile/pileloader.json create mode 100644 src/main/resources/assets/hbm/manual/pile/pileop.json create mode 100644 src/main/resources/assets/hbm/manual/pile/pilevent.json diff --git a/src/main/java/com/hbm/inventory/recipes/AssemblyMachineRecipes.java b/src/main/java/com/hbm/inventory/recipes/AssemblyMachineRecipes.java index a8d060ca2..ad06c04d4 100644 --- a/src/main/java/com/hbm/inventory/recipes/AssemblyMachineRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/AssemblyMachineRecipes.java @@ -167,8 +167,8 @@ public class AssemblyMachineRecipes extends GenericRecipes { .inputItems(new ComparableStack(ModItems.billet_ra226be, 3)).setGroup(autoPileRod, INSTANCE)); this.register(new GenericRecipe("ass.pilepobe").setup(40, 200).outputItems(new ItemStack(ModItems.pile_rod, 1, EnumPileRod.PO210BE.ordinal())) .inputItems(new ComparableStack(ModItems.billet_po210be, 3)).setGroup(autoPileRod, INSTANCE)); - this.register(new GenericRecipe("ass.pilezr").setup(40, 200).outputItems(new ItemStack(ModItems.pile_rod, 1, EnumPileRod.ZR.ordinal())) - .inputItems(new OreDictStack(ZR.billet(), 3)).setGroup(autoPileRod, INSTANCE)); + this.register(new GenericRecipe("ass.pilezr").setup(40, 200).outputItems(new ItemStack(ModItems.pile_rod, 3, EnumPileRod.ZR.ordinal())) + .inputItems(new OreDictStack(ZR.billet(), 1)).setGroup(autoPileRod, INSTANCE)); this.register(new GenericRecipe("ass.pilenu").setup(40, 200).outputItems(new ItemStack(ModItems.pile_rod, 1, EnumPileRod.NU.ordinal())) .inputItems(new OreDictStack(U.billet(), 3)).setGroup(autoPileRod, INSTANCE)); this.register(new GenericRecipe("ass.pilepu239").setup(40, 200).outputItems(new ItemStack(ModItems.pile_rod, 1, EnumPileRod.PU239.ordinal())) diff --git a/src/main/java/com/hbm/main/NEIConfig.java b/src/main/java/com/hbm/main/NEIConfig.java index 25f58dc2f..7cc44b3fc 100644 --- a/src/main/java/com/hbm/main/NEIConfig.java +++ b/src/main/java/com/hbm/main/NEIConfig.java @@ -25,6 +25,7 @@ import net.minecraft.item.ItemStack; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.MovingObjectPosition; import net.minecraft.world.World; +import net.minecraftforge.oredict.OreDictionary; import java.util.List; @@ -92,8 +93,9 @@ public class NEIConfig implements IConfigureNEI { API.hideItem(new ItemStack(ModBlocks.conveyor_double)); API.hideItem(new ItemStack(ModBlocks.conveyor_triple)); - API.hideItem(new ItemStack(ModBlocks.brick_forgotten)); - API.hideItem(new ItemStack(ModBlocks.brick_forgotten_lock)); + API.hideItem(new ItemStack(ModBlocks.brick_forgotten, 1, OreDictionary.WILDCARD_VALUE)); + API.hideItem(new ItemStack(ModBlocks.brick_forgotten_lock, 1, OreDictionary.WILDCARD_VALUE)); + API.hideItem(new ItemStack(ModItems.coal_eternal)); API.registerHighlightIdentifier(ModBlocks.plushie, new IHighlightHandler() { @Override public ItemStack identifyHighlight(World world, EntityPlayer player, MovingObjectPosition mop) { diff --git a/src/main/java/com/hbm/qmaw/QMAWLoader.java b/src/main/java/com/hbm/qmaw/QMAWLoader.java index 6e4aeec31..fbcea7522 100644 --- a/src/main/java/com/hbm/qmaw/QMAWLoader.java +++ b/src/main/java/com/hbm/qmaw/QMAWLoader.java @@ -217,6 +217,10 @@ public class QMAWLoader implements IResourceManagerReloadListener { QMAWLoader.triggers.put(new ComparableStack(trigger).makeSingular(), qmaw); } } + + if(json.has("noindex") && json.get("noindex").getAsBoolean()) { + qmaw.noIndex(); + } if(!qmaw.contents.isEmpty()) { QMAWLoader.qmaw.put(name, qmaw); diff --git a/src/main/java/com/hbm/qmaw/QuickManualAndWiki.java b/src/main/java/com/hbm/qmaw/QuickManualAndWiki.java index f961cd2fe..ed7b20a9e 100644 --- a/src/main/java/com/hbm/qmaw/QuickManualAndWiki.java +++ b/src/main/java/com/hbm/qmaw/QuickManualAndWiki.java @@ -5,10 +5,13 @@ import java.util.HashMap; import net.minecraft.item.ItemStack; public class QuickManualAndWiki { - + public String name; public ItemStack icon; + /** Removes this manual from the calculator search feature */ + public boolean noIndex = false; + public HashMap title = new HashMap(); public HashMap contents = new HashMap(); @@ -30,4 +33,9 @@ public class QuickManualAndWiki { this.contents.put(lang, contents); return this; } + + public QuickManualAndWiki noIndex() { + this.noIndex = true; + return this; + } } diff --git a/src/main/java/com/hbm/tileentity/machine/pile/TileEntityPileCore.java b/src/main/java/com/hbm/tileentity/machine/pile/TileEntityPileCore.java index cc4c137fb..7b368780b 100644 --- a/src/main/java/com/hbm/tileentity/machine/pile/TileEntityPileCore.java +++ b/src/main/java/com/hbm/tileentity/machine/pile/TileEntityPileCore.java @@ -182,6 +182,7 @@ public class TileEntityPileCore extends TileEntityTickingBase { for(int i = 0; i < list.size(); i++) { PileChannel chan = list.get(i); if(chan.entry.compare(x, y, z) && chan.entry.getDir() == dir) { + if(chan.type == chan.type.FUEL) chan.ejectAll(); list.remove(i); for(int j = 0; j < size; j++) { int iX = x + dir.offsetX * j; @@ -250,6 +251,12 @@ public class TileEntityPileCore extends TileEntityTickingBase { this.networkPackNT(25); } } + + @Override + public void invalidate() { + super.invalidate(); + for(PileChannel chan : this.fuelChannels) chan.ejectAll(); + } @Override public void serialize(ByteBuf buf) { @@ -535,7 +542,15 @@ public class TileEntityPileCore extends TileEntityTickingBase { if(stack != null) dropItem(stack, length); } + public void ejectAll() { + for(int i = 0; i < this.rods.length; i++) { + this.dropItem(rods[i], length); + this.rods[i] = null; + } + } + public void dropItem(ItemStack stack, int depth) { + if(stack == null) return; int x = entry.getX() + entry.getDir().offsetX * depth; int y = entry.getY(); int z = entry.getZ() + entry.getDir().offsetZ * depth; diff --git a/src/main/resources/assets/hbm/lang/en_US.lang b/src/main/resources/assets/hbm/lang/en_US.lang index 6491f3b64..06542768a 100644 --- a/src/main/resources/assets/hbm/lang/en_US.lang +++ b/src/main/resources/assets/hbm/lang/en_US.lang @@ -3838,7 +3838,7 @@ item.pile_rod.rgp.desc=Reactor-grade plutonium rod, mainly plutonium-239 with pl item.pile_rod.waste.name=Chicago Pile Nuclear Waste Rod item.pile_rod.waste.desc=Highly reactive end product from leaving a Chicago Pile fuel rod in the reactor for too long. item.pile_rod.zr.name=Chicago Pile Zirconium Rod -item.pile_rod.zr.desc=Inert zirconium rod which is transparent to neutrons. Ideal for safely pushing other rods safely out of the reactor. +item.pile_rod.zr.desc=Inert zirconium rod which is transparent to neutrons. Ideal for pushing other rods safely out of the reactor. item.pile_rod_boron.name=Chicago Pile Control Rod item.pile_rod_boron.desc=§9[Neutron Absorber]$§eClick to toggle item.pile_rod_detector.name=Chicago Pile Control & Detector Rod diff --git a/src/main/resources/assets/hbm/manual/material/etcoal.json b/src/main/resources/assets/hbm/manual/material/etcoal.json index 3bcdda69c..b247f658c 100644 --- a/src/main/resources/assets/hbm/manual/material/etcoal.json +++ b/src/main/resources/assets/hbm/manual/material/etcoal.json @@ -2,10 +2,11 @@ "name": "Eternal Coal", "icon": ["hbm:item.nothing"], "trigger": [["hbm:item.coal_eternal"]], + "noindex": true, "title": { "en_US": "█ █ █ █ █ █" }, "content": { - "en_US": "████████████ ███ ███ ██ ████████ ████████ ██ ████ ████ ████████ ████ ██████████ █ ████ █████ ██████ ████████ ████ █████ ██ ██ ███ ██████" + "en_US": "████████████ ███ ███ ██ ████████ ████████ ██ ████ ████ ████████ ████ ███ ███████ █ ████ █████ ██████ ███████ █ ████ █████ ██ ██ ███ ██████" } } diff --git a/src/main/resources/assets/hbm/manual/pile/pile.json b/src/main/resources/assets/hbm/manual/pile/pile.json new file mode 100644 index 000000000..a5ddf27f9 --- /dev/null +++ b/src/main/resources/assets/hbm/manual/pile/pile.json @@ -0,0 +1,12 @@ +{ + "name": "Chicago Pile", + "icon": ["hbm:tile.pile_brick", 1, 0], + "trigger": [["hbm:tile.pile_brick"]], + "title": { + "en_US": "Chicago Pile" + }, + "content": { + "en_US": "The Chcago Pile is a low-tech low-power reactor used for breeding nuclear material, mainly turning [[uranium|Uranium]] into [[plutonium-239|Plutonium-239]]. Due to its simplicity, operating it either requires manual intervention or some form of external operation with [[Redstone over Radio]].

The pile is constructed out of a box of Chicago Pile graphite bricks at least 5x5x5 blocks in size, and at most 15x15x15 blocks. The box does not need to be a perfect cube, so shapes like 5x7x9 are valid, so long as the box is filled. Using a hand drill, the pile is assembled, with the drilled block acting as the core.

To prepare the Chicago Pile for use, channels need to be drilled, again with a hand drill. The function of the channel depends on the orientation relative to the core. Using the hand drill again on the input side of an existing channel will close the channel again. Channels cannot intersect one another.

Fuel channels are channels that follow the core's orientation, i.e. either the input or output side is on the same face as the core's panel. Fuel channels can be loaded with Chicago Pile fuel rods using a [[fuel loader|Chicago Pile Fuel Loader]]. The amount of fuel that fits into any given channel depends on its length, with one block of channel being able to hold one fuel rod.

Ventilation channels are channels which are perpendicular to the core's orientation and therefore also to the fuel channels. Ventilation channels cool down fuel channels which touch (but not intersect) them if compressed air is supplied at a pressure of 1 PU via a [[vent|Chicago Pile Vent]]. Passive cooling in the Chicago Pile is quite low, so while technically optional, vents are basically mandatory for every Pile in practice.

Channels drilled from the top are for [[control rods|Chicago Pile Control Rod]]. Control rods are used to reduce the interactiion between fuel channels in larger Pile setups, although smaller setups are usually fine without control rods. Still, throttling the reactor can be useful when cycling fuel, since the window for extracting pure plutonium-239 is quite small.
<>br>If the Pile is disassembled, channels can be drilled again without having to remove all the attachments like fuel loaders and vents, simply shift-click the attachment with the hand drill and a channel will be drilled into the Pile behind it.

See also:
* [[Chicago Pile Operation]]" + } +} + diff --git a/src/main/resources/assets/hbm/manual/pile/pilecontrol.json b/src/main/resources/assets/hbm/manual/pile/pilecontrol.json new file mode 100644 index 000000000..ee4b473da --- /dev/null +++ b/src/main/resources/assets/hbm/manual/pile/pilecontrol.json @@ -0,0 +1,12 @@ +{ + "name": "Chicago Pile Control Rod", + "icon": ["hbm:tile.pile_device", 1, 2], + "trigger": [["hbm:tile.pile_device", 1, 2]], + "title": { + "en_US": "Chicago Pile Control Rod" + }, + "content": { + "en_US": "Control rods can be placed on top of the vertically drilled channels of the [[Chicago Pile]]. Control rods, when inserted, will reduce the reactivity between fuel channels. The control rods can be controlled with a redstone signal, causing it to fully withdraw when a signal is supplied, or via [[RoR controller|Redstone-over-Radio Controller]], which allows more precise settings.

See also:
* [[Chicago Pile Fuel Loader]]
* [[Chicago Pile Vent]]" + } +} + diff --git a/src/main/resources/assets/hbm/manual/pile/pileloader.json b/src/main/resources/assets/hbm/manual/pile/pileloader.json new file mode 100644 index 000000000..854f9ebf4 --- /dev/null +++ b/src/main/resources/assets/hbm/manual/pile/pileloader.json @@ -0,0 +1,12 @@ +{ + "name": "Chicago Pile Fuel Loader", + "icon": ["hbm:tile.pile_device", 1, 0], + "trigger": [["hbm:tile.pile_device", 1, 0]], + "title": { + "en_US": "Chicago Pile Fuel Loader" + }, + "content": { + "en_US": "The fuel loader is required to load [[Chicago Pile]] fuel rods into the Pile's fuel channels. Right-clicking with a fuel rod will insert that rod into the loader, and right-clicking again will load it into the Pile manually. Fuel can also be supplied using hoppers or conveyors, and the loading action can be triggered by supplying a redstone signal to the loader's back side (where the light grey circle is).

Additionally, the loader can relay information about the connected channel to the [[RoR reader|Redstone-over-Radio Reader]], like the type (metadata) and depletion of the backmost loaded fuel rod or the channel's current temperature.

See also:
* [[Chicago Pile Vent]]
* [[Chicago Pile Control Rod]]" + } +} + diff --git a/src/main/resources/assets/hbm/manual/pile/pileop.json b/src/main/resources/assets/hbm/manual/pile/pileop.json new file mode 100644 index 000000000..ed9937519 --- /dev/null +++ b/src/main/resources/assets/hbm/manual/pile/pileop.json @@ -0,0 +1,12 @@ +{ + "name": "Chicago Pile Operation", + "icon": ["hbm:tile.pile_brick", 1, 0], + "trigger": [], + "title": { + "en_US": "Chicago Pile Operation" + }, + "content": { + "en_US": "The [[Chicago Pile]] requires at least one fuel channel with some sort of neutron source, being radium-226-beryllium or polonium-210-beryllium rods. It's safest and easiest to simply have one fuel channel dedicated to the neutron sources, although mixing neutron sources in with the regular fuel is also an option. [[Ventilation|Chicago Pile Vent]] is also required before actually using fuel, the amount of compressed air used over time is static no matter how hot the reactor is, so doing a dry-run to see if the [[compressor|Compressor]] setup is sufficient is recommended.

Once ventilation and neutron sources are in place, fuel can be added, usually in the form of natural uranium which is bred into plutonium-239. The [[fuel loader|Chicago Pile Fuel Loader]] will only load one rod at a time, simply load as many rods as the channel can hold. Any extra rod loaded will cause the last rod in the channel to be pushed out the other end, where it can be collected with a hopper.

The supplied fuel will be bred as long as its in the reactor. Pu-239 can also be bred into RGP, which can be further bred into nuclear waste. Therefore, leaving fuel in the reactor for too long is undesirable. For this, the fuel loader can be read with an [[RoR reader|Redstone-over-Radio Reader]], which will report the fuel's lifetime and current type in the form of the numeric metadata of the item. For example, Plutonium-239 rods have a meta of 4. Using an [[RoR logic receiver|Redstone-over-Radio Logic Receiver]], this meta can be detected, causing a redstone signal to be sent to the fuel loader, pushing that fuel rod out.

It is not only desirable to eject the fuel in time due to the purity, but also because nuclear waste has a high heat output, which might destroy Piles not prepared for it. If no new fuel is available and the existing loaded fuel is intended to be ejected, rods made from zirconium are ideal, since they are cheap, inert, and transparent to neutrons, not adding any heat while not interfering with the Pile's reaction either.

In an emergency, should the Pile overheat, it will catch fire, explode, and eject many flaming graphite bricks which also explode into fire, setting the surroundings ablaze. It is recommended to keep the Pile in a small room, away from flammable material, and to keep a fire extinguisher nearby.

For people who want to make the most out of their fuel, using [[RoR controllers|Redstone-over-Radio Controller]] to adjust the control rod settings automatically may be desirable. Especially in larger setups, control rods are important to prevent the Pile from quickly overheating, and having an adaptive system controlled either by RoR logic receivers or an [[AUTOCAL]] unit can allow the Pile to run reasonably hot without exploding." + } +} + diff --git a/src/main/resources/assets/hbm/manual/pile/pilevent.json b/src/main/resources/assets/hbm/manual/pile/pilevent.json new file mode 100644 index 000000000..8b6b619b1 --- /dev/null +++ b/src/main/resources/assets/hbm/manual/pile/pilevent.json @@ -0,0 +1,12 @@ +{ + "name": "Chicago Pile Vent", + "icon": ["hbm:tile.pile_device", 1, 1], + "trigger": [["hbm:tile.pile_device", 1, 1]], + "title": { + "en_US": "Chicago Pile Vent" + }, + "content": { + "en_US": "The vent is needed to insert compressed air at 1 PU into the [[Chicago Pile's|Chicago Pile]] ventilation channels. Due to the pressure requirement, each Pile therefore needs at least one [[compressor|Compressor]]. Hot air will harmlessly exit the Pile at the output side of the ventilation channel.

The vent's cooling effect only applies to fuel channels that touch the ventilation channel, or rather, fuel channels exactly one block above and below that ventilation channel. Without sufficient cooling, the channel will surpass 800°C, causing the highly-flammable graphite bricks to ignite, forcefully disassembling the Pile.

See also:
* [[Chicago Pile Fuel Loader]]
* [[Chicago Pile Control Rod]]" + } +} + diff --git a/src/main/resources/assets/hbm/textures/items/clay_tablet.png b/src/main/resources/assets/hbm/textures/items/clay_tablet.png index 640d51e220841cd9c74beef64abc1ba2a0ca2c20..d3ce9e6a980aa7efab4bcf17e21b35828a97e9d3 100644 GIT binary patch delta 242 zcmVaFB#>_(t6lQ)Ie_?@-5GZ0^MIcpqYI)iXw}_uJtUv^;Dh6Okgo@}yMqA$ z^ZtXTu14=uGwTyF7Lc((Q&*6&Ae?F015sTe3WIjau`F^dmTN15_s8>i1sMx4?rV1d z1T*dh?D7zmU_ sjXDGi9Y{ez6`*A67XfQ!~g&Q07*qoM6N<$f^!#bD*ylh delta 183 zcmV;o07(Cy0^pF%8nE15C8yOiG z7#LX472Lgj1BI=ussR^MR@J~T6vF^zRSgU_vKTsGLU%sQw!61)z%eo(-IX|9fNm=; zS1_U5j>{%wv7IMw!UG@01^8@r^A5xsEATK-R?|e)jK;rv>o7WlvYIA}?FY%l--002ovPDHLkV1ii@Ohf Date: Sat, 25 Jul 2026 19:21:26 +0200 Subject: [PATCH 7/7] the boys! the boys! the boys! the boys! the boys! the boys! the boys! --- src/main/java/com/hbm/blocks/ModBlocks.java | 4 + .../hbm/blocks/machine/MachineSatLink.java | 84 + src/main/java/com/hbm/main/ClientProxy.java | 1 + .../java/com/hbm/main/ResourceManager.java | 2 + .../hbm/render/tileentity/RenderSatLink.java | 77 + .../com/hbm/saveddata/SatelliteSavedData.java | 58 +- .../java/com/hbm/tileentity/TileMappings.java | 1 + .../machine/TileEntityMachineSatLink.java | 120 ++ .../assets/hbm/models/machines/satlink.obj | 1520 +++++++++++++++++ .../hbm/textures/models/machines/satlink.png | Bin 0 -> 3335 bytes 10 files changed, 1838 insertions(+), 29 deletions(-) create mode 100644 src/main/java/com/hbm/blocks/machine/MachineSatLink.java create mode 100644 src/main/java/com/hbm/render/tileentity/RenderSatLink.java create mode 100644 src/main/java/com/hbm/tileentity/machine/TileEntityMachineSatLink.java create mode 100644 src/main/resources/assets/hbm/models/machines/satlink.obj create mode 100644 src/main/resources/assets/hbm/textures/models/machines/satlink.png diff --git a/src/main/java/com/hbm/blocks/ModBlocks.java b/src/main/java/com/hbm/blocks/ModBlocks.java index d143d9bd8..d8d83ad42 100644 --- a/src/main/java/com/hbm/blocks/ModBlocks.java +++ b/src/main/java/com/hbm/blocks/ModBlocks.java @@ -1021,6 +1021,8 @@ public class ModBlocks { public static Block machine_radgen; public static Block machine_satlinker; + public static Block machine_satlink; + public static Block machine_keyforge; public static Block machine_armor_table; @@ -1938,6 +1940,7 @@ public class ModBlocks { machine_transformer = new MachineTransformer(Material.iron).setBlockName("machine_transformer").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":machine_transformer_iron"); 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_satlink = new MachineSatLink().setBlockName("machine_satlink").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.missileTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); 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_weapon_table = new BlockWeaponTable().setBlockName("machine_weapon_table").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.consumableTab); @@ -3292,6 +3295,7 @@ public class ModBlocks { GameRegistry.registerBlock(teleanchor, teleanchor.getUnlocalizedName()); GameRegistry.registerBlock(field_disturber, field_disturber.getUnlocalizedName()); GameRegistry.registerBlock(machine_satlinker, machine_satlinker.getUnlocalizedName()); + register(machine_satlink); GameRegistry.registerBlock(machine_keyforge, machine_keyforge.getUnlocalizedName()); GameRegistry.registerBlock(machine_armor_table, machine_armor_table.getUnlocalizedName()); GameRegistry.registerBlock(machine_weapon_table, machine_weapon_table.getUnlocalizedName()); diff --git a/src/main/java/com/hbm/blocks/machine/MachineSatLink.java b/src/main/java/com/hbm/blocks/machine/MachineSatLink.java new file mode 100644 index 000000000..443778855 --- /dev/null +++ b/src/main/java/com/hbm/blocks/machine/MachineSatLink.java @@ -0,0 +1,84 @@ +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.items.ISatChip; +import com.hbm.main.NTMSounds; +import com.hbm.tileentity.TileEntityProxyCombo; +import com.hbm.tileentity.machine.TileEntityMachineSatLink; +import com.hbm.util.i18n.I18nUtil; + +import net.minecraft.block.material.Material; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.ChatComponentText; +import net.minecraft.util.ChatStyle; +import net.minecraft.util.EnumChatFormatting; +import net.minecraft.world.World; +import net.minecraftforge.client.event.RenderGameOverlayEvent.Pre; + +public class MachineSatLink extends BlockDummyable implements ILookOverlay { + + public MachineSatLink() { + super(Material.iron); + } + + @Override + public TileEntity createNewTileEntity(World world, int meta) { + if(meta >= 12) return new TileEntityMachineSatLink(); + if(meta >= 6) return new TileEntityProxyCombo(); + return null; + } + + @Override public int[] getDimensions() { return new int[] {6, 0, 1, 0, 1, 0}; } + @Override 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()) { + + if(player.getHeldItem() != null && player.getHeldItem().getItem() instanceof ISatChip) { + + 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 TileEntityMachineSatLink)) return false; + + TileEntityMachineSatLink link = (TileEntityMachineSatLink) te; + + link.freq = ISatChip.getFreqS(player.getHeldItem()); + player.addChatComponentMessage(new ChatComponentText("Set frequency to " + link.freq).setChatStyle(new ChatStyle().setColor(EnumChatFormatting.YELLOW))); + world.playSoundAtEntity(player, NTMSounds.TECH_BLEEP, 1F, 1F); + + return true; + } + return false; + + } else { + return true; + } + } + + @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 TileEntityMachineSatLink)) return; + + TileEntityMachineSatLink link = (TileEntityMachineSatLink) te; + + List text = new ArrayList(); + text.add("Freq: " + link.freq); + text.add("Connected: " + (link.connected ? (EnumChatFormatting.GREEN + "Yes") : (EnumChatFormatting.RED + "No"))); + + ILookOverlay.printGeneric(event, I18nUtil.resolveKey(getUnlocalizedName() + ".name"), 0xffff00, 0x404000, text); + } +} diff --git a/src/main/java/com/hbm/main/ClientProxy.java b/src/main/java/com/hbm/main/ClientProxy.java index 71d29a399..e20c75122 100644 --- a/src/main/java/com/hbm/main/ClientProxy.java +++ b/src/main/java/com/hbm/main/ClientProxy.java @@ -301,6 +301,7 @@ public class ClientProxy extends ServerProxy { ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineRadarNT.class, new RenderRadar()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineRadarLarge.class, new RenderRadarLarge()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineRadarScreen.class, new RenderRadarScreen()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineSatLink.class, new RenderSatLink()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityReactorResearch.class, new RenderSmallReactor()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityTesla.class, new RenderTesla()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityBarrel.class, new RenderFluidBarrel()); diff --git a/src/main/java/com/hbm/main/ResourceManager.java b/src/main/java/com/hbm/main/ResourceManager.java index 5164c34f8..5fc7aa957 100644 --- a/src/main/java/com/hbm/main/ResourceManager.java +++ b/src/main/java/com/hbm/main/ResourceManager.java @@ -272,6 +272,7 @@ public class ResourceManager { public static final IModelCustom radar = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/radar.obj")).noSmooth().asVBO(); public static final IModelCustom radar_large = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/radar_large.obj")).noSmooth().asVBO(); public static final IModelCustom radar_screen = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/radar_screen.obj")).noSmooth().asVBO(); + public static final IModelCustom satlink = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/satlink.obj")).noSmooth().asVBO(); //Forcefield public static final IModelCustom forcefield_top = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/forcefield_top.obj")); @@ -747,6 +748,7 @@ 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"); + public static final ResourceLocation satlink_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/satlink.png"); //Forcefield public static final ResourceLocation forcefield_base_tex = new ResourceLocation(RefStrings.MODID, "textures/models/forcefield_base.png"); diff --git a/src/main/java/com/hbm/render/tileentity/RenderSatLink.java b/src/main/java/com/hbm/render/tileentity/RenderSatLink.java new file mode 100644 index 000000000..5698a1736 --- /dev/null +++ b/src/main/java/com/hbm/render/tileentity/RenderSatLink.java @@ -0,0 +1,77 @@ +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 com.hbm.tileentity.machine.TileEntityMachineSatLink; + +import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.tileentity.TileEntity; +import net.minecraftforge.client.IItemRenderer; +import net.minecraftforge.common.util.ForgeDirection; + +public class RenderSatLink extends TileEntitySpecialRenderer implements IItemRendererProvider { + + @Override + public void renderTileEntityAt(TileEntity tile, double x, double y, double z, float interp) { + GL11.glPushMatrix(); + GL11.glTranslated(x + 0.5D, y, z + 0.5D); + GL11.glEnable(GL11.GL_LIGHTING); + GL11.glDisable(GL11.GL_CULL_FACE); + GL11.glRotatef(180, 0F, 1F, 0F); + + TileEntityMachineSatLink link = (TileEntityMachineSatLink) tile; + + ForgeDirection dir = ForgeDirection.getOrientation(tile.getBlockMetadata() - 10); + ForgeDirection rot = dir.getRotation(ForgeDirection.DOWN); + + GL11.glTranslated((dir.offsetX + rot.offsetX) * 0.5, 0, (dir.offsetZ + rot.offsetZ) * 0.5); + + float r = link.prevRot + (link.rot - link.prevRot) * interp; + float l = link.prevLift + (link.lift - link.prevLift) * interp; + + GL11.glShadeModel(GL11.GL_SMOOTH); + bindTexture(ResourceManager.satlink_tex); + ResourceManager.satlink.renderPart("Base"); + GL11.glRotated(r, 0, 1, 0); + ResourceManager.satlink.renderPart("Rotor"); + GL11.glTranslated(0, 7.375, 0); + GL11.glRotated(l, 0, 0, 1); + GL11.glTranslated(0, -7.375, 0); + ResourceManager.satlink.renderPart("Dish"); + GL11.glShadeModel(GL11.GL_FLAT); + + GL11.glPopMatrix(); + } + + @Override + public Item getItemForRenderer() { + return Item.getItemFromBlock(ModBlocks.machine_satlink); + } + + @Override + public IItemRenderer getRenderer() { + return new ItemRenderBase( ) { + public void renderInventory() { + GL11.glTranslated(0, -5, 0); + GL11.glScaled(3.5, 3.5, 3.5); + } + public void renderCommonWithStack(ItemStack item) { + GL11.glScaled(0.5, 0.5, 0.5); + GL11.glShadeModel(GL11.GL_SMOOTH); + bindTexture(ResourceManager.satlink_tex); + ResourceManager.satlink.renderPart("Base"); + GL11.glRotated(15, 0, 1, 0); + ResourceManager.satlink.renderPart("Rotor"); + GL11.glTranslated(0, 7.375, 0); + GL11.glRotated(-45, 0, 0, 1); + GL11.glTranslated(0, -7.375, 0); + ResourceManager.satlink.renderPart("Dish"); + GL11.glShadeModel(GL11.GL_FLAT); + }}; + } +} diff --git a/src/main/java/com/hbm/saveddata/SatelliteSavedData.java b/src/main/java/com/hbm/saveddata/SatelliteSavedData.java index a0dd2a624..2ced0842d 100644 --- a/src/main/java/com/hbm/saveddata/SatelliteSavedData.java +++ b/src/main/java/com/hbm/saveddata/SatelliteSavedData.java @@ -23,18 +23,18 @@ public class SatelliteSavedData extends WorldSavedData { /** * Default constructor for satellites map data. */ - public SatelliteSavedData() { - super("satellites"); - this.markDirty(); - } - - public boolean isFreqTaken(int freq) { - return getSatFromFreq(freq) != null; - } - - public Satellite getSatFromFreq(int freq) { - return sats.get(freq); - } + public SatelliteSavedData() { + super("satellites"); + this.markDirty(); + } + + public boolean isFreqTaken(int freq) { + return getSatFromFreq(freq) != null; + } + + public Satellite getSatFromFreq(int freq) { + return sats.get(freq); + } @Override public void readFromNBT(NBTTagCompound nbt) { @@ -53,28 +53,28 @@ public class SatelliteSavedData extends WorldSavedData { @Override public void writeToNBT(NBTTagCompound nbt) { nbt.setInteger("satCount", sats.size()); - + int i = 0; - for(Entry struct : sats.entrySet()) { - NBTTagCompound data = new NBTTagCompound(); - struct.getValue().writeToNBT(data); - - nbt.setInteger("sat_id_" + i, struct.getValue().getID()); - nbt.setTag("sat_data_" + i, data); - nbt.setInteger("sat_freq_" + i, struct.getKey()); + for(Entry struct : sats.entrySet()) { + NBTTagCompound data = new NBTTagCompound(); + struct.getValue().writeToNBT(data); + + nbt.setInteger("sat_id_" + i, struct.getValue().getID()); + nbt.setTag("sat_data_" + i, data); + nbt.setInteger("sat_freq_" + i, struct.getKey()); i++; - } + } } public static SatelliteSavedData getData(World worldObj) { - SatelliteSavedData data = (SatelliteSavedData)worldObj.perWorldStorage.loadData(SatelliteSavedData.class, "satellites"); - if(data == null) { - worldObj.perWorldStorage.setData("satellites", new SatelliteSavedData()); - - data = (SatelliteSavedData)worldObj.perWorldStorage.loadData(SatelliteSavedData.class, "satellites"); - } - - return data; + SatelliteSavedData data = (SatelliteSavedData) worldObj.perWorldStorage.loadData(SatelliteSavedData.class, "satellites"); + if(data == null) { + worldObj.perWorldStorage.setData("satellites", new SatelliteSavedData()); + + data = (SatelliteSavedData) worldObj.perWorldStorage.loadData(SatelliteSavedData.class, "satellites"); + } + + return data; } } diff --git a/src/main/java/com/hbm/tileentity/TileMappings.java b/src/main/java/com/hbm/tileentity/TileMappings.java index ad13bb825..560761911 100644 --- a/src/main/java/com/hbm/tileentity/TileMappings.java +++ b/src/main/java/com/hbm/tileentity/TileMappings.java @@ -133,6 +133,7 @@ public class TileMappings { put(TileEntityMachineRadarScreen.class, "tileentity_radar_screen"); put(TileEntityBroadcaster.class, "tileentity_pink_cloud_broadcaster"); put(TileEntityMachineSatLinker.class, "tileentity_satlinker"); + put(TileEntityMachineSatLink.class, "tileentity_satlink"); put(TileEntityReactorResearch.class, "tileentity_small_reactor"); put(TileEntityVaultDoorMigration.class, "tileentity_vault_door"); put(TileEntityRadiobox.class, "tileentity_radio_broadcaster"); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineSatLink.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineSatLink.java new file mode 100644 index 000000000..e327f1dac --- /dev/null +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineSatLink.java @@ -0,0 +1,120 @@ +package com.hbm.tileentity.machine; + +import com.hbm.saveddata.SatelliteSavedData; +import com.hbm.tileentity.TileEntityTickingBase; + +import api.hbm.redstoneoverradio.IRORInteractive; +import api.hbm.redstoneoverradio.IRORValueProvider; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; +import net.minecraft.util.AxisAlignedBB; + +public class TileEntityMachineSatLink extends TileEntityTickingBase implements IRORValueProvider, IRORInteractive { + + public boolean connected; + public int freq; + + public float rot = INACTIVE_ROT; + public float prevRot = INACTIVE_ROT; + public float lift = INACTIVE_LIFT; + public float prevLift = INACTIVE_LIFT; + + public static final float SPEED = 0.25F; + public static final float ACTIVE_ROT = -15F; + public static final float ACTIVE_LIFT = -45F; + public static final float INACTIVE_ROT = 0F; + public static final float INACTIVE_LIFT = -85F; + + @Override + public void updateEntity() { + + if(!worldObj.isRemote) { + this.connected = false; + + if(worldObj.getHeightValue(xCoord, zCoord) <= yCoord) { + + SatelliteSavedData dat = SatelliteSavedData.getData(worldObj); + this.connected = dat.isFreqTaken(freq); + } + + this.networkPackNT(150); + + } else { + + this.prevRot = this.rot; + this.prevLift = this.lift; + + float targetR = this.connected ? ACTIVE_ROT : INACTIVE_ROT; + float targetL = this.connected ? ACTIVE_LIFT : INACTIVE_LIFT; + + if(Math.abs(rot - targetR) <= SPEED) rot = targetR; + else if(rot < targetR) rot += SPEED; + else if(rot > targetR) rot -= SPEED; + + if(Math.abs(lift - targetL) <= SPEED) lift = targetL; + else if(lift < targetL) lift += SPEED; + else if(lift > targetL) lift -= SPEED; + } + } + + @Override + public void serialize(ByteBuf buf) { + super.serialize(buf); + buf.writeBoolean(connected); + buf.writeInt(freq); + } + + @Override + public void deserialize(ByteBuf buf) { + super.deserialize(buf); + this.connected = buf.readBoolean(); + this.freq = buf.readInt(); + } + + AxisAlignedBB bb = null; + + @Override + public AxisAlignedBB getRenderBoundingBox() { + + if(bb == null) { + bb = AxisAlignedBB.getBoundingBox( + xCoord - 2, + yCoord, + zCoord - 2, + xCoord + 3, + yCoord + 10, + zCoord + 3 + ); + } + + return bb; + } + + @Override + @SideOnly(Side.CLIENT) + public double getMaxRenderDistanceSquared() { + return 65536.0D; + } + + @Override + public String[] getFunctionInfo() { + return new String[] { + PREFIX_VALUE + "connected", + PREFIX_VALUE + "freq", + PREFIX_VALUE + "rx", + PREFIX_FUNCTION + "setfreq" + NAME_SEPARATOR + "freq", + PREFIX_FUNCTION + "tx" + NAME_SEPARATOR + "payload" + }; + } + + @Override + public String provideRORValue(String name) { + return null; + } + + @Override + public String runRORFunction(String name, String[] params) { + return null; + } +} diff --git a/src/main/resources/assets/hbm/models/machines/satlink.obj b/src/main/resources/assets/hbm/models/machines/satlink.obj new file mode 100644 index 000000000..3da21b552 --- /dev/null +++ b/src/main/resources/assets/hbm/models/machines/satlink.obj @@ -0,0 +1,1520 @@ +# Blender v2.79 (sub 0) OBJ File: 'satlink.blend' +# www.blender.org +o Rotor +v -0.125000 7.000000 0.250000 +v -0.250000 7.000000 0.125000 +v 0.250000 7.000000 0.125000 +v 0.125000 7.000000 0.250000 +v -0.250000 7.000000 -0.125000 +v -0.125000 7.000000 -0.250000 +v 0.125000 7.000000 -0.250000 +v 0.250000 7.000000 -0.125000 +v -0.125000 7.125000 -0.250000 +v -0.250000 7.125000 -0.125000 +v -0.250000 7.125000 0.125000 +v -0.125000 7.125000 0.250000 +v 0.125000 7.125000 0.250000 +v 0.250000 7.125000 0.125000 +v 0.250000 7.125000 -0.125000 +v 0.125000 7.125000 -0.250000 +v 0.125000 7.125000 0.250000 +v -0.125000 7.125000 0.250000 +v -0.125000 7.125000 0.125000 +v 0.125000 7.125000 0.125000 +v 0.125000 7.500000 0.125000 +v -0.125000 7.500000 0.125000 +v 0.125000 7.500000 0.250000 +v -0.125000 7.500000 0.250000 +v 0.125000 7.125000 -0.125000 +v -0.125000 7.125000 -0.125000 +v -0.125000 7.125000 -0.250000 +v 0.125000 7.125000 -0.250000 +v 0.125000 7.500000 -0.250000 +v -0.125000 7.500000 -0.250000 +v 0.125000 7.500000 -0.125000 +v -0.125000 7.500000 -0.125000 +vt 0.538462 0.022222 +vt 0.576923 0.044444 +vt 0.564103 0.111111 +vt 0.564103 0.000000 +vt 0.538462 0.000000 +vt 0.589744 0.088889 +vt 0.589744 0.044444 +vt 0.512821 0.044444 +vt 0.525641 0.088889 +vt 0.512821 0.088889 +vt 0.576923 0.133333 +vt 0.564103 0.133333 +vt 0.576923 0.022222 +vt 0.564103 0.022222 +vt 0.525641 0.000000 +vt 0.538462 0.133333 +vt 0.525641 0.111111 +vt 0.538462 0.111111 +vt 0.602564 -0.000000 +vt 0.589744 0.066667 +vt 0.589744 -0.000000 +vt 0.666667 -0.000000 +vt 0.641026 0.066667 +vt 0.641026 -0.000000 +vt 0.602564 -0.000000 +vt 0.589744 0.066667 +vt 0.589744 -0.000000 +vt 0.628205 -0.000000 +vt 0.602564 0.066667 +vt 0.628205 0.066667 +vt 0.602564 0.088889 +vt 0.602564 0.066667 +vt 0.628205 0.066667 +vt 0.641026 -0.000000 +vt 0.628205 -0.000000 +vt 0.602564 0.088889 +vt 0.666667 -0.000000 +vt 0.641026 0.066667 +vt 0.525641 0.044444 +vt 0.576923 0.088889 +vt 0.576923 0.111111 +vt 0.576923 0.000000 +vt 0.525641 0.022222 +vt 0.525641 0.133333 +vt 0.666667 0.066667 +vt 0.628205 0.088889 +vt 0.628205 0.088889 +vt 0.666667 0.066667 +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.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 -1.0000 0.0000 0.0000 +s off +f 14/1/1 16/2/1 10/3/1 +f 8/4/2 14/1/2 3/5/2 +f 6/6/3 16/2/3 7/7/3 +f 4/8/4 12/9/4 1/10/4 +f 10/3/5 6/11/5 5/12/5 +f 8/4/6 16/13/6 15/14/6 +f 14/1/7 4/15/7 3/5/7 +f 2/16/8 12/17/8 11/18/8 +f 2/16/9 10/3/9 5/12/9 +f 26/19/9 30/20/9 27/21/9 +f 19/22/3 21/23/3 20/24/3 +f 18/25/9 22/26/9 19/27/9 +f 17/28/4 24/29/4 18/25/4 +f 31/30/1 30/31/1 32/32/1 +f 20/24/2 23/33/2 17/28/2 +f 28/34/2 31/30/2 25/35/2 +f 23/33/1 22/36/1 24/29/1 +f 27/37/3 29/38/3 28/34/3 +f 25/35/4 32/32/4 26/19/4 +f 10/3/1 11/18/1 12/9/1 +f 12/9/1 13/39/1 14/1/1 +f 14/1/1 15/14/1 16/2/1 +f 16/2/1 9/40/1 10/3/1 +f 10/3/1 12/9/1 14/1/1 +f 8/4/2 15/14/2 14/1/2 +f 6/6/3 9/40/3 16/2/3 +f 4/8/4 13/39/4 12/9/4 +f 10/3/5 9/41/5 6/11/5 +f 8/4/6 7/42/6 16/13/6 +f 14/1/7 13/43/7 4/15/7 +f 2/16/8 1/44/8 12/17/8 +f 2/16/9 11/18/9 10/3/9 +f 26/19/9 32/32/9 30/20/9 +f 19/22/3 22/45/3 21/23/3 +f 18/25/9 24/29/9 22/26/9 +f 17/28/4 23/33/4 24/29/4 +f 31/30/1 29/46/1 30/31/1 +f 20/24/2 21/23/2 23/33/2 +f 28/34/2 29/38/2 31/30/2 +f 23/33/1 21/47/1 22/36/1 +f 27/37/3 30/48/3 29/38/3 +f 25/35/4 31/30/4 32/32/4 +o Dish +v 0.000000 7.625000 -0.125000 +v 0.000000 7.625000 0.125000 +v 0.176777 7.551777 -0.125000 +v 0.176777 7.551777 0.125000 +v 0.250000 7.375000 -0.125000 +v 0.250000 7.375000 0.125000 +v 0.176777 7.198223 -0.125000 +v 0.176777 7.198223 0.125000 +v -0.000000 7.125000 -0.125000 +v -0.000000 7.125000 0.125000 +v -0.176777 7.198223 -0.125000 +v -0.176777 7.198223 0.125000 +v -0.250000 7.375000 -0.125000 +v -0.250000 7.375000 0.125000 +v -0.176777 7.551777 -0.125000 +v -0.176777 7.551777 0.125000 +v -0.125000 7.750000 0.093750 +v 0.125000 7.750000 0.093750 +v -0.125000 7.750000 -0.093750 +v 0.125000 7.750000 -0.093750 +v -0.125000 7.500000 -0.093750 +v -0.125000 7.500000 0.093750 +v 0.125000 7.500000 0.093750 +v 0.125000 7.500000 -0.093750 +v 0.000000 8.125000 -1.500000 +v -0.750000 8.125000 -1.299038 +v -1.299038 8.125000 -0.750000 +v -1.500000 8.125000 0.000000 +v -1.299038 8.125000 0.750000 +v -0.750000 8.125000 1.299038 +v -0.000000 8.125000 1.500000 +v 0.750000 8.125000 1.299038 +v 1.299038 8.125000 0.750000 +v 1.500000 8.125000 0.000001 +v 1.299039 8.125000 -0.749999 +v 0.750001 8.125000 -1.299038 +v 0.000000 7.750000 -0.750000 +v -0.375000 7.750000 -0.649519 +v -0.649519 7.750000 -0.375000 +v -0.750000 7.750000 0.000000 +v -0.649519 7.750000 0.375000 +v -0.375000 7.750000 0.649519 +v -0.000000 7.750000 0.750000 +v 0.375000 7.750000 0.649519 +v 0.649519 7.750000 0.375000 +v 0.750000 7.750000 0.000000 +v 0.649519 7.750000 -0.375000 +v 0.375000 7.750000 -0.649519 +v 0.000000 7.625000 0.000000 +v 0.000000 7.750000 -0.500000 +v -0.250000 7.750000 -0.433012 +v -0.433013 7.750000 -0.250000 +v -0.500000 7.750000 0.000000 +v -0.433013 7.750000 0.250000 +v -0.250000 7.750000 0.433013 +v -0.000000 7.750000 0.500000 +v 0.250000 7.750000 0.433013 +v 0.433013 7.750000 0.250000 +v 0.500000 7.750000 0.000000 +v 0.433013 7.750000 -0.250000 +v 0.250000 7.750000 -0.433012 +v -0.125000 8.625000 0.125000 +v -0.125000 8.875000 0.125000 +v -0.125000 8.625000 -0.125000 +v -0.125000 8.875000 -0.125000 +v 0.125000 8.625000 0.125000 +v 0.125000 8.875000 0.125000 +v 0.125000 8.625000 -0.125000 +v 0.125000 8.875000 -0.125000 +v -0.062500 7.750000 0.437500 +v 0.062500 7.750000 0.437500 +v -0.062500 7.750000 0.312500 +v 0.062500 7.750000 0.312500 +v -0.062500 8.625000 0.125000 +v 0.062500 8.625000 0.125000 +v -0.062500 8.625000 0.000000 +v 0.062500 8.625000 0.000000 +v -0.062500 7.750000 -0.312500 +v 0.062500 7.750000 -0.312500 +v -0.062500 7.750000 -0.437500 +v 0.062500 7.750000 -0.437500 +v -0.062500 8.625000 0.000000 +v 0.062500 8.625000 0.000000 +v -0.062500 8.625000 -0.125000 +v 0.062500 8.625000 -0.125000 +vt 0.487179 0.177778 +vt 0.506410 0.133333 +vt 0.506410 0.177778 +vt 0.551282 0.177778 +vt 0.576923 0.133333 +vt 0.576923 0.177778 +vt 0.743615 0.044444 +vt 0.769231 0.000044 +vt 0.794846 0.044444 +vt 0.532051 0.177778 +vt 0.551282 0.133333 +vt 0.794846 0.044445 +vt 0.787344 0.075841 +vt 0.751117 0.013048 +vt 0.532051 0.133333 +vt 0.512821 0.733333 +vt 0.487179 0.688889 +vt 0.512821 0.688889 +vt 0.487179 0.733333 +vt 0.461538 0.688889 +vt 0.461538 0.733333 +vt 0.435897 0.688889 +vt 0.435897 0.733333 +vt 0.410256 0.688889 +vt 0.435897 0.644444 +vt 0.461538 0.644444 +vt 0.461538 0.777778 +vt 0.500000 0.533333 +vt 0.487179 0.688889 +vt 0.487179 0.533333 +vt 0.474359 0.688889 +vt 0.461538 0.533333 +vt 0.474359 0.533333 +vt 0.512821 0.688889 +vt 0.512821 0.533333 +vt 0.500000 0.688889 +vt 0.487179 0.533333 +vt 0.500000 0.533333 +vt 0.474359 0.533333 +vt 0.461538 0.688889 +vt 0.461538 0.533333 +vt 0.512821 0.688889 +vt 0.512821 0.533333 +vt 0.487179 0.688889 +vt 0.487179 0.133333 +vt 0.787344 0.075841 +vt 0.769231 0.088845 +vt 0.751118 0.075841 +vt 0.751117 0.013048 +vt 0.787344 0.013048 +vt 0.769231 0.088845 +vt 0.751117 0.075841 +vt 0.743615 0.044445 +vt 0.769231 0.000044 +vt 0.787344 0.013048 +vt 0.410256 0.733333 +vt 0.435897 0.777778 +vt 0.500000 0.688889 +vt 0.461538 0.688889 +vt 0.474359 0.688889 +vt 0.794872 0.133333 +vt 0.820513 0.100000 +vt 0.820513 0.133333 +vt 0.794872 0.100000 +vt 0.820513 0.066667 +vt 0.794872 0.066667 +vt 0.820513 0.033333 +vt 0.794872 0.033333 +vt 0.820513 0.000000 +vt 0.794872 0.266667 +vt 0.820513 0.233333 +vt 0.820513 0.266667 +vt 0.794872 0.233333 +vt 0.820513 0.200000 +vt 0.794872 0.200000 +vt 0.820513 0.166667 +vt 0.794872 0.166667 +vt 0.980769 0.333333 +vt 0.923077 0.177778 +vt 1.000000 0.177778 +vt 0.980769 0.333333 +vt 0.961538 0.466667 +vt 0.942308 0.333333 +vt 0.980769 0.333333 +vt 0.942308 0.333333 +vt 0.980769 0.333333 +vt 0.942308 0.333333 +vt 0.980769 0.333333 +vt 0.942308 0.333333 +vt 0.980769 0.333333 +vt 0.942308 0.333333 +vt 0.980769 0.333333 +vt 0.942308 0.333333 +vt 0.980769 0.333333 +vt 0.942308 0.333333 +vt 0.980769 0.333333 +vt 0.942308 0.333333 +vt 0.980769 0.333333 +vt 0.942308 0.333333 +vt 0.942308 0.333333 +vt 0.980769 0.333333 +vt 0.942308 0.333333 +vt 0.980769 0.333333 +vt 0.942308 0.333333 +vt 0.923077 0.177778 +vt 1.000000 0.177778 +vt 0.923077 0.177778 +vt 1.000000 0.177778 +vt 1.000000 0.177778 +vt 0.923077 0.177778 +vt 0.923077 0.177778 +vt 1.000000 0.177778 +vt 0.923077 0.177778 +vt 1.000000 0.177778 +vt 1.000000 0.177778 +vt 0.923077 0.177778 +vt 0.923077 0.177778 +vt 1.000000 0.177778 +vt 1.000000 0.177778 +vt 0.923077 0.177778 +vt 0.923077 0.177778 +vt 1.000000 0.177778 +vt 0.923077 0.177778 +vt 1.000000 0.177778 +vt 0.923077 0.177778 +vt 1.000000 0.177778 +vt 0.974359 0.000000 +vt 0.974359 -0.000000 +vt 0.974359 0.000000 +vt 0.948718 -0.000000 +vt 0.974359 -0.000000 +vt 0.948718 0.000000 +vt 0.974359 0.000000 +vt 0.948718 -0.000000 +vt 0.974359 -0.000000 +vt 0.948718 0.000000 +vt 0.974359 0.000000 +vt 0.948718 -0.000000 +vt 0.974359 -0.000000 +vt 0.948718 0.000000 +vt 0.974359 0.000000 +vt 0.948718 -0.000000 +vt 0.974359 -0.000000 +vt 0.974359 0.000000 +vt 0.974359 -0.000000 +vt 0.717972 0.254688 +vt 0.717972 0.100868 +vt 0.794825 0.177778 +vt 0.794872 0.000000 +vt 0.948718 0.000000 +vt 0.948718 -0.000000 +vt 0.948718 0.000000 +vt 0.948718 0.000000 +vt 0.948718 -0.000000 +vt 0.787961 0.222182 +vt 0.769207 0.254688 +vt 0.743590 0.266586 +vt 0.699219 0.222182 +vt 0.692355 0.177778 +vt 0.699219 0.133374 +vt 0.743590 0.088970 +vt 0.769207 0.100868 +vt 0.787961 0.133374 +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.0000 1.0000 0.0000 +vn 0.0000 -0.3363 -0.9417 +vn 0.0000 0.3363 0.9417 +vn 0.0000 0.3363 -0.9417 +vn 0.0000 -0.3363 0.9417 +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.2869 -0.9435 -0.1656 +vn 0.2236 -0.8944 -0.3873 +vn 0.3873 -0.8944 -0.2236 +vn -0.1656 -0.9435 -0.2869 +vn -0.2869 -0.9435 -0.1656 +vn -0.3313 -0.9435 -0.0000 +vn -0.2869 -0.9435 0.1656 +vn -0.1656 -0.9435 0.2869 +vn -0.0000 -0.9435 0.3313 +vn 0.1656 -0.9435 0.2869 +vn 0.2869 -0.9435 0.1656 +vn 0.3313 -0.9435 0.0000 +vn 0.1656 -0.9435 -0.2869 +vn -0.0000 -0.9435 -0.3313 +vn -0.0000 -0.8944 -0.4472 +vn -0.2236 -0.8944 -0.3873 +vn -0.3873 -0.8944 -0.2236 +vn -0.4472 -0.8944 -0.0000 +vn -0.3873 -0.8944 0.2236 +vn -0.2236 -0.8944 0.3873 +vn -0.0000 -0.8944 0.4472 +vn 0.2236 -0.8944 0.3873 +vn 0.3873 -0.8944 0.2236 +vn 0.4472 -0.8944 0.0000 +vn 0.1756 0.9363 -0.3041 +vn 0.1792 0.9784 -0.1034 +vn 0.3041 0.9363 -0.1756 +vn 0.2069 0.9784 -0.0000 +vn 0.3511 0.9363 -0.0000 +vn 0.1792 0.9784 0.1034 +vn 0.3041 0.9363 0.1756 +vn 0.1756 0.9363 0.3041 +vn 0.1034 0.9784 0.1792 +vn 0.0000 0.9363 0.3511 +vn -0.0000 0.9784 0.2069 +vn -0.1756 0.9363 0.3041 +vn -0.1034 0.9784 0.1792 +vn -0.3041 0.9363 0.1756 +vn -0.1792 0.9784 0.1034 +vn -0.3511 0.9363 -0.0000 +vn -0.2069 0.9784 0.0000 +vn -0.3041 0.9363 -0.1756 +vn -0.1792 0.9784 -0.1034 +vn -0.1756 0.9363 -0.3041 +vn -0.1034 0.9784 -0.1792 +vn 0.0000 0.9784 -0.2069 +vn 0.0000 0.9363 -0.3511 +vn 0.1034 0.9784 -0.1792 +s off +f 51/49/10 54/50/10 49/51/10 +f 52/52/11 53/53/11 51/54/11 +f 46/55/12 42/56/12 38/57/12 +f 50/58/13 56/59/13 52/52/13 +f 45/60/11 47/61/11 39/62/11 +f 49/51/12 55/63/12 50/58/12 +f 95/64/10 96/65/10 94/66/10 +f 97/67/11 100/68/11 96/65/11 +f 101/69/13 98/70/13 100/68/13 +f 99/71/12 94/72/12 98/70/12 +f 100/68/14 94/73/14 96/74/14 +f 97/75/15 99/71/15 101/69/15 +f 105/76/13 107/77/13 103/78/13 +f 106/79/10 104/80/10 102/81/10 +f 108/82/16 105/76/16 104/83/16 +f 107/77/17 102/81/17 103/78/17 +f 117/84/13 111/85/13 113/86/13 +f 110/87/10 116/88/10 112/89/10 +f 116/90/18 113/86/18 112/91/18 +f 115/92/19 110/87/19 111/85/19 +f 51/49/10 53/93/10 54/50/10 +f 52/52/11 56/59/11 53/53/11 +f 38/57/12 36/94/12 34/95/12 +f 34/95/12 48/96/12 46/55/12 +f 46/55/12 44/97/12 42/56/12 +f 42/56/12 40/98/12 38/57/12 +f 38/57/12 34/95/12 46/55/12 +f 50/58/13 55/63/13 56/59/13 +f 47/61/11 33/99/11 35/100/11 +f 35/100/11 37/101/11 47/61/11 +f 37/101/11 39/62/11 47/61/11 +f 39/62/11 41/102/11 43/103/11 +f 43/103/11 45/60/11 39/62/11 +f 49/51/12 54/50/12 55/63/12 +f 95/64/10 97/67/10 96/65/10 +f 97/67/11 101/69/11 100/68/11 +f 101/69/13 99/71/13 98/70/13 +f 99/71/12 95/104/12 94/72/12 +f 100/68/14 98/70/14 94/73/14 +f 97/75/15 95/105/15 99/71/15 +f 105/76/13 109/106/13 107/77/13 +f 106/79/10 108/107/10 104/80/10 +f 108/82/16 109/106/16 105/76/16 +f 107/77/17 106/79/17 102/81/17 +f 117/84/13 115/92/13 111/85/13 +f 110/87/10 114/108/10 116/88/10 +f 116/90/18 117/84/18 113/86/18 +f 115/92/19 114/108/19 110/87/19 +s 1 +f 34/109/15 35/110/20 33/111/15 +f 36/112/20 37/113/13 35/110/20 +f 38/114/13 39/115/21 37/113/13 +f 40/116/21 41/117/14 39/115/21 +f 42/118/14 43/119/22 41/120/14 +f 44/121/22 45/122/10 43/119/22 +f 46/123/10 47/124/23 45/122/10 +f 48/125/23 33/111/15 47/124/23 +f 79/126/24 68/127/25 67/128/26 +f 70/129/27 81/130/14 71/131/28 +f 71/132/28 81/130/14 72/133/29 +f 72/134/29 81/130/14 73/135/30 +f 73/136/30 81/130/14 74/137/31 +f 74/138/31 81/130/14 75/139/32 +f 75/140/32 81/130/14 76/141/33 +f 76/142/33 81/130/14 77/143/34 +f 77/144/34 81/130/14 78/145/35 +f 78/146/35 81/130/14 79/147/24 +f 79/126/24 81/130/14 80/148/36 +f 80/149/36 81/130/14 69/150/37 +f 69/151/37 81/130/14 70/152/27 +f 80/149/36 57/153/38 68/154/25 +f 69/151/37 58/155/39 57/156/38 +f 58/157/39 71/131/28 59/158/40 +f 71/132/28 60/159/41 59/160/40 +f 72/134/29 61/161/42 60/162/41 +f 61/163/42 74/137/31 62/164/43 +f 74/138/31 63/165/44 62/166/43 +f 63/167/44 76/141/33 64/168/45 +f 76/142/33 65/169/46 64/170/45 +f 77/144/34 66/171/47 65/172/46 +f 78/146/35 67/173/26 66/174/47 +f 62/164/48 86/175/49 61/163/50 +f 61/161/50 85/176/51 60/162/52 +f 60/159/52 84/177/53 59/160/54 +f 58/157/55 84/178/53 83/179/56 +f 57/156/57 83/180/56 82/181/58 +f 68/154/59 82/182/58 93/183/60 +f 67/128/61 93/184/60 92/185/62 +f 66/174/63 92/186/62 91/187/64 +f 65/172/65 91/188/64 90/189/66 +f 64/170/67 90/190/66 89/191/68 +f 64/168/67 88/192/69 63/167/70 +f 63/165/70 87/193/71 62/166/48 +f 86/194/49 90/195/66 82/196/58 +f 34/109/15 36/112/20 35/110/20 +f 36/112/20 38/114/13 37/113/13 +f 38/114/13 40/116/21 39/115/21 +f 40/116/21 42/197/14 41/117/14 +f 42/118/14 44/121/22 43/119/22 +f 44/121/22 46/123/10 45/122/10 +f 46/123/10 48/125/23 47/124/23 +f 48/125/23 34/109/15 33/111/15 +f 79/126/24 80/148/36 68/127/25 +f 80/149/36 69/150/37 57/153/38 +f 69/151/37 70/152/27 58/155/39 +f 58/157/39 70/129/27 71/131/28 +f 71/132/28 72/133/29 60/159/41 +f 72/134/29 73/135/30 61/161/42 +f 61/163/42 73/136/30 74/137/31 +f 74/138/31 75/139/32 63/165/44 +f 63/167/44 75/140/32 76/141/33 +f 76/142/33 77/143/34 65/169/46 +f 77/144/34 78/145/35 66/171/47 +f 78/146/35 79/147/24 67/173/26 +f 62/164/48 87/198/71 86/175/49 +f 61/161/50 86/199/49 85/176/51 +f 60/159/52 85/200/51 84/177/53 +f 58/157/55 59/158/54 84/178/53 +f 57/156/57 58/155/55 83/180/56 +f 68/154/59 57/153/57 82/182/58 +f 67/128/61 68/127/59 93/184/60 +f 66/174/63 67/173/61 92/186/62 +f 65/172/65 66/171/63 91/188/64 +f 64/170/67 65/169/65 90/190/66 +f 64/168/67 89/201/68 88/192/69 +f 63/165/70 88/202/69 87/193/71 +f 82/196/58 83/203/56 84/204/53 +f 84/204/53 85/205/51 82/196/58 +f 85/205/51 86/194/49 82/196/58 +f 86/194/49 87/206/71 88/207/69 +f 88/207/69 89/208/68 86/194/49 +f 89/208/68 90/195/66 86/194/49 +f 90/195/66 91/209/64 92/210/62 +f 92/210/62 93/211/60 90/195/66 +f 93/211/60 82/196/58 90/195/66 +o Base +v -1.000000 0.000000 1.000000 +v 1.000000 0.000000 1.000000 +v -1.000000 0.000000 -1.000000 +v 1.000000 0.000000 -1.000000 +v -1.000000 0.750000 1.000000 +v 1.000000 0.750000 1.000000 +v -1.000000 0.750000 -1.000000 +v 1.000000 0.750000 -1.000000 +v -0.750000 1.000000 0.750000 +v 0.750000 1.000000 0.750000 +v -0.750000 1.000000 -0.750000 +v 0.750000 1.000000 -0.750000 +v 0.500000 1.000000 -0.500000 +v 0.750000 1.000000 -0.500000 +v 0.500000 1.000000 -0.750000 +v 0.750000 1.000000 -0.750000 +v 0.000000 6.000000 0.000000 +v 0.250000 6.000000 0.000000 +v 0.000000 6.000000 -0.250000 +v 0.250000 6.000000 -0.250000 +v 0.500000 1.000000 0.750000 +v 0.750000 1.000000 0.750000 +v 0.500000 1.000000 0.500000 +v 0.750000 1.000000 0.500000 +v 0.000000 6.000000 0.250000 +v 0.250000 6.000000 0.250000 +v 0.000000 6.000000 0.000000 +v 0.250000 6.000000 0.000000 +v -0.750000 1.000000 -0.500000 +v -0.500000 1.000000 -0.500000 +v -0.750000 1.000000 -0.750000 +v -0.500000 1.000000 -0.750000 +v -0.250000 6.000000 0.000000 +v 0.000000 6.000000 0.000000 +v -0.250000 6.000000 -0.250000 +v 0.000000 6.000000 -0.250000 +v -0.750000 1.000000 0.750000 +v -0.500000 1.000000 0.750000 +v -0.750000 1.000000 0.500000 +v -0.500000 1.000000 0.500000 +v -0.250000 6.000000 0.250000 +v 0.000000 6.000000 0.250000 +v -0.250000 6.000000 0.000000 +v 0.000000 6.000000 0.000000 +v -0.375000 6.000000 0.375000 +v 0.375000 6.000000 0.375000 +v -0.375000 6.000000 -0.375000 +v 0.375000 6.000000 -0.375000 +v -0.312500 6.125000 -0.312500 +v -0.312500 6.125000 0.312500 +v 0.312500 6.125000 0.312500 +v 0.312500 6.125000 -0.312500 +v -0.375000 6.125000 -0.375000 +v -0.375000 6.125000 0.375000 +v 0.375000 6.125000 0.375000 +v 0.375000 6.125000 -0.375000 +v -0.312500 6.250000 -0.312500 +v -0.312500 6.250000 0.312500 +v 0.312500 6.250000 0.312500 +v 0.312500 6.250000 -0.312500 +v -0.375000 6.250000 -0.375000 +v -0.375000 6.250000 0.375000 +v 0.375000 6.250000 0.375000 +v 0.375000 6.250000 -0.375000 +v -0.375000 7.000000 -0.375000 +v -0.375000 7.000000 0.375000 +v 0.375000 7.000000 0.375000 +v 0.375000 7.000000 -0.375000 +v 0.562500 2.125000 -0.500000 +v 0.687500 1.125000 0.500000 +v 0.437500 2.125000 -0.500000 +v 0.562500 1.125000 0.500000 +v 0.687500 1.000000 0.500000 +v 0.562500 1.000000 0.500000 +v 0.562500 2.000000 -0.500000 +v 0.437500 2.000000 -0.500000 +v 0.687500 1.125000 -0.500000 +v 0.562500 2.125000 0.500000 +v 0.562500 1.125000 -0.500000 +v 0.437500 2.125000 0.500000 +v 0.562500 2.000000 0.500000 +v 0.437500 2.000000 0.500000 +v 0.687500 1.000000 -0.500000 +v 0.562500 1.000000 -0.500000 +v 0.437500 3.125000 -0.375000 +v 0.562500 2.375000 0.375000 +v 0.312500 3.125000 -0.375000 +v 0.437500 2.375000 0.375000 +v 0.562500 2.250000 0.375000 +v 0.437500 2.250000 0.375000 +v 0.437500 3.000000 -0.375000 +v 0.312500 3.000000 -0.375000 +v 0.562500 2.375000 -0.375000 +v 0.437500 3.125000 0.375000 +v 0.437500 2.375000 -0.375000 +v 0.312500 3.125000 0.375000 +v 0.437500 3.000000 0.375000 +v 0.312500 3.000000 0.375000 +v 0.562500 2.250000 -0.375000 +v 0.437500 2.250000 -0.375000 +v 0.375000 4.000000 -0.312500 +v 0.437500 3.375000 0.312500 +v 0.250000 4.000000 -0.312500 +v 0.312500 3.375000 0.312500 +v 0.437500 3.250000 0.312500 +v 0.312500 3.250000 0.312500 +v 0.375000 3.875000 -0.312500 +v 0.250000 3.875000 -0.312500 +v 0.437500 3.375000 -0.312500 +v 0.375000 4.000000 0.312500 +v 0.312500 3.375000 -0.312500 +v 0.250000 4.000000 0.312500 +v 0.375000 3.875000 0.312500 +v 0.250000 3.875000 0.312500 +v 0.437500 3.250000 -0.312500 +v 0.312500 3.250000 -0.312500 +v -0.562500 2.125000 0.500000 +v -0.687500 1.125000 -0.500000 +v -0.437500 2.125000 0.500000 +v -0.562500 1.125000 -0.500000 +v -0.687500 1.000000 -0.500000 +v -0.562500 1.000000 -0.500000 +v -0.562500 2.000000 0.500000 +v -0.437500 2.000000 0.500000 +v -0.687500 1.125000 0.500000 +v -0.562500 2.125000 -0.500000 +v -0.562500 1.125000 0.500000 +v -0.437500 2.125000 -0.500000 +v -0.562500 2.000000 -0.500000 +v -0.437500 2.000000 -0.500000 +v -0.687500 1.000000 0.500000 +v -0.562500 1.000000 0.500000 +v -0.437500 3.125000 0.375000 +v -0.562500 2.375000 -0.375000 +v -0.312500 3.125000 0.375000 +v -0.437500 2.375000 -0.375000 +v -0.562500 2.250000 -0.375000 +v -0.437500 2.250000 -0.375000 +v -0.437500 3.000000 0.375000 +v -0.312500 3.000000 0.375000 +v -0.562500 2.375000 0.375000 +v -0.437500 3.125000 -0.375000 +v -0.437500 2.375000 0.375000 +v -0.312500 3.125000 -0.375000 +v -0.437500 3.000000 -0.375000 +v -0.312500 3.000000 -0.375000 +v -0.562500 2.250000 0.375000 +v -0.437500 2.250000 0.375000 +v -0.375000 4.000000 0.312500 +v -0.437500 3.375000 -0.312500 +v -0.250000 4.000000 0.312500 +v -0.312500 3.375000 -0.312500 +v -0.437500 3.250000 -0.312500 +v -0.312500 3.250000 -0.312500 +v -0.375000 3.875000 0.312500 +v -0.250000 3.875000 0.312500 +v -0.437500 3.375000 0.312500 +v -0.375000 4.000000 -0.312500 +v -0.312500 3.375000 0.312500 +v -0.250000 4.000000 -0.312500 +v -0.375000 3.875000 -0.312500 +v -0.250000 3.875000 -0.312500 +v -0.437500 3.250000 0.312500 +v -0.312500 3.250000 0.312500 +v -0.500000 2.125000 -0.562500 +v 0.500000 1.125000 -0.687500 +v -0.500000 2.125000 -0.437500 +v 0.500000 1.125000 -0.562500 +v 0.500000 1.000000 -0.687500 +v 0.500000 1.000000 -0.562500 +v -0.500000 2.000000 -0.562500 +v -0.500000 2.000000 -0.437500 +v -0.500000 1.125000 -0.687500 +v 0.500000 2.125000 -0.562500 +v -0.500000 1.125000 -0.562500 +v 0.500000 2.125000 -0.437500 +v 0.500000 2.000000 -0.562500 +v 0.500000 2.000000 -0.437500 +v -0.500000 1.000000 -0.687500 +v -0.500000 1.000000 -0.562500 +v -0.375000 3.125000 -0.437500 +v 0.375000 2.375000 -0.562500 +v -0.375000 3.125000 -0.312500 +v 0.375000 2.375000 -0.437500 +v 0.375000 2.250000 -0.562500 +v 0.375000 2.250000 -0.437500 +v -0.375000 3.000000 -0.437500 +v -0.375000 3.000000 -0.312500 +v -0.375000 2.375000 -0.562500 +v 0.375000 3.125000 -0.437500 +v -0.375000 2.375000 -0.437500 +v 0.375000 3.125000 -0.312500 +v 0.375000 3.000000 -0.437500 +v 0.375000 3.000000 -0.312500 +v -0.375000 2.250000 -0.562500 +v -0.375000 2.250000 -0.437500 +v -0.312500 4.000000 -0.375000 +v 0.312500 3.375000 -0.437500 +v -0.312500 4.000000 -0.250000 +v 0.312500 3.375000 -0.312500 +v 0.312500 3.250000 -0.437500 +v 0.312500 3.250000 -0.312500 +v -0.312500 3.875000 -0.375000 +v -0.312500 3.875000 -0.250000 +v -0.312500 3.375000 -0.437500 +v 0.312500 4.000000 -0.375000 +v -0.312500 3.375000 -0.312500 +v 0.312500 4.000000 -0.250000 +v 0.312500 3.875000 -0.375000 +v 0.312500 3.875000 -0.250000 +v -0.312500 3.250000 -0.437500 +v -0.312500 3.250000 -0.312500 +v 0.500000 2.125000 0.562500 +v -0.500000 1.125000 0.687500 +v 0.500000 2.125000 0.437500 +v -0.500000 1.125000 0.562500 +v -0.500000 1.000000 0.687500 +v -0.500000 1.000000 0.562500 +v 0.500000 2.000000 0.562500 +v 0.500000 2.000000 0.437500 +v 0.500000 1.125000 0.687500 +v -0.500000 2.125000 0.562500 +v 0.500000 1.125000 0.562500 +v -0.500000 2.125000 0.437500 +v -0.500000 2.000000 0.562500 +v -0.500000 2.000000 0.437500 +v 0.500000 1.000000 0.687500 +v 0.500000 1.000000 0.562500 +v 0.375000 3.125000 0.437500 +v -0.375000 2.375000 0.562500 +v 0.375000 3.125000 0.312500 +v -0.375000 2.375000 0.437500 +v -0.375000 2.250000 0.562500 +v -0.375000 2.250000 0.437500 +v 0.375000 3.000000 0.437500 +v 0.375000 3.000000 0.312500 +v 0.375000 2.375000 0.562500 +v -0.375000 3.125000 0.437500 +v 0.375000 2.375000 0.437500 +v -0.375000 3.125000 0.312500 +v -0.375000 3.000000 0.437500 +v -0.375000 3.000000 0.312500 +v 0.375000 2.250000 0.562500 +v 0.375000 2.250000 0.437500 +v 0.312500 4.000000 0.375000 +v -0.312500 3.375000 0.437500 +v 0.312500 4.000000 0.250000 +v -0.312500 3.375000 0.312500 +v -0.312500 3.250000 0.437500 +v -0.312500 3.250000 0.312500 +v 0.312500 3.875000 0.375000 +v 0.312500 3.875000 0.250000 +v 0.312500 3.375000 0.437500 +v -0.312500 4.000000 0.375000 +v 0.312500 3.375000 0.312500 +v -0.312500 4.000000 0.250000 +v -0.312500 3.875000 0.375000 +v -0.312500 3.875000 0.250000 +v 0.312500 3.250000 0.437500 +v 0.312500 3.250000 0.312500 +vt 0.410256 -0.000000 +vt 0.205128 0.355556 +vt 0.205128 -0.000000 +vt 0.410256 0.488889 +vt 0.230769 0.533333 +vt 0.205128 0.488889 +vt 0.410256 0.355556 +vt 0.820513 0.355556 +vt 0.615385 0.488889 +vt 0.615385 0.355556 +vt 0.000000 0.488889 +vt 0.000000 0.355556 +vt 0.384615 0.800000 +vt 0.230769 0.800000 +vt 0.820513 0.488889 +vt 0.641026 0.533333 +vt 0.435897 0.533333 +vt 0.025641 0.533333 +vt 0.846154 0.888889 +vt 0.820513 0.000000 +vt 0.846154 0.000000 +vt 0.871795 0.888889 +vt 0.871795 0.000000 +vt 0.923077 0.000000 +vt 0.897436 0.888889 +vt 0.897436 0.000000 +vt 0.871795 0.888889 +vt 0.846154 0.000000 +vt 0.871795 0.000000 +vt 0.897436 0.000000 +vt 0.846154 0.888889 +vt 0.820513 0.000000 +vt 0.923077 0.000000 +vt 0.897436 0.888889 +vt 0.923077 0.000000 +vt 0.897436 0.888889 +vt 0.897436 0.000000 +vt 0.846154 0.888889 +vt 0.820513 0.000000 +vt 0.846154 0.000000 +vt 0.871795 0.888889 +vt 0.871795 0.000000 +vt 0.897436 0.000000 +vt 0.871795 0.888889 +vt 0.871795 0.000000 +vt 0.923077 0.000000 +vt 0.897436 0.888889 +vt 0.846154 0.000000 +vt 0.846154 0.888889 +vt 0.820513 0.000000 +vt 0.666667 0.533333 +vt 0.589744 0.666667 +vt 0.589744 0.533333 +vt 0.660256 0.700000 +vt 0.596154 0.722222 +vt 0.596154 0.700000 +vt 0.666667 0.666667 +vt 0.589744 0.688889 +vt 0.820513 0.666667 +vt 0.743590 0.688889 +vt 0.743590 0.666667 +vt 0.666667 0.688889 +vt 0.512821 0.688889 +vt 0.512821 0.666667 +vt 0.750000 0.700000 +vt 0.820513 0.688889 +vt 0.814103 0.700000 +vt 0.519231 0.700000 +vt 0.583333 0.700000 +vt 0.673077 0.700000 +vt 0.737179 0.700000 +vt 0.820513 0.733333 +vt 0.750000 0.722222 +vt 0.814103 0.722222 +vt 0.673077 0.722222 +vt 0.519231 0.722222 +vt 0.589744 0.733333 +vt 0.583333 0.722222 +vt 0.666667 0.733333 +vt 0.660256 0.722222 +vt 0.743590 0.733333 +vt 0.737179 0.722222 +vt 0.589744 0.866667 +vt 0.743590 0.866667 +vt 0.666667 0.866667 +vt 0.512821 0.866667 +vt 0.512821 0.733333 +vt 0.589744 1.000000 +vt 0.666667 1.000000 +vt 0.512821 0.022222 +vt 0.410256 0.044444 +vt 0.410256 0.022222 +vt 0.512821 0.088889 +vt 0.410256 0.066667 +vt 0.512821 0.066667 +vt 0.512821 0.044444 +vt 0.410256 0.000000 +vt 0.410256 0.022222 +vt 0.512821 0.044444 +vt 0.410256 0.044444 +vt 0.410256 0.088889 +vt 0.512821 0.066667 +vt 0.512821 0.088889 +vt 0.410256 0.066667 +vt 0.512821 0.000000 +vt 0.410256 0.000000 +vt 0.487179 0.111111 +vt 0.410256 0.133333 +vt 0.410256 0.111111 +vt 0.487179 0.177778 +vt 0.410256 0.155556 +vt 0.487179 0.155556 +vt 0.487179 0.133333 +vt 0.410256 0.088889 +vt 0.410256 0.111111 +vt 0.487179 0.133333 +vt 0.410256 0.133333 +vt 0.410256 0.177778 +vt 0.487179 0.155556 +vt 0.487179 0.177778 +vt 0.410256 0.155556 +vt 0.487179 0.088889 +vt 0.410256 0.088889 +vt 0.474359 0.200000 +vt 0.410256 0.222222 +vt 0.410256 0.200000 +vt 0.474359 0.266667 +vt 0.410256 0.244444 +vt 0.474359 0.244444 +vt 0.474359 0.222222 +vt 0.410256 0.177778 +vt 0.410256 0.200000 +vt 0.474359 0.222222 +vt 0.410256 0.222222 +vt 0.410256 0.266667 +vt 0.474359 0.244444 +vt 0.474359 0.266667 +vt 0.410256 0.244444 +vt 0.474359 0.177778 +vt 0.410256 0.177778 +vt 0.512821 0.022222 +vt 0.410256 0.044444 +vt 0.410256 0.022222 +vt 0.512821 0.088889 +vt 0.410256 0.066667 +vt 0.512821 0.066667 +vt 0.512821 0.044444 +vt 0.410256 0.000000 +vt 0.410256 0.022222 +vt 0.512821 0.044444 +vt 0.410256 0.044444 +vt 0.410256 0.088889 +vt 0.512821 0.066667 +vt 0.512821 0.088889 +vt 0.410256 0.066667 +vt 0.512821 0.000000 +vt 0.410256 0.000000 +vt 0.487179 0.111111 +vt 0.410256 0.133333 +vt 0.410256 0.111111 +vt 0.487179 0.177778 +vt 0.410256 0.155556 +vt 0.487179 0.155556 +vt 0.487179 0.133333 +vt 0.410256 0.088889 +vt 0.410256 0.111111 +vt 0.487179 0.133333 +vt 0.410256 0.133333 +vt 0.410256 0.177778 +vt 0.487179 0.155556 +vt 0.487179 0.177778 +vt 0.410256 0.155556 +vt 0.487179 0.088889 +vt 0.410256 0.088889 +vt 0.474359 0.200000 +vt 0.410256 0.222222 +vt 0.410256 0.200000 +vt 0.474359 0.266667 +vt 0.410256 0.244444 +vt 0.474359 0.244444 +vt 0.474359 0.222222 +vt 0.410256 0.177778 +vt 0.410256 0.200000 +vt 0.474359 0.222222 +vt 0.410256 0.222222 +vt 0.410256 0.266667 +vt 0.474359 0.244444 +vt 0.474359 0.266667 +vt 0.410256 0.244444 +vt 0.474359 0.177778 +vt 0.410256 0.177778 +vt 0.512821 0.022222 +vt 0.410256 0.044444 +vt 0.410256 0.022222 +vt 0.512821 0.088889 +vt 0.410256 0.066667 +vt 0.512821 0.066667 +vt 0.512821 0.044444 +vt 0.410256 0.000000 +vt 0.410256 0.022222 +vt 0.512821 0.044444 +vt 0.410256 0.044444 +vt 0.410256 0.088889 +vt 0.512821 0.066667 +vt 0.512821 0.088889 +vt 0.410256 0.066667 +vt 0.512821 0.000000 +vt 0.410256 0.000000 +vt 0.487179 0.111111 +vt 0.410256 0.133333 +vt 0.410256 0.111111 +vt 0.487179 0.177778 +vt 0.410256 0.155556 +vt 0.487179 0.155556 +vt 0.487179 0.133333 +vt 0.410256 0.088889 +vt 0.410256 0.111111 +vt 0.487179 0.133333 +vt 0.410256 0.133333 +vt 0.410256 0.177778 +vt 0.487179 0.155556 +vt 0.487179 0.177778 +vt 0.410256 0.155556 +vt 0.487179 0.088889 +vt 0.410256 0.088889 +vt 0.474359 0.200000 +vt 0.410256 0.222222 +vt 0.410256 0.200000 +vt 0.474359 0.266667 +vt 0.410256 0.244444 +vt 0.474359 0.244444 +vt 0.474359 0.222222 +vt 0.410256 0.177778 +vt 0.410256 0.200000 +vt 0.474359 0.222222 +vt 0.410256 0.222222 +vt 0.410256 0.266667 +vt 0.474359 0.244444 +vt 0.474359 0.266667 +vt 0.410256 0.244444 +vt 0.474359 0.177778 +vt 0.410256 0.177778 +vt 0.512821 0.022222 +vt 0.410256 0.044444 +vt 0.410256 0.022222 +vt 0.512821 0.088889 +vt 0.410256 0.066667 +vt 0.512821 0.066667 +vt 0.512821 0.044444 +vt 0.410256 0.000000 +vt 0.410256 0.022222 +vt 0.512821 0.044444 +vt 0.410256 0.044444 +vt 0.410256 0.088889 +vt 0.512821 0.066667 +vt 0.512821 0.088889 +vt 0.410256 0.066667 +vt 0.512821 0.000000 +vt 0.410256 0.000000 +vt 0.487179 0.111111 +vt 0.410256 0.133333 +vt 0.410256 0.111111 +vt 0.487179 0.177778 +vt 0.410256 0.155556 +vt 0.487179 0.155556 +vt 0.487179 0.133333 +vt 0.410256 0.088889 +vt 0.410256 0.111111 +vt 0.487179 0.133333 +vt 0.410256 0.133333 +vt 0.410256 0.177778 +vt 0.487179 0.155556 +vt 0.487179 0.177778 +vt 0.410256 0.155556 +vt 0.487179 0.088889 +vt 0.410256 0.088889 +vt 0.474359 0.200000 +vt 0.410256 0.222222 +vt 0.410256 0.200000 +vt 0.474359 0.266667 +vt 0.410256 0.244444 +vt 0.474359 0.244444 +vt 0.474359 0.222222 +vt 0.410256 0.177778 +vt 0.410256 0.200000 +vt 0.474359 0.222222 +vt 0.410256 0.222222 +vt 0.410256 0.266667 +vt 0.474359 0.244444 +vt 0.474359 0.266667 +vt 0.410256 0.244444 +vt 0.474359 0.177778 +vt 0.410256 0.177778 +vt 0.384615 0.533333 +vt 0.794872 0.533333 +vt 0.589744 0.533333 +vt 0.179487 0.533333 +vt 0.820513 0.888889 +vt 0.923077 0.888889 +vt 0.820513 0.888889 +vt 0.923077 0.888889 +vt 0.923077 0.888889 +vt 0.820513 0.888889 +vt 0.923077 0.888889 +vt 0.820513 0.888889 +vt 0.820513 0.866667 +vt 0.410256 0.088889 +vt 0.512821 0.000000 +vt 0.512821 0.022222 +vt 0.410256 0.177778 +vt 0.487179 0.088889 +vt 0.487179 0.111111 +vt 0.410256 0.266667 +vt 0.474359 0.177778 +vt 0.474359 0.200000 +vt 0.410256 0.088889 +vt 0.512821 0.000000 +vt 0.512821 0.022222 +vt 0.410256 0.177778 +vt 0.487179 0.088889 +vt 0.487179 0.111111 +vt 0.410256 0.266667 +vt 0.474359 0.177778 +vt 0.474359 0.200000 +vt 0.410256 0.088889 +vt 0.512821 0.000000 +vt 0.512821 0.022222 +vt 0.410256 0.177778 +vt 0.487179 0.088889 +vt 0.487179 0.111111 +vt 0.410256 0.266667 +vt 0.474359 0.177778 +vt 0.474359 0.200000 +vt 0.410256 0.088889 +vt 0.512821 0.000000 +vt 0.512821 0.022222 +vt 0.410256 0.177778 +vt 0.487179 0.088889 +vt 0.487179 0.111111 +vt 0.410256 0.266667 +vt 0.474359 0.177778 +vt 0.474359 0.200000 +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.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.0000 0.7071 -0.7071 +vn 0.0000 0.7071 0.7071 +vn 0.0000 -0.0995 0.9950 +vn 0.9950 0.0995 0.0000 +vn -0.9950 -0.0995 0.0000 +vn 0.0000 0.0995 -0.9950 +vn 0.0000 0.0995 0.9950 +vn 0.0000 -0.0995 -0.9950 +vn 0.9950 -0.0995 0.0000 +vn -0.9950 0.0995 0.0000 +vn 0.9923 0.0000 -0.1240 +vn -0.9923 0.0000 0.1240 +vn 0.0000 -0.7071 -0.7071 +vn 0.9923 0.0000 0.1240 +vn -0.9923 0.0000 -0.1240 +vn 0.0000 -0.7071 0.7071 +vn 0.9864 0.0000 -0.1644 +vn -0.9864 0.0000 0.1644 +vn 0.9864 0.0000 0.1644 +vn -0.9864 0.0000 -0.1644 +vn 0.9950 0.0000 -0.0995 +vn -0.9950 0.0000 0.0995 +vn 0.9950 0.0000 0.0995 +vn -0.9950 0.0000 -0.0995 +vn -0.1240 0.0000 -0.9923 +vn 0.1240 0.0000 0.9923 +vn -0.7071 -0.7071 0.0000 +vn 0.1240 0.0000 -0.9923 +vn -0.1240 0.0000 0.9923 +vn 0.7071 -0.7071 0.0000 +vn -0.1644 0.0000 -0.9864 +vn 0.1644 0.0000 0.9864 +vn 0.1644 0.0000 -0.9864 +vn -0.1644 0.0000 0.9864 +vn -0.0995 0.0000 -0.9950 +vn 0.0995 0.0000 0.9950 +vn 0.0995 0.0000 -0.9950 +vn -0.0995 0.0000 0.9950 +s off +f 120/212/72 119/213/72 118/214/72 +f 125/215/73 127/216/73 123/217/73 +f 121/218/74 123/217/74 119/213/74 +f 118/219/75 124/220/75 120/221/75 +f 120/221/76 125/215/76 121/218/76 +f 119/213/77 122/222/77 118/223/77 +f 127/216/78 128/224/78 126/225/78 +f 122/226/79 128/227/79 124/220/79 +f 124/220/80 129/228/80 125/215/80 +f 123/217/81 126/229/81 122/222/81 +f 135/230/82 130/231/82 131/232/82 +f 137/233/83 131/232/83 133/234/83 +f 130/235/84 136/236/84 132/237/84 +f 132/237/85 137/233/85 133/234/85 +f 143/238/86 138/239/86 139/240/86 +f 141/241/83 143/238/83 139/240/83 +f 142/242/84 140/243/84 138/239/84 +f 140/244/87 145/245/87 141/241/87 +f 147/246/82 150/247/82 146/248/82 +f 153/249/88 147/250/88 149/251/88 +f 146/248/89 152/252/89 148/253/89 +f 152/252/85 149/251/85 148/253/85 +f 155/254/86 158/255/86 154/256/86 +f 157/257/88 159/258/88 155/254/88 +f 158/255/89 156/259/89 154/256/89 +f 160/260/87 157/261/87 156/259/87 +f 164/262/72 163/263/72 162/264/72 +f 169/265/74 176/266/74 168/267/74 +f 165/268/74 172/269/74 163/263/74 +f 162/270/75 170/271/75 164/272/75 +f 164/272/76 173/273/76 165/268/76 +f 163/263/77 171/274/77 162/275/77 +f 166/276/78 171/277/78 167/278/78 +f 167/279/78 172/269/78 168/280/78 +f 168/267/78 173/273/78 169/265/78 +f 169/281/78 170/271/78 166/282/78 +f 179/283/72 174/284/72 175/285/72 +f 167/278/75 174/284/75 166/276/75 +f 166/282/76 177/286/76 169/281/76 +f 168/280/77 175/287/77 167/279/77 +f 180/288/72 175/287/72 176/289/72 +f 181/290/72 176/266/72 177/291/72 +f 178/292/72 177/286/72 174/293/72 +f 181/290/74 184/294/74 180/288/74 +f 179/283/75 182/295/75 178/292/75 +f 178/292/76 185/296/76 181/290/76 +f 180/288/77 183/297/77 179/298/77 +f 183/299/78 185/296/78 182/300/78 +f 192/301/90 187/302/90 190/303/90 +f 193/304/91 189/305/91 188/306/91 +f 189/305/81 186/307/81 188/306/81 +f 191/308/92 192/301/92 190/303/92 +f 198/309/93 194/310/93 195/311/93 +f 199/312/94 196/313/94 201/314/94 +f 195/311/80 196/313/80 197/315/80 +f 201/316/95 198/309/95 199/317/95 +f 208/318/96 203/319/96 206/320/96 +f 209/321/97 205/322/97 204/323/97 +f 205/322/81 202/324/81 204/323/81 +f 207/325/92 208/318/92 206/320/92 +f 214/326/98 210/327/98 211/328/98 +f 215/329/99 212/330/99 217/331/99 +f 211/328/80 212/330/80 213/332/80 +f 217/333/95 214/326/95 215/334/95 +f 224/335/100 219/336/100 222/337/100 +f 225/338/101 221/339/101 220/340/101 +f 221/339/81 218/341/81 220/340/81 +f 223/342/92 224/335/92 222/337/92 +f 230/343/102 226/344/102 227/345/102 +f 231/346/103 228/347/103 233/348/103 +f 227/345/80 228/347/80 229/349/80 +f 233/350/95 230/343/95 231/351/95 +f 240/352/91 235/353/91 238/354/91 +f 241/355/90 237/356/90 236/357/90 +f 237/356/80 234/358/80 236/357/80 +f 239/359/95 240/352/95 238/354/95 +f 246/360/94 242/361/94 243/362/94 +f 247/363/93 244/364/93 249/365/93 +f 243/362/81 244/364/81 245/366/81 +f 249/367/92 246/360/92 247/368/92 +f 256/369/97 251/370/97 254/371/97 +f 257/372/96 253/373/96 252/374/96 +f 253/373/80 250/375/80 252/374/80 +f 255/376/95 256/369/95 254/371/95 +f 262/377/99 258/378/99 259/379/99 +f 263/380/98 260/381/98 265/382/98 +f 259/379/81 260/381/81 261/383/81 +f 265/384/92 262/377/92 263/385/92 +f 272/386/101 267/387/101 270/388/101 +f 273/389/100 269/390/100 268/391/100 +f 269/390/80 266/392/80 268/391/80 +f 271/393/95 272/386/95 270/388/95 +f 278/394/103 274/395/103 275/396/103 +f 279/397/102 276/398/102 281/399/102 +f 275/396/81 276/398/81 277/400/81 +f 281/401/92 278/394/92 279/402/92 +f 288/403/104 283/404/104 286/405/104 +f 289/406/105 285/407/105 284/408/105 +f 285/407/73 282/409/73 284/408/73 +f 287/410/106 288/403/106 286/405/106 +f 294/411/107 290/412/107 291/413/107 +f 295/414/108 292/415/108 297/416/108 +f 291/413/79 292/415/79 293/417/79 +f 297/418/109 294/411/109 295/419/109 +f 304/420/110 299/421/110 302/422/110 +f 305/423/111 301/424/111 300/425/111 +f 301/424/73 298/426/73 300/425/73 +f 303/427/106 304/420/106 302/422/106 +f 310/428/112 306/429/112 307/430/112 +f 311/431/113 308/432/113 313/433/113 +f 307/430/79 308/432/79 309/434/79 +f 313/435/109 310/428/109 311/436/109 +f 320/437/114 315/438/114 318/439/114 +f 321/440/115 317/441/115 316/442/115 +f 317/441/73 314/443/73 316/442/73 +f 319/444/106 320/437/106 318/439/106 +f 326/445/116 322/446/116 323/447/116 +f 327/448/117 324/449/117 329/450/117 +f 323/447/79 324/449/79 325/451/79 +f 329/452/109 326/445/109 327/453/109 +f 336/454/105 331/455/105 334/456/105 +f 337/457/104 333/458/104 332/459/104 +f 333/458/79 330/460/79 332/459/79 +f 335/461/109 336/454/109 334/456/109 +f 342/462/108 338/463/108 339/464/108 +f 343/465/107 340/466/107 345/467/107 +f 339/464/73 340/466/73 341/468/73 +f 345/469/106 342/462/106 343/470/106 +f 352/471/111 347/472/111 350/473/111 +f 353/474/110 349/475/110 348/476/110 +f 349/475/79 346/477/79 348/476/79 +f 351/478/109 352/471/109 350/473/109 +f 358/479/113 354/480/113 355/481/113 +f 359/482/112 356/483/112 361/484/112 +f 355/481/73 356/483/73 357/485/73 +f 361/486/106 358/479/106 359/487/106 +f 368/488/115 363/489/115 366/490/115 +f 369/491/114 365/492/114 364/493/114 +f 365/492/79 362/494/79 364/493/79 +f 367/495/109 368/488/109 366/490/109 +f 374/496/117 370/497/117 371/498/117 +f 375/499/116 372/500/116 377/501/116 +f 371/498/73 372/500/73 373/502/73 +f 377/503/106 374/496/106 375/504/106 +f 120/212/72 121/218/72 119/213/72 +f 125/215/73 129/505/73 127/216/73 +f 121/218/74 125/215/74 123/217/74 +f 118/219/75 122/226/75 124/220/75 +f 120/221/76 124/220/76 125/215/76 +f 119/213/77 123/217/77 122/222/77 +f 127/216/78 129/505/78 128/224/78 +f 122/226/79 126/506/79 128/227/79 +f 124/220/80 128/507/80 129/228/80 +f 123/217/81 127/508/81 126/229/81 +f 135/230/82 134/509/82 130/231/82 +f 137/233/83 135/230/83 131/232/83 +f 130/235/84 134/510/84 136/236/84 +f 132/237/85 136/236/85 137/233/85 +f 143/238/86 142/242/86 138/239/86 +f 141/241/83 145/245/83 143/238/83 +f 142/242/84 144/511/84 140/243/84 +f 140/244/87 144/512/87 145/245/87 +f 147/246/82 151/513/82 150/247/82 +f 153/249/88 151/514/88 147/250/88 +f 146/248/89 150/247/89 152/252/89 +f 152/252/85 153/249/85 149/251/85 +f 155/254/86 159/258/86 158/255/86 +f 157/257/88 161/515/88 159/258/88 +f 158/255/89 160/260/89 156/259/89 +f 160/260/87 161/516/87 157/261/87 +f 164/262/72 165/268/72 163/263/72 +f 169/265/74 177/291/74 176/266/74 +f 165/268/74 173/273/74 172/269/74 +f 162/270/75 171/277/75 170/271/75 +f 164/272/76 170/271/76 173/273/76 +f 163/263/77 172/269/77 171/274/77 +f 166/276/78 170/271/78 171/277/78 +f 167/279/78 171/274/78 172/269/78 +f 168/267/78 172/269/78 173/273/78 +f 169/281/78 173/273/78 170/271/78 +f 179/283/72 178/292/72 174/284/72 +f 167/278/75 175/285/75 174/284/75 +f 166/282/76 174/293/76 177/286/76 +f 168/280/77 176/289/77 175/287/77 +f 180/288/72 179/298/72 175/287/72 +f 181/290/72 180/288/72 176/266/72 +f 178/292/72 181/290/72 177/286/72 +f 181/290/74 185/296/74 184/294/74 +f 179/283/75 183/517/75 182/295/75 +f 178/292/76 182/295/76 185/296/76 +f 180/288/77 184/294/77 183/297/77 +f 183/299/78 184/294/78 185/296/78 +f 192/301/90 186/307/90 187/302/90 +f 193/304/91 191/518/91 189/305/91 +f 189/305/81 187/302/81 186/307/81 +f 191/308/92 193/519/92 192/301/92 +f 198/309/93 200/520/93 194/310/93 +f 199/312/94 197/315/94 196/313/94 +f 195/311/80 194/310/80 196/313/80 +f 201/316/95 200/520/95 198/309/95 +f 208/318/96 202/324/96 203/319/96 +f 209/321/97 207/521/97 205/322/97 +f 205/322/81 203/319/81 202/324/81 +f 207/325/92 209/522/92 208/318/92 +f 214/326/98 216/523/98 210/327/98 +f 215/329/99 213/332/99 212/330/99 +f 211/328/80 210/327/80 212/330/80 +f 217/333/95 216/523/95 214/326/95 +f 224/335/100 218/341/100 219/336/100 +f 225/338/101 223/524/101 221/339/101 +f 221/339/81 219/336/81 218/341/81 +f 223/342/92 225/525/92 224/335/92 +f 230/343/102 232/526/102 226/344/102 +f 231/346/103 229/349/103 228/347/103 +f 227/345/80 226/344/80 228/347/80 +f 233/350/95 232/526/95 230/343/95 +f 240/352/91 234/358/91 235/353/91 +f 241/355/90 239/527/90 237/356/90 +f 237/356/80 235/353/80 234/358/80 +f 239/359/95 241/528/95 240/352/95 +f 246/360/94 248/529/94 242/361/94 +f 247/363/93 245/366/93 244/364/93 +f 243/362/81 242/361/81 244/364/81 +f 249/367/92 248/529/92 246/360/92 +f 256/369/97 250/375/97 251/370/97 +f 257/372/96 255/530/96 253/373/96 +f 253/373/80 251/370/80 250/375/80 +f 255/376/95 257/531/95 256/369/95 +f 262/377/99 264/532/99 258/378/99 +f 263/380/98 261/383/98 260/381/98 +f 259/379/81 258/378/81 260/381/81 +f 265/384/92 264/532/92 262/377/92 +f 272/386/101 266/392/101 267/387/101 +f 273/389/100 271/533/100 269/390/100 +f 269/390/80 267/387/80 266/392/80 +f 271/393/95 273/534/95 272/386/95 +f 278/394/103 280/535/103 274/395/103 +f 279/397/102 277/400/102 276/398/102 +f 275/396/81 274/395/81 276/398/81 +f 281/401/92 280/535/92 278/394/92 +f 288/403/104 282/409/104 283/404/104 +f 289/406/105 287/536/105 285/407/105 +f 285/407/73 283/404/73 282/409/73 +f 287/410/106 289/537/106 288/403/106 +f 294/411/107 296/538/107 290/412/107 +f 295/414/108 293/417/108 292/415/108 +f 291/413/79 290/412/79 292/415/79 +f 297/418/109 296/538/109 294/411/109 +f 304/420/110 298/426/110 299/421/110 +f 305/423/111 303/539/111 301/424/111 +f 301/424/73 299/421/73 298/426/73 +f 303/427/106 305/540/106 304/420/106 +f 310/428/112 312/541/112 306/429/112 +f 311/431/113 309/434/113 308/432/113 +f 307/430/79 306/429/79 308/432/79 +f 313/435/109 312/541/109 310/428/109 +f 320/437/114 314/443/114 315/438/114 +f 321/440/115 319/542/115 317/441/115 +f 317/441/73 315/438/73 314/443/73 +f 319/444/106 321/543/106 320/437/106 +f 326/445/116 328/544/116 322/446/116 +f 327/448/117 325/451/117 324/449/117 +f 323/447/79 322/446/79 324/449/79 +f 329/452/109 328/544/109 326/445/109 +f 336/454/105 330/460/105 331/455/105 +f 337/457/104 335/545/104 333/458/104 +f 333/458/79 331/455/79 330/460/79 +f 335/461/109 337/546/109 336/454/109 +f 342/462/108 344/547/108 338/463/108 +f 343/465/107 341/468/107 340/466/107 +f 339/464/73 338/463/73 340/466/73 +f 345/469/106 344/547/106 342/462/106 +f 352/471/111 346/477/111 347/472/111 +f 353/474/110 351/548/110 349/475/110 +f 349/475/79 347/472/79 346/477/79 +f 351/478/109 353/549/109 352/471/109 +f 358/479/113 360/550/113 354/480/113 +f 359/482/112 357/485/112 356/483/112 +f 355/481/73 354/480/73 356/483/73 +f 361/486/106 360/550/106 358/479/106 +f 368/488/115 362/494/115 363/489/115 +f 369/491/114 367/551/114 365/492/114 +f 365/492/79 363/489/79 362/494/79 +f 367/495/109 369/552/109 368/488/109 +f 374/496/117 376/553/117 370/497/117 +f 375/499/116 373/502/116 372/500/116 +f 371/498/73 370/497/73 372/500/73 +f 377/503/106 376/553/106 374/496/106 diff --git a/src/main/resources/assets/hbm/textures/models/machines/satlink.png b/src/main/resources/assets/hbm/textures/models/machines/satlink.png new file mode 100644 index 0000000000000000000000000000000000000000..15402364950e7379224119eba7f3623b9b91e641 GIT binary patch literal 3335 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 literal 0 HcmV?d00001