From 9d23c8a057a4cb84d5d83c4cc49a88647194b987 Mon Sep 17 00:00:00 2001 From: BallOfEnergy <66693744+BallOfEnergy1@users.noreply.github.com> Date: Tue, 28 Mar 2023 09:20:57 -0500 Subject: [PATCH 01/40] Update TileEntityRBMKRod.java --- .../tileentity/machine/rbmk/TileEntityRBMKRod.java | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) 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 c9b3f22e8..7f8e7e5a4 100644 --- a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKRod.java +++ b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKRod.java @@ -411,6 +411,15 @@ public class TileEntityRBMKRod extends TileEntityRBMKSlottedBase implements IRBM } return new Object[] {"N/A"}; } + + @Callback + @Optional.Method(modid = "OpenComputers") + public Object[] getFuelType(Context context, Arguments args) { + if(slots[0] != null && slots[0].getItem() instanceof ItemRBMKRod) { + return new Object[] {slots[0].getItem()}; + } + return new Object[] {"N/A"}; + } @Callback @Optional.Method(modid = "OpenComputers") @@ -444,14 +453,17 @@ public class TileEntityRBMKRod extends TileEntityRBMKSlottedBase implements IRBM public Object[] getInfo(Context context, Arguments args) { Object OC_enrich_buf; Object OC_poison_buf; + Object OC_fuelType; if(slots[0] != null && slots[0].getItem() instanceof ItemRBMKRod) { OC_enrich_buf = ItemRBMKRod.getEnrichment(slots[0]); OC_poison_buf = ItemRBMKRod.getPoison(slots[0]); + OC_fuelType = slots[0].getItem(); } else { OC_enrich_buf = "N/A"; OC_poison_buf = "N/A"; + OC_fuelType = "N/A"; } - return new Object[] {heat, fluxSlow, fluxFast, OC_enrich_buf, OC_poison_buf}; + return new Object[] {heat, fluxSlow, fluxFast, OC_enrich_buf, OC_poison_buf, OC_fuelType}; } @Override From 9b449899fbc420a93451fb6f984f7dec05523413 Mon Sep 17 00:00:00 2001 From: BallOfEnergy <66693744+BallOfEnergy1@users.noreply.github.com> Date: Thu, 30 Mar 2023 09:40:16 -0500 Subject: [PATCH 02/40] testing rod names --- .../com/hbm/tileentity/machine/rbmk/TileEntityRBMKRod.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) 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 7f8e7e5a4..1a3562334 100644 --- a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKRod.java +++ b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKRod.java @@ -416,7 +416,7 @@ public class TileEntityRBMKRod extends TileEntityRBMKSlottedBase implements IRBM @Optional.Method(modid = "OpenComputers") public Object[] getFuelType(Context context, Arguments args) { if(slots[0] != null && slots[0].getItem() instanceof ItemRBMKRod) { - return new Object[] {slots[0].getItem()}; + return new Object[] {rod.getName()}; } return new Object[] {"N/A"}; } @@ -457,7 +457,7 @@ public class TileEntityRBMKRod extends TileEntityRBMKSlottedBase implements IRBM if(slots[0] != null && slots[0].getItem() instanceof ItemRBMKRod) { OC_enrich_buf = ItemRBMKRod.getEnrichment(slots[0]); OC_poison_buf = ItemRBMKRod.getPoison(slots[0]); - OC_fuelType = slots[0].getItem(); + OC_fuelType = rod.getName(); } else { OC_enrich_buf = "N/A"; OC_poison_buf = "N/A"; From 70397b418d152255b88f0611068b9a3246cdb841 Mon Sep 17 00:00:00 2001 From: BallOfEnergy <66693744+BallOfEnergy1@users.noreply.github.com> Date: Mon, 3 Apr 2023 09:01:56 -0500 Subject: [PATCH 03/40] yeah uh redoing OC compat yeah it should work now idk --- .../hbm/tileentity/machine/rbmk/TileEntityRBMKRod.java | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) 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 1a3562334..0e2cea7c7 100644 --- a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKRod.java +++ b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKRod.java @@ -414,9 +414,9 @@ public class TileEntityRBMKRod extends TileEntityRBMKSlottedBase implements IRBM @Callback @Optional.Method(modid = "OpenComputers") - public Object[] getFuelType(Context context, Arguments args) { + public Object[] getItemData(Context context, Arguments args) { if(slots[0] != null && slots[0].getItem() instanceof ItemRBMKRod) { - return new Object[] {rod.getName()}; + return new Object[] {slots[0]}; } return new Object[] {"N/A"}; } @@ -457,13 +457,13 @@ public class TileEntityRBMKRod extends TileEntityRBMKSlottedBase implements IRBM if(slots[0] != null && slots[0].getItem() instanceof ItemRBMKRod) { OC_enrich_buf = ItemRBMKRod.getEnrichment(slots[0]); OC_poison_buf = ItemRBMKRod.getPoison(slots[0]); - OC_fuelType = rod.getName(); + OC_item_Data = slots[0]; } else { OC_enrich_buf = "N/A"; OC_poison_buf = "N/A"; - OC_fuelType = "N/A"; + OC_item_Data = "N/A"; } - return new Object[] {heat, fluxSlow, fluxFast, OC_enrich_buf, OC_poison_buf, OC_fuelType}; + return new Object[] {heat, fluxSlow, fluxFast, OC_enrich_buf, OC_poison_buf, OC_item_Data}; } @Override From 32f0888aec622f00006c6ba8c8922be4433da050 Mon Sep 17 00:00:00 2001 From: BallOfEnergy <66693744+BallOfEnergy1@users.noreply.github.com> Date: Thu, 6 Apr 2023 09:35:19 -0500 Subject: [PATCH 04/40] fixed a small OC bug yeah idk should be ready for merging to main mod --- .../java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKRod.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 0e2cea7c7..7617aa6ca 100644 --- a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKRod.java +++ b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKRod.java @@ -453,7 +453,7 @@ public class TileEntityRBMKRod extends TileEntityRBMKSlottedBase implements IRBM public Object[] getInfo(Context context, Arguments args) { Object OC_enrich_buf; Object OC_poison_buf; - Object OC_fuelType; + Object OC_item_Data; if(slots[0] != null && slots[0].getItem() instanceof ItemRBMKRod) { OC_enrich_buf = ItemRBMKRod.getEnrichment(slots[0]); OC_poison_buf = ItemRBMKRod.getPoison(slots[0]); From 5f27c390944915d554fc3db94fad0931df76a6e4 Mon Sep 17 00:00:00 2001 From: BallOfEnergy <66693744+BallOfEnergy1@users.noreply.github.com> Date: Tue, 18 Apr 2023 20:49:56 -0500 Subject: [PATCH 05/40] yep that's a lot of files --- .../machine/rbmk/TileEntityRBMKAbsorber.java | 26 ++++++++++++- .../machine/rbmk/TileEntityRBMKBase.java | 19 +++------- .../machine/rbmk/TileEntityRBMKBoiler.java | 23 ++++++----- .../machine/rbmk/TileEntityRBMKControl.java | 13 ++++--- .../machine/rbmk/TileEntityRBMKCooler.java | 21 ++++++---- .../machine/rbmk/TileEntityRBMKHeater.java | 27 +++++++------ .../machine/rbmk/TileEntityRBMKOutgasser.java | 11 ++++-- .../machine/rbmk/TileEntityRBMKReflector.java | 24 +++++++++++- .../machine/rbmk/TileEntityRBMKRod.java | 27 +++++++------ .../machine/rbmk/TileEntityRBMKStorage.java | 38 ++++++++++++++++++- 10 files changed, 162 insertions(+), 67 deletions(-) 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..2ff30b05d 100644 --- a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKAbsorber.java +++ b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKAbsorber.java @@ -2,8 +2,14 @@ package com.hbm.tileentity.machine.rbmk; import com.hbm.entity.projectile.EntityRBMKDebris.DebrisType; import com.hbm.tileentity.machine.rbmk.TileEntityRBMKConsole.ColumnType; +import cpw.mods.fml.common.Optional; +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; -public class TileEntityRBMKAbsorber extends TileEntityRBMKBase { +@Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "OpenComputers")}) +public class TileEntityRBMKAbsorber extends TileEntityRBMKBase implements SimpleComponent { @Override public void onMelt(int reduce) { @@ -17,6 +23,24 @@ public class TileEntityRBMKAbsorber extends TileEntityRBMKBase { super.onMelt(reduce); } + @Override + public String getComponentName() { + return "rbmk_absorber_rod"; + } + + @Callback + @Optional.Method(modid = "OpenComputers") + public Object[] getHeat(Context context, Arguments args) { + return new Object[] {heat}; + } + + + @Callback + @Optional.Method(modid = "OpenComputers") + public Object[] getCoordinates(Context context, Arguments args) { + return new Object[] {xCoord, yCoord, zCoord}; + } + @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 2674b87bf..9e7b3d63e 100644 --- a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKBase.java +++ b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKBase.java @@ -1,14 +1,8 @@ package com.hbm.tileentity.machine.rbmk; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.HashSet; -import java.util.Iterator; -import java.util.List; -import java.util.Set; - -import org.lwjgl.opengl.GL11; - +import api.hbm.fluid.IFluidConductor; +import api.hbm.fluid.IFluidConnector; +import api.hbm.fluid.IPipeNet; import com.hbm.blocks.ModBlocks; import com.hbm.blocks.machine.rbmk.RBMKBase; import com.hbm.entity.effect.EntitySpear; @@ -25,10 +19,6 @@ import com.hbm.tileentity.TileEntityLoadedBase; import com.hbm.tileentity.machine.rbmk.TileEntityRBMKConsole.ColumnType; import com.hbm.util.Compat; import com.hbm.util.I18nUtil; - -import api.hbm.fluid.IFluidConductor; -import api.hbm.fluid.IFluidConnector; -import api.hbm.fluid.IPipeNet; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -46,6 +36,9 @@ import net.minecraft.world.EnumSkyBlock; import net.minecraft.world.World; import net.minecraftforge.client.event.RenderGameOverlayEvent; import net.minecraftforge.common.util.ForgeDirection; +import org.lwjgl.opengl.GL11; + +import java.util.*; /** * Base class for all RBMK components, active or passive. Handles heat and the explosion sequence 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 f3457b1e3..8ecffcaff 100644 --- a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKBoiler.java +++ b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKBoiler.java @@ -1,8 +1,8 @@ package com.hbm.tileentity.machine.rbmk; -import java.util.ArrayList; -import java.util.List; - +import api.hbm.fluid.IFluidStandardTransceiver; +import api.hbm.fluid.IFluidUser; +import api.hbm.fluid.IPipeNet; import com.hbm.blocks.ModBlocks; import com.hbm.entity.projectile.EntityRBMKDebris.DebrisType; import com.hbm.interfaces.IControlReceiver; @@ -16,10 +16,6 @@ import com.hbm.inventory.gui.GUIRBMKBoiler; import com.hbm.lib.Library; import com.hbm.tileentity.machine.rbmk.TileEntityRBMKConsole.ColumnType; import com.hbm.util.fauxpointtwelve.DirPos; - -import api.hbm.fluid.IFluidStandardTransceiver; -import api.hbm.fluid.IFluidUser; -import api.hbm.fluid.IPipeNet; import cpw.mods.fml.common.Optional; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -34,6 +30,9 @@ import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.Vec3; import net.minecraft.world.World; +import java.util.ArrayList; +import java.util.List; + @Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "OpenComputers")}) public class TileEntityRBMKBoiler extends TileEntityRBMKSlottedBase implements IFluidAcceptor, IFluidSource, IControlReceiver, IFluidStandardTransceiver, SimpleComponent { @@ -361,6 +360,12 @@ public class TileEntityRBMKBoiler extends TileEntityRBMKSlottedBase implements I return new Object[] {feed.getMaxFill()}; } + @Callback + @Optional.Method(modid = "OpenComputers") + public Object[] getCoordinates(Context context, Arguments args) { + return new Object[] {xCoord, yCoord, zCoord}; + } + @Callback @Optional.Method(modid = "OpenComputers") public Object[] getInfo(Context context, Arguments args) { @@ -370,8 +375,8 @@ public class TileEntityRBMKBoiler extends TileEntityRBMKSlottedBase implements I else if(type == Fluids.HOTSTEAM) {type_1 = "1";} else if(type == Fluids.SUPERHOTSTEAM) {type_1 = "2";} else if(type == Fluids.ULTRAHOTSTEAM) {type_1 = "3";} - else {type_1 = "Unknown Error";} - return new Object[] {heat, steam.getFill(), steam.getMaxFill(), feed.getFill(), feed.getMaxFill(), type_1}; + else {type_1 = "Steam out-of-bounds";} + return new Object[] {heat, steam.getFill(), steam.getMaxFill(), feed.getFill(), feed.getMaxFill(), type_1, xCoord, yCoord, zCoord}; } @Callback 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 40966dc5c..5bac96851 100644 --- a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKControl.java +++ b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKControl.java @@ -1,16 +1,14 @@ package com.hbm.tileentity.machine.rbmk; import com.hbm.entity.projectile.EntityRBMKDebris.DebrisType; - +import cpw.mods.fml.common.Optional; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; -import net.minecraft.nbt.NBTTagCompound; - -import cpw.mods.fml.common.Optional; 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.nbt.NBTTagCompound; @Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "OpenComputers")}) public abstract class TileEntityRBMKControl extends TileEntityRBMKSlottedBase implements SimpleComponent { @@ -140,6 +138,11 @@ public abstract class TileEntityRBMKControl extends TileEntityRBMKSlottedBase im return new Object[] {targetLevel * 100}; } + @Callback + @Optional.Method(modid = "OpenComputers") + public Object[] getCoordinates(Context context, Arguments args) { + return new Object[] {xCoord, yCoord, zCoord}; + } @Callback @Optional.Method(modid = "OpenComputers") @@ -150,7 +153,7 @@ public abstract class TileEntityRBMKControl extends TileEntityRBMKSlottedBase im @Callback @Optional.Method(modid = "OpenComputers") public Object[] getInfo(Context context, Arguments args) { - return new Object[] {heat, getMult() * 100, targetLevel * 100}; + return new Object[] {heat, getMult() * 100, targetLevel * 100, xCoord, yCoord, zCoord}; } @Callback 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 476c0d967..acb873d22 100644 --- a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKCooler.java +++ b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKCooler.java @@ -1,7 +1,5 @@ package com.hbm.tileentity.machine.rbmk; -import java.util.List; - import api.hbm.fluid.IFluidStandardReceiver; import com.hbm.interfaces.IFluidAcceptor; import com.hbm.inventory.fluid.FluidType; @@ -9,16 +7,17 @@ import com.hbm.inventory.fluid.Fluids; 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 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.Entity; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.AxisAlignedBB; import net.minecraft.util.DamageSource; -import cpw.mods.fml.common.Optional; -import li.cil.oc.api.machine.Arguments; -import li.cil.oc.api.machine.Callback; -import li.cil.oc.api.machine.Context; + +import java.util.List; @Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "OpenComputers")}) public class TileEntityRBMKCooler extends TileEntityRBMKBase implements IFluidAcceptor, IFluidStandardReceiver, SimpleComponent { @@ -168,9 +167,15 @@ public class TileEntityRBMKCooler extends TileEntityRBMKBase implements IFluidAc return new Object[]{tank.getMaxFill()}; } + @Callback + @Optional.Method(modid = "OpenComputers") + public Object[] getCoordinates(Context context, Arguments args) { + return new Object[] {xCoord, yCoord, zCoord}; + } + @Callback @Optional.Method(modid = "OpenComputers") public Object[] getInfo(Context context, Arguments args) { - return new Object[]{heat, tank.getFill(), tank.getMaxFill()}; + return new Object[]{heat, tank.getFill(), tank.getMaxFill(), xCoord, yCoord, zCoord}; } } 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 15469487b..6894070e4 100644 --- a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKHeater.java +++ b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKHeater.java @@ -1,8 +1,6 @@ package com.hbm.tileentity.machine.rbmk; -import java.util.ArrayList; -import java.util.List; - +import api.hbm.fluid.IFluidStandardTransceiver; import com.hbm.blocks.ModBlocks; import com.hbm.entity.projectile.EntityRBMKDebris.DebrisType; import com.hbm.interfaces.IFluidAcceptor; @@ -18,20 +16,21 @@ import com.hbm.inventory.gui.GUIRBMKHeater; import com.hbm.lib.Library; import com.hbm.tileentity.machine.rbmk.TileEntityRBMKConsole.ColumnType; import com.hbm.util.fauxpointtwelve.DirPos; - -import api.hbm.fluid.IFluidStandardTransceiver; +import cpw.mods.fml.common.Optional; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import li.cil.oc.api.machine.Arguments; +import li.cil.oc.api.machine.Callback; +import li.cil.oc.api.machine.Context; +import li.cil.oc.api.network.SimpleComponent; import net.minecraft.client.gui.GuiScreen; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Container; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.world.World; -import cpw.mods.fml.common.Optional; -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 java.util.ArrayList; +import java.util.List; @Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "opencomputers")}) public class TileEntityRBMKHeater extends TileEntityRBMKSlottedBase implements IFluidAcceptor, IFluidSource, IFluidStandardTransceiver, SimpleComponent { @@ -325,7 +324,13 @@ public class TileEntityRBMKHeater extends TileEntityRBMKSlottedBase implements I @Callback @Optional.Method(modid = "OpenComputers") public Object[] getInfo(Context context, Arguments args) { - return new Object[] {heat, feed.getFill(), feed.getMaxFill(), steam.getFill(), steam.getMaxFill(), feed.getTankType().getID(), steam.getTankType().getID()}; + return new Object[] {heat, feed.getFill(), feed.getMaxFill(), steam.getFill(), steam.getMaxFill(), feed.getTankType().getID(), steam.getTankType().getID(), xCoord, yCoord, zCoord}; + } + + @Callback + @Optional.Method(modid = "OpenComputers") + public Object[] getCoordinates(Context context, Arguments args) { + return new Object[] {xCoord, yCoord, zCoord}; } @Override 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 85ae56fce..57f27f45d 100644 --- a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKOutgasser.java +++ b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKOutgasser.java @@ -1,5 +1,6 @@ package com.hbm.tileentity.machine.rbmk; +import api.hbm.fluid.IFluidStandardSender; import com.hbm.blocks.ModBlocks; import com.hbm.entity.projectile.EntityRBMKDebris.DebrisType; import com.hbm.inventory.FluidStack; @@ -12,8 +13,6 @@ import com.hbm.lib.Library; import com.hbm.tileentity.machine.rbmk.TileEntityRBMKConsole.ColumnType; import com.hbm.util.Tuple.Pair; import com.hbm.util.fauxpointtwelve.DirPos; - -import api.hbm.fluid.IFluidStandardSender; import cpw.mods.fml.common.Optional; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -245,10 +244,16 @@ public class TileEntityRBMKOutgasser extends TileEntityRBMKSlottedBase implement return new Object[] {progress}; } + @Callback + @Optional.Method(modid = "OpenComputers") + public Object[] getCoordinates(Context context, Arguments args) { + return new Object[] {xCoord, yCoord, zCoord}; + } + @Callback @Optional.Method(modid = "OpenComputers") public Object[] getInfo(Context context, Arguments args) { - return new Object[] {gas.getFill(), gas.getMaxFill(), progress}; + return new Object[] {gas.getFill(), gas.getMaxFill(), progress, xCoord, yCoord, zCoord}; } @Override 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..7a7602d2f 100644 --- a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKReflector.java +++ b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKReflector.java @@ -2,8 +2,14 @@ package com.hbm.tileentity.machine.rbmk; import com.hbm.entity.projectile.EntityRBMKDebris.DebrisType; import com.hbm.tileentity.machine.rbmk.TileEntityRBMKConsole.ColumnType; +import cpw.mods.fml.common.Optional; +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; -public class TileEntityRBMKReflector extends TileEntityRBMKBase { +@Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "OpenComputers")}) +public class TileEntityRBMKReflector extends TileEntityRBMKBase implements SimpleComponent { @Override public void onMelt(int reduce) { @@ -16,6 +22,22 @@ public class TileEntityRBMKReflector extends TileEntityRBMKBase { super.onMelt(reduce); } + @Override + public String getComponentName() { + return "rbmk_reflector_rod"; + } + + @Callback + @Optional.Method(modid = "OpenComputers") + public Object[] getHeat(Context context, Arguments args) { + return new Object[] {heat}; + } + + @Callback + @Optional.Method(modid = "OpenComputers") + public Object[] getCoordinates(Context context, Arguments args) { + return new Object[] {xCoord, yCoord, zCoord}; + } @Override public ColumnType getConsoleType() { 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 7617aa6ca..fd58ab333 100644 --- a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKRod.java +++ b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKRod.java @@ -11,7 +11,6 @@ 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 cpw.mods.fml.common.Optional; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -411,15 +410,6 @@ public class TileEntityRBMKRod extends TileEntityRBMKSlottedBase implements IRBM } return new Object[] {"N/A"}; } - - @Callback - @Optional.Method(modid = "OpenComputers") - public Object[] getItemData(Context context, Arguments args) { - if(slots[0] != null && slots[0].getItem() instanceof ItemRBMKRod) { - return new Object[] {slots[0]}; - } - return new Object[] {"N/A"}; - } @Callback @Optional.Method(modid = "OpenComputers") @@ -453,17 +443,26 @@ public class TileEntityRBMKRod extends TileEntityRBMKSlottedBase implements IRBM public Object[] getInfo(Context context, Arguments args) { Object OC_enrich_buf; Object OC_poison_buf; - Object OC_item_Data; if(slots[0] != null && slots[0].getItem() instanceof ItemRBMKRod) { OC_enrich_buf = ItemRBMKRod.getEnrichment(slots[0]); OC_poison_buf = ItemRBMKRod.getPoison(slots[0]); - OC_item_Data = slots[0]; } else { OC_enrich_buf = "N/A"; OC_poison_buf = "N/A"; - OC_item_Data = "N/A"; } - return new Object[] {heat, fluxSlow, fluxFast, OC_enrich_buf, OC_poison_buf, OC_item_Data}; + return new Object[] {heat, fluxSlow, fluxFast, OC_enrich_buf, OC_poison_buf, ((RBMKRod)this.getBlockType()).moderated, xCoord, yCoord, zCoord}; + } + + @Callback + @Optional.Method(modid = "OpenComputers") + public Object[] getModerated(Context context, Arguments args) { + return new Object[] {((RBMKRod)this.getBlockType()).moderated}; + } + + @Callback + @Optional.Method(modid = "OpenComputers") + public Object[] getCoordinates(Context context, Arguments args) { + return new Object[] {xCoord, yCoord, zCoord}; } @Override 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 1806d06a7..538b4a795 100644 --- a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKStorage.java +++ b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKStorage.java @@ -4,16 +4,21 @@ 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.common.Optional; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import li.cil.oc.api.machine.Arguments; +import li.cil.oc.api.machine.Callback; +import li.cil.oc.api.machine.Context; +import li.cil.oc.api.network.SimpleComponent; import net.minecraft.client.gui.GuiScreen; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Container; import net.minecraft.item.ItemStack; import net.minecraft.world.World; -public class TileEntityRBMKStorage extends TileEntityRBMKSlottedBase implements IRBMKLoadable { +@Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "OpenComputers")}) +public class TileEntityRBMKStorage extends TileEntityRBMKSlottedBase implements IRBMKLoadable, SimpleComponent { public TileEntityRBMKStorage() { super(12); @@ -86,6 +91,35 @@ public class TileEntityRBMKStorage extends TileEntityRBMKSlottedBase implements slots[0] = null; } + @Override + public String getComponentName() { + return "rbmk_storage_rod"; + } + @Callback + @Optional.Method(modid = "OpenComputers") + public Object[] getCoordinates(Context context, Arguments args) { + return new Object[] {xCoord, yCoord, zCoord}; + } + + @Callback + @Optional.Method(modid = "OpenComputers") + public Object[] getHeat(Context context, Arguments args) { + return new Object[] {heat}; + } + + + @Callback + @Optional.Method(modid = "OpenComputers") + public Object[] getStored(Context context, Arguments args) { + return new Object[] {slots[0], slots[1], slots[2], slots[3], slots[4], slots[5], slots[6], slots[7], slots[8], slots[9], slots[10], slots[11]}; + } + + @Callback + @Optional.Method(modid = "OpenComputers") + public Object[] getInfo(Context context, Arguments args) { + return new Object[] {heat, slots[0], slots[1], slots[2], slots[3], slots[4], slots[5], slots[6], slots[7], slots[8], slots[9], slots[10], slots[11], xCoord, yCoord, zCoord}; + } + @Override public Container provideContainer(int ID, EntityPlayer player, World world, int x, int y, int z) { return new ContainerRBMKStorage(player.inventory, this); From 32fade11802c1db6ea9d2caa310d571e5f034111 Mon Sep 17 00:00:00 2001 From: BallOfEnergy <66693744+BallOfEnergy1@users.noreply.github.com> Date: Wed, 19 Apr 2023 21:40:18 -0500 Subject: [PATCH 06/40] first test of the new RBMK card component shiz --- .../inventory/recipes/AssemblerRecipes.java | 31 ++++---- src/main/java/com/hbm/items/ModItems.java | 5 ++ .../hbm/items/special/DriverItemCCard.java | 39 ++++++++++ .../java/com/hbm/items/special/ItemCCard.java | 68 ++++++++++++++++++ .../textures/items/rbmk_component_card.png | Bin 0 -> 549 bytes 5 files changed, 128 insertions(+), 15 deletions(-) create mode 100644 src/main/java/com/hbm/items/special/DriverItemCCard.java create mode 100644 src/main/java/com/hbm/items/special/ItemCCard.java create mode 100644 src/main/resources/assets/hbm/textures/items/rbmk_component_card.png diff --git a/src/main/java/com/hbm/inventory/recipes/AssemblerRecipes.java b/src/main/java/com/hbm/inventory/recipes/AssemblerRecipes.java index c067c89db..536d86df7 100644 --- a/src/main/java/com/hbm/inventory/recipes/AssemblerRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/AssemblerRecipes.java @@ -1,18 +1,5 @@ package com.hbm.inventory.recipes; -import java.io.File; -import java.io.FileReader; -import java.io.FileWriter; -import java.io.IOException; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Collections; -import java.util.HashMap; -import java.util.HashSet; -import java.util.List; -import java.util.Map; -import java.util.Map.Entry; - import com.google.gson.Gson; import com.google.gson.JsonArray; import com.google.gson.JsonElement; @@ -21,7 +8,6 @@ import com.google.gson.stream.JsonWriter; import com.hbm.blocks.ModBlocks; import com.hbm.config.GeneralConfig; import com.hbm.inventory.OreDictManager; -import static com.hbm.inventory.OreDictManager.*; import com.hbm.inventory.RecipesCommon.AStack; import com.hbm.inventory.RecipesCommon.ComparableStack; import com.hbm.inventory.RecipesCommon.OreDictStack; @@ -33,7 +19,6 @@ import com.hbm.items.machine.ItemDrillbit.EnumDrillType; import com.hbm.items.machine.ItemPistons.EnumPistonType; import com.hbm.items.weapon.ItemAmmoHIMARS; import com.hbm.main.MainRegistry; - import cpw.mods.fml.common.Loader; import net.minecraft.block.Block; import net.minecraft.init.Blocks; @@ -42,6 +27,15 @@ import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraftforge.oredict.OreDictionary; +import java.io.File; +import java.io.FileReader; +import java.io.FileWriter; +import java.io.IOException; +import java.util.*; +import java.util.Map.Entry; + +import static com.hbm.inventory.OreDictManager.*; + public class AssemblerRecipes { public static File config; @@ -439,6 +433,13 @@ public class AssemblerRecipes { makeRecipe(new ComparableStack(ModItems.fusion_shield_tungsten, 1), new AStack[] {new OreDictStack(W.block(), 32), new OreDictStack(OreDictManager.getReflector(), 96)}, 600); makeRecipe(new ComparableStack(ModItems.fusion_shield_desh, 1), new AStack[] {new OreDictStack(DESH.block(), 16), new OreDictStack(CO.block(), 16), new OreDictStack(BIGMT.plate(), 96)}, 600); makeRecipe(new ComparableStack(ModItems.fusion_shield_chlorophyte, 1), new AStack[] {new OreDictStack(W.block(), 16), new OreDictStack(DURA.block(), 16), new OreDictStack(OreDictManager.getReflector(), 48), new ComparableStack(ModItems.powder_chlorophyte, 48)}, 600); + makeRecipe(new ComparableStack(ModItems.rbmk_component_card, 1), new AStack[] { + new ComparableStack(ModItems.circuit_red_copper, 2), + new OreDictStack(STEEL.plate(), 4), + new ComparableStack(ModItems.wire_gold, 8), + new OreDictStack(ANY_PLASTIC.ingot(), 4), + new OreDictStack(U238.nugget(), 1) + }, 50); makeRecipe(new ComparableStack(ModBlocks.machine_fensu, 1), new AStack[] { new ComparableStack(ModItems.ingot_electronium, 32), new ComparableStack(ModBlocks.machine_dineutronium_battery, 16), diff --git a/src/main/java/com/hbm/items/ModItems.java b/src/main/java/com/hbm/items/ModItems.java index d63f62630..250e6579c 100644 --- a/src/main/java/com/hbm/items/ModItems.java +++ b/src/main/java/com/hbm/items/ModItems.java @@ -2430,6 +2430,8 @@ public class ModItems { public static Item nothing; public static Item void_anim; + public static Item rbmk_component_card; + public static Item bob_metalworks; public static Item bob_assembly; public static Item bob_chemistry; @@ -5439,6 +5441,8 @@ public class ModItems { nothing = new Item().setUnlocalizedName("nothing").setTextureName(RefStrings.MODID + ":nothing"); void_anim = new Item().setUnlocalizedName("void_anim").setTextureName(RefStrings.MODID + ":void_anim"); + rbmk_component_card = new ItemCCard().setUnlocalizedName("rbmk_component_card").setMaxStackSize(1).setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":rbmk_component_card"); + bob_metalworks = new Item().setUnlocalizedName("bob_metalworks").setTextureName(RefStrings.MODID + ":bob_metalworks"); bob_assembly = new Item().setUnlocalizedName("bob_assembly").setTextureName(RefStrings.MODID + ":bob_assembly"); bob_chemistry = new Item().setUnlocalizedName("bob_chemistry").setTextureName(RefStrings.MODID + ":bob_chemistry"); @@ -8036,6 +8040,7 @@ public class ModItems { GameRegistry.registerItem(ln2_10, ln2_10.getUnlocalizedName()); GameRegistry.registerItem(nothing, nothing.getUnlocalizedName()); GameRegistry.registerItem(void_anim, void_anim.getUnlocalizedName()); + GameRegistry.registerItem(rbmk_component_card, rbmk_component_card.getUnlocalizedName()); GameRegistry.registerItem(bob_metalworks, bob_metalworks.getUnlocalizedName()); GameRegistry.registerItem(bob_assembly, bob_assembly.getUnlocalizedName()); GameRegistry.registerItem(bob_chemistry, bob_chemistry.getUnlocalizedName()); diff --git a/src/main/java/com/hbm/items/special/DriverItemCCard.java b/src/main/java/com/hbm/items/special/DriverItemCCard.java new file mode 100644 index 000000000..575134759 --- /dev/null +++ b/src/main/java/com/hbm/items/special/DriverItemCCard.java @@ -0,0 +1,39 @@ +package com.hbm.items.special; + +import li.cil.oc.api.Network; +import li.cil.oc.api.driver.item.Container; +import li.cil.oc.api.driver.item.Slot; +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.ManagedEnvironment; +import li.cil.oc.api.network.Node; +import li.cil.oc.api.network.Visibility; +import net.minecraft.item.ItemStack; + +public class DriverItemCCard { + public String slot(ItemStack stack) { + return Slot.Card; + } + + public ManagedEnvironment createEnvironment(ItemStack stack, Container container) { + return new Environment(container); + } + + public class Environment extends li.cil.oc.api.prefab.ManagedEnvironment { + protected final Container container; + + public Environment(Container container) { + this.container = container; + Node node = Network.newNode(this, Visibility.Neighbors). + withComponent("particle"). + create(); + } + } + @Callback(direct = true, limit = 16) + public Object[] Greet(Context context, Arguments args) { + + return new Object[] {null}; + } + +} diff --git a/src/main/java/com/hbm/items/special/ItemCCard.java b/src/main/java/com/hbm/items/special/ItemCCard.java new file mode 100644 index 000000000..ef11c977f --- /dev/null +++ b/src/main/java/com/hbm/items/special/ItemCCard.java @@ -0,0 +1,68 @@ +package com.hbm.items.special; + +import com.hbm.blocks.machine.rbmk.RBMKBase; +import com.hbm.tileentity.machine.rbmk.TileEntityRBMKBase; +import cpw.mods.fml.common.Mod; +import cpw.mods.fml.common.event.FMLInitializationEvent; +import net.minecraft.block.Block; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.ChatComponentText; +import net.minecraft.util.EnumChatFormatting; +import net.minecraft.world.World; + +import java.util.List; + +public class ItemCCard extends Item { + + @Mod.EventHandler + public void init(FMLInitializationEvent e) { + li.cil.oc.api.Driver.add((li.cil.oc.api.driver.Item) new DriverItemCCard()); + } + + @Override + public void addInformation(ItemStack itemstack, EntityPlayer player, List list, boolean bool) { + list.add("Right-click to link RBMK."); + if(itemstack.getTagCompound() == null) { + list.add(EnumChatFormatting.RED + "No RBMK Linked!"); + } else { + list.add(EnumChatFormatting.YELLOW + "Linked to RBMK at: " + itemstack.stackTagCompound.getInteger("x") + ", " + itemstack.stackTagCompound.getInteger("y") + ", " + itemstack.stackTagCompound.getInteger("z")); + } + } + + @Override + public boolean onItemUse(ItemStack stack, EntityPlayer player, World world, int x, int y, int z, int p_77648_7_, float p_77648_8_, float p_77648_9_, float p_77648_10_) { + if(!world.isRemote) { + + if (stack.stackTagCompound == null) { + stack.stackTagCompound = new NBTTagCompound(); + } + Block block = world.getBlock(x, y, z); + + if (block instanceof RBMKBase) { + + RBMKBase rbmk = (RBMKBase) block; + + int[] pos = rbmk.findCore(world, x, y, z); + + if (pos != null) { + + TileEntity te = world.getTileEntity(pos[0], pos[1], pos[2]); + + if (te instanceof TileEntityRBMKBase) { + stack.stackTagCompound.setInteger("x", pos[0]); + stack.stackTagCompound.setInteger("y", pos[1]); + stack.stackTagCompound.setInteger("z", pos[2]); + player.addChatMessage(new ChatComponentText("Linked!")); + world.playSoundAtEntity(player, "hbm:item.techBoop", 2.0F, 1.0F); + } + } + } + } + return true; + } + +} diff --git a/src/main/resources/assets/hbm/textures/items/rbmk_component_card.png b/src/main/resources/assets/hbm/textures/items/rbmk_component_card.png new file mode 100644 index 0000000000000000000000000000000000000000..4755e80f376f1746c3ff7c33e6238c3c02e38d42 GIT binary patch literal 549 zcmV+=0^0qFP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D0lG;G)+wt(koJI{28joDpD{)(LpJqMWF>jC#!?df}5jID8Z$4adZ|OoCFJE z2M6P#o7!MRXf@I(9tbsm-dygFH^)}FqibI{9NzDo_xa%a*dcoNwc>Zrmi;e@ty@FJ zX7dm;!1kbvv)n(AUG+**sWg4PamGhZlG{JR{M9=m`29~ZA`#MHXs^NAqRZX9!hNBb zPAWGQf9b)%jC+kwPfQ?71!g=~l zWDdls?MZTMe1eHnH>oUdiXQ{P5TcUdeve!_*zn_uW`qFSTD-1!aHYnL3xi~8Z*=YB nl1t&VqPXy#xm;D(c7)(Jobs3VHtBC600000NkvXXu0mjf*9r9o literal 0 HcmV?d00001 From b276b0167f76c7f5a79214597ce53ad4bfb4f1f8 Mon Sep 17 00:00:00 2001 From: Boblet Date: Mon, 24 Apr 2023 16:11:57 +0200 Subject: [PATCH 07/40] coker --- src/main/java/com/hbm/blocks/ModBlocks.java | 13 ++-- .../com/hbm/blocks/machine/MachineCoker.java | 39 ++++++++++ .../java/com/hbm/crafting/RodRecipes.java | 3 + .../ContainerMachineCatalyticReformer.java | 6 -- .../container/ContainerMachineCoker.java | 73 ++++++++++++++++++ .../hbm/inventory/gui/GUIMachineCoker.java | 52 +++++++++++++ .../com/hbm/items/machine/ItemWatzPellet.java | 2 +- src/main/java/com/hbm/main/MainRegistry.java | 3 + .../machine/oil/TileEntityMachineCoker.java | 64 +++++++++++++++ .../hbm/textures/gui/processing/gui_coker.png | Bin 0 -> 2018 bytes 10 files changed, 243 insertions(+), 12 deletions(-) create mode 100644 src/main/java/com/hbm/blocks/machine/MachineCoker.java create mode 100644 src/main/java/com/hbm/inventory/container/ContainerMachineCoker.java create mode 100644 src/main/java/com/hbm/inventory/gui/GUIMachineCoker.java create mode 100644 src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineCoker.java create mode 100644 src/main/resources/assets/hbm/textures/gui/processing/gui_coker.png diff --git a/src/main/java/com/hbm/blocks/ModBlocks.java b/src/main/java/com/hbm/blocks/ModBlocks.java index 4e7c82139..3b4ee27cf 100644 --- a/src/main/java/com/hbm/blocks/ModBlocks.java +++ b/src/main/java/com/hbm/blocks/ModBlocks.java @@ -928,6 +928,7 @@ public class ModBlocks { public static Block fraction_spacer; public static Block machine_catalytic_cracker; public static Block machine_catalytic_reformer; + public static Block machine_coker; public static Block machine_boiler_off; public static Block machine_boiler_on; @@ -2139,6 +2140,7 @@ public class ModBlocks { 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_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_drill = new MachineMiningDrill(Material.iron).setBlockName("machine_drill").setHardness(5.0F).setResistance(100.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":machine_drill"); machine_excavator = new MachineExcavator().setBlockName("machine_excavator").setHardness(5.0F).setResistance(100.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); @@ -3186,12 +3188,13 @@ public class ModBlocks { register(machine_flare); register(machine_refinery); register(machine_vacuum_distill); - GameRegistry.registerBlock(machine_fraction_tower, machine_fraction_tower.getUnlocalizedName()); - GameRegistry.registerBlock(fraction_spacer, fraction_spacer.getUnlocalizedName()); - GameRegistry.registerBlock(machine_catalytic_cracker, machine_catalytic_cracker.getUnlocalizedName()); + register(machine_fraction_tower); + register(fraction_spacer); + register(machine_catalytic_cracker); register(machine_catalytic_reformer); - GameRegistry.registerBlock(machine_drill, machine_drill.getUnlocalizedName()); - GameRegistry.registerBlock(machine_autosaw, machine_autosaw.getUnlocalizedName()); + register(machine_coker); + register(machine_drill); + register(machine_autosaw); register(machine_excavator); register(machine_mining_laser); register(barricade); diff --git a/src/main/java/com/hbm/blocks/machine/MachineCoker.java b/src/main/java/com/hbm/blocks/machine/MachineCoker.java new file mode 100644 index 000000000..b944783ba --- /dev/null +++ b/src/main/java/com/hbm/blocks/machine/MachineCoker.java @@ -0,0 +1,39 @@ +package com.hbm.blocks.machine; + +import com.hbm.blocks.BlockDummyable; +import com.hbm.tileentity.machine.oil.TileEntityMachineCoker; + +import net.minecraft.block.material.Material; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.world.World; + +public class MachineCoker extends BlockDummyable { + + public MachineCoker(Material mat) { + super(mat); + } + + @Override + public TileEntity createNewTileEntity(World world, int meta) { + + if(meta >= 12) return new TileEntityMachineCoker(); + + 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[] {4, 0, 2, 2, 2, 2}; + } + + @Override + public int getOffset() { + return 2; + } +} diff --git a/src/main/java/com/hbm/crafting/RodRecipes.java b/src/main/java/com/hbm/crafting/RodRecipes.java index 77e6a2aa5..06f29fb44 100644 --- a/src/main/java/com/hbm/crafting/RodRecipes.java +++ b/src/main/java/com/hbm/crafting/RodRecipes.java @@ -136,6 +136,9 @@ public class RodRecipes { addPellet(PB, EnumWatzType.LEAD); addPellet(B, EnumWatzType.BORON); addPellet(U238, EnumWatzType.DU); + } + + public static void registerInit() { /* GT6 */ if(OreDictionary.doesOreNameExist("ingotNaquadah-Enriched")) addPellet(new DictFrame("Naquadah-Enriched"), EnumWatzType.NQD); if(OreDictionary.doesOreNameExist("ingotNaquadria")) addPellet(new DictFrame("Naquadria"), EnumWatzType.NQR); diff --git a/src/main/java/com/hbm/inventory/container/ContainerMachineCatalyticReformer.java b/src/main/java/com/hbm/inventory/container/ContainerMachineCatalyticReformer.java index a746904c8..41b30d98e 100644 --- a/src/main/java/com/hbm/inventory/container/ContainerMachineCatalyticReformer.java +++ b/src/main/java/com/hbm/inventory/container/ContainerMachineCatalyticReformer.java @@ -9,7 +9,6 @@ import api.hbm.energy.IBatteryItem; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.InventoryPlayer; import net.minecraft.inventory.Container; -import net.minecraft.inventory.ICrafting; import net.minecraft.inventory.Slot; import net.minecraft.item.ItemStack; @@ -55,11 +54,6 @@ public class ContainerMachineCatalyticReformer extends Container { } } - @Override - public void addCraftingToCrafters(ICrafting crafting) { - super.addCraftingToCrafters(crafting); - } - @Override public ItemStack transferStackInSlot(EntityPlayer p_82846_1_, int par2) { ItemStack var3 = null; diff --git a/src/main/java/com/hbm/inventory/container/ContainerMachineCoker.java b/src/main/java/com/hbm/inventory/container/ContainerMachineCoker.java new file mode 100644 index 000000000..61ea7768e --- /dev/null +++ b/src/main/java/com/hbm/inventory/container/ContainerMachineCoker.java @@ -0,0 +1,73 @@ +package com.hbm.inventory.container; + +import com.hbm.inventory.SlotCraftingOutput; +import com.hbm.items.machine.IItemFluidIdentifier; +import com.hbm.tileentity.machine.oil.TileEntityMachineCoker; + +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 ContainerMachineCoker extends Container { + + private TileEntityMachineCoker coker; + + public ContainerMachineCoker(InventoryPlayer invPlayer, TileEntityMachineCoker tedf) { + + coker = tedf; + + this.addSlotToContainer(new Slot(tedf, 0, 35, 72)); + this.addSlotToContainer(new SlotCraftingOutput(invPlayer.player, tedf, 1, 97, 27)); + + for(int i = 0; i < 3; i++) { + for(int j = 0; j < 9; j++) { + this.addSlotToContainer(new Slot(invPlayer, j + i * 9 + 9, 8 + j * 18, 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 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 <= 1) { + if(!this.mergeItemStack(var5, 2, this.inventorySlots.size(), true)) { + return null; + } + } else { + + if(var3.getItem() instanceof IItemFluidIdentifier) { + if(!this.mergeItemStack(var5, 0, 1, false)) { + return null; + } + } else { + return null; + } + } + + if(var5.stackSize == 0) { + var4.putStack((ItemStack) null); + } else { + var4.onSlotChanged(); + } + } + + return var3; + } + + @Override + public boolean canInteractWith(EntityPlayer player) { + return coker.isUseableByPlayer(player); + } +} diff --git a/src/main/java/com/hbm/inventory/gui/GUIMachineCoker.java b/src/main/java/com/hbm/inventory/gui/GUIMachineCoker.java new file mode 100644 index 000000000..a05678ed7 --- /dev/null +++ b/src/main/java/com/hbm/inventory/gui/GUIMachineCoker.java @@ -0,0 +1,52 @@ +package com.hbm.inventory.gui; + +import org.lwjgl.opengl.GL11; + +import com.hbm.inventory.container.ContainerMachineCoker; +import com.hbm.lib.RefStrings; +import com.hbm.tileentity.machine.oil.TileEntityMachineCoker; + +import net.minecraft.client.Minecraft; +import net.minecraft.client.resources.I18n; +import net.minecraft.entity.player.InventoryPlayer; +import net.minecraft.util.ResourceLocation; + +public class GUIMachineCoker extends GuiInfoContainer { + + private static ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/processing/gui_coker.png"); + private TileEntityMachineCoker refinery; + + public GUIMachineCoker(InventoryPlayer invPlayer, TileEntityMachineCoker tedf) { + super(new ContainerMachineCoker(invPlayer, tedf)); + refinery = tedf; + + this.xSize = 176; + this.ySize = 204; + } + + @Override + public void drawScreen(int mouseX, int mouseY, float f) { + super.drawScreen(mouseX, mouseY, f); + + refinery.tanks[0].renderTankInfo(this, mouseX, mouseY, guiLeft + 35, guiTop + 18, 16, 52); + refinery.tanks[1].renderTankInfo(this, mouseX, mouseY, guiLeft + 125, guiTop + 18, 16, 52); + } + + @Override + protected void drawGuiContainerForegroundLayer(int i, int j) { + String name = this.refinery.hasCustomInventoryName() ? this.refinery.getInventoryName() : I18n.format(this.refinery.getInventoryName()); + + this.fontRendererObj.drawString(name, this.xSize / 2 - this.fontRendererObj.getStringWidth(name) / 2, 6, 0xC7C1A3); + this.fontRendererObj.drawString(I18n.format("container.inventory"), 8, this.ySize - 96 + 2, 4210752); + } + + @Override + protected void drawGuiContainerBackgroundLayer(float p_146976_1_, int p_146976_2_, int p_146976_3_) { + GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); + Minecraft.getMinecraft().getTextureManager().bindTexture(texture); + drawTexturedModalRect(guiLeft, guiTop, 0, 0, xSize, ySize); + + refinery.tanks[0].renderTank(guiLeft + 35, guiTop + 70, this.zLevel, 16, 52); + refinery.tanks[1].renderTank(guiLeft + 125, guiTop + 70, this.zLevel, 16, 52); + } +} diff --git a/src/main/java/com/hbm/items/machine/ItemWatzPellet.java b/src/main/java/com/hbm/items/machine/ItemWatzPellet.java index c8e31a111..be5e0ad7f 100644 --- a/src/main/java/com/hbm/items/machine/ItemWatzPellet.java +++ b/src/main/java/com/hbm/items/machine/ItemWatzPellet.java @@ -135,7 +135,7 @@ public class ItemWatzPellet extends ItemEnumMulti { if(num.passive > 0){ list.add(color + "Base fission rate: " + reset + num.passive); - list.add(EnumChatFormatting.RED + "Self-ingiting!"); + list.add(EnumChatFormatting.RED + "Self-igniting!"); } if(num.heatEmission > 0) list.add(color + "Heat per flux: " + reset + num.heatEmission + " TU"); if(num.burnFunc != null) { diff --git a/src/main/java/com/hbm/main/MainRegistry.java b/src/main/java/com/hbm/main/MainRegistry.java index e9908af75..6e1e381e5 100644 --- a/src/main/java/com/hbm/main/MainRegistry.java +++ b/src/main/java/com/hbm/main/MainRegistry.java @@ -49,6 +49,7 @@ import com.hbm.blocks.generic.BlockMotherOfAllOres; import com.hbm.blocks.generic.BlockToolConversion; import com.hbm.commands.CommandReloadRecipes; import com.hbm.config.*; +import com.hbm.crafting.RodRecipes; import com.hbm.creativetabs.*; import com.hbm.entity.EntityMappings; import com.hbm.entity.grenade.*; @@ -637,6 +638,8 @@ 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(); diff --git a/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineCoker.java b/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineCoker.java new file mode 100644 index 000000000..00d05c2ff --- /dev/null +++ b/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineCoker.java @@ -0,0 +1,64 @@ +package com.hbm.tileentity.machine.oil; + +import com.hbm.inventory.container.ContainerMachineCoker; +import com.hbm.inventory.fluid.Fluids; +import com.hbm.inventory.fluid.tank.FluidTank; +import com.hbm.inventory.gui.GUIMachineCoker; +import com.hbm.tileentity.IGUIProvider; +import com.hbm.tileentity.TileEntityMachineBase; + +import api.hbm.fluid.IFluidStandardTransceiver; +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; + +public class TileEntityMachineCoker extends TileEntityMachineBase implements IFluidStandardTransceiver, IGUIProvider { + + public FluidTank[] tanks; + + public TileEntityMachineCoker() { + super(1); + tanks = new FluidTank[2]; + tanks[0] = new FluidTank(Fluids.HEAVYOIL, 16_000); + tanks[1] = new FluidTank(Fluids.GAS, 8_000); + } + + @Override + public String getName() { + return "container.machineCoker"; + } + + @Override + public void updateEntity() { + + } + + @Override + public FluidTank[] getAllTanks() { + return tanks; + } + + @Override + public FluidTank[] getSendingTanks() { + return new FluidTank[] { tanks[1] }; + } + + @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 ContainerMachineCoker(player.inventory, this); + } + + @Override + @SideOnly(Side.CLIENT) + public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { + return new GUIMachineCoker(player.inventory, this); + } +} diff --git a/src/main/resources/assets/hbm/textures/gui/processing/gui_coker.png b/src/main/resources/assets/hbm/textures/gui/processing/gui_coker.png new file mode 100644 index 0000000000000000000000000000000000000000..221c215fb74287c0f3ad3ca88a4afb2bb8645a66 GIT binary patch literal 2018 zcmb7FX;4#F7`<5v5s{=uKokg|LkhG&Lj<@!gv@mefSGl&oIZ4^| z%kK5<_tQ%pj|Jy00_HDBu+w6h+W04m(?KzLrCh~Q3~ZpXTFjbhV8RR8Zd~(WA=++{bHbEcGME=!YHAP^!7IsjcT~as)Jq07dq7SoyW>eG`umlpTAca( z#X7SLrc-)iqYm>CLpYVKn!TlLft~cKHHGLx$>mFD8=U4Cth@Z{&-s0Hpgk%n$sOG8j4W>>w`nnl=@mMXUC zob``binaujkD^YcjHBzuS|%VdtJCiIb&%@A0%5U}d+kQ)felZOcRl=uVlVZcz^cCD!nLk;LHv=L#n@41a%oU89GD{ELi2pZth$Z0YtH(ovY@1Fn*PcRLh zQZdH@4bv}kR;A2C_LAB^9}r<~=ZS0Xx>INqvGJ6#DjM}@p9}82I?ZhR&H9@u+9x~;>&OLEX}sfvwhVecolOb zE|f~8<{V*F@ROD%`)?0jA5bad1S4@t_tD(OMoS`**g@#-8G2bDO^Jd1)%X6x5?_aO zmJkQ63rD0<=`ilF;gEpiVR5v+KW4AROxjLvo@+j$K48(NTu0k# zl%6A8b|k^O_y+$p+tgj`_RR1voS5w+BO{?U$c|Xxm@9@;yW@0i iOK+oB+vu&H=}LWs>A9+*wLSjoJZ}%bJvHu>)4u{xj8A$1 literal 0 HcmV?d00001 From 0c36464cd886110937fe32983ca03ffa01c9bde1 Mon Sep 17 00:00:00 2001 From: BallOfEnergy <66693744+BallOfEnergy1@users.noreply.github.com> Date: Mon, 24 Apr 2023 20:02:40 -0500 Subject: [PATCH 08/40] Scratch that last idea, crappy concept and can be implemented in literally a few lines --- .../inventory/recipes/AssemblerRecipes.java | 7 -- src/main/java/com/hbm/items/ModItems.java | 4 -- .../hbm/items/special/DriverItemCCard.java | 39 ---------- .../java/com/hbm/items/special/ItemCCard.java | 68 ------------------ .../machine/rbmk/TileEntityCraneConsole.java | 22 +++--- .../machine/rbmk/TileEntityRBMKAbsorber.java | 4 +- .../machine/rbmk/TileEntityRBMKBoiler.java | 18 ++--- .../machine/rbmk/TileEntityRBMKControl.java | 12 ++-- .../machine/rbmk/TileEntityRBMKCooler.java | 10 +-- .../machine/rbmk/TileEntityRBMKHeater.java | 18 ++--- .../machine/rbmk/TileEntityRBMKOutgasser.java | 10 +-- .../machine/rbmk/TileEntityRBMKReflector.java | 4 +- .../machine/rbmk/TileEntityRBMKRod.java | 32 +++------ .../machine/rbmk/TileEntityRBMKStorage.java | 8 +-- .../textures/items/rbmk_component_card.png | Bin 549 -> 0 bytes 15 files changed, 63 insertions(+), 193 deletions(-) delete mode 100644 src/main/java/com/hbm/items/special/DriverItemCCard.java delete mode 100644 src/main/java/com/hbm/items/special/ItemCCard.java delete mode 100644 src/main/resources/assets/hbm/textures/items/rbmk_component_card.png diff --git a/src/main/java/com/hbm/inventory/recipes/AssemblerRecipes.java b/src/main/java/com/hbm/inventory/recipes/AssemblerRecipes.java index 536d86df7..42f7bbb80 100644 --- a/src/main/java/com/hbm/inventory/recipes/AssemblerRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/AssemblerRecipes.java @@ -433,13 +433,6 @@ public class AssemblerRecipes { makeRecipe(new ComparableStack(ModItems.fusion_shield_tungsten, 1), new AStack[] {new OreDictStack(W.block(), 32), new OreDictStack(OreDictManager.getReflector(), 96)}, 600); makeRecipe(new ComparableStack(ModItems.fusion_shield_desh, 1), new AStack[] {new OreDictStack(DESH.block(), 16), new OreDictStack(CO.block(), 16), new OreDictStack(BIGMT.plate(), 96)}, 600); makeRecipe(new ComparableStack(ModItems.fusion_shield_chlorophyte, 1), new AStack[] {new OreDictStack(W.block(), 16), new OreDictStack(DURA.block(), 16), new OreDictStack(OreDictManager.getReflector(), 48), new ComparableStack(ModItems.powder_chlorophyte, 48)}, 600); - makeRecipe(new ComparableStack(ModItems.rbmk_component_card, 1), new AStack[] { - new ComparableStack(ModItems.circuit_red_copper, 2), - new OreDictStack(STEEL.plate(), 4), - new ComparableStack(ModItems.wire_gold, 8), - new OreDictStack(ANY_PLASTIC.ingot(), 4), - new OreDictStack(U238.nugget(), 1) - }, 50); makeRecipe(new ComparableStack(ModBlocks.machine_fensu, 1), new AStack[] { new ComparableStack(ModItems.ingot_electronium, 32), new ComparableStack(ModBlocks.machine_dineutronium_battery, 16), diff --git a/src/main/java/com/hbm/items/ModItems.java b/src/main/java/com/hbm/items/ModItems.java index 250e6579c..0e6b7eba3 100644 --- a/src/main/java/com/hbm/items/ModItems.java +++ b/src/main/java/com/hbm/items/ModItems.java @@ -2430,8 +2430,6 @@ public class ModItems { public static Item nothing; public static Item void_anim; - public static Item rbmk_component_card; - public static Item bob_metalworks; public static Item bob_assembly; public static Item bob_chemistry; @@ -5441,7 +5439,6 @@ public class ModItems { nothing = new Item().setUnlocalizedName("nothing").setTextureName(RefStrings.MODID + ":nothing"); void_anim = new Item().setUnlocalizedName("void_anim").setTextureName(RefStrings.MODID + ":void_anim"); - rbmk_component_card = new ItemCCard().setUnlocalizedName("rbmk_component_card").setMaxStackSize(1).setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":rbmk_component_card"); bob_metalworks = new Item().setUnlocalizedName("bob_metalworks").setTextureName(RefStrings.MODID + ":bob_metalworks"); bob_assembly = new Item().setUnlocalizedName("bob_assembly").setTextureName(RefStrings.MODID + ":bob_assembly"); @@ -8040,7 +8037,6 @@ public class ModItems { GameRegistry.registerItem(ln2_10, ln2_10.getUnlocalizedName()); GameRegistry.registerItem(nothing, nothing.getUnlocalizedName()); GameRegistry.registerItem(void_anim, void_anim.getUnlocalizedName()); - GameRegistry.registerItem(rbmk_component_card, rbmk_component_card.getUnlocalizedName()); GameRegistry.registerItem(bob_metalworks, bob_metalworks.getUnlocalizedName()); GameRegistry.registerItem(bob_assembly, bob_assembly.getUnlocalizedName()); GameRegistry.registerItem(bob_chemistry, bob_chemistry.getUnlocalizedName()); diff --git a/src/main/java/com/hbm/items/special/DriverItemCCard.java b/src/main/java/com/hbm/items/special/DriverItemCCard.java deleted file mode 100644 index 575134759..000000000 --- a/src/main/java/com/hbm/items/special/DriverItemCCard.java +++ /dev/null @@ -1,39 +0,0 @@ -package com.hbm.items.special; - -import li.cil.oc.api.Network; -import li.cil.oc.api.driver.item.Container; -import li.cil.oc.api.driver.item.Slot; -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.ManagedEnvironment; -import li.cil.oc.api.network.Node; -import li.cil.oc.api.network.Visibility; -import net.minecraft.item.ItemStack; - -public class DriverItemCCard { - public String slot(ItemStack stack) { - return Slot.Card; - } - - public ManagedEnvironment createEnvironment(ItemStack stack, Container container) { - return new Environment(container); - } - - public class Environment extends li.cil.oc.api.prefab.ManagedEnvironment { - protected final Container container; - - public Environment(Container container) { - this.container = container; - Node node = Network.newNode(this, Visibility.Neighbors). - withComponent("particle"). - create(); - } - } - @Callback(direct = true, limit = 16) - public Object[] Greet(Context context, Arguments args) { - - return new Object[] {null}; - } - -} diff --git a/src/main/java/com/hbm/items/special/ItemCCard.java b/src/main/java/com/hbm/items/special/ItemCCard.java deleted file mode 100644 index ef11c977f..000000000 --- a/src/main/java/com/hbm/items/special/ItemCCard.java +++ /dev/null @@ -1,68 +0,0 @@ -package com.hbm.items.special; - -import com.hbm.blocks.machine.rbmk.RBMKBase; -import com.hbm.tileentity.machine.rbmk.TileEntityRBMKBase; -import cpw.mods.fml.common.Mod; -import cpw.mods.fml.common.event.FMLInitializationEvent; -import net.minecraft.block.Block; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.ChatComponentText; -import net.minecraft.util.EnumChatFormatting; -import net.minecraft.world.World; - -import java.util.List; - -public class ItemCCard extends Item { - - @Mod.EventHandler - public void init(FMLInitializationEvent e) { - li.cil.oc.api.Driver.add((li.cil.oc.api.driver.Item) new DriverItemCCard()); - } - - @Override - public void addInformation(ItemStack itemstack, EntityPlayer player, List list, boolean bool) { - list.add("Right-click to link RBMK."); - if(itemstack.getTagCompound() == null) { - list.add(EnumChatFormatting.RED + "No RBMK Linked!"); - } else { - list.add(EnumChatFormatting.YELLOW + "Linked to RBMK at: " + itemstack.stackTagCompound.getInteger("x") + ", " + itemstack.stackTagCompound.getInteger("y") + ", " + itemstack.stackTagCompound.getInteger("z")); - } - } - - @Override - public boolean onItemUse(ItemStack stack, EntityPlayer player, World world, int x, int y, int z, int p_77648_7_, float p_77648_8_, float p_77648_9_, float p_77648_10_) { - if(!world.isRemote) { - - if (stack.stackTagCompound == null) { - stack.stackTagCompound = new NBTTagCompound(); - } - Block block = world.getBlock(x, y, z); - - if (block instanceof RBMKBase) { - - RBMKBase rbmk = (RBMKBase) block; - - int[] pos = rbmk.findCore(world, x, y, z); - - if (pos != null) { - - TileEntity te = world.getTileEntity(pos[0], pos[1], pos[2]); - - if (te instanceof TileEntityRBMKBase) { - stack.stackTagCompound.setInteger("x", pos[0]); - stack.stackTagCompound.setInteger("y", pos[1]); - stack.stackTagCompound.setInteger("z", pos[2]); - player.addChatMessage(new ChatComponentText("Linked!")); - world.playSoundAtEntity(player, "hbm:item.techBoop", 2.0F, 1.0F); - } - } - } - } - return true; - } - -} 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 3a8f715f1..344464db8 100644 --- a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityCraneConsole.java +++ b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityCraneConsole.java @@ -1,7 +1,5 @@ package com.hbm.tileentity.machine.rbmk; -import java.util.List; - import com.hbm.blocks.BlockDummyable; import com.hbm.blocks.machine.rbmk.RBMKBase; import com.hbm.extprop.HbmPlayerProps; @@ -10,10 +8,14 @@ import com.hbm.items.machine.ItemRBMKRod; import com.hbm.packet.NBTPacket; import com.hbm.packet.PacketDispatcher; import com.hbm.tileentity.INBTPacketReceiver; - +import cpw.mods.fml.common.Optional; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import li.cil.oc.api.machine.Arguments; +import li.cil.oc.api.machine.Callback; +import li.cil.oc.api.machine.Context; +import li.cil.oc.api.network.SimpleComponent; import net.minecraft.block.Block; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; @@ -23,11 +25,7 @@ import net.minecraft.util.AxisAlignedBB; import net.minecraft.util.MathHelper; import net.minecraftforge.common.util.ForgeDirection; -import cpw.mods.fml.common.Optional; -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 java.util.List; @Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "OpenComputers")}) public class TileEntityCraneConsole extends TileEntity implements INBTPacketReceiver, SimpleComponent { @@ -341,7 +339,7 @@ public class TileEntityCraneConsole extends TileEntity implements INBTPacketRece return "rbmk_crane"; } - @Callback + @Callback(direct = true, limit = 4) @Optional.Method(modid = "OpenComputers") public Object[] move(Context context, Arguments args) { if(setUpCrane == true) { @@ -371,7 +369,7 @@ public class TileEntityCraneConsole extends TileEntity implements INBTPacketRece return new Object[] {"Crane not found"}; } - @Callback + @Callback(direct = true, limit = 4) @Optional.Method(modid = "OpenComputers") public Object[] load(Context context, Arguments args) { if (setUpCrane == true) { @@ -381,7 +379,7 @@ public class TileEntityCraneConsole extends TileEntity implements INBTPacketRece return new Object[] {"Crane not found"}; } - @Callback + @Callback(direct = true, limit = 4) @Optional.Method(modid = "OpenComputers") public Object[] getDepletion(Context context, Arguments args) { if(loadedItem != null && loadedItem.getItem() instanceof ItemRBMKRod) { @@ -390,7 +388,7 @@ public class TileEntityCraneConsole extends TileEntity implements INBTPacketRece return new Object[] {"N/A"}; } - @Callback + @Callback(direct = true, limit = 4) @Optional.Method(modid = "OpenComputers") public Object[] getXenonPoison(Context context, Arguments args) { if(loadedItem != null && loadedItem.getItem() instanceof ItemRBMKRod) { 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 2ff30b05d..69610b38f 100644 --- a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKAbsorber.java +++ b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKAbsorber.java @@ -28,14 +28,14 @@ public class TileEntityRBMKAbsorber extends TileEntityRBMKBase implements Simple return "rbmk_absorber_rod"; } - @Callback + @Callback(direct = true, limit = 4) @Optional.Method(modid = "OpenComputers") public Object[] getHeat(Context context, Arguments args) { return new Object[] {heat}; } - @Callback + @Callback(direct = true, limit = 4) @Optional.Method(modid = "OpenComputers") public Object[] getCoordinates(Context context, Arguments args) { return new Object[] {xCoord, yCoord, zCoord}; 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 8ecffcaff..bd46536de 100644 --- a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKBoiler.java +++ b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKBoiler.java @@ -332,41 +332,41 @@ public class TileEntityRBMKBoiler extends TileEntityRBMKSlottedBase implements I return "rbmk_boiler"; } - @Callback + @Callback(direct = true, limit = 8) @Optional.Method(modid = "OpenComputers") public Object[] getHeat(Context context, Arguments args) { return new Object[] {heat}; } - @Callback + @Callback(direct = true, limit = 8) @Optional.Method(modid = "OpenComputers") public Object[] getSteam(Context context, Arguments args) { return new Object[] {steam.getFill()}; } - @Callback + @Callback(direct = true, limit = 8) @Optional.Method(modid = "OpenComputers") public Object[] getSteamMax(Context context, Arguments args) { return new Object[] {steam.getMaxFill()}; } - @Callback + @Callback(direct = true, limit = 8) @Optional.Method(modid = "OpenComputers") public Object[] getWater(Context context, Arguments args) { return new Object[] {feed.getFill()}; } - @Callback + @Callback(direct = true, limit = 8) @Optional.Method(modid = "OpenComputers") public Object[] getWaterMax(Context context, Arguments args) { return new Object[] {feed.getMaxFill()}; } - @Callback + @Callback(direct = true, limit = 8) @Optional.Method(modid = "OpenComputers") public Object[] getCoordinates(Context context, Arguments args) { return new Object[] {xCoord, yCoord, zCoord}; } - @Callback + @Callback(direct = true, limit = 8) @Optional.Method(modid = "OpenComputers") public Object[] getInfo(Context context, Arguments args) { FluidType type = steam.getTankType(); @@ -379,7 +379,7 @@ public class TileEntityRBMKBoiler extends TileEntityRBMKSlottedBase implements I return new Object[] {heat, steam.getFill(), steam.getMaxFill(), feed.getFill(), feed.getMaxFill(), type_1, xCoord, yCoord, zCoord}; } - @Callback + @Callback(direct = true, limit = 8) @Optional.Method(modid = "OpenComputers") public Object[] getSteamType(Context context, Arguments args) { FluidType type = steam.getTankType(); @@ -390,6 +390,8 @@ public class TileEntityRBMKBoiler extends TileEntityRBMKSlottedBase implements I else {return new Object[] {"Unknown Error"};} } + @Callback(direct = true, limit = 8) + @Optional.Method(modid = "OpenComputers") public Object[] setSteamType(Context context, Arguments args) { int type = args.checkInteger(0); if(type > 3) { 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 5bac96851..8f23e5555 100644 --- a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKControl.java +++ b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKControl.java @@ -126,37 +126,37 @@ public abstract class TileEntityRBMKControl extends TileEntityRBMKSlottedBase im return "rbmk_control_rod"; } - @Callback + @Callback(direct = true, limit = 8) @Optional.Method(modid = "OpenComputers") public Object[] getLevel(Context context, Arguments args) { return new Object[] {getMult() * 100}; } - @Callback + @Callback(direct = true, limit = 8) @Optional.Method(modid = "OpenComputers") public Object[] getTargetLevel(Context context, Arguments args) { return new Object[] {targetLevel * 100}; } - @Callback + @Callback(direct = true, limit = 8) @Optional.Method(modid = "OpenComputers") public Object[] getCoordinates(Context context, Arguments args) { return new Object[] {xCoord, yCoord, zCoord}; } - @Callback + @Callback(direct = true, limit = 8) @Optional.Method(modid = "OpenComputers") public Object[] getHeat(Context context, Arguments args) { return new Object[] {heat}; } - @Callback + @Callback(direct = true, limit = 8) @Optional.Method(modid = "OpenComputers") public Object[] getInfo(Context context, Arguments args) { return new Object[] {heat, getMult() * 100, targetLevel * 100, xCoord, yCoord, zCoord}; } - @Callback + @Callback(direct = true, limit = 8) @Optional.Method(modid = "OpenComputers") public Object[] setLevel(Context context, Arguments args) { double newLevel = args.checkDouble(0)/100.0; 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 acb873d22..b82bc546b 100644 --- a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKCooler.java +++ b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKCooler.java @@ -149,31 +149,31 @@ public class TileEntityRBMKCooler extends TileEntityRBMKBase implements IFluidAc return "rbmk_cooler"; } - @Callback + @Callback(direct = true, limit = 4) @Optional.Method(modid = "OpenComputers") public Object[] getHeat(Context context, Arguments args) { return new Object[]{heat}; } - @Callback + @Callback(direct = true, limit = 4) @Optional.Method(modid = "OpenComputers") public Object[] getCryo(Context context, Arguments args) { return new Object[]{tank.getFill()}; } - @Callback + @Callback(direct = true, limit = 4) @Optional.Method(modid = "OpenComputers") public Object[] getCryoMax(Context context, Arguments args) { return new Object[]{tank.getMaxFill()}; } - @Callback + @Callback(direct = true, limit = 4) @Optional.Method(modid = "OpenComputers") public Object[] getCoordinates(Context context, Arguments args) { return new Object[] {xCoord, yCoord, zCoord}; } - @Callback + @Callback(direct = true, limit = 4) @Optional.Method(modid = "OpenComputers") public Object[] getInfo(Context context, Arguments args) { return new Object[]{heat, tank.getFill(), tank.getMaxFill(), xCoord, yCoord, zCoord}; 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 6894070e4..3ddb02d04 100644 --- a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKHeater.java +++ b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKHeater.java @@ -280,54 +280,54 @@ public class TileEntityRBMKHeater extends TileEntityRBMKSlottedBase implements I return "rbmk_heater"; } - @Callback + @Callback(direct = true, limit = 4) @Optional.Method(modid = "OpenComputers") public Object[] getHeat(Context context, Arguments args) { return new Object[] {heat}; } - @Callback + @Callback(direct = true, limit = 4) @Optional.Method(modid = "OpenComputers") public Object[] getFill(Context context, Arguments args) { return new Object[] {feed.getFill()}; } - @Callback + @Callback(direct = true, limit = 4) @Optional.Method(modid = "OpenComputers") public Object[] getFillMax(Context context, Arguments args) { return new Object[] {feed.getMaxFill()}; } - @Callback + @Callback(direct = true, limit = 4) @Optional.Method(modid = "OpenComputers") public Object[] getExport(Context context, Arguments args) { return new Object[] {steam.getFill()}; } - @Callback + @Callback(direct = true, limit = 4) @Optional.Method(modid = "OpenComputers") public Object[] getExportMax(Context context, Arguments args) { return new Object[] {steam.getMaxFill()}; } - @Callback + @Callback(direct = true, limit = 4) @Optional.Method(modid = "OpenComputers") public Object[] getFillType(Context context, Arguments args) { return new Object[] {feed.getTankType().getID()}; } - @Callback + @Callback(direct = true, limit = 4) @Optional.Method(modid = "OpenComputers") public Object[] getExportType(Context context, Arguments args) { return new Object[] {steam.getTankType().getID()}; } - @Callback + @Callback(direct = true, limit = 4) @Optional.Method(modid = "OpenComputers") public Object[] getInfo(Context context, Arguments args) { return new Object[] {heat, feed.getFill(), feed.getMaxFill(), steam.getFill(), steam.getMaxFill(), feed.getTankType().getID(), steam.getTankType().getID(), xCoord, yCoord, zCoord}; } - @Callback + @Callback(direct = true, limit = 4) @Optional.Method(modid = "OpenComputers") public Object[] getCoordinates(Context context, Arguments args) { return new Object[] {xCoord, yCoord, zCoord}; 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 57f27f45d..bbb5ff2e0 100644 --- a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKOutgasser.java +++ b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKOutgasser.java @@ -226,31 +226,31 @@ public class TileEntityRBMKOutgasser extends TileEntityRBMKSlottedBase implement return "rbmk_outgasser"; } - @Callback + @Callback(direct = true, limit = 4) @Optional.Method(modid = "OpenComputers") public Object[] getGas(Context context, Arguments args) { return new Object[] {gas.getFill()}; } - @Callback + @Callback(direct = true, limit = 4) @Optional.Method(modid = "OpenComputers") public Object[] getGasMax(Context context, Arguments args) { return new Object[] {gas.getMaxFill()}; } - @Callback + @Callback(direct = true, limit = 4) @Optional.Method(modid = "OpenComputers") public Object[] getProgress(Context context, Arguments args) { return new Object[] {progress}; } - @Callback + @Callback(direct = true, limit = 4) @Optional.Method(modid = "OpenComputers") public Object[] getCoordinates(Context context, Arguments args) { return new Object[] {xCoord, yCoord, zCoord}; } - @Callback + @Callback(direct = true, limit = 4) @Optional.Method(modid = "OpenComputers") public Object[] getInfo(Context context, Arguments args) { return new Object[] {gas.getFill(), gas.getMaxFill(), progress, xCoord, yCoord, zCoord}; 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 7a7602d2f..91ab94a89 100644 --- a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKReflector.java +++ b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKReflector.java @@ -27,13 +27,13 @@ public class TileEntityRBMKReflector extends TileEntityRBMKBase implements Simpl return "rbmk_reflector_rod"; } - @Callback + @Callback(direct = true, limit = 4) @Optional.Method(modid = "OpenComputers") public Object[] getHeat(Context context, Arguments args) { return new Object[] {heat}; } - @Callback + @Callback(direct = true, limit = 4) @Optional.Method(modid = "OpenComputers") public Object[] getCoordinates(Context context, Arguments args) { return new Object[] {xCoord, yCoord, zCoord}; 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 042516c05..7c161a15e 100644 --- a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKRod.java +++ b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKRod.java @@ -384,25 +384,25 @@ public class TileEntityRBMKRod extends TileEntityRBMKSlottedBase implements IRBM return "rbmk_fuel_rod"; } - @Callback + @Callback(direct = true, limit = 8) @Optional.Method(modid = "OpenComputers") public Object[] getHeat(Context context, Arguments args) { return new Object[] {heat}; } - @Callback + @Callback(direct = true, limit = 8) @Optional.Method(modid = "OpenComputers") public Object[] getFluxSlow(Context context, Arguments args) { return new Object[] {fluxSlow}; } - @Callback + @Callback(direct = true, limit = 8) @Optional.Method(modid = "OpenComputers") public Object[] getFluxFast(Context context, Arguments args) { return new Object[] {fluxFast}; } - @Callback + @Callback(direct = true, limit = 8) @Optional.Method(modid = "OpenComputers") public Object[] getDepletion(Context context, Arguments args) { if(slots[0] != null && slots[0].getItem() instanceof ItemRBMKRod) { @@ -410,17 +410,8 @@ public class TileEntityRBMKRod extends TileEntityRBMKSlottedBase implements IRBM } return new Object[] {"N/A"}; } - - @Callback - @Optional.Method(modid = "OpenComputers") - public Object[] getFuelType(Context context, Arguments args) { - if(slots[0] != null && slots[0].getItem() instanceof ItemRBMKRod) { - return new Object[] {rod.getName()}; - } - return new Object[] {"N/A"}; - } - @Callback + @Callback(direct = true, limit = 8) @Optional.Method(modid = "OpenComputers") public Object[] getXenonPoison(Context context, Arguments args) { if(slots[0] != null && slots[0].getItem() instanceof ItemRBMKRod) { @@ -429,7 +420,7 @@ public class TileEntityRBMKRod extends TileEntityRBMKSlottedBase implements IRBM return new Object[] {"N/A"}; } - @Callback + @Callback(direct = true, limit = 8) @Optional.Method(modid = "OpenComputers") public Object[] getCoreHeat(Context context, Arguments args) { if(slots[0] != null && slots[0].getItem() instanceof ItemRBMKRod) { @@ -438,7 +429,7 @@ public class TileEntityRBMKRod extends TileEntityRBMKSlottedBase implements IRBM return new Object[] {"N/A"}; } - @Callback + @Callback(direct = true, limit = 8) @Optional.Method(modid = "OpenComputers") public Object[] getSkinHeat(Context context, Arguments args) { if(slots[0] != null && slots[0].getItem() instanceof ItemRBMKRod) { @@ -447,31 +438,28 @@ public class TileEntityRBMKRod extends TileEntityRBMKSlottedBase implements IRBM return new Object[] {"N/A"}; } - @Callback + @Callback(direct = true, limit = 8) @Optional.Method(modid = "OpenComputers") public Object[] getInfo(Context context, Arguments args) { Object OC_enrich_buf; Object OC_poison_buf; - Object OC_fuelType; if(slots[0] != null && slots[0].getItem() instanceof ItemRBMKRod) { OC_enrich_buf = ItemRBMKRod.getEnrichment(slots[0]); OC_poison_buf = ItemRBMKRod.getPoison(slots[0]); - OC_fuelType = rod.getName(); } else { OC_enrich_buf = "N/A"; OC_poison_buf = "N/A"; - OC_fuelType = "N/A"; } return new Object[] {heat, fluxSlow, fluxFast, OC_enrich_buf, OC_poison_buf, ((RBMKRod)this.getBlockType()).moderated, xCoord, yCoord, zCoord}; } - @Callback + @Callback(direct = true, limit = 8) @Optional.Method(modid = "OpenComputers") public Object[] getModerated(Context context, Arguments args) { return new Object[] {((RBMKRod)this.getBlockType()).moderated}; } - @Callback + @Callback(direct = true, limit = 8) @Optional.Method(modid = "OpenComputers") public Object[] getCoordinates(Context context, Arguments args) { return new Object[] {xCoord, yCoord, zCoord}; 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 538b4a795..11fba927a 100644 --- a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKStorage.java +++ b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKStorage.java @@ -95,26 +95,26 @@ public class TileEntityRBMKStorage extends TileEntityRBMKSlottedBase implements public String getComponentName() { return "rbmk_storage_rod"; } - @Callback + @Callback(direct = true, limit = 4) @Optional.Method(modid = "OpenComputers") public Object[] getCoordinates(Context context, Arguments args) { return new Object[] {xCoord, yCoord, zCoord}; } - @Callback + @Callback(direct = true, limit = 4) @Optional.Method(modid = "OpenComputers") public Object[] getHeat(Context context, Arguments args) { return new Object[] {heat}; } - @Callback + @Callback(direct = true, limit = 4) @Optional.Method(modid = "OpenComputers") public Object[] getStored(Context context, Arguments args) { return new Object[] {slots[0], slots[1], slots[2], slots[3], slots[4], slots[5], slots[6], slots[7], slots[8], slots[9], slots[10], slots[11]}; } - @Callback + @Callback(direct = true, limit = 4) @Optional.Method(modid = "OpenComputers") public Object[] getInfo(Context context, Arguments args) { return new Object[] {heat, slots[0], slots[1], slots[2], slots[3], slots[4], slots[5], slots[6], slots[7], slots[8], slots[9], slots[10], slots[11], xCoord, yCoord, zCoord}; diff --git a/src/main/resources/assets/hbm/textures/items/rbmk_component_card.png b/src/main/resources/assets/hbm/textures/items/rbmk_component_card.png deleted file mode 100644 index 4755e80f376f1746c3ff7c33e6238c3c02e38d42..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 549 zcmV+=0^0qFP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D0lG;G)+wt(koJI{28joDpD{)(LpJqMWF>jC#!?df}5jID8Z$4adZ|OoCFJE z2M6P#o7!MRXf@I(9tbsm-dygFH^)}FqibI{9NzDo_xa%a*dcoNwc>Zrmi;e@ty@FJ zX7dm;!1kbvv)n(AUG+**sWg4PamGhZlG{JR{M9=m`29~ZA`#MHXs^NAqRZX9!hNBb zPAWGQf9b)%jC+kwPfQ?71!g=~l zWDdls?MZTMe1eHnH>oUdiXQ{P5TcUdeve!_*zn_uW`qFSTD-1!aHYnL3xi~8Z*=YB nl1t&VqPXy#xm;D(c7)(Jobs3VHtBC600000NkvXXu0mjf*9r9o From 5644726060b1897a28350174efcdd47f43aca527 Mon Sep 17 00:00:00 2001 From: Boblet Date: Tue, 25 Apr 2023 14:50:42 +0200 Subject: [PATCH 09/40] coker recipes --- .../com/hbm/handler/nei/CokingHandler.java | 16 +++ .../java/com/hbm/inventory/fluid/Fluids.java | 15 +- .../hbm/inventory/recipes/CokerRecipes.java | 131 ++++++++++++++++++ .../recipes/SolidificationRecipes.java | 6 +- .../recipes/loader/SerializableRecipe.java | 1 + src/main/java/com/hbm/main/NEIConfig.java | 1 + .../machine/oil/TileEntityMachineCoker.java | 2 +- src/main/resources/assets/hbm/lang/de_DE.lang | 3 + src/main/resources/assets/hbm/lang/en_US.lang | 3 + .../hbm/textures/gui/fluids/gas_coker.png | Bin 0 -> 558 bytes .../hbm/textures/gui/fluids/naphtha_coker.png | Bin 0 -> 554 bytes .../hbm/textures/gui/fluids/oil_coker.png | Bin 0 -> 530 bytes 12 files changed, 173 insertions(+), 5 deletions(-) create mode 100644 src/main/java/com/hbm/handler/nei/CokingHandler.java create mode 100644 src/main/java/com/hbm/inventory/recipes/CokerRecipes.java create mode 100644 src/main/resources/assets/hbm/textures/gui/fluids/gas_coker.png create mode 100644 src/main/resources/assets/hbm/textures/gui/fluids/naphtha_coker.png create mode 100644 src/main/resources/assets/hbm/textures/gui/fluids/oil_coker.png diff --git a/src/main/java/com/hbm/handler/nei/CokingHandler.java b/src/main/java/com/hbm/handler/nei/CokingHandler.java new file mode 100644 index 000000000..da3cb101d --- /dev/null +++ b/src/main/java/com/hbm/handler/nei/CokingHandler.java @@ -0,0 +1,16 @@ +package com.hbm.handler.nei; + +import com.hbm.blocks.ModBlocks; +import com.hbm.inventory.recipes.CokerRecipes; + +public class CokingHandler extends NEIUniversalHandler { + + public CokingHandler() { + super("Coking", ModBlocks.machine_coker, CokerRecipes.getRecipes()); + } + + @Override + public String getKey() { + return "ntmCoking"; + } +} diff --git a/src/main/java/com/hbm/inventory/fluid/Fluids.java b/src/main/java/com/hbm/inventory/fluid/Fluids.java index d8666118d..2ed87dda4 100644 --- a/src/main/java/com/hbm/inventory/fluid/Fluids.java +++ b/src/main/java/com/hbm/inventory/fluid/Fluids.java @@ -123,6 +123,9 @@ public class Fluids { public static FluidType PHOSGENE; public static FluidType MUSTARDGAS; public static FluidType IONGEL; + public static FluidType OIL_COKER; //heavy fractions from coking, mostly bitumen + public static FluidType NAPHTHA_COKER; //medium fractions from coking, aromatics and fuel oil + public static FluidType GAS_COKER; //light fractions from coking, natgas and co2 private static final HashMap idMapping = new HashMap(); private static final HashMap nameMapping = new HashMap(); @@ -257,7 +260,10 @@ public class Fluids { COLLOID = new FluidType("COLLOID", 0x787878, 0, 0, 0, EnumSymbol.NONE).addTraits(LIQUID, VISCOUS); PHOSGENE = new FluidType("PHOSGENE", 0xCFC4A4, 4, 0, 1, EnumSymbol.NONE).addContainers(new CD_Gastank(0xCFC4A4, 0x361414)).addTraits(GASEOUS); MUSTARDGAS = new FluidType("MUSTARDGAS", 0xBAB572, 4, 1, 1, EnumSymbol.NONE).addContainers(new CD_Gastank(0xBAB572, 0x361414)).addTraits(GASEOUS); - IONGEL = new FluidType(103, "IONGEL", 0xB8FFFF, 1, 0, 4, EnumSymbol.NONE).addTraits(LIQUID, VISCOUS); + IONGEL = new FluidType("IONGEL", 0xB8FFFF, 1, 0, 4, EnumSymbol.NONE).addTraits(LIQUID, VISCOUS); + OIL_COKER = new FluidType("OIL_COKER", 0x001802, 2, 1, 0, EnumSymbol.NONE).addTraits(LIQUID, VISCOUS); + NAPHTHA_COKER = new FluidType("NAPHTHA_COKER", 0x495944, 2, 1, 0, EnumSymbol.NONE).addTraits(LIQUID, VISCOUS); + GAS_COKER = new FluidType(106, "GAS_COKER", 0xDEF4CA, 1, 4, 0, EnumSymbol.NONE).addTraits(GASEOUS); // ^ ^ ^ ^ ^ ^ ^ ^ //ADD NEW FLUIDS HERE @@ -298,12 +304,14 @@ public class Fluids { metaOrder.add(OIL); metaOrder.add(CRACKOIL); metaOrder.add(COALOIL); + metaOrder.add(OIL_COKER); metaOrder.add(HOTOIL); metaOrder.add(HOTCRACKOIL); metaOrder.add(HEAVYOIL); metaOrder.add(HEAVYOIL_VACUUM); metaOrder.add(NAPHTHA); metaOrder.add(NAPHTHA_CRACK); + metaOrder.add(NAPHTHA_COKER); metaOrder.add(REFORMATE); metaOrder.add(LIGHTOIL); metaOrder.add(LIGHTOIL_CRACK); @@ -315,6 +323,7 @@ public class Fluids { metaOrder.add(RECLAIMED); metaOrder.add(LUBRICANT); metaOrder.add(GAS); + metaOrder.add(GAS_COKER); metaOrder.add(PETROLEUM); metaOrder.add(SOURGAS); metaOrder.add(LPG); @@ -437,6 +446,7 @@ public class Fluids { double complexityRefinery = 1.1D; double complexityFraction = 1.05D; double complexityCracking = 1.25D; + double complexityCoker = 1.25D; double complexityChemplant = 1.1D; double complexityLubed = 1.15D; double complexityLeaded = 1.5D; @@ -449,7 +459,9 @@ public class Fluids { /// the allmighty excel spreadsheet has spoken! /// registerCalculatedFuel(OIL, (baseline / 1D * flammabilityLow * demandLow), 0, null); registerCalculatedFuel(CRACKOIL, (baseline / 1D * flammabilityLow * demandLow * complexityCracking), 0, null); + registerCalculatedFuel(OIL_COKER, (baseline / 1D * flammabilityLow * demandLow * complexityCoker), 0, null); registerCalculatedFuel(GAS, (baseline / 1D * flammabilityNormal * demandVeryLow), 1.25, FuelGrade.GAS); + registerCalculatedFuel(GAS_COKER, (baseline / 1D * flammabilityNormal * demandVeryLow * complexityCoker), 1.25, FuelGrade.GAS); registerCalculatedFuel(HEAVYOIL, (baseline / 0.5 * flammabilityLow * demandLow * complexityRefinery), 1.25D, FuelGrade.LOW); registerCalculatedFuel(SMEAR, (baseline / 0.35 * flammabilityLow * demandLow * complexityRefinery * complexityFraction), 1.25D, FuelGrade.LOW); registerCalculatedFuel(RECLAIMED, (baseline / 0.28 * flammabilityLow * demandLow * complexityRefinery * complexityFraction * complexityChemplant), 1.25D, FuelGrade.LOW); @@ -458,6 +470,7 @@ public class Fluids { registerCalculatedFuel(HEATINGOIL, (baseline / 0.31 * flammabilityNormal * demandLow * complexityRefinery * complexityFraction * complexityFraction), 1.25D, FuelGrade.LOW); registerCalculatedFuel(NAPHTHA, (baseline / 0.25 * flammabilityLow * demandLow * complexityRefinery), 1.5D, FuelGrade.MEDIUM); registerCalculatedFuel(NAPHTHA_CRACK, (baseline / 0.40 * flammabilityLow * demandLow * complexityRefinery * complexityCracking), 1.5D, FuelGrade.MEDIUM); + registerCalculatedFuel(NAPHTHA_COKER, (baseline / 0.25 * flammabilityLow * demandLow * complexityCoker), 1.5D, FuelGrade.MEDIUM); registerCalculatedFuel(GASOLINE, (baseline / 0.20 * flammabilityNormal * demandLow * complexityRefinery * complexityChemplant), 2.5D, FuelGrade.HIGH); registerCalculatedFuel(GASOLINE_LEADED, (baseline / 0.20 * flammabilityNormal * demandLow * complexityRefinery * complexityChemplant * complexityLeaded), 2.5D, FuelGrade.HIGH); registerCalculatedFuel(DIESEL, (baseline / 0.21 * flammabilityNormal * demandLow * complexityRefinery * complexityFraction), 2.5D, FuelGrade.HIGH); diff --git a/src/main/java/com/hbm/inventory/recipes/CokerRecipes.java b/src/main/java/com/hbm/inventory/recipes/CokerRecipes.java new file mode 100644 index 000000000..f60ab5044 --- /dev/null +++ b/src/main/java/com/hbm/inventory/recipes/CokerRecipes.java @@ -0,0 +1,131 @@ +package com.hbm.inventory.recipes; + +import static com.hbm.inventory.fluid.Fluids.*; + +import java.io.IOException; +import java.util.HashMap; +import java.util.Map.Entry; + +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.OreDictManager.DictFrame; +import com.hbm.inventory.fluid.FluidType; +import com.hbm.inventory.fluid.Fluids; +import com.hbm.inventory.fluid.trait.FT_Combustible; +import com.hbm.inventory.fluid.trait.FT_Flammable; +import com.hbm.inventory.recipes.loader.SerializableRecipe; +import com.hbm.items.ModItems; +import com.hbm.items.ItemEnums.EnumCokeType; +import com.hbm.items.machine.ItemFluidIcon; +import com.hbm.util.Tuple.Triplet; + +import net.minecraft.item.ItemStack; + +public class CokerRecipes extends SerializableRecipe { + + private static HashMap> recipes = new HashMap(); + + @Override + public void registerDefaults() { + + registerAuto(HEAVYOIL, new FluidStack(Fluids.OIL_COKER, 20)); + registerAuto(HEAVYOIL_VACUUM, new FluidStack(Fluids.REFORMATE, 20)); + registerAuto(COALCREOSOTE, new FluidStack(Fluids.NAPHTHA_COKER, 20)); + registerAuto(WOODOIL, new FluidStack(Fluids.NAPHTHA_COKER, 20)); + registerAuto(SMEAR, new FluidStack(Fluids.OIL_COKER, 20)); + registerAuto(HEATINGOIL, new FluidStack(Fluids.OIL_COKER, 20)); + registerAuto(HEATINGOIL_VACUUM, new FluidStack(Fluids.OIL_COKER, 20)); + registerAuto(RECLAIMED, new FluidStack(Fluids.NAPHTHA_COKER, 20)); + registerAuto(NAPHTHA, new FluidStack(Fluids.NAPHTHA_COKER, 20)); + registerAuto(NAPHTHA_CRACK, new FluidStack(Fluids.NAPHTHA_COKER, 20)); + registerAuto(DIESEL, new FluidStack(Fluids.NAPHTHA_COKER, 20)); + registerAuto(DIESEL_REFORM, new FluidStack(Fluids.NAPHTHA_COKER, 20)); + registerAuto(DIESEL_CRACK, new FluidStack(Fluids.GAS_COKER, 20)); + registerAuto(DIESEL_CRACK_REFORM, new FluidStack(Fluids.GAS_COKER, 20)); + registerAuto(LIGHTOIL, new FluidStack(Fluids.GAS_COKER, 20)); + registerAuto(LIGHTOIL_CRACK, new FluidStack(Fluids.GAS_COKER, 20)); + registerAuto(LIGHTOIL_VACUUM, new FluidStack(Fluids.GAS_COKER, 20)); + registerAuto(BIOFUEL, new FluidStack(Fluids.GAS_COKER, 20)); + registerAuto(AROMATICS, new FluidStack(Fluids.GAS_COKER, 20)); + registerAuto(REFORMATE, new FluidStack(Fluids.GAS_COKER, 20)); + registerAuto(XYLENE, new FluidStack(Fluids.GAS_COKER, 20)); + } + + private static void registerAuto(FluidType fluid, FluidStack byproduct) { + registerSFAuto(fluid, 800_000L, DictFrame.fromOne(ModItems.coke, EnumCokeType.PETROLEUM), byproduct); //3200 burntime * 1.25 burntime bonus * 200 TU/t + } + private static void registerSFAuto(FluidType fluid, long tuPerSF, ItemStack fuel, FluidStack byproduct) { + long tuFlammable = fluid.hasTrait(FT_Flammable.class) ? fluid.getTrait(FT_Flammable.class).getHeatEnergy() : 0; + long tuCombustible = fluid.hasTrait(FT_Combustible.class) ? fluid.getTrait(FT_Combustible.class).getCombustionEnergy() : 0; + + long tuPerBucket = Math.max(tuFlammable, tuCombustible); + + double penalty = 1.1D; + + int mB = (int) (tuPerSF * 1000L * penalty / tuPerBucket); + + if(mB > 10_000) mB -= (mB % 1000); + else if(mB > 1_000) mB -= (mB % 100); + else if(mB > 100) mB -= (mB % 10); + + registerRecipe(fluid, mB, fuel, byproduct); + } + private static void registerRecipe(FluidType type, int quantity, ItemStack output, FluidStack byproduct) { + recipes.put(type, new Triplet(quantity, output, byproduct)); + } + + public static HashMap getRecipes() { + + HashMap recipes = new HashMap(); + + for(Entry> entry : CokerRecipes.recipes.entrySet()) { + + FluidType type = entry.getKey(); + int amount = entry.getValue().getX(); + ItemStack out = entry.getValue().getY().copy(); + FluidStack byproduct = entry.getValue().getZ(); + + recipes.put(ItemFluidIcon.make(type, amount), new ItemStack[] {out, ItemFluidIcon.make(byproduct)}); + } + + return recipes; + } + + @Override + public String getFileName() { + return "hbmCoker.json"; + } + + @Override + public Object getRecipeObject() { + return recipes; + } + + @Override + public void deleteRecipes() { + recipes.clear(); + } + + @Override + public void readRecipe(JsonElement recipe) { + JsonObject obj = (JsonObject) recipe; + FluidStack in = this.readFluidStack(obj.get("input").getAsJsonArray()); + ItemStack out = this.readItemStack(obj.get("output").getAsJsonArray()); + FluidStack byproduct = this.readFluidStack(obj.get("byproduct").getAsJsonArray()); + recipes.put(in.type, new Triplet(in.fill, out, byproduct)); + } + + @Override + public void writeRecipe(Object recipe, JsonWriter writer) throws IOException { + Entry> rec = (Entry>) recipe; + FluidStack in = new FluidStack(rec.getKey(), rec.getValue().getX()); + writer.name("input"); + this.writeFluidStack(in, writer); + writer.name("output"); + this.writeItemStack(rec.getValue().getY(), writer); + writer.name("byproduct"); + this.writeFluidStack(rec.getValue().getZ(), writer); + } +} diff --git a/src/main/java/com/hbm/inventory/recipes/SolidificationRecipes.java b/src/main/java/com/hbm/inventory/recipes/SolidificationRecipes.java index 91940bef6..4288e9022 100644 --- a/src/main/java/com/hbm/inventory/recipes/SolidificationRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/SolidificationRecipes.java @@ -94,13 +94,13 @@ public class SolidificationRecipes extends SerializableRecipe { registerSFAuto(LIGHTOIL_CRACK); registerSFAuto(LIGHTOIL_VACUUM); registerSFAuto(KEROSENE); - registerSFAuto(GAS); + //registerSFAuto(GAS); registerSFAuto(SOURGAS); registerSFAuto(REFORMGAS); registerSFAuto(SYNGAS); registerSFAuto(PETROLEUM); registerSFAuto(LPG); - registerSFAuto(BIOGAS); + //registerSFAuto(BIOGAS); registerSFAuto(BIOFUEL); registerSFAuto(AROMATICS); registerSFAuto(UNSATURATEDS); @@ -111,7 +111,7 @@ public class SolidificationRecipes extends SerializableRecipe { } private static void registerSFAuto(FluidType fluid) { - registerSFAuto(fluid, 144000L, ModItems.solid_fuel); //3200 burntime * 1.5 burntime bonus * 300 TU/t + 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(); 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 dd64e10ca..92e378ef2 100644 --- a/src/main/java/com/hbm/inventory/recipes/loader/SerializableRecipe.java +++ b/src/main/java/com/hbm/inventory/recipes/loader/SerializableRecipe.java @@ -53,6 +53,7 @@ public abstract class SerializableRecipe { recipeHandlers.add(new ReformingRecipes()); recipeHandlers.add(new LiquefactionRecipes()); recipeHandlers.add(new SolidificationRecipes()); + recipeHandlers.add(new CokerRecipes()); recipeHandlers.add(new BreederRecipes()); recipeHandlers.add(new CyclotronRecipes()); recipeHandlers.add(new HadronRecipes()); diff --git a/src/main/java/com/hbm/main/NEIConfig.java b/src/main/java/com/hbm/main/NEIConfig.java index bbfea592a..03221742b 100644 --- a/src/main/java/com/hbm/main/NEIConfig.java +++ b/src/main/java/com/hbm/main/NEIConfig.java @@ -63,6 +63,7 @@ public class NEIConfig implements IConfigureNEI { } registerHandler(new LiquefactionHandler()); registerHandler(new SolidificationHandler()); + registerHandler(new CokingHandler()); registerHandler(new FractioningHandler()); registerHandler(new BoilingHandler()); registerHandler(new CombinationHandler()); 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 00d05c2ff..e4c2b0612 100644 --- a/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineCoker.java +++ b/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineCoker.java @@ -20,7 +20,7 @@ public class TileEntityMachineCoker extends TileEntityMachineBase implements IFl public FluidTank[] tanks; public TileEntityMachineCoker() { - super(1); + super(2); tanks = new FluidTank[2]; tanks[0] = new FluidTank(Fluids.HEAVYOIL, 16_000); tanks[1] = new FluidTank(Fluids.GAS, 8_000); diff --git a/src/main/resources/assets/hbm/lang/de_DE.lang b/src/main/resources/assets/hbm/lang/de_DE.lang index eb0dbc7e7..5d91c1250 100644 --- a/src/main/resources/assets/hbm/lang/de_DE.lang +++ b/src/main/resources/assets/hbm/lang/de_DE.lang @@ -620,6 +620,7 @@ hbmfluid.ethanol=Ethanol hbmfluid.enderjuice=Endersaft hbmfluid.fracksol=Frackinglösung hbmfluid.gas=Erdgas +hbmfluid.gas_coker=Coker-Gas hbmfluid.gasoline=Benzin hbmfluid.gasoline_leaded=Bleibenzin hbmfluid.heatingoil=Heizöl @@ -646,11 +647,13 @@ hbmfluid.mug=Mug Root Beer hbmfluid.mug_hot=Heißes Mug Root Beer hbmfluid.mustardgas=Senfgas hbmfluid.naphtha=Mitteldestillat +hbmfluid.naphtha_coker=Coker-Naphtha hbmfluid.naphtha_crack=Crack-Mitteldestillat hbmfluid.nitan=NITAN© 100 Oktan Supertreibstoff hbmfluid.nitric_acid=Salpetersäure hbmfluid.none=Nichts hbmfluid.oil=Rohöl +hbmfluid.oil_coker=Coker-Öl hbmfluid.oxyhydrogen=Knallgas hbmfluid.oxygen=Flüssiger Sauerstoff hbmfluid.pain=Pandemonium(III)tantalit-Lösung diff --git a/src/main/resources/assets/hbm/lang/en_US.lang b/src/main/resources/assets/hbm/lang/en_US.lang index 97050a4fb..b88c0bde6 100644 --- a/src/main/resources/assets/hbm/lang/en_US.lang +++ b/src/main/resources/assets/hbm/lang/en_US.lang @@ -1189,6 +1189,7 @@ hbmfluid.ethanol=Ethanol hbmfluid.enderjuice=Ender Juice hbmfluid.fracksol=Fracking Solution hbmfluid.gas=Natural Gas +hbmfluid.gas_coker=Coker Gas hbmfluid.gasoline=Gasoline hbmfluid.gasoline_leaded=Leaded Gasoline hbmfluid.heatingoil=Heating Oil @@ -1215,11 +1216,13 @@ hbmfluid.mug=Mug Root Beer hbmfluid.mug_hot=Hot Mug Root Beer hbmfluid.mustardgas=Mustard Gas hbmfluid.naphtha=Naphtha +hbmfluid.naphtha_coker=Coker Naphtha hbmfluid.naphtha_crack=Cracked Naphtha hbmfluid.nitan=NITAN© 100 Octane Super Fuel hbmfluid.nitric_acid=Nitric Acid hbmfluid.none=None hbmfluid.oil=Crude Oil +hbmfluid.oil_coker=Coker Oil hbmfluid.oxygen=Liquid Oxygen hbmfluid.oxyhydrogen=Oxyhydrogen hbmfluid.pain=Pandemonium(III)tantalite Solution diff --git a/src/main/resources/assets/hbm/textures/gui/fluids/gas_coker.png b/src/main/resources/assets/hbm/textures/gui/fluids/gas_coker.png new file mode 100644 index 0000000000000000000000000000000000000000..8c2466512e5e969e2cef3060f9e6548e0c667a12 GIT binary patch literal 558 zcmV+}0@3}6P)6*HDy0IR0g!X1>pEmv z7Mycjuh(|#zVFmpNhu*Bgb?uFlTvDrs@^P!2i*Ijlgb-Mk z1wW2s0~SJPgE2-_6*K$B#LO6mfv)SQwIU+IaU7^Bs!FXD=Nu^|%#3~Cn{P7%XzQyg z{)BfPRb}`&5Myk~c<)=30JT;^2$&iEr2D^({c9)Z+!!3k(K--gY?}bc<#NG$PmGaq z99xNEj4cK4J>zA>%$TN$X_^`fpHgb;hzP1m&Kc)i<6>q^9}^D`511J_XZC%+Z6G4l zS~-q`uIri=Gvj)H1!%+X@9(_4ywG*szbZTDny-`kaerBz%~ zN|aL0Oi@){KVBQ{Ge+keXYEy$lb!T^&$_OJ5Ze2!^}g?j2=hF%t}ENN;he+FsI}fi wPnGlM0hs5R&(F_q%?u$BLTHRiDToMv0oOM@NXUPK?*IS*07*qoM6N<$g6dNL0RR91 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/gui/fluids/naphtha_coker.png b/src/main/resources/assets/hbm/textures/gui/fluids/naphtha_coker.png new file mode 100644 index 0000000000000000000000000000000000000000..a95110b3aae8f043cd4c27394a848956e63d06b3 GIT binary patch literal 554 zcmV+_0@eMAP)dkyY|34ui%m^Vo&Qz7w8vDKj5MyLr zS3(G=D%-Z9s!Y?w)6*0CzSCO6IfsbgODRKXnkI72q?8CD(0k_+IF17V=Ntf~6k?3X zwrx1)xZQ5!)mkgPcXG~%2q6T#_vD<%R@H|E5gBbA$1#f6bwyPXk%yAVu=x4;NeF>$ z+wjY>3}7LIQJ7LfRWY+4Ow5dVo{2Hidq+fs^E^>iRF&R4&N*_IR!;oHmrM*FIY zzu;Xdu4qm)9e_0fTd(0k`R zPhyP2ikWe{-2g`M*Vh;C@9)GI|3=w4H+)^xUteE&dwb)0e4gi#fl>;swGna2In!FZ zW{Rrv@$oTeUt@I6am8L$x!B1xP3-$l2w{A$Sl3z+5!Q8O-*=AVz&VGR(R+W0UMknm s1F)_u-{0Rqk{LoEgfJMj)({c?1L~|i4W27vq5uE@07*qoM6N<$g4aa?{{R30 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/gui/fluids/oil_coker.png b/src/main/resources/assets/hbm/textures/gui/fluids/oil_coker.png new file mode 100644 index 0000000000000000000000000000000000000000..bac4e60113a60cf590b938cb08b366ded2fba13d GIT binary patch literal 530 zcmV+t0`2{YP)F#da|NnCvW98Tu(i+9;KFIBzAlR|2 z7eA5?yvrSc?r;TWAW8f`WFKn=956uRNJ=S)2(&mTlfvdhnZqd{bLRBzOsR@2nKCI_ zXAZm(8MNVb2UJj1+#OpRbRdP3loGvn+;+;O98m6@!=SYW=HO5k4Pzm`N00<`kR_ZQ zn7LC%^y^q}Se6B^&bDoz<$IKpU?eJFPWJ22^r2U1tzowo zDT{~k=mD*BWHv<-g3(R;kb%vjFH&-w$~?-lzI&P9Wpkc3(*NEmtB zIlsQZ77*PXSu!$b>g$4h&(Vp0cl^2|tR7LFn292M{JaEjcW6#ZiIftz+bs%J3UbVl z`7#S*0=3Shl-NGjfti@T!n4JD@6U!3Jl?3P(L})ZXN7+;RFBRS&7ksRM0XJQ51v-$ UuYr3f)c^nh07*qoM6N<$f Date: Tue, 25 Apr 2023 23:27:54 +0200 Subject: [PATCH 10/40] chinese localization, coker model --- .../java/com/hbm/items/IAnimatedItem.java | 2 +- src/main/resources/assets/hbm/lang/zh_CN.lang | 196 +- .../assets/hbm/models/machines/coker.obj | 3455 +++++++++++++++++ 3 files changed, 3591 insertions(+), 62 deletions(-) create mode 100644 src/main/resources/assets/hbm/models/machines/coker.obj diff --git a/src/main/java/com/hbm/items/IAnimatedItem.java b/src/main/java/com/hbm/items/IAnimatedItem.java index 1457b72a2..e92ffa459 100644 --- a/src/main/java/com/hbm/items/IAnimatedItem.java +++ b/src/main/java/com/hbm/items/IAnimatedItem.java @@ -7,8 +7,8 @@ import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; -@SideOnly(Side.CLIENT) public interface IAnimatedItem { + @SideOnly(Side.CLIENT) public BusAnimation getAnimation(NBTTagCompound data, ItemStack stack); } diff --git a/src/main/resources/assets/hbm/lang/zh_CN.lang b/src/main/resources/assets/hbm/lang/zh_CN.lang index f9c97e3d1..643e529db 100644 --- a/src/main/resources/assets/hbm/lang/zh_CN.lang +++ b/src/main/resources/assets/hbm/lang/zh_CN.lang @@ -72,6 +72,8 @@ achievement.manhattan.desc=1945年8月6日 8:15 achievement.manhattan=曼哈顿计划 achievement.meltdown.desc=你走了这么远,怎么能把事情搞砸? achievement.meltdown=快速非计划拆卸 +achievement.no9.desc=“我希望我开采的铅能被用在你的油漆里” +achievement.no9=旧数字9 achievement.omega12.desc=解决在这个可怜的星球上继续生存的问题 achievement.omega12=欧米茄-12粒子加速器 achievement.polymer.desc=美味、美味的微塑料。 @@ -360,41 +362,6 @@ book_lore.memo_schrab_nuke.author=Schrabauer博士 book_lore.memo_schrab_nuke.page.1=最近的调查使我们了解了核爆炸对材料造成的影响。多亏外界给我们的赠款,我们*意外地*测试了铀直接合成异变金属的理论。 book_lore.memo_schrab_nuke.page.2=而此前我们只在回旋加速器中制作出异变金属。但这次,我们在对Everwerpen的地下拍摄中,在该地点的铀矿石中发现了微量的异变金属。其附近所有的纯金属铀则都发生了裂变。 book_lore.memo_schrab_nuke.page.3=因此,如果有足够多的铀矿石集中在核弹周围,甚至可能只需要一个富含裂变物质废料的脏弹,就有可能制造出质量大到可以被直接收集的异变金属。 -book_lore.insanity_1.name=残缺的纸张 -book_lore.insanity_1.author=D·弗格森 -book_lore.insanity_1.page.1=August 6th $ $ Months, no, years worth of dicking about wrestling with investors and operating the greatest energy hog in the northern hemisphere has finally paid off. -book_lore.insanity_1.page.2=While we aren't entirely sure what exactly we found - given we ran gigavolt collisions on particles that were still poorly documented - the results couldn't have been more exciting. -book_lore.insanity_1.page.3=We haven't found a name for whatever it is we've found, nor are we sure if we're looking at a new type of particle, a wormhole leading into another dimension, or satan's anus, but I'm sure our PR people can come up with something. -book_lore.insanity_2.name=残缺的纸张 -book_lore.insanity_2.author=D·弗格森 -book_lore.insanity_2.page.1=August 8th $ $ We've kept "The Thing" (yes that's what we call it for now) in magnetic isolation for the past days. Spectroscopy tests ended up breaking our spectrometer, but we managed to gain some useful data. -book_lore.insanity_2.page.2=For starters, this thing glows like a christmas tree, radiation photons of about every wavelength you could think of enveloped by a powerful infrared corona. The logical conclusion is that looking at it with your naked -book_lore.insanity_2.page.3=eye would most likely kill you. Now that begs the question: How can a particle this tiny radiate such immense energy? What are you hiding, little man? -book_lore.insanity_3.name=残缺的纸张 -book_lore.insanity_3.author=D·弗格森 -book_lore.insanity_3.page.1=August 22nd $ $ I haven't slept right in days. Doc said he couldn't find anything. Been on all sorts of medication now, but the headaches only get worse. Lab boys suspect it might be contamination from the incident two weeks ago. -book_lore.insanity_3.page.2=Doc said it's not that likely, ARS is different. I might need to take some time off if this continues. The Thing is still in containment, the lab boys speculate if the field goes down, the entire complex turns into a mushroom cloud. -book_lore.insanity_3.page.3=I'm not sure how administration can keep this calm, but i don't get paid enough to waste thoughts on that. -book_lore.insanity_4.name=残缺的纸张 -book_lore.insanity_4.author=D·弗格森 -book_lore.insanity_4.page.1=August 28th $ $ They denied my request for leave and I've been pushing through the past few days. Headaches are getting worse. I'm not the only one who's feeling it, either. Some of the lab boys are in a similar situation. -book_lore.insanity_4.page.2=All the while The Thing has left the complex - GOOD. Some suits came in yesterday and had it shipped off, god knows where. One of the lab boys, Zachary, said they're probably burying the containment vessel in the desert, slowly -book_lore.insanity_4.page.3=trying to "fizzle out" The Thing far off from civilization. I say let's shoot it into space. Needless to say, our investors cut all funding for the time being. I should start looking for another job. -book_lore.insanity_5.name=残缺的纸张 -book_lore.insanity_5.author=D·弗格森 -book_lore.insanity_5.page.1=September 11th $ $ I'm having this re-occurring nightmare. I'm walking around in an open space and there's these people everywhere, people in rubber suits and freakishly deformed faces. It's always the same nightmare, -book_lore.insanity_5.page.2=and one of the guys from the lab I've spoken with lately has had the same dream. Meanwhile my post has been rather boring, the accelerator has been shut down, all ongoing projects are on halt and our budget is slowly melting away. -book_lore.insanity_5.page.3=Something is telling me that The Thing is still out there somewhere. I can feel it. -book_lore.insanity_6.name=残缺的纸张 -book_lore.insanity_6.author=D·弗格森 -book_lore.insanity_6.page.1=October 3rd $ $ Half the staff is dead, most of the rest is in the ICU. My condition hasn't changed in the past weeks, for better or worse. -book_lore.insanity_6.page.2=Reality is starting to feel less and less real however. Sometimes I look up into the sky at night and hallucinate that thing we discovered all those weeks ago. -book_lore.insanity_6.page.3=That same brilliant sheen of crimson that our spectrometer spat out. My doc says it's delirium and stress caused by the incident, and perhaps hes right, but the meds aren't working at all. -book_lore.insanity_7.name=残缺的纸张 -book_lore.insanity_7.author=D·弗格森 -book_lore.insanity_7.page.1=December 12th $ $ I've been out of a job, but to be honest I'm somewhat thankful about it. My old workplace has gone up in flames - or so they say. -book_lore.insanity_7.page.2=The seismological observatory a couple miles south recorded constant earthquakes for days on end, not that anyone else would have noticed this deep in the desert. -book_lore.insanity_7.page.3=I have concluded that this place was cursed, making everyone sick and then descending into hell like some sort of Edgar Allan Poe story. Good riddance. cannery.f1=[按F1键获取帮助] cannery.centrifuge=气体离心机 cannery.centrifuge.0=气体离心机可以使用通用流体管道传输流体。 @@ -447,6 +414,17 @@ cannery.stirling.0=斯特林发动机使用来自外部的热能来产生能量 cannery.stirling.1=它需要放置在发热机器的顶部,如燃烧室。 cannery.stirling.2=然而,它可以利用的热量有限,过旋转可能导致灾难性故障。 cannery.stirling.3=升级版可以在不损坏的情况下承受更多热量。 +cannery.willow=芥子柳 +cannery.willow.0=芥子柳是一种可以富集镉金属的植物。 +cannery.willow.1=芥子柳可以种植在泥土、草地上,甚至是死亡草地或油泥上,但它们需要水才能生长。 +cannery.willow.2=芥子柳可以用骨粉或工业肥料催熟。它们不需要光就可以生长。 +cannery.willow.3=在第二阶段的生长之后,它们将需要在上方有至少一个方块的空间才能进一步生长。 +cannery.willow.4=在生长的第四阶段之后,它们需要下面有死亡草地的或油泥。 +cannery.willow.5=这可以通过在死亡草地或油泥上手动种植芥子柳来实现,也可以通过在附近设置一个不断污染地面的水力压裂塔来实现。 +cannery.willow.6=到达最后阶段后,芥子柳将清除地面上的污染物,使死亡草地或油泥恢复为正常的泥土。 +cannery.willow.7=现在芥子柳的叶子可以收割了。打破顶部的块状物会掉落一株3-6片叶子的小芥子柳,并保持植物底部的完整。 +cannery.willow.8=很快,这种植物就会重新开始生长,如果泥土被油泥取代,就会长出更多的叶子。叶子可以用酸化骑加工成镉粉。 +cannery.willow.9=使用自动锯可以自动收割柳叶,它只会打碎准备收割的植物。 chem.ARSENIC=砷提取 chem.ASPHALT=沥青生产 chem.BAKELITE=电木生产 @@ -506,6 +484,7 @@ chem.NITRIC_ACID=硝酸生产 chem.OIL_SAND=沥青砂提取 chem.OSMIRIDIUM_DEATH=锇酸溶液生产 chem.PEROXIDE=过氧化氢生产 +chem.PET=PET合成 chem.PETROIL_LEADED=含铅石油混合 chem.POLYMER=聚合物合成 chem.PUF6=六氟化钚生产 @@ -533,6 +512,7 @@ chem.SOLID_FUEL=固体火箭燃料生产 chem.SOLVENT=有机溶剂混合 chem.STEAM=烧水 chem.SULFURIC_ACID=硫酸生产 +chem.TATB=TATB合成 chem.TEL=四乙基铅混合 chem.TEST=测试 chem.TNT=TNT合成 @@ -554,11 +534,13 @@ container.barrel=桶 container.bat9000=巨尻-9000 储罐 container.battery=储能 container.bombMulti=多用途炸弹 +container.catalyticReformer=催化重整器 container.centrifuge=离心机 container.chemplant=化工厂 container.compactLauncher=紧凑型发射台 container.craneBoxer=输送带打包机 container.craneExtractor=输送带提取器 +container.craneGrabber=输送带抓斗 container.craneInserter=输送带导入器 container.craneRouter=传送路由器 container.craneUnboxer=输送带解包机 @@ -600,6 +582,7 @@ container.iGenerator=工业发电机 container.keyForge=锁匠桌 container.launchPad=导弹发射台 container.launchTable=大型发射台 +container.leadBox=安全盒 container.machineBoiler=锅炉 container.machineCMB=CMB炼钢炉 container.machineCoal=火力发电机 @@ -687,10 +670,13 @@ container.turretRichard= 火箭炮塔“理查德” container.turretSentry=哨兵炮塔“布朗” container.turretTauon=陶子发射器炮塔“陶恩” container.uf6_tank=六氟化铀储罐 +container.vacuumDistill=真空炼油厂 container.wasteDrum=乏燃料池 container.watzPowerplant=Watz发电厂 container.zirnox=锆诺克斯核反应堆 crucible.aa=高级合金生产 +crucible.cdalloy=镉钢生产 +crucible.cmb=CMB钢生产 crucible.ferro=铀铁合金生产 crucible.hematite=赤铁矿炼铁 crucible.hss=高速钢生产 @@ -825,7 +811,7 @@ 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_warcrime1=* 从技术上讲犯下了战争罪 +desc.item.ammo.neu_warcrime1=* 从技术上来讲触犯了战争罪 desc.item.ammo.neu_warcrime2=* 一发触犯两条战争罪! desc.item.ammo.pro_accurate1=+ 提升精度 desc.item.ammo.pro_accurate2=+ 近乎完美的精度 @@ -892,10 +878,7 @@ desc.item.kitArmor=装甲将被新的装备取代。 desc.item.kitHaz=装甲将被防护服取代。 desc.item.kitPack=真便宜! desc.item.kitPool=请在打开前清空背包库存! -desc.item.pileRod=§e使用钻孔石墨插入$§E使用螺丝刀拔出$ - - - +desc.item.pileRod=§e使用钻孔石墨插入$§E使用螺丝刀拔出$ desc.item.rtgDecay=衰变为:%s desc.item.rtgHeat=功率级别:%s desc.item.storage.capacity=容量 %s%%s @@ -929,6 +912,7 @@ entity.hbm.entity_ntm_ufo.name=火星入侵者飞船 entity.entity_mob_hunter_chopper.name=猎人直升机 entity.entity_mob_mask_man.name=面具人 entity.entity_mob_nuclear_creeper.name=核爆爬行者 +entity.entity_mob_phosgene_creeper.name=光气爬行者 entity.entity_mob_tainted_creeper.name=污染爬行者 entity.entity_taint_crab.name=污染螃蟹 entity.entity_tesla_crab.name=磁暴螃蟹 @@ -978,7 +962,7 @@ gun.make.IMI_BIGMT=以色列军事工业公司/大型MT gun.make.LANGFORD=朗福德研究实验室 gun.make.LUNA=月球防御公司 gun.make.MAGNUM_R_IMI=马格南研究公司 / 以色列军事工业公司 -gun.make.MANN=Open Mann Co. +gun.make.MANN=Open Mann公司 gun.make.MAXIM=海勒姆·马克沁 gun.make.METRO=地铁枪手 gun.make.MWT=MWT原型实验室 @@ -1033,11 +1017,11 @@ gun.name.lacunae=Auntie Lacunae gun.name.lasetDet=霍普维尔激光雷管 gun.name.lunaAR=1986 Bishamonten式突击步枪 gun.name.lunaGun=1978 Rāhula type Standard Issue Sidearm (Revision 2) -gun.name.lunaHLR=1944 Chang'e type Light Machine Gun -gun.name.lunaShotty=1978 Guan Yu type Scattergun (Revision 1) +gun.name.lunaHLR=1944嫦娥式轻机枪 +gun.name.lunaShotty=1978年关羽式散弹枪(第1次修订) gun.name.lunaSMG=1956 ānanda type Submachine Gun -gun.name.lunaSniper=1915 Hou Yi type Anti-Material Rifle -gun.name.lunaTWR=Time Warp Rifle +gun.name.lunaSniper=1915后羿式反器材步枪 +gun.name.lunaTWR=时间扭曲步枪 gun.name.m2=M2式勃朗宁大口径重机枪 gun.name.m42=M-42战术核弹发射器 gun.name.m42MIRV=M-42实验MIRV @@ -1067,7 +1051,7 @@ gun.name.uacDMR=UAC-30 Designated Marksman Rifle gun.name.uacLMG=UAC-49 Light Machine Gun gun.name.uacPistol=UAC-B950 .45 Standard Issue Handgun gun.name.uacSMG=UAC-17 Compact Sub-Machine Gun -gun.name.uboinik=Uboinik Revolving Shotgun +gun.name.uboinik=Uboinik转轮霰弹枪 gun.name.uzi=IMI Uzi gun.name.uziSatur=IMI Uzi D-25A gun.name.win1887=温彻斯特M1887杠杆式连发霰弹枪 @@ -1138,10 +1122,12 @@ hbmfluid.bitumen=沥青 hbmfluid.blood=血 hbmfluid.blood_hot=热的血 hbmfluid.carbondioxide=二氧化碳 +hbmfluid.chlorine=氯气 hbmfluid.coalcreosote=煤焦杂酚油 hbmfluid.coalgas=煤汽油 hbmfluid.coalgas_leaded=含铅煤汽油 hbmfluid.coaloil=煤液化油 +hbmfluid.colloid=胶体 hbmfluid.coolant=冷却液 hbmfluid.coolant_hot=热冷却液 hbmfluid.crackoil=裂化油 @@ -1150,6 +1136,8 @@ hbmfluid.death=锇酸溶液 hbmfluid.deuterium=氘 hbmfluid.diesel=柴油 hbmfluid.diesel_crack=裂化柴油 +hbmfluid.diesel_crack_reform=高辛烷值裂解柴油 +hbmfluid.diesel_reform=高辛烷值柴油 hbmfluid.ethanol=乙醇 hbmfluid.enderjuice=末影果汁 hbmfluid.fracksol=压裂液 @@ -1157,22 +1145,28 @@ hbmfluid.gas=天然气 hbmfluid.gasoline=含铅汽油基油 hbmfluid.gasoline_leaded=含铅汽油 hbmfluid.heatingoil=燃油 +hbmfluid.heatingoil_vacuum=重质燃油 hbmfluid.heavyoil=重油 +hbmfluid.heavyoil_vacuum=减压重油 hbmfluid.heavywater=重水 hbmfluid.helium3=氦-3 hbmfluid.hotcrackoil=热裂化油 hbmfluid.hotoil=热原油 hbmfluid.hotsteam=热蒸汽 hbmfluid.hydrogen=液氢 +hbmfluid.iongel=离子凝胶 hbmfluid.kerosene=煤油 +hbmfluid.kerosene_reform=喷气燃料 hbmfluid.lava=岩浆 hbmfluid.lightoil=轻油 hbmfluid.lightoil_crack=裂化轻油 +hbmfluid.lightoil_vacuum=减压轻油 hbmfluid.lpg=液化石油气 hbmfluid.lubricant=润滑油 hbmfluid.mercury=水银 hbmfluid.mug=Mug牌树根饮料 hbmfluid.mug_hot=热的Mug牌树根饮料 +hbmfluid.mustardgas=芥子气 hbmfluid.naphtha=石脑油 hbmfluid.naphtha_crack=裂化石脑油 hbmfluid.nitan=NITAN牌100号超级燃料 @@ -1185,6 +1179,7 @@ hbmfluid.pain=Pn(III) 钽铁溶液 hbmfluid.petroil=汽油 hbmfluid.petroil_leaded=含铅石油 hbmfluid.petroleum=石油气 +hbmfluid.phosgene=光气 hbmfluid.plasma_bf=野火等离子体 hbmfluid.plasma_dh3=氘-氦3 等离子体 hbmfluid.plasma_dt=氘-氚等离子体 @@ -1192,13 +1187,17 @@ hbmfluid.plasma_hd=氢-氘等离子体 hbmfluid.plasma_ht=氢-氚等离子体 hbmfluid.plasma_xm=氙-汞等离子体 hbmfluid.puf6=六氟化钚 +hbmfluid.radiosolvent=高性能溶剂 hbmfluid.reclaimed=再生油 +hbmfluid.reformate=重整油 +hbmfluid.reformgas=重整气 hbmfluid.salient=绿色液体 hbmfluid.sas3=三硫化Sa hbmfluid.schrabidic=Sa酸 hbmfluid.seedslurry=播种浆料 hbmfluid.smear=工业油 hbmfluid.solvent=有机溶剂 +hbmfluid.sourgas=高硫天然气 hbmfluid.spentsteam=低压蒸汽 hbmfluid.steam=蒸汽 hbmfluid.sulfuric_acid=硫酸 @@ -1215,6 +1214,7 @@ hbmfluid.watz=毒泥浆 hbmfluid.woodoil=木油 hbmfluid.xenon=氙气 hbmfluid.xpjuice=经验汁 +hbmfluid.xylene=轻质芳烃(BTX) hbmpseudofluid.none=空 hbmpseudofluid.heuf6=高浓缩六氟化铀 hbmpseudofluid.meuf6=中浓缩六氟化铀 @@ -1236,7 +1236,9 @@ hbmmat.beryllium=铍 hbmmat.bismuth=铋 hbmmat.borax=硼砂 hbmmat.boron=硼 +hbmmat.cadmium=镉 hbmmat.carbon=碳 +hbmmat.cdalloy=镉钢 hbmmat.cinnabar=朱砂 hbmmat.cmbsteel=CMB钢 hbmmat.coal=煤 @@ -1245,6 +1247,7 @@ hbmmat.cobalt=钴 hbmmat.cobalt60=钴-60 hbmmat.coltan=钶钽铁矿 hbmmat.copper=铜 +hbmmat.desh=Desh hbmmat.dineutronium=双聚中子态素 hbmmat.durasteel=高速钢 hbmmat.euphemium=Ep @@ -1308,6 +1311,7 @@ hbmmat.uranium=铀 hbmmat.uranium233=铀-233 hbmmat.uranium235=铀-235 hbmmat.uranium238=铀-238 +hbmmat.watzmud=毒泥浆 hbmmat.whitephosphorus=白磷 hbmmat.workersalloy=Desh hbmmat.wroughtiron=锻铁 @@ -1483,8 +1487,13 @@ item.ammo_grenade_phosphorus.name=40mm榴弹[白磷] item.ammo_grenade_sleek.name=40mm榴弹[IF-R&D] item.ammo_grenade_toxic.name=40mm榴弹[化学] item.ammo_grenade_tracer.name=40mm训练榴弹 -item.ammo_himars_standard.name=M28制导炮兵火箭弹舱 -item.ammo_himars_single.name=M39A1制导炮兵火箭弹舱 +item.ammo_himars_standard.name=M28制导火箭炮系统火箭弹舱 +item.ammo_himars_standard_he.name=227毫米制导火箭炮系统火箭吊舱(HE) +item.ammo_himars_standard_mini_nuke.name=227毫米制导火箭炮系统火箭吊舱(迷你核弹) +item.ammo_himars_standard_tb.name=227毫米制导火箭炮系统火箭吊舱(温压弹) +item.ammo_himars_standard_wp.name=227毫米制导火箭炮系统火箭吊舱(白磷) +item.ammo_himars_single.name=M39A1制导火箭炮系统火箭弹舱 +item.ammo_himars_single_tb.name=610毫米制导火炮火箭吊舱(温压弹) item.ammo_luna.name=Lunatic狙击弹 item.ammo_luna_explosive.name=Lunatic狙击爆炸弹 item.ammo_luna_incendiary.name=Lunatic狙击燃烧弹 @@ -1598,8 +1607,9 @@ item.balefire_and_steel.name=野火打火石 item.balefire_scrambled.name=炒野火蛋 item.ball_dynamite.name=硝糖炸药 item.ball_fireclay.name=耐火粘土 +item.ball_tatb.name=三氨基三硝基苯(TATB) item.ball_tnt.name=TNT炸药 -item.ballistic_gauntlet.name=防弹护具 +item.ballistic_gauntlet.name=冲击拳套 item.ballistite.name=混合无烟火药 item.bandaid.name=邦迪创可贴 item.bathwater.name=有毒肥皂水 @@ -1733,6 +1743,7 @@ item.bobmazon_weapons.name=Bobmazon: 武器和爆炸物 item.bolt_compound.name=加强涡轮机轴 item.bolt_dura_steel.name=高速钢螺栓 item.bolt_tungsten.name=钨螺栓 +item.boltgun.name=气动射钉枪 item.bomb_caller.name=空袭指示器 item.bomb_waffle.name=大规模杀伤性华夫饼 item.book_guide.name=HBM指导书 @@ -1886,6 +1897,7 @@ item.casing_50.name=大口径弹壳[x8] item.casing_9.name=小口径弹壳[x24] item.casing_buckshot.name=鹿弹弹壳[x8] item.catalyst_clay.name=黏土催化剂 +item.catalytic_converter.name=催化转化器 item.cbt_device.name=CBT装置 item.cell_anti_schrabidium.name=反Sa326单元 item.cell_antimatter.name=反物质单元 @@ -1980,7 +1992,7 @@ item.circuit_targeting_tier4.name=军用级电路板[4级] item.circuit_targeting_tier5.name=军用级电路板[5级] item.circuit_targeting_tier6.name=军用级电路板[6级] item.cladding_desh.name=Desh覆层 -item.cladding_ghiorsium.name=石墨覆层 +item.cladding_ghiorsium.name=Gh336覆层 item.cladding_iron.name=铁覆层 item.cladding_lead.name=铅覆层 item.cladding_obsidian.name=黑曜石覆层 @@ -2064,8 +2076,10 @@ item.coltan_tool.name=钶钽铁矿指针 item.combine_scrap.name=CMB钢废料 item.component_emitter.name=发射器组件 item.component_limiter.name=稳定器组件 +item.containment_box.name=安全盒 item.cordite.name=无烟线状火药 item.cotton_candy.name=放射性棉花糖 +item.crackpipe.name=健康烟壶 item.crate_caller.name=空投召唤器 item.crayon.black.name=黑色蜡笔 item.crayon.blue.name=蓝色蜡笔 @@ -2182,7 +2196,7 @@ item.dosimeter.name=剂量计 item.drillbit_desh.name=Desh钻头 item.drillbit_desh_diamond.name=Desh钻头(镶钻) item.drillbit_ferro.name=铀铁合金钻头 -item.drillbit_ferro_diamond.name=铁铀钻头(镶钻) +item.drillbit_ferro_diamond.name=铀铁合金钻头(镶钻) item.drillbit_hss.name=高速钢钻头 item.drillbit_hss_diamond.name=高速钢钻头(镶钻) item.drillbit_steel.name=钢钻头 @@ -2431,7 +2445,8 @@ item.gun_lever_action_ammo.name=12x74 鹿弹 item.gun_lever_action_dark.name=马腿杠杆式霰弹枪[黑暗] item.gun_lever_action_sonata.name=自杀霰弹 item.gun_lever_action_sonata_2.name=§cSonata的麦克风§r -item.gun_m2.name=Ma Deuce +item.gun_lunatic_marksman.name=Lunatic狙击步枪 +item.gun_m2.name=勃朗宁M2HB型重机枪 item.gun_minigun.name=CZ53机枪 item.gun_mirv.name=M42核弹发射器 "试验型MIRV" item.gun_mirv_ammo.name=八倍MIRV @@ -2566,7 +2581,9 @@ item.ingot_beryllium.name=铍锭 item.ingot_bismuth.name=铋锭 item.ingot_boron.name=硼锭 item.ingot_c4.name=一块C-4 +item.ingot_cadmium.name=镉锭 item.ingot_calcium.name=钙锭 +item.ingot_cdalloy.name=镉钢锭 item.ingot_chainsteel.name=重链钢 item.ingot_co60.name=钴-60锭 item.ingot_cobalt.name=钴锭 @@ -2580,7 +2597,7 @@ item.ingot_dura_steel.name=高速钢锭 item.ingot_electronium.name=电素锭 item.ingot_euphemium.name=Ep锭 item.ingot_euphemium.desc=一个非常特殊但又奇怪的元素。 -item.ingot_ferrouranium.name=铀铁锭 +item.ingot_ferrouranium.name=铀铁合金锭 item.ingot_fiberglass.name=玻璃纤维 item.ingot_fiberglass.desc=纤维含量高,玻璃含量高。身体需要的一切。 item.ingot_firebrick.name=耐火砖 @@ -2597,6 +2614,7 @@ item.ingot_magnetized_tungsten.name=磁化钨锭 item.ingot_meteorite.name=陨石锭 item.ingot_meteorite_forged.name=锻造陨石锭 item.ingot_mox_fuel.name=MOX燃料锭 +item.ingot_mud.name=固化毒泥浆砖 item.ingot_neptunium.name=镎锭 item.ingot_neptunium.desc=那是我最喜欢的! item.ingot_neptunium.desc.P11=哇,吓人! @@ -2604,6 +2622,8 @@ item.ingot_neptunium_fuel.name=镎燃料锭 item.ingot_niobium.name=铌锭 item.ingot_osmiridium.name=铱锇锭 item.ingot_pb209.name=铅-209锭 +item.ingot_pc.name=硬质塑料锭 +item.ingot_pet.name=铝金属化PET锭 item.ingot_phosphorus.name=白磷锭 item.ingot_plutonium.name=钚锭 item.ingot_plutonium_fuel.name=钚燃料锭 @@ -2614,6 +2634,7 @@ item.ingot_pu238.name=钚-238锭 item.ingot_pu239.name=钚-239锭 item.ingot_pu240.name=钚-240锭 item.ingot_pu241.name=钚-241锭 +item.ingot_pvc.name=聚氯乙烯锭(PVC) item.ingot_ra226.name=镭-226锭 item.ingot_red_copper.name=紫铜 item.ingot_reiium.name=雷恩锭 @@ -2960,6 +2981,7 @@ item.n2_charge.name=大型炸药 item.neutrino_lens.name=中子透镜 item.neutron_reflector.name=中子反射板 item.niter.name=硝石粉 +item.no9.name=矿工头盔 item.nossy_hat.name=华丽的帽子 item.nothing.name=没有东西 item.nuclear_waste.name=核废料 @@ -3051,6 +3073,7 @@ item.oil_detector.noOil=未发现油田 item.oil_tar.coal.name=煤焦油 item.oil_tar.crude.name=焦油 item.oil_tar.crack.name=裂化焦油 +item.oil_tar.wax.name=氯化石蜡 item.oil_tar.wood.name=木馏油 item.ore.asbestos=石棉 item.ore.borax=硼砂 @@ -3078,7 +3101,9 @@ item.ore_enriched.name=富集%s矿 item.ore_nitrated.name=硝化%s矿 item.ore_nitrocrystalline.name=亚硝基结晶%s矿 item.ore_purified.name=净化%s矿 -item.ore_separated.name=分离%s矿 +item.ore_raadcleaned.name=辐射净化的%s矿 +item.ore_seared.name=灼热的%s矿 +item.ore_separated.name=离心%s矿 item.overfuse.name=奇异螺丝刀 item.overfuse.desc=说啥? item.oxy_mask.name=氧气面罩 @@ -3201,6 +3226,7 @@ item.piston_set_starmetal.name=星辉活塞组 item.piston_set_steel.name=钢活塞组 item.plan_c.name=C计划 item.plan_c.desc=致死 +item.plant_item.mustardwillow.name=芥子柳叶 item.plant_item.rope.name=麻绳 item.plant_item.tobacco.name=烟叶 item.plate_advanced_alloy.name=高级合金板 @@ -3213,6 +3239,7 @@ item.plate_armor_lunar.name=月球镀层 item.plate_armor_titanium.name=钛装甲板 item.plate_bismuth.name=铋复合板 item.plate_bismuth.desc=伙计们,这是铋的炼金术符号,我发誓。 +item.plate_cast.name=铸造%s板 item.plate_combine_steel.name=CMB钢板 item.plate_copper.name=铜板 item.plate_dalekanium.name=愤怒的金属 @@ -3256,6 +3283,7 @@ item.powder_borax.name=硼砂 item.powder_boron.name=硼粉 item.powder_boron_tiny.name=小撮硼粉 item.powder_bromine.name=溴粉 +item.powder_cadmium.name=镉粉 item.powder_caesium.name=铯粉 item.powder_calcium.name=钙粉 item.powder_cerium.name=铈粉 @@ -3283,6 +3311,7 @@ item.powder_dura_steel.name=高速钢粉 item.powder_emerald.name=绿宝石粉 item.powder_euphemium.name=Ep粉 item.powder_euphemium.desc=粉红色$尝起来像草莓。 +item.powder_fertilizer.name=工业肥料 item.powder_fire.name=火焰粉 item.powder_fire.desc=用于多用途炸弹:燃烧弹很有趣! item.powder_flux.name=助熔剂 @@ -3734,27 +3763,27 @@ item.stamp_357.name=.357马格南锻模 item.stamp_44.name=.44马格南锻模 item.stamp_50.name=大口径锻模 item.stamp_9.name=小口径锻模 -item.stamp_desh_circuit.name=Desh电路版锻模 +item.stamp_desh_circuit.name=Desh电路板锻模 item.stamp_desh_flat.name=Desh锻模 item.stamp_desh_plate.name=Desh板锻模 item.stamp_desh_wire.name=Desh电线锻模 -item.stamp_iron_circuit.name=铁质电路版锻模 +item.stamp_iron_circuit.name=铁质电路板锻模 item.stamp_iron_flat.name=铁质锻模 item.stamp_iron_plate.name=铁质板锻模 item.stamp_iron_wire.name=铁质电线锻模 -item.stamp_obsidian_circuit.name=黑曜石电路版锻模 +item.stamp_obsidian_circuit.name=黑曜石电路板锻模 item.stamp_obsidian_flat.name=黑曜石锻模 item.stamp_obsidian_plate.name=黑曜石板锻模 item.stamp_obsidian_wire.name=黑曜石电线锻模 -item.stamp_steel_circuit.name=钢质电路版锻模 +item.stamp_steel_circuit.name=钢质电路板锻模 item.stamp_steel_flat.name=钢质锻模 item.stamp_steel_plate.name=钢质板锻模 item.stamp_steel_wire.name=钢质电线锻模 -item.stamp_stone_circuit.name=石质电路版锻模 +item.stamp_stone_circuit.name=石质电路板锻模 item.stamp_stone_flat.name=石质锻模 item.stamp_stone_plate.name=石质板锻模 item.stamp_stone_wire.name=石质电线锻模 -item.stamp_titanium_circuit.name=钛质电路版锻模 +item.stamp_titanium_circuit.name=钛质电路板锻模 item.stamp_titanium_flat.name=钛质锻模 item.stamp_titanium_plate.name=钛质板锻模 item.stamp_titanium_wire.name=钛质电线锻模 @@ -3943,6 +3972,30 @@ item.waste_uranium.name=枯竭铀燃料 item.waste_zfb_mox.name=枯竭的ZFB MOX燃料 item.watch.name=破旧怀表 item.watch.desc=一块蓝色的小怀表$玻璃上有一些裂缝,还有一些碎片不见了$指针定格在了2点34分。 +item.watz_pellet.boron.name=硼吸收靶丸 +item.watz_pellet.du.name=贫铀吸收靶丸 +item.watz_pellet.hes.name=HES Watz靶丸 +item.watz_pellet.lead.name=铅吸收靶丸 +item.watz_pellet.les.name=LES Watz靶丸 +item.watz_pellet.mes.name=MES Watz靶丸 +item.watz_pellet.mep.name=MEP Watz靶丸 +item.watz_pellet.meu.name=MEU Watz靶丸 +item.watz_pellet.nqd.name=富集硅岩金属 Watz靶丸 +item.watz_pellet.nqr.name=硅岩金属 Watz靶丸 +item.watz_pellet.hen.name=HEN Watz靶丸 +item.watz_pellet.schrabidium.name=Sa326 Watz靶丸 +item.watz_pellet_depleted.boron.name=硼吸收靶丸(枯竭) +item.watz_pellet_depleted.du.name=贫铀吸收靶丸(枯竭) +item.watz_pellet_depleted.hes.name=HES Watz靶丸(枯竭) +item.watz_pellet_depleted.lead.name=铅吸收靶丸(枯竭) +item.watz_pellet_depleted.les.name=LES Watz靶丸(枯竭) +item.watz_pellet_depleted.mes.name=MES Watz靶丸(枯竭) +item.watz_pellet_depleted.mep.name=MEP Watz靶丸(枯竭) +item.watz_pellet_depleted.meu.name=MEU Watz靶丸(枯竭) +item.watz_pellet_depleted.nqd.name=富集硅岩金属 Watz靶丸(枯竭) +item.watz_pellet_depleted.nqr.name=硅岩金属 Watz靶丸(枯竭) +item.watz_pellet_depleted.hen.name=HEN Watz靶丸(枯竭) +item.watz_pellet_depleted.schrabidium.name=Sa326 Watz靶丸(枯竭) item.weapon_bat.name=板球棒 item.weapon_bat_nail.name=板上钉钉 item.weapon_golf_club.name=黑手党快乐杆 @@ -4036,6 +4089,7 @@ shape.nugget=粒 shape.quantum=量子 shape.quart=四分之一块 shape.plate=板材 +shape.plateTriple=铸造板 shape.stamp=锻压模具 shape.wire=线材 soundCategory.ntmMachines=NTM机器 @@ -4308,8 +4362,10 @@ tile.conveyor_triple.name=三轨道输送带 tile.corium_block.name=堆芯熔融物 tile.crane_boxer.name=输送带打包机 tile.crane_extractor.name=输送带提取器 +tile.crane_grabber.name=输送带抓斗 tile.crane_inserter.name=输送带导入器 tile.crane_router.name=输送带分拣机 +tile.crane_splitter.name=输送带分离器 tile.crane_unboxer.name=输送带解包机 tile.crashed_bomb.name=哑弹 tile.crate.name=补给箱 @@ -4332,6 +4388,7 @@ tile.deco_asbestos.name=石棉瓦 tile.deco_beryllium.name=铍装饰块 tile.deco_computer.ibm_300pl.name=IBM个人电脑300PL tile.deco_emitter.name=Deco发光体 +tile.part_emitter.name=Deco粒子发射器 tile.deco_lead.name=铅装饰块 tile.deco_rbmk.name=RBMK装饰块 tile.deco_rbmk_smooth.name=平滑RBMK装饰块 @@ -4402,6 +4459,7 @@ tile.factory_titanium_core.name=工厂核心组件 tile.factory_titanium_furnace.name=工厂端口 tile.factory_titanium_hull.name=工厂外壳 tile.fallout.name=辐射尘 +tile.fan.name=风扇 tile.fence_metal.name=铁丝网围栏 tile.field_disturber.name=高能场干扰机 tile.filing_cabinet.green.name=蒙尘的文件柜 @@ -4423,7 +4481,7 @@ tile.fluid_duct_neo.name=通用流体管道 tile.fluid_duct_paintable.name=可喷漆涂层通用流体导管 tile.fluid_duct_solid.name=带涂层的通用流体导管 tile.foam_layer.name=泡沫层 -tile.foundry_basin.name=铸造水池 +tile.foundry_basin.name=铸造盘 tile.foundry_channel.name=铸造浇道 tile.foundry_tank.name=铸造池 tile.foundry_mold.name=浅铸造池 @@ -4554,6 +4612,7 @@ tile.machine_boiler_electric_on.name=电锅炉 tile.machine_boiler_off.name=锅炉 tile.machine_boiler_on.name=锅炉 tile.machine_catalytic_cracker.name=催化裂化塔 +tile.machine_catalytic_reformer.name=催化重整器 tile.machine_centrifuge.name=离心机 tile.machine_chemfac.name=大型化工厂 tile.machine_chemplant.name=化工厂 @@ -4574,6 +4633,7 @@ tile.machine_detector.name=功率检测器 tile.machine_deuterium_extractor.name=氘提取器 tile.machine_deuterium_tower.name=氘萃取塔 tile.machine_diesel.name=柴油发电机 +tile.machine_difurnace_extension.name=高炉烟道 tile.machine_difurnace_off.name=高炉 tile.machine_difurnace_on.name=高炉 tile.machine_difurnace_rtg_off.name=核高炉 @@ -4633,6 +4693,7 @@ tile.machine_rtg_red.name=离子发生器 tile.machine_rtg_yellow.name=奥斯超级燃料反应堆 tile.machine_satlinker.name=卫星ID管理器 tile.machine_sawmill.name=斯特林锯木机 +tile.machine_sawmill.desc=需要外部热源$传热速率:T*0.1 TU/T$最小进气量:100 TU/T,最大进气量:300 TU/T tile.machine_schrabidium_battery.name=Sa326蓄电池 tile.machine_schrabidium_transmutator.name=Sa326嬗变装置 tile.machine_selenium.name=星型发动机 @@ -4664,6 +4725,7 @@ tile.machine_turbine.desc=效率: 85%% tile.machine_turbinegas.name=联合循环燃气轮机 tile.machine_turbofan.name=涡扇发动机 tile.machine_uf6_tank.name=六氟化铀储罐 +tile.machine_vacuum_distill.name=真空炼油厂 tile.machine_waste_drum.name=乏燃料池 tile.machine_well.name=钻油塔 tile.machine_zirnox.name=锆诺克斯核反应堆 @@ -4779,11 +4841,17 @@ tile.pink_planks.name=粉色木板 tile.pink_slab.name=粉色木半砖 tile.pink_stairs.name=粉色木台阶 tile.plant_dead.name=死亡植物 +tile.plant_flower.cd0.name=芥子柳 +tile.plant_flower.cd1.name=芥子柳 tile.plant_flower.foxglove.name=毛地黄 tile.plant_flower.nightshade.name=颠茄 tile.plant_flower.tobacco.name=烟草 tile.plant_flower.weed.name=大麻 tile.plant_reeds.name=芦苇 +tile.plant_tall.cd2.name=芥子柳 +tile.plant_tall.cd3.name=芥子柳 +tile.plant_tall.cd4.name=芥子柳(成熟) +tile.plant_tall.weed.name=大麻 tile.plasma.name=等离子 tile.plasma_heater.name=等离子加热器 tile.pole_satellite_receiver.name=卫星天线 @@ -4893,6 +4961,8 @@ tile.stalagmite.sulfur.name=含硫石笋 tile.steel_beam.name=钢梁 tile.steel_corner.name=钢墙角 tile.steel_grate.name=钢格栅 +tile.steel_grate_wide.name=物品格栅 +tile.steel_grate_wide.desc=让物品和经验球掉落下去 tile.steel_poles.name=钢杆 tile.steel_roof.name=钢天花顶 tile.steel_scaffold.name=钢脚手架 @@ -4914,6 +4984,7 @@ tile.struct_launcher_core_large.name=发射台核心组件 tile.struct_plasma_core.name=等离子加热器核心组件 tile.struct_scaffold.name=发射台骨架 tile.struct_soyuz_core.name=联盟号发射器核心组件 +tile.struct_watz_core.name=Watz发电厂核心组件 tile.substation.name=变电站 tile.sulfuric_acid_block.name=硫酸 tile.taint.name=腐质 @@ -4969,13 +5040,16 @@ tile.waste_mycelium.name=发光菌丝 tile.waste_planks.name=烧焦木板 tile.waste_trinitite.name=核融玻璃矿石 tile.waste_trinitite_red.name=红色核融玻璃矿石 +tile.watz.name=Watz发电厂 tile.watz_conductor.name=Watz电力端口 tile.watz_control.name=加强控制棒 tile.watz_cooler.name=Watz反应堆过冷器 tile.watz_core.name=Watz反应堆控制器 tile.watz_element.name=Watz反应室 tile.watz_end.name=Watz反应堆稳定元件 +tile.watz_end_bolted.name=Watz反应堆稳定元件(铆接) tile.watz_hatch.name=Watz反应堆端口 +tile.watz_pump.name=Watz压力泵 tile.yellow_barrel.name=核废料桶 tile.zirnox_destroyed.name=损毁的ZINROX trait.asbestos=石棉 diff --git a/src/main/resources/assets/hbm/models/machines/coker.obj b/src/main/resources/assets/hbm/models/machines/coker.obj new file mode 100644 index 000000000..131a7c48b --- /dev/null +++ b/src/main/resources/assets/hbm/models/machines/coker.obj @@ -0,0 +1,3455 @@ +# Blender v2.79 (sub 0) OBJ File: 'coker.blend' +# www.blender.org +o Plane +v -1.500000 0.000000 1.500000 +v 1.500000 0.000000 1.500000 +v -1.500000 0.000000 -1.500000 +v 1.500000 0.000000 -1.500000 +v -1.500000 1.000000 1.500000 +v 1.500000 1.000000 1.500000 +v -1.500000 1.000000 -1.500000 +v 1.500000 1.000000 -1.500000 +v -2.500000 2.000000 2.500000 +v 2.500000 2.000000 2.500000 +v -2.500000 2.000000 -2.500000 +v 2.500000 2.000000 -2.500000 +v -2.500000 4.000000 -2.500000 +v -2.500000 4.000000 2.500000 +v 2.500000 4.000000 2.500000 +v 2.500000 4.000000 -2.500000 +v -1.500000 5.000000 -1.500000 +v -1.500000 5.000000 1.500000 +v 1.500000 5.000000 1.500000 +v 1.500000 5.000000 -1.500000 +v -1.500000 7.000000 -1.500000 +v -1.500000 7.000000 1.500000 +v 1.500000 7.000000 1.500000 +v 1.500000 7.000000 -1.500000 +v 1.500000 7.000000 -1.500000 +v 1.500000 7.000000 1.500000 +v -1.500000 7.000000 1.500000 +v -1.500000 7.000000 -1.500000 +v 2.500000 2.000000 2.500000 +v 2.500000 0.000000 2.500000 +v 2.500000 2.000000 2.125000 +v 2.500000 0.000000 2.125000 +v 2.125000 2.000000 2.500000 +v 2.125000 0.000000 2.500000 +v 2.125000 2.000000 2.125000 +v 2.125000 0.000000 2.125000 +v 2.500000 2.000000 -2.125000 +v 2.500000 0.000000 -2.125000 +v 2.500000 2.000000 -2.500000 +v 2.500000 0.000000 -2.500000 +v 2.125000 2.000000 -2.125000 +v 2.125000 0.000000 -2.125000 +v 2.125000 2.000000 -2.500000 +v 2.125000 0.000000 -2.500000 +v -2.125000 2.000000 2.500000 +v -2.125000 0.000000 2.500000 +v -2.125000 2.000000 2.125000 +v -2.125000 0.000000 2.125000 +v -2.500000 2.000000 2.500000 +v -2.500000 0.000000 2.500000 +v -2.500000 2.000000 2.125000 +v -2.500000 0.000000 2.125000 +v -2.125000 2.000000 -2.125000 +v -2.125000 0.000000 -2.125000 +v -2.125000 2.000000 -2.500000 +v -2.125000 0.000000 -2.500000 +v -2.500000 2.000000 -2.125000 +v -2.500000 0.000000 -2.125000 +v -2.500000 2.000000 -2.500000 +v -2.500000 0.000000 -2.500000 +v 2.500000 7.000000 2.500000 +v 2.500000 4.000000 2.500000 +v 2.500000 7.000000 2.125000 +v 2.500000 4.000000 2.125000 +v 2.125000 7.000000 2.500000 +v 2.125000 4.000000 2.500000 +v 2.125000 7.000000 2.125000 +v 2.125000 4.000000 2.125000 +v 2.500000 7.000000 -2.125000 +v 2.500000 4.000000 -2.125000 +v 2.500000 7.000000 -2.500000 +v 2.500000 4.000000 -2.500000 +v 2.125000 7.000000 -2.125000 +v 2.125000 4.000000 -2.125000 +v 2.125000 7.000000 -2.500000 +v 2.125000 4.000000 -2.500000 +v -2.125000 7.000000 2.500000 +v -2.125000 4.000000 2.500000 +v -2.125000 7.000000 2.125000 +v -2.125000 4.000000 2.125000 +v -2.500000 7.000000 2.500000 +v -2.500000 4.000000 2.500000 +v -2.500000 7.000000 2.125000 +v -2.500000 4.000000 2.125000 +v -2.125000 7.000000 -2.125000 +v -2.125000 4.000000 -2.125000 +v -2.125000 7.000000 -2.500000 +v -2.125000 4.000000 -2.500000 +v -2.500000 7.000000 -2.125000 +v -2.500000 4.000000 -2.125000 +v -2.500000 7.000000 -2.500000 +v -2.500000 4.000000 -2.500000 +v 2.125000 1.250000 -2.125000 +v 2.125000 1.250000 -2.500000 +v -2.125000 1.250000 -2.125000 +v -2.125000 1.250000 -2.500000 +v 2.125000 1.625000 -2.125000 +v 2.125000 1.625000 -2.500000 +v -2.125000 1.625000 -2.500000 +v -2.125000 1.625000 -2.125000 +v 2.125000 1.250000 2.500000 +v 2.125000 1.250000 2.125000 +v -2.125000 1.250000 2.500000 +v -2.125000 1.250000 2.125000 +v 2.125000 1.625000 2.500000 +v 2.125000 1.625000 2.125000 +v -2.125000 1.625000 2.125000 +v -2.125000 1.625000 2.500000 +v -2.125000 1.250000 -2.125000 +v -2.500000 1.250000 -2.125000 +v -2.125000 1.250000 2.125000 +v -2.500000 1.250000 2.125000 +v -2.125000 1.625000 -2.125000 +v -2.500000 1.625000 -2.125000 +v -2.500000 1.625000 2.125000 +v -2.125000 1.625000 2.125000 +v 2.500000 1.250000 -2.125000 +v 2.125000 1.250000 -2.125000 +v 2.500000 1.250000 2.125000 +v 2.125000 1.250000 2.125000 +v 2.500000 1.625000 -2.125000 +v 2.125000 1.625000 -2.125000 +v 2.125000 1.625000 2.125000 +v 2.500000 1.625000 2.125000 +v 2.500000 7.000000 2.500000 +v 2.500000 7.000000 -2.500000 +v -2.500000 7.000000 2.500000 +v -2.500000 7.000000 -2.500000 +v -1.500000 7.000000 -1.500000 +v -1.500000 7.000000 1.500000 +v 1.500000 7.000000 1.500000 +v 1.500000 7.000000 -1.500000 +v 2.500000 6.750000 2.500000 +v 2.500000 6.750000 -2.500000 +v -2.500000 6.750000 2.500000 +v -2.500000 6.750000 -2.500000 +v -1.500000 6.750000 -1.500000 +v -1.500000 6.750000 1.500000 +v 1.500000 6.750000 1.500000 +v 1.500000 6.750000 -1.500000 +v 2.500000 7.000000 2.125000 +v 2.500000 7.000000 -2.125000 +v 2.500000 6.750000 2.125000 +v 2.500000 6.750000 -2.125000 +v 2.125000 7.000000 -2.500000 +v -2.125000 7.000000 -2.500000 +v 2.125000 6.750000 -2.500000 +v -2.125000 6.750000 -2.500000 +v -2.500000 7.000000 -2.125000 +v -2.500000 7.000000 2.125000 +v -2.500000 6.750000 -2.125000 +v -2.500000 6.750000 2.125000 +v -2.125000 7.000000 2.500000 +v 2.125000 7.000000 2.500000 +v -2.125000 6.750000 2.500000 +v 2.125000 6.750000 2.500000 +v 2.125000 4.375000 -2.125000 +v 2.125000 4.375000 -2.500000 +v -2.125000 4.375000 -2.125000 +v -2.125000 4.375000 -2.500000 +v 2.125000 4.750000 -2.125000 +v 2.125000 4.750000 -2.500000 +v -2.125000 4.750000 -2.500000 +v -2.125000 4.750000 -2.125000 +v 2.125000 4.375000 2.500000 +v 2.125000 4.375000 2.125000 +v -2.125000 4.375000 2.500000 +v -2.125000 4.375000 2.125000 +v 2.125000 4.750000 2.500000 +v 2.125000 4.750000 2.125000 +v -2.125000 4.750000 2.125000 +v -2.125000 4.750000 2.500000 +v -2.125000 4.375000 -2.125000 +v -2.500000 4.375000 -2.125000 +v -2.125000 4.375000 2.125000 +v -2.500000 4.375000 2.125000 +v -2.125000 4.750000 -2.125000 +v -2.500000 4.750000 -2.125000 +v -2.500000 4.750000 2.125000 +v -2.125000 4.750000 2.125000 +v 2.500000 4.375000 -2.125000 +v 2.125000 4.375000 -2.125000 +v 2.500000 4.375000 2.125000 +v 2.125000 4.375000 2.125000 +v 2.500000 4.750000 -2.125000 +v 2.125000 4.750000 -2.125000 +v 2.125000 4.750000 2.125000 +v 2.500000 4.750000 2.125000 +v -1.500000 7.000000 -8.500000 +v -1.500000 7.000000 -5.500000 +v 1.500000 7.000000 -5.500000 +v 1.500000 7.000000 -8.500000 +v -0.750000 15.000000 -7.750000 +v -0.750000 15.000000 -6.250000 +v 0.750000 15.000000 -6.250000 +v 0.750000 15.000000 -7.750000 +v -0.625000 15.000000 -7.625000 +v -0.625000 15.000000 -6.375000 +v 0.625000 15.000000 -6.375000 +v 0.625000 15.000000 -7.625000 +v -0.625000 14.000000 -7.625000 +v -0.625000 14.000000 -6.375000 +v 0.625000 14.000000 -6.375000 +v 0.625000 14.000000 -7.625000 +v 0.000000 8.500000 -15.250000 +v -0.478354 8.500000 -15.154849 +v -0.883883 8.500000 -14.883883 +v -1.154849 8.500000 -14.478354 +v -1.250000 8.500000 -14.000000 +v -1.154849 8.500000 -13.521646 +v -0.883883 8.500000 -13.116117 +v -0.478354 8.500000 -12.845151 +v -0.000000 8.500000 -12.750000 +v 0.478354 8.500000 -12.845150 +v 0.883883 8.500000 -13.116117 +v 1.154849 8.500000 -13.521646 +v 1.250000 8.500000 -14.000000 +v 1.154849 8.500000 -14.478354 +v 0.883883 8.500000 -14.883883 +v 0.478354 8.500000 -15.154850 +v 0.000000 15.500000 -15.250000 +v -0.478354 15.500000 -15.154849 +v -0.883883 15.500000 -14.883883 +v -1.154849 15.500000 -14.478354 +v -1.250000 15.500000 -14.000000 +v -1.154849 15.500000 -13.521646 +v -0.883883 15.500000 -13.116117 +v -0.478354 15.500000 -12.845151 +v -0.000000 15.500000 -12.750000 +v 0.478354 15.500000 -12.845150 +v 0.883883 15.500000 -13.116117 +v 1.154849 15.500000 -13.521646 +v 1.250000 15.500000 -14.000000 +v 1.154849 15.500000 -14.478354 +v 0.883883 15.500000 -14.883883 +v 0.478354 15.500000 -15.154850 +v -0.000000 15.500000 -15.500000 +v -0.574025 15.500000 -15.385819 +v -1.060660 15.500000 -15.060660 +v -1.385819 15.500000 -14.574025 +v -1.500000 15.500000 -14.000000 +v -1.385819 15.500000 -13.425975 +v -1.060660 15.500000 -12.939340 +v -0.574025 15.500000 -12.614181 +v -0.000000 15.500000 -12.500000 +v 0.574025 15.500000 -12.614181 +v 1.060660 15.500000 -12.939340 +v 1.385819 15.500000 -13.425975 +v 1.500000 15.500000 -14.000000 +v 1.385819 15.500000 -14.574025 +v 1.060660 15.500000 -15.060660 +v 0.574024 15.500000 -15.385819 +v -0.000000 16.500000 -15.500000 +v -0.574025 16.500000 -15.385819 +v -1.060660 16.500000 -15.060660 +v -1.385819 16.500000 -14.574025 +v -1.500000 16.500000 -14.000000 +v -1.385819 16.500000 -13.425975 +v -1.060660 16.500000 -12.939340 +v -0.574025 16.500000 -12.614181 +v -0.000000 16.500000 -12.500000 +v 0.574025 16.500000 -12.614181 +v 1.060660 16.500000 -12.939340 +v 1.385819 16.500000 -13.425975 +v 1.500000 16.500000 -14.000000 +v 1.385819 16.500000 -14.574025 +v 1.060660 16.500000 -15.060660 +v 0.574024 16.500000 -15.385819 +v 0.000000 16.500000 -15.250000 +v -0.478354 16.500000 -15.154849 +v -0.883883 16.500000 -14.883883 +v -1.154849 16.500000 -14.478354 +v -1.250000 16.500000 -14.000000 +v -1.154849 16.500000 -13.521646 +v -0.883883 16.500000 -13.116117 +v -0.478354 16.500000 -12.845151 +v -0.000000 16.500000 -12.750000 +v 0.478354 16.500000 -12.845150 +v 0.883883 16.500000 -13.116117 +v 1.154849 16.500000 -13.521646 +v 1.250000 16.500000 -14.000000 +v 1.154849 16.500000 -14.478354 +v 0.883883 16.500000 -14.883883 +v 0.478354 16.500000 -15.154850 +v 0.000000 17.500000 -15.250000 +v -0.478354 17.500000 -15.154849 +v -0.883883 17.500000 -14.883883 +v -1.154849 17.500000 -14.478354 +v -1.250000 17.500000 -14.000000 +v -1.154849 17.500000 -13.521646 +v -0.883883 17.500000 -13.116117 +v -0.478354 17.500000 -12.845151 +v -0.000000 17.500000 -12.750000 +v 0.478354 17.500000 -12.845150 +v 0.883883 17.500000 -13.116117 +v 1.154849 17.500000 -13.521646 +v 1.250000 17.500000 -14.000000 +v 1.154849 17.500000 -14.478354 +v 0.883883 17.500000 -14.883883 +v 0.478354 17.500000 -15.154850 +v -0.000000 17.500000 -15.500000 +v -0.574025 17.500000 -15.385819 +v -1.060660 17.500000 -15.060660 +v -1.385819 17.500000 -14.574025 +v -1.500000 17.500000 -14.000000 +v -1.385819 17.500000 -13.425975 +v -1.060660 17.500000 -12.939340 +v -0.574025 17.500000 -12.614181 +v -0.000000 17.500000 -12.500000 +v 0.574025 17.500000 -12.614181 +v 1.060660 17.500000 -12.939340 +v 1.385819 17.500000 -13.425975 +v 1.500000 17.500000 -14.000000 +v 1.385819 17.500000 -14.574025 +v 1.060660 17.500000 -15.060660 +v 0.574024 17.500000 -15.385819 +v -0.000000 18.500000 -15.500000 +v -0.574025 18.500000 -15.385819 +v -1.060660 18.500000 -15.060660 +v -1.385819 18.500000 -14.574025 +v -1.500000 18.500000 -14.000000 +v -1.385819 18.500000 -13.425975 +v -1.060660 18.500000 -12.939340 +v -0.574025 18.500000 -12.614181 +v -0.000000 18.500000 -12.500000 +v 0.574025 18.500000 -12.614181 +v 1.060660 18.500000 -12.939340 +v 1.385819 18.500000 -13.425975 +v 1.500000 18.500000 -14.000000 +v 1.385819 18.500000 -14.574025 +v 1.060660 18.500000 -15.060660 +v 0.574024 18.500000 -15.385819 +v 0.000000 18.500000 -15.250000 +v -0.478354 18.500000 -15.154849 +v -0.883883 18.500000 -14.883883 +v -1.154849 18.500000 -14.478354 +v -1.250000 18.500000 -14.000000 +v -1.154849 18.500000 -13.521646 +v -0.883883 18.500000 -13.116117 +v -0.478354 18.500000 -12.845151 +v -0.000000 18.500000 -12.750000 +v 0.478354 18.500000 -12.845150 +v 0.883883 18.500000 -13.116117 +v 1.154849 18.500000 -13.521646 +v 1.250000 18.500000 -14.000000 +v 1.154849 18.500000 -14.478354 +v 0.883883 18.500000 -14.883883 +v 0.478354 18.500000 -15.154850 +v 0.000000 19.000000 -15.250000 +v -0.478354 19.000000 -15.154849 +v -0.883883 19.000000 -14.883883 +v -1.154849 19.000000 -14.478354 +v -1.250000 19.000000 -14.000000 +v -1.154849 19.000000 -13.521646 +v -0.883883 19.000000 -13.116117 +v -0.478354 19.000000 -12.845151 +v -0.000000 19.000000 -12.750000 +v 0.478354 19.000000 -12.845150 +v 0.883883 19.000000 -13.116117 +v 1.154849 19.000000 -13.521646 +v 1.250000 19.000000 -14.000000 +v 1.154849 19.000000 -14.478354 +v 0.883883 19.000000 -14.883883 +v 0.478354 19.000000 -15.154850 +v -0.000000 19.000000 -15.000000 +v -0.382684 19.000000 -14.923880 +v -0.707107 19.000000 -14.707107 +v -0.923880 19.000000 -14.382684 +v -1.000000 19.000000 -14.000000 +v -0.923880 19.000000 -13.617316 +v -0.707107 19.000000 -13.292893 +v -0.382684 19.000000 -13.076120 +v -0.000000 19.000000 -13.000000 +v 0.382683 19.000000 -13.076120 +v 0.707107 19.000000 -13.292893 +v 0.923879 19.000000 -13.617316 +v 1.000000 19.000000 -14.000000 +v 0.923879 19.000000 -14.382684 +v 0.707106 19.000000 -14.707107 +v 0.382683 19.000000 -14.923880 +v -0.000000 17.000000 -15.000000 +v -0.382684 17.000000 -14.923880 +v -0.707107 17.000000 -14.707107 +v -0.923880 17.000000 -14.382684 +v -1.000000 17.000000 -14.000000 +v -0.923880 17.000000 -13.617316 +v -0.707107 17.000000 -13.292893 +v -0.382684 17.000000 -13.076120 +v -0.000000 17.000000 -13.000000 +v 0.382683 17.000000 -13.076120 +v 0.707107 17.000000 -13.292893 +v 0.923879 17.000000 -13.617316 +v 1.000000 17.000000 -14.000000 +v 0.923879 17.000000 -14.382684 +v 0.707106 17.000000 -14.707107 +v 0.382683 17.000000 -14.923880 +v -0.000000 7.000000 -15.500000 +v -0.574025 7.000000 -15.385819 +v -1.060660 7.000000 -15.060660 +v -1.385819 7.000000 -14.574025 +v -1.500000 7.000000 -14.000000 +v -1.385819 7.000000 -13.425975 +v -1.060660 7.000000 -12.939340 +v -0.574025 7.000000 -12.614181 +v -0.000000 7.000000 -12.500000 +v 0.574025 7.000000 -12.614181 +v 1.060660 7.000000 -12.939340 +v 1.385819 7.000000 -13.425975 +v 1.500000 7.000000 -14.000000 +v 1.385819 7.000000 -14.574025 +v 1.060660 7.000000 -15.060660 +v 0.574024 7.000000 -15.385819 +v -0.131548 16.500000 -15.348833 +v 1.348833 16.500000 -14.131548 +v 1.296501 17.500000 -14.394643 +v 1.296501 16.500000 -14.394643 +v 1.348833 17.500000 -14.131548 +v -1.348834 17.500000 -13.868452 +v -1.296501 16.500000 -13.605358 +v -1.296501 17.500000 -13.605358 +v -1.348834 16.500000 -13.868452 +v -0.394643 17.500000 -15.296501 +v -0.394643 16.500000 -15.296501 +v -0.131548 17.500000 -15.348833 +v 0.131547 17.500000 -12.651167 +v 0.394642 16.500000 -12.703499 +v 0.394642 17.500000 -12.703499 +v 0.131547 16.500000 -12.651167 +v -1.046788 16.500000 -14.860751 +v 0.860751 16.500000 -15.046787 +v 0.637710 17.500000 -15.195819 +v 0.637710 16.500000 -15.195819 +v 0.860751 17.500000 -15.046787 +v -0.860751 17.500000 -12.953213 +v -0.637710 16.500000 -12.804181 +v -0.637710 17.500000 -12.804181 +v -0.860751 16.500000 -12.953213 +v -1.195819 17.500000 -14.637710 +v -1.195819 16.500000 -14.637710 +v -1.046788 17.500000 -14.860751 +v 1.046787 17.500000 -13.139249 +v 1.195819 16.500000 -13.362289 +v 1.195819 17.500000 -13.362289 +v 1.046787 16.500000 -13.139249 +v -0.637711 16.500000 -15.195819 +v 1.195818 16.500000 -14.637711 +v 1.046787 17.500000 -14.860751 +v 1.046787 16.500000 -14.860751 +v 1.195818 17.500000 -14.637711 +v -1.195819 17.500000 -13.362289 +v -1.046787 16.500000 -13.139249 +v -1.046787 17.500000 -13.139249 +v -1.195819 16.500000 -13.362289 +v -0.860752 17.500000 -15.046787 +v -0.860752 16.500000 -15.046787 +v -0.637711 17.500000 -15.195819 +v 0.637710 17.500000 -12.804182 +v 0.860751 16.500000 -12.953213 +v 0.860751 17.500000 -12.953213 +v 0.637710 16.500000 -12.804182 +v -1.296501 16.500000 -14.394642 +v 0.394642 16.500000 -15.296501 +v 0.131547 17.500000 -15.348833 +v 0.131547 16.500000 -15.348833 +v 0.394642 17.500000 -15.296501 +v -0.394642 17.500000 -12.703499 +v -0.131547 16.500000 -12.651167 +v -0.131547 17.500000 -12.651167 +v -0.394642 16.500000 -12.703499 +v -1.348834 17.500000 -14.131547 +v -1.348834 16.500000 -14.131547 +v -1.296501 17.500000 -14.394642 +v 1.296501 17.500000 -13.605358 +v 1.348833 16.500000 -13.868453 +v 1.348833 17.500000 -13.868453 +v 1.296501 16.500000 -13.605358 +v 0.000000 7.000000 12.750000 +v -0.478354 7.000000 12.845150 +v -0.883883 7.000000 13.116117 +v -1.154849 7.000000 13.521646 +v -1.250000 7.000000 14.000000 +v -1.154849 7.000000 14.478354 +v -0.883883 7.000000 14.883883 +v -0.478354 7.000000 15.154849 +v -0.000000 7.000000 15.250000 +v 0.478354 7.000000 15.154850 +v 0.883883 7.000000 14.883884 +v 1.154849 7.000000 14.478354 +v 1.250000 7.000000 14.000000 +v 1.154849 7.000000 13.521646 +v 0.883883 7.000000 13.116116 +v 0.478354 7.000000 12.845150 +v 0.000000 16.000000 13.250000 +v -0.287013 16.000000 13.307091 +v -0.530330 16.000000 13.469669 +v -0.692910 16.000000 13.712988 +v -0.750000 16.000000 14.000000 +v -0.692910 16.000000 14.287012 +v -0.530330 16.000000 14.530331 +v -0.287013 16.000000 14.692909 +v -0.000000 16.000000 14.750000 +v 0.287012 16.000000 14.692909 +v 0.530330 16.000000 14.530331 +v 0.692910 16.000000 14.287012 +v 0.750000 16.000000 14.000000 +v 0.692910 16.000000 13.712988 +v 0.530330 16.000000 13.469669 +v 0.287012 16.000000 13.307091 +v 0.000000 17.000000 13.250000 +v -0.287013 17.000000 13.307091 +v -0.530330 17.000000 13.469669 +v -0.692910 17.000000 13.712988 +v -0.750000 17.000000 14.000000 +v -0.692910 17.000000 14.287012 +v -0.530330 17.000000 14.530331 +v -0.287013 17.000000 14.692909 +v -0.000000 17.000000 14.750000 +v 0.287012 17.000000 14.692909 +v 0.530330 17.000000 14.530331 +v 0.692910 17.000000 14.287012 +v 0.750000 17.000000 14.000000 +v 0.692910 17.000000 13.712988 +v 0.530330 17.000000 13.469669 +v 0.287012 17.000000 13.307091 +v -0.000000 17.000000 13.437500 +v -0.215259 17.000000 13.480318 +v -0.397748 17.000000 13.602253 +v -0.519682 17.000000 13.784740 +v -0.562500 17.000000 14.000000 +v -0.519682 17.000000 14.215260 +v -0.397748 17.000000 14.397747 +v -0.215259 17.000000 14.519682 +v -0.000000 17.000000 14.562500 +v 0.215259 17.000000 14.519682 +v 0.397747 17.000000 14.397747 +v 0.519682 17.000000 14.215260 +v 0.562500 17.000000 14.000000 +v 0.519682 17.000000 13.784740 +v 0.397747 17.000000 13.602253 +v 0.215259 17.000000 13.480318 +v -0.000000 16.000000 13.437500 +v -0.215259 16.000000 13.480318 +v -0.397748 16.000000 13.602253 +v -0.519682 16.000000 13.784740 +v -0.562500 16.000000 14.000000 +v -0.519682 16.000000 14.215260 +v -0.397748 16.000000 14.397747 +v -0.215259 16.000000 14.519682 +v -0.000000 16.000000 14.562500 +v 0.215259 16.000000 14.519682 +v 0.397747 16.000000 14.397747 +v 0.519682 16.000000 14.215260 +v 0.562500 16.000000 14.000000 +v 0.519682 16.000000 13.784740 +v 0.397747 16.000000 13.602253 +v 0.215259 16.000000 13.480318 +v 0.000000 15.875000 12.750000 +v -0.478354 15.875000 12.845150 +v -0.883883 15.875000 13.116117 +v -1.154849 15.875000 13.521646 +v -1.250000 15.875000 14.000000 +v -1.154849 15.875000 14.478354 +v -0.883883 15.875000 14.883883 +v -0.478354 15.875000 15.154849 +v -0.000000 15.875000 15.250000 +v 0.478354 15.875000 15.154850 +v 0.883883 15.875000 14.883884 +v 1.154849 15.875000 14.478354 +v 1.250000 15.875000 14.000000 +v 1.154849 15.875000 13.521646 +v 0.883883 15.875000 13.116116 +v 0.478354 15.875000 12.845150 +v 0.000000 16.125000 12.750000 +v -0.478354 16.125000 12.845150 +v -0.883883 16.125000 13.116117 +v -1.154849 16.125000 13.521646 +v -1.250000 16.125000 14.000000 +v -1.154849 16.125000 14.478354 +v -0.883883 16.125000 14.883883 +v -0.478354 16.125000 15.154849 +v -0.000000 16.125000 15.250000 +v 0.478354 16.125000 15.154850 +v 0.883883 16.125000 14.883884 +v 1.154849 16.125000 14.478354 +v 1.250000 16.125000 14.000000 +v 1.154849 16.125000 13.521646 +v 0.883883 16.125000 13.116116 +v 0.478354 16.125000 12.845150 +v 0.000000 12.875000 12.750000 +v -0.478354 12.875000 12.845150 +v -0.883883 12.875000 13.116117 +v -1.154849 12.875000 13.521646 +v -1.250000 12.875000 14.000000 +v -1.154849 12.875000 14.478354 +v -0.883883 12.875000 14.883883 +v -0.478354 12.875000 15.154849 +v -0.000000 12.875000 15.250000 +v 0.478354 12.875000 15.154850 +v 0.883883 12.875000 14.883884 +v 1.154849 12.875000 14.478354 +v 1.250000 12.875000 14.000000 +v 1.154849 12.875000 13.521646 +v 0.883883 12.875000 13.116116 +v 0.478354 12.875000 12.845150 +v 0.000000 13.125000 12.750000 +v -0.478354 13.125000 12.845150 +v -0.883883 13.125000 13.116117 +v -1.154849 13.125000 13.521646 +v -1.250000 13.125000 14.000000 +v -1.154849 13.125000 14.478354 +v -0.883883 13.125000 14.883883 +v -0.478354 13.125000 15.154849 +v -0.000000 13.125000 15.250000 +v 0.478354 13.125000 15.154850 +v 0.883883 13.125000 14.883884 +v 1.154849 13.125000 14.478354 +v 1.250000 13.125000 14.000000 +v 1.154849 13.125000 13.521646 +v 0.883883 13.125000 13.116116 +v 0.478354 13.125000 12.845150 +v 0.000000 9.875000 12.750000 +v -0.478354 9.875000 12.845150 +v -0.883883 9.875000 13.116117 +v -1.154849 9.875000 13.521646 +v -1.250000 9.875000 14.000000 +v -1.154849 9.875000 14.478354 +v -0.883883 9.875000 14.883883 +v -0.478354 9.875000 15.154849 +v -0.000000 9.875000 15.250000 +v 0.478354 9.875000 15.154850 +v 0.883883 9.875000 14.883884 +v 1.154849 9.875000 14.478354 +v 1.250000 9.875000 14.000000 +v 1.154849 9.875000 13.521646 +v 0.883883 9.875000 13.116116 +v 0.478354 9.875000 12.845150 +v 0.000000 10.125000 12.750000 +v -0.478354 10.125000 12.845150 +v -0.883883 10.125000 13.116117 +v -1.154849 10.125000 13.521646 +v -1.250000 10.125000 14.000000 +v -1.154849 10.125000 14.478354 +v -0.883883 10.125000 14.883883 +v -0.478354 10.125000 15.154849 +v -0.000000 10.125000 15.250000 +v 0.478354 10.125000 15.154850 +v 0.883883 10.125000 14.883884 +v 1.154849 10.125000 14.478354 +v 1.250000 10.125000 14.000000 +v 1.154849 10.125000 13.521646 +v 0.883883 10.125000 13.116116 +v 0.478354 10.125000 12.845150 +v 0.000000 7.000000 6.250000 +v -0.287013 7.000000 6.307090 +v -0.530330 7.000000 6.469670 +v -0.692910 7.000000 6.712987 +v -0.750000 7.000000 7.000000 +v -0.692910 7.000000 7.287013 +v -0.530330 7.000000 7.530330 +v -0.287013 7.000000 7.692910 +v -0.000000 7.000000 7.750000 +v 0.287012 7.000000 7.692910 +v 0.530330 7.000000 7.530330 +v 0.692910 7.000000 7.287013 +v 0.750000 7.000000 7.000000 +v 0.692910 7.000000 6.712987 +v 0.530330 7.000000 6.469670 +v 0.287012 7.000000 6.307090 +v 0.000000 17.000000 6.250000 +v -0.287013 17.000000 6.307090 +v -0.530330 17.000000 6.469670 +v -0.692910 17.000000 6.712987 +v -0.750000 17.000000 7.000000 +v -0.692910 17.000000 7.287013 +v -0.530330 17.000000 7.530330 +v -0.287013 17.000000 7.692910 +v -0.000000 17.000000 7.750000 +v 0.287012 17.000000 7.692910 +v 0.530330 17.000000 7.530330 +v 0.692910 17.000000 7.287013 +v 0.750000 17.000000 7.000000 +v 0.692910 17.000000 6.712987 +v 0.530330 17.000000 6.469670 +v 0.287012 17.000000 6.307090 +v -0.000000 17.000000 6.500000 +v -0.191342 17.000000 6.538060 +v -0.353553 17.000000 6.646447 +v -0.461940 17.000000 6.808658 +v -0.500000 17.000000 7.000000 +v -0.461940 17.000000 7.191342 +v -0.353553 17.000000 7.353553 +v -0.191342 17.000000 7.461940 +v -0.000000 17.000000 7.500000 +v 0.191342 17.000000 7.461940 +v 0.353553 17.000000 7.353553 +v 0.461940 17.000000 7.191342 +v 0.500000 17.000000 7.000000 +v 0.461940 17.000000 6.808658 +v 0.353553 17.000000 6.646447 +v 0.191341 17.000000 6.538060 +v -0.000000 16.000000 6.500000 +v -0.191342 16.000000 6.538060 +v -0.353553 16.000000 6.646447 +v -0.461940 16.000000 6.808658 +v -0.500000 16.000000 7.000000 +v -0.461940 16.000000 7.191342 +v -0.353553 16.000000 7.353553 +v -0.191342 16.000000 7.461940 +v -0.000000 16.000000 7.500000 +v 0.191342 16.000000 7.461940 +v 0.353553 16.000000 7.353553 +v 0.461940 16.000000 7.191342 +v 0.500000 16.000000 7.000000 +v 0.461940 16.000000 6.808658 +v 0.353553 16.000000 6.646447 +v 0.191341 16.000000 6.538060 +v -1.500000 13.000000 5.500000 +v -1.500000 13.000000 8.500000 +v 1.500000 13.000000 8.500000 +v 1.500000 13.000000 5.500000 +v -1.500000 12.750000 5.500000 +v -1.500000 12.750000 8.500000 +v 1.500000 12.750000 8.500000 +v 1.500000 12.750000 5.500000 +v -1.500000 10.000000 5.500000 +v -1.500000 10.000000 8.500000 +v 1.500000 10.000000 8.500000 +v 1.500000 10.000000 5.500000 +v -1.500000 9.750000 5.500000 +v -1.500000 9.750000 8.500000 +v 1.500000 9.750000 8.500000 +v 1.500000 9.750000 5.500000 +v -1.125000 16.000000 5.875000 +v -1.125000 16.000000 8.125000 +v 1.125000 16.000000 8.125000 +v 1.125000 16.000000 5.875000 +v -1.125000 15.750000 5.875000 +v -1.125000 15.750000 8.125000 +v 1.125000 15.750000 8.125000 +v 1.125000 15.750000 5.875000 +v -1.375000 7.000000 5.875000 +v -1.125000 7.000000 5.875000 +v -1.375000 7.000000 5.625000 +v -1.125000 7.000000 5.625000 +v -1.125000 12.750000 5.875000 +v -1.125000 12.750000 6.125000 +v -0.875000 12.750000 6.125000 +v -0.875000 12.750000 5.875000 +v -1.375000 7.000000 8.375000 +v -1.125000 7.000000 8.375000 +v -1.375000 7.000000 8.125000 +v -1.125000 7.000000 8.125000 +v -1.125000 12.750000 7.875000 +v -1.125000 12.750000 8.125000 +v -0.875000 12.750000 8.125000 +v -0.875000 12.750000 7.875000 +v 1.125000 7.000000 5.875000 +v 1.375000 7.000000 5.875000 +v 1.125000 7.000000 5.625000 +v 1.375000 7.000000 5.625000 +v 0.875000 12.750000 5.875000 +v 0.875000 12.750000 6.125000 +v 1.125000 12.750000 6.125000 +v 1.125000 12.750000 5.875000 +v 1.125000 7.000000 8.375000 +v 1.375000 7.000000 8.375000 +v 1.125000 7.000000 8.125000 +v 1.375000 7.000000 8.125000 +v 0.875000 12.750000 7.875000 +v 0.875000 12.750000 8.125000 +v 1.125000 12.750000 8.125000 +v 1.125000 12.750000 7.875000 +v -1.500000 10.000000 5.500000 +v -1.500000 10.000000 8.500000 +v 1.500000 10.000000 8.500000 +v 1.500000 10.000000 5.500000 +v -1.500000 10.500000 5.500000 +v -1.500000 10.500000 8.500000 +v 1.500000 10.500000 8.500000 +v 1.500000 10.500000 5.500000 +v -1.500000 13.000000 5.500000 +v -1.500000 13.000000 8.500000 +v 1.500000 13.000000 8.500000 +v 1.500000 13.000000 5.500000 +v -1.500000 13.500000 5.500000 +v -1.500000 13.500000 8.500000 +v 1.500000 13.500000 8.500000 +v 1.500000 13.500000 5.500000 +v -1.125000 16.000000 5.875000 +v -1.125000 16.000000 8.125000 +v 1.125000 16.000000 8.125000 +v 1.125000 16.000000 5.875000 +v -1.125000 16.500000 5.875000 +v -1.125000 16.500000 8.125000 +v 1.125000 16.500000 8.125000 +v 1.125000 16.500000 5.875000 +v -1.125000 15.750000 7.187500 +v -0.702382 14.843692 7.187500 +v -1.125000 15.750000 6.812500 +v -0.702382 14.843692 6.812500 +v 1.125000 15.750000 6.812500 +v 0.702382 14.843692 6.812500 +v 1.125000 15.750000 7.187500 +v 0.702382 14.843692 7.187500 +v 0.187500 15.750000 8.125000 +v 0.187500 14.843692 7.702382 +v -0.187500 15.750000 8.125000 +v -0.187500 14.843692 7.702382 +v -0.187500 15.750000 5.875000 +v -0.187500 14.843692 6.297618 +v 0.187500 15.750000 5.875000 +v 0.187500 14.843692 6.297618 +v -0.662913 15.750000 7.928078 +v -0.364076 14.843692 7.629241 +v -0.928078 15.750000 7.662912 +v -0.629241 14.843692 7.364076 +v 0.662912 15.750000 6.071922 +v 0.364076 14.843692 6.370759 +v 0.928077 15.750000 6.337088 +v 0.629241 14.843692 6.635924 +v 0.928078 15.750000 7.662912 +v 0.629241 14.843692 7.364076 +v 0.662913 15.750000 7.928078 +v 0.364076 14.843692 7.629241 +v -0.928078 15.750000 6.337088 +v -0.629241 14.843692 6.635924 +v -0.662913 15.750000 6.071922 +v -0.364076 14.843692 6.370759 +v 0.000000 7.000000 -1.250000 +v -0.478354 7.000000 -1.154849 +v -0.883883 7.000000 -0.883883 +v -1.154849 7.000000 -0.478354 +v -1.250000 7.000000 0.000000 +v -1.154849 7.000000 0.478354 +v -0.883883 7.000000 0.883883 +v -0.478354 7.000000 1.154849 +v -0.000000 7.000000 1.250000 +v 0.478354 7.000000 1.154850 +v 0.883883 7.000000 0.883884 +v 1.154849 7.000000 0.478354 +v 1.250000 7.000000 -0.000000 +v 1.154849 7.000000 -0.478355 +v 0.883883 7.000000 -0.883884 +v 0.478354 7.000000 -1.154850 +v 0.000000 23.000000 -1.250000 +v -0.478354 23.000000 -1.154849 +v -0.883883 23.000000 -0.883883 +v -1.154849 23.000000 -0.478354 +v -1.250000 23.000000 0.000000 +v -1.154849 23.000000 0.478354 +v -0.883883 23.000000 0.883883 +v -0.478354 23.000000 1.154849 +v -0.000000 23.000000 1.250000 +v 0.478354 23.000000 1.154850 +v 0.883883 23.000000 0.883884 +v 1.154849 23.000000 0.478354 +v 1.250000 23.000000 -0.000000 +v 1.154849 23.000000 -0.478355 +v 0.883883 23.000000 -0.883884 +v 0.478354 23.000000 -1.154850 +v -0.000000 23.000000 -1.000000 +v -0.382684 23.000000 -0.923880 +v -0.707107 23.000000 -0.707107 +v -0.923880 23.000000 -0.382683 +v -1.000000 23.000000 0.000000 +v -0.923880 23.000000 0.382684 +v -0.707107 23.000000 0.707107 +v -0.382684 23.000000 0.923880 +v -0.000000 23.000000 1.000000 +v 0.382683 23.000000 0.923880 +v 0.707107 23.000000 0.707107 +v 0.923879 23.000000 0.382684 +v 1.000000 23.000000 -0.000000 +v 0.923879 23.000000 -0.382684 +v 0.707106 23.000000 -0.707107 +v 0.382683 23.000000 -0.923880 +v -2.000000 16.875000 2.000000 +v 2.000000 16.875000 2.000000 +v -2.000000 16.875000 -2.000000 +v 2.000000 16.875000 -2.000000 +v -2.000000 17.125000 -2.000000 +v -2.000000 17.125000 2.000000 +v 2.000000 17.125000 2.000000 +v 2.000000 17.125000 -2.000000 +v -2.000000 11.875000 2.000000 +v 2.000000 11.875000 2.000000 +v -2.000000 11.875000 -2.000000 +v 2.000000 11.875000 -2.000000 +v -2.000000 12.125000 -2.000000 +v -2.000000 12.125000 2.000000 +v 2.000000 12.125000 2.000000 +v 2.000000 12.125000 -2.000000 +v -1.750000 21.375000 1.750000 +v 1.750000 21.375000 1.750000 +v -1.750000 21.375000 -1.750000 +v 1.750000 21.375000 -1.750000 +v -1.750000 21.625000 -1.750000 +v -1.750000 21.625000 1.750000 +v 1.750000 21.625000 1.750000 +v 1.750000 21.625000 -1.750000 +v -1.500000 16.875000 -1.500000 +v -1.875000 7.000000 -1.875000 +v -1.500000 16.875000 -1.000000 +v -1.875000 7.000000 -1.375000 +v -1.000000 16.875000 -1.500000 +v -1.375000 7.000000 -1.875000 +v -1.000000 16.875000 -1.000000 +v -1.375000 7.000000 -1.375000 +v -1.500000 16.875000 1.000000 +v -1.875000 7.000000 1.375000 +v -1.500000 16.875000 1.500000 +v -1.875000 7.000000 1.875000 +v -1.000000 16.875000 1.000000 +v -1.375000 7.000000 1.375000 +v -1.000000 16.875000 1.500000 +v -1.375000 7.000000 1.875000 +v 1.000000 16.875000 -1.500000 +v 1.375000 7.000000 -1.875000 +v 1.000000 16.875000 -1.000000 +v 1.375000 7.000000 -1.375000 +v 1.500000 16.875000 -1.500000 +v 1.875000 7.000000 -1.875000 +v 1.500000 16.875000 -1.000000 +v 1.875000 7.000000 -1.375000 +v 1.000000 16.875000 1.000000 +v 1.375000 7.000000 1.375000 +v 1.000000 16.875000 1.500000 +v 1.375000 7.000000 1.875000 +v 1.500000 16.875000 1.000000 +v 1.875000 7.000000 1.375000 +v 1.500000 16.875000 1.500000 +v 1.875000 7.000000 1.875000 +v -2.000000 12.125000 -2.000000 +v -2.000000 12.125000 2.000000 +v 2.000000 12.125000 2.000000 +v 2.000000 12.125000 -2.000000 +v -2.000000 13.125000 -2.000000 +v -2.000000 13.125000 2.000000 +v 2.000000 13.125000 2.000000 +v 2.000000 13.125000 -2.000000 +v -2.000000 17.125000 -2.000000 +v -2.000000 17.125000 2.000000 +v 2.000000 17.125000 2.000000 +v 2.000000 17.125000 -2.000000 +v -2.000000 18.125000 -2.000000 +v -2.000000 18.125000 2.000000 +v 2.000000 18.125000 2.000000 +v 2.000000 18.125000 -2.000000 +v -1.750000 21.625000 -1.750000 +v -1.750000 21.625000 1.750000 +v 1.750000 21.625000 1.750000 +v 1.750000 21.625000 -1.750000 +v -1.750000 22.125000 -1.750000 +v -1.750000 22.125000 1.750000 +v 1.750000 22.125000 1.750000 +v 1.750000 22.125000 -1.750000 +v -0.751301 21.375000 1.370019 +v -1.370019 21.375000 0.751301 +v -0.486136 19.834999 1.104854 +v -1.104854 19.834999 0.486136 +v -0.000000 22.000000 -1.000000 +v -0.382684 22.000000 -0.923880 +v -0.707107 22.000000 -0.707107 +v -0.923880 22.000000 -0.382683 +v -1.000000 22.000000 0.000000 +v -0.923880 22.000000 0.382684 +v -0.707107 22.000000 0.707107 +v -0.382684 22.000000 0.923880 +v -0.000000 22.000000 1.000000 +v 0.382683 22.000000 0.923880 +v 0.707107 22.000000 0.707107 +v 0.923879 22.000000 0.382684 +v 1.000000 22.000000 -0.000000 +v 0.923879 22.000000 -0.382684 +v 0.707106 22.000000 -0.707107 +v 0.382683 22.000000 -0.923880 +v 0.751301 21.375000 -1.370020 +v 1.370019 21.375000 -0.751301 +v 0.486136 19.834999 -1.104854 +v 1.104854 19.834999 -0.486136 +v 1.370019 21.375000 0.751301 +v 0.751301 21.375000 1.370019 +v 1.104854 19.834999 0.486136 +v 0.486136 19.834999 1.104854 +v -1.370020 21.375000 -0.751301 +v -0.751301 21.375000 -1.370019 +v -1.104854 19.834999 -0.486136 +v -0.486136 19.834999 -1.104854 +v -1.875000 4.500000 -1.875000 +v -1.875000 4.500000 -1.375000 +v -1.375000 4.500000 -1.875000 +v -1.375000 4.500000 -1.375000 +v -1.875000 4.500000 1.375000 +v -1.875000 4.500000 1.875000 +v -1.375000 4.500000 1.375000 +v -1.375000 4.500000 1.875000 +v 1.375000 4.500000 -1.875000 +v 1.375000 4.500000 -1.375000 +v 1.875000 4.500000 -1.875000 +v 1.875000 4.500000 -1.375000 +v 1.375000 4.500000 1.375000 +v 1.375000 4.500000 1.875000 +v 1.875000 4.500000 1.375000 +v 1.875000 4.500000 1.875000 +v 0.375000 4.250000 -2.125000 +v 0.198223 4.250000 -2.051777 +v 0.125000 4.250000 -1.875000 +v 0.198223 4.250000 -1.698223 +v 0.375000 4.250000 -1.625000 +v 0.551777 4.250000 -1.698223 +v 0.625000 4.250000 -1.875000 +v 0.551777 4.250000 -2.051777 +v 0.375000 10.250000 -2.125000 +v 0.198223 10.250000 -2.051777 +v 0.125000 10.250000 -1.875000 +v 0.198223 10.250000 -1.698223 +v 0.375000 10.250000 -1.625000 +v 0.551777 10.250000 -1.698223 +v 0.625000 10.250000 -1.875000 +v 0.551777 10.250000 -2.051777 +v 0.375000 10.603554 -1.978553 +v 0.198223 10.551777 -1.926777 +v 0.125000 10.426777 -1.801777 +v 0.198223 10.301777 -1.676777 +v 0.551777 10.301777 -1.676777 +v 0.625000 10.426777 -1.801777 +v 0.551777 10.551777 -1.926777 +v 0.375000 10.750000 -1.625000 +v 0.198223 10.676777 -1.625000 +v 0.125000 10.500000 -1.625000 +v 0.198223 10.323223 -1.625000 +v 0.551777 10.323223 -1.625000 +v 0.625000 10.500000 -1.625000 +v 0.551777 10.676777 -1.625000 +v 0.375000 10.250000 -0.875000 +v 0.375000 10.750000 -0.875000 +v 0.198223 10.676777 -0.875000 +v 0.125000 10.500000 -0.875000 +v 0.198223 10.323223 -0.875000 +v 0.551777 10.323223 -0.875000 +v 0.625000 10.500000 -0.875000 +v 0.551777 10.676777 -0.875000 +v -0.350000 4.250000 -2.125000 +v -0.526777 4.250000 -2.051777 +v -0.600000 4.250000 -1.875000 +v -0.526777 4.250000 -1.698223 +v -0.350000 4.250000 -1.625000 +v -0.173223 4.250000 -1.698223 +v -0.100000 4.250000 -1.875000 +v -0.173223 4.250000 -2.051777 +v -0.350000 8.750000 -2.125000 +v -0.526777 8.750000 -2.051777 +v -0.600000 8.750000 -1.875000 +v -0.526777 8.750000 -1.698223 +v -0.350000 8.750000 -1.625000 +v -0.173223 8.750000 -1.698223 +v -0.100000 8.750000 -1.875000 +v -0.173223 8.750000 -2.051777 +v -0.350000 9.103554 -1.978553 +v -0.526777 9.051777 -1.926777 +v -0.600000 8.926777 -1.801777 +v -0.526777 8.801777 -1.676777 +v -0.173223 8.801777 -1.676777 +v -0.100000 8.926777 -1.801777 +v -0.173223 9.051777 -1.926777 +v -0.350000 9.250000 -1.625000 +v -0.526777 9.176777 -1.625000 +v -0.600000 9.000000 -1.625000 +v -0.526777 8.823223 -1.625000 +v -0.173223 8.823223 -1.625000 +v -0.100000 9.000000 -1.625000 +v -0.173223 9.176777 -1.625000 +v -0.350000 8.750000 -0.875000 +v -0.350000 9.250000 -0.875000 +v -0.526777 9.176777 -0.875000 +v -0.600000 9.000000 -0.875000 +v -0.526777 8.823223 -0.875000 +v -0.173223 8.823223 -0.875000 +v -0.100000 9.000000 -0.875000 +v -0.173223 9.176777 -0.875000 +v -0.375000 4.250000 2.125000 +v -0.198223 4.250000 2.051777 +v -0.125000 4.250000 1.875000 +v -0.198223 4.250000 1.698223 +v -0.375000 4.250000 1.625000 +v -0.551777 4.250000 1.698223 +v -0.625000 4.250000 1.875000 +v -0.551777 4.250000 2.051777 +v -0.375000 10.250000 2.125000 +v -0.198223 10.250000 2.051777 +v -0.125000 10.250000 1.875000 +v -0.198223 10.250000 1.698223 +v -0.375000 10.250000 1.625000 +v -0.551777 10.250000 1.698223 +v -0.625000 10.250000 1.875000 +v -0.551777 10.250000 2.051777 +v -0.375000 10.603554 1.978553 +v -0.198223 10.551777 1.926777 +v -0.125000 10.426777 1.801777 +v -0.198223 10.301777 1.676777 +v -0.551777 10.301777 1.676777 +v -0.625000 10.426777 1.801777 +v -0.551777 10.551777 1.926777 +v -0.375000 10.750000 1.625000 +v -0.198223 10.676777 1.625000 +v -0.125000 10.500000 1.625000 +v -0.198223 10.323223 1.625000 +v -0.551777 10.323223 1.625000 +v -0.625000 10.500000 1.625000 +v -0.551777 10.676777 1.625000 +v -0.375000 10.250000 0.875000 +v -0.375000 10.750000 0.875000 +v -0.198223 10.676777 0.875000 +v -0.125000 10.500000 0.875000 +v -0.198223 10.323223 0.875000 +v -0.551777 10.323223 0.875000 +v -0.625000 10.500000 0.875000 +v -0.551777 10.676777 0.875000 +v 0.350000 4.250000 2.125000 +v 0.526777 4.250000 2.051777 +v 0.600000 4.250000 1.875000 +v 0.526777 4.250000 1.698223 +v 0.350000 4.250000 1.625000 +v 0.173223 4.250000 1.698223 +v 0.100000 4.250000 1.875000 +v 0.173223 4.250000 2.051777 +v 0.350000 8.750000 2.125000 +v 0.526777 8.750000 2.051777 +v 0.600000 8.750000 1.875000 +v 0.526777 8.750000 1.698223 +v 0.350000 8.750000 1.625000 +v 0.173223 8.750000 1.698223 +v 0.100000 8.750000 1.875000 +v 0.173223 8.750000 2.051777 +v 0.350000 9.103554 1.978553 +v 0.526777 9.051777 1.926777 +v 0.600000 8.926777 1.801777 +v 0.526777 8.801777 1.676777 +v 0.173223 8.801777 1.676777 +v 0.100000 8.926777 1.801777 +v 0.173223 9.051777 1.926777 +v 0.350000 9.250000 1.625000 +v 0.526777 9.176777 1.625000 +v 0.600000 9.000000 1.625000 +v 0.526777 8.823223 1.625000 +v 0.173223 8.823223 1.625000 +v 0.100000 9.000000 1.625000 +v 0.173223 9.176777 1.625000 +v 0.350000 8.750000 0.875000 +v 0.350000 9.250000 0.875000 +v 0.526777 9.176777 0.875000 +v 0.600000 9.000000 0.875000 +v 0.526777 8.823223 0.875000 +v 0.173223 8.823223 0.875000 +v 0.100000 9.000000 0.875000 +v 0.173223 9.176777 0.875000 +v -2.125000 4.250000 -0.375000 +v -2.051777 4.250000 -0.198223 +v -1.875000 4.250000 -0.125000 +v -1.698223 4.250000 -0.198223 +v -1.625000 4.250000 -0.375000 +v -1.698223 4.250000 -0.551777 +v -1.875000 4.250000 -0.625000 +v -2.051777 4.250000 -0.551777 +v -2.125000 10.250000 -0.375000 +v -2.051777 10.250000 -0.198223 +v -1.875000 10.250000 -0.125000 +v -1.698223 10.250000 -0.198223 +v -1.625000 10.250000 -0.375000 +v -1.698223 10.250000 -0.551777 +v -1.875000 10.250000 -0.625000 +v -2.051777 10.250000 -0.551777 +v -1.978553 10.603554 -0.375000 +v -1.926777 10.551777 -0.198223 +v -1.801777 10.426777 -0.125000 +v -1.676777 10.301777 -0.198223 +v -1.676777 10.301777 -0.551777 +v -1.801777 10.426777 -0.625000 +v -1.926777 10.551777 -0.551777 +v -1.625000 10.750000 -0.375000 +v -1.625000 10.676777 -0.198223 +v -1.625000 10.500000 -0.125000 +v -1.625000 10.323223 -0.198223 +v -1.625000 10.323223 -0.551777 +v -1.625000 10.500000 -0.625000 +v -1.625000 10.676777 -0.551777 +v -0.875000 10.250000 -0.375000 +v -0.875000 10.750000 -0.375000 +v -0.875000 10.676777 -0.198223 +v -0.875000 10.500000 -0.125000 +v -0.875000 10.323223 -0.198223 +v -0.875000 10.323223 -0.551777 +v -0.875000 10.500000 -0.625000 +v -0.875000 10.676777 -0.551777 +v -2.125000 4.250000 0.350000 +v -2.051777 4.250000 0.526777 +v -1.875000 4.250000 0.600000 +v -1.698223 4.250000 0.526777 +v -1.625000 4.250000 0.350000 +v -1.698223 4.250000 0.173223 +v -1.875000 4.250000 0.100000 +v -2.051777 4.250000 0.173223 +v -2.125000 8.750000 0.350000 +v -2.051777 8.750000 0.526777 +v -1.875000 8.750000 0.600000 +v -1.698223 8.750000 0.526777 +v -1.625000 8.750000 0.350000 +v -1.698223 8.750000 0.173223 +v -1.875000 8.750000 0.100000 +v -2.051777 8.750000 0.173223 +v -1.978553 9.103554 0.350000 +v -1.926777 9.051777 0.526777 +v -1.801777 8.926777 0.600000 +v -1.676777 8.801777 0.526777 +v -1.676777 8.801777 0.173223 +v -1.801777 8.926777 0.100000 +v -1.926777 9.051777 0.173223 +v -1.625000 9.250000 0.350000 +v -1.625000 9.176777 0.526777 +v -1.625000 9.000000 0.600000 +v -1.625000 8.823223 0.526777 +v -1.625000 8.823223 0.173223 +v -1.625000 9.000000 0.100000 +v -1.625000 9.176777 0.173223 +v -0.875000 8.750000 0.350000 +v -0.875000 9.250000 0.350000 +v -0.875000 9.176777 0.526777 +v -0.875000 9.000000 0.600000 +v -0.875000 8.823223 0.526777 +v -0.875000 8.823223 0.173223 +v -0.875000 9.000000 0.100000 +v -0.875000 9.176777 0.173223 +v 2.125000 4.250000 0.375000 +v 2.051777 4.250000 0.198223 +v 1.875000 4.250000 0.125000 +v 1.698223 4.250000 0.198223 +v 1.625000 4.250000 0.375000 +v 1.698223 4.250000 0.551777 +v 1.875000 4.250000 0.625000 +v 2.051777 4.250000 0.551776 +v 2.125000 10.250000 0.375000 +v 2.051777 10.250000 0.198223 +v 1.875000 10.250000 0.125000 +v 1.698223 10.250000 0.198223 +v 1.625000 10.250000 0.375000 +v 1.698223 10.250000 0.551777 +v 1.875000 10.250000 0.625000 +v 2.051777 10.250000 0.551776 +v 1.978554 10.603554 0.375000 +v 1.926777 10.551777 0.198223 +v 1.801777 10.426777 0.125000 +v 1.676777 10.301777 0.198223 +v 1.676777 10.301777 0.551777 +v 1.801777 10.426777 0.625000 +v 1.926777 10.551777 0.551777 +v 1.625000 10.750000 0.375000 +v 1.625000 10.676777 0.198223 +v 1.625000 10.500000 0.125000 +v 1.625000 10.323223 0.198223 +v 1.625000 10.323223 0.551777 +v 1.625000 10.500000 0.625000 +v 1.625000 10.676777 0.551777 +v 0.875000 10.250000 0.375000 +v 0.875000 10.750000 0.375000 +v 0.875000 10.676777 0.198223 +v 0.875000 10.500000 0.125000 +v 0.875000 10.323223 0.198223 +v 0.875000 10.323223 0.551777 +v 0.875000 10.500000 0.625000 +v 0.875000 10.676777 0.551777 +v 2.125000 4.250000 -0.350000 +v 2.051777 4.250000 -0.526777 +v 1.875000 4.250000 -0.600000 +v 1.698223 4.250000 -0.526777 +v 1.625000 4.250000 -0.350000 +v 1.698223 4.250000 -0.173223 +v 1.875000 4.250000 -0.100000 +v 2.051777 4.250000 -0.173223 +v 2.125000 8.750000 -0.350000 +v 2.051777 8.750000 -0.526777 +v 1.875000 8.750000 -0.600000 +v 1.698223 8.750000 -0.526777 +v 1.625000 8.750000 -0.350000 +v 1.698223 8.750000 -0.173223 +v 1.875000 8.750000 -0.100000 +v 2.051777 8.750000 -0.173223 +v 1.978553 9.103554 -0.350000 +v 1.926777 9.051777 -0.526777 +v 1.801777 8.926777 -0.600000 +v 1.676777 8.801777 -0.526777 +v 1.676777 8.801777 -0.173223 +v 1.801777 8.926777 -0.100000 +v 1.926777 9.051777 -0.173223 +v 1.625000 9.250000 -0.350000 +v 1.625000 9.176777 -0.526777 +v 1.625000 9.000000 -0.600000 +v 1.625000 8.823223 -0.526777 +v 1.625000 8.823223 -0.173223 +v 1.625000 9.000000 -0.100000 +v 1.625000 9.176777 -0.173223 +v 0.875000 8.750000 -0.350000 +v 0.875000 9.250000 -0.350000 +v 0.875000 9.176777 -0.526777 +v 0.875000 9.000000 -0.600000 +v 0.875000 8.823223 -0.526777 +v 0.875000 8.823223 -0.173223 +v 0.875000 9.000000 -0.100000 +v 0.875000 9.176777 -0.173223 +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.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.0000 -0.7071 -0.7071 +vn 0.0000 0.7071 -0.7071 +vn 0.0000 0.7071 0.7071 +vn 0.7071 0.7071 0.0000 +vn -0.7071 0.7071 0.0000 +vn 0.0000 1.0000 0.0000 +vn 0.9956 0.0933 0.0000 +vn -0.9956 0.0933 0.0000 +vn 0.0000 0.0933 -0.9956 +vn 0.0000 0.0933 0.9956 +vn -0.9808 0.0000 0.1951 +vn 0.9808 0.0000 -0.1951 +vn 0.1951 0.0000 0.9808 +vn -0.1951 0.0000 -0.9808 +vn -0.5556 0.0000 0.8315 +vn 0.5556 0.0000 -0.8315 +vn 0.8315 0.0000 0.5556 +vn -0.8315 0.0000 -0.5556 +vn -0.8315 0.0000 0.5556 +vn 0.8315 0.0000 -0.5556 +vn 0.5556 0.0000 0.8315 +vn -0.5556 0.0000 -0.8315 +vn -0.1951 0.0000 0.9808 +vn 0.1951 0.0000 -0.9808 +vn 0.9808 0.0000 0.1951 +vn -0.9808 0.0000 -0.1951 +vn 0.9991 -0.0434 0.0000 +vn -0.9991 0.0434 0.0000 +vn 0.0000 0.0434 -0.9991 +vn 0.0000 -0.0434 0.9991 +vn 0.0000 -0.0434 -0.9991 +vn 0.0000 0.0434 0.9991 +vn 0.9991 0.0434 0.0000 +vn -0.9991 -0.0434 0.0000 +vn -0.9063 -0.4226 0.0000 +vn 0.9063 -0.4226 0.0000 +vn 0.0000 -0.4226 0.9063 +vn 0.0000 -0.4226 -0.9063 +vn -0.6409 -0.4226 0.6409 +vn 0.6409 -0.4226 -0.6409 +vn 0.6409 -0.4226 0.6409 +vn -0.6409 -0.4226 -0.6409 +vn -0.9993 0.0379 0.0000 +vn 0.9993 -0.0379 0.0000 +vn 0.0000 -0.0379 0.9993 +vn 0.0000 0.0379 -0.9993 +vn 0.0000 0.0379 0.9993 +vn 0.0000 -0.0379 -0.9993 +vn -0.9993 -0.0379 0.0000 +vn 0.9993 0.0379 0.0000 +vn -0.6870 -0.2366 0.6870 +vn 0.6870 -0.2366 -0.6870 +vn 0.6870 -0.2366 0.6870 +vn -0.6870 -0.2366 -0.6870 +vn -0.9239 0.0000 0.3827 +vn 0.9239 0.0000 -0.3827 +vn -0.7071 0.0000 0.7071 +vn 0.7071 0.0000 -0.7071 +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.7071 0.0000 -0.7071 +vn 0.7071 0.0000 0.7071 +vn -0.9239 0.0000 -0.3827 +vn 0.9239 0.0000 0.3827 +vn -0.6975 0.1644 -0.6975 +vn -0.9113 0.1644 -0.3775 +vn -0.9864 0.1644 -0.0000 +vn -0.9113 0.1644 0.3775 +vn -0.6975 0.1644 0.6975 +vn -0.3775 0.1644 0.9113 +vn -0.0000 0.1644 0.9864 +vn 0.3775 0.1644 0.9113 +vn 0.6975 0.1644 0.6975 +vn 0.9113 0.1644 0.3775 +vn 0.9864 0.1644 0.0000 +vn 0.9113 0.1644 -0.3775 +vn 0.6975 0.1644 -0.6975 +vn 0.3775 0.1644 -0.9113 +vn 0.0000 0.1644 -0.9864 +vn -0.3775 0.1644 -0.9113 +vn -0.9225 0.0555 -0.3821 +vn -0.7060 0.0555 -0.7060 +vn -0.9985 0.0555 -0.0000 +vn -0.9225 0.0555 0.3821 +vn -0.7060 0.0555 0.7060 +vn -0.3821 0.0555 0.9225 +vn -0.0000 0.0555 0.9985 +vn 0.3821 0.0555 0.9225 +vn 0.7060 0.0555 0.7060 +vn 0.9225 0.0555 0.3821 +vn 0.9985 0.0555 0.0000 +vn 0.9225 0.0555 -0.3821 +vn 0.7060 0.0555 -0.7060 +vn 0.3821 0.0555 -0.9225 +vn -0.0000 0.0555 -0.9985 +vn -0.3821 0.0555 -0.9225 +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.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.7574 -0.4617 0.4617 +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.0000 0.9824 -0.1866 +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.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.9955 0.0671 0.0671 +vn -0.6630 0.5294 0.5294 +vn -0.7574 -0.4617 -0.4617 +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.7574 -0.4617 -0.4617 +vn 0.9987 0.0473 0.0196 +vn -0.0000 0.9824 0.1866 +vn 0.7263 -0.6737 -0.1363 +vn -0.7194 0.1448 -0.6794 +vn 0.6737 -0.1363 -0.7263 +vn 0.6737 -0.1363 0.7263 +vn -0.7194 0.1448 0.6794 +vn -0.0473 0.0196 -0.9987 +vn -0.0473 0.0196 0.9987 +vn -0.9824 0.1866 0.0000 +vn -0.0671 0.0671 0.9955 +vn -0.5294 0.5294 0.6630 +vn -0.0671 0.0671 -0.9955 +vn 0.4617 -0.4617 0.7574 +vn -0.5294 0.5293 -0.6630 +vn 0.4617 -0.4617 -0.7574 +vn -0.1448 0.7194 -0.6794 +vn -0.0196 0.0473 -0.9987 +vn 0.1363 -0.6737 -0.7263 +vn -0.1448 0.7194 0.6794 +vn -0.0196 0.0473 0.9987 +vn -0.1866 0.9824 0.0000 +vn 0.1363 -0.6737 0.7263 +vn -0.5294 0.5294 -0.6630 +vn 0.7194 0.1448 0.6794 +vn -0.6737 -0.1363 0.7263 +vn -0.6737 -0.1363 -0.7263 +vn 0.7194 0.1448 -0.6794 +vn 0.0473 0.0196 0.9987 +vn 0.0473 0.0196 -0.9987 +vn 0.9824 0.1866 -0.0000 +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.1448 0.7194 0.6794 +vn 0.0196 0.0473 0.9987 +vn -0.1363 -0.6737 0.7263 +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.5294 0.5293 0.6630 +s off +f 3//1 2//1 1//1 +f 6//2 9//2 5//2 +f 3//3 8//3 4//3 +f 2//4 5//4 1//4 +f 4//5 6//5 2//5 +f 1//6 7//6 3//6 +f 12//5 15//5 10//5 +f 8//7 10//7 6//7 +f 5//8 11//8 7//8 +f 7//9 12//9 8//9 +f 13//10 20//10 16//10 +f 9//6 13//6 11//6 +f 11//3 16//3 12//3 +f 10//4 14//4 9//4 +f 20//5 23//5 19//5 +f 15//11 18//11 14//11 +f 16//12 19//12 15//12 +f 14//13 17//13 13//13 +f 18//6 21//6 17//6 +f 17//3 24//3 20//3 +f 19//4 22//4 18//4 +f 28//14 26//14 25//14 +f 32//5 29//5 30//5 +f 36//3 31//3 32//3 +f 33//4 30//4 29//4 +f 33//6 36//6 34//6 +f 30//1 36//1 32//1 +f 40//5 37//5 38//5 +f 44//3 39//3 40//3 +f 41//4 38//4 37//4 +f 41//6 44//6 42//6 +f 38//1 44//1 40//1 +f 48//5 45//5 46//5 +f 52//3 47//3 48//3 +f 49//4 46//4 45//4 +f 49//6 52//6 50//6 +f 46//1 52//1 48//1 +f 56//5 53//5 54//5 +f 60//3 55//3 56//3 +f 57//4 54//4 53//4 +f 57//6 60//6 58//6 +f 54//1 60//1 56//1 +f 64//5 61//5 62//5 +f 68//3 63//3 64//3 +f 65//4 62//4 61//4 +f 65//6 68//6 66//6 +f 126//14 129//14 132//14 +f 72//5 69//5 70//5 +f 76//3 71//3 72//3 +f 73//4 70//4 69//4 +f 73//6 76//6 74//6 +f 132//14 125//14 126//14 +f 80//5 77//5 78//5 +f 84//3 79//3 80//3 +f 81//4 78//4 77//4 +f 81//6 84//6 82//6 +f 131//14 127//14 125//14 +f 88//5 85//5 86//5 +f 92//3 87//3 88//3 +f 89//4 86//4 85//4 +f 89//6 92//6 90//6 +f 129//14 127//14 130//14 +f 93//1 96//1 94//1 +f 99//14 97//14 98//14 +f 93//4 100//4 95//4 +f 94//5 97//5 93//5 +f 96//3 98//3 94//3 +f 95//6 99//6 96//6 +f 101//1 104//1 102//1 +f 107//14 105//14 106//14 +f 104//3 106//3 102//3 +f 103//6 107//6 104//6 +f 101//4 108//4 103//4 +f 102//5 105//5 101//5 +f 109//1 112//1 110//1 +f 115//14 113//14 114//14 +f 109//5 116//5 111//5 +f 110//3 113//3 109//3 +f 112//6 114//6 110//6 +f 111//4 115//4 112//4 +f 117//1 120//1 118//1 +f 123//14 121//14 122//14 +f 120//6 122//6 118//6 +f 119//4 123//4 120//4 +f 117//5 124//5 119//5 +f 118//3 121//3 117//3 +f 137//1 134//1 140//1 +f 133//1 140//1 134//1 +f 135//1 139//1 133//1 +f 135//1 137//1 138//1 +f 143//5 142//5 141//5 +f 147//3 146//3 145//3 +f 151//6 150//6 149//6 +f 155//4 154//4 153//4 +f 157//1 160//1 158//1 +f 163//14 161//14 162//14 +f 157//4 164//4 159//4 +f 158//5 161//5 157//5 +f 160//3 162//3 158//3 +f 159//6 163//6 160//6 +f 165//1 168//1 166//1 +f 171//14 169//14 170//14 +f 168//3 170//3 166//3 +f 167//6 171//6 168//6 +f 165//4 172//4 167//4 +f 166//5 169//5 165//5 +f 173//1 176//1 174//1 +f 179//14 177//14 178//14 +f 173//5 180//5 175//5 +f 174//3 177//3 173//3 +f 176//6 178//6 174//6 +f 175//4 179//4 176//4 +f 181//1 184//1 182//1 +f 187//14 185//14 186//14 +f 184//6 186//6 182//6 +f 183//4 187//4 184//4 +f 181//5 188//5 183//5 +f 182//3 185//3 181//3 +f 192//15 195//15 191//15 +f 193//14 200//14 196//14 +f 190//16 193//16 189//16 +f 189//17 196//17 192//17 +f 191//18 194//18 190//18 +f 200//6 203//6 199//6 +f 195//14 198//14 194//14 +f 196//14 199//14 195//14 +f 194//14 197//14 193//14 +f 203//14 201//14 202//14 +f 198//5 201//5 197//5 +f 197//4 204//4 200//4 +f 199//3 202//3 198//3 +f 224//1 239//1 223//1 +f 225//1 240//1 224//1 +f 225//1 242//1 241//1 +f 227//1 242//1 226//1 +f 228//1 243//1 227//1 +f 229//1 244//1 228//1 +f 230//1 245//1 229//1 +f 230//1 247//1 246//1 +f 231//1 248//1 247//1 +f 233//1 248//1 232//1 +f 234//1 249//1 233//1 +f 235//1 250//1 234//1 +f 236//1 251//1 235//1 +f 236//1 237//1 252//1 +f 221//1 238//1 237//1 +f 222//1 239//1 238//1 +f 255//14 270//14 254//14 +f 256//14 271//14 255//14 +f 256//14 273//14 272//14 +f 258//14 273//14 257//14 +f 259//14 274//14 258//14 +f 259//14 276//14 275//14 +f 260//14 277//14 276//14 +f 261//14 278//14 277//14 +f 263//14 278//14 262//14 +f 264//14 279//14 263//14 +f 264//14 281//14 280//14 +f 266//14 281//14 265//14 +f 267//14 282//14 266//14 +f 267//14 284//14 283//14 +f 253//14 284//14 268//14 +f 254//14 269//14 253//14 +f 319//14 334//14 318//14 +f 320//14 335//14 319//14 +f 320//14 337//14 336//14 +f 322//14 337//14 321//14 +f 323//14 338//14 322//14 +f 323//14 340//14 339//14 +f 324//14 341//14 340//14 +f 325//14 342//14 341//14 +f 327//14 342//14 326//14 +f 328//14 343//14 327//14 +f 328//14 345//14 344//14 +f 330//14 345//14 329//14 +f 331//14 346//14 330//14 +f 331//14 348//14 347//14 +f 317//14 348//14 332//14 +f 318//14 333//14 317//14 +f 289//1 304//1 288//1 +f 289//1 306//1 305//1 +f 291//1 306//1 290//1 +f 292//1 307//1 291//1 +f 293//1 308//1 292//1 +f 294//1 309//1 293//1 +f 294//1 311//1 310//1 +f 295//1 312//1 311//1 +f 297//1 312//1 296//1 +f 298//1 313//1 297//1 +f 299//1 314//1 298//1 +f 300//1 315//1 299//1 +f 300//1 301//1 316//1 +f 285//1 302//1 301//1 +f 286//1 303//1 302//1 +f 288//1 303//1 287//1 +f 352//14 367//14 351//14 +f 352//14 369//14 368//14 +f 354//14 369//14 353//14 +f 355//14 370//14 354//14 +f 356//14 371//14 355//14 +f 356//14 373//14 372//14 +f 357//14 374//14 373//14 +f 359//14 374//14 358//14 +f 359//14 376//14 375//14 +f 360//14 377//14 376//14 +f 362//14 377//14 361//14 +f 363//14 378//14 362//14 +f 363//14 380//14 379//14 +f 349//14 380//14 364//14 +f 350//14 365//14 349//14 +f 351//14 366//14 350//14 +f 395//14 381//14 389//14 +f 419//19 418//19 421//19 +f 416//20 417//20 414//20 +f 426//21 425//21 428//21 +f 423//22 424//22 413//22 +f 435//23 434//23 437//23 +f 432//24 433//24 430//24 +f 442//25 441//25 444//25 +f 439//26 440//26 429//26 +f 451//27 450//27 453//27 +f 448//28 449//28 446//28 +f 458//29 457//29 460//29 +f 455//30 456//30 445//30 +f 467//31 466//31 469//31 +f 464//32 465//32 462//32 +f 474//33 473//33 476//33 +f 471//34 472//34 461//34 +f 499//27 514//27 498//27 +f 507//28 522//28 506//28 +f 500//23 515//23 499//23 +f 508//24 523//24 507//24 +f 501//31 516//31 500//31 +f 494//22 509//22 493//22 +f 493//32 524//32 508//32 +f 502//21 517//21 501//21 +f 495//30 510//30 494//30 +f 503//29 518//29 502//29 +f 496//26 511//26 495//26 +f 504//25 519//25 503//25 +f 497//34 512//34 496//34 +f 505//33 520//33 504//33 +f 498//19 513//19 497//19 +f 506//20 521//20 505//20 +f 520//14 535//14 519//14 +f 512//14 529//14 528//14 +f 520//14 537//14 536//14 +f 514//14 529//14 513//14 +f 522//14 537//14 521//14 +f 514//14 531//14 530//14 +f 522//14 539//14 538//14 +f 515//14 532//14 531//14 +f 523//14 540//14 539//14 +f 516//14 533//14 532//14 +f 510//14 525//14 509//14 +f 524//14 525//14 540//14 +f 518//14 533//14 517//14 +f 511//14 526//14 510//14 +f 519//14 534//14 518//14 +f 512//14 527//14 511//14 +f 555//14 541//14 549//14 +f 581//14 585//14 573//14 +f 567//1 563//1 559//1 +f 613//14 617//14 605//14 +f 599//1 595//1 591//1 +f 645//14 649//14 637//14 +f 631//1 627//1 623//1 +f 671//14 686//14 670//14 +f 672//14 687//14 671//14 +f 673//14 688//14 672//14 +f 674//14 689//14 673//14 +f 675//14 690//14 674//14 +f 675//14 692//14 691//14 +f 677//14 692//14 676//14 +f 677//14 694//14 693//14 +f 679//14 694//14 678//14 +f 679//14 696//14 695//14 +f 681//14 696//14 680//14 +f 682//14 697//14 681//14 +f 683//14 698//14 682//14 +f 683//14 700//14 699//14 +f 669//14 700//14 684//14 +f 670//14 685//14 669//14 +f 713//14 715//14 701//14 +f 717//14 719//14 720//14 +f 723//1 721//1 724//1 +f 719//5 724//5 720//5 +f 717//6 722//6 718//6 +f 720//3 721//3 717//3 +f 718//4 723//4 719//4 +f 725//14 727//14 728//14 +f 731//1 729//1 732//1 +f 727//5 732//5 728//5 +f 725//6 730//6 726//6 +f 728//3 729//3 725//3 +f 726//4 731//4 727//4 +f 733//14 735//14 736//14 +f 739//1 737//1 740//1 +f 735//5 740//5 736//5 +f 733//6 738//6 734//6 +f 736//3 737//3 733//3 +f 734//4 739//4 735//4 +f 752//35 755//35 750//35 +f 751//36 754//36 753//36 +f 742//35 748//35 747//35 +f 741//36 745//36 743//36 +f 744//37 745//37 748//37 +f 742//38 746//38 741//38 +f 752//39 753//39 756//39 +f 750//40 754//40 749//40 +f 768//41 771//41 766//41 +f 767//42 770//42 769//42 +f 758//41 764//41 763//41 +f 757//42 761//42 759//42 +f 759//37 764//37 760//37 +f 757//38 763//38 762//38 +f 767//39 772//39 768//39 +f 765//40 771//40 770//40 +f 780//5 775//5 776//5 +f 778//6 773//6 774//6 +f 777//3 776//3 773//3 +f 779//4 774//4 775//4 +f 788//5 783//5 784//5 +f 786//6 781//6 782//6 +f 785//3 784//3 781//3 +f 787//4 782//4 783//4 +f 796//5 791//5 792//5 +f 794//6 789//6 790//6 +f 793//3 792//3 789//3 +f 795//4 790//4 791//4 +f 799//43 798//43 797//43 +f 803//44 802//44 801//44 +f 807//45 806//45 805//45 +f 811//46 810//46 809//46 +f 815//47 814//47 813//47 +f 819//48 818//48 817//48 +f 821//49 824//49 822//49 +f 827//50 826//50 825//50 +f 848//14 863//14 847//14 +f 849//14 864//14 848//14 +f 850//14 865//14 849//14 +f 851//14 866//14 850//14 +f 851//14 868//14 867//14 +f 852//14 869//14 868//14 +f 853//14 870//14 869//14 +f 854//14 871//14 870//14 +f 855//14 872//14 871//14 +f 857//14 872//14 856//14 +f 858//14 873//14 857//14 +f 859//14 874//14 858//14 +f 859//14 876//14 875//14 +f 845//14 876//14 860//14 +f 846//14 861//14 845//14 +f 847//14 862//14 846//14 +f 879//1 878//1 877//1 +f 883//14 881//14 882//14 +f 878//4 882//4 877//4 +f 880//5 883//5 878//5 +f 877//6 881//6 879//6 +f 879//3 884//3 880//3 +f 887//1 886//1 885//1 +f 891//14 889//14 890//14 +f 886//4 890//4 885//4 +f 888//5 891//5 886//5 +f 885//6 889//6 887//6 +f 887//3 892//3 888//3 +f 895//1 894//1 893//1 +f 899//14 897//14 898//14 +f 894//4 898//4 893//4 +f 896//5 899//5 894//5 +f 893//6 897//6 895//6 +f 895//3 900//3 896//3 +f 904//51 901//51 902//51 +f 905//52 908//52 906//52 +f 948//5 943//5 944//5 +f 903//53 908//53 907//53 +f 946//6 941//6 942//6 +f 901//54 906//54 902//54 +f 910//51 911//51 909//51 +f 914//52 915//52 916//52 +f 945//3 944//3 941//3 +f 911//55 916//55 915//55 +f 947//4 942//4 943//4 +f 909//56 914//56 910//56 +f 920//57 917//57 918//57 +f 921//58 924//58 922//58 +f 939//4 934//4 935//4 +f 920//53 923//53 919//53 +f 937//3 936//3 933//3 +f 918//54 921//54 922//54 +f 926//57 927//57 925//57 +f 930//58 931//58 932//58 +f 938//6 933//6 934//6 +f 928//55 931//55 927//55 +f 940//5 935//5 936//5 +f 926//56 929//56 930//56 +f 956//5 951//5 952//5 +f 954//6 949//6 950//6 +f 953//3 952//3 949//3 +f 955//4 950//4 951//4 +f 958//59 959//59 957//59 +f 971//14 973//14 961//14 +f 978//60 979//60 977//60 +f 982//61 983//61 981//61 +f 986//62 987//62 985//62 +f 930//3 1001//3 926//3 +f 904//4 992//4 908//4 +f 916//5 995//5 914//5 +f 906//3 989//3 902//3 +f 918//6 998//6 920//6 +f 920//4 1000//4 924//4 +f 932//5 1003//5 930//5 +f 922//3 997//3 918//3 +f 908//5 991//5 906//5 +f 910//6 994//6 912//6 +f 912//4 996//4 916//4 +f 924//5 999//5 922//5 +f 914//3 993//3 910//3 +f 926//6 1002//6 928//6 +f 928//4 1004//4 932//4 +f 902//6 990//6 904//6 +f 3//1 4//1 2//1 +f 6//2 10//2 9//2 +f 3//3 7//3 8//3 +f 2//4 6//4 5//4 +f 4//5 8//5 6//5 +f 1//6 5//6 7//6 +f 12//5 16//5 15//5 +f 8//7 12//7 10//7 +f 5//8 9//8 11//8 +f 7//9 11//9 12//9 +f 13//10 17//10 20//10 +f 9//6 14//6 13//6 +f 11//3 13//3 16//3 +f 10//4 15//4 14//4 +f 20//5 24//5 23//5 +f 15//11 19//11 18//11 +f 16//12 20//12 19//12 +f 14//13 18//13 17//13 +f 18//6 22//6 21//6 +f 17//3 21//3 24//3 +f 19//4 23//4 22//4 +f 28//14 27//14 26//14 +f 32//5 31//5 29//5 +f 36//3 35//3 31//3 +f 33//4 34//4 30//4 +f 33//6 35//6 36//6 +f 30//1 34//1 36//1 +f 40//5 39//5 37//5 +f 44//3 43//3 39//3 +f 41//4 42//4 38//4 +f 41//6 43//6 44//6 +f 38//1 42//1 44//1 +f 48//5 47//5 45//5 +f 52//3 51//3 47//3 +f 49//4 50//4 46//4 +f 49//6 51//6 52//6 +f 46//1 50//1 52//1 +f 56//5 55//5 53//5 +f 60//3 59//3 55//3 +f 57//4 58//4 54//4 +f 57//6 59//6 60//6 +f 54//1 58//1 60//1 +f 64//5 63//5 61//5 +f 68//3 67//3 63//3 +f 65//4 66//4 62//4 +f 65//6 67//6 68//6 +f 126//14 128//14 129//14 +f 72//5 71//5 69//5 +f 76//3 75//3 71//3 +f 73//4 74//4 70//4 +f 73//6 75//6 76//6 +f 132//14 131//14 125//14 +f 80//5 79//5 77//5 +f 84//3 83//3 79//3 +f 81//4 82//4 78//4 +f 81//6 83//6 84//6 +f 131//14 130//14 127//14 +f 88//5 87//5 85//5 +f 92//3 91//3 87//3 +f 89//4 90//4 86//4 +f 89//6 91//6 92//6 +f 129//14 128//14 127//14 +f 93//1 95//1 96//1 +f 99//14 100//14 97//14 +f 93//4 97//4 100//4 +f 94//5 98//5 97//5 +f 96//3 99//3 98//3 +f 95//6 100//6 99//6 +f 101//1 103//1 104//1 +f 107//14 108//14 105//14 +f 104//3 107//3 106//3 +f 103//6 108//6 107//6 +f 101//4 105//4 108//4 +f 102//5 106//5 105//5 +f 109//1 111//1 112//1 +f 115//14 116//14 113//14 +f 109//5 113//5 116//5 +f 110//3 114//3 113//3 +f 112//6 115//6 114//6 +f 111//4 116//4 115//4 +f 117//1 119//1 120//1 +f 123//14 124//14 121//14 +f 120//6 123//6 122//6 +f 119//4 124//4 123//4 +f 117//5 121//5 124//5 +f 118//3 122//3 121//3 +f 137//1 136//1 134//1 +f 133//1 139//1 140//1 +f 135//1 138//1 139//1 +f 135//1 136//1 137//1 +f 143//5 144//5 142//5 +f 147//3 148//3 146//3 +f 151//6 152//6 150//6 +f 155//4 156//4 154//4 +f 157//1 159//1 160//1 +f 163//14 164//14 161//14 +f 157//4 161//4 164//4 +f 158//5 162//5 161//5 +f 160//3 163//3 162//3 +f 159//6 164//6 163//6 +f 165//1 167//1 168//1 +f 171//14 172//14 169//14 +f 168//3 171//3 170//3 +f 167//6 172//6 171//6 +f 165//4 169//4 172//4 +f 166//5 170//5 169//5 +f 173//1 175//1 176//1 +f 179//14 180//14 177//14 +f 173//5 177//5 180//5 +f 174//3 178//3 177//3 +f 176//6 179//6 178//6 +f 175//4 180//4 179//4 +f 181//1 183//1 184//1 +f 187//14 188//14 185//14 +f 184//6 187//6 186//6 +f 183//4 188//4 187//4 +f 181//5 185//5 188//5 +f 182//3 186//3 185//3 +f 192//15 196//15 195//15 +f 193//14 197//14 200//14 +f 190//16 194//16 193//16 +f 189//17 193//17 196//17 +f 191//18 195//18 194//18 +f 200//6 204//6 203//6 +f 195//14 199//14 198//14 +f 196//14 200//14 199//14 +f 194//14 198//14 197//14 +f 203//14 204//14 201//14 +f 198//5 202//5 201//5 +f 197//4 201//4 204//4 +f 199//3 203//3 202//3 +f 224//1 240//1 239//1 +f 225//1 241//1 240//1 +f 225//1 226//1 242//1 +f 227//1 243//1 242//1 +f 228//1 244//1 243//1 +f 229//1 245//1 244//1 +f 230//1 246//1 245//1 +f 230//1 231//1 247//1 +f 231//1 232//1 248//1 +f 233//1 249//1 248//1 +f 234//1 250//1 249//1 +f 235//1 251//1 250//1 +f 236//1 252//1 251//1 +f 236//1 221//1 237//1 +f 221//1 222//1 238//1 +f 222//1 223//1 239//1 +f 255//14 271//14 270//14 +f 256//14 272//14 271//14 +f 256//14 257//14 273//14 +f 258//14 274//14 273//14 +f 259//14 275//14 274//14 +f 259//14 260//14 276//14 +f 260//14 261//14 277//14 +f 261//14 262//14 278//14 +f 263//14 279//14 278//14 +f 264//14 280//14 279//14 +f 264//14 265//14 281//14 +f 266//14 282//14 281//14 +f 267//14 283//14 282//14 +f 267//14 268//14 284//14 +f 253//14 269//14 284//14 +f 254//14 270//14 269//14 +f 319//14 335//14 334//14 +f 320//14 336//14 335//14 +f 320//14 321//14 337//14 +f 322//14 338//14 337//14 +f 323//14 339//14 338//14 +f 323//14 324//14 340//14 +f 324//14 325//14 341//14 +f 325//14 326//14 342//14 +f 327//14 343//14 342//14 +f 328//14 344//14 343//14 +f 328//14 329//14 345//14 +f 330//14 346//14 345//14 +f 331//14 347//14 346//14 +f 331//14 332//14 348//14 +f 317//14 333//14 348//14 +f 318//14 334//14 333//14 +f 289//1 305//1 304//1 +f 289//1 290//1 306//1 +f 291//1 307//1 306//1 +f 292//1 308//1 307//1 +f 293//1 309//1 308//1 +f 294//1 310//1 309//1 +f 294//1 295//1 311//1 +f 295//1 296//1 312//1 +f 297//1 313//1 312//1 +f 298//1 314//1 313//1 +f 299//1 315//1 314//1 +f 300//1 316//1 315//1 +f 300//1 285//1 301//1 +f 285//1 286//1 302//1 +f 286//1 287//1 303//1 +f 288//1 304//1 303//1 +f 352//14 368//14 367//14 +f 352//14 353//14 369//14 +f 354//14 370//14 369//14 +f 355//14 371//14 370//14 +f 356//14 372//14 371//14 +f 356//14 357//14 373//14 +f 357//14 358//14 374//14 +f 359//14 375//14 374//14 +f 359//14 360//14 376//14 +f 360//14 361//14 377//14 +f 362//14 378//14 377//14 +f 363//14 379//14 378//14 +f 363//14 364//14 380//14 +f 349//14 365//14 380//14 +f 350//14 366//14 365//14 +f 351//14 367//14 366//14 +f 381//14 382//14 383//14 +f 383//14 384//14 385//14 +f 385//14 386//14 387//14 +f 387//14 388//14 389//14 +f 389//14 390//14 391//14 +f 391//14 392//14 393//14 +f 393//14 394//14 395//14 +f 395//14 396//14 381//14 +f 381//14 383//14 385//14 +f 385//14 387//14 381//14 +f 387//14 389//14 381//14 +f 389//14 391//14 393//14 +f 393//14 395//14 389//14 +f 419//19 420//19 418//19 +f 416//20 415//20 417//20 +f 426//21 427//21 425//21 +f 423//22 422//22 424//22 +f 435//23 436//23 434//23 +f 432//24 431//24 433//24 +f 442//25 443//25 441//25 +f 439//26 438//26 440//26 +f 451//27 452//27 450//27 +f 448//28 447//28 449//28 +f 458//29 459//29 457//29 +f 455//30 454//30 456//30 +f 467//31 468//31 466//31 +f 464//32 463//32 465//32 +f 474//33 475//33 473//33 +f 471//34 470//34 472//34 +f 499//27 515//27 514//27 +f 507//28 523//28 522//28 +f 500//23 516//23 515//23 +f 508//24 524//24 523//24 +f 501//31 517//31 516//31 +f 494//22 510//22 509//22 +f 493//32 509//32 524//32 +f 502//21 518//21 517//21 +f 495//30 511//30 510//30 +f 503//29 519//29 518//29 +f 496//26 512//26 511//26 +f 504//25 520//25 519//25 +f 497//34 513//34 512//34 +f 505//33 521//33 520//33 +f 498//19 514//19 513//19 +f 506//20 522//20 521//20 +f 520//14 536//14 535//14 +f 512//14 513//14 529//14 +f 520//14 521//14 537//14 +f 514//14 530//14 529//14 +f 522//14 538//14 537//14 +f 514//14 515//14 531//14 +f 522//14 523//14 539//14 +f 515//14 516//14 532//14 +f 523//14 524//14 540//14 +f 516//14 517//14 533//14 +f 510//14 526//14 525//14 +f 524//14 509//14 525//14 +f 518//14 534//14 533//14 +f 511//14 527//14 526//14 +f 519//14 535//14 534//14 +f 512//14 528//14 527//14 +f 541//14 542//14 543//14 +f 543//14 544//14 545//14 +f 545//14 546//14 547//14 +f 547//14 548//14 549//14 +f 549//14 550//14 551//14 +f 551//14 552//14 553//14 +f 553//14 554//14 555//14 +f 555//14 556//14 541//14 +f 541//14 543//14 549//14 +f 543//14 545//14 549//14 +f 545//14 547//14 549//14 +f 549//14 551//14 553//14 +f 553//14 555//14 549//14 +f 573//14 574//14 575//14 +f 575//14 576//14 577//14 +f 577//14 578//14 579//14 +f 579//14 580//14 581//14 +f 581//14 582//14 583//14 +f 583//14 584//14 581//14 +f 584//14 585//14 581//14 +f 585//14 586//14 573//14 +f 586//14 587//14 573//14 +f 587//14 588//14 573//14 +f 573//14 575//14 577//14 +f 577//14 579//14 573//14 +f 579//14 581//14 573//14 +f 559//1 558//1 557//1 +f 557//1 572//1 571//1 +f 571//1 570//1 569//1 +f 569//1 568//1 567//1 +f 567//1 566//1 565//1 +f 565//1 564//1 567//1 +f 564//1 563//1 567//1 +f 563//1 562//1 561//1 +f 561//1 560//1 559//1 +f 559//1 557//1 571//1 +f 571//1 569//1 559//1 +f 569//1 567//1 559//1 +f 563//1 561//1 559//1 +f 605//14 606//14 607//14 +f 607//14 608//14 609//14 +f 609//14 610//14 611//14 +f 611//14 612//14 613//14 +f 613//14 614//14 615//14 +f 615//14 616//14 613//14 +f 616//14 617//14 613//14 +f 617//14 618//14 605//14 +f 618//14 619//14 605//14 +f 619//14 620//14 605//14 +f 605//14 607//14 609//14 +f 609//14 611//14 605//14 +f 611//14 613//14 605//14 +f 591//1 590//1 589//1 +f 589//1 604//1 603//1 +f 603//1 602//1 601//1 +f 601//1 600//1 599//1 +f 599//1 598//1 597//1 +f 597//1 596//1 599//1 +f 596//1 595//1 599//1 +f 595//1 594//1 593//1 +f 593//1 592//1 591//1 +f 591//1 589//1 603//1 +f 603//1 601//1 591//1 +f 601//1 599//1 591//1 +f 595//1 593//1 591//1 +f 637//14 638//14 639//14 +f 639//14 640//14 641//14 +f 641//14 642//14 643//14 +f 643//14 644//14 645//14 +f 645//14 646//14 647//14 +f 647//14 648//14 645//14 +f 648//14 649//14 645//14 +f 649//14 650//14 637//14 +f 650//14 651//14 637//14 +f 651//14 652//14 637//14 +f 637//14 639//14 641//14 +f 641//14 643//14 637//14 +f 643//14 645//14 637//14 +f 623//1 622//1 621//1 +f 621//1 636//1 635//1 +f 635//1 634//1 633//1 +f 633//1 632//1 631//1 +f 631//1 630//1 629//1 +f 629//1 628//1 631//1 +f 628//1 627//1 631//1 +f 627//1 626//1 625//1 +f 625//1 624//1 623//1 +f 623//1 621//1 635//1 +f 635//1 633//1 623//1 +f 633//1 631//1 623//1 +f 627//1 625//1 623//1 +f 671//14 687//14 686//14 +f 672//14 688//14 687//14 +f 673//14 689//14 688//14 +f 674//14 690//14 689//14 +f 675//14 691//14 690//14 +f 675//14 676//14 692//14 +f 677//14 693//14 692//14 +f 677//14 678//14 694//14 +f 679//14 695//14 694//14 +f 679//14 680//14 696//14 +f 681//14 697//14 696//14 +f 682//14 698//14 697//14 +f 683//14 699//14 698//14 +f 683//14 684//14 700//14 +f 669//14 685//14 700//14 +f 670//14 686//14 685//14 +f 701//14 702//14 703//14 +f 703//14 704//14 705//14 +f 705//14 706//14 707//14 +f 707//14 708//14 709//14 +f 709//14 710//14 711//14 +f 711//14 712//14 713//14 +f 713//14 714//14 715//14 +f 715//14 716//14 701//14 +f 701//14 703//14 705//14 +f 705//14 707//14 701//14 +f 707//14 709//14 701//14 +f 709//14 711//14 701//14 +f 711//14 713//14 701//14 +f 717//14 718//14 719//14 +f 723//1 722//1 721//1 +f 719//5 723//5 724//5 +f 717//6 721//6 722//6 +f 720//3 724//3 721//3 +f 718//4 722//4 723//4 +f 725//14 726//14 727//14 +f 731//1 730//1 729//1 +f 727//5 731//5 732//5 +f 725//6 729//6 730//6 +f 728//3 732//3 729//3 +f 726//4 730//4 731//4 +f 733//14 734//14 735//14 +f 739//1 738//1 737//1 +f 735//5 739//5 740//5 +f 733//6 737//6 738//6 +f 736//3 740//3 737//3 +f 734//4 738//4 739//4 +f 752//35 756//35 755//35 +f 751//36 749//36 754//36 +f 742//35 744//35 748//35 +f 741//36 746//36 745//36 +f 744//37 743//37 745//37 +f 742//38 747//38 746//38 +f 752//39 751//39 753//39 +f 750//40 755//40 754//40 +f 768//41 772//41 771//41 +f 767//42 765//42 770//42 +f 758//41 760//41 764//41 +f 757//42 762//42 761//42 +f 759//37 761//37 764//37 +f 757//38 758//38 763//38 +f 767//39 769//39 772//39 +f 765//40 766//40 771//40 +f 780//5 779//5 775//5 +f 778//6 777//6 773//6 +f 777//3 780//3 776//3 +f 779//4 778//4 774//4 +f 788//5 787//5 783//5 +f 786//6 785//6 781//6 +f 785//3 788//3 784//3 +f 787//4 786//4 782//4 +f 796//5 795//5 791//5 +f 794//6 793//6 789//6 +f 793//3 796//3 792//3 +f 795//4 794//4 790//4 +f 799//43 800//43 798//43 +f 803//44 804//44 802//44 +f 807//45 808//45 806//45 +f 811//46 812//46 810//46 +f 815//47 816//47 814//47 +f 819//48 820//48 818//48 +f 821//49 823//49 824//49 +f 827//50 828//50 826//50 +f 848//14 864//14 863//14 +f 849//14 865//14 864//14 +f 850//14 866//14 865//14 +f 851//14 867//14 866//14 +f 851//14 852//14 868//14 +f 852//14 853//14 869//14 +f 853//14 854//14 870//14 +f 854//14 855//14 871//14 +f 855//14 856//14 872//14 +f 857//14 873//14 872//14 +f 858//14 874//14 873//14 +f 859//14 875//14 874//14 +f 859//14 860//14 876//14 +f 845//14 861//14 876//14 +f 846//14 862//14 861//14 +f 847//14 863//14 862//14 +f 879//1 880//1 878//1 +f 883//14 884//14 881//14 +f 878//4 883//4 882//4 +f 880//5 884//5 883//5 +f 877//6 882//6 881//6 +f 879//3 881//3 884//3 +f 887//1 888//1 886//1 +f 891//14 892//14 889//14 +f 886//4 891//4 890//4 +f 888//5 892//5 891//5 +f 885//6 890//6 889//6 +f 887//3 889//3 892//3 +f 895//1 896//1 894//1 +f 899//14 900//14 897//14 +f 894//4 899//4 898//4 +f 896//5 900//5 899//5 +f 893//6 898//6 897//6 +f 895//3 897//3 900//3 +f 904//51 903//51 901//51 +f 905//52 907//52 908//52 +f 948//5 947//5 943//5 +f 903//53 904//53 908//53 +f 946//6 945//6 941//6 +f 901//54 905//54 906//54 +f 910//51 912//51 911//51 +f 914//52 913//52 915//52 +f 945//3 948//3 944//3 +f 911//55 912//55 916//55 +f 947//4 946//4 942//4 +f 909//56 913//56 914//56 +f 920//57 919//57 917//57 +f 921//58 923//58 924//58 +f 939//4 938//4 934//4 +f 920//53 924//53 923//53 +f 937//3 940//3 936//3 +f 918//54 917//54 921//54 +f 926//57 928//57 927//57 +f 930//58 929//58 931//58 +f 938//6 937//6 933//6 +f 928//55 932//55 931//55 +f 940//5 939//5 935//5 +f 926//56 925//56 929//56 +f 956//5 955//5 951//5 +f 954//6 953//6 949//6 +f 953//3 956//3 952//3 +f 955//4 954//4 950//4 +f 958//59 960//59 959//59 +f 961//14 962//14 963//14 +f 963//14 964//14 965//14 +f 965//14 966//14 967//14 +f 967//14 968//14 969//14 +f 969//14 970//14 971//14 +f 971//14 972//14 973//14 +f 973//14 974//14 961//14 +f 974//14 975//14 961//14 +f 975//14 976//14 961//14 +f 961//14 963//14 965//14 +f 965//14 967//14 961//14 +f 967//14 969//14 961//14 +f 969//14 971//14 961//14 +f 978//60 980//60 979//60 +f 982//61 984//61 983//61 +f 986//62 988//62 987//62 +f 930//3 1003//3 1001//3 +f 904//4 990//4 992//4 +f 916//5 996//5 995//5 +f 906//3 991//3 989//3 +f 918//6 997//6 998//6 +f 920//4 998//4 1000//4 +f 932//5 1004//5 1003//5 +f 922//3 999//3 997//3 +f 908//5 992//5 991//5 +f 910//6 993//6 994//6 +f 912//4 994//4 996//4 +f 924//5 1000//5 999//5 +f 914//3 995//3 993//3 +f 926//6 1001//6 1002//6 +f 928//4 1002//4 1004//4 +f 902//6 989//6 990//6 +s 1 +f 210//63 225//6 209//6 +f 218//64 233//5 217//5 +f 211//65 226//63 210//63 +f 219//66 234//64 218//64 +f 212//67 227//65 211//65 +f 220//68 235//66 219//66 +f 213//4 228//67 212//67 +f 206//69 221//3 205//3 +f 205//3 236//68 220//68 +f 214//70 229//4 213//4 +f 207//71 222//69 206//69 +f 215//72 230//70 214//70 +f 208//73 223//71 207//71 +f 216//74 231//72 215//72 +f 209//6 224//73 208//73 +f 217//5 232//74 216//74 +f 244//67 259//65 243//65 +f 252//68 267//66 251//66 +f 245//4 260//67 244//67 +f 238//69 253//3 237//3 +f 237//3 268//68 252//68 +f 246//70 261//4 245//4 +f 239//71 254//69 238//69 +f 247//72 262//70 246//70 +f 240//73 255//71 239//71 +f 248//74 263//72 247//72 +f 241//6 256//73 240//73 +f 249//5 264//74 248//74 +f 242//63 257//6 241//6 +f 250//64 265//5 249//5 +f 243//65 258//63 242//63 +f 251//66 266//64 250//64 +f 271//71 286//69 270//69 +f 279//72 294//70 278//70 +f 272//73 287//71 271//71 +f 280//74 295//72 279//72 +f 273//6 288//73 272//73 +f 281//5 296//74 280//74 +f 274//63 289//6 273//6 +f 282//64 297//5 281//5 +f 275//65 290//63 274//63 +f 283//66 298//64 282//64 +f 276//67 291//65 275//65 +f 284//68 299//66 283//66 +f 277//4 292//67 276//67 +f 270//69 285//3 269//3 +f 269//3 300//68 284//68 +f 278//70 293//4 277//4 +f 308//67 323//65 307//65 +f 316//68 331//66 315//66 +f 309//4 324//67 308//67 +f 302//69 317//3 301//3 +f 301//3 332//68 316//68 +f 310//70 325//4 309//4 +f 303//71 318//69 302//69 +f 311//72 326//70 310//70 +f 304//73 319//71 303//71 +f 312//74 327//72 311//72 +f 305//6 320//73 304//73 +f 313//5 328//74 312//74 +f 306//63 321//6 305//6 +f 314//64 329//5 313//5 +f 307//65 322//63 306//63 +f 315//66 330//64 314//64 +f 335//71 350//69 334//69 +f 343//72 358//70 342//70 +f 336//73 351//71 335//71 +f 344//74 359//72 343//72 +f 337//6 352//73 336//73 +f 345//5 360//74 344//74 +f 338//63 353//6 337//6 +f 346//64 361//5 345//5 +f 339//65 354//63 338//63 +f 347//66 362//64 346//64 +f 340//67 355//65 339//65 +f 348//68 363//66 347//66 +f 341//4 356//67 340//67 +f 334//69 349//3 333//3 +f 333//3 364//68 348//68 +f 342//70 357//4 341//4 +f 375//71 390//69 374//69 +f 368//74 383//72 367//72 +f 376//73 391//71 375//71 +f 369//5 384//74 368//74 +f 377//6 392//73 376//73 +f 370//64 385//5 369//5 +f 378//63 393//6 377//6 +f 371//66 386//64 370//64 +f 379//65 394//63 378//63 +f 372//68 387//66 371//66 +f 380//67 395//65 379//65 +f 373//3 388//68 372//68 +f 366//70 381//4 365//4 +f 365//4 396//67 380//67 +f 374//69 389//3 373//3 +f 367//72 382//70 366//70 +f 399//75 208//76 207//75 +f 400//76 209//77 208//76 +f 209//77 402//78 210//78 +f 402//78 211//79 210//78 +f 403//79 212//80 211//79 +f 404//80 213//81 212//80 +f 405//81 214//82 213//81 +f 406//82 215//83 214//82 +f 407//83 216//84 215//83 +f 408//84 217//85 216//84 +f 409//85 218//86 217//85 +f 218//86 411//87 219//87 +f 411//87 220//88 219//87 +f 412//88 205//89 220//88 +f 397//89 206//90 205//89 +f 206//90 399//75 207//75 +f 480//91 495//92 479//92 +f 481//93 496//91 480//91 +f 482//94 497//93 481//93 +f 483//95 498//94 482//94 +f 484//96 499//95 483//95 +f 485//97 500//96 484//96 +f 486//98 501//97 485//97 +f 486//98 503//99 502//98 +f 488//100 503//99 487//99 +f 489//101 504//100 488//100 +f 490//102 505//101 489//101 +f 491//103 506//102 490//102 +f 492//104 507//103 491//103 +f 477//105 508//104 492//104 +f 478//106 493//105 477//105 +f 478//106 495//92 494//106 +f 526//70 541//4 525//4 +f 525//4 556//67 540//67 +f 534//69 549//3 533//3 +f 527//72 542//70 526//70 +f 535//71 550//69 534//69 +f 528//74 543//72 527//72 +f 536//73 551//71 535//71 +f 529//5 544//74 528//74 +f 537//6 552//73 536//73 +f 530//64 545//5 529//5 +f 538//63 553//6 537//6 +f 531//66 546//64 530//64 +f 539//65 554//63 538//63 +f 532//68 547//66 531//66 +f 540//67 555//65 539//65 +f 533//3 548//68 532//68 +f 568//74 583//72 567//72 +f 561//6 576//73 560//73 +f 569//5 584//74 568//74 +f 562//63 577//6 561//6 +f 570//64 585//5 569//5 +f 563//65 578//63 562//63 +f 571//66 586//64 570//64 +f 564//67 579//65 563//65 +f 572//68 587//66 571//66 +f 565//4 580//67 564//67 +f 558//69 573//3 557//3 +f 557//3 588//68 572//68 +f 566//70 581//4 565//4 +f 559//71 574//69 558//69 +f 567//72 582//70 566//70 +f 560//73 575//71 559//71 +f 600//74 615//72 599//72 +f 593//6 608//73 592//73 +f 601//5 616//74 600//74 +f 594//63 609//6 593//6 +f 602//64 617//5 601//5 +f 595//65 610//63 594//63 +f 603//66 618//64 602//64 +f 596//67 611//65 595//65 +f 604//68 619//66 603//66 +f 597//4 612//67 596//67 +f 590//69 605//3 589//3 +f 589//3 620//68 604//68 +f 598//70 613//4 597//4 +f 591//71 606//69 590//69 +f 599//72 614//70 598//70 +f 592//73 607//71 591//71 +f 632//74 647//72 631//72 +f 625//6 640//73 624//73 +f 633//5 648//74 632//74 +f 626//63 641//6 625//6 +f 634//64 649//5 633//5 +f 627//65 642//63 626//63 +f 635//66 650//64 634//64 +f 628//67 643//65 627//65 +f 636//68 651//66 635//66 +f 629//4 644//67 628//67 +f 622//69 637//3 621//3 +f 621//3 652//68 636//68 +f 630//70 645//4 629//4 +f 623//71 638//69 622//69 +f 631//72 646//70 630//70 +f 624//73 639//71 623//71 +f 668//68 683//66 667//66 +f 661//4 676//67 660//67 +f 654//69 669//3 653//3 +f 653//3 684//68 668//68 +f 662//70 677//4 661//4 +f 655//71 670//69 654//69 +f 663//72 678//70 662//70 +f 656//73 671//71 655//71 +f 664//74 679//72 663//72 +f 657//6 672//73 656//73 +f 665//5 680//74 664//74 +f 658//63 673//6 657//6 +f 666//64 681//5 665//5 +f 659//65 674//63 658//63 +f 667//66 682//64 666//64 +f 660//67 675//65 659//65 +f 689//5 704//74 688//74 +f 697//6 712//73 696//73 +f 690//64 705//5 689//5 +f 698//63 713//6 697//6 +f 691//66 706//64 690//64 +f 699//65 714//63 698//63 +f 692//68 707//66 691//66 +f 700//67 715//65 699//65 +f 693//3 708//68 692//68 +f 686//70 701//4 685//4 +f 685//4 716//67 700//67 +f 694//69 709//3 693//3 +f 687//72 702//70 686//70 +f 695//71 710//69 694//69 +f 688//74 703//72 687//72 +f 696//73 711//71 695//71 +f 839//72 854//70 838//70 +f 832//73 847//71 831//71 +f 840//74 855//72 839//72 +f 833//6 848//73 832//73 +f 841//5 856//74 840//74 +f 834//63 849//6 833//6 +f 842//64 857//5 841//5 +f 835//65 850//63 834//63 +f 843//66 858//64 842//64 +f 836//67 851//65 835//65 +f 844//68 859//66 843//66 +f 837//4 852//67 836//67 +f 830//69 845//3 829//3 +f 829//3 860//68 844//68 +f 838//70 853//4 837//4 +f 831//71 846//69 830//69 +f 873//6 972//73 872//73 +f 866//64 965//5 865//5 +f 874//63 973//6 873//6 +f 867//66 966//64 866//64 +f 875//65 974//63 874//63 +f 868//68 967//66 867//66 +f 876//67 975//65 875//65 +f 869//3 968//68 868//68 +f 862//70 961//4 861//4 +f 861//4 976//67 876//67 +f 870//69 969//3 869//3 +f 863//72 962//70 862//70 +f 871//71 970//69 870//69 +f 864//74 963//72 863//72 +f 872//73 971//71 871//71 +f 865//5 964//74 864//74 +f 1005//3 1020//107 1012//66 +f 1011//5 1018//108 1010//72 +f 1009//4 1016//109 1008//65 +f 1007//6 1014//110 1006//71 +f 1012//66 1019//111 1011//5 +f 1010//72 1017//2 1009//4 +f 1008//65 1015//112 1007//6 +f 1006//71 1013//113 1005//3 +f 1015//112 1022//114 1014//110 +f 1019//111 1027//115 1026//116 +f 1015//112 1024//117 1023//118 +f 1013//113 1022//114 1021//10 +f 1013//113 1027//115 1020//107 +f 1018//108 1026//116 1025//119 +f 1021//10 1034//120 1027//115 +f 1025//119 1033//121 1032//122 +f 1023//118 1029//123 1022//114 +f 1026//116 1034//120 1033//121 +f 1024//117 1030//124 1023//118 +f 1021//10 1029//123 1028//125 +f 1016//109 1017//2 1024//117 +f 1024//117 1017//2 1031//126 +f 1018//108 1025//119 1017//2 +f 1025//119 1032//122 1017//2 +f 1032//122 1035//1 1017//2 +f 1028//125 1042//12 1034//120 +f 1031//126 1035//1 1039//8 +f 1033//121 1040//7 1032//122 +f 1030//124 1037//13 1029//123 +f 1033//121 1042//12 1041//5 +f 1031//126 1038//6 1030//124 +f 1028//125 1037//13 1036//14 +f 1043//3 1058//107 1050//66 +f 1049//5 1056//108 1048//72 +f 1047//4 1054//109 1046//65 +f 1045//6 1052//110 1044//71 +f 1050//66 1057//111 1049//5 +f 1048//72 1055//2 1047//4 +f 1046//65 1053//112 1045//6 +f 1044//71 1051//113 1043//3 +f 1052//110 1061//118 1060//114 +f 1057//111 1065//115 1064//116 +f 1053//112 1062//117 1061//118 +f 1051//113 1060//114 1059//10 +f 1051//113 1065//115 1058//107 +f 1057//111 1063//119 1056//108 +f 1059//10 1072//120 1065//115 +f 1063//119 1071//121 1070//122 +f 1061//118 1067//123 1060//114 +f 1065//115 1071//121 1064//116 +f 1062//117 1068//124 1061//118 +f 1059//10 1067//123 1066//125 +f 1054//109 1055//2 1062//117 +f 1062//117 1055//2 1069//126 +f 1056//108 1063//119 1055//2 +f 1063//119 1070//122 1055//2 +f 1070//122 1073//1 1055//2 +f 1066//125 1080//12 1072//120 +f 1069//126 1073//1 1077//8 +f 1071//121 1078//7 1070//122 +f 1068//124 1075//13 1067//123 +f 1071//121 1080//12 1079//5 +f 1069//126 1076//6 1068//124 +f 1066//125 1075//13 1074//14 +f 1081//4 1096//127 1088//65 +f 1087//6 1094//128 1086//71 +f 1085//3 1092//129 1084//66 +f 1083//5 1090//130 1082//72 +f 1088//65 1095//131 1087//6 +f 1086//71 1093//9 1085//3 +f 1084//66 1091//132 1083//5 +f 1082//72 1089//133 1081//4 +f 1091//132 1098//134 1090//130 +f 1096//127 1102//135 1095//131 +f 1092//129 1099//136 1091//132 +f 1089//133 1098//134 1097//11 +f 1096//127 1097//11 1103//137 +f 1094//128 1102//135 1101//138 +f 1097//11 1110//139 1103//137 +f 1101//138 1109//140 1108//141 +f 1099//136 1105//142 1098//134 +f 1102//135 1110//139 1109//140 +f 1100//143 1106//144 1099//136 +f 1097//11 1105//142 1104//145 +f 1092//129 1093//9 1100//143 +f 1100//143 1093//9 1107//146 +f 1094//128 1101//138 1093//9 +f 1101//138 1108//141 1093//9 +f 1108//141 1111//1 1093//9 +f 1104//145 1118//13 1110//139 +f 1107//146 1111//1 1115//7 +f 1109//140 1116//8 1108//141 +f 1106//144 1113//12 1105//142 +f 1109//140 1118//13 1117//6 +f 1107//146 1114//5 1106//144 +f 1104//145 1113//12 1112//14 +f 1119//4 1134//127 1126//65 +f 1125//6 1132//128 1124//71 +f 1123//3 1130//129 1122//66 +f 1121//5 1128//130 1120//72 +f 1126//65 1133//131 1125//6 +f 1124//71 1131//9 1123//3 +f 1122//66 1129//132 1121//5 +f 1120//72 1127//133 1119//4 +f 1129//132 1136//134 1128//130 +f 1133//131 1141//137 1140//135 +f 1129//132 1138//143 1137//136 +f 1127//133 1136//134 1135//11 +f 1127//133 1141//137 1134//127 +f 1133//131 1139//138 1132//128 +f 1135//11 1148//139 1141//137 +f 1139//138 1147//140 1146//141 +f 1137//136 1143//142 1136//134 +f 1141//137 1147//140 1140//135 +f 1138//143 1144//144 1137//136 +f 1135//11 1143//142 1142//145 +f 1130//129 1131//9 1138//143 +f 1138//143 1131//9 1145//146 +f 1132//128 1139//138 1131//9 +f 1139//138 1146//141 1131//9 +f 1146//141 1149//1 1131//9 +f 1142//145 1156//13 1148//139 +f 1145//146 1149//1 1153//7 +f 1147//140 1154//8 1146//141 +f 1144//144 1151//12 1143//142 +f 1147//140 1156//13 1155//6 +f 1145//146 1152//5 1144//144 +f 1142//145 1151//12 1150//14 +f 1157//6 1172//147 1164//71 +f 1163//3 1170//148 1162//66 +f 1161//5 1168//149 1160//72 +f 1159//4 1166//150 1158//65 +f 1164//71 1171//151 1163//3 +f 1162//66 1169//7 1161//5 +f 1160//72 1167//152 1159//4 +f 1158//65 1165//153 1157//6 +f 1166//150 1175//154 1174//155 +f 1172//147 1178//156 1171//151 +f 1167//152 1176//157 1175//154 +f 1165//153 1174//155 1173//13 +f 1165//153 1179//158 1172//147 +f 1171//151 1177//159 1170//148 +f 1173//13 1186//160 1179//158 +f 1177//159 1185//161 1184//162 +f 1175//154 1181//163 1174//155 +f 1179//158 1185//161 1178//156 +f 1176//157 1182//164 1175//154 +f 1174//155 1180//165 1173//13 +f 1168//149 1169//7 1176//157 +f 1176//157 1169//7 1183//166 +f 1170//148 1177//159 1169//7 +f 1177//159 1184//162 1169//7 +f 1184//162 1187//1 1169//7 +f 1180//165 1194//10 1186//160 +f 1183//166 1187//1 1191//2 +f 1185//161 1192//9 1184//162 +f 1182//164 1189//11 1181//163 +f 1186//160 1193//3 1185//161 +f 1183//166 1190//4 1182//164 +f 1180//165 1189//11 1188//14 +f 1195//6 1210//147 1202//71 +f 1201//3 1208//148 1200//66 +f 1199//5 1206//149 1198//72 +f 1197//4 1204//150 1196//65 +f 1202//71 1209//151 1201//3 +f 1200//66 1207//7 1199//5 +f 1198//72 1205//152 1197//4 +f 1196//65 1203//153 1195//6 +f 1205//152 1212//155 1204//150 +f 1209//151 1217//167 1216//156 +f 1205//152 1214//157 1213//154 +f 1203//153 1212//155 1211//13 +f 1203//153 1217//167 1210//147 +f 1208//148 1216//156 1215//159 +f 1211//13 1224//160 1217//167 +f 1216//156 1222//162 1215//159 +f 1212//155 1220//164 1219//163 +f 1217//167 1223//161 1216//156 +f 1214//157 1220//164 1213//154 +f 1212//155 1218//165 1211//13 +f 1206//149 1207//7 1214//157 +f 1214//157 1207//7 1221//166 +f 1208//148 1215//159 1207//7 +f 1215//159 1222//162 1207//7 +f 1222//162 1225//1 1207//7 +f 1218//165 1232//10 1224//160 +f 1207//7 1229//2 1221//166 +f 1222//162 1231//3 1230//9 +f 1220//164 1227//11 1219//163 +f 1223//161 1232//10 1231//3 +f 1220//164 1229//2 1228//4 +f 1218//165 1227//11 1226//14 +f 1233//5 1248//168 1240//72 +f 1239//4 1246//169 1238//65 +f 1237//6 1244//170 1236//71 +f 1235//3 1242//171 1234//66 +f 1240//72 1247//172 1239//4 +f 1238//65 1245//8 1237//6 +f 1236//71 1243//173 1235//3 +f 1234//66 1241//174 1233//5 +f 1243//173 1250//175 1242//171 +f 1248//168 1254//176 1247//172 +f 1243//173 1252//177 1251//178 +f 1242//171 1249//12 1241//174 +f 1241//174 1255//179 1248//168 +f 1246//169 1254//176 1253//180 +f 1249//12 1262//181 1255//179 +f 1253//180 1261//182 1260//183 +f 1250//175 1258//184 1257//185 +f 1254//176 1262//181 1261//182 +f 1252//177 1258//184 1251//178 +f 1249//12 1257//185 1256//186 +f 1244//170 1245//8 1252//177 +f 1252//177 1245//8 1259//187 +f 1246//169 1253//180 1245//8 +f 1253//180 1260//183 1245//8 +f 1260//183 1263//1 1245//8 +f 1256//186 1270//11 1262//181 +f 1245//8 1267//9 1259//187 +f 1260//183 1269//4 1268//2 +f 1258//184 1265//10 1257//185 +f 1261//182 1270//11 1269//4 +f 1259//187 1266//3 1258//184 +f 1256//186 1265//10 1264//14 +f 1271//5 1286//168 1278//72 +f 1277//4 1284//169 1276//65 +f 1275//6 1282//170 1274//71 +f 1273//3 1280//171 1272//66 +f 1278//72 1285//172 1277//4 +f 1276//65 1283//8 1275//6 +f 1274//71 1281//173 1273//3 +f 1272//66 1279//174 1271//5 +f 1280//171 1289//178 1288//175 +f 1285//172 1293//188 1292//176 +f 1282//170 1289//178 1281//173 +f 1279//174 1288//175 1287//12 +f 1279//174 1293//188 1286//168 +f 1285//172 1291//180 1284//169 +f 1287//12 1300//181 1293//188 +f 1291//180 1299//182 1298//183 +f 1288//175 1296//184 1295//185 +f 1292//176 1300//181 1299//182 +f 1290//177 1296//184 1289//178 +f 1287//12 1295//185 1294//186 +f 1282//170 1283//8 1290//177 +f 1290//177 1283//8 1297//187 +f 1284//169 1291//180 1283//8 +f 1291//180 1298//183 1283//8 +f 1298//183 1301//1 1283//8 +f 1294//186 1308//11 1300//181 +f 1297//187 1301//1 1305//9 +f 1299//182 1306//2 1298//183 +f 1296//184 1303//10 1295//185 +f 1299//182 1308//11 1307//4 +f 1297//187 1304//3 1296//184 +f 1294//186 1303//10 1302//14 +f 210//63 226//63 225//6 +f 218//64 234//64 233//5 +f 211//65 227//65 226//63 +f 219//66 235//66 234//64 +f 212//67 228//67 227//65 +f 220//68 236//68 235//66 +f 213//4 229//4 228//67 +f 206//69 222//69 221//3 +f 205//3 221//3 236//68 +f 214//70 230//70 229//4 +f 207//71 223//71 222//69 +f 215//72 231//72 230//70 +f 208//73 224//73 223//71 +f 216//74 232//74 231//72 +f 209//6 225//6 224//73 +f 217//5 233//5 232//74 +f 244//67 260//67 259//65 +f 252//68 268//68 267//66 +f 245//4 261//4 260//67 +f 238//69 254//69 253//3 +f 237//3 253//3 268//68 +f 246//70 262//70 261//4 +f 239//71 255//71 254//69 +f 247//72 263//72 262//70 +f 240//73 256//73 255//71 +f 248//74 264//74 263//72 +f 241//6 257//6 256//73 +f 249//5 265//5 264//74 +f 242//63 258//63 257//6 +f 250//64 266//64 265//5 +f 243//65 259//65 258//63 +f 251//66 267//66 266//64 +f 271//71 287//71 286//69 +f 279//72 295//72 294//70 +f 272//73 288//73 287//71 +f 280//74 296//74 295//72 +f 273//6 289//6 288//73 +f 281//5 297//5 296//74 +f 274//63 290//63 289//6 +f 282//64 298//64 297//5 +f 275//65 291//65 290//63 +f 283//66 299//66 298//64 +f 276//67 292//67 291//65 +f 284//68 300//68 299//66 +f 277//4 293//4 292//67 +f 270//69 286//69 285//3 +f 269//3 285//3 300//68 +f 278//70 294//70 293//4 +f 308//67 324//67 323//65 +f 316//68 332//68 331//66 +f 309//4 325//4 324//67 +f 302//69 318//69 317//3 +f 301//3 317//3 332//68 +f 310//70 326//70 325//4 +f 303//71 319//71 318//69 +f 311//72 327//72 326//70 +f 304//73 320//73 319//71 +f 312//74 328//74 327//72 +f 305//6 321//6 320//73 +f 313//5 329//5 328//74 +f 306//63 322//63 321//6 +f 314//64 330//64 329//5 +f 307//65 323//65 322//63 +f 315//66 331//66 330//64 +f 335//71 351//71 350//69 +f 343//72 359//72 358//70 +f 336//73 352//73 351//71 +f 344//74 360//74 359//72 +f 337//6 353//6 352//73 +f 345//5 361//5 360//74 +f 338//63 354//63 353//6 +f 346//64 362//64 361//5 +f 339//65 355//65 354//63 +f 347//66 363//66 362//64 +f 340//67 356//67 355//65 +f 348//68 364//68 363//66 +f 341//4 357//4 356//67 +f 334//69 350//69 349//3 +f 333//3 349//3 364//68 +f 342//70 358//70 357//4 +f 375//71 391//71 390//69 +f 368//74 384//74 383//72 +f 376//73 392//73 391//71 +f 369//5 385//5 384//74 +f 377//6 393//6 392//73 +f 370//64 386//64 385//5 +f 378//63 394//63 393//6 +f 371//66 387//66 386//64 +f 379//65 395//65 394//63 +f 372//68 388//68 387//66 +f 380//67 396//67 395//65 +f 373//3 389//3 388//68 +f 366//70 382//70 381//4 +f 365//4 381//4 396//67 +f 374//69 390//69 389//3 +f 367//72 383//72 382//70 +f 399//75 400//76 208//76 +f 400//76 401//77 209//77 +f 209//77 401//77 402//78 +f 402//78 403//79 211//79 +f 403//79 404//80 212//80 +f 404//80 405//81 213//81 +f 405//81 406//82 214//82 +f 406//82 407//83 215//83 +f 407//83 408//84 216//84 +f 408//84 409//85 217//85 +f 409//85 410//86 218//86 +f 218//86 410//86 411//87 +f 411//87 412//88 220//88 +f 412//88 397//89 205//89 +f 397//89 398//90 206//90 +f 206//90 398//90 399//75 +f 480//91 496//91 495//92 +f 481//93 497//93 496//91 +f 482//94 498//94 497//93 +f 483//95 499//95 498//94 +f 484//96 500//96 499//95 +f 485//97 501//97 500//96 +f 486//98 502//98 501//97 +f 486//98 487//99 503//99 +f 488//100 504//100 503//99 +f 489//101 505//101 504//100 +f 490//102 506//102 505//101 +f 491//103 507//103 506//102 +f 492//104 508//104 507//103 +f 477//105 493//105 508//104 +f 478//106 494//106 493//105 +f 478//106 479//92 495//92 +f 526//70 542//70 541//4 +f 525//4 541//4 556//67 +f 534//69 550//69 549//3 +f 527//72 543//72 542//70 +f 535//71 551//71 550//69 +f 528//74 544//74 543//72 +f 536//73 552//73 551//71 +f 529//5 545//5 544//74 +f 537//6 553//6 552//73 +f 530//64 546//64 545//5 +f 538//63 554//63 553//6 +f 531//66 547//66 546//64 +f 539//65 555//65 554//63 +f 532//68 548//68 547//66 +f 540//67 556//67 555//65 +f 533//3 549//3 548//68 +f 568//74 584//74 583//72 +f 561//6 577//6 576//73 +f 569//5 585//5 584//74 +f 562//63 578//63 577//6 +f 570//64 586//64 585//5 +f 563//65 579//65 578//63 +f 571//66 587//66 586//64 +f 564//67 580//67 579//65 +f 572//68 588//68 587//66 +f 565//4 581//4 580//67 +f 558//69 574//69 573//3 +f 557//3 573//3 588//68 +f 566//70 582//70 581//4 +f 559//71 575//71 574//69 +f 567//72 583//72 582//70 +f 560//73 576//73 575//71 +f 600//74 616//74 615//72 +f 593//6 609//6 608//73 +f 601//5 617//5 616//74 +f 594//63 610//63 609//6 +f 602//64 618//64 617//5 +f 595//65 611//65 610//63 +f 603//66 619//66 618//64 +f 596//67 612//67 611//65 +f 604//68 620//68 619//66 +f 597//4 613//4 612//67 +f 590//69 606//69 605//3 +f 589//3 605//3 620//68 +f 598//70 614//70 613//4 +f 591//71 607//71 606//69 +f 599//72 615//72 614//70 +f 592//73 608//73 607//71 +f 632//74 648//74 647//72 +f 625//6 641//6 640//73 +f 633//5 649//5 648//74 +f 626//63 642//63 641//6 +f 634//64 650//64 649//5 +f 627//65 643//65 642//63 +f 635//66 651//66 650//64 +f 628//67 644//67 643//65 +f 636//68 652//68 651//66 +f 629//4 645//4 644//67 +f 622//69 638//69 637//3 +f 621//3 637//3 652//68 +f 630//70 646//70 645//4 +f 623//71 639//71 638//69 +f 631//72 647//72 646//70 +f 624//73 640//73 639//71 +f 668//68 684//68 683//66 +f 661//4 677//4 676//67 +f 654//69 670//69 669//3 +f 653//3 669//3 684//68 +f 662//70 678//70 677//4 +f 655//71 671//71 670//69 +f 663//72 679//72 678//70 +f 656//73 672//73 671//71 +f 664//74 680//74 679//72 +f 657//6 673//6 672//73 +f 665//5 681//5 680//74 +f 658//63 674//63 673//6 +f 666//64 682//64 681//5 +f 659//65 675//65 674//63 +f 667//66 683//66 682//64 +f 660//67 676//67 675//65 +f 689//5 705//5 704//74 +f 697//6 713//6 712//73 +f 690//64 706//64 705//5 +f 698//63 714//63 713//6 +f 691//66 707//66 706//64 +f 699//65 715//65 714//63 +f 692//68 708//68 707//66 +f 700//67 716//67 715//65 +f 693//3 709//3 708//68 +f 686//70 702//70 701//4 +f 685//4 701//4 716//67 +f 694//69 710//69 709//3 +f 687//72 703//72 702//70 +f 695//71 711//71 710//69 +f 688//74 704//74 703//72 +f 696//73 712//73 711//71 +f 839//72 855//72 854//70 +f 832//73 848//73 847//71 +f 840//74 856//74 855//72 +f 833//6 849//6 848//73 +f 841//5 857//5 856//74 +f 834//63 850//63 849//6 +f 842//64 858//64 857//5 +f 835//65 851//65 850//63 +f 843//66 859//66 858//64 +f 836//67 852//67 851//65 +f 844//68 860//68 859//66 +f 837//4 853//4 852//67 +f 830//69 846//69 845//3 +f 829//3 845//3 860//68 +f 838//70 854//70 853//4 +f 831//71 847//71 846//69 +f 873//6 973//6 972//73 +f 866//64 966//64 965//5 +f 874//63 974//63 973//6 +f 867//66 967//66 966//64 +f 875//65 975//65 974//63 +f 868//68 968//68 967//66 +f 876//67 976//67 975//65 +f 869//3 969//3 968//68 +f 862//70 962//70 961//4 +f 861//4 961//4 976//67 +f 870//69 970//69 969//3 +f 863//72 963//72 962//70 +f 871//71 971//71 970//69 +f 864//74 964//74 963//72 +f 872//73 972//73 971//71 +f 865//5 965//5 964//74 +f 1005//3 1013//113 1020//107 +f 1011//5 1019//111 1018//108 +f 1009//4 1017//2 1016//109 +f 1007//6 1015//112 1014//110 +f 1012//66 1020//107 1019//111 +f 1010//72 1018//108 1017//2 +f 1008//65 1016//109 1015//112 +f 1006//71 1014//110 1013//113 +f 1015//112 1023//118 1022//114 +f 1019//111 1020//107 1027//115 +f 1015//112 1016//109 1024//117 +f 1013//113 1014//110 1022//114 +f 1013//113 1021//10 1027//115 +f 1018//108 1019//111 1026//116 +f 1021//10 1028//125 1034//120 +f 1025//119 1026//116 1033//121 +f 1023//118 1030//124 1029//123 +f 1026//116 1027//115 1034//120 +f 1024//117 1031//126 1030//124 +f 1021//10 1022//114 1029//123 +f 1032//122 1040//7 1035//1 +f 1028//125 1036//14 1042//12 +f 1031//126 1017//2 1035//1 +f 1033//121 1041//5 1040//7 +f 1030//124 1038//6 1037//13 +f 1033//121 1034//120 1042//12 +f 1031//126 1039//8 1038//6 +f 1028//125 1029//123 1037//13 +f 1043//3 1051//113 1058//107 +f 1049//5 1057//111 1056//108 +f 1047//4 1055//2 1054//109 +f 1045//6 1053//112 1052//110 +f 1050//66 1058//107 1057//111 +f 1048//72 1056//108 1055//2 +f 1046//65 1054//109 1053//112 +f 1044//71 1052//110 1051//113 +f 1052//110 1053//112 1061//118 +f 1057//111 1058//107 1065//115 +f 1053//112 1054//109 1062//117 +f 1051//113 1052//110 1060//114 +f 1051//113 1059//10 1065//115 +f 1057//111 1064//116 1063//119 +f 1059//10 1066//125 1072//120 +f 1063//119 1064//116 1071//121 +f 1061//118 1068//124 1067//123 +f 1065//115 1072//120 1071//121 +f 1062//117 1069//126 1068//124 +f 1059//10 1060//114 1067//123 +f 1070//122 1078//7 1073//1 +f 1066//125 1074//14 1080//12 +f 1069//126 1055//2 1073//1 +f 1071//121 1079//5 1078//7 +f 1068//124 1076//6 1075//13 +f 1071//121 1072//120 1080//12 +f 1069//126 1077//8 1076//6 +f 1066//125 1067//123 1075//13 +f 1081//4 1089//133 1096//127 +f 1087//6 1095//131 1094//128 +f 1085//3 1093//9 1092//129 +f 1083//5 1091//132 1090//130 +f 1088//65 1096//127 1095//131 +f 1086//71 1094//128 1093//9 +f 1084//66 1092//129 1091//132 +f 1082//72 1090//130 1089//133 +f 1091//132 1099//136 1098//134 +f 1096//127 1103//137 1102//135 +f 1092//129 1100//143 1099//136 +f 1089//133 1090//130 1098//134 +f 1096//127 1089//133 1097//11 +f 1094//128 1095//131 1102//135 +f 1097//11 1104//145 1110//139 +f 1101//138 1102//135 1109//140 +f 1099//136 1106//144 1105//142 +f 1102//135 1103//137 1110//139 +f 1100//143 1107//146 1106//144 +f 1097//11 1098//134 1105//142 +f 1108//141 1116//8 1111//1 +f 1104//145 1112//14 1118//13 +f 1107//146 1093//9 1111//1 +f 1109//140 1117//6 1116//8 +f 1106//144 1114//5 1113//12 +f 1109//140 1110//139 1118//13 +f 1107//146 1115//7 1114//5 +f 1104//145 1105//142 1113//12 +f 1119//4 1127//133 1134//127 +f 1125//6 1133//131 1132//128 +f 1123//3 1131//9 1130//129 +f 1121//5 1129//132 1128//130 +f 1126//65 1134//127 1133//131 +f 1124//71 1132//128 1131//9 +f 1122//66 1130//129 1129//132 +f 1120//72 1128//130 1127//133 +f 1129//132 1137//136 1136//134 +f 1133//131 1134//127 1141//137 +f 1129//132 1130//129 1138//143 +f 1127//133 1128//130 1136//134 +f 1127//133 1135//11 1141//137 +f 1133//131 1140//135 1139//138 +f 1135//11 1142//145 1148//139 +f 1139//138 1140//135 1147//140 +f 1137//136 1144//144 1143//142 +f 1141//137 1148//139 1147//140 +f 1138//143 1145//146 1144//144 +f 1135//11 1136//134 1143//142 +f 1146//141 1154//8 1149//1 +f 1142//145 1150//14 1156//13 +f 1145//146 1131//9 1149//1 +f 1147//140 1155//6 1154//8 +f 1144//144 1152//5 1151//12 +f 1147//140 1148//139 1156//13 +f 1145//146 1153//7 1152//5 +f 1142//145 1143//142 1151//12 +f 1157//6 1165//153 1172//147 +f 1163//3 1171//151 1170//148 +f 1161//5 1169//7 1168//149 +f 1159//4 1167//152 1166//150 +f 1164//71 1172//147 1171//151 +f 1162//66 1170//148 1169//7 +f 1160//72 1168//149 1167//152 +f 1158//65 1166//150 1165//153 +f 1166//150 1167//152 1175//154 +f 1172//147 1179//158 1178//156 +f 1167//152 1168//149 1176//157 +f 1165//153 1166//150 1174//155 +f 1165//153 1173//13 1179//158 +f 1171//151 1178//156 1177//159 +f 1173//13 1180//165 1186//160 +f 1177//159 1178//156 1185//161 +f 1175//154 1182//164 1181//163 +f 1179//158 1186//160 1185//161 +f 1176//157 1183//166 1182//164 +f 1174//155 1181//163 1180//165 +f 1184//162 1192//9 1187//1 +f 1180//165 1188//14 1194//10 +f 1183//166 1169//7 1187//1 +f 1185//161 1193//3 1192//9 +f 1182//164 1190//4 1189//11 +f 1186//160 1194//10 1193//3 +f 1183//166 1191//2 1190//4 +f 1180//165 1181//163 1189//11 +f 1195//6 1203//153 1210//147 +f 1201//3 1209//151 1208//148 +f 1199//5 1207//7 1206//149 +f 1197//4 1205//152 1204//150 +f 1202//71 1210//147 1209//151 +f 1200//66 1208//148 1207//7 +f 1198//72 1206//149 1205//152 +f 1196//65 1204//150 1203//153 +f 1205//152 1213//154 1212//155 +f 1209//151 1210//147 1217//167 +f 1205//152 1206//149 1214//157 +f 1203//153 1204//150 1212//155 +f 1203//153 1211//13 1217//167 +f 1208//148 1209//151 1216//156 +f 1211//13 1218//165 1224//160 +f 1216//156 1223//161 1222//162 +f 1212//155 1213//154 1220//164 +f 1217//167 1224//160 1223//161 +f 1214//157 1221//166 1220//164 +f 1212//155 1219//163 1218//165 +f 1222//162 1230//9 1225//1 +f 1218//165 1226//14 1232//10 +f 1207//7 1225//1 1229//2 +f 1222//162 1223//161 1231//3 +f 1220//164 1228//4 1227//11 +f 1223//161 1224//160 1232//10 +f 1220//164 1221//166 1229//2 +f 1218//165 1219//163 1227//11 +f 1233//5 1241//174 1248//168 +f 1239//4 1247//172 1246//169 +f 1237//6 1245//8 1244//170 +f 1235//3 1243//173 1242//171 +f 1240//72 1248//168 1247//172 +f 1238//65 1246//169 1245//8 +f 1236//71 1244//170 1243//173 +f 1234//66 1242//171 1241//174 +f 1243//173 1251//178 1250//175 +f 1248//168 1255//179 1254//176 +f 1243//173 1244//170 1252//177 +f 1242//171 1250//175 1249//12 +f 1241//174 1249//12 1255//179 +f 1246//169 1247//172 1254//176 +f 1249//12 1256//186 1262//181 +f 1253//180 1254//176 1261//182 +f 1250//175 1251//178 1258//184 +f 1254//176 1255//179 1262//181 +f 1252//177 1259//187 1258//184 +f 1249//12 1250//175 1257//185 +f 1260//183 1268//2 1263//1 +f 1256//186 1264//14 1270//11 +f 1245//8 1263//1 1267//9 +f 1260//183 1261//182 1269//4 +f 1258//184 1266//3 1265//10 +f 1261//182 1262//181 1270//11 +f 1259//187 1267//9 1266//3 +f 1256//186 1257//185 1265//10 +f 1271//5 1279//174 1286//168 +f 1277//4 1285//172 1284//169 +f 1275//6 1283//8 1282//170 +f 1273//3 1281//173 1280//171 +f 1278//72 1286//168 1285//172 +f 1276//65 1284//169 1283//8 +f 1274//71 1282//170 1281//173 +f 1272//66 1280//171 1279//174 +f 1280//171 1281//173 1289//178 +f 1285//172 1286//168 1293//188 +f 1282//170 1290//177 1289//178 +f 1279//174 1280//171 1288//175 +f 1279//174 1287//12 1293//188 +f 1285//172 1292//176 1291//180 +f 1287//12 1294//186 1300//181 +f 1291//180 1292//176 1299//182 +f 1288//175 1289//178 1296//184 +f 1292//176 1293//188 1300//181 +f 1290//177 1297//187 1296//184 +f 1287//12 1288//175 1295//185 +f 1298//183 1306//2 1301//1 +f 1294//186 1302//14 1308//11 +f 1297//187 1283//8 1301//1 +f 1299//182 1307//4 1306//2 +f 1296//184 1304//3 1303//10 +f 1299//182 1300//181 1308//11 +f 1297//187 1305//9 1304//3 +f 1294//186 1295//185 1303//10 From a0cb8aedd8eb49729480c19de1da0599a95a98f6 Mon Sep 17 00:00:00 2001 From: Boblet Date: Wed, 26 Apr 2023 10:55:11 +0200 Subject: [PATCH 11/40] C18H24O2 --- src/main/java/com/hbm/inventory/fluid/Fluids.java | 13 ++++++++++++- .../inventory/recipes/CrystallizerRecipes.java | 7 ++++--- .../hbm/inventory/recipes/FractionRecipes.java | 1 + .../com/hbm/inventory/recipes/MixerRecipes.java | 3 +++ .../hbm/inventory/recipes/ReformingRecipes.java | 5 +++++ .../inventory/recipes/SolidificationRecipes.java | 3 ++- src/main/java/com/hbm/items/ItemEnums.java | 3 ++- src/main/java/com/hbm/items/ModItems.java | 3 +++ src/main/java/com/hbm/items/food/ItemPill.java | 4 ++++ src/main/resources/assets/hbm/lang/de_DE.lang | 5 +++++ src/main/resources/assets/hbm/lang/en_US.lang | 5 +++++ .../hbm/textures/gui/fluids/cholesterol.png | Bin 0 -> 556 bytes .../assets/hbm/textures/gui/fluids/egg.png | Bin 0 -> 554 bytes .../assets/hbm/textures/gui/fluids/estradiol.png | Bin 0 -> 554 bytes .../hbm/textures/items/oil_tar.paraffin.png | Bin 0 -> 287 bytes .../assets/hbm/textures/items/pill_red.png | Bin 0 -> 214 bytes 16 files changed, 46 insertions(+), 6 deletions(-) create mode 100644 src/main/resources/assets/hbm/textures/gui/fluids/cholesterol.png create mode 100644 src/main/resources/assets/hbm/textures/gui/fluids/egg.png create mode 100644 src/main/resources/assets/hbm/textures/gui/fluids/estradiol.png create mode 100644 src/main/resources/assets/hbm/textures/items/oil_tar.paraffin.png create mode 100644 src/main/resources/assets/hbm/textures/items/pill_red.png diff --git a/src/main/java/com/hbm/inventory/fluid/Fluids.java b/src/main/java/com/hbm/inventory/fluid/Fluids.java index 2ed87dda4..56f31fabc 100644 --- a/src/main/java/com/hbm/inventory/fluid/Fluids.java +++ b/src/main/java/com/hbm/inventory/fluid/Fluids.java @@ -7,6 +7,7 @@ import java.util.List; import com.hbm.inventory.fluid.trait.*; import com.hbm.inventory.fluid.trait.FluidTraitSimple.*; import com.hbm.lib.ModDamageSource; +import com.hbm.potion.HbmPotion; import com.hbm.inventory.fluid.trait.FT_Combustible.FuelGrade; import com.hbm.inventory.fluid.trait.FT_Coolable.CoolingType; import com.hbm.inventory.fluid.trait.FT_Heatable.HeatingType; @@ -126,6 +127,9 @@ public class Fluids { public static FluidType OIL_COKER; //heavy fractions from coking, mostly bitumen public static FluidType NAPHTHA_COKER; //medium fractions from coking, aromatics and fuel oil public static FluidType GAS_COKER; //light fractions from coking, natgas and co2 + public static FluidType EGG; + public static FluidType CHOLESTEROL; + public static FluidType ESTRADIOL; private static final HashMap idMapping = new HashMap(); private static final HashMap nameMapping = new HashMap(); @@ -263,7 +267,10 @@ public class Fluids { IONGEL = new FluidType("IONGEL", 0xB8FFFF, 1, 0, 4, EnumSymbol.NONE).addTraits(LIQUID, VISCOUS); OIL_COKER = new FluidType("OIL_COKER", 0x001802, 2, 1, 0, EnumSymbol.NONE).addTraits(LIQUID, VISCOUS); NAPHTHA_COKER = new FluidType("NAPHTHA_COKER", 0x495944, 2, 1, 0, EnumSymbol.NONE).addTraits(LIQUID, VISCOUS); - GAS_COKER = new FluidType(106, "GAS_COKER", 0xDEF4CA, 1, 4, 0, EnumSymbol.NONE).addTraits(GASEOUS); + GAS_COKER = new FluidType("GAS_COKER", 0xDEF4CA, 1, 4, 0, EnumSymbol.NONE).addTraits(GASEOUS); + EGG = new FluidType("EGG", 0xD2C273, 0, 0, 0, EnumSymbol.NONE).addTraits(LIQUID); + CHOLESTEROL = new FluidType("CHOLESTEROL", 0xD6D2BD, 0, 0, 0, EnumSymbol.NONE).addTraits(LIQUID); + ESTRADIOL = new FluidType(109, "ESTRADIOL", 0xCDD5D8, 0, 0, 0, EnumSymbol.NONE).addTraits(LIQUID); // ^ ^ ^ ^ ^ ^ ^ ^ //ADD NEW FLUIDS HERE @@ -369,11 +376,14 @@ public class Fluids { metaOrder.add(PAIN); metaOrder.add(DEATH); metaOrder.add(WATZ); + metaOrder.add(EGG); + metaOrder.add(CHOLESTEROL); //solutions and working fluids metaOrder.add(FRACKSOL); //the fun guys metaOrder.add(PHOSGENE); metaOrder.add(MUSTARDGAS); + metaOrder.add(ESTRADIOL); //antimatter metaOrder.add(AMAT); metaOrder.add(ASCHRAB); @@ -395,6 +405,7 @@ public class Fluids { PHOSGENE.addTraits(new FT_Toxin().addEntry(new ToxinDirectDamage(ModDamageSource.cloud, 4F, 20, HazardClass.GAS_CHLORINE, false))); MUSTARDGAS.addTraits(new FT_Toxin().addEntry(new ToxinDirectDamage(ModDamageSource.cloud, 4F, 10, HazardClass.GAS_CORROSIVE, false)) .addEntry(new ToxinEffects(HazardClass.GAS_CORROSIVE, true).add(new PotionEffect(Potion.wither.id, 100, 1), new PotionEffect(Potion.confusion.id, 100, 0)))); + ESTRADIOL.addTraits(new FT_Toxin().addEntry(new ToxinEffects(HazardClass.PARTICLE_FINE, false).add(new PotionEffect(HbmPotion.mutation.id, 60 * 60 * 20, 0)))); double eff_steam_boil = 1.0D; double eff_steam_heatex = 0.25D; diff --git a/src/main/java/com/hbm/inventory/recipes/CrystallizerRecipes.java b/src/main/java/com/hbm/inventory/recipes/CrystallizerRecipes.java index 070e9f221..25ce76168 100644 --- a/src/main/java/com/hbm/inventory/recipes/CrystallizerRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/CrystallizerRecipes.java @@ -134,9 +134,10 @@ public class CrystallizerRecipes extends SerializableRecipe { registerRecipe(CU.dust(), new CrystallizerRecipe(DictFrame.fromOne(ModItems.chemical_dye, EnumChemDye.GREEN, 4), 20), woodOil); registerRecipe(CO.dust(), new CrystallizerRecipe(DictFrame.fromOne(ModItems.chemical_dye, EnumChemDye.BLUE, 4), 20), woodOil); - registerRecipe(new ComparableStack(DictFrame.fromOne(ModItems.oil_tar, EnumTarType.CRUDE)), new CrystallizerRecipe(DictFrame.fromOne(ModItems.oil_tar, EnumTarType.WAX), 20), new FluidStack(Fluids.CHLORINE, 250)); - registerRecipe(new ComparableStack(DictFrame.fromOne(ModItems.oil_tar, EnumTarType.CRACK)), new CrystallizerRecipe(DictFrame.fromOne(ModItems.oil_tar, EnumTarType.WAX), 20), new FluidStack(Fluids.CHLORINE, 100)); - registerRecipe(new ComparableStack(DictFrame.fromOne(ModItems.oil_tar, EnumTarType.WAX)), new CrystallizerRecipe(new ItemStack(ModItems.pellet_charged), 200), new FluidStack(Fluids.IONGEL, 500)); + registerRecipe(new ComparableStack(DictFrame.fromOne(ModItems.oil_tar, EnumTarType.CRUDE)), new CrystallizerRecipe(DictFrame.fromOne(ModItems.oil_tar, EnumTarType.WAX), 20), new FluidStack(Fluids.CHLORINE, 250)); + registerRecipe(new ComparableStack(DictFrame.fromOne(ModItems.oil_tar, EnumTarType.CRACK)), new CrystallizerRecipe(DictFrame.fromOne(ModItems.oil_tar, EnumTarType.WAX), 20), new FluidStack(Fluids.CHLORINE, 100)); + registerRecipe(new ComparableStack(DictFrame.fromOne(ModItems.oil_tar, EnumTarType.WAX)), new CrystallizerRecipe(new ItemStack(ModItems.pellet_charged), 200), new FluidStack(Fluids.IONGEL, 500)); + registerRecipe(new ComparableStack(ModItems.pill_red), new CrystallizerRecipe(DictFrame.fromOne(ModItems.oil_tar, EnumTarType.PARAFFIN), 200), new FluidStack(Fluids.ESTRADIOL, 250)); registerRecipe(KEY_SAND, new CrystallizerRecipe(Blocks.clay, 20), new FluidStack(Fluids.COLLOID, 1_000)); diff --git a/src/main/java/com/hbm/inventory/recipes/FractionRecipes.java b/src/main/java/com/hbm/inventory/recipes/FractionRecipes.java index 95e8a5f86..73a04b10b 100644 --- a/src/main/java/com/hbm/inventory/recipes/FractionRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/FractionRecipes.java @@ -59,6 +59,7 @@ public class FractionRecipes extends SerializableRecipe { fractions.put(Fluids.REFORMATE, new Pair(new FluidStack(Fluids.AROMATICS, reform_frac_arom), new FluidStack(Fluids.XYLENE, reform_frac_xyle))); fractions.put(Fluids.LIGHTOIL_VACUUM, new Pair(new FluidStack(Fluids.KEROSENE, lvac_frac_kero), new FluidStack(Fluids.REFORMGAS, lvac_frac_gas))); fractions.put(Fluids.SOURGAS, new Pair(new FluidStack(Fluids.GAS, 30), new FluidStack(Fluids.PETROLEUM, 20))); + fractions.put(Fluids.EGG, new Pair(new FluidStack(Fluids.CHOLESTEROL, 50), new FluidStack(Fluids.RADIOSOLVENT, 50))); } public static Pair getFractions(FluidType oil) { diff --git a/src/main/java/com/hbm/inventory/recipes/MixerRecipes.java b/src/main/java/com/hbm/inventory/recipes/MixerRecipes.java index bd29e55bf..9e79c597a 100644 --- a/src/main/java/com/hbm/inventory/recipes/MixerRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/MixerRecipes.java @@ -21,6 +21,8 @@ import com.hbm.inventory.recipes.loader.SerializableRecipe; import com.hbm.items.ModItems; import com.hbm.items.machine.ItemFluidIcon; +import net.minecraft.init.Items; + public class MixerRecipes extends SerializableRecipe { public static HashMap recipes = new HashMap(); @@ -37,6 +39,7 @@ public class MixerRecipes extends SerializableRecipe { recipes.put(Fluids.PHOSGENE, new MixerRecipe(1000, 20).setStack1(new FluidStack(Fluids.UNSATURATEDS, 500)).setStack2(new FluidStack(Fluids.CHLORINE, 500))); recipes.put(Fluids.MUSTARDGAS, new MixerRecipe(1000, 20).setStack1(new FluidStack(Fluids.REFORMGAS, 750)).setStack2(new FluidStack(Fluids.CHLORINE, 250)).setSolid(new OreDictStack(S.dust()))); recipes.put(Fluids.IONGEL, new MixerRecipe(1_000, 50).setStack1(new FluidStack(Fluids.WATER, 1000)).setStack2(new FluidStack(Fluids.HYDROGEN, 200)).setSolid(new ComparableStack(ModItems.pellet_charged))); + recipes.put(Fluids.EGG, new MixerRecipe(1_000, 50).setStack1(new FluidStack(Fluids.RADIOSOLVENT, 500)).setSolid(new ComparableStack(Items.egg))); recipes.put(Fluids.SOLVENT, new MixerRecipe(1000, 50).setStack1(new FluidStack(Fluids.NAPHTHA, 500)).setStack2(new FluidStack(Fluids.AROMATICS, 500))); recipes.put(Fluids.SULFURIC_ACID, new MixerRecipe(500, 50).setStack1(new FluidStack(Fluids.ACID, 800)).setSolid(new OreDictStack(S.dust()))); diff --git a/src/main/java/com/hbm/inventory/recipes/ReformingRecipes.java b/src/main/java/com/hbm/inventory/recipes/ReformingRecipes.java index 5d0b047aa..238e5bca9 100644 --- a/src/main/java/com/hbm/inventory/recipes/ReformingRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/ReformingRecipes.java @@ -42,6 +42,11 @@ public class ReformingRecipes extends SerializableRecipe { new FluidStack(Fluids.PETROLEUM, 10), new FluidStack(Fluids.HYDROGEN, 15) )); + recipes.put(Fluids.CHOLESTEROL, new Triplet( + new FluidStack(Fluids.ESTRADIOL, 50), + new FluidStack(Fluids.REFORMGAS, 35), + new FluidStack(Fluids.HYDROGEN, 15) + )); } public static Triplet getOutput(FluidType type) { diff --git a/src/main/java/com/hbm/inventory/recipes/SolidificationRecipes.java b/src/main/java/com/hbm/inventory/recipes/SolidificationRecipes.java index 4288e9022..38f618aea 100644 --- a/src/main/java/com/hbm/inventory/recipes/SolidificationRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/SolidificationRecipes.java @@ -35,7 +35,7 @@ public class SolidificationRecipes extends SerializableRecipe { public static final int SF_HEATING = 50; public static final int SF_RECLAIMED = 100; public static final int SF_PETROIL = 125; - public static final int SF_LUBE = 125; + public static final int SF_LUBE = 100; public static final int SF_NAPH = 150; public static final int SF_DIESEL = 200; public static final int SF_LIGHT = 225; @@ -76,6 +76,7 @@ public class SolidificationRecipes extends SerializableRecipe { registerRecipe(BITUMEN, SF_BITUMEN, DictFrame.fromOne(ModItems.oil_tar, EnumTarType.CRUDE)); registerRecipe(COALCREOSOTE, SF_CREOSOTE, DictFrame.fromOne(ModItems.oil_tar, EnumTarType.COAL)); registerRecipe(WOODOIL, SF_WOOD, DictFrame.fromOne(ModItems.oil_tar, EnumTarType.WOOD)); + registerRecipe(LUBRICANT, SF_LUBE, DictFrame.fromOne(ModItems.oil_tar, EnumTarType.PARAFFIN)); registerRecipe(BALEFIRE, 250, ModItems.solid_fuel_bf); diff --git a/src/main/java/com/hbm/items/ItemEnums.java b/src/main/java/com/hbm/items/ItemEnums.java index 5db68070c..a15664ddb 100644 --- a/src/main/java/com/hbm/items/ItemEnums.java +++ b/src/main/java/com/hbm/items/ItemEnums.java @@ -19,7 +19,8 @@ public class ItemEnums { CRACK, COAL, WOOD, - WAX + WAX, + PARAFFIN } public static enum EnumBriquetteType { diff --git a/src/main/java/com/hbm/items/ModItems.java b/src/main/java/com/hbm/items/ModItems.java index fbfec83a4..7912a792e 100644 --- a/src/main/java/com/hbm/items/ModItems.java +++ b/src/main/java/com/hbm/items/ModItems.java @@ -949,6 +949,7 @@ public class ModItems { public static Item med_bag; public static Item pill_iodine; public static Item plan_c; + public static Item pill_red; public static Item stealth_boy; public static Item gas_mask_filter; public static Item gas_mask_filter_mono; @@ -3312,6 +3313,7 @@ public class ModItems { five_htp = new ItemPill(0).setUnlocalizedName("five_htp").setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":5htp"); pill_iodine = new ItemPill(0).setUnlocalizedName("pill_iodine").setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":pill_iodine"); plan_c = new ItemPill(0).setUnlocalizedName("plan_c").setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":plan_c"); + pill_red = new ItemPill(0).setUnlocalizedName("pill_red").setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":pill_red"); stealth_boy = new ItemStarterKit().setUnlocalizedName("stealth_boy").setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":stealth_boy"); gas_mask_filter = new ItemFilter().setUnlocalizedName("gas_mask_filter").setTextureName(RefStrings.MODID + ":gas_mask_filter"); gas_mask_filter_mono = new ItemFilter().setUnlocalizedName("gas_mask_filter_mono").setTextureName(RefStrings.MODID + ":gas_mask_filter_mono"); @@ -7448,6 +7450,7 @@ public class ModItems { GameRegistry.registerItem(fmn, fmn.getUnlocalizedName()); GameRegistry.registerItem(five_htp, five_htp.getUnlocalizedName()); GameRegistry.registerItem(plan_c, plan_c.getUnlocalizedName()); + GameRegistry.registerItem(pill_red, pill_red.getUnlocalizedName()); GameRegistry.registerItem(stealth_boy, stealth_boy.getUnlocalizedName()); GameRegistry.registerItem(gas_mask_filter, gas_mask_filter.getUnlocalizedName()); GameRegistry.registerItem(gas_mask_filter_mono, gas_mask_filter_mono.getUnlocalizedName()); diff --git a/src/main/java/com/hbm/items/food/ItemPill.java b/src/main/java/com/hbm/items/food/ItemPill.java index 6ec669491..aaff954f7 100644 --- a/src/main/java/com/hbm/items/food/ItemPill.java +++ b/src/main/java/com/hbm/items/food/ItemPill.java @@ -50,6 +50,10 @@ public class ItemPill extends ItemFood { player.attackEntityFrom(rand.nextBoolean() ? ModDamageSource.euthanizedSelf : ModDamageSource.euthanizedSelf2, 1000); } + if(this == ModItems.pill_red) { + player.addPotionEffect(new PotionEffect(HbmPotion.mutation.id, 60 * 60 * 20, 0)); + } + if(this == ModItems.radx) { player.addPotionEffect(new PotionEffect(HbmPotion.radx.id, 3 * 60 * 20, 0)); } diff --git a/src/main/resources/assets/hbm/lang/de_DE.lang b/src/main/resources/assets/hbm/lang/de_DE.lang index 5d91c1250..7ff7136ba 100644 --- a/src/main/resources/assets/hbm/lang/de_DE.lang +++ b/src/main/resources/assets/hbm/lang/de_DE.lang @@ -601,6 +601,7 @@ hbmfluid.blood=Blut hbmfluid.blood_hot=Heißes Blut hbmfluid.carbondioxide=Kohlenstoffdioxid hbmfluid.chlorine=Chlorgas +hbmfluid.cholesterol=Cholesterinlösung hbmfluid.coalcreosote=Kohleteer-Kreosot hbmfluid.coalgas=Kohlebenzin hbmfluid.coalgas_leaded=Bleikohlebenzin @@ -616,6 +617,8 @@ hbmfluid.diesel=Diesel hbmfluid.diesel_crack=Crackdiesel hbmfluid.diesel_crack_reform=Hochoktan-Diesel hbmfluid.diesel_reform=Hochoktan-Crackdiesel +hbmfluid.egg=Gelöstes Ei +hbmfluid.estradiol=Estradiollösung hbmfluid.ethanol=Ethanol hbmfluid.enderjuice=Endersaft hbmfluid.fracksol=Frackinglösung @@ -2451,6 +2454,7 @@ item.oil_tar.coal.name=Kohleteer item.oil_tar.name=Ölteer item.oil_tar.crude.name=Erdölteer item.oil_tar.crack.name=Crackölteer +item.oil_tar.paraffin.name=Paraffinwachs item.oil_tar.wax.name=Chloriertes Petroleumwachs item.oil_tar.wood.name=Holzteer item.ore.asbestos=Asbest @@ -2558,6 +2562,7 @@ item.pile_rod_source.name=Chicago Pile Ra226Be-Neutronenquelle item.pile_rod_uranium.name=Chicago Pile Uranstab item.pill_iodine.name=Iodpille item.pill_herbal.name=Kräuterpaste +item.pill_red.name=Rote Pille item.pin.name=Haarklammer item.pipes_steel.name=Stahlrohre item.pirfenidone.name=Pirfenidon diff --git a/src/main/resources/assets/hbm/lang/en_US.lang b/src/main/resources/assets/hbm/lang/en_US.lang index b88c0bde6..936848957 100644 --- a/src/main/resources/assets/hbm/lang/en_US.lang +++ b/src/main/resources/assets/hbm/lang/en_US.lang @@ -1170,6 +1170,7 @@ hbmfluid.blood=Blood hbmfluid.blood_hot=Hot Blood hbmfluid.carbondioxide=Carbon Dioxide hbmfluid.chlorine=Chlorine Gas +hbmfluid.cholesterol=Cholesterol Solution hbmfluid.coalcreosote=Coal Tar Creosote hbmfluid.coalgas=Coal Gasoline hbmfluid.coalgas_leaded=Leaded Coal Gasoline @@ -1185,6 +1186,8 @@ hbmfluid.diesel=Diesel hbmfluid.diesel_crack=Cracked Diesel hbmfluid.diesel_crack_reform=High-Octane Cracked Diesel hbmfluid.diesel_reform=High-Octane Diesel +hbmfluid.egg=Dissolved Egg +hbmfluid.estradiol=Estradiol Solution hbmfluid.ethanol=Ethanol hbmfluid.enderjuice=Ender Juice hbmfluid.fracksol=Fracking Solution @@ -3127,6 +3130,7 @@ item.oil_detector.noOil=No oil detected. item.oil_tar.coal.name=Coal Tar item.oil_tar.crude.name=Oil Tar item.oil_tar.crack.name=Crack Oil Tar +item.oil_tar.paraffin.name=Paraffin Wax item.oil_tar.wax.name=Chlorinated Petroleum Wax item.oil_tar.wood.name=Wood Tar item.ore.asbestos=Asbestos @@ -3269,6 +3273,7 @@ item.pill_iodine.name=Iodine Pill item.pill_iodine.desc=Removes negative effects item.pill_herbal.name=Herbal Paste item.pill_herbal.desc=Effective treatment against lung disease and mild radiation poisoning$Comes with side effects +item.pill_red.name=Red Pill item.pin.name=Bobby Pin item.pin.desc=Standard success rate of picking a regular lock is ~10%%. item.pipes_steel.name=Steel Pipes diff --git a/src/main/resources/assets/hbm/textures/gui/fluids/cholesterol.png b/src/main/resources/assets/hbm/textures/gui/fluids/cholesterol.png new file mode 100644 index 0000000000000000000000000000000000000000..0581aa3b0b8299c6b9364466ef3db698e2bec24e GIT binary patch literal 556 zcmV+{0@MA8P)FDuYYj6agzz|1Rcfv5`wl>i zk#$`OA)u;k+lHz#O%qQ~Pwe|ntrh1SB7!fa45ewB$T^czB7{I|jV^E;2LR4F07@yu z7?Ew;aL#eN-NviudD2=V=ZuIDLcn`Z&UtKAeOM5Y(bjPsqj+6cR230DJ4`DGyB2B%$Vny7$dDUL`1l*3spr`X|3U$Bj=2nah~V!ZDs(Y zeO1MGczvlV^E{JM8k6zfk5K}&)(9bBX82C`|2EF^q?9rkT-P-+kWw0*0Lb(6Gv0er zN-WDVLX=V(Q}EuiEDL7F{eI_uzYi8Z=RDdG5mc2@3eLH~rC)q`dBMymrEs3-qXQA4 zwZ?T_#2AMaGvju<0gU3WuP@%;--$8)7iH(%@YSimzP|GI_C|kvp68K)QVO-!5pl^m zQ)}%rMOFFu_!zYN7@c$U*sCg?olMijzVCz(#<$1%JWoV~bzRx_o#Qxg&S7S>)*hl= urT;tt>$>v&{rw}EAp}AQgHf#&5#cW_s6AN~vTZ8>0000YcTcRxWd_1h4 z2!uhDbnBkF{^$37_OeW$gCa}E)~mr{n(G)?53NhuLRp!d!ta2y8!&N%=|Da06& zZQF3pal75dtF=~o@8p~j5kd%f@5wojt*Q?TA~M=Kj$;(B>x!x(A`c~zVe#|xlMn*i zw&9m$8NfmaqcEj}s$yn8n3x&!JQHK2_l}4N=Xs*4s4Bg8oO9%yF*9nd!?&3MjP_L( zf5E$!sxr?rDWx$P@BJ7hK<}Lp0%nH4=>FeEt(8*BU~r!2$UsVIbOIpH&(C=8Nhz@` z%Lq|QX-vU;&$29-8Tb30`~5yx_?+`-M?_FnN+~$!2AAvN%gYO9Mk$3_>!Sk^q4&;t zp2Qf36*J>@y8(>iudgrO-`|Nb{*AJ8Zuq*WzrMcm_V&j0_&m=e1EmyNYa`;4bEdU+ z%@kGTsZ^x`4S zL?8^Jq+9pY^*_J={QC=_*2-}lOw)vOj#?{yUDpMG_ny`oW=06%ai*%&TG{s$-?B4l8EH?REng#a~}vyuZH_WBf15&bi^MQ-6JZ`ap0W8%xJAWM7v7= sc>vaR<@@{lM>0bQgb)U!S}P*LUxKPVZkC%-zW@LL07*qoM6N<$f*tz;egFUf literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/items/oil_tar.paraffin.png b/src/main/resources/assets/hbm/textures/items/oil_tar.paraffin.png new file mode 100644 index 0000000000000000000000000000000000000000..4a452460f9e6800efb7727b1ff177989b2a98b81 GIT binary patch literal 287 zcmV+)0pR|LP);>uTp@=mb2r@> zqs_>FZ z4y?6UYwyZRfQabcd#}^SaRi`gn!<$wLI|&EnwaOgaID$VCy5^IwRF+D|Ew lb1p)4o3N+g{5g@op*LALdUV*$8(jbZ002ovPDHLkV1lJ>ci#X2 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/items/pill_red.png b/src/main/resources/assets/hbm/textures/items/pill_red.png new file mode 100644 index 0000000000000000000000000000000000000000..838c093f7765bdb39e6f55cce3ea475b396984a3 GIT binary patch literal 214 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#VfEJzp8y=W$&7~)!TRe zDgGkSwsp_?%OROD&DGb}I*K-I%w??5J3Za=u__}==&w199ZD>rlOjd0)O2|V391-Z zZ2z!A%0=+koKB_a=GsSf&8HU3V3=(%vv78L`RZ4XuisL)(^p%h_vQXdZ(g9o7(8A5 KT-G@yGywn_v`y;( literal 0 HcmV?d00001 From 6e8e8cb9c5d24837b4a4ff9c1f72292d576cc3e3 Mon Sep 17 00:00:00 2001 From: Boblet Date: Wed, 26 Apr 2023 16:18:33 +0200 Subject: [PATCH 12/40] coker functionality --- .../java/com/hbm/inventory/fluid/Fluids.java | 2 +- .../hbm/inventory/recipes/CokerRecipes.java | 25 ++-- .../recipes/CrystallizerRecipes.java | 8 +- .../java/com/hbm/items/food/ItemPill.java | 2 +- .../machine/oil/TileEntityMachineCoker.java | 115 +++++++++++++++++- 5 files changed, 138 insertions(+), 14 deletions(-) diff --git a/src/main/java/com/hbm/inventory/fluid/Fluids.java b/src/main/java/com/hbm/inventory/fluid/Fluids.java index 56f31fabc..bf2ce2575 100644 --- a/src/main/java/com/hbm/inventory/fluid/Fluids.java +++ b/src/main/java/com/hbm/inventory/fluid/Fluids.java @@ -405,7 +405,7 @@ public class Fluids { PHOSGENE.addTraits(new FT_Toxin().addEntry(new ToxinDirectDamage(ModDamageSource.cloud, 4F, 20, HazardClass.GAS_CHLORINE, false))); MUSTARDGAS.addTraits(new FT_Toxin().addEntry(new ToxinDirectDamage(ModDamageSource.cloud, 4F, 10, HazardClass.GAS_CORROSIVE, false)) .addEntry(new ToxinEffects(HazardClass.GAS_CORROSIVE, true).add(new PotionEffect(Potion.wither.id, 100, 1), new PotionEffect(Potion.confusion.id, 100, 0)))); - ESTRADIOL.addTraits(new FT_Toxin().addEntry(new ToxinEffects(HazardClass.PARTICLE_FINE, false).add(new PotionEffect(HbmPotion.mutation.id, 60 * 60 * 20, 0)))); + ESTRADIOL.addTraits(new FT_Toxin().addEntry(new ToxinEffects(HazardClass.PARTICLE_FINE, false).add(new PotionEffect(HbmPotion.death.id, 60 * 60 * 20, 0)))); double eff_steam_boil = 1.0D; double eff_steam_heatex = 0.25D; diff --git a/src/main/java/com/hbm/inventory/recipes/CokerRecipes.java b/src/main/java/com/hbm/inventory/recipes/CokerRecipes.java index f60ab5044..506ea3f03 100644 --- a/src/main/java/com/hbm/inventory/recipes/CokerRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/CokerRecipes.java @@ -75,6 +75,10 @@ public class CokerRecipes extends SerializableRecipe { private static void registerRecipe(FluidType type, int quantity, ItemStack output, FluidStack byproduct) { recipes.put(type, new Triplet(quantity, output, byproduct)); } + + public static Triplet getOutput(FluidType type) { + return recipes.get(type); + } public static HashMap getRecipes() { @@ -87,7 +91,10 @@ public class CokerRecipes extends SerializableRecipe { ItemStack out = entry.getValue().getY().copy(); FluidStack byproduct = entry.getValue().getZ(); - recipes.put(ItemFluidIcon.make(type, amount), new ItemStack[] {out, ItemFluidIcon.make(byproduct)}); + + if(out != null && byproduct != null) recipes.put(ItemFluidIcon.make(type, amount), new ItemStack[] {out, ItemFluidIcon.make(byproduct)}); + if(out != null && byproduct == null) recipes.put(ItemFluidIcon.make(type, amount), new ItemStack[] {out}); + if(out == null && byproduct != null) recipes.put(ItemFluidIcon.make(type, amount), new ItemStack[] {ItemFluidIcon.make(byproduct)}); } return recipes; @@ -112,8 +119,8 @@ public class CokerRecipes extends SerializableRecipe { public void readRecipe(JsonElement recipe) { JsonObject obj = (JsonObject) recipe; FluidStack in = this.readFluidStack(obj.get("input").getAsJsonArray()); - ItemStack out = this.readItemStack(obj.get("output").getAsJsonArray()); - FluidStack byproduct = this.readFluidStack(obj.get("byproduct").getAsJsonArray()); + ItemStack out = obj.has("output") ? this.readItemStack(obj.get("output").getAsJsonArray()) : null; + FluidStack byproduct = obj.has("byproduct") ? this.readFluidStack(obj.get("byproduct").getAsJsonArray()) : null; recipes.put(in.type, new Triplet(in.fill, out, byproduct)); } @@ -123,9 +130,13 @@ public class CokerRecipes extends SerializableRecipe { FluidStack in = new FluidStack(rec.getKey(), rec.getValue().getX()); writer.name("input"); this.writeFluidStack(in, writer); - writer.name("output"); - this.writeItemStack(rec.getValue().getY(), writer); - writer.name("byproduct"); - this.writeFluidStack(rec.getValue().getZ(), writer); + if(rec.getValue().getY() != null) { + writer.name("output"); + this.writeItemStack(rec.getValue().getY(), writer); + } + if(rec.getValue().getZ() != null) { + writer.name("byproduct"); + this.writeFluidStack(rec.getValue().getZ(), writer); + } } } diff --git a/src/main/java/com/hbm/inventory/recipes/CrystallizerRecipes.java b/src/main/java/com/hbm/inventory/recipes/CrystallizerRecipes.java index 25ce76168..933a7c970 100644 --- a/src/main/java/com/hbm/inventory/recipes/CrystallizerRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/CrystallizerRecipes.java @@ -134,10 +134,10 @@ public class CrystallizerRecipes extends SerializableRecipe { registerRecipe(CU.dust(), new CrystallizerRecipe(DictFrame.fromOne(ModItems.chemical_dye, EnumChemDye.GREEN, 4), 20), woodOil); registerRecipe(CO.dust(), new CrystallizerRecipe(DictFrame.fromOne(ModItems.chemical_dye, EnumChemDye.BLUE, 4), 20), woodOil); - registerRecipe(new ComparableStack(DictFrame.fromOne(ModItems.oil_tar, EnumTarType.CRUDE)), new CrystallizerRecipe(DictFrame.fromOne(ModItems.oil_tar, EnumTarType.WAX), 20), new FluidStack(Fluids.CHLORINE, 250)); - registerRecipe(new ComparableStack(DictFrame.fromOne(ModItems.oil_tar, EnumTarType.CRACK)), new CrystallizerRecipe(DictFrame.fromOne(ModItems.oil_tar, EnumTarType.WAX), 20), new FluidStack(Fluids.CHLORINE, 100)); - registerRecipe(new ComparableStack(DictFrame.fromOne(ModItems.oil_tar, EnumTarType.WAX)), new CrystallizerRecipe(new ItemStack(ModItems.pellet_charged), 200), new FluidStack(Fluids.IONGEL, 500)); - registerRecipe(new ComparableStack(ModItems.pill_red), new CrystallizerRecipe(DictFrame.fromOne(ModItems.oil_tar, EnumTarType.PARAFFIN), 200), new FluidStack(Fluids.ESTRADIOL, 250)); + registerRecipe(new ComparableStack(DictFrame.fromOne(ModItems.oil_tar, EnumTarType.CRUDE)), new CrystallizerRecipe(DictFrame.fromOne(ModItems.oil_tar, EnumTarType.WAX), 20), new FluidStack(Fluids.CHLORINE, 250)); + registerRecipe(new ComparableStack(DictFrame.fromOne(ModItems.oil_tar, EnumTarType.CRACK)), new CrystallizerRecipe(DictFrame.fromOne(ModItems.oil_tar, EnumTarType.WAX), 20), new FluidStack(Fluids.CHLORINE, 100)); + registerRecipe(new ComparableStack(DictFrame.fromOne(ModItems.oil_tar, EnumTarType.WAX)), new CrystallizerRecipe(new ItemStack(ModItems.pellet_charged), 200), new FluidStack(Fluids.IONGEL, 500)); + registerRecipe(new ComparableStack(DictFrame.fromOne(ModItems.oil_tar, EnumTarType.PARAFFIN)), new CrystallizerRecipe(new ItemStack(ModItems.pill_red), 200), new FluidStack(Fluids.ESTRADIOL, 250)); registerRecipe(KEY_SAND, new CrystallizerRecipe(Blocks.clay, 20), new FluidStack(Fluids.COLLOID, 1_000)); diff --git a/src/main/java/com/hbm/items/food/ItemPill.java b/src/main/java/com/hbm/items/food/ItemPill.java index aaff954f7..3c7508e47 100644 --- a/src/main/java/com/hbm/items/food/ItemPill.java +++ b/src/main/java/com/hbm/items/food/ItemPill.java @@ -51,7 +51,7 @@ public class ItemPill extends ItemFood { } if(this == ModItems.pill_red) { - player.addPotionEffect(new PotionEffect(HbmPotion.mutation.id, 60 * 60 * 20, 0)); + player.addPotionEffect(new PotionEffect(HbmPotion.death.id, 60 * 60 * 20, 0)); } if(this == ModItems.radx) { 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 e4c2b0612..6288195ac 100644 --- a/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineCoker.java +++ b/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineCoker.java @@ -1,29 +1,43 @@ package com.hbm.tileentity.machine.oil; +import com.hbm.inventory.FluidStack; import com.hbm.inventory.container.ContainerMachineCoker; import com.hbm.inventory.fluid.Fluids; import com.hbm.inventory.fluid.tank.FluidTank; import com.hbm.inventory.gui.GUIMachineCoker; +import com.hbm.inventory.recipes.CokerRecipes; import com.hbm.tileentity.IGUIProvider; import com.hbm.tileentity.TileEntityMachineBase; +import com.hbm.util.Tuple.Triplet; 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 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.world.World; public class TileEntityMachineCoker extends TileEntityMachineBase implements IFluidStandardTransceiver, IGUIProvider { + public int progress; + public static int processTime = 20_000; + + public int heat; + public static int maxHeat = 100_000; + public static double diffusion = 0.25D; + public FluidTank[] tanks; public TileEntityMachineCoker() { super(2); tanks = new FluidTank[2]; tanks[0] = new FluidTank(Fluids.HEAVYOIL, 16_000); - tanks[1] = new FluidTank(Fluids.GAS, 8_000); + tanks[1] = new FluidTank(Fluids.OIL_COKER, 8_000); } @Override @@ -34,6 +48,105 @@ public class TileEntityMachineCoker extends TileEntityMachineBase implements IFl @Override public void updateEntity() { + if(!worldObj.isRemote) { + + this.tryPullHeat(); + this.tanks[0].setType(0, slots); + + if(canProcess()) { + int burn = heat / 100; + + if(burn > 0) { + this.progress += burn; + this.heat -= burn; + + if(progress >= processTime) { + this.markChanged(); + progress -= this.processTime; + + Triplet recipe = CokerRecipes.getOutput(tanks[0].getTankType()); + int fillReq = recipe.getX(); + ItemStack output = recipe.getY(); + FluidStack byproduct = recipe.getZ(); + + if(output != null) { + if(slots[1] == null) { + slots[1] = output.copy(); + } else { + slots[1].stackSize += output.stackSize; + } + } + + if(byproduct != null) { + tanks[1].setFill(tanks[1].getFill() + byproduct.fill); + } + + tanks[0].setFill(tanks[0].getFill() - fillReq); + } + } + } + + NBTTagCompound data = new NBTTagCompound(); + tanks[0].writeToNBT(data, "t0"); + tanks[1].writeToNBT(data, "t1"); + this.networkPack(data, 25); + } + } + + public boolean canProcess() { + Triplet recipe = CokerRecipes.getOutput(tanks[0].getTankType()); + + if(recipe == null) return false; + + int fillReq = recipe.getX(); + ItemStack output = recipe.getY(); + FluidStack byproduct = recipe.getZ(); + + if(byproduct != null) tanks[1].setTankType(byproduct.type); + + if(tanks[0].getFill() < recipe.getX()) return false; + if(byproduct != null && byproduct.fill + tanks[1].getFill() > tanks[1].getMaxFill()) return false; + + if(output != null && slots[1] != null) { + if(output.getItem() != slots[1].getItem()) return false; + if(output.getItemDamage() != slots[1].getItemDamage()) return false; + if(output.stackSize + slots[1].stackSize > output.getMaxStackSize()) return false; + } + + return true; + } + + @Override + public void networkUnpack(NBTTagCompound nbt) { + tanks[0].readFromNBT(nbt, "t0"); + tanks[1].readFromNBT(nbt, "t1"); + } + + 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; + } + + if(diff > 0) { + diff = (int) Math.ceil(diff * diffusion); + source.useUpHeat(diff); + this.heat += diff; + if(this.heat > this.maxHeat) + this.heat = this.maxHeat; + return; + } + } + + this.heat = Math.max(this.heat - Math.max(this.heat / 1000, 1), 0); } @Override From aadd7c548d06629950bea0523f67eb2dd47dfcdc Mon Sep 17 00:00:00 2001 From: Bob Date: Wed, 26 Apr 2023 23:24:03 +0200 Subject: [PATCH 13/40] fluid port fixes --- src/main/java/com/hbm/inventory/OreDictManager.java | 1 + .../com/hbm/tileentity/machine/TileEntityMachineMixer.java | 4 ++-- .../machine/oil/TileEntityMachineCatalyticReformer.java | 4 ++-- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/hbm/inventory/OreDictManager.java b/src/main/java/com/hbm/inventory/OreDictManager.java index 8bd6b507a..fb39122a5 100644 --- a/src/main/java/com/hbm/inventory/OreDictManager.java +++ b/src/main/java/com/hbm/inventory/OreDictManager.java @@ -553,6 +553,7 @@ public class OreDictManager { OreDictionary.registerOre("dyeGray", fromOne(oil_tar, EnumTarType.COAL)); OreDictionary.registerOre("dyeBrown", fromOne(oil_tar, EnumTarType.WOOD)); OreDictionary.registerOre("dyeCyan", fromOne(oil_tar, EnumTarType.WAX)); + OreDictionary.registerOre("dyeWhite", fromOne(oil_tar, EnumTarType.PARAFFIN)); OreDictionary.registerOre("dye", new ItemStack(oil_tar, 1, OreDictionary.WILDCARD_VALUE)); OreDictionary.registerOre("dyeOrange", powder_cadmium); OreDictionary.registerOre("dye", powder_cadmium); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineMixer.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineMixer.java index 96e338e2a..d92976d5f 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineMixer.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineMixer.java @@ -185,9 +185,9 @@ public class TileEntityMachineMixer extends TileEntityMachineBase implements INB return new DirPos[] { new DirPos(xCoord, yCoord - 1, zCoord, Library.NEG_Y), new DirPos(xCoord + 1, yCoord, zCoord, Library.POS_X), - new DirPos(xCoord - 1, yCoord, zCoord, Library.POS_X), + new DirPos(xCoord - 1, yCoord, zCoord, Library.NEG_X), new DirPos(xCoord, yCoord, zCoord + 1, Library.POS_Z), - new DirPos(xCoord, yCoord, zCoord - 1, Library.POS_Z), + new DirPos(xCoord, yCoord, zCoord - 1, Library.NEG_Z), }; } 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 f35883f09..7aaf0ed3a 100644 --- a/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineCatalyticReformer.java +++ b/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineCatalyticReformer.java @@ -133,8 +133,8 @@ public class TileEntityMachineCatalyticReformer extends TileEntityMachineBase im 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.getOpposite()), new DirPos(xCoord - dir.offsetX * 2 - rot.offsetX, yCoord, zCoord - dir.offsetZ * 2 - rot.offsetZ, dir.getOpposite()), - new DirPos(xCoord + rot.offsetX * 3, yCoord, zCoord + rot.offsetZ * 3, dir), - new DirPos(xCoord - rot.offsetX * 3, yCoord, zCoord - rot.offsetZ * 3, dir) + new DirPos(xCoord + rot.offsetX * 3, yCoord, zCoord + rot.offsetZ * 3, rot), + new DirPos(xCoord - rot.offsetX * 3, yCoord, zCoord - rot.offsetZ * 3, rot.getOpposite()) }; } From 750500a8e15e7b39f956bf3140bdcaf2585ab96d Mon Sep 17 00:00:00 2001 From: Bob Date: Fri, 28 Apr 2023 00:17:07 +0200 Subject: [PATCH 14/40] fjixes --- src/main/java/com/hbm/blocks/bomb/BlockTaint.java | 2 +- src/main/java/com/hbm/main/ModEventHandler.java | 2 +- .../machine/TileEntityMachineRadiolysis.java | 10 ++++++++-- 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/hbm/blocks/bomb/BlockTaint.java b/src/main/java/com/hbm/blocks/bomb/BlockTaint.java index 3d24353aa..3b92192de 100644 --- a/src/main/java/com/hbm/blocks/bomb/BlockTaint.java +++ b/src/main/java/com/hbm/blocks/bomb/BlockTaint.java @@ -185,7 +185,7 @@ public class BlockTaint extends Block/*Container*/ { } } - if(entity instanceof EntityCreeper) { + if(entity != null && entity.getClass().equals(EntityCreeper.class)) { EntityCreeperTainted creep = new EntityCreeperTainted(world); creep.setLocationAndAngles(entity.posX, entity.posY, entity.posZ, entity.rotationYaw, entity.rotationPitch); diff --git a/src/main/java/com/hbm/main/ModEventHandler.java b/src/main/java/com/hbm/main/ModEventHandler.java index c78c63b76..81bb45c51 100644 --- a/src/main/java/com/hbm/main/ModEventHandler.java +++ b/src/main/java/com/hbm/main/ModEventHandler.java @@ -574,7 +574,7 @@ public class ModEventHandler { float eRad = HbmLivingProps.getRadiation(entity); - if(entity instanceof EntityCreeper && eRad >= 200 && entity.getHealth() > 0) { + if(entity.getClass().equals(EntityCreeper.class) && eRad >= 200 && entity.getHealth() > 0) { if(event.world.rand.nextInt(3) == 0 ) { EntityCreeperNuclear creep = new EntityCreeperNuclear(event.world); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadiolysis.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadiolysis.java index 8812d1714..12ec35a76 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadiolysis.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadiolysis.java @@ -222,14 +222,20 @@ public class TileEntityMachineRadiolysis extends TileEntityMachineBase implement if(slots[12].stackSize <= 0) slots[12] = null; slots[13] = output; - slots[13].stackTagCompound.setBoolean("ntmContagion", false); + slots[13].stackTagCompound.removeTag("ntmContagion"); + if(slots[13].stackTagCompound.hasNoTags()) { + slots[13].stackTagCompound = null; + } } else if(slots[13].isItemEqual(output) && slots[13].stackSize + output.stackSize <= slots[13].getMaxStackSize()) { slots[12].stackSize -= output.stackSize; if(slots[12].stackSize <= 0) slots[12] = null; slots[13].stackSize += output.stackSize; - slots[13].stackTagCompound.setBoolean("ntmContagion", false); + slots[13].stackTagCompound.removeTag("ntmContagion"); + if(slots[13].stackTagCompound.hasNoTags()) { + slots[13].stackTagCompound = null; + } } } } From ba3a0a1669228c0858d650e1c8286e0357360da2 Mon Sep 17 00:00:00 2001 From: Bob Date: Sat, 29 Apr 2023 19:00:01 +0200 Subject: [PATCH 15/40] coker texture, rendering, energy fix --- .../java/api/hbm/energy/IEnergyGenerator.java | 6 + .../com/hbm/blocks/machine/MachineCoker.java | 42 +- .../hbm/inventory/gui/GUIMachineCoker.java | 17 +- .../hbm/inventory/recipes/CokerRecipes.java | 52 +- src/main/java/com/hbm/main/ClientProxy.java | 1 + .../java/com/hbm/main/ResourceManager.java | 2 + .../hbm/render/tileentity/RenderCoker.java | 54 + .../java/com/hbm/tileentity/TileMappings.java | 1 + .../machine/TileEntityFurnaceCombination.java | 4 + .../machine/oil/TileEntityMachineCoker.java | 103 +- src/main/resources/assets/hbm/lang/de_DE.lang | 2 + src/main/resources/assets/hbm/lang/en_US.lang | 2 + .../assets/hbm/models/machines/coker.obj | 5300 +++++++---------- .../hbm/textures/gui/processing/gui_coker.png | Bin 2018 -> 2153 bytes .../hbm/textures/models/machines/coker.png | Bin 0 -> 8597 bytes 15 files changed, 2570 insertions(+), 3016 deletions(-) create mode 100644 src/main/java/com/hbm/render/tileentity/RenderCoker.java create mode 100644 src/main/resources/assets/hbm/textures/models/machines/coker.png diff --git a/src/main/java/api/hbm/energy/IEnergyGenerator.java b/src/main/java/api/hbm/energy/IEnergyGenerator.java index 081fc5491..37db6370d 100644 --- a/src/main/java/api/hbm/energy/IEnergyGenerator.java +++ b/src/main/java/api/hbm/energy/IEnergyGenerator.java @@ -10,4 +10,10 @@ public interface IEnergyGenerator extends IEnergyUser { public default long transferPower(long power) { return power; } + + /* should stop making non-receivers from interfering by applying their weight which doesn't even matter */ + @Override + public default long getTransferWeight() { + return 0; + } } diff --git a/src/main/java/com/hbm/blocks/machine/MachineCoker.java b/src/main/java/com/hbm/blocks/machine/MachineCoker.java index b944783ba..e79ee0537 100644 --- a/src/main/java/com/hbm/blocks/machine/MachineCoker.java +++ b/src/main/java/com/hbm/blocks/machine/MachineCoker.java @@ -1,12 +1,15 @@ package com.hbm.blocks.machine; import com.hbm.blocks.BlockDummyable; +import com.hbm.handler.MultiblockHandlerXR; +import com.hbm.tileentity.TileEntityProxyCombo; import com.hbm.tileentity.machine.oil.TileEntityMachineCoker; 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 MachineCoker extends BlockDummyable { @@ -18,6 +21,7 @@ public class MachineCoker extends BlockDummyable { public TileEntity createNewTileEntity(World world, int meta) { if(meta >= 12) return new TileEntityMachineCoker(); + if(meta >= 6) return new TileEntityProxyCombo().inventory().fluid(); return null; } @@ -29,11 +33,47 @@ public class MachineCoker extends BlockDummyable { @Override public int[] getDimensions() { - return new int[] {4, 0, 2, 2, 2, 2}; + return new int[] {22, 0, 1, 1, 1, 1}; } @Override public int getOffset() { return 2; } + + @Override + protected boolean checkRequirement(World world, int x, int y, int z, ForgeDirection dir, int o) { + if(super.checkRequirement(world, x, y, z, dir, o)) { + + x += dir.offsetX * o; + z += dir.offsetZ * o; + + return MultiblockHandlerXR.checkSpace(world, x, y + 1, z, new int[] {5, 0, 2, 2, 2, 2}, x, y, z, ForgeDirection.NORTH) && + MultiblockHandlerXR.checkSpace(world, x + 2, y + 1, z + 2, new int[] {0, 1, 0, 0, 0, 0}, x, y, z, ForgeDirection.NORTH) && + MultiblockHandlerXR.checkSpace(world, x + 2, y + 1, z - 2, new int[] {0, 1, 0, 0, 0, 0}, x, y, z, ForgeDirection.NORTH) && + MultiblockHandlerXR.checkSpace(world, x - 2, y + 1, z + 2, new int[] {0, 1, 0, 0, 0, 0}, x, y, z, ForgeDirection.NORTH) && + MultiblockHandlerXR.checkSpace(world, x - 2, y + 1, z - 2, new int[] {0, 1, 0, 0, 0, 0}, x, y, z, ForgeDirection.NORTH); + } + + return false; + } + + @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; + + MultiblockHandlerXR.fillSpace(world, x, y + 1, z, new int[] {5, 0, 2, 2, 2, 2}, this, ForgeDirection.NORTH); + MultiblockHandlerXR.fillSpace(world, x + 2, y + 1, z + 2, new int[] {0, 1, 0, 0, 0, 0}, this, ForgeDirection.NORTH); + MultiblockHandlerXR.fillSpace(world, x + 2, y + 1, z - 2, new int[] {0, 1, 0, 0, 0, 0}, this, ForgeDirection.NORTH); + MultiblockHandlerXR.fillSpace(world, x - 2, y + 1, z + 2, new int[] {0, 1, 0, 0, 0, 0}, this, ForgeDirection.NORTH); + MultiblockHandlerXR.fillSpace(world, x - 2, y + 1, z - 2, new int[] {0, 1, 0, 0, 0, 0}, this, ForgeDirection.NORTH); + + this.makeExtra(world, x + 1, y, z + 1); + this.makeExtra(world, x + 1, y, z - 1); + this.makeExtra(world, x - 1, y, z + 1); + this.makeExtra(world, x - 1, y, z - 1); + } } diff --git a/src/main/java/com/hbm/inventory/gui/GUIMachineCoker.java b/src/main/java/com/hbm/inventory/gui/GUIMachineCoker.java index a05678ed7..b9b2d5d1f 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIMachineCoker.java +++ b/src/main/java/com/hbm/inventory/gui/GUIMachineCoker.java @@ -25,11 +25,14 @@ public class GUIMachineCoker extends GuiInfoContainer { } @Override - public void drawScreen(int mouseX, int mouseY, float f) { - super.drawScreen(mouseX, mouseY, f); + public void drawScreen(int x, int y, float f) { + super.drawScreen(x, y, f); - refinery.tanks[0].renderTankInfo(this, mouseX, mouseY, guiLeft + 35, guiTop + 18, 16, 52); - refinery.tanks[1].renderTankInfo(this, mouseX, mouseY, guiLeft + 125, guiTop + 18, 16, 52); + refinery.tanks[0].renderTankInfo(this, x, y, guiLeft + 35, guiTop + 18, 16, 52); + refinery.tanks[1].renderTankInfo(this, x, y, guiLeft + 125, guiTop + 18, 16, 52); + + this.drawCustomInfoStat(x, y, guiLeft + 60, guiTop + 45, 54, 7, x, y, new String[] { String.format("%,d", refinery.progress) + " / " + String.format("%,d", refinery.processTime) + "TU" }); + this.drawCustomInfoStat(x, y, guiLeft + 60, guiTop + 54, 54, 7, x, y, new String[] { String.format("%,d", refinery.heat) + " / " + String.format("%,d", refinery.maxHeat) + "TU" }); } @Override @@ -46,6 +49,12 @@ public class GUIMachineCoker extends GuiInfoContainer { Minecraft.getMinecraft().getTextureManager().bindTexture(texture); drawTexturedModalRect(guiLeft, guiTop, 0, 0, xSize, ySize); + int p = refinery.progress * 53 / refinery.processTime; + drawTexturedModalRect(guiLeft + 61, guiTop + 46, 176, 0, p, 5); + + int h = refinery.heat * 52 / refinery.maxHeat; + drawTexturedModalRect(guiLeft + 61, guiTop + 55, 176, 5, h, 5); + refinery.tanks[0].renderTank(guiLeft + 35, guiTop + 70, this.zLevel, 16, 52); refinery.tanks[1].renderTank(guiLeft + 125, guiTop + 70, this.zLevel, 16, 52); } diff --git a/src/main/java/com/hbm/inventory/recipes/CokerRecipes.java b/src/main/java/com/hbm/inventory/recipes/CokerRecipes.java index 506ea3f03..1aa72f875 100644 --- a/src/main/java/com/hbm/inventory/recipes/CokerRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/CokerRecipes.java @@ -30,45 +30,47 @@ public class CokerRecipes extends SerializableRecipe { @Override public void registerDefaults() { - registerAuto(HEAVYOIL, new FluidStack(Fluids.OIL_COKER, 20)); - registerAuto(HEAVYOIL_VACUUM, new FluidStack(Fluids.REFORMATE, 20)); - registerAuto(COALCREOSOTE, new FluidStack(Fluids.NAPHTHA_COKER, 20)); - registerAuto(WOODOIL, new FluidStack(Fluids.NAPHTHA_COKER, 20)); - registerAuto(SMEAR, new FluidStack(Fluids.OIL_COKER, 20)); - registerAuto(HEATINGOIL, new FluidStack(Fluids.OIL_COKER, 20)); - registerAuto(HEATINGOIL_VACUUM, new FluidStack(Fluids.OIL_COKER, 20)); - registerAuto(RECLAIMED, new FluidStack(Fluids.NAPHTHA_COKER, 20)); - registerAuto(NAPHTHA, new FluidStack(Fluids.NAPHTHA_COKER, 20)); - registerAuto(NAPHTHA_CRACK, new FluidStack(Fluids.NAPHTHA_COKER, 20)); - registerAuto(DIESEL, new FluidStack(Fluids.NAPHTHA_COKER, 20)); - registerAuto(DIESEL_REFORM, new FluidStack(Fluids.NAPHTHA_COKER, 20)); - registerAuto(DIESEL_CRACK, new FluidStack(Fluids.GAS_COKER, 20)); - registerAuto(DIESEL_CRACK_REFORM, new FluidStack(Fluids.GAS_COKER, 20)); - registerAuto(LIGHTOIL, new FluidStack(Fluids.GAS_COKER, 20)); - registerAuto(LIGHTOIL_CRACK, new FluidStack(Fluids.GAS_COKER, 20)); - registerAuto(LIGHTOIL_VACUUM, new FluidStack(Fluids.GAS_COKER, 20)); - registerAuto(BIOFUEL, new FluidStack(Fluids.GAS_COKER, 20)); - registerAuto(AROMATICS, new FluidStack(Fluids.GAS_COKER, 20)); - registerAuto(REFORMATE, new FluidStack(Fluids.GAS_COKER, 20)); - registerAuto(XYLENE, new FluidStack(Fluids.GAS_COKER, 20)); + registerAuto(HEAVYOIL, Fluids.OIL_COKER); + registerAuto(HEAVYOIL_VACUUM, Fluids.REFORMATE); + registerAuto(COALCREOSOTE, Fluids.NAPHTHA_COKER); + registerAuto(WOODOIL, Fluids.NAPHTHA_COKER); + registerAuto(SMEAR, Fluids.OIL_COKER); + registerAuto(HEATINGOIL, Fluids.OIL_COKER); + registerAuto(HEATINGOIL_VACUUM, Fluids.OIL_COKER); + registerAuto(RECLAIMED, Fluids.NAPHTHA_COKER); + registerAuto(NAPHTHA, Fluids.NAPHTHA_COKER); + registerAuto(NAPHTHA_CRACK, Fluids.NAPHTHA_COKER); + registerAuto(DIESEL, Fluids.NAPHTHA_COKER); + registerAuto(DIESEL_REFORM, Fluids.NAPHTHA_COKER); + registerAuto(DIESEL_CRACK, Fluids.GAS_COKER); + registerAuto(DIESEL_CRACK_REFORM, Fluids.GAS_COKER); + registerAuto(LIGHTOIL, Fluids.GAS_COKER); + registerAuto(LIGHTOIL_CRACK, Fluids.GAS_COKER); + registerAuto(LIGHTOIL_VACUUM, Fluids.GAS_COKER); + registerAuto(BIOFUEL, Fluids.GAS_COKER); + registerAuto(AROMATICS, Fluids.GAS_COKER); + registerAuto(REFORMATE, Fluids.GAS_COKER); + registerAuto(XYLENE, Fluids.GAS_COKER); } - private static void registerAuto(FluidType fluid, FluidStack byproduct) { - registerSFAuto(fluid, 800_000L, DictFrame.fromOne(ModItems.coke, EnumCokeType.PETROLEUM), byproduct); //3200 burntime * 1.25 burntime bonus * 200 TU/t + private static void registerAuto(FluidType fluid, FluidType type) { + registerSFAuto(fluid, 820_000L, DictFrame.fromOne(ModItems.coke, EnumCokeType.PETROLEUM), type); //3200 burntime * 1.25 burntime bonus * 200 TU/t + 20000TU per operation } - private static void registerSFAuto(FluidType fluid, long tuPerSF, ItemStack fuel, FluidStack byproduct) { + private static void registerSFAuto(FluidType fluid, long tuPerSF, ItemStack fuel, FluidType type) { long tuFlammable = fluid.hasTrait(FT_Flammable.class) ? fluid.getTrait(FT_Flammable.class).getHeatEnergy() : 0; long tuCombustible = fluid.hasTrait(FT_Combustible.class) ? fluid.getTrait(FT_Combustible.class).getCombustionEnergy() : 0; long tuPerBucket = Math.max(tuFlammable, tuCombustible); - double penalty = 1.1D; + double penalty = 1;//1.1D; //no penalty int mB = (int) (tuPerSF * 1000L * penalty / tuPerBucket); if(mB > 10_000) mB -= (mB % 1000); else if(mB > 1_000) mB -= (mB % 100); else if(mB > 100) mB -= (mB % 10); + + FluidStack byproduct = type == null ? null : new FluidStack(type, Math.max(10, mB / 10)); registerRecipe(fluid, mB, fuel, byproduct); } diff --git a/src/main/java/com/hbm/main/ClientProxy.java b/src/main/java/com/hbm/main/ClientProxy.java index 3115a9386..7ff9cbf0b 100644 --- a/src/main/java/com/hbm/main/ClientProxy.java +++ b/src/main/java/com/hbm/main/ClientProxy.java @@ -273,6 +273,7 @@ public class ClientProxy extends ServerProxy { ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineAutosaw.class, new RenderAutosaw()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineVacuumDistill.class, new RenderVacuumDistill()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineCatalyticReformer.class, new RenderCatalyticReformer()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineCoker.class, new RenderCoker()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityFan.class, new RenderFan()); //Foundry ClientRegistry.bindTileEntitySpecialRenderer(TileEntityFoundryBasin.class, new RenderFoundry()); diff --git a/src/main/java/com/hbm/main/ResourceManager.java b/src/main/java/com/hbm/main/ResourceManager.java index b442588d3..bcc950339 100644 --- a/src/main/java/com/hbm/main/ResourceManager.java +++ b/src/main/java/com/hbm/main/ResourceManager.java @@ -76,6 +76,7 @@ public class ResourceManager { public static final IModelCustom catalytic_reformer = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/catalytic_reformer.obj")); public static final IModelCustom liquefactor = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/liquefactor.obj")); public static final IModelCustom solidifier = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/solidifier.obj")); + public static final IModelCustom coker = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/coker.obj")); //Flare Stack public static final IModelCustom oilflare = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/flare_stack.obj")); @@ -401,6 +402,7 @@ public class ResourceManager { public static final ResourceLocation catalytic_reformer_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/catalytic_reformer.png"); public static final ResourceLocation liquefactor_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/liquefactor.png"); public static final ResourceLocation solidifier_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/solidifier.png"); + public static final ResourceLocation coker_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/coker.png"); //Flare Stack public static final ResourceLocation oilflare_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/flare_stack.png"); diff --git a/src/main/java/com/hbm/render/tileentity/RenderCoker.java b/src/main/java/com/hbm/render/tileentity/RenderCoker.java new file mode 100644 index 000000000..0ed00d812 --- /dev/null +++ b/src/main/java/com/hbm/render/tileentity/RenderCoker.java @@ -0,0 +1,54 @@ +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 RenderCoker 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.glShadeModel(GL11.GL_SMOOTH); + bindTexture(ResourceManager.coker_tex); + ResourceManager.coker.renderAll(); + GL11.glShadeModel(GL11.GL_FLAT); + GL11.glEnable(GL11.GL_CULL_FACE); + + GL11.glPopMatrix(); + } + + @Override + public Item getItemForRenderer() { + return Item.getItemFromBlock(ModBlocks.machine_coker); + } + + @Override + public IItemRenderer getRenderer() { + return new ItemRenderBase() { + public void renderInventory() { + GL11.glTranslated(0, -5, 0); + GL11.glScaled(2.75, 2.75, 2.75); + } + public void renderCommon() { + GL11.glScaled(0.25, 0.25, 0.25); + GL11.glDisable(GL11.GL_CULL_FACE); + GL11.glShadeModel(GL11.GL_SMOOTH); + bindTexture(ResourceManager.coker_tex); + ResourceManager.coker.renderAll(); + GL11.glShadeModel(GL11.GL_FLAT); + GL11.glEnable(GL11.GL_CULL_FACE); + }}; + } +} diff --git a/src/main/java/com/hbm/tileentity/TileMappings.java b/src/main/java/com/hbm/tileentity/TileMappings.java index e8d059972..4426db9ed 100644 --- a/src/main/java/com/hbm/tileentity/TileMappings.java +++ b/src/main/java/com/hbm/tileentity/TileMappings.java @@ -306,6 +306,7 @@ public class TileMappings { put(TileEntitySpacer.class, "tileentity_fraction_spacer"); put(TileEntityMachineCatalyticCracker.class, "tileentity_catalytic_cracker"); put(TileEntityMachineCatalyticReformer.class, "tileentity_catalytic_reformer"); + put(TileEntityMachineCoker.class, "tileentity_coker"); put(TileEntityReactorZirnox.class, "tileentity_zirnox"); put(TileEntityZirnoxDestroyed.class, "tileentity_zirnox_destroyed"); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityFurnaceCombination.java b/src/main/java/com/hbm/tileentity/machine/TileEntityFurnaceCombination.java index 3ca96f521..3295b6b0c 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityFurnaceCombination.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityFurnaceCombination.java @@ -215,12 +215,16 @@ public class TileEntityFurnaceCombination extends TileEntityMachineBase implemen public void readFromNBT(NBTTagCompound nbt) { super.readFromNBT(nbt); this.tank.readFromNBT(nbt, "tank"); + this.progress = nbt.getInteger("prog"); + this.heat = nbt.getInteger("heat"); } @Override public void writeToNBT(NBTTagCompound nbt) { super.writeToNBT(nbt); this.tank.writeToNBT(nbt, "tank"); + nbt.setInteger("prog", progress); + nbt.setInteger("heat", heat); } @Override 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 6288195ac..aad99c2a0 100644 --- a/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineCoker.java +++ b/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineCoker.java @@ -6,9 +6,12 @@ import com.hbm.inventory.fluid.Fluids; import com.hbm.inventory.fluid.tank.FluidTank; 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.IGUIProvider; import com.hbm.tileentity.TileEntityMachineBase; import com.hbm.util.Tuple.Triplet; +import com.hbm.util.fauxpointtwelve.DirPos; import api.hbm.fluid.IFluidStandardTransceiver; import api.hbm.tile.IHeatSource; @@ -20,10 +23,12 @@ 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; public class TileEntityMachineCoker extends TileEntityMachineBase implements IFluidStandardTransceiver, IGUIProvider { - + + public boolean wasOn; public int progress; public static int processTime = 20_000; @@ -52,11 +57,20 @@ public class TileEntityMachineCoker extends TileEntityMachineBase implements IFl this.tryPullHeat(); this.tanks[0].setType(0, slots); + + if(worldObj.getTotalWorldTime() % 20 == 0) { + for(DirPos pos : getConPos()) { + this.trySubscribe(tanks[0].getTankType(), worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); + } + } + + this.wasOn = false; if(canProcess()) { int burn = heat / 100; if(burn > 0) { + this.wasOn = true; this.progress += burn; this.heat -= burn; @@ -86,13 +100,52 @@ public class TileEntityMachineCoker extends TileEntityMachineBase implements IFl } } + for(DirPos pos : getConPos()) { + if(this.tanks[1].getFill() > 0) this.sendFluid(tanks[1].getTankType(), 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); + } else { + + if(this.wasOn) { + + if(worldObj.getTotalWorldTime() % 2 == 0) { + NBTTagCompound fx = new NBTTagCompound(); + fx.setString("type", "tower"); + fx.setFloat("lift", 10F); + fx.setFloat("base", 0.75F); + fx.setFloat("max", 3F); + fx.setInteger("life", 200 + worldObj.rand.nextInt(50)); + fx.setInteger("color",0x404040); + fx.setDouble("posX", xCoord + 0.5); + fx.setDouble("posY", yCoord + 22); + fx.setDouble("posZ", zCoord + 0.5); + MainRegistry.proxy.effectNT(fx); + } + } } } + public DirPos[] getConPos() { + + return new DirPos[] { + new DirPos(xCoord + 2, yCoord, zCoord + 1, Library.POS_X), + new DirPos(xCoord + 2, yCoord, zCoord - 1, Library.POS_X), + new DirPos(xCoord - 2, yCoord, zCoord + 1, Library.NEG_X), + new DirPos(xCoord - 2, yCoord, zCoord - 1, Library.NEG_X), + new DirPos(xCoord + 1, yCoord, zCoord + 2, Library.POS_Z), + new DirPos(xCoord - 1, yCoord, zCoord + 2, Library.POS_Z), + new DirPos(xCoord + 1, yCoord, zCoord - 2, Library.NEG_Z), + new DirPos(xCoord - 1, yCoord, zCoord - 2, Library.NEG_Z) + }; + } + public boolean canProcess() { Triplet recipe = CokerRecipes.getOutput(tanks[0].getTankType()); @@ -104,7 +157,7 @@ public class TileEntityMachineCoker extends TileEntityMachineBase implements IFl if(byproduct != null) tanks[1].setTankType(byproduct.type); - if(tanks[0].getFill() < recipe.getX()) return false; + if(tanks[0].getFill() < fillReq) return false; if(byproduct != null && byproduct.fill + tanks[1].getFill() > tanks[1].getMaxFill()) return false; if(output != null && slots[1] != null) { @@ -118,6 +171,9 @@ public class TileEntityMachineCoker extends TileEntityMachineBase implements IFl @Override public void networkUnpack(NBTTagCompound 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"); } @@ -148,6 +204,24 @@ public class TileEntityMachineCoker extends TileEntityMachineBase implements IFl this.heat = Math.max(this.heat - Math.max(this.heat / 1000, 1), 0); } + + @Override + public void readFromNBT(NBTTagCompound nbt) { + super.readFromNBT(nbt); + this.tanks[0].readFromNBT(nbt, "t0"); + this.tanks[1].readFromNBT(nbt, "t1"); + this.progress = nbt.getInteger("prog"); + this.heat = nbt.getInteger("heat"); + } + + @Override + public void writeToNBT(NBTTagCompound nbt) { + super.writeToNBT(nbt); + this.tanks[0].writeToNBT(nbt, "t0"); + this.tanks[1].writeToNBT(nbt, "t1"); + nbt.setInteger("prog", progress); + nbt.setInteger("heat", heat); + } @Override public FluidTank[] getAllTanks() { @@ -163,6 +237,31 @@ public class TileEntityMachineCoker extends TileEntityMachineBase implements IFl public FluidTank[] getReceivingTanks() { return new FluidTank[] { tanks[0] }; } + + AxisAlignedBB bb = null; + + @Override + public AxisAlignedBB getRenderBoundingBox() { + + if(bb == null) { + bb = AxisAlignedBB.getBoundingBox( + xCoord - 2, + yCoord, + zCoord - 2, + xCoord + 3, + yCoord + 23, + zCoord + 3 + ); + } + + 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) { diff --git a/src/main/resources/assets/hbm/lang/de_DE.lang b/src/main/resources/assets/hbm/lang/de_DE.lang index 7ff7136ba..4ed70d973 100644 --- a/src/main/resources/assets/hbm/lang/de_DE.lang +++ b/src/main/resources/assets/hbm/lang/de_DE.lang @@ -326,6 +326,7 @@ container.leadBox=Sicherheitsbehälter container.machineBoiler=Ölwärmer container.machineCMB=CMB-Stahl Hochofen container.machineCoal=Verbrennungsgenerator +container.machineCoker=Koker-Anlage container.machineCrucible=Schmelztiegel container.machineDiesel=Dieselgenerator container.machineElectricBoiler=Elektrischer Ölwärmer @@ -3873,6 +3874,7 @@ tile.machine_chungus.name=Leviathan-Dampfturbine tile.machine_chungus.desc=Effizienz: 85%% tile.machine_coal_off.name=Verbrennungsgenerator tile.machine_coal_on.name=Verbrennungsgenerator +tile.machine_coker.name=Koker-Anlage tile.machine_combine_factory.name=CMB-Stahl Hochofen tile.machine_combustion_engine.name=Industrieller Verbrennungsmotor tile.machine_condenser.name=Dampfkondensierer diff --git a/src/main/resources/assets/hbm/lang/en_US.lang b/src/main/resources/assets/hbm/lang/en_US.lang index 936848957..d168a6073 100644 --- a/src/main/resources/assets/hbm/lang/en_US.lang +++ b/src/main/resources/assets/hbm/lang/en_US.lang @@ -618,6 +618,7 @@ container.leadBox=Containment Box container.machineBoiler=Oil Heater container.machineCMB=CMB Steel Furnace container.machineCoal=Combustion Generator +container.machineCoker=Coker Unit container.machineCrucible=Crucible container.machineDiesel=Diesel Generator container.machineElectricBoiler=Electric Oil Heater @@ -4686,6 +4687,7 @@ tile.machine_chungus.name=Leviathan Steam Turbine tile.machine_chungus.desc=Efficiency: 85%% tile.machine_coal_off.name=Combustion Generator tile.machine_coal_on.name=Combustion Generator +tile.machine_coker.name=Coker Unit tile.machine_combine_factory.name=CMB Steel Furnace tile.machine_combustion_engine.name=Industrial Combustion Engine tile.machine_condenser.name=Steam Condenser diff --git a/src/main/resources/assets/hbm/models/machines/coker.obj b/src/main/resources/assets/hbm/models/machines/coker.obj index 131a7c48b..da766fdfd 100644 --- a/src/main/resources/assets/hbm/models/machines/coker.obj +++ b/src/main/resources/assets/hbm/models/machines/coker.obj @@ -25,10 +25,6 @@ v -1.500000 7.000000 -1.500000 v -1.500000 7.000000 1.500000 v 1.500000 7.000000 1.500000 v 1.500000 7.000000 -1.500000 -v 1.500000 7.000000 -1.500000 -v 1.500000 7.000000 1.500000 -v -1.500000 7.000000 1.500000 -v -1.500000 7.000000 -1.500000 v 2.500000 2.000000 2.500000 v 2.500000 0.000000 2.500000 v 2.500000 2.000000 2.125000 @@ -189,646 +185,6 @@ v 2.500000 4.750000 -2.125000 v 2.125000 4.750000 -2.125000 v 2.125000 4.750000 2.125000 v 2.500000 4.750000 2.125000 -v -1.500000 7.000000 -8.500000 -v -1.500000 7.000000 -5.500000 -v 1.500000 7.000000 -5.500000 -v 1.500000 7.000000 -8.500000 -v -0.750000 15.000000 -7.750000 -v -0.750000 15.000000 -6.250000 -v 0.750000 15.000000 -6.250000 -v 0.750000 15.000000 -7.750000 -v -0.625000 15.000000 -7.625000 -v -0.625000 15.000000 -6.375000 -v 0.625000 15.000000 -6.375000 -v 0.625000 15.000000 -7.625000 -v -0.625000 14.000000 -7.625000 -v -0.625000 14.000000 -6.375000 -v 0.625000 14.000000 -6.375000 -v 0.625000 14.000000 -7.625000 -v 0.000000 8.500000 -15.250000 -v -0.478354 8.500000 -15.154849 -v -0.883883 8.500000 -14.883883 -v -1.154849 8.500000 -14.478354 -v -1.250000 8.500000 -14.000000 -v -1.154849 8.500000 -13.521646 -v -0.883883 8.500000 -13.116117 -v -0.478354 8.500000 -12.845151 -v -0.000000 8.500000 -12.750000 -v 0.478354 8.500000 -12.845150 -v 0.883883 8.500000 -13.116117 -v 1.154849 8.500000 -13.521646 -v 1.250000 8.500000 -14.000000 -v 1.154849 8.500000 -14.478354 -v 0.883883 8.500000 -14.883883 -v 0.478354 8.500000 -15.154850 -v 0.000000 15.500000 -15.250000 -v -0.478354 15.500000 -15.154849 -v -0.883883 15.500000 -14.883883 -v -1.154849 15.500000 -14.478354 -v -1.250000 15.500000 -14.000000 -v -1.154849 15.500000 -13.521646 -v -0.883883 15.500000 -13.116117 -v -0.478354 15.500000 -12.845151 -v -0.000000 15.500000 -12.750000 -v 0.478354 15.500000 -12.845150 -v 0.883883 15.500000 -13.116117 -v 1.154849 15.500000 -13.521646 -v 1.250000 15.500000 -14.000000 -v 1.154849 15.500000 -14.478354 -v 0.883883 15.500000 -14.883883 -v 0.478354 15.500000 -15.154850 -v -0.000000 15.500000 -15.500000 -v -0.574025 15.500000 -15.385819 -v -1.060660 15.500000 -15.060660 -v -1.385819 15.500000 -14.574025 -v -1.500000 15.500000 -14.000000 -v -1.385819 15.500000 -13.425975 -v -1.060660 15.500000 -12.939340 -v -0.574025 15.500000 -12.614181 -v -0.000000 15.500000 -12.500000 -v 0.574025 15.500000 -12.614181 -v 1.060660 15.500000 -12.939340 -v 1.385819 15.500000 -13.425975 -v 1.500000 15.500000 -14.000000 -v 1.385819 15.500000 -14.574025 -v 1.060660 15.500000 -15.060660 -v 0.574024 15.500000 -15.385819 -v -0.000000 16.500000 -15.500000 -v -0.574025 16.500000 -15.385819 -v -1.060660 16.500000 -15.060660 -v -1.385819 16.500000 -14.574025 -v -1.500000 16.500000 -14.000000 -v -1.385819 16.500000 -13.425975 -v -1.060660 16.500000 -12.939340 -v -0.574025 16.500000 -12.614181 -v -0.000000 16.500000 -12.500000 -v 0.574025 16.500000 -12.614181 -v 1.060660 16.500000 -12.939340 -v 1.385819 16.500000 -13.425975 -v 1.500000 16.500000 -14.000000 -v 1.385819 16.500000 -14.574025 -v 1.060660 16.500000 -15.060660 -v 0.574024 16.500000 -15.385819 -v 0.000000 16.500000 -15.250000 -v -0.478354 16.500000 -15.154849 -v -0.883883 16.500000 -14.883883 -v -1.154849 16.500000 -14.478354 -v -1.250000 16.500000 -14.000000 -v -1.154849 16.500000 -13.521646 -v -0.883883 16.500000 -13.116117 -v -0.478354 16.500000 -12.845151 -v -0.000000 16.500000 -12.750000 -v 0.478354 16.500000 -12.845150 -v 0.883883 16.500000 -13.116117 -v 1.154849 16.500000 -13.521646 -v 1.250000 16.500000 -14.000000 -v 1.154849 16.500000 -14.478354 -v 0.883883 16.500000 -14.883883 -v 0.478354 16.500000 -15.154850 -v 0.000000 17.500000 -15.250000 -v -0.478354 17.500000 -15.154849 -v -0.883883 17.500000 -14.883883 -v -1.154849 17.500000 -14.478354 -v -1.250000 17.500000 -14.000000 -v -1.154849 17.500000 -13.521646 -v -0.883883 17.500000 -13.116117 -v -0.478354 17.500000 -12.845151 -v -0.000000 17.500000 -12.750000 -v 0.478354 17.500000 -12.845150 -v 0.883883 17.500000 -13.116117 -v 1.154849 17.500000 -13.521646 -v 1.250000 17.500000 -14.000000 -v 1.154849 17.500000 -14.478354 -v 0.883883 17.500000 -14.883883 -v 0.478354 17.500000 -15.154850 -v -0.000000 17.500000 -15.500000 -v -0.574025 17.500000 -15.385819 -v -1.060660 17.500000 -15.060660 -v -1.385819 17.500000 -14.574025 -v -1.500000 17.500000 -14.000000 -v -1.385819 17.500000 -13.425975 -v -1.060660 17.500000 -12.939340 -v -0.574025 17.500000 -12.614181 -v -0.000000 17.500000 -12.500000 -v 0.574025 17.500000 -12.614181 -v 1.060660 17.500000 -12.939340 -v 1.385819 17.500000 -13.425975 -v 1.500000 17.500000 -14.000000 -v 1.385819 17.500000 -14.574025 -v 1.060660 17.500000 -15.060660 -v 0.574024 17.500000 -15.385819 -v -0.000000 18.500000 -15.500000 -v -0.574025 18.500000 -15.385819 -v -1.060660 18.500000 -15.060660 -v -1.385819 18.500000 -14.574025 -v -1.500000 18.500000 -14.000000 -v -1.385819 18.500000 -13.425975 -v -1.060660 18.500000 -12.939340 -v -0.574025 18.500000 -12.614181 -v -0.000000 18.500000 -12.500000 -v 0.574025 18.500000 -12.614181 -v 1.060660 18.500000 -12.939340 -v 1.385819 18.500000 -13.425975 -v 1.500000 18.500000 -14.000000 -v 1.385819 18.500000 -14.574025 -v 1.060660 18.500000 -15.060660 -v 0.574024 18.500000 -15.385819 -v 0.000000 18.500000 -15.250000 -v -0.478354 18.500000 -15.154849 -v -0.883883 18.500000 -14.883883 -v -1.154849 18.500000 -14.478354 -v -1.250000 18.500000 -14.000000 -v -1.154849 18.500000 -13.521646 -v -0.883883 18.500000 -13.116117 -v -0.478354 18.500000 -12.845151 -v -0.000000 18.500000 -12.750000 -v 0.478354 18.500000 -12.845150 -v 0.883883 18.500000 -13.116117 -v 1.154849 18.500000 -13.521646 -v 1.250000 18.500000 -14.000000 -v 1.154849 18.500000 -14.478354 -v 0.883883 18.500000 -14.883883 -v 0.478354 18.500000 -15.154850 -v 0.000000 19.000000 -15.250000 -v -0.478354 19.000000 -15.154849 -v -0.883883 19.000000 -14.883883 -v -1.154849 19.000000 -14.478354 -v -1.250000 19.000000 -14.000000 -v -1.154849 19.000000 -13.521646 -v -0.883883 19.000000 -13.116117 -v -0.478354 19.000000 -12.845151 -v -0.000000 19.000000 -12.750000 -v 0.478354 19.000000 -12.845150 -v 0.883883 19.000000 -13.116117 -v 1.154849 19.000000 -13.521646 -v 1.250000 19.000000 -14.000000 -v 1.154849 19.000000 -14.478354 -v 0.883883 19.000000 -14.883883 -v 0.478354 19.000000 -15.154850 -v -0.000000 19.000000 -15.000000 -v -0.382684 19.000000 -14.923880 -v -0.707107 19.000000 -14.707107 -v -0.923880 19.000000 -14.382684 -v -1.000000 19.000000 -14.000000 -v -0.923880 19.000000 -13.617316 -v -0.707107 19.000000 -13.292893 -v -0.382684 19.000000 -13.076120 -v -0.000000 19.000000 -13.000000 -v 0.382683 19.000000 -13.076120 -v 0.707107 19.000000 -13.292893 -v 0.923879 19.000000 -13.617316 -v 1.000000 19.000000 -14.000000 -v 0.923879 19.000000 -14.382684 -v 0.707106 19.000000 -14.707107 -v 0.382683 19.000000 -14.923880 -v -0.000000 17.000000 -15.000000 -v -0.382684 17.000000 -14.923880 -v -0.707107 17.000000 -14.707107 -v -0.923880 17.000000 -14.382684 -v -1.000000 17.000000 -14.000000 -v -0.923880 17.000000 -13.617316 -v -0.707107 17.000000 -13.292893 -v -0.382684 17.000000 -13.076120 -v -0.000000 17.000000 -13.000000 -v 0.382683 17.000000 -13.076120 -v 0.707107 17.000000 -13.292893 -v 0.923879 17.000000 -13.617316 -v 1.000000 17.000000 -14.000000 -v 0.923879 17.000000 -14.382684 -v 0.707106 17.000000 -14.707107 -v 0.382683 17.000000 -14.923880 -v -0.000000 7.000000 -15.500000 -v -0.574025 7.000000 -15.385819 -v -1.060660 7.000000 -15.060660 -v -1.385819 7.000000 -14.574025 -v -1.500000 7.000000 -14.000000 -v -1.385819 7.000000 -13.425975 -v -1.060660 7.000000 -12.939340 -v -0.574025 7.000000 -12.614181 -v -0.000000 7.000000 -12.500000 -v 0.574025 7.000000 -12.614181 -v 1.060660 7.000000 -12.939340 -v 1.385819 7.000000 -13.425975 -v 1.500000 7.000000 -14.000000 -v 1.385819 7.000000 -14.574025 -v 1.060660 7.000000 -15.060660 -v 0.574024 7.000000 -15.385819 -v -0.131548 16.500000 -15.348833 -v 1.348833 16.500000 -14.131548 -v 1.296501 17.500000 -14.394643 -v 1.296501 16.500000 -14.394643 -v 1.348833 17.500000 -14.131548 -v -1.348834 17.500000 -13.868452 -v -1.296501 16.500000 -13.605358 -v -1.296501 17.500000 -13.605358 -v -1.348834 16.500000 -13.868452 -v -0.394643 17.500000 -15.296501 -v -0.394643 16.500000 -15.296501 -v -0.131548 17.500000 -15.348833 -v 0.131547 17.500000 -12.651167 -v 0.394642 16.500000 -12.703499 -v 0.394642 17.500000 -12.703499 -v 0.131547 16.500000 -12.651167 -v -1.046788 16.500000 -14.860751 -v 0.860751 16.500000 -15.046787 -v 0.637710 17.500000 -15.195819 -v 0.637710 16.500000 -15.195819 -v 0.860751 17.500000 -15.046787 -v -0.860751 17.500000 -12.953213 -v -0.637710 16.500000 -12.804181 -v -0.637710 17.500000 -12.804181 -v -0.860751 16.500000 -12.953213 -v -1.195819 17.500000 -14.637710 -v -1.195819 16.500000 -14.637710 -v -1.046788 17.500000 -14.860751 -v 1.046787 17.500000 -13.139249 -v 1.195819 16.500000 -13.362289 -v 1.195819 17.500000 -13.362289 -v 1.046787 16.500000 -13.139249 -v -0.637711 16.500000 -15.195819 -v 1.195818 16.500000 -14.637711 -v 1.046787 17.500000 -14.860751 -v 1.046787 16.500000 -14.860751 -v 1.195818 17.500000 -14.637711 -v -1.195819 17.500000 -13.362289 -v -1.046787 16.500000 -13.139249 -v -1.046787 17.500000 -13.139249 -v -1.195819 16.500000 -13.362289 -v -0.860752 17.500000 -15.046787 -v -0.860752 16.500000 -15.046787 -v -0.637711 17.500000 -15.195819 -v 0.637710 17.500000 -12.804182 -v 0.860751 16.500000 -12.953213 -v 0.860751 17.500000 -12.953213 -v 0.637710 16.500000 -12.804182 -v -1.296501 16.500000 -14.394642 -v 0.394642 16.500000 -15.296501 -v 0.131547 17.500000 -15.348833 -v 0.131547 16.500000 -15.348833 -v 0.394642 17.500000 -15.296501 -v -0.394642 17.500000 -12.703499 -v -0.131547 16.500000 -12.651167 -v -0.131547 17.500000 -12.651167 -v -0.394642 16.500000 -12.703499 -v -1.348834 17.500000 -14.131547 -v -1.348834 16.500000 -14.131547 -v -1.296501 17.500000 -14.394642 -v 1.296501 17.500000 -13.605358 -v 1.348833 16.500000 -13.868453 -v 1.348833 17.500000 -13.868453 -v 1.296501 16.500000 -13.605358 -v 0.000000 7.000000 12.750000 -v -0.478354 7.000000 12.845150 -v -0.883883 7.000000 13.116117 -v -1.154849 7.000000 13.521646 -v -1.250000 7.000000 14.000000 -v -1.154849 7.000000 14.478354 -v -0.883883 7.000000 14.883883 -v -0.478354 7.000000 15.154849 -v -0.000000 7.000000 15.250000 -v 0.478354 7.000000 15.154850 -v 0.883883 7.000000 14.883884 -v 1.154849 7.000000 14.478354 -v 1.250000 7.000000 14.000000 -v 1.154849 7.000000 13.521646 -v 0.883883 7.000000 13.116116 -v 0.478354 7.000000 12.845150 -v 0.000000 16.000000 13.250000 -v -0.287013 16.000000 13.307091 -v -0.530330 16.000000 13.469669 -v -0.692910 16.000000 13.712988 -v -0.750000 16.000000 14.000000 -v -0.692910 16.000000 14.287012 -v -0.530330 16.000000 14.530331 -v -0.287013 16.000000 14.692909 -v -0.000000 16.000000 14.750000 -v 0.287012 16.000000 14.692909 -v 0.530330 16.000000 14.530331 -v 0.692910 16.000000 14.287012 -v 0.750000 16.000000 14.000000 -v 0.692910 16.000000 13.712988 -v 0.530330 16.000000 13.469669 -v 0.287012 16.000000 13.307091 -v 0.000000 17.000000 13.250000 -v -0.287013 17.000000 13.307091 -v -0.530330 17.000000 13.469669 -v -0.692910 17.000000 13.712988 -v -0.750000 17.000000 14.000000 -v -0.692910 17.000000 14.287012 -v -0.530330 17.000000 14.530331 -v -0.287013 17.000000 14.692909 -v -0.000000 17.000000 14.750000 -v 0.287012 17.000000 14.692909 -v 0.530330 17.000000 14.530331 -v 0.692910 17.000000 14.287012 -v 0.750000 17.000000 14.000000 -v 0.692910 17.000000 13.712988 -v 0.530330 17.000000 13.469669 -v 0.287012 17.000000 13.307091 -v -0.000000 17.000000 13.437500 -v -0.215259 17.000000 13.480318 -v -0.397748 17.000000 13.602253 -v -0.519682 17.000000 13.784740 -v -0.562500 17.000000 14.000000 -v -0.519682 17.000000 14.215260 -v -0.397748 17.000000 14.397747 -v -0.215259 17.000000 14.519682 -v -0.000000 17.000000 14.562500 -v 0.215259 17.000000 14.519682 -v 0.397747 17.000000 14.397747 -v 0.519682 17.000000 14.215260 -v 0.562500 17.000000 14.000000 -v 0.519682 17.000000 13.784740 -v 0.397747 17.000000 13.602253 -v 0.215259 17.000000 13.480318 -v -0.000000 16.000000 13.437500 -v -0.215259 16.000000 13.480318 -v -0.397748 16.000000 13.602253 -v -0.519682 16.000000 13.784740 -v -0.562500 16.000000 14.000000 -v -0.519682 16.000000 14.215260 -v -0.397748 16.000000 14.397747 -v -0.215259 16.000000 14.519682 -v -0.000000 16.000000 14.562500 -v 0.215259 16.000000 14.519682 -v 0.397747 16.000000 14.397747 -v 0.519682 16.000000 14.215260 -v 0.562500 16.000000 14.000000 -v 0.519682 16.000000 13.784740 -v 0.397747 16.000000 13.602253 -v 0.215259 16.000000 13.480318 -v 0.000000 15.875000 12.750000 -v -0.478354 15.875000 12.845150 -v -0.883883 15.875000 13.116117 -v -1.154849 15.875000 13.521646 -v -1.250000 15.875000 14.000000 -v -1.154849 15.875000 14.478354 -v -0.883883 15.875000 14.883883 -v -0.478354 15.875000 15.154849 -v -0.000000 15.875000 15.250000 -v 0.478354 15.875000 15.154850 -v 0.883883 15.875000 14.883884 -v 1.154849 15.875000 14.478354 -v 1.250000 15.875000 14.000000 -v 1.154849 15.875000 13.521646 -v 0.883883 15.875000 13.116116 -v 0.478354 15.875000 12.845150 -v 0.000000 16.125000 12.750000 -v -0.478354 16.125000 12.845150 -v -0.883883 16.125000 13.116117 -v -1.154849 16.125000 13.521646 -v -1.250000 16.125000 14.000000 -v -1.154849 16.125000 14.478354 -v -0.883883 16.125000 14.883883 -v -0.478354 16.125000 15.154849 -v -0.000000 16.125000 15.250000 -v 0.478354 16.125000 15.154850 -v 0.883883 16.125000 14.883884 -v 1.154849 16.125000 14.478354 -v 1.250000 16.125000 14.000000 -v 1.154849 16.125000 13.521646 -v 0.883883 16.125000 13.116116 -v 0.478354 16.125000 12.845150 -v 0.000000 12.875000 12.750000 -v -0.478354 12.875000 12.845150 -v -0.883883 12.875000 13.116117 -v -1.154849 12.875000 13.521646 -v -1.250000 12.875000 14.000000 -v -1.154849 12.875000 14.478354 -v -0.883883 12.875000 14.883883 -v -0.478354 12.875000 15.154849 -v -0.000000 12.875000 15.250000 -v 0.478354 12.875000 15.154850 -v 0.883883 12.875000 14.883884 -v 1.154849 12.875000 14.478354 -v 1.250000 12.875000 14.000000 -v 1.154849 12.875000 13.521646 -v 0.883883 12.875000 13.116116 -v 0.478354 12.875000 12.845150 -v 0.000000 13.125000 12.750000 -v -0.478354 13.125000 12.845150 -v -0.883883 13.125000 13.116117 -v -1.154849 13.125000 13.521646 -v -1.250000 13.125000 14.000000 -v -1.154849 13.125000 14.478354 -v -0.883883 13.125000 14.883883 -v -0.478354 13.125000 15.154849 -v -0.000000 13.125000 15.250000 -v 0.478354 13.125000 15.154850 -v 0.883883 13.125000 14.883884 -v 1.154849 13.125000 14.478354 -v 1.250000 13.125000 14.000000 -v 1.154849 13.125000 13.521646 -v 0.883883 13.125000 13.116116 -v 0.478354 13.125000 12.845150 -v 0.000000 9.875000 12.750000 -v -0.478354 9.875000 12.845150 -v -0.883883 9.875000 13.116117 -v -1.154849 9.875000 13.521646 -v -1.250000 9.875000 14.000000 -v -1.154849 9.875000 14.478354 -v -0.883883 9.875000 14.883883 -v -0.478354 9.875000 15.154849 -v -0.000000 9.875000 15.250000 -v 0.478354 9.875000 15.154850 -v 0.883883 9.875000 14.883884 -v 1.154849 9.875000 14.478354 -v 1.250000 9.875000 14.000000 -v 1.154849 9.875000 13.521646 -v 0.883883 9.875000 13.116116 -v 0.478354 9.875000 12.845150 -v 0.000000 10.125000 12.750000 -v -0.478354 10.125000 12.845150 -v -0.883883 10.125000 13.116117 -v -1.154849 10.125000 13.521646 -v -1.250000 10.125000 14.000000 -v -1.154849 10.125000 14.478354 -v -0.883883 10.125000 14.883883 -v -0.478354 10.125000 15.154849 -v -0.000000 10.125000 15.250000 -v 0.478354 10.125000 15.154850 -v 0.883883 10.125000 14.883884 -v 1.154849 10.125000 14.478354 -v 1.250000 10.125000 14.000000 -v 1.154849 10.125000 13.521646 -v 0.883883 10.125000 13.116116 -v 0.478354 10.125000 12.845150 -v 0.000000 7.000000 6.250000 -v -0.287013 7.000000 6.307090 -v -0.530330 7.000000 6.469670 -v -0.692910 7.000000 6.712987 -v -0.750000 7.000000 7.000000 -v -0.692910 7.000000 7.287013 -v -0.530330 7.000000 7.530330 -v -0.287013 7.000000 7.692910 -v -0.000000 7.000000 7.750000 -v 0.287012 7.000000 7.692910 -v 0.530330 7.000000 7.530330 -v 0.692910 7.000000 7.287013 -v 0.750000 7.000000 7.000000 -v 0.692910 7.000000 6.712987 -v 0.530330 7.000000 6.469670 -v 0.287012 7.000000 6.307090 -v 0.000000 17.000000 6.250000 -v -0.287013 17.000000 6.307090 -v -0.530330 17.000000 6.469670 -v -0.692910 17.000000 6.712987 -v -0.750000 17.000000 7.000000 -v -0.692910 17.000000 7.287013 -v -0.530330 17.000000 7.530330 -v -0.287013 17.000000 7.692910 -v -0.000000 17.000000 7.750000 -v 0.287012 17.000000 7.692910 -v 0.530330 17.000000 7.530330 -v 0.692910 17.000000 7.287013 -v 0.750000 17.000000 7.000000 -v 0.692910 17.000000 6.712987 -v 0.530330 17.000000 6.469670 -v 0.287012 17.000000 6.307090 -v -0.000000 17.000000 6.500000 -v -0.191342 17.000000 6.538060 -v -0.353553 17.000000 6.646447 -v -0.461940 17.000000 6.808658 -v -0.500000 17.000000 7.000000 -v -0.461940 17.000000 7.191342 -v -0.353553 17.000000 7.353553 -v -0.191342 17.000000 7.461940 -v -0.000000 17.000000 7.500000 -v 0.191342 17.000000 7.461940 -v 0.353553 17.000000 7.353553 -v 0.461940 17.000000 7.191342 -v 0.500000 17.000000 7.000000 -v 0.461940 17.000000 6.808658 -v 0.353553 17.000000 6.646447 -v 0.191341 17.000000 6.538060 -v -0.000000 16.000000 6.500000 -v -0.191342 16.000000 6.538060 -v -0.353553 16.000000 6.646447 -v -0.461940 16.000000 6.808658 -v -0.500000 16.000000 7.000000 -v -0.461940 16.000000 7.191342 -v -0.353553 16.000000 7.353553 -v -0.191342 16.000000 7.461940 -v -0.000000 16.000000 7.500000 -v 0.191342 16.000000 7.461940 -v 0.353553 16.000000 7.353553 -v 0.461940 16.000000 7.191342 -v 0.500000 16.000000 7.000000 -v 0.461940 16.000000 6.808658 -v 0.353553 16.000000 6.646447 -v 0.191341 16.000000 6.538060 -v -1.500000 13.000000 5.500000 -v -1.500000 13.000000 8.500000 -v 1.500000 13.000000 8.500000 -v 1.500000 13.000000 5.500000 -v -1.500000 12.750000 5.500000 -v -1.500000 12.750000 8.500000 -v 1.500000 12.750000 8.500000 -v 1.500000 12.750000 5.500000 -v -1.500000 10.000000 5.500000 -v -1.500000 10.000000 8.500000 -v 1.500000 10.000000 8.500000 -v 1.500000 10.000000 5.500000 -v -1.500000 9.750000 5.500000 -v -1.500000 9.750000 8.500000 -v 1.500000 9.750000 8.500000 -v 1.500000 9.750000 5.500000 -v -1.125000 16.000000 5.875000 -v -1.125000 16.000000 8.125000 -v 1.125000 16.000000 8.125000 -v 1.125000 16.000000 5.875000 -v -1.125000 15.750000 5.875000 -v -1.125000 15.750000 8.125000 -v 1.125000 15.750000 8.125000 -v 1.125000 15.750000 5.875000 -v -1.375000 7.000000 5.875000 -v -1.125000 7.000000 5.875000 -v -1.375000 7.000000 5.625000 -v -1.125000 7.000000 5.625000 -v -1.125000 12.750000 5.875000 -v -1.125000 12.750000 6.125000 -v -0.875000 12.750000 6.125000 -v -0.875000 12.750000 5.875000 -v -1.375000 7.000000 8.375000 -v -1.125000 7.000000 8.375000 -v -1.375000 7.000000 8.125000 -v -1.125000 7.000000 8.125000 -v -1.125000 12.750000 7.875000 -v -1.125000 12.750000 8.125000 -v -0.875000 12.750000 8.125000 -v -0.875000 12.750000 7.875000 -v 1.125000 7.000000 5.875000 -v 1.375000 7.000000 5.875000 -v 1.125000 7.000000 5.625000 -v 1.375000 7.000000 5.625000 -v 0.875000 12.750000 5.875000 -v 0.875000 12.750000 6.125000 -v 1.125000 12.750000 6.125000 -v 1.125000 12.750000 5.875000 -v 1.125000 7.000000 8.375000 -v 1.375000 7.000000 8.375000 -v 1.125000 7.000000 8.125000 -v 1.375000 7.000000 8.125000 -v 0.875000 12.750000 7.875000 -v 0.875000 12.750000 8.125000 -v 1.125000 12.750000 8.125000 -v 1.125000 12.750000 7.875000 -v -1.500000 10.000000 5.500000 -v -1.500000 10.000000 8.500000 -v 1.500000 10.000000 8.500000 -v 1.500000 10.000000 5.500000 -v -1.500000 10.500000 5.500000 -v -1.500000 10.500000 8.500000 -v 1.500000 10.500000 8.500000 -v 1.500000 10.500000 5.500000 -v -1.500000 13.000000 5.500000 -v -1.500000 13.000000 8.500000 -v 1.500000 13.000000 8.500000 -v 1.500000 13.000000 5.500000 -v -1.500000 13.500000 5.500000 -v -1.500000 13.500000 8.500000 -v 1.500000 13.500000 8.500000 -v 1.500000 13.500000 5.500000 -v -1.125000 16.000000 5.875000 -v -1.125000 16.000000 8.125000 -v 1.125000 16.000000 8.125000 -v 1.125000 16.000000 5.875000 -v -1.125000 16.500000 5.875000 -v -1.125000 16.500000 8.125000 -v 1.125000 16.500000 8.125000 -v 1.125000 16.500000 5.875000 -v -1.125000 15.750000 7.187500 -v -0.702382 14.843692 7.187500 -v -1.125000 15.750000 6.812500 -v -0.702382 14.843692 6.812500 -v 1.125000 15.750000 6.812500 -v 0.702382 14.843692 6.812500 -v 1.125000 15.750000 7.187500 -v 0.702382 14.843692 7.187500 -v 0.187500 15.750000 8.125000 -v 0.187500 14.843692 7.702382 -v -0.187500 15.750000 8.125000 -v -0.187500 14.843692 7.702382 -v -0.187500 15.750000 5.875000 -v -0.187500 14.843692 6.297618 -v 0.187500 15.750000 5.875000 -v 0.187500 14.843692 6.297618 -v -0.662913 15.750000 7.928078 -v -0.364076 14.843692 7.629241 -v -0.928078 15.750000 7.662912 -v -0.629241 14.843692 7.364076 -v 0.662912 15.750000 6.071922 -v 0.364076 14.843692 6.370759 -v 0.928077 15.750000 6.337088 -v 0.629241 14.843692 6.635924 -v 0.928078 15.750000 7.662912 -v 0.629241 14.843692 7.364076 -v 0.662913 15.750000 7.928078 -v 0.364076 14.843692 7.629241 -v -0.928078 15.750000 6.337088 -v -0.629241 14.843692 6.635924 -v -0.662913 15.750000 6.071922 -v -0.364076 14.843692 6.370759 v 0.000000 7.000000 -1.250000 v -0.478354 7.000000 -1.154849 v -0.883883 7.000000 -0.883883 @@ -837,7 +193,7 @@ v -1.250000 7.000000 0.000000 v -1.154849 7.000000 0.478354 v -0.883883 7.000000 0.883883 v -0.478354 7.000000 1.154849 -v -0.000000 7.000000 1.250000 +v 0.000000 7.000000 1.250000 v 0.478354 7.000000 1.154850 v 0.883883 7.000000 0.883884 v 1.154849 7.000000 0.478354 @@ -853,7 +209,7 @@ v -1.250000 23.000000 0.000000 v -1.154849 23.000000 0.478354 v -0.883883 23.000000 0.883883 v -0.478354 23.000000 1.154849 -v -0.000000 23.000000 1.250000 +v 0.000000 23.000000 1.250000 v 0.478354 23.000000 1.154850 v 0.883883 23.000000 0.883884 v 1.154849 23.000000 0.478354 @@ -861,7 +217,7 @@ v 1.250000 23.000000 -0.000000 v 1.154849 23.000000 -0.478355 v 0.883883 23.000000 -0.883884 v 0.478354 23.000000 -1.154850 -v -0.000000 23.000000 -1.000000 +v 0.000000 23.000000 -1.000000 v -0.382684 23.000000 -0.923880 v -0.707107 23.000000 -0.707107 v -0.923880 23.000000 -0.382683 @@ -869,13 +225,13 @@ v -1.000000 23.000000 0.000000 v -0.923880 23.000000 0.382684 v -0.707107 23.000000 0.707107 v -0.382684 23.000000 0.923880 -v -0.000000 23.000000 1.000000 +v 0.000000 23.000000 1.000000 v 0.382683 23.000000 0.923880 v 0.707107 23.000000 0.707107 -v 0.923879 23.000000 0.382684 +v 0.923880 23.000000 0.382684 v 1.000000 23.000000 -0.000000 -v 0.923879 23.000000 -0.382684 -v 0.707106 23.000000 -0.707107 +v 0.923880 23.000000 -0.382684 +v 0.707107 23.000000 -0.707107 v 0.382683 23.000000 -0.923880 v -2.000000 16.875000 2.000000 v 2.000000 16.875000 2.000000 @@ -958,10 +314,10 @@ v -1.750000 22.125000 1.750000 v 1.750000 22.125000 1.750000 v 1.750000 22.125000 -1.750000 v -0.751301 21.375000 1.370019 -v -1.370019 21.375000 0.751301 -v -0.486136 19.834999 1.104854 -v -1.104854 19.834999 0.486136 -v -0.000000 22.000000 -1.000000 +v -1.370020 21.375000 0.751301 +v -0.486135 19.834999 1.104854 +v -1.104855 19.834999 0.486136 +v 0.000000 22.000000 -1.000000 v -0.382684 22.000000 -0.923880 v -0.707107 22.000000 -0.707107 v -0.923880 22.000000 -0.382683 @@ -969,25 +325,25 @@ v -1.000000 22.000000 0.000000 v -0.923880 22.000000 0.382684 v -0.707107 22.000000 0.707107 v -0.382684 22.000000 0.923880 -v -0.000000 22.000000 1.000000 +v 0.000000 22.000000 1.000000 v 0.382683 22.000000 0.923880 v 0.707107 22.000000 0.707107 -v 0.923879 22.000000 0.382684 +v 0.923880 22.000000 0.382684 v 1.000000 22.000000 -0.000000 -v 0.923879 22.000000 -0.382684 -v 0.707106 22.000000 -0.707107 +v 0.923880 22.000000 -0.382684 +v 0.707107 22.000000 -0.707107 v 0.382683 22.000000 -0.923880 v 0.751301 21.375000 -1.370020 v 1.370019 21.375000 -0.751301 -v 0.486136 19.834999 -1.104854 -v 1.104854 19.834999 -0.486136 +v 0.486135 19.834999 -1.104854 +v 1.104855 19.834999 -0.486136 v 1.370019 21.375000 0.751301 v 0.751301 21.375000 1.370019 -v 1.104854 19.834999 0.486136 -v 0.486136 19.834999 1.104854 +v 1.104855 19.834999 0.486136 +v 0.486135 19.834999 1.104854 v -1.370020 21.375000 -0.751301 v -0.751301 21.375000 -1.370019 -v -1.104854 19.834999 -0.486136 +v -1.104855 19.834999 -0.486136 v -0.486136 19.834999 -1.104854 v -1.875000 4.500000 -1.875000 v -1.875000 4.500000 -1.375000 @@ -1005,234 +361,6 @@ v 1.375000 4.500000 1.375000 v 1.375000 4.500000 1.875000 v 1.875000 4.500000 1.375000 v 1.875000 4.500000 1.875000 -v 0.375000 4.250000 -2.125000 -v 0.198223 4.250000 -2.051777 -v 0.125000 4.250000 -1.875000 -v 0.198223 4.250000 -1.698223 -v 0.375000 4.250000 -1.625000 -v 0.551777 4.250000 -1.698223 -v 0.625000 4.250000 -1.875000 -v 0.551777 4.250000 -2.051777 -v 0.375000 10.250000 -2.125000 -v 0.198223 10.250000 -2.051777 -v 0.125000 10.250000 -1.875000 -v 0.198223 10.250000 -1.698223 -v 0.375000 10.250000 -1.625000 -v 0.551777 10.250000 -1.698223 -v 0.625000 10.250000 -1.875000 -v 0.551777 10.250000 -2.051777 -v 0.375000 10.603554 -1.978553 -v 0.198223 10.551777 -1.926777 -v 0.125000 10.426777 -1.801777 -v 0.198223 10.301777 -1.676777 -v 0.551777 10.301777 -1.676777 -v 0.625000 10.426777 -1.801777 -v 0.551777 10.551777 -1.926777 -v 0.375000 10.750000 -1.625000 -v 0.198223 10.676777 -1.625000 -v 0.125000 10.500000 -1.625000 -v 0.198223 10.323223 -1.625000 -v 0.551777 10.323223 -1.625000 -v 0.625000 10.500000 -1.625000 -v 0.551777 10.676777 -1.625000 -v 0.375000 10.250000 -0.875000 -v 0.375000 10.750000 -0.875000 -v 0.198223 10.676777 -0.875000 -v 0.125000 10.500000 -0.875000 -v 0.198223 10.323223 -0.875000 -v 0.551777 10.323223 -0.875000 -v 0.625000 10.500000 -0.875000 -v 0.551777 10.676777 -0.875000 -v -0.350000 4.250000 -2.125000 -v -0.526777 4.250000 -2.051777 -v -0.600000 4.250000 -1.875000 -v -0.526777 4.250000 -1.698223 -v -0.350000 4.250000 -1.625000 -v -0.173223 4.250000 -1.698223 -v -0.100000 4.250000 -1.875000 -v -0.173223 4.250000 -2.051777 -v -0.350000 8.750000 -2.125000 -v -0.526777 8.750000 -2.051777 -v -0.600000 8.750000 -1.875000 -v -0.526777 8.750000 -1.698223 -v -0.350000 8.750000 -1.625000 -v -0.173223 8.750000 -1.698223 -v -0.100000 8.750000 -1.875000 -v -0.173223 8.750000 -2.051777 -v -0.350000 9.103554 -1.978553 -v -0.526777 9.051777 -1.926777 -v -0.600000 8.926777 -1.801777 -v -0.526777 8.801777 -1.676777 -v -0.173223 8.801777 -1.676777 -v -0.100000 8.926777 -1.801777 -v -0.173223 9.051777 -1.926777 -v -0.350000 9.250000 -1.625000 -v -0.526777 9.176777 -1.625000 -v -0.600000 9.000000 -1.625000 -v -0.526777 8.823223 -1.625000 -v -0.173223 8.823223 -1.625000 -v -0.100000 9.000000 -1.625000 -v -0.173223 9.176777 -1.625000 -v -0.350000 8.750000 -0.875000 -v -0.350000 9.250000 -0.875000 -v -0.526777 9.176777 -0.875000 -v -0.600000 9.000000 -0.875000 -v -0.526777 8.823223 -0.875000 -v -0.173223 8.823223 -0.875000 -v -0.100000 9.000000 -0.875000 -v -0.173223 9.176777 -0.875000 -v -0.375000 4.250000 2.125000 -v -0.198223 4.250000 2.051777 -v -0.125000 4.250000 1.875000 -v -0.198223 4.250000 1.698223 -v -0.375000 4.250000 1.625000 -v -0.551777 4.250000 1.698223 -v -0.625000 4.250000 1.875000 -v -0.551777 4.250000 2.051777 -v -0.375000 10.250000 2.125000 -v -0.198223 10.250000 2.051777 -v -0.125000 10.250000 1.875000 -v -0.198223 10.250000 1.698223 -v -0.375000 10.250000 1.625000 -v -0.551777 10.250000 1.698223 -v -0.625000 10.250000 1.875000 -v -0.551777 10.250000 2.051777 -v -0.375000 10.603554 1.978553 -v -0.198223 10.551777 1.926777 -v -0.125000 10.426777 1.801777 -v -0.198223 10.301777 1.676777 -v -0.551777 10.301777 1.676777 -v -0.625000 10.426777 1.801777 -v -0.551777 10.551777 1.926777 -v -0.375000 10.750000 1.625000 -v -0.198223 10.676777 1.625000 -v -0.125000 10.500000 1.625000 -v -0.198223 10.323223 1.625000 -v -0.551777 10.323223 1.625000 -v -0.625000 10.500000 1.625000 -v -0.551777 10.676777 1.625000 -v -0.375000 10.250000 0.875000 -v -0.375000 10.750000 0.875000 -v -0.198223 10.676777 0.875000 -v -0.125000 10.500000 0.875000 -v -0.198223 10.323223 0.875000 -v -0.551777 10.323223 0.875000 -v -0.625000 10.500000 0.875000 -v -0.551777 10.676777 0.875000 -v 0.350000 4.250000 2.125000 -v 0.526777 4.250000 2.051777 -v 0.600000 4.250000 1.875000 -v 0.526777 4.250000 1.698223 -v 0.350000 4.250000 1.625000 -v 0.173223 4.250000 1.698223 -v 0.100000 4.250000 1.875000 -v 0.173223 4.250000 2.051777 -v 0.350000 8.750000 2.125000 -v 0.526777 8.750000 2.051777 -v 0.600000 8.750000 1.875000 -v 0.526777 8.750000 1.698223 -v 0.350000 8.750000 1.625000 -v 0.173223 8.750000 1.698223 -v 0.100000 8.750000 1.875000 -v 0.173223 8.750000 2.051777 -v 0.350000 9.103554 1.978553 -v 0.526777 9.051777 1.926777 -v 0.600000 8.926777 1.801777 -v 0.526777 8.801777 1.676777 -v 0.173223 8.801777 1.676777 -v 0.100000 8.926777 1.801777 -v 0.173223 9.051777 1.926777 -v 0.350000 9.250000 1.625000 -v 0.526777 9.176777 1.625000 -v 0.600000 9.000000 1.625000 -v 0.526777 8.823223 1.625000 -v 0.173223 8.823223 1.625000 -v 0.100000 9.000000 1.625000 -v 0.173223 9.176777 1.625000 -v 0.350000 8.750000 0.875000 -v 0.350000 9.250000 0.875000 -v 0.526777 9.176777 0.875000 -v 0.600000 9.000000 0.875000 -v 0.526777 8.823223 0.875000 -v 0.173223 8.823223 0.875000 -v 0.100000 9.000000 0.875000 -v 0.173223 9.176777 0.875000 -v -2.125000 4.250000 -0.375000 -v -2.051777 4.250000 -0.198223 -v -1.875000 4.250000 -0.125000 -v -1.698223 4.250000 -0.198223 -v -1.625000 4.250000 -0.375000 -v -1.698223 4.250000 -0.551777 -v -1.875000 4.250000 -0.625000 -v -2.051777 4.250000 -0.551777 -v -2.125000 10.250000 -0.375000 -v -2.051777 10.250000 -0.198223 -v -1.875000 10.250000 -0.125000 -v -1.698223 10.250000 -0.198223 -v -1.625000 10.250000 -0.375000 -v -1.698223 10.250000 -0.551777 -v -1.875000 10.250000 -0.625000 -v -2.051777 10.250000 -0.551777 -v -1.978553 10.603554 -0.375000 -v -1.926777 10.551777 -0.198223 -v -1.801777 10.426777 -0.125000 -v -1.676777 10.301777 -0.198223 -v -1.676777 10.301777 -0.551777 -v -1.801777 10.426777 -0.625000 -v -1.926777 10.551777 -0.551777 -v -1.625000 10.750000 -0.375000 -v -1.625000 10.676777 -0.198223 -v -1.625000 10.500000 -0.125000 -v -1.625000 10.323223 -0.198223 -v -1.625000 10.323223 -0.551777 -v -1.625000 10.500000 -0.625000 -v -1.625000 10.676777 -0.551777 -v -0.875000 10.250000 -0.375000 -v -0.875000 10.750000 -0.375000 -v -0.875000 10.676777 -0.198223 -v -0.875000 10.500000 -0.125000 -v -0.875000 10.323223 -0.198223 -v -0.875000 10.323223 -0.551777 -v -0.875000 10.500000 -0.625000 -v -0.875000 10.676777 -0.551777 -v -2.125000 4.250000 0.350000 -v -2.051777 4.250000 0.526777 -v -1.875000 4.250000 0.600000 -v -1.698223 4.250000 0.526777 -v -1.625000 4.250000 0.350000 -v -1.698223 4.250000 0.173223 -v -1.875000 4.250000 0.100000 -v -2.051777 4.250000 0.173223 -v -2.125000 8.750000 0.350000 -v -2.051777 8.750000 0.526777 -v -1.875000 8.750000 0.600000 -v -1.698223 8.750000 0.526777 -v -1.625000 8.750000 0.350000 -v -1.698223 8.750000 0.173223 -v -1.875000 8.750000 0.100000 -v -2.051777 8.750000 0.173223 -v -1.978553 9.103554 0.350000 -v -1.926777 9.051777 0.526777 -v -1.801777 8.926777 0.600000 -v -1.676777 8.801777 0.526777 -v -1.676777 8.801777 0.173223 -v -1.801777 8.926777 0.100000 -v -1.926777 9.051777 0.173223 -v -1.625000 9.250000 0.350000 -v -1.625000 9.176777 0.526777 -v -1.625000 9.000000 0.600000 -v -1.625000 8.823223 0.526777 -v -1.625000 8.823223 0.173223 -v -1.625000 9.000000 0.100000 -v -1.625000 9.176777 0.173223 -v -0.875000 8.750000 0.350000 -v -0.875000 9.250000 0.350000 -v -0.875000 9.176777 0.526777 -v -0.875000 9.000000 0.600000 -v -0.875000 8.823223 0.526777 -v -0.875000 8.823223 0.173223 -v -0.875000 9.000000 0.100000 -v -0.875000 9.176777 0.173223 v 2.125000 4.250000 0.375000 v 2.051777 4.250000 0.198223 v 1.875000 4.250000 0.125000 @@ -1287,7 +415,7 @@ v 1.625000 8.750000 -0.350000 v 1.698223 8.750000 -0.173223 v 1.875000 8.750000 -0.100000 v 2.051777 8.750000 -0.173223 -v 1.978553 9.103554 -0.350000 +v 1.978554 9.103554 -0.350000 v 1.926777 9.051777 -0.526777 v 1.801777 8.926777 -0.600000 v 1.676777 8.801777 -0.526777 @@ -1309,6 +437,1275 @@ v 0.875000 8.823223 -0.526777 v 0.875000 8.823223 -0.173223 v 0.875000 9.000000 -0.100000 v 0.875000 9.176777 -0.173223 +v -2.125000 4.250000 -0.375000 +v -2.051777 4.250000 -0.198223 +v -1.875000 4.250000 -0.125000 +v -1.698223 4.250000 -0.198223 +v -1.625000 4.250000 -0.375000 +v -1.698223 4.250000 -0.551776 +v -1.875000 4.250000 -0.625000 +v -2.051777 4.250000 -0.551776 +v -2.125000 10.250000 -0.375000 +v -2.051777 10.250000 -0.198223 +v -1.875000 10.250000 -0.125000 +v -1.698223 10.250000 -0.198223 +v -1.625000 10.250000 -0.375000 +v -1.698223 10.250000 -0.551776 +v -1.875000 10.250000 -0.625000 +v -2.051777 10.250000 -0.551776 +v -1.978554 10.603554 -0.375000 +v -1.926777 10.551777 -0.198223 +v -1.801777 10.426777 -0.125000 +v -1.676777 10.301777 -0.198223 +v -1.676777 10.301777 -0.551776 +v -1.801777 10.426777 -0.625000 +v -1.926777 10.551777 -0.551776 +v -1.625000 10.750000 -0.375000 +v -1.625000 10.676777 -0.198223 +v -1.625000 10.500000 -0.125000 +v -1.625000 10.323223 -0.198223 +v -1.625000 10.323223 -0.551776 +v -1.625000 10.500000 -0.625000 +v -1.625000 10.676777 -0.551776 +v -0.875000 10.250000 -0.375000 +v -0.875000 10.750000 -0.375000 +v -0.875000 10.676777 -0.198223 +v -0.875000 10.500000 -0.125000 +v -0.875000 10.323223 -0.198223 +v -0.875000 10.323223 -0.551777 +v -0.875000 10.500000 -0.625000 +v -0.875000 10.676777 -0.551777 +v -2.125000 4.250000 0.350001 +v -2.051777 4.250000 0.526777 +v -1.875000 4.250000 0.600001 +v -1.698223 4.250000 0.526777 +v -1.625000 4.250000 0.350000 +v -1.698223 4.250000 0.173224 +v -1.875000 4.250000 0.100000 +v -2.051777 4.250000 0.173224 +v -2.125000 8.750000 0.350001 +v -2.051777 8.750000 0.526777 +v -1.875000 8.750000 0.600001 +v -1.698223 8.750000 0.526777 +v -1.625000 8.750000 0.350000 +v -1.698223 8.750000 0.173224 +v -1.875000 8.750000 0.100000 +v -2.051777 8.750000 0.173224 +v -1.978554 9.103554 0.350000 +v -1.926777 9.051777 0.526777 +v -1.801777 8.926777 0.600001 +v -1.676777 8.801777 0.526777 +v -1.676777 8.801777 0.173224 +v -1.801777 8.926777 0.100000 +v -1.926777 9.051777 0.173224 +v -1.625000 9.250000 0.350000 +v -1.625000 9.176777 0.526777 +v -1.625000 9.000000 0.600000 +v -1.625000 8.823223 0.526777 +v -1.625000 8.823223 0.173224 +v -1.625000 9.000000 0.100000 +v -1.625000 9.176777 0.173224 +v -0.875000 8.750000 0.350000 +v -0.875000 9.250000 0.350000 +v -0.875000 9.176777 0.526777 +v -0.875000 9.000000 0.600000 +v -0.875000 8.823223 0.526777 +v -0.875000 8.823223 0.173223 +v -0.875000 9.000000 0.100000 +v -0.875000 9.176777 0.173223 +v 0.375000 4.250000 -2.125000 +v 0.198223 4.250000 -2.051777 +v 0.125000 4.250000 -1.875000 +v 0.198223 4.250000 -1.698223 +v 0.375000 4.250000 -1.625000 +v 0.551776 4.250000 -1.698223 +v 0.625000 4.250000 -1.875000 +v 0.551776 4.250000 -2.051777 +v 0.375000 10.250000 -2.125000 +v 0.198223 10.250000 -2.051777 +v 0.125000 10.250000 -1.875000 +v 0.198223 10.250000 -1.698223 +v 0.375000 10.250000 -1.625000 +v 0.551776 10.250000 -1.698223 +v 0.625000 10.250000 -1.875000 +v 0.551776 10.250000 -2.051777 +v 0.375000 10.603554 -1.978554 +v 0.198223 10.551777 -1.926777 +v 0.125000 10.426777 -1.801777 +v 0.198223 10.301777 -1.676777 +v 0.551776 10.301777 -1.676777 +v 0.625000 10.426777 -1.801777 +v 0.551776 10.551777 -1.926777 +v 0.375000 10.750000 -1.625000 +v 0.198223 10.676777 -1.625000 +v 0.125000 10.500000 -1.625000 +v 0.198223 10.323223 -1.625000 +v 0.551776 10.323223 -1.625000 +v 0.625000 10.500000 -1.625000 +v 0.551776 10.676777 -1.625000 +v 0.375000 10.250000 -0.875000 +v 0.375000 10.750000 -0.875000 +v 0.198223 10.676777 -0.875000 +v 0.125000 10.500000 -0.875000 +v 0.198223 10.323223 -0.875000 +v 0.551776 10.323223 -0.875000 +v 0.625000 10.500000 -0.875000 +v 0.551776 10.676777 -0.875000 +v -0.350000 4.250000 -2.125000 +v -0.526777 4.250000 -2.051777 +v -0.600000 4.250000 -1.875000 +v -0.526777 4.250000 -1.698223 +v -0.350000 4.250000 -1.625000 +v -0.173224 4.250000 -1.698223 +v -0.100000 4.250000 -1.875000 +v -0.173223 4.250000 -2.051777 +v -0.350000 8.750000 -2.125000 +v -0.526777 8.750000 -2.051777 +v -0.600000 8.750000 -1.875000 +v -0.526777 8.750000 -1.698223 +v -0.350000 8.750000 -1.625000 +v -0.173224 8.750000 -1.698223 +v -0.100000 8.750000 -1.875000 +v -0.173223 8.750000 -2.051777 +v -0.350000 9.103554 -1.978554 +v -0.526777 9.051777 -1.926777 +v -0.600000 8.926777 -1.801777 +v -0.526777 8.801777 -1.676777 +v -0.173224 8.801777 -1.676777 +v -0.100000 8.926777 -1.801777 +v -0.173223 9.051777 -1.926777 +v -0.350000 9.250000 -1.625000 +v -0.526777 9.176777 -1.625000 +v -0.600000 9.000000 -1.625000 +v -0.526777 8.823223 -1.625000 +v -0.173224 8.823223 -1.625000 +v -0.100000 9.000000 -1.625000 +v -0.173224 9.176777 -1.625000 +v -0.350000 8.750000 -0.875000 +v -0.350000 9.250000 -0.875000 +v -0.526777 9.176777 -0.875000 +v -0.600000 9.000000 -0.875000 +v -0.526777 8.823223 -0.875000 +v -0.173223 8.823223 -0.875000 +v -0.100000 9.000000 -0.875000 +v -0.173223 9.176777 -0.875000 +v -0.375000 4.250000 2.125000 +v -0.198223 4.250000 2.051777 +v -0.125000 4.250000 1.875000 +v -0.198223 4.250000 1.698223 +v -0.375000 4.250000 1.625000 +v -0.551776 4.250000 1.698223 +v -0.625000 4.250000 1.875000 +v -0.551776 4.250000 2.051777 +v -0.375000 10.250000 2.125000 +v -0.198223 10.250000 2.051777 +v -0.125000 10.250000 1.875000 +v -0.198223 10.250000 1.698223 +v -0.375000 10.250000 1.625000 +v -0.551776 10.250000 1.698223 +v -0.625000 10.250000 1.875000 +v -0.551776 10.250000 2.051777 +v -0.375000 10.603554 1.978554 +v -0.198223 10.551777 1.926777 +v -0.125000 10.426777 1.801777 +v -0.198223 10.301777 1.676777 +v -0.551776 10.301777 1.676777 +v -0.625000 10.426777 1.801777 +v -0.551776 10.551777 1.926777 +v -0.375000 10.750000 1.625000 +v -0.198223 10.676777 1.625000 +v -0.125000 10.500000 1.625000 +v -0.198223 10.323223 1.625000 +v -0.551776 10.323223 1.625000 +v -0.625000 10.500000 1.625000 +v -0.551776 10.676777 1.625000 +v -0.375000 10.250000 0.875000 +v -0.375000 10.750000 0.875000 +v -0.198223 10.676777 0.875000 +v -0.125000 10.500000 0.875000 +v -0.198223 10.323223 0.875000 +v -0.551776 10.323223 0.875000 +v -0.625000 10.500000 0.875000 +v -0.551776 10.676777 0.875000 +v 0.350001 4.250000 2.125000 +v 0.526777 4.250000 2.051777 +v 0.600001 4.250000 1.875000 +v 0.526777 4.250000 1.698223 +v 0.350000 4.250000 1.625000 +v 0.173224 4.250000 1.698223 +v 0.100001 4.250000 1.875000 +v 0.173224 4.250000 2.051777 +v 0.350001 8.750000 2.125000 +v 0.526777 8.750000 2.051777 +v 0.600001 8.750000 1.875000 +v 0.526777 8.750000 1.698223 +v 0.350000 8.750000 1.625000 +v 0.173224 8.750000 1.698223 +v 0.100001 8.750000 1.875000 +v 0.173224 8.750000 2.051777 +v 0.350001 9.103554 1.978554 +v 0.526777 9.051777 1.926777 +v 0.600001 8.926777 1.801777 +v 0.526777 8.801777 1.676777 +v 0.173224 8.801777 1.676777 +v 0.100001 8.926777 1.801777 +v 0.173224 9.051777 1.926777 +v 0.350000 9.250000 1.625000 +v 0.526777 9.176777 1.625000 +v 0.600000 9.000000 1.625000 +v 0.526777 8.823223 1.625000 +v 0.173224 8.823223 1.625000 +v 0.100001 9.000000 1.625000 +v 0.173224 9.176777 1.625000 +v 0.350000 8.750000 0.875000 +v 0.350000 9.250000 0.875000 +v 0.526777 9.176777 0.875000 +v 0.600000 9.000000 0.875000 +v 0.526777 8.823223 0.875000 +v 0.173223 8.823223 0.875000 +v 0.100000 9.000000 0.875000 +v 0.173223 9.176777 0.875000 +v -0.500000 0.000000 0.500000 +v 0.500000 0.000000 0.500000 +v -0.500000 0.000000 -0.500000 +v 0.500000 0.000000 -0.500000 +v -0.500000 0.062500 -0.500000 +v -0.500000 0.062500 0.500000 +v 0.500000 0.062500 0.500000 +v 0.500000 0.062500 -0.500000 +v -0.437500 0.062500 -0.437500 +v -0.437500 0.062500 0.437500 +v 0.437500 0.062500 0.437500 +v 0.437500 0.062500 -0.437500 +v -0.437500 0.000000 -0.437500 +v -0.437500 0.000000 0.437500 +v 0.437500 0.000000 0.437500 +v 0.437500 0.000000 -0.437500 +vt 0.272727 -0.000000 +vt 0.212121 0.057971 +vt 0.181818 -0.000000 +vt 0.121212 0.231884 +vt -0.000000 0.289855 +vt 0.030303 0.231884 +vt 0.424242 0.173913 +vt 0.333333 0.231884 +vt 0.333333 0.173913 +vt 0.121212 0.173913 +vt 0.030303 0.173913 +vt 0.272727 0.173913 +vt 0.181818 0.231884 +vt 0.181818 0.173913 +vt 0.575758 0.173913 +vt 0.484848 0.231884 +vt 0.484848 0.173913 +vt 0.303030 0.289855 +vt 0.151515 0.405797 +vt 0.151515 0.289855 +vt 0.272727 0.231884 +vt 0.575758 0.231884 +vt 0.454545 0.289855 +vt 0.424242 0.231884 +vt 0.454545 0.405797 +vt 0.333333 0.463768 +vt 0.303030 0.405797 +vt 0.606061 0.289855 +vt 0.000000 0.405797 +vt 0.272727 0.463768 +vt 0.181818 0.579710 +vt 0.181818 0.463768 +vt 0.030303 0.463768 +vt 0.606061 0.405797 +vt 0.484848 0.463768 +vt 0.575758 0.463768 +vt 0.484848 0.579710 +vt 0.422348 0.463768 +vt 0.333333 0.579710 +vt 0.117424 0.463768 +vt 0.030303 0.579710 +vt 0.170455 0.057971 +vt 0.159091 0.173913 +vt 0.159091 0.057971 +vt 0.181818 0.057971 +vt 0.170455 0.173913 +vt 0.147727 0.173913 +vt 0.136364 0.057971 +vt 0.147727 0.057971 +vt 0.147727 0.036232 +vt 0.159091 0.036232 +vt 0.159091 0.057971 +vt 0.147727 0.173913 +vt 0.147727 0.057971 +vt 0.170455 0.057971 +vt 0.159091 0.173913 +vt 0.136364 0.173913 +vt 0.181818 0.173913 +vt 0.181818 0.057971 +vt 0.159091 0.036232 +vt 0.181818 0.057971 +vt 0.170455 0.173913 +vt 0.170455 0.057971 +vt 0.147727 0.057971 +vt 0.136364 0.173913 +vt 0.136364 0.057971 +vt 0.159091 0.173913 +vt 0.159091 0.057971 +vt 0.159091 0.036232 +vt 0.147727 0.036232 +vt 0.147727 0.057971 +vt 0.136364 0.173913 +vt 0.136364 0.057971 +vt 0.159091 0.057971 +vt 0.147727 0.173913 +vt 0.170455 0.173913 +vt 0.181818 0.057971 +vt 0.181818 0.173913 +vt 0.170455 0.057971 +vt 0.147727 0.036232 +vt 0.125000 0.000000 +vt 0.113636 0.173913 +vt 0.113636 0.000000 +vt 0.136364 0.000000 +vt 0.125000 0.173913 +vt 0.102273 0.173913 +vt 0.090909 0.000000 +vt 0.102273 0.000000 +vt 0.454545 0.579710 +vt 0.424242 0.811594 +vt 0.424242 0.637681 +vt 0.113636 0.000000 +vt 0.102273 0.173913 +vt 0.102273 0.000000 +vt 0.125000 0.000000 +vt 0.113636 0.173913 +vt 0.090909 0.173913 +vt 0.136364 0.173913 +vt 0.136364 0.000000 +vt 0.303030 0.579710 +vt 0.136364 0.000000 +vt 0.125000 0.173913 +vt 0.125000 0.000000 +vt 0.102273 0.000000 +vt 0.090909 0.173913 +vt 0.090909 0.000000 +vt 0.113636 0.173913 +vt 0.113636 0.000000 +vt 0.333333 0.637681 +vt 0.303030 0.869565 +vt 0.102273 0.000000 +vt 0.090909 0.173913 +vt 0.090909 0.000000 +vt 0.113636 0.000000 +vt 0.102273 0.173913 +vt 0.125000 0.173913 +vt 0.136364 0.000000 +vt 0.136364 0.173913 +vt 0.125000 0.000000 +vt 0.333333 0.811594 +vt 0.053030 0.579710 +vt 0.181818 0.601449 +vt 0.053030 0.601449 +vt 0.181818 0.623188 +vt 0.053030 0.644928 +vt 0.053030 0.623188 +vt 0.053030 0.666667 +vt 0.181818 0.644928 +vt 0.181818 0.666667 +vt 0.181818 0.601449 +vt 0.053030 0.579710 +vt 0.181818 0.579710 +vt 0.053030 0.644928 +vt 0.181818 0.623188 +vt 0.181818 0.644928 +vt 0.053030 0.666667 +vt 0.181818 0.666667 +vt 0.053030 0.623188 +vt 0.053030 0.601449 +vt 0.053030 0.579710 +vt 0.181818 0.601449 +vt 0.053030 0.601449 +vt 0.181818 0.623188 +vt 0.053030 0.644928 +vt 0.053030 0.623188 +vt 0.053030 0.666667 +vt 0.181818 0.644928 +vt 0.181818 0.666667 +vt 0.181818 0.601449 +vt 0.053030 0.579710 +vt 0.181818 0.579710 +vt 0.053030 0.644928 +vt 0.181818 0.623188 +vt 0.181818 0.644928 +vt 0.053030 0.666667 +vt 0.181818 0.666667 +vt 0.053030 0.623188 +vt 0.053030 0.601449 +vt 0.575758 0.637681 +vt 0.606061 0.869565 +vt 0.575758 0.811594 +vt 0.454545 0.869565 +vt 0.454545 0.579710 +vt 0.484848 0.811594 +vt 0.484848 0.637681 +vt 0.477273 0.869565 +vt 0.606061 0.884058 +vt 0.477273 0.884058 +vt 0.477273 0.869565 +vt 0.606061 0.884058 +vt 0.477273 0.884058 +vt 0.477273 0.869565 +vt 0.606061 0.884058 +vt 0.477273 0.884058 +vt 0.477273 0.869565 +vt 0.606061 0.884058 +vt 0.477273 0.884058 +vt 0.053030 0.666667 +vt 0.181818 0.688406 +vt 0.053030 0.688406 +vt 0.181818 0.710145 +vt 0.053030 0.731884 +vt 0.053030 0.710145 +vt 0.053030 0.753623 +vt 0.181818 0.731884 +vt 0.181818 0.753623 +vt 0.181818 0.688406 +vt 0.053030 0.666667 +vt 0.181818 0.666667 +vt 0.053030 0.731884 +vt 0.181818 0.710145 +vt 0.181818 0.731884 +vt 0.053030 0.753623 +vt 0.181818 0.753623 +vt 0.053030 0.710145 +vt 0.053030 0.688406 +vt 0.053030 0.666667 +vt 0.181818 0.688406 +vt 0.053030 0.688406 +vt 0.181818 0.710145 +vt 0.053030 0.731884 +vt 0.053030 0.710145 +vt 0.053030 0.753623 +vt 0.181818 0.731884 +vt 0.181818 0.753623 +vt 0.181818 0.688406 +vt 0.053030 0.666667 +vt 0.181818 0.666667 +vt 0.053030 0.731884 +vt 0.181818 0.710145 +vt 0.181818 0.731884 +vt 0.053030 0.753623 +vt 0.181818 0.753623 +vt 0.053030 0.710145 +vt 0.053030 0.688406 +vt 0.833333 0.927536 +vt 0.818182 0.942029 +vt 0.818182 0.927536 +vt 0.848485 0.927536 +vt 0.833333 0.942029 +vt 0.606061 0.927536 +vt 0.621212 0.942029 +vt 0.606061 0.942029 +vt 0.636364 0.927536 +vt 0.621212 0.927536 +vt 0.651515 0.942029 +vt 0.636364 0.942029 +vt 0.666667 0.927536 +vt 0.651515 0.927536 +vt 0.681818 0.942029 +vt 0.666667 0.942029 +vt 0.681818 0.927536 +vt 0.696970 0.942029 +vt 0.712121 0.927536 +vt 0.696970 0.927536 +vt 0.727273 0.927536 +vt 0.712121 0.942029 +vt 0.742424 0.942029 +vt 0.727273 0.942029 +vt 0.742424 0.927536 +vt 0.757576 0.942029 +vt 0.772727 0.927536 +vt 0.757576 0.927536 +vt 0.787879 0.927536 +vt 0.772727 0.942029 +vt 0.803030 0.927536 +vt 0.787879 0.942029 +vt 0.803030 0.942029 +vt 0.242424 0.768116 +vt 0.121212 1.000000 +vt 0.121212 0.768116 +vt 0.121212 0.768116 +vt 0.242424 1.000000 +vt 0.121212 1.000000 +vt 0.242424 0.753623 +vt 0.121212 0.768116 +vt 0.121212 0.753623 +vt 0.242424 0.753623 +vt 0.121212 0.753623 +vt 0.242424 0.753623 +vt 0.121212 0.768116 +vt 0.121212 0.753623 +vt 0.242424 0.753623 +vt 0.121212 0.768116 +vt 0.121212 0.753623 +vt 0.000000 1.000000 +vt 0.121212 0.768116 +vt 0.121212 1.000000 +vt 0.000000 0.768116 +vt 0.121212 1.000000 +vt 0.000000 1.000000 +vt 0.121212 0.753623 +vt -0.000000 0.768116 +vt -0.000000 0.753623 +vt 0.121212 0.753623 +vt -0.000000 0.753623 +vt 0.121212 0.753623 +vt -0.000000 0.768116 +vt -0.000000 0.753623 +vt 0.121212 0.753623 +vt -0.000000 0.768116 +vt -0.000000 0.753623 +vt 0.981061 0.731884 +vt 0.875000 0.934783 +vt 0.875000 0.731884 +vt 0.875000 0.731884 +vt 0.981061 0.934783 +vt 0.875000 0.934783 +vt 0.981061 0.717391 +vt 0.875000 0.731884 +vt 0.875000 0.717391 +vt 0.981061 0.717391 +vt 0.875000 0.717391 +vt 0.981061 0.717391 +vt 0.875000 0.731884 +vt 0.875000 0.717391 +vt 0.981061 0.717391 +vt 0.875000 0.731884 +vt 0.875000 0.717391 +vt 0.893939 0.144928 +vt 0.878788 0.717391 +vt 0.878788 0.144928 +vt 0.863636 0.717391 +vt 0.848485 0.144928 +vt 0.863636 0.144928 +vt 0.545455 0.115942 +vt 0.424242 0.057971 +vt 0.545455 0.057971 +vt 0.893939 0.717391 +vt 0.909091 0.144928 +vt 0.909091 0.717391 +vt 0.545455 0.115942 +vt 0.424242 0.057971 +vt 0.545455 0.057971 +vt 0.863636 0.144928 +vt 0.878788 0.717391 +vt 0.863636 0.717391 +vt 0.909091 0.144928 +vt 0.893939 0.717391 +vt 0.893939 0.144928 +vt 0.545455 0.115942 +vt 0.424242 0.057971 +vt 0.545455 0.057971 +vt 0.545455 0.115942 +vt 0.424242 0.057971 +vt 0.545455 0.057971 +vt 0.848485 0.144928 +vt 0.909091 0.144928 +vt 0.893939 0.717391 +vt 0.893939 0.144928 +vt 0.878788 0.717391 +vt 0.863636 0.144928 +vt 0.878788 0.144928 +vt 0.545455 0.057971 +vt 0.424242 0.000000 +vt 0.545455 0.000000 +vt 0.848485 0.144928 +vt 0.863636 0.717391 +vt 0.848485 0.717391 +vt 0.545455 0.057971 +vt 0.424242 0.000000 +vt 0.545455 0.000000 +vt 0.848485 0.144928 +vt 0.863636 0.717391 +vt 0.848485 0.717391 +vt 0.893939 0.144928 +vt 0.878788 0.717391 +vt 0.878788 0.144928 +vt 0.545455 0.057971 +vt 0.424242 0.000000 +vt 0.545455 0.000000 +vt 0.863636 0.144928 +vt 0.545455 0.057971 +vt 0.424242 0.000000 +vt 0.545455 0.000000 +vt 0.909091 0.144928 +vt 0.893939 0.717391 +vt 0.530303 0.144928 +vt 0.424242 0.115942 +vt 0.530303 0.115942 +vt 0.530303 0.144928 +vt 0.424242 0.115942 +vt 0.530303 0.115942 +vt 0.530303 0.144928 +vt 0.424242 0.115942 +vt 0.530303 0.115942 +vt 0.530303 0.144928 +vt 0.424242 0.115942 +vt 0.530303 0.115942 +vt 0.875000 0.804348 +vt 0.848485 0.717391 +vt 0.875000 0.717391 +vt 0.597077 0.017186 +vt 0.605908 0.057971 +vt 0.545607 0.057971 +vt 0.848485 0.804348 +vt 0.875000 0.717391 +vt 0.875000 0.804348 +vt 0.848485 0.804348 +vt 0.875000 0.717391 +vt 0.875000 0.804348 +vt 0.848485 0.804348 +vt 0.875000 0.717391 +vt 0.875000 0.804348 +vt 0.909091 0.000000 +vt 0.909091 0.000000 +vt 0.909091 0.000000 +vt 0.878788 0.000000 +vt 0.909091 0.000000 +vt 0.863636 0.000000 +vt 0.893939 0.000000 +vt 0.893939 0.000000 +vt 0.863636 0.000000 +vt 0.878788 0.000000 +vt 0.878788 0.144928 +vt 0.893939 0.000000 +vt 0.878788 0.000000 +vt 0.863636 0.000000 +vt 0.863636 0.000000 +vt 0.878788 0.000000 +vt 0.893939 0.000000 +vt 0.181818 0.753623 +vt 0.272727 0.579710 +vt 0.272727 0.753623 +vt 0.276515 0.072464 +vt 0.306818 0.068841 +vt 0.306818 0.072464 +vt 0.242424 0.057971 +vt 0.242424 0.115942 +vt 0.212121 0.115942 +vt 0.308712 0.065217 +vt 0.306818 0.010870 +vt 0.308712 0.007246 +vt 0.306818 0.000000 +vt 0.276515 0.003623 +vt 0.276515 0.000000 +vt 0.310606 0.065217 +vt 0.310606 0.007246 +vt 0.272727 0.007246 +vt 0.274621 0.065217 +vt 0.272727 0.065217 +vt 0.278409 0.065217 +vt 0.304924 0.061594 +vt 0.304924 0.065217 +vt 0.274621 0.007246 +vt 0.276515 0.061594 +vt 0.276515 0.068841 +vt 0.306818 0.003623 +vt 0.278409 0.007246 +vt 0.304924 0.010870 +vt 0.278409 0.061594 +vt 0.278409 0.010870 +vt 0.304924 0.007246 +vt 0.306818 0.061594 +vt 0.276515 0.010870 +vt 0.575758 0.579710 +vt 0.422348 0.579710 +vt 0.117424 0.579710 +vt 0.181818 0.173913 +vt 0.136364 0.173913 +vt 0.170455 0.173913 +vt 0.136364 0.057971 +vt 0.147727 0.036232 +vt 0.181818 0.173913 +vt 0.147727 0.173913 +vt 0.159091 0.173913 +vt 0.159091 0.036232 +vt 0.136364 0.173913 +vt 0.090909 0.173913 +vt 0.454545 0.869565 +vt 0.125000 0.173913 +vt 0.090909 0.000000 +vt 0.136364 0.173913 +vt 0.102273 0.173913 +vt 0.113636 0.173913 +vt 0.181818 0.579710 +vt 0.181818 0.579710 +vt 0.606061 0.579710 +vt 0.606061 0.869565 +vt 0.606061 0.869565 +vt 0.606061 0.869565 +vt 0.606061 0.869565 +vt 0.181818 0.666667 +vt 0.181818 0.666667 +vt 0.848485 0.942029 +vt 0.242424 1.000000 +vt 0.242424 0.768116 +vt 0.242424 0.768116 +vt 0.242424 0.768116 +vt 0.242424 0.768116 +vt 0.000000 0.768116 +vt 0.121212 0.768116 +vt 0.121212 0.768116 +vt 0.121212 0.768116 +vt 0.121212 0.768116 +vt 0.981061 0.934783 +vt 0.981061 0.731884 +vt 0.981061 0.731884 +vt 0.981061 0.731884 +vt 0.981061 0.731884 +vt 0.848485 0.717391 +vt 0.424242 0.115942 +vt 0.424242 0.115942 +vt 0.909091 0.717391 +vt 0.424242 0.115942 +vt 0.424242 0.115942 +vt 0.848485 0.717391 +vt 0.909091 0.717391 +vt 0.424242 0.057971 +vt 0.424242 0.057971 +vt 0.424242 0.057971 +vt 0.424242 0.057971 +vt 0.909091 0.717391 +vt 0.424242 0.144928 +vt 0.424242 0.144928 +vt 0.424242 0.144928 +vt 0.424242 0.144928 +vt 0.848485 0.804348 +vt 0.603613 0.080044 +vt 0.597077 0.098756 +vt 0.587296 0.111259 +vt 0.575758 0.115650 +vt 0.564219 0.111259 +vt 0.554438 0.098756 +vt 0.547902 0.080044 +vt 0.547902 0.035898 +vt 0.575758 0.000292 +vt 0.554438 0.017186 +vt 0.564219 0.004683 +vt 0.587296 0.004683 +vt 0.603613 0.035898 +vt 0.848485 0.717391 +vt 0.848485 0.717391 +vt 0.848485 0.717391 +vt 0.848485 0.000000 +vt 0.848485 0.000000 +vt 0.848485 0.000000 +vt 0.848485 0.000000 +vt 0.696970 0.000000 +vt 0.681818 0.000000 +vt 0.833333 0.000000 +vt 0.818182 0.000000 +vt 0.712121 0.000000 +vt 0.848485 0.000000 +vt 0.727273 0.000000 +vt 0.621212 0.000000 +vt 0.606061 0.000000 +vt 0.742424 0.000000 +vt 0.636364 0.000000 +vt 0.757576 0.000000 +vt 0.651515 0.000000 +vt 0.772727 0.000000 +vt 0.666667 0.000000 +vt 0.803030 0.000000 +vt 0.787879 0.000000 +vt 0.696970 1.000000 +vt 0.708333 0.942029 +vt 0.708333 1.000000 +vt 0.776515 1.000000 +vt 0.787879 0.942029 +vt 0.787879 1.000000 +vt 0.685606 1.000000 +vt 0.696970 0.942029 +vt 0.765152 1.000000 +vt 0.776515 0.942029 +vt 0.674242 1.000000 +vt 0.685606 0.942029 +vt 0.753788 1.000000 +vt 0.765152 0.942029 +vt 0.662879 1.000000 +vt 0.674242 0.942029 +vt 0.742424 1.000000 +vt 0.753788 0.942029 +vt 0.640152 1.000000 +vt 0.651515 0.942029 +vt 0.651515 1.000000 +vt 0.662879 0.942029 +vt 0.731061 1.000000 +vt 0.742424 0.942029 +vt 0.628788 1.000000 +vt 0.640152 0.942029 +vt 0.719697 1.000000 +vt 0.731061 0.942029 +vt 0.617424 1.000000 +vt 0.628788 0.942029 +vt 0.719697 0.942029 +vt 0.606061 1.000000 +vt 0.617424 0.942029 +vt 0.931818 0.217391 +vt 0.926136 0.565217 +vt 0.926136 0.217391 +vt 0.920455 0.217391 +vt 0.914773 0.565217 +vt 0.914773 0.217391 +vt 0.954545 0.217391 +vt 0.948864 0.565217 +vt 0.948864 0.217391 +vt 0.943182 0.217391 +vt 0.937500 0.565217 +vt 0.937500 0.217391 +vt 0.920455 0.565217 +vt 0.909091 0.565217 +vt 0.909091 0.217391 +vt 0.943182 0.565217 +vt 0.931818 0.565217 +vt 0.937500 0.568841 +vt 0.943182 0.586957 +vt 0.937500 0.586957 +vt 0.926136 0.568841 +vt 0.920455 0.586957 +vt 0.920455 0.576087 +vt 0.943182 0.576087 +vt 0.948864 0.586957 +vt 0.931818 0.586957 +vt 0.926136 0.586957 +vt 0.914773 0.586957 +vt 0.914773 0.583333 +vt 0.931818 0.608696 +vt 0.926136 0.605072 +vt 0.920455 0.597826 +vt 0.914773 0.590580 +vt 0.943182 0.597826 +vt 0.937500 0.605072 +vt 0.948864 0.583333 +vt 0.954545 0.586957 +vt 0.948864 0.590580 +vt 0.909091 0.586957 +vt 0.914773 0.608696 +vt 0.909091 0.652174 +vt 0.909091 0.608696 +vt 0.926136 0.652174 +vt 0.926136 0.608696 +vt 0.954545 0.608696 +vt 0.948864 0.652174 +vt 0.948864 0.608696 +vt 0.920455 0.608696 +vt 0.914773 0.652174 +vt 0.943182 0.608696 +vt 0.937500 0.652174 +vt 0.937500 0.608696 +vt 0.920455 0.652174 +vt 0.943182 0.652174 +vt 0.931818 0.652174 +vt 0.977273 0.217391 +vt 0.971591 0.478261 +vt 0.971591 0.217391 +vt 0.965909 0.217391 +vt 0.960227 0.478261 +vt 0.960227 0.217391 +vt 1.000000 0.217391 +vt 0.994318 0.478261 +vt 0.994318 0.217391 +vt 0.988636 0.217391 +vt 0.982955 0.478261 +vt 0.982955 0.217391 +vt 0.965909 0.478261 +vt 0.954545 0.478261 +vt 0.954545 0.217391 +vt 0.988636 0.478261 +vt 0.977273 0.478261 +vt 0.982955 0.481884 +vt 0.988636 0.500000 +vt 0.982955 0.500000 +vt 0.971591 0.481884 +vt 0.965909 0.500000 +vt 0.965909 0.489130 +vt 0.988636 0.489130 +vt 0.994318 0.500000 +vt 0.977273 0.500000 +vt 0.971591 0.500000 +vt 0.960227 0.500000 +vt 0.960227 0.496377 +vt 0.977273 0.521739 +vt 0.971591 0.518116 +vt 0.960227 0.503623 +vt 0.982955 0.518116 +vt 0.965909 0.510870 +vt 0.988636 0.510870 +vt 0.994318 0.496377 +vt 1.000000 0.500000 +vt 0.994318 0.503623 +vt 0.954545 0.500000 +vt 0.960227 0.521739 +vt 0.954545 0.565217 +vt 0.954545 0.521739 +vt 0.971591 0.565217 +vt 0.971591 0.521739 +vt 1.000000 0.521739 +vt 0.994318 0.565217 +vt 0.994318 0.521739 +vt 0.965909 0.521739 +vt 0.960227 0.565217 +vt 0.988636 0.521739 +vt 0.982955 0.565217 +vt 0.982955 0.521739 +vt 0.965909 0.565217 +vt 0.988636 0.565217 +vt 0.977273 0.565217 +vt 0.931818 0.217391 +vt 0.926136 0.565217 +vt 0.926136 0.217391 +vt 0.920455 0.217391 +vt 0.914773 0.565217 +vt 0.914773 0.217391 +vt 0.954545 0.217391 +vt 0.948864 0.565217 +vt 0.948864 0.217391 +vt 0.943182 0.217391 +vt 0.937500 0.565217 +vt 0.937500 0.217391 +vt 0.920455 0.565217 +vt 0.909091 0.565217 +vt 0.909091 0.217391 +vt 0.943182 0.565217 +vt 0.931818 0.565217 +vt 0.937500 0.568841 +vt 0.943182 0.586957 +vt 0.937500 0.586957 +vt 0.926136 0.568841 +vt 0.920455 0.586957 +vt 0.920455 0.576087 +vt 0.943182 0.576087 +vt 0.948864 0.586957 +vt 0.931818 0.586957 +vt 0.926136 0.586957 +vt 0.914773 0.586957 +vt 0.914773 0.583333 +vt 0.931818 0.608696 +vt 0.926136 0.605072 +vt 0.914773 0.590580 +vt 0.943182 0.597826 +vt 0.937500 0.605072 +vt 0.920455 0.597826 +vt 0.948864 0.583333 +vt 0.954545 0.586957 +vt 0.948864 0.590580 +vt 0.909091 0.586957 +vt 0.914773 0.608696 +vt 0.909091 0.652174 +vt 0.909091 0.608696 +vt 0.926136 0.652174 +vt 0.926136 0.608696 +vt 0.954545 0.608696 +vt 0.948864 0.652174 +vt 0.948864 0.608696 +vt 0.920455 0.608696 +vt 0.914773 0.652174 +vt 0.943182 0.608696 +vt 0.937500 0.652174 +vt 0.937500 0.608696 +vt 0.920455 0.652174 +vt 0.943182 0.652174 +vt 0.931818 0.652174 +vt 0.977273 0.217391 +vt 0.971591 0.478261 +vt 0.971591 0.217391 +vt 0.965909 0.217391 +vt 0.960227 0.478261 +vt 0.960227 0.217391 +vt 1.000000 0.217391 +vt 0.994318 0.478261 +vt 0.994318 0.217391 +vt 0.988636 0.217391 +vt 0.982955 0.478261 +vt 0.982955 0.217391 +vt 0.965909 0.478261 +vt 0.954545 0.478261 +vt 0.954545 0.217391 +vt 0.988636 0.478261 +vt 0.977273 0.478261 +vt 0.982955 0.481884 +vt 0.988636 0.500000 +vt 0.982955 0.500000 +vt 0.971591 0.481884 +vt 0.965909 0.500000 +vt 0.965909 0.489130 +vt 0.988636 0.489130 +vt 0.994318 0.500000 +vt 0.977273 0.500000 +vt 0.971591 0.500000 +vt 0.960227 0.500000 +vt 0.960227 0.496377 +vt 0.977273 0.521739 +vt 0.971591 0.518116 +vt 0.965909 0.510870 +vt 0.960227 0.503623 +vt 0.982955 0.518116 +vt 0.988636 0.510870 +vt 0.994318 0.496377 +vt 1.000000 0.500000 +vt 0.994318 0.503623 +vt 0.954545 0.500000 +vt 0.960227 0.521739 +vt 0.954545 0.565217 +vt 0.954545 0.521739 +vt 0.971591 0.565217 +vt 0.971591 0.521739 +vt 1.000000 0.521739 +vt 0.994318 0.565217 +vt 0.994318 0.521739 +vt 0.965909 0.521739 +vt 0.960227 0.565217 +vt 0.988636 0.521739 +vt 0.982955 0.565217 +vt 0.982955 0.521739 +vt 0.965909 0.565217 +vt 0.988636 0.565217 +vt 0.977273 0.565217 +vt 0.931818 0.217391 +vt 0.926136 0.565217 +vt 0.926136 0.217391 +vt 0.920455 0.217391 +vt 0.914773 0.565217 +vt 0.914773 0.217391 +vt 0.954545 0.217391 +vt 0.948864 0.565217 +vt 0.948864 0.217391 +vt 0.943182 0.217391 +vt 0.937500 0.565217 +vt 0.937500 0.217391 +vt 0.920455 0.565217 +vt 0.909091 0.565217 +vt 0.909091 0.217391 +vt 0.943182 0.565217 +vt 0.931818 0.565217 +vt 0.937500 0.568841 +vt 0.943182 0.586957 +vt 0.937500 0.586957 +vt 0.926136 0.568841 +vt 0.920455 0.586957 +vt 0.920455 0.576087 +vt 0.943182 0.576087 +vt 0.948864 0.586957 +vt 0.931818 0.586957 +vt 0.926136 0.586957 +vt 0.914773 0.586957 +vt 0.914773 0.583333 +vt 0.931818 0.608696 +vt 0.926136 0.605072 +vt 0.920455 0.597826 +vt 0.914773 0.590580 +vt 0.943182 0.597826 +vt 0.937500 0.605072 +vt 0.948864 0.583333 +vt 0.954545 0.586957 +vt 0.948864 0.590580 +vt 0.909091 0.586957 +vt 0.914773 0.608696 +vt 0.909091 0.652174 +vt 0.909091 0.608696 +vt 0.926136 0.652174 +vt 0.926136 0.608696 +vt 0.954545 0.608696 +vt 0.948864 0.652174 +vt 0.948864 0.608696 +vt 0.920455 0.652174 +vt 0.914773 0.652174 +vt 0.937500 0.608696 +vt 0.943182 0.652174 +vt 0.937500 0.652174 +vt 0.920455 0.608696 +vt 0.943182 0.608696 +vt 0.931818 0.652174 +vt 0.977273 0.217391 +vt 0.971591 0.478261 +vt 0.971591 0.217391 +vt 0.965909 0.217391 +vt 0.960227 0.478261 +vt 0.960227 0.217391 +vt 1.000000 0.217391 +vt 0.994318 0.478261 +vt 0.994318 0.217391 +vt 0.988636 0.217391 +vt 0.982955 0.478261 +vt 0.982955 0.217391 +vt 0.965909 0.478261 +vt 0.954545 0.478261 +vt 0.954545 0.217391 +vt 0.988636 0.478261 +vt 0.977273 0.478261 +vt 0.982955 0.481884 +vt 0.988636 0.500000 +vt 0.982955 0.500000 +vt 0.971591 0.481884 +vt 0.965909 0.500000 +vt 0.965909 0.489130 +vt 0.988636 0.489130 +vt 0.994318 0.500000 +vt 0.977273 0.500000 +vt 0.971591 0.500000 +vt 0.960227 0.500000 +vt 0.960227 0.496377 +vt 0.977273 0.521739 +vt 0.971591 0.518116 +vt 0.965909 0.510870 +vt 0.960227 0.503623 +vt 0.982955 0.518116 +vt 0.994318 0.503623 +vt 0.988636 0.510870 +vt 0.994318 0.496377 +vt 1.000000 0.500000 +vt 0.954545 0.500000 +vt 0.960227 0.521739 +vt 0.954545 0.565217 +vt 0.954545 0.521739 +vt 0.971591 0.565217 +vt 0.971591 0.521739 +vt 1.000000 0.521739 +vt 0.994318 0.565217 +vt 0.994318 0.521739 +vt 0.965909 0.521739 +vt 0.960227 0.565217 +vt 0.988636 0.521739 +vt 0.982955 0.565217 +vt 0.982955 0.521739 +vt 0.965909 0.565217 +vt 0.988636 0.565217 +vt 0.977273 0.565217 +vt 0.931818 0.217391 +vt 0.926136 0.565217 +vt 0.926136 0.217391 +vt 0.920455 0.217391 +vt 0.914773 0.565217 +vt 0.914773 0.217391 +vt 0.954545 0.217391 +vt 0.948864 0.565217 +vt 0.948864 0.217391 +vt 0.943182 0.217391 +vt 0.937500 0.565217 +vt 0.937500 0.217391 +vt 0.920455 0.565217 +vt 0.909091 0.565217 +vt 0.909091 0.217391 +vt 0.943182 0.565217 +vt 0.931818 0.565217 +vt 0.937500 0.568841 +vt 0.943182 0.586957 +vt 0.937500 0.586957 +vt 0.920455 0.576087 +vt 0.926136 0.586957 +vt 0.920455 0.586957 +vt 0.943182 0.576087 +vt 0.948864 0.586957 +vt 0.931818 0.586957 +vt 0.926136 0.568841 +vt 0.914773 0.586957 +vt 0.914773 0.583333 +vt 0.931818 0.608696 +vt 0.926136 0.605072 +vt 0.914773 0.590580 +vt 0.943182 0.597826 +vt 0.937500 0.605072 +vt 0.920455 0.597826 +vt 0.948864 0.583333 +vt 0.954545 0.586957 +vt 0.948864 0.590580 +vt 0.909091 0.586957 +vt 0.914773 0.608696 +vt 0.909091 0.652174 +vt 0.909091 0.608696 +vt 0.926136 0.652174 +vt 0.926136 0.608696 +vt 0.954545 0.608696 +vt 0.948864 0.652174 +vt 0.948864 0.608696 +vt 0.920455 0.608696 +vt 0.914773 0.652174 +vt 0.943182 0.608696 +vt 0.937500 0.652174 +vt 0.937500 0.608696 +vt 0.920455 0.652174 +vt 0.943182 0.652174 +vt 0.931818 0.652174 +vt 0.977273 0.217391 +vt 0.971591 0.478261 +vt 0.971591 0.217391 +vt 0.965909 0.217391 +vt 0.960227 0.478261 +vt 0.960227 0.217391 +vt 1.000000 0.217391 +vt 0.994318 0.478261 +vt 0.994318 0.217391 +vt 0.988636 0.217391 +vt 0.982955 0.478261 +vt 0.982955 0.217391 +vt 0.965909 0.478261 +vt 0.954545 0.478261 +vt 0.954545 0.217391 +vt 0.988636 0.478261 +vt 0.977273 0.478261 +vt 0.982955 0.481884 +vt 0.988636 0.500000 +vt 0.982955 0.500000 +vt 0.971591 0.481884 +vt 0.965909 0.500000 +vt 0.965909 0.489130 +vt 0.988636 0.489130 +vt 0.994318 0.500000 +vt 0.977273 0.500000 +vt 0.971591 0.500000 +vt 0.960227 0.500000 +vt 0.960227 0.496377 +vt 0.977273 0.521739 +vt 0.971591 0.518116 +vt 0.965909 0.510870 +vt 0.960227 0.503623 +vt 0.982955 0.518116 +vt 0.988636 0.510870 +vt 0.994318 0.496377 +vt 1.000000 0.500000 +vt 0.994318 0.503623 +vt 0.954545 0.500000 +vt 0.960227 0.521739 +vt 0.954545 0.565217 +vt 0.954545 0.521739 +vt 0.971591 0.565217 +vt 0.971591 0.521739 +vt 1.000000 0.521739 +vt 0.994318 0.565217 +vt 0.994318 0.521739 +vt 0.965909 0.521739 +vt 0.960227 0.565217 +vt 0.988636 0.521739 +vt 0.982955 0.565217 +vt 0.982955 0.521739 +vt 0.965909 0.565217 +vt 0.988636 0.565217 +vt 0.977273 0.565217 +vt 0.606061 0.942029 +vt 0.954545 0.565217 +vt 0.954545 0.652174 +vt 1.000000 0.478261 +vt 1.000000 0.565217 +vt 0.954545 0.565217 +vt 0.954545 0.652174 +vt 1.000000 0.478261 +vt 1.000000 0.565217 +vt 0.954545 0.565217 +vt 0.954545 0.652174 +vt 1.000000 0.478261 +vt 1.000000 0.565217 +vt 0.954545 0.565217 +vt 0.954545 0.652174 +vt 1.000000 0.478261 +vt 1.000000 0.565217 vn 0.0000 -1.0000 0.0000 vn 0.0000 -0.7071 0.7071 vn 0.0000 0.0000 -1.0000 @@ -1323,42 +1720,6 @@ vn 0.0000 0.7071 0.7071 vn 0.7071 0.7071 0.0000 vn -0.7071 0.7071 0.0000 vn 0.0000 1.0000 0.0000 -vn 0.9956 0.0933 0.0000 -vn -0.9956 0.0933 0.0000 -vn 0.0000 0.0933 -0.9956 -vn 0.0000 0.0933 0.9956 -vn -0.9808 0.0000 0.1951 -vn 0.9808 0.0000 -0.1951 -vn 0.1951 0.0000 0.9808 -vn -0.1951 0.0000 -0.9808 -vn -0.5556 0.0000 0.8315 -vn 0.5556 0.0000 -0.8315 -vn 0.8315 0.0000 0.5556 -vn -0.8315 0.0000 -0.5556 -vn -0.8315 0.0000 0.5556 -vn 0.8315 0.0000 -0.5556 -vn 0.5556 0.0000 0.8315 -vn -0.5556 0.0000 -0.8315 -vn -0.1951 0.0000 0.9808 -vn 0.1951 0.0000 -0.9808 -vn 0.9808 0.0000 0.1951 -vn -0.9808 0.0000 -0.1951 -vn 0.9991 -0.0434 0.0000 -vn -0.9991 0.0434 0.0000 -vn 0.0000 0.0434 -0.9991 -vn 0.0000 -0.0434 0.9991 -vn 0.0000 -0.0434 -0.9991 -vn 0.0000 0.0434 0.9991 -vn 0.9991 0.0434 0.0000 -vn -0.9991 -0.0434 0.0000 -vn -0.9063 -0.4226 0.0000 -vn 0.9063 -0.4226 0.0000 -vn 0.0000 -0.4226 0.9063 -vn 0.0000 -0.4226 -0.9063 -vn -0.6409 -0.4226 0.6409 -vn 0.6409 -0.4226 -0.6409 -vn 0.6409 -0.4226 0.6409 -vn -0.6409 -0.4226 -0.6409 vn -0.9993 0.0379 0.0000 vn 0.9993 -0.0379 0.0000 vn 0.0000 -0.0379 0.9993 @@ -1371,6 +1732,11 @@ vn -0.6870 -0.2366 0.6870 vn 0.6870 -0.2366 -0.6870 vn 0.6870 -0.2366 0.6870 vn -0.6870 -0.2366 -0.6870 +vn 0.7071 0.0000 0.7071 +vn 0.3827 0.0000 0.9239 +vn -0.9239 0.0000 -0.3827 +vn -0.7071 0.0000 -0.7071 +vn 0.9239 0.0000 0.3827 vn -0.9239 0.0000 0.3827 vn 0.9239 0.0000 -0.3827 vn -0.7071 0.0000 0.7071 @@ -1378,83 +1744,26 @@ vn 0.7071 0.0000 -0.7071 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.7071 0.0000 -0.7071 -vn 0.7071 0.0000 0.7071 -vn -0.9239 0.0000 -0.3827 -vn 0.9239 0.0000 0.3827 -vn -0.6975 0.1644 -0.6975 -vn -0.9113 0.1644 -0.3775 -vn -0.9864 0.1644 -0.0000 -vn -0.9113 0.1644 0.3775 -vn -0.6975 0.1644 0.6975 -vn -0.3775 0.1644 0.9113 -vn -0.0000 0.1644 0.9864 -vn 0.3775 0.1644 0.9113 -vn 0.6975 0.1644 0.6975 -vn 0.9113 0.1644 0.3775 -vn 0.9864 0.1644 0.0000 -vn 0.9113 0.1644 -0.3775 -vn 0.6975 0.1644 -0.6975 -vn 0.3775 0.1644 -0.9113 -vn 0.0000 0.1644 -0.9864 -vn -0.3775 0.1644 -0.9113 -vn -0.9225 0.0555 -0.3821 -vn -0.7060 0.0555 -0.7060 -vn -0.9985 0.0555 -0.0000 -vn -0.9225 0.0555 0.3821 -vn -0.7060 0.0555 0.7060 -vn -0.3821 0.0555 0.9225 -vn -0.0000 0.0555 0.9985 -vn 0.3821 0.0555 0.9225 -vn 0.7060 0.0555 0.7060 -vn 0.9225 0.0555 0.3821 -vn 0.9985 0.0555 0.0000 -vn 0.9225 0.0555 -0.3821 -vn 0.7060 0.0555 -0.7060 -vn 0.3821 0.0555 -0.9225 -vn -0.0000 0.0555 -0.9985 -vn -0.3821 0.0555 -0.9225 -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.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.7574 -0.4617 0.4617 -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.0000 0.9824 -0.1866 -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.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.9955 0.0671 0.0671 -vn -0.6630 0.5294 0.5294 -vn -0.7574 -0.4617 -0.4617 -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.7574 -0.4617 -0.4617 -vn 0.9987 0.0473 0.0196 -vn -0.0000 0.9824 0.1866 -vn 0.7263 -0.6737 -0.1363 +vn 0.7194 0.1448 0.6794 +vn -0.6737 -0.1363 0.7263 +vn -0.6737 -0.1363 -0.7263 +vn 0.7194 0.1448 -0.6794 +vn 0.0473 0.0196 0.9987 +vn 0.0473 0.0196 -0.9987 +vn 0.9824 0.1866 -0.0000 +vn 0.0671 0.0671 -0.9955 +vn 0.5294 0.5294 -0.6630 +vn 0.0671 0.0671 0.9955 +vn -0.4617 -0.4617 -0.7574 +vn 0.5294 0.5294 0.6630 +vn -0.4617 -0.4617 0.7574 +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.0196 0.0473 -0.9987 +vn 0.1448 0.7194 -0.6794 +vn -0.1363 -0.6737 -0.7263 vn -0.7194 0.1448 -0.6794 vn 0.6737 -0.1363 -0.7263 vn 0.6737 -0.1363 0.7263 @@ -1468,1988 +1777,1011 @@ vn -0.0671 0.0671 -0.9955 vn 0.4617 -0.4617 0.7574 vn -0.5294 0.5293 -0.6630 vn 0.4617 -0.4617 -0.7574 +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.1448 0.7194 0.6794 vn -0.0196 0.0473 0.9987 -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.5294 0.5294 -0.6630 -vn 0.7194 0.1448 0.6794 -vn -0.6737 -0.1363 0.7263 -vn -0.6737 -0.1363 -0.7263 -vn 0.7194 0.1448 -0.6794 -vn 0.0473 0.0196 0.9987 -vn 0.0473 0.0196 -0.9987 -vn 0.9824 0.1866 -0.0000 -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.1448 0.7194 0.6794 -vn 0.0196 0.0473 0.9987 -vn -0.1363 -0.6737 0.7263 -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.5294 0.5293 0.6630 +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.9987 0.0473 -0.0196 +vn 0.7263 -0.6737 0.1363 +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.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.6630 0.5294 0.5294 +vn -0.9955 0.0671 0.0671 +vn 0.7574 -0.4617 -0.4617 +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 s off -f 3//1 2//1 1//1 -f 6//2 9//2 5//2 -f 3//3 8//3 4//3 -f 2//4 5//4 1//4 -f 4//5 6//5 2//5 -f 1//6 7//6 3//6 -f 12//5 15//5 10//5 -f 8//7 10//7 6//7 -f 5//8 11//8 7//8 -f 7//9 12//9 8//9 -f 13//10 20//10 16//10 -f 9//6 13//6 11//6 -f 11//3 16//3 12//3 -f 10//4 14//4 9//4 -f 20//5 23//5 19//5 -f 15//11 18//11 14//11 -f 16//12 19//12 15//12 -f 14//13 17//13 13//13 -f 18//6 21//6 17//6 -f 17//3 24//3 20//3 -f 19//4 22//4 18//4 -f 28//14 26//14 25//14 -f 32//5 29//5 30//5 -f 36//3 31//3 32//3 -f 33//4 30//4 29//4 -f 33//6 36//6 34//6 -f 30//1 36//1 32//1 -f 40//5 37//5 38//5 -f 44//3 39//3 40//3 -f 41//4 38//4 37//4 -f 41//6 44//6 42//6 -f 38//1 44//1 40//1 -f 48//5 45//5 46//5 -f 52//3 47//3 48//3 -f 49//4 46//4 45//4 -f 49//6 52//6 50//6 -f 46//1 52//1 48//1 -f 56//5 53//5 54//5 -f 60//3 55//3 56//3 -f 57//4 54//4 53//4 -f 57//6 60//6 58//6 -f 54//1 60//1 56//1 -f 64//5 61//5 62//5 -f 68//3 63//3 64//3 -f 65//4 62//4 61//4 -f 65//6 68//6 66//6 -f 126//14 129//14 132//14 -f 72//5 69//5 70//5 -f 76//3 71//3 72//3 -f 73//4 70//4 69//4 -f 73//6 76//6 74//6 -f 132//14 125//14 126//14 -f 80//5 77//5 78//5 -f 84//3 79//3 80//3 -f 81//4 78//4 77//4 -f 81//6 84//6 82//6 -f 131//14 127//14 125//14 -f 88//5 85//5 86//5 -f 92//3 87//3 88//3 -f 89//4 86//4 85//4 -f 89//6 92//6 90//6 -f 129//14 127//14 130//14 -f 93//1 96//1 94//1 -f 99//14 97//14 98//14 -f 93//4 100//4 95//4 -f 94//5 97//5 93//5 -f 96//3 98//3 94//3 -f 95//6 99//6 96//6 -f 101//1 104//1 102//1 -f 107//14 105//14 106//14 -f 104//3 106//3 102//3 -f 103//6 107//6 104//6 -f 101//4 108//4 103//4 -f 102//5 105//5 101//5 -f 109//1 112//1 110//1 -f 115//14 113//14 114//14 -f 109//5 116//5 111//5 -f 110//3 113//3 109//3 -f 112//6 114//6 110//6 -f 111//4 115//4 112//4 -f 117//1 120//1 118//1 -f 123//14 121//14 122//14 -f 120//6 122//6 118//6 -f 119//4 123//4 120//4 -f 117//5 124//5 119//5 -f 118//3 121//3 117//3 -f 137//1 134//1 140//1 -f 133//1 140//1 134//1 -f 135//1 139//1 133//1 -f 135//1 137//1 138//1 -f 143//5 142//5 141//5 -f 147//3 146//3 145//3 -f 151//6 150//6 149//6 -f 155//4 154//4 153//4 -f 157//1 160//1 158//1 -f 163//14 161//14 162//14 -f 157//4 164//4 159//4 -f 158//5 161//5 157//5 -f 160//3 162//3 158//3 -f 159//6 163//6 160//6 -f 165//1 168//1 166//1 -f 171//14 169//14 170//14 -f 168//3 170//3 166//3 -f 167//6 171//6 168//6 -f 165//4 172//4 167//4 -f 166//5 169//5 165//5 -f 173//1 176//1 174//1 -f 179//14 177//14 178//14 -f 173//5 180//5 175//5 -f 174//3 177//3 173//3 -f 176//6 178//6 174//6 -f 175//4 179//4 176//4 -f 181//1 184//1 182//1 -f 187//14 185//14 186//14 -f 184//6 186//6 182//6 -f 183//4 187//4 184//4 -f 181//5 188//5 183//5 -f 182//3 185//3 181//3 -f 192//15 195//15 191//15 -f 193//14 200//14 196//14 -f 190//16 193//16 189//16 -f 189//17 196//17 192//17 -f 191//18 194//18 190//18 -f 200//6 203//6 199//6 -f 195//14 198//14 194//14 -f 196//14 199//14 195//14 -f 194//14 197//14 193//14 -f 203//14 201//14 202//14 -f 198//5 201//5 197//5 -f 197//4 204//4 200//4 -f 199//3 202//3 198//3 -f 224//1 239//1 223//1 -f 225//1 240//1 224//1 -f 225//1 242//1 241//1 -f 227//1 242//1 226//1 -f 228//1 243//1 227//1 -f 229//1 244//1 228//1 -f 230//1 245//1 229//1 -f 230//1 247//1 246//1 -f 231//1 248//1 247//1 -f 233//1 248//1 232//1 -f 234//1 249//1 233//1 -f 235//1 250//1 234//1 -f 236//1 251//1 235//1 -f 236//1 237//1 252//1 -f 221//1 238//1 237//1 -f 222//1 239//1 238//1 -f 255//14 270//14 254//14 -f 256//14 271//14 255//14 -f 256//14 273//14 272//14 -f 258//14 273//14 257//14 -f 259//14 274//14 258//14 -f 259//14 276//14 275//14 -f 260//14 277//14 276//14 -f 261//14 278//14 277//14 -f 263//14 278//14 262//14 -f 264//14 279//14 263//14 -f 264//14 281//14 280//14 -f 266//14 281//14 265//14 -f 267//14 282//14 266//14 -f 267//14 284//14 283//14 -f 253//14 284//14 268//14 -f 254//14 269//14 253//14 -f 319//14 334//14 318//14 -f 320//14 335//14 319//14 -f 320//14 337//14 336//14 -f 322//14 337//14 321//14 -f 323//14 338//14 322//14 -f 323//14 340//14 339//14 -f 324//14 341//14 340//14 -f 325//14 342//14 341//14 -f 327//14 342//14 326//14 -f 328//14 343//14 327//14 -f 328//14 345//14 344//14 -f 330//14 345//14 329//14 -f 331//14 346//14 330//14 -f 331//14 348//14 347//14 -f 317//14 348//14 332//14 -f 318//14 333//14 317//14 -f 289//1 304//1 288//1 -f 289//1 306//1 305//1 -f 291//1 306//1 290//1 -f 292//1 307//1 291//1 -f 293//1 308//1 292//1 -f 294//1 309//1 293//1 -f 294//1 311//1 310//1 -f 295//1 312//1 311//1 -f 297//1 312//1 296//1 -f 298//1 313//1 297//1 -f 299//1 314//1 298//1 -f 300//1 315//1 299//1 -f 300//1 301//1 316//1 -f 285//1 302//1 301//1 -f 286//1 303//1 302//1 -f 288//1 303//1 287//1 -f 352//14 367//14 351//14 -f 352//14 369//14 368//14 -f 354//14 369//14 353//14 -f 355//14 370//14 354//14 -f 356//14 371//14 355//14 -f 356//14 373//14 372//14 -f 357//14 374//14 373//14 -f 359//14 374//14 358//14 -f 359//14 376//14 375//14 -f 360//14 377//14 376//14 -f 362//14 377//14 361//14 -f 363//14 378//14 362//14 -f 363//14 380//14 379//14 -f 349//14 380//14 364//14 -f 350//14 365//14 349//14 -f 351//14 366//14 350//14 -f 395//14 381//14 389//14 -f 419//19 418//19 421//19 -f 416//20 417//20 414//20 -f 426//21 425//21 428//21 -f 423//22 424//22 413//22 -f 435//23 434//23 437//23 -f 432//24 433//24 430//24 -f 442//25 441//25 444//25 -f 439//26 440//26 429//26 -f 451//27 450//27 453//27 -f 448//28 449//28 446//28 -f 458//29 457//29 460//29 -f 455//30 456//30 445//30 -f 467//31 466//31 469//31 -f 464//32 465//32 462//32 -f 474//33 473//33 476//33 -f 471//34 472//34 461//34 -f 499//27 514//27 498//27 -f 507//28 522//28 506//28 -f 500//23 515//23 499//23 -f 508//24 523//24 507//24 -f 501//31 516//31 500//31 -f 494//22 509//22 493//22 -f 493//32 524//32 508//32 -f 502//21 517//21 501//21 -f 495//30 510//30 494//30 -f 503//29 518//29 502//29 -f 496//26 511//26 495//26 -f 504//25 519//25 503//25 -f 497//34 512//34 496//34 -f 505//33 520//33 504//33 -f 498//19 513//19 497//19 -f 506//20 521//20 505//20 -f 520//14 535//14 519//14 -f 512//14 529//14 528//14 -f 520//14 537//14 536//14 -f 514//14 529//14 513//14 -f 522//14 537//14 521//14 -f 514//14 531//14 530//14 -f 522//14 539//14 538//14 -f 515//14 532//14 531//14 -f 523//14 540//14 539//14 -f 516//14 533//14 532//14 -f 510//14 525//14 509//14 -f 524//14 525//14 540//14 -f 518//14 533//14 517//14 -f 511//14 526//14 510//14 -f 519//14 534//14 518//14 -f 512//14 527//14 511//14 -f 555//14 541//14 549//14 -f 581//14 585//14 573//14 -f 567//1 563//1 559//1 -f 613//14 617//14 605//14 -f 599//1 595//1 591//1 -f 645//14 649//14 637//14 -f 631//1 627//1 623//1 -f 671//14 686//14 670//14 -f 672//14 687//14 671//14 -f 673//14 688//14 672//14 -f 674//14 689//14 673//14 -f 675//14 690//14 674//14 -f 675//14 692//14 691//14 -f 677//14 692//14 676//14 -f 677//14 694//14 693//14 -f 679//14 694//14 678//14 -f 679//14 696//14 695//14 -f 681//14 696//14 680//14 -f 682//14 697//14 681//14 -f 683//14 698//14 682//14 -f 683//14 700//14 699//14 -f 669//14 700//14 684//14 -f 670//14 685//14 669//14 -f 713//14 715//14 701//14 -f 717//14 719//14 720//14 -f 723//1 721//1 724//1 -f 719//5 724//5 720//5 -f 717//6 722//6 718//6 -f 720//3 721//3 717//3 -f 718//4 723//4 719//4 -f 725//14 727//14 728//14 -f 731//1 729//1 732//1 -f 727//5 732//5 728//5 -f 725//6 730//6 726//6 -f 728//3 729//3 725//3 -f 726//4 731//4 727//4 -f 733//14 735//14 736//14 -f 739//1 737//1 740//1 -f 735//5 740//5 736//5 -f 733//6 738//6 734//6 -f 736//3 737//3 733//3 -f 734//4 739//4 735//4 -f 752//35 755//35 750//35 -f 751//36 754//36 753//36 -f 742//35 748//35 747//35 -f 741//36 745//36 743//36 -f 744//37 745//37 748//37 -f 742//38 746//38 741//38 -f 752//39 753//39 756//39 -f 750//40 754//40 749//40 -f 768//41 771//41 766//41 -f 767//42 770//42 769//42 -f 758//41 764//41 763//41 -f 757//42 761//42 759//42 -f 759//37 764//37 760//37 -f 757//38 763//38 762//38 -f 767//39 772//39 768//39 -f 765//40 771//40 770//40 -f 780//5 775//5 776//5 -f 778//6 773//6 774//6 -f 777//3 776//3 773//3 -f 779//4 774//4 775//4 -f 788//5 783//5 784//5 -f 786//6 781//6 782//6 -f 785//3 784//3 781//3 -f 787//4 782//4 783//4 -f 796//5 791//5 792//5 -f 794//6 789//6 790//6 -f 793//3 792//3 789//3 -f 795//4 790//4 791//4 -f 799//43 798//43 797//43 -f 803//44 802//44 801//44 -f 807//45 806//45 805//45 -f 811//46 810//46 809//46 -f 815//47 814//47 813//47 -f 819//48 818//48 817//48 -f 821//49 824//49 822//49 -f 827//50 826//50 825//50 -f 848//14 863//14 847//14 -f 849//14 864//14 848//14 -f 850//14 865//14 849//14 -f 851//14 866//14 850//14 -f 851//14 868//14 867//14 -f 852//14 869//14 868//14 -f 853//14 870//14 869//14 -f 854//14 871//14 870//14 -f 855//14 872//14 871//14 -f 857//14 872//14 856//14 -f 858//14 873//14 857//14 -f 859//14 874//14 858//14 -f 859//14 876//14 875//14 -f 845//14 876//14 860//14 -f 846//14 861//14 845//14 -f 847//14 862//14 846//14 -f 879//1 878//1 877//1 -f 883//14 881//14 882//14 -f 878//4 882//4 877//4 -f 880//5 883//5 878//5 -f 877//6 881//6 879//6 -f 879//3 884//3 880//3 -f 887//1 886//1 885//1 -f 891//14 889//14 890//14 -f 886//4 890//4 885//4 -f 888//5 891//5 886//5 -f 885//6 889//6 887//6 -f 887//3 892//3 888//3 -f 895//1 894//1 893//1 -f 899//14 897//14 898//14 -f 894//4 898//4 893//4 -f 896//5 899//5 894//5 -f 893//6 897//6 895//6 -f 895//3 900//3 896//3 -f 904//51 901//51 902//51 -f 905//52 908//52 906//52 -f 948//5 943//5 944//5 -f 903//53 908//53 907//53 -f 946//6 941//6 942//6 -f 901//54 906//54 902//54 -f 910//51 911//51 909//51 -f 914//52 915//52 916//52 -f 945//3 944//3 941//3 -f 911//55 916//55 915//55 -f 947//4 942//4 943//4 -f 909//56 914//56 910//56 -f 920//57 917//57 918//57 -f 921//58 924//58 922//58 -f 939//4 934//4 935//4 -f 920//53 923//53 919//53 -f 937//3 936//3 933//3 -f 918//54 921//54 922//54 -f 926//57 927//57 925//57 -f 930//58 931//58 932//58 -f 938//6 933//6 934//6 -f 928//55 931//55 927//55 -f 940//5 935//5 936//5 -f 926//56 929//56 930//56 -f 956//5 951//5 952//5 -f 954//6 949//6 950//6 -f 953//3 952//3 949//3 -f 955//4 950//4 951//4 -f 958//59 959//59 957//59 -f 971//14 973//14 961//14 -f 978//60 979//60 977//60 -f 982//61 983//61 981//61 -f 986//62 987//62 985//62 -f 930//3 1001//3 926//3 -f 904//4 992//4 908//4 -f 916//5 995//5 914//5 -f 906//3 989//3 902//3 -f 918//6 998//6 920//6 -f 920//4 1000//4 924//4 -f 932//5 1003//5 930//5 -f 922//3 997//3 918//3 -f 908//5 991//5 906//5 -f 910//6 994//6 912//6 -f 912//4 996//4 916//4 -f 924//5 999//5 922//5 -f 914//3 993//3 910//3 -f 926//6 1002//6 928//6 -f 928//4 1004//4 932//4 -f 902//6 990//6 904//6 -f 3//1 4//1 2//1 -f 6//2 10//2 9//2 -f 3//3 7//3 8//3 -f 2//4 6//4 5//4 -f 4//5 8//5 6//5 -f 1//6 5//6 7//6 -f 12//5 16//5 15//5 -f 8//7 12//7 10//7 -f 5//8 9//8 11//8 -f 7//9 11//9 12//9 -f 13//10 17//10 20//10 -f 9//6 14//6 13//6 -f 11//3 13//3 16//3 -f 10//4 15//4 14//4 -f 20//5 24//5 23//5 -f 15//11 19//11 18//11 -f 16//12 20//12 19//12 -f 14//13 18//13 17//13 -f 18//6 22//6 21//6 -f 17//3 21//3 24//3 -f 19//4 23//4 22//4 -f 28//14 27//14 26//14 -f 32//5 31//5 29//5 -f 36//3 35//3 31//3 -f 33//4 34//4 30//4 -f 33//6 35//6 36//6 -f 30//1 34//1 36//1 -f 40//5 39//5 37//5 -f 44//3 43//3 39//3 -f 41//4 42//4 38//4 -f 41//6 43//6 44//6 -f 38//1 42//1 44//1 -f 48//5 47//5 45//5 -f 52//3 51//3 47//3 -f 49//4 50//4 46//4 -f 49//6 51//6 52//6 -f 46//1 50//1 52//1 -f 56//5 55//5 53//5 -f 60//3 59//3 55//3 -f 57//4 58//4 54//4 -f 57//6 59//6 60//6 -f 54//1 58//1 60//1 -f 64//5 63//5 61//5 -f 68//3 67//3 63//3 -f 65//4 66//4 62//4 -f 65//6 67//6 68//6 -f 126//14 128//14 129//14 -f 72//5 71//5 69//5 -f 76//3 75//3 71//3 -f 73//4 74//4 70//4 -f 73//6 75//6 76//6 -f 132//14 131//14 125//14 -f 80//5 79//5 77//5 -f 84//3 83//3 79//3 -f 81//4 82//4 78//4 -f 81//6 83//6 84//6 -f 131//14 130//14 127//14 -f 88//5 87//5 85//5 -f 92//3 91//3 87//3 -f 89//4 90//4 86//4 -f 89//6 91//6 92//6 -f 129//14 128//14 127//14 -f 93//1 95//1 96//1 -f 99//14 100//14 97//14 -f 93//4 97//4 100//4 -f 94//5 98//5 97//5 -f 96//3 99//3 98//3 -f 95//6 100//6 99//6 -f 101//1 103//1 104//1 -f 107//14 108//14 105//14 -f 104//3 107//3 106//3 -f 103//6 108//6 107//6 -f 101//4 105//4 108//4 -f 102//5 106//5 105//5 -f 109//1 111//1 112//1 -f 115//14 116//14 113//14 -f 109//5 113//5 116//5 -f 110//3 114//3 113//3 -f 112//6 115//6 114//6 -f 111//4 116//4 115//4 -f 117//1 119//1 120//1 -f 123//14 124//14 121//14 -f 120//6 123//6 122//6 -f 119//4 124//4 123//4 -f 117//5 121//5 124//5 -f 118//3 122//3 121//3 -f 137//1 136//1 134//1 -f 133//1 139//1 140//1 -f 135//1 138//1 139//1 -f 135//1 136//1 137//1 -f 143//5 144//5 142//5 -f 147//3 148//3 146//3 -f 151//6 152//6 150//6 -f 155//4 156//4 154//4 -f 157//1 159//1 160//1 -f 163//14 164//14 161//14 -f 157//4 161//4 164//4 -f 158//5 162//5 161//5 -f 160//3 163//3 162//3 -f 159//6 164//6 163//6 -f 165//1 167//1 168//1 -f 171//14 172//14 169//14 -f 168//3 171//3 170//3 -f 167//6 172//6 171//6 -f 165//4 169//4 172//4 -f 166//5 170//5 169//5 -f 173//1 175//1 176//1 -f 179//14 180//14 177//14 -f 173//5 177//5 180//5 -f 174//3 178//3 177//3 -f 176//6 179//6 178//6 -f 175//4 180//4 179//4 -f 181//1 183//1 184//1 -f 187//14 188//14 185//14 -f 184//6 187//6 186//6 -f 183//4 188//4 187//4 -f 181//5 185//5 188//5 -f 182//3 186//3 185//3 -f 192//15 196//15 195//15 -f 193//14 197//14 200//14 -f 190//16 194//16 193//16 -f 189//17 193//17 196//17 -f 191//18 195//18 194//18 -f 200//6 204//6 203//6 -f 195//14 199//14 198//14 -f 196//14 200//14 199//14 -f 194//14 198//14 197//14 -f 203//14 204//14 201//14 -f 198//5 202//5 201//5 -f 197//4 201//4 204//4 -f 199//3 203//3 202//3 -f 224//1 240//1 239//1 -f 225//1 241//1 240//1 -f 225//1 226//1 242//1 -f 227//1 243//1 242//1 -f 228//1 244//1 243//1 -f 229//1 245//1 244//1 -f 230//1 246//1 245//1 -f 230//1 231//1 247//1 -f 231//1 232//1 248//1 -f 233//1 249//1 248//1 -f 234//1 250//1 249//1 -f 235//1 251//1 250//1 -f 236//1 252//1 251//1 -f 236//1 221//1 237//1 -f 221//1 222//1 238//1 -f 222//1 223//1 239//1 -f 255//14 271//14 270//14 -f 256//14 272//14 271//14 -f 256//14 257//14 273//14 -f 258//14 274//14 273//14 -f 259//14 275//14 274//14 -f 259//14 260//14 276//14 -f 260//14 261//14 277//14 -f 261//14 262//14 278//14 -f 263//14 279//14 278//14 -f 264//14 280//14 279//14 -f 264//14 265//14 281//14 -f 266//14 282//14 281//14 -f 267//14 283//14 282//14 -f 267//14 268//14 284//14 -f 253//14 269//14 284//14 -f 254//14 270//14 269//14 -f 319//14 335//14 334//14 -f 320//14 336//14 335//14 -f 320//14 321//14 337//14 -f 322//14 338//14 337//14 -f 323//14 339//14 338//14 -f 323//14 324//14 340//14 -f 324//14 325//14 341//14 -f 325//14 326//14 342//14 -f 327//14 343//14 342//14 -f 328//14 344//14 343//14 -f 328//14 329//14 345//14 -f 330//14 346//14 345//14 -f 331//14 347//14 346//14 -f 331//14 332//14 348//14 -f 317//14 333//14 348//14 -f 318//14 334//14 333//14 -f 289//1 305//1 304//1 -f 289//1 290//1 306//1 -f 291//1 307//1 306//1 -f 292//1 308//1 307//1 -f 293//1 309//1 308//1 -f 294//1 310//1 309//1 -f 294//1 295//1 311//1 -f 295//1 296//1 312//1 -f 297//1 313//1 312//1 -f 298//1 314//1 313//1 -f 299//1 315//1 314//1 -f 300//1 316//1 315//1 -f 300//1 285//1 301//1 -f 285//1 286//1 302//1 -f 286//1 287//1 303//1 -f 288//1 304//1 303//1 -f 352//14 368//14 367//14 -f 352//14 353//14 369//14 -f 354//14 370//14 369//14 -f 355//14 371//14 370//14 -f 356//14 372//14 371//14 -f 356//14 357//14 373//14 -f 357//14 358//14 374//14 -f 359//14 375//14 374//14 -f 359//14 360//14 376//14 -f 360//14 361//14 377//14 -f 362//14 378//14 377//14 -f 363//14 379//14 378//14 -f 363//14 364//14 380//14 -f 349//14 365//14 380//14 -f 350//14 366//14 365//14 -f 351//14 367//14 366//14 -f 381//14 382//14 383//14 -f 383//14 384//14 385//14 -f 385//14 386//14 387//14 -f 387//14 388//14 389//14 -f 389//14 390//14 391//14 -f 391//14 392//14 393//14 -f 393//14 394//14 395//14 -f 395//14 396//14 381//14 -f 381//14 383//14 385//14 -f 385//14 387//14 381//14 -f 387//14 389//14 381//14 -f 389//14 391//14 393//14 -f 393//14 395//14 389//14 -f 419//19 420//19 418//19 -f 416//20 415//20 417//20 -f 426//21 427//21 425//21 -f 423//22 422//22 424//22 -f 435//23 436//23 434//23 -f 432//24 431//24 433//24 -f 442//25 443//25 441//25 -f 439//26 438//26 440//26 -f 451//27 452//27 450//27 -f 448//28 447//28 449//28 -f 458//29 459//29 457//29 -f 455//30 454//30 456//30 -f 467//31 468//31 466//31 -f 464//32 463//32 465//32 -f 474//33 475//33 473//33 -f 471//34 470//34 472//34 -f 499//27 515//27 514//27 -f 507//28 523//28 522//28 -f 500//23 516//23 515//23 -f 508//24 524//24 523//24 -f 501//31 517//31 516//31 -f 494//22 510//22 509//22 -f 493//32 509//32 524//32 -f 502//21 518//21 517//21 -f 495//30 511//30 510//30 -f 503//29 519//29 518//29 -f 496//26 512//26 511//26 -f 504//25 520//25 519//25 -f 497//34 513//34 512//34 -f 505//33 521//33 520//33 -f 498//19 514//19 513//19 -f 506//20 522//20 521//20 -f 520//14 536//14 535//14 -f 512//14 513//14 529//14 -f 520//14 521//14 537//14 -f 514//14 530//14 529//14 -f 522//14 538//14 537//14 -f 514//14 515//14 531//14 -f 522//14 523//14 539//14 -f 515//14 516//14 532//14 -f 523//14 524//14 540//14 -f 516//14 517//14 533//14 -f 510//14 526//14 525//14 -f 524//14 509//14 525//14 -f 518//14 534//14 533//14 -f 511//14 527//14 526//14 -f 519//14 535//14 534//14 -f 512//14 528//14 527//14 -f 541//14 542//14 543//14 -f 543//14 544//14 545//14 -f 545//14 546//14 547//14 -f 547//14 548//14 549//14 -f 549//14 550//14 551//14 -f 551//14 552//14 553//14 -f 553//14 554//14 555//14 -f 555//14 556//14 541//14 -f 541//14 543//14 549//14 -f 543//14 545//14 549//14 -f 545//14 547//14 549//14 -f 549//14 551//14 553//14 -f 553//14 555//14 549//14 -f 573//14 574//14 575//14 -f 575//14 576//14 577//14 -f 577//14 578//14 579//14 -f 579//14 580//14 581//14 -f 581//14 582//14 583//14 -f 583//14 584//14 581//14 -f 584//14 585//14 581//14 -f 585//14 586//14 573//14 -f 586//14 587//14 573//14 -f 587//14 588//14 573//14 -f 573//14 575//14 577//14 -f 577//14 579//14 573//14 -f 579//14 581//14 573//14 -f 559//1 558//1 557//1 -f 557//1 572//1 571//1 -f 571//1 570//1 569//1 -f 569//1 568//1 567//1 -f 567//1 566//1 565//1 -f 565//1 564//1 567//1 -f 564//1 563//1 567//1 -f 563//1 562//1 561//1 -f 561//1 560//1 559//1 -f 559//1 557//1 571//1 -f 571//1 569//1 559//1 -f 569//1 567//1 559//1 -f 563//1 561//1 559//1 -f 605//14 606//14 607//14 -f 607//14 608//14 609//14 -f 609//14 610//14 611//14 -f 611//14 612//14 613//14 -f 613//14 614//14 615//14 -f 615//14 616//14 613//14 -f 616//14 617//14 613//14 -f 617//14 618//14 605//14 -f 618//14 619//14 605//14 -f 619//14 620//14 605//14 -f 605//14 607//14 609//14 -f 609//14 611//14 605//14 -f 611//14 613//14 605//14 -f 591//1 590//1 589//1 -f 589//1 604//1 603//1 -f 603//1 602//1 601//1 -f 601//1 600//1 599//1 -f 599//1 598//1 597//1 -f 597//1 596//1 599//1 -f 596//1 595//1 599//1 -f 595//1 594//1 593//1 -f 593//1 592//1 591//1 -f 591//1 589//1 603//1 -f 603//1 601//1 591//1 -f 601//1 599//1 591//1 -f 595//1 593//1 591//1 -f 637//14 638//14 639//14 -f 639//14 640//14 641//14 -f 641//14 642//14 643//14 -f 643//14 644//14 645//14 -f 645//14 646//14 647//14 -f 647//14 648//14 645//14 -f 648//14 649//14 645//14 -f 649//14 650//14 637//14 -f 650//14 651//14 637//14 -f 651//14 652//14 637//14 -f 637//14 639//14 641//14 -f 641//14 643//14 637//14 -f 643//14 645//14 637//14 -f 623//1 622//1 621//1 -f 621//1 636//1 635//1 -f 635//1 634//1 633//1 -f 633//1 632//1 631//1 -f 631//1 630//1 629//1 -f 629//1 628//1 631//1 -f 628//1 627//1 631//1 -f 627//1 626//1 625//1 -f 625//1 624//1 623//1 -f 623//1 621//1 635//1 -f 635//1 633//1 623//1 -f 633//1 631//1 623//1 -f 627//1 625//1 623//1 -f 671//14 687//14 686//14 -f 672//14 688//14 687//14 -f 673//14 689//14 688//14 -f 674//14 690//14 689//14 -f 675//14 691//14 690//14 -f 675//14 676//14 692//14 -f 677//14 693//14 692//14 -f 677//14 678//14 694//14 -f 679//14 695//14 694//14 -f 679//14 680//14 696//14 -f 681//14 697//14 696//14 -f 682//14 698//14 697//14 -f 683//14 699//14 698//14 -f 683//14 684//14 700//14 -f 669//14 685//14 700//14 -f 670//14 686//14 685//14 -f 701//14 702//14 703//14 -f 703//14 704//14 705//14 -f 705//14 706//14 707//14 -f 707//14 708//14 709//14 -f 709//14 710//14 711//14 -f 711//14 712//14 713//14 -f 713//14 714//14 715//14 -f 715//14 716//14 701//14 -f 701//14 703//14 705//14 -f 705//14 707//14 701//14 -f 707//14 709//14 701//14 -f 709//14 711//14 701//14 -f 711//14 713//14 701//14 -f 717//14 718//14 719//14 -f 723//1 722//1 721//1 -f 719//5 723//5 724//5 -f 717//6 721//6 722//6 -f 720//3 724//3 721//3 -f 718//4 722//4 723//4 -f 725//14 726//14 727//14 -f 731//1 730//1 729//1 -f 727//5 731//5 732//5 -f 725//6 729//6 730//6 -f 728//3 732//3 729//3 -f 726//4 730//4 731//4 -f 733//14 734//14 735//14 -f 739//1 738//1 737//1 -f 735//5 739//5 740//5 -f 733//6 737//6 738//6 -f 736//3 740//3 737//3 -f 734//4 738//4 739//4 -f 752//35 756//35 755//35 -f 751//36 749//36 754//36 -f 742//35 744//35 748//35 -f 741//36 746//36 745//36 -f 744//37 743//37 745//37 -f 742//38 747//38 746//38 -f 752//39 751//39 753//39 -f 750//40 755//40 754//40 -f 768//41 772//41 771//41 -f 767//42 765//42 770//42 -f 758//41 760//41 764//41 -f 757//42 762//42 761//42 -f 759//37 761//37 764//37 -f 757//38 758//38 763//38 -f 767//39 769//39 772//39 -f 765//40 766//40 771//40 -f 780//5 779//5 775//5 -f 778//6 777//6 773//6 -f 777//3 780//3 776//3 -f 779//4 778//4 774//4 -f 788//5 787//5 783//5 -f 786//6 785//6 781//6 -f 785//3 788//3 784//3 -f 787//4 786//4 782//4 -f 796//5 795//5 791//5 -f 794//6 793//6 789//6 -f 793//3 796//3 792//3 -f 795//4 794//4 790//4 -f 799//43 800//43 798//43 -f 803//44 804//44 802//44 -f 807//45 808//45 806//45 -f 811//46 812//46 810//46 -f 815//47 816//47 814//47 -f 819//48 820//48 818//48 -f 821//49 823//49 824//49 -f 827//50 828//50 826//50 -f 848//14 864//14 863//14 -f 849//14 865//14 864//14 -f 850//14 866//14 865//14 -f 851//14 867//14 866//14 -f 851//14 852//14 868//14 -f 852//14 853//14 869//14 -f 853//14 854//14 870//14 -f 854//14 855//14 871//14 -f 855//14 856//14 872//14 -f 857//14 873//14 872//14 -f 858//14 874//14 873//14 -f 859//14 875//14 874//14 -f 859//14 860//14 876//14 -f 845//14 861//14 876//14 -f 846//14 862//14 861//14 -f 847//14 863//14 862//14 -f 879//1 880//1 878//1 -f 883//14 884//14 881//14 -f 878//4 883//4 882//4 -f 880//5 884//5 883//5 -f 877//6 882//6 881//6 -f 879//3 881//3 884//3 -f 887//1 888//1 886//1 -f 891//14 892//14 889//14 -f 886//4 891//4 890//4 -f 888//5 892//5 891//5 -f 885//6 890//6 889//6 -f 887//3 889//3 892//3 -f 895//1 896//1 894//1 -f 899//14 900//14 897//14 -f 894//4 899//4 898//4 -f 896//5 900//5 899//5 -f 893//6 898//6 897//6 -f 895//3 897//3 900//3 -f 904//51 903//51 901//51 -f 905//52 907//52 908//52 -f 948//5 947//5 943//5 -f 903//53 904//53 908//53 -f 946//6 945//6 941//6 -f 901//54 905//54 906//54 -f 910//51 912//51 911//51 -f 914//52 913//52 915//52 -f 945//3 948//3 944//3 -f 911//55 912//55 916//55 -f 947//4 946//4 942//4 -f 909//56 913//56 914//56 -f 920//57 919//57 917//57 -f 921//58 923//58 924//58 -f 939//4 938//4 934//4 -f 920//53 924//53 923//53 -f 937//3 940//3 936//3 -f 918//54 917//54 921//54 -f 926//57 928//57 927//57 -f 930//58 929//58 931//58 -f 938//6 937//6 933//6 -f 928//55 932//55 931//55 -f 940//5 939//5 935//5 -f 926//56 925//56 929//56 -f 956//5 955//5 951//5 -f 954//6 953//6 949//6 -f 953//3 956//3 952//3 -f 955//4 954//4 950//4 -f 958//59 960//59 959//59 -f 961//14 962//14 963//14 -f 963//14 964//14 965//14 -f 965//14 966//14 967//14 -f 967//14 968//14 969//14 -f 969//14 970//14 971//14 -f 971//14 972//14 973//14 -f 973//14 974//14 961//14 -f 974//14 975//14 961//14 -f 975//14 976//14 961//14 -f 961//14 963//14 965//14 -f 965//14 967//14 961//14 -f 967//14 969//14 961//14 -f 969//14 971//14 961//14 -f 978//60 980//60 979//60 -f 982//61 984//61 983//61 -f 986//62 988//62 987//62 -f 930//3 1003//3 1001//3 -f 904//4 990//4 992//4 -f 916//5 996//5 995//5 -f 906//3 991//3 989//3 -f 918//6 997//6 998//6 -f 920//4 998//4 1000//4 -f 932//5 1004//5 1003//5 -f 922//3 999//3 997//3 -f 908//5 992//5 991//5 -f 910//6 993//6 994//6 -f 912//4 994//4 996//4 -f 924//5 1000//5 999//5 -f 914//3 995//3 993//3 -f 926//6 1001//6 1002//6 -f 928//4 1002//4 1004//4 -f 902//6 989//6 990//6 +f 3/1/1 665/2/1 1/3/1 +f 6/4/2 9/5/2 5/6/2 +f 3/7/3 8/8/3 4/9/3 +f 2/10/4 5/6/4 1/11/4 +f 4/12/5 6/13/5 2/14/5 +f 1/15/6 7/16/6 3/17/6 +f 12/18/5 15/19/5 10/20/5 +f 8/21/7 10/20/7 6/13/7 +f 5/22/8 11/23/8 7/16/8 +f 7/24/9 12/18/9 8/8/9 +f 13/25/10 20/26/10 16/27/10 +f 9/28/6 13/25/6 11/23/6 +f 11/23/3 16/27/3 12/18/3 +f 10/20/4 14/29/4 9/5/4 +f 20/30/5 23/31/5 19/32/5 +f 15/19/11 18/33/11 14/29/11 +f 16/27/12 19/32/12 15/19/12 +f 14/34/13 17/35/13 13/25/13 +f 18/36/6 21/37/6 17/35/6 +f 17/38/3 24/39/3 20/26/3 +f 19/40/4 22/41/4 18/33/4 +f 28/42/5 25/43/5 26/44/5 +f 32/45/3 27/46/3 28/42/3 +f 29/47/4 26/44/4 25/43/4 +f 29/47/6 32/48/6 30/49/6 +f 26/44/1 32/50/1 28/51/1 +f 36/52/5 33/53/5 34/54/5 +f 40/55/3 35/56/3 36/52/3 +f 37/57/4 34/54/4 33/53/4 +f 37/58/6 40/55/6 38/59/6 +f 34/54/1 40/60/1 36/52/1 +f 44/61/5 41/62/5 42/63/5 +f 48/64/3 43/65/3 44/66/3 +f 45/67/4 42/63/4 41/62/4 +f 45/67/6 48/64/6 46/68/6 +f 42/69/1 48/64/1 44/70/1 +f 52/71/5 49/72/5 50/73/5 +f 56/74/3 51/75/3 52/71/3 +f 53/76/4 50/77/4 49/78/4 +f 53/76/6 56/74/6 54/79/6 +f 50/80/1 56/74/1 52/71/1 +f 60/81/5 57/82/5 58/83/5 +f 64/84/3 59/85/3 60/81/3 +f 61/86/4 58/83/4 57/82/4 +f 61/86/6 64/87/6 62/88/6 +f 122/89/14 125/90/14 128/91/14 +f 68/92/5 65/93/5 66/94/5 +f 72/95/3 67/96/3 68/92/3 +f 69/97/4 66/94/4 65/93/4 +f 69/98/6 72/95/6 70/99/6 +f 128/91/14 121/100/14 122/89/14 +f 76/101/5 73/102/5 74/103/5 +f 80/104/3 75/105/3 76/106/3 +f 77/107/4 74/103/4 73/102/4 +f 77/107/6 80/104/6 78/108/6 +f 127/109/14 123/110/14 121/100/14 +f 84/111/5 81/112/5 82/113/5 +f 88/114/3 83/115/3 84/111/3 +f 85/116/4 82/117/4 81/118/4 +f 85/116/6 88/114/6 86/119/6 +f 125/90/14 123/110/14 126/120/14 +f 89/121/1 92/122/1 90/123/1 +f 95/124/14 93/125/14 94/126/14 +f 89/127/4 96/128/4 91/129/4 +f 92/122/3 94/126/3 90/123/3 +f 97/130/1 100/131/1 98/132/1 +f 103/133/14 101/134/14 102/135/14 +f 100/136/3 102/135/3 98/137/3 +f 97/130/4 104/138/4 99/139/4 +f 105/140/1 108/141/1 106/142/1 +f 111/143/14 109/144/14 110/145/14 +f 105/146/5 112/147/5 107/148/5 +f 108/141/6 110/145/6 106/142/6 +f 113/149/1 116/150/1 114/151/1 +f 119/152/14 117/153/14 118/154/14 +f 116/155/6 118/154/6 114/156/6 +f 113/149/5 120/157/5 115/158/5 +f 133/159/1 130/160/1 136/161/1 +f 129/162/1 136/161/1 130/160/1 +f 131/163/1 135/164/1 129/162/1 +f 131/163/1 133/159/1 134/165/1 +f 139/166/5 138/167/5 137/168/5 +f 143/169/3 142/170/3 141/171/3 +f 147/172/6 146/173/6 145/174/6 +f 151/175/4 150/176/4 149/177/4 +f 153/178/1 156/179/1 154/180/1 +f 159/181/14 157/182/14 158/183/14 +f 153/184/4 160/185/4 155/186/4 +f 156/179/3 158/183/3 154/180/3 +f 161/187/1 164/188/1 162/189/1 +f 167/190/14 165/191/14 166/192/14 +f 164/193/3 166/192/3 162/194/3 +f 161/187/4 168/195/4 163/196/4 +f 169/197/1 172/198/1 170/199/1 +f 175/200/14 173/201/14 174/202/14 +f 169/203/5 176/204/5 171/205/5 +f 172/198/6 174/202/6 170/199/6 +f 177/206/1 180/207/1 178/208/1 +f 183/209/14 181/210/14 182/211/14 +f 180/212/6 182/211/6 178/213/6 +f 177/206/5 184/214/5 179/215/5 +f 204/216/14 219/217/14 203/218/14 +f 205/219/14 220/220/14 204/216/14 +f 205/221/14 222/222/14 221/223/14 +f 207/224/14 222/222/14 206/225/14 +f 207/224/14 224/226/14 223/227/14 +f 209/228/14 224/226/14 208/229/14 +f 209/228/14 226/230/14 225/231/14 +f 210/232/14 227/233/14 226/230/14 +f 212/234/14 227/233/14 211/235/14 +f 213/236/14 228/237/14 212/234/14 +f 213/236/14 230/238/14 229/239/14 +f 214/240/14 231/241/14 230/238/14 +f 216/242/14 231/241/14 215/243/14 +f 201/244/14 232/245/14 216/242/14 +f 202/246/14 217/247/14 201/244/14 +f 203/218/14 218/248/14 202/246/14 +f 235/249/1 234/250/1 233/251/1 +f 239/252/14 237/253/14 238/254/14 +f 234/255/4 238/256/4 233/257/4 +f 236/258/5 239/252/5 234/259/5 +f 233/260/6 237/261/6 235/262/6 +f 235/263/3 240/264/3 236/265/3 +f 243/266/1 242/267/1 241/268/1 +f 247/269/14 245/270/14 246/271/14 +f 242/272/4 246/273/4 241/274/4 +f 244/275/5 247/269/5 242/276/5 +f 241/277/6 245/278/6 243/279/6 +f 243/280/3 248/281/3 244/282/3 +f 251/283/1 250/284/1 249/285/1 +f 255/286/14 253/287/14 254/288/14 +f 250/289/4 254/290/4 249/291/4 +f 252/292/5 255/286/5 250/293/5 +f 249/294/6 253/295/6 251/296/6 +f 251/297/3 256/298/3 252/299/3 +f 260/300/15 257/301/15 258/302/15 +f 261/303/16 264/304/16 262/305/16 +f 304/306/5 299/307/5 300/308/5 +f 259/309/17 264/310/17 263/311/17 +f 302/312/6 297/313/6 298/314/6 +f 257/301/18 262/305/18 258/302/18 +f 266/315/15 267/316/15 265/317/15 +f 270/318/16 271/319/16 272/320/16 +f 301/321/3 300/322/3 297/323/3 +f 267/316/19 272/320/19 271/319/19 +f 303/324/4 298/325/4 299/326/4 +f 265/317/20 270/327/20 266/315/20 +f 276/328/21 273/329/21 274/330/21 +f 277/331/22 280/332/22 278/333/22 +f 295/334/4 290/335/4 291/336/4 +f 276/337/17 279/338/17 275/339/17 +f 293/340/3 292/341/3 289/342/3 +f 274/330/18 277/331/18 278/333/18 +f 282/343/21 283/344/21 281/345/21 +f 286/346/22 287/347/22 288/348/22 +f 294/349/6 289/350/6 290/351/6 +f 284/352/19 287/347/19 283/344/19 +f 296/353/5 291/354/5 292/355/5 +f 282/356/20 285/357/20 286/346/20 +f 312/358/5 307/359/5 308/360/5 +f 310/361/6 305/362/6 306/363/6 +f 309/364/3 308/365/3 305/366/3 +f 311/367/4 306/368/4 307/369/4 +f 313/370/23 316/371/23 315/372/23 +f 331/373/14 317/374/14 325/375/14 +f 334/376/24 335/377/24 333/378/24 +f 338/379/25 339/380/25 337/381/25 +f 342/382/26 343/383/26 341/384/26 +f 286/346/3 357/385/3 282/356/3 +f 260/300/4 348/386/4 264/310/4 +f 272/320/5 351/387/5 270/318/5 +f 262/305/3 345/388/3 258/302/3 +f 274/330/6 354/389/6 276/328/6 +f 276/337/4 356/390/4 280/332/4 +f 288/348/5 359/391/5 286/346/5 +f 278/333/3 353/392/3 274/330/3 +f 264/304/5 347/393/5 262/305/5 +f 266/315/6 350/394/6 268/395/6 +f 268/395/4 352/396/4 272/320/4 +f 280/332/5 355/397/5 278/333/5 +f 270/327/3 349/398/3 266/315/3 +f 282/343/6 358/399/6 284/352/6 +f 284/352/4 360/400/4 288/348/4 +f 258/302/6 346/401/6 260/300/6 +f 22/402/14 24/403/14 21/404/14 +f 666/405/6 672/406/6 668/407/6 +f 4/12/1 667/408/1 3/1/1 +f 2/14/1 668/409/1 4/12/1 +f 1/3/1 666/410/1 2/14/1 +f 672/411/1 673/412/1 669/413/1 +f 667/414/5 670/415/5 665/416/5 +f 668/417/4 669/413/4 667/418/4 +f 665/419/3 671/420/3 666/421/3 +f 675/422/5 680/423/5 676/424/5 +f 670/425/1 675/426/1 671/420/1 +f 671/427/1 676/424/1 672/406/1 +f 669/428/1 674/429/1 670/415/1 +f 677/430/1 679/431/1 678/432/1 +f 673/433/6 678/432/6 674/429/6 +f 676/434/3 677/430/3 673/412/3 +f 674/435/4 679/431/4 675/426/4 +f 3/1/1 667/408/1 665/2/1 +f 6/4/2 10/20/2 9/5/2 +f 3/7/3 7/24/3 8/8/3 +f 2/10/4 6/4/4 5/6/4 +f 4/12/5 8/21/5 6/13/5 +f 1/15/6 5/22/6 7/16/6 +f 12/18/5 16/27/5 15/19/5 +f 8/21/7 12/18/7 10/20/7 +f 5/22/8 9/28/8 11/23/8 +f 7/24/9 11/23/9 12/18/9 +f 13/25/10 17/38/10 20/26/10 +f 9/28/6 14/34/6 13/25/6 +f 11/23/3 13/25/3 16/27/3 +f 10/20/4 15/19/4 14/29/4 +f 20/30/5 24/403/5 23/31/5 +f 15/19/11 19/40/11 18/33/11 +f 16/27/12 20/30/12 19/32/12 +f 14/34/13 18/36/13 17/35/13 +f 18/36/6 22/436/6 21/37/6 +f 17/38/3 21/437/3 24/39/3 +f 19/40/4 23/438/4 22/41/4 +f 28/42/5 27/46/5 25/43/5 +f 32/45/3 31/439/3 27/46/3 +f 29/47/4 30/49/4 26/44/4 +f 29/47/6 31/440/6 32/48/6 +f 26/44/1 30/49/1 32/50/1 +f 36/52/5 35/56/5 33/53/5 +f 40/55/3 39/441/3 35/56/3 +f 37/57/4 38/442/4 34/54/4 +f 37/58/6 39/441/6 40/55/6 +f 34/54/1 38/443/1 40/60/1 +f 44/61/5 43/444/5 41/62/5 +f 48/64/3 47/445/3 43/65/3 +f 45/67/4 46/68/4 42/63/4 +f 45/67/6 47/445/6 48/64/6 +f 42/69/1 46/68/1 48/64/1 +f 52/71/5 51/75/5 49/72/5 +f 56/74/3 55/446/3 51/75/3 +f 53/76/4 54/79/4 50/77/4 +f 53/76/6 55/446/6 56/74/6 +f 50/80/1 54/447/1 56/74/1 +f 60/81/5 59/85/5 57/82/5 +f 64/84/3 63/448/3 59/85/3 +f 61/86/4 62/88/4 58/83/4 +f 61/86/6 63/449/6 64/87/6 +f 122/89/14 124/450/14 125/90/14 +f 68/92/5 67/96/5 65/93/5 +f 72/95/3 71/451/3 67/96/3 +f 69/97/4 70/452/4 66/94/4 +f 69/98/6 71/451/6 72/95/6 +f 128/91/14 127/109/14 121/100/14 +f 76/101/5 75/453/5 73/102/5 +f 80/104/3 79/454/3 75/105/3 +f 77/107/4 78/108/4 74/103/4 +f 77/107/6 79/454/6 80/104/6 +f 127/109/14 126/120/14 123/110/14 +f 84/111/5 83/115/5 81/112/5 +f 88/114/3 87/455/3 83/115/3 +f 85/116/4 86/119/4 82/117/4 +f 85/116/6 87/455/6 88/114/6 +f 125/90/14 124/450/14 123/110/14 +f 89/121/1 91/456/1 92/122/1 +f 95/124/14 96/128/14 93/125/14 +f 89/127/4 93/125/4 96/128/4 +f 92/122/3 95/124/3 94/126/3 +f 97/130/1 99/139/1 100/131/1 +f 103/133/14 104/138/14 101/134/14 +f 100/136/3 103/133/3 102/135/3 +f 97/130/4 101/134/4 104/138/4 +f 105/140/1 107/457/1 108/141/1 +f 111/143/14 112/147/14 109/144/14 +f 105/146/5 109/144/5 112/147/5 +f 108/141/6 111/143/6 110/145/6 +f 113/149/1 115/158/1 116/150/1 +f 119/152/14 120/157/14 117/153/14 +f 116/155/6 119/152/6 118/154/6 +f 113/149/5 117/153/5 120/157/5 +f 133/159/1 132/458/1 130/160/1 +f 129/162/1 135/164/1 136/161/1 +f 131/163/1 134/165/1 135/164/1 +f 131/163/1 132/458/1 133/159/1 +f 139/166/5 140/459/5 138/167/5 +f 143/169/3 144/460/3 142/170/3 +f 147/172/6 148/461/6 146/173/6 +f 151/175/4 152/462/4 150/176/4 +f 153/178/1 155/463/1 156/179/1 +f 159/181/14 160/185/14 157/182/14 +f 153/184/4 157/182/4 160/185/4 +f 156/179/3 159/181/3 158/183/3 +f 161/187/1 163/196/1 164/188/1 +f 167/190/14 168/195/14 165/191/14 +f 164/193/3 167/190/3 166/192/3 +f 161/187/4 165/191/4 168/195/4 +f 169/197/1 171/464/1 172/198/1 +f 175/200/14 176/204/14 173/201/14 +f 169/203/5 173/201/5 176/204/5 +f 172/198/6 175/200/6 174/202/6 +f 177/206/1 179/215/1 180/207/1 +f 183/209/14 184/214/14 181/210/14 +f 180/212/6 183/209/6 182/211/6 +f 177/206/5 181/210/5 184/214/5 +f 204/216/14 220/220/14 219/217/14 +f 205/219/14 221/465/14 220/220/14 +f 205/221/14 206/225/14 222/222/14 +f 207/224/14 223/227/14 222/222/14 +f 207/224/14 208/229/14 224/226/14 +f 209/228/14 225/231/14 224/226/14 +f 209/228/14 210/232/14 226/230/14 +f 210/232/14 211/235/14 227/233/14 +f 212/234/14 228/237/14 227/233/14 +f 213/236/14 229/239/14 228/237/14 +f 213/236/14 214/240/14 230/238/14 +f 214/240/14 215/243/14 231/241/14 +f 216/242/14 232/245/14 231/241/14 +f 201/244/14 217/247/14 232/245/14 +f 202/246/14 218/248/14 217/247/14 +f 203/218/14 219/217/14 218/248/14 +f 235/249/1 236/466/1 234/250/1 +f 239/252/14 240/467/14 237/253/14 +f 234/255/4 239/468/4 238/256/4 +f 236/258/5 240/467/5 239/252/5 +f 233/260/6 238/469/6 237/261/6 +f 235/263/3 237/470/3 240/264/3 +f 243/266/1 244/471/1 242/267/1 +f 247/269/14 248/472/14 245/270/14 +f 242/272/4 247/473/4 246/273/4 +f 244/275/5 248/472/5 247/269/5 +f 241/277/6 246/474/6 245/278/6 +f 243/280/3 245/475/3 248/281/3 +f 251/283/1 252/476/1 250/284/1 +f 255/286/14 256/477/14 253/287/14 +f 250/289/4 255/478/4 254/290/4 +f 252/292/5 256/477/5 255/286/5 +f 249/294/6 254/479/6 253/295/6 +f 251/297/3 253/480/3 256/298/3 +f 260/300/15 259/309/15 257/301/15 +f 261/303/16 263/481/16 264/304/16 +f 304/306/5 303/482/5 299/307/5 +f 259/309/17 260/300/17 264/310/17 +f 302/312/6 301/483/6 297/313/6 +f 257/301/18 261/303/18 262/305/18 +f 266/315/15 268/395/15 267/316/15 +f 270/318/16 269/484/16 271/319/16 +f 301/321/3 304/485/3 300/322/3 +f 267/316/19 268/395/19 272/320/19 +f 303/324/4 302/486/4 298/325/4 +f 265/317/20 269/487/20 270/327/20 +f 276/328/21 275/488/21 273/329/21 +f 277/331/22 279/338/22 280/332/22 +f 295/334/4 294/489/4 290/335/4 +f 276/337/17 280/332/17 279/338/17 +f 293/340/3 296/490/3 292/341/3 +f 274/330/18 273/329/18 277/331/18 +f 282/343/21 284/352/21 283/344/21 +f 286/346/22 285/357/22 287/347/22 +f 294/349/6 293/491/6 289/350/6 +f 284/352/19 288/348/19 287/347/19 +f 296/353/5 295/492/5 291/354/5 +f 282/356/20 281/493/20 285/357/20 +f 312/358/5 311/494/5 307/359/5 +f 310/361/6 309/495/6 305/362/6 +f 309/364/3 312/496/3 308/365/3 +f 311/367/4 310/497/4 306/368/4 +f 313/370/23 314/498/23 316/371/23 +f 317/374/14 318/499/14 319/500/14 +f 319/500/14 320/501/14 321/502/14 +f 321/502/14 322/503/14 323/504/14 +f 323/504/14 324/505/14 325/375/14 +f 325/375/14 326/506/14 329/507/14 +f 326/506/14 327/508/14 329/507/14 +f 327/508/14 328/509/14 329/507/14 +f 329/507/14 330/510/14 331/373/14 +f 331/373/14 332/511/14 317/374/14 +f 317/374/14 319/500/14 321/502/14 +f 321/502/14 323/504/14 317/374/14 +f 323/504/14 325/375/14 317/374/14 +f 329/507/14 331/373/14 325/375/14 +f 334/376/24 336/512/24 335/377/24 +f 338/379/25 340/513/25 339/380/25 +f 342/382/26 344/514/26 343/383/26 +f 286/346/3 359/391/3 357/385/3 +f 260/300/4 346/401/4 348/386/4 +f 272/320/5 352/396/5 351/387/5 +f 262/305/3 347/393/3 345/388/3 +f 274/330/6 353/392/6 354/389/6 +f 276/337/4 354/515/4 356/390/4 +f 288/348/5 360/400/5 359/391/5 +f 278/333/3 355/397/3 353/392/3 +f 264/304/5 348/516/5 347/393/5 +f 266/315/6 349/398/6 350/394/6 +f 268/395/4 350/394/4 352/396/4 +f 280/332/5 356/390/5 355/397/5 +f 270/327/3 351/517/3 349/398/3 +f 282/343/6 357/518/6 358/399/6 +f 284/352/4 358/399/4 360/400/4 +f 258/302/6 345/388/6 346/401/6 +f 22/402/14 23/31/14 24/403/14 +f 666/405/6 671/427/6 672/406/6 +f 4/12/1 668/409/1 667/408/1 +f 2/14/1 666/410/1 668/409/1 +f 1/3/1 665/2/1 666/410/1 +f 672/411/1 676/434/1 673/412/1 +f 667/414/5 669/428/5 670/415/5 +f 668/417/4 672/411/4 669/413/4 +f 665/419/3 670/425/3 671/420/3 +f 675/422/5 679/431/5 680/423/5 +f 670/425/1 674/435/1 675/426/1 +f 671/427/1 675/422/1 676/424/1 +f 669/428/1 673/433/1 674/429/1 +f 677/430/1 680/423/1 679/431/1 +f 673/433/6 677/430/6 678/432/6 +f 676/434/3 680/423/3 677/430/3 +f 674/435/4 678/432/4 679/431/4 s 1 -f 210//63 225//6 209//6 -f 218//64 233//5 217//5 -f 211//65 226//63 210//63 -f 219//66 234//64 218//64 -f 212//67 227//65 211//65 -f 220//68 235//66 219//66 -f 213//4 228//67 212//67 -f 206//69 221//3 205//3 -f 205//3 236//68 220//68 -f 214//70 229//4 213//4 -f 207//71 222//69 206//69 -f 215//72 230//70 214//70 -f 208//73 223//71 207//71 -f 216//74 231//72 215//72 -f 209//6 224//73 208//73 -f 217//5 232//74 216//74 -f 244//67 259//65 243//65 -f 252//68 267//66 251//66 -f 245//4 260//67 244//67 -f 238//69 253//3 237//3 -f 237//3 268//68 252//68 -f 246//70 261//4 245//4 -f 239//71 254//69 238//69 -f 247//72 262//70 246//70 -f 240//73 255//71 239//71 -f 248//74 263//72 247//72 -f 241//6 256//73 240//73 -f 249//5 264//74 248//74 -f 242//63 257//6 241//6 -f 250//64 265//5 249//5 -f 243//65 258//63 242//63 -f 251//66 266//64 250//64 -f 271//71 286//69 270//69 -f 279//72 294//70 278//70 -f 272//73 287//71 271//71 -f 280//74 295//72 279//72 -f 273//6 288//73 272//73 -f 281//5 296//74 280//74 -f 274//63 289//6 273//6 -f 282//64 297//5 281//5 -f 275//65 290//63 274//63 -f 283//66 298//64 282//64 -f 276//67 291//65 275//65 -f 284//68 299//66 283//66 -f 277//4 292//67 276//67 -f 270//69 285//3 269//3 -f 269//3 300//68 284//68 -f 278//70 293//4 277//4 -f 308//67 323//65 307//65 -f 316//68 331//66 315//66 -f 309//4 324//67 308//67 -f 302//69 317//3 301//3 -f 301//3 332//68 316//68 -f 310//70 325//4 309//4 -f 303//71 318//69 302//69 -f 311//72 326//70 310//70 -f 304//73 319//71 303//71 -f 312//74 327//72 311//72 -f 305//6 320//73 304//73 -f 313//5 328//74 312//74 -f 306//63 321//6 305//6 -f 314//64 329//5 313//5 -f 307//65 322//63 306//63 -f 315//66 330//64 314//64 -f 335//71 350//69 334//69 -f 343//72 358//70 342//70 -f 336//73 351//71 335//71 -f 344//74 359//72 343//72 -f 337//6 352//73 336//73 -f 345//5 360//74 344//74 -f 338//63 353//6 337//6 -f 346//64 361//5 345//5 -f 339//65 354//63 338//63 -f 347//66 362//64 346//64 -f 340//67 355//65 339//65 -f 348//68 363//66 347//66 -f 341//4 356//67 340//67 -f 334//69 349//3 333//3 -f 333//3 364//68 348//68 -f 342//70 357//4 341//4 -f 375//71 390//69 374//69 -f 368//74 383//72 367//72 -f 376//73 391//71 375//71 -f 369//5 384//74 368//74 -f 377//6 392//73 376//73 -f 370//64 385//5 369//5 -f 378//63 393//6 377//6 -f 371//66 386//64 370//64 -f 379//65 394//63 378//63 -f 372//68 387//66 371//66 -f 380//67 395//65 379//65 -f 373//3 388//68 372//68 -f 366//70 381//4 365//4 -f 365//4 396//67 380//67 -f 374//69 389//3 373//3 -f 367//72 382//70 366//70 -f 399//75 208//76 207//75 -f 400//76 209//77 208//76 -f 209//77 402//78 210//78 -f 402//78 211//79 210//78 -f 403//79 212//80 211//79 -f 404//80 213//81 212//80 -f 405//81 214//82 213//81 -f 406//82 215//83 214//82 -f 407//83 216//84 215//83 -f 408//84 217//85 216//84 -f 409//85 218//86 217//85 -f 218//86 411//87 219//87 -f 411//87 220//88 219//87 -f 412//88 205//89 220//88 -f 397//89 206//90 205//89 -f 206//90 399//75 207//75 -f 480//91 495//92 479//92 -f 481//93 496//91 480//91 -f 482//94 497//93 481//93 -f 483//95 498//94 482//94 -f 484//96 499//95 483//95 -f 485//97 500//96 484//96 -f 486//98 501//97 485//97 -f 486//98 503//99 502//98 -f 488//100 503//99 487//99 -f 489//101 504//100 488//100 -f 490//102 505//101 489//101 -f 491//103 506//102 490//102 -f 492//104 507//103 491//103 -f 477//105 508//104 492//104 -f 478//106 493//105 477//105 -f 478//106 495//92 494//106 -f 526//70 541//4 525//4 -f 525//4 556//67 540//67 -f 534//69 549//3 533//3 -f 527//72 542//70 526//70 -f 535//71 550//69 534//69 -f 528//74 543//72 527//72 -f 536//73 551//71 535//71 -f 529//5 544//74 528//74 -f 537//6 552//73 536//73 -f 530//64 545//5 529//5 -f 538//63 553//6 537//6 -f 531//66 546//64 530//64 -f 539//65 554//63 538//63 -f 532//68 547//66 531//66 -f 540//67 555//65 539//65 -f 533//3 548//68 532//68 -f 568//74 583//72 567//72 -f 561//6 576//73 560//73 -f 569//5 584//74 568//74 -f 562//63 577//6 561//6 -f 570//64 585//5 569//5 -f 563//65 578//63 562//63 -f 571//66 586//64 570//64 -f 564//67 579//65 563//65 -f 572//68 587//66 571//66 -f 565//4 580//67 564//67 -f 558//69 573//3 557//3 -f 557//3 588//68 572//68 -f 566//70 581//4 565//4 -f 559//71 574//69 558//69 -f 567//72 582//70 566//70 -f 560//73 575//71 559//71 -f 600//74 615//72 599//72 -f 593//6 608//73 592//73 -f 601//5 616//74 600//74 -f 594//63 609//6 593//6 -f 602//64 617//5 601//5 -f 595//65 610//63 594//63 -f 603//66 618//64 602//64 -f 596//67 611//65 595//65 -f 604//68 619//66 603//66 -f 597//4 612//67 596//67 -f 590//69 605//3 589//3 -f 589//3 620//68 604//68 -f 598//70 613//4 597//4 -f 591//71 606//69 590//69 -f 599//72 614//70 598//70 -f 592//73 607//71 591//71 -f 632//74 647//72 631//72 -f 625//6 640//73 624//73 -f 633//5 648//74 632//74 -f 626//63 641//6 625//6 -f 634//64 649//5 633//5 -f 627//65 642//63 626//63 -f 635//66 650//64 634//64 -f 628//67 643//65 627//65 -f 636//68 651//66 635//66 -f 629//4 644//67 628//67 -f 622//69 637//3 621//3 -f 621//3 652//68 636//68 -f 630//70 645//4 629//4 -f 623//71 638//69 622//69 -f 631//72 646//70 630//70 -f 624//73 639//71 623//71 -f 668//68 683//66 667//66 -f 661//4 676//67 660//67 -f 654//69 669//3 653//3 -f 653//3 684//68 668//68 -f 662//70 677//4 661//4 -f 655//71 670//69 654//69 -f 663//72 678//70 662//70 -f 656//73 671//71 655//71 -f 664//74 679//72 663//72 -f 657//6 672//73 656//73 -f 665//5 680//74 664//74 -f 658//63 673//6 657//6 -f 666//64 681//5 665//5 -f 659//65 674//63 658//63 -f 667//66 682//64 666//64 -f 660//67 675//65 659//65 -f 689//5 704//74 688//74 -f 697//6 712//73 696//73 -f 690//64 705//5 689//5 -f 698//63 713//6 697//6 -f 691//66 706//64 690//64 -f 699//65 714//63 698//63 -f 692//68 707//66 691//66 -f 700//67 715//65 699//65 -f 693//3 708//68 692//68 -f 686//70 701//4 685//4 -f 685//4 716//67 700//67 -f 694//69 709//3 693//3 -f 687//72 702//70 686//70 -f 695//71 710//69 694//69 -f 688//74 703//72 687//72 -f 696//73 711//71 695//71 -f 839//72 854//70 838//70 -f 832//73 847//71 831//71 -f 840//74 855//72 839//72 -f 833//6 848//73 832//73 -f 841//5 856//74 840//74 -f 834//63 849//6 833//6 -f 842//64 857//5 841//5 -f 835//65 850//63 834//63 -f 843//66 858//64 842//64 -f 836//67 851//65 835//65 -f 844//68 859//66 843//66 -f 837//4 852//67 836//67 -f 830//69 845//3 829//3 -f 829//3 860//68 844//68 -f 838//70 853//4 837//4 -f 831//71 846//69 830//69 -f 873//6 972//73 872//73 -f 866//64 965//5 865//5 -f 874//63 973//6 873//6 -f 867//66 966//64 866//64 -f 875//65 974//63 874//63 -f 868//68 967//66 867//66 -f 876//67 975//65 875//65 -f 869//3 968//68 868//68 -f 862//70 961//4 861//4 -f 861//4 976//67 876//67 -f 870//69 969//3 869//3 -f 863//72 962//70 862//70 -f 871//71 970//69 870//69 -f 864//74 963//72 863//72 -f 872//73 971//71 871//71 -f 865//5 964//74 864//74 -f 1005//3 1020//107 1012//66 -f 1011//5 1018//108 1010//72 -f 1009//4 1016//109 1008//65 -f 1007//6 1014//110 1006//71 -f 1012//66 1019//111 1011//5 -f 1010//72 1017//2 1009//4 -f 1008//65 1015//112 1007//6 -f 1006//71 1013//113 1005//3 -f 1015//112 1022//114 1014//110 -f 1019//111 1027//115 1026//116 -f 1015//112 1024//117 1023//118 -f 1013//113 1022//114 1021//10 -f 1013//113 1027//115 1020//107 -f 1018//108 1026//116 1025//119 -f 1021//10 1034//120 1027//115 -f 1025//119 1033//121 1032//122 -f 1023//118 1029//123 1022//114 -f 1026//116 1034//120 1033//121 -f 1024//117 1030//124 1023//118 -f 1021//10 1029//123 1028//125 -f 1016//109 1017//2 1024//117 -f 1024//117 1017//2 1031//126 -f 1018//108 1025//119 1017//2 -f 1025//119 1032//122 1017//2 -f 1032//122 1035//1 1017//2 -f 1028//125 1042//12 1034//120 -f 1031//126 1035//1 1039//8 -f 1033//121 1040//7 1032//122 -f 1030//124 1037//13 1029//123 -f 1033//121 1042//12 1041//5 -f 1031//126 1038//6 1030//124 -f 1028//125 1037//13 1036//14 -f 1043//3 1058//107 1050//66 -f 1049//5 1056//108 1048//72 -f 1047//4 1054//109 1046//65 -f 1045//6 1052//110 1044//71 -f 1050//66 1057//111 1049//5 -f 1048//72 1055//2 1047//4 -f 1046//65 1053//112 1045//6 -f 1044//71 1051//113 1043//3 -f 1052//110 1061//118 1060//114 -f 1057//111 1065//115 1064//116 -f 1053//112 1062//117 1061//118 -f 1051//113 1060//114 1059//10 -f 1051//113 1065//115 1058//107 -f 1057//111 1063//119 1056//108 -f 1059//10 1072//120 1065//115 -f 1063//119 1071//121 1070//122 -f 1061//118 1067//123 1060//114 -f 1065//115 1071//121 1064//116 -f 1062//117 1068//124 1061//118 -f 1059//10 1067//123 1066//125 -f 1054//109 1055//2 1062//117 -f 1062//117 1055//2 1069//126 -f 1056//108 1063//119 1055//2 -f 1063//119 1070//122 1055//2 -f 1070//122 1073//1 1055//2 -f 1066//125 1080//12 1072//120 -f 1069//126 1073//1 1077//8 -f 1071//121 1078//7 1070//122 -f 1068//124 1075//13 1067//123 -f 1071//121 1080//12 1079//5 -f 1069//126 1076//6 1068//124 -f 1066//125 1075//13 1074//14 -f 1081//4 1096//127 1088//65 -f 1087//6 1094//128 1086//71 -f 1085//3 1092//129 1084//66 -f 1083//5 1090//130 1082//72 -f 1088//65 1095//131 1087//6 -f 1086//71 1093//9 1085//3 -f 1084//66 1091//132 1083//5 -f 1082//72 1089//133 1081//4 -f 1091//132 1098//134 1090//130 -f 1096//127 1102//135 1095//131 -f 1092//129 1099//136 1091//132 -f 1089//133 1098//134 1097//11 -f 1096//127 1097//11 1103//137 -f 1094//128 1102//135 1101//138 -f 1097//11 1110//139 1103//137 -f 1101//138 1109//140 1108//141 -f 1099//136 1105//142 1098//134 -f 1102//135 1110//139 1109//140 -f 1100//143 1106//144 1099//136 -f 1097//11 1105//142 1104//145 -f 1092//129 1093//9 1100//143 -f 1100//143 1093//9 1107//146 -f 1094//128 1101//138 1093//9 -f 1101//138 1108//141 1093//9 -f 1108//141 1111//1 1093//9 -f 1104//145 1118//13 1110//139 -f 1107//146 1111//1 1115//7 -f 1109//140 1116//8 1108//141 -f 1106//144 1113//12 1105//142 -f 1109//140 1118//13 1117//6 -f 1107//146 1114//5 1106//144 -f 1104//145 1113//12 1112//14 -f 1119//4 1134//127 1126//65 -f 1125//6 1132//128 1124//71 -f 1123//3 1130//129 1122//66 -f 1121//5 1128//130 1120//72 -f 1126//65 1133//131 1125//6 -f 1124//71 1131//9 1123//3 -f 1122//66 1129//132 1121//5 -f 1120//72 1127//133 1119//4 -f 1129//132 1136//134 1128//130 -f 1133//131 1141//137 1140//135 -f 1129//132 1138//143 1137//136 -f 1127//133 1136//134 1135//11 -f 1127//133 1141//137 1134//127 -f 1133//131 1139//138 1132//128 -f 1135//11 1148//139 1141//137 -f 1139//138 1147//140 1146//141 -f 1137//136 1143//142 1136//134 -f 1141//137 1147//140 1140//135 -f 1138//143 1144//144 1137//136 -f 1135//11 1143//142 1142//145 -f 1130//129 1131//9 1138//143 -f 1138//143 1131//9 1145//146 -f 1132//128 1139//138 1131//9 -f 1139//138 1146//141 1131//9 -f 1146//141 1149//1 1131//9 -f 1142//145 1156//13 1148//139 -f 1145//146 1149//1 1153//7 -f 1147//140 1154//8 1146//141 -f 1144//144 1151//12 1143//142 -f 1147//140 1156//13 1155//6 -f 1145//146 1152//5 1144//144 -f 1142//145 1151//12 1150//14 -f 1157//6 1172//147 1164//71 -f 1163//3 1170//148 1162//66 -f 1161//5 1168//149 1160//72 -f 1159//4 1166//150 1158//65 -f 1164//71 1171//151 1163//3 -f 1162//66 1169//7 1161//5 -f 1160//72 1167//152 1159//4 -f 1158//65 1165//153 1157//6 -f 1166//150 1175//154 1174//155 -f 1172//147 1178//156 1171//151 -f 1167//152 1176//157 1175//154 -f 1165//153 1174//155 1173//13 -f 1165//153 1179//158 1172//147 -f 1171//151 1177//159 1170//148 -f 1173//13 1186//160 1179//158 -f 1177//159 1185//161 1184//162 -f 1175//154 1181//163 1174//155 -f 1179//158 1185//161 1178//156 -f 1176//157 1182//164 1175//154 -f 1174//155 1180//165 1173//13 -f 1168//149 1169//7 1176//157 -f 1176//157 1169//7 1183//166 -f 1170//148 1177//159 1169//7 -f 1177//159 1184//162 1169//7 -f 1184//162 1187//1 1169//7 -f 1180//165 1194//10 1186//160 -f 1183//166 1187//1 1191//2 -f 1185//161 1192//9 1184//162 -f 1182//164 1189//11 1181//163 -f 1186//160 1193//3 1185//161 -f 1183//166 1190//4 1182//164 -f 1180//165 1189//11 1188//14 -f 1195//6 1210//147 1202//71 -f 1201//3 1208//148 1200//66 -f 1199//5 1206//149 1198//72 -f 1197//4 1204//150 1196//65 -f 1202//71 1209//151 1201//3 -f 1200//66 1207//7 1199//5 -f 1198//72 1205//152 1197//4 -f 1196//65 1203//153 1195//6 -f 1205//152 1212//155 1204//150 -f 1209//151 1217//167 1216//156 -f 1205//152 1214//157 1213//154 -f 1203//153 1212//155 1211//13 -f 1203//153 1217//167 1210//147 -f 1208//148 1216//156 1215//159 -f 1211//13 1224//160 1217//167 -f 1216//156 1222//162 1215//159 -f 1212//155 1220//164 1219//163 -f 1217//167 1223//161 1216//156 -f 1214//157 1220//164 1213//154 -f 1212//155 1218//165 1211//13 -f 1206//149 1207//7 1214//157 -f 1214//157 1207//7 1221//166 -f 1208//148 1215//159 1207//7 -f 1215//159 1222//162 1207//7 -f 1222//162 1225//1 1207//7 -f 1218//165 1232//10 1224//160 -f 1207//7 1229//2 1221//166 -f 1222//162 1231//3 1230//9 -f 1220//164 1227//11 1219//163 -f 1223//161 1232//10 1231//3 -f 1220//164 1229//2 1228//4 -f 1218//165 1227//11 1226//14 -f 1233//5 1248//168 1240//72 -f 1239//4 1246//169 1238//65 -f 1237//6 1244//170 1236//71 -f 1235//3 1242//171 1234//66 -f 1240//72 1247//172 1239//4 -f 1238//65 1245//8 1237//6 -f 1236//71 1243//173 1235//3 -f 1234//66 1241//174 1233//5 -f 1243//173 1250//175 1242//171 -f 1248//168 1254//176 1247//172 -f 1243//173 1252//177 1251//178 -f 1242//171 1249//12 1241//174 -f 1241//174 1255//179 1248//168 -f 1246//169 1254//176 1253//180 -f 1249//12 1262//181 1255//179 -f 1253//180 1261//182 1260//183 -f 1250//175 1258//184 1257//185 -f 1254//176 1262//181 1261//182 -f 1252//177 1258//184 1251//178 -f 1249//12 1257//185 1256//186 -f 1244//170 1245//8 1252//177 -f 1252//177 1245//8 1259//187 -f 1246//169 1253//180 1245//8 -f 1253//180 1260//183 1245//8 -f 1260//183 1263//1 1245//8 -f 1256//186 1270//11 1262//181 -f 1245//8 1267//9 1259//187 -f 1260//183 1269//4 1268//2 -f 1258//184 1265//10 1257//185 -f 1261//182 1270//11 1269//4 -f 1259//187 1266//3 1258//184 -f 1256//186 1265//10 1264//14 -f 1271//5 1286//168 1278//72 -f 1277//4 1284//169 1276//65 -f 1275//6 1282//170 1274//71 -f 1273//3 1280//171 1272//66 -f 1278//72 1285//172 1277//4 -f 1276//65 1283//8 1275//6 -f 1274//71 1281//173 1273//3 -f 1272//66 1279//174 1271//5 -f 1280//171 1289//178 1288//175 -f 1285//172 1293//188 1292//176 -f 1282//170 1289//178 1281//173 -f 1279//174 1288//175 1287//12 -f 1279//174 1293//188 1286//168 -f 1285//172 1291//180 1284//169 -f 1287//12 1300//181 1293//188 -f 1291//180 1299//182 1298//183 -f 1288//175 1296//184 1295//185 -f 1292//176 1300//181 1299//182 -f 1290//177 1296//184 1289//178 -f 1287//12 1295//185 1294//186 -f 1282//170 1283//8 1290//177 -f 1290//177 1283//8 1297//187 -f 1284//169 1291//180 1283//8 -f 1291//180 1298//183 1283//8 -f 1298//183 1301//1 1283//8 -f 1294//186 1308//11 1300//181 -f 1297//187 1301//1 1305//9 -f 1299//182 1306//2 1298//183 -f 1296//184 1303//10 1295//185 -f 1299//182 1308//11 1307//4 -f 1297//187 1304//3 1296//184 -f 1294//186 1303//10 1302//14 -f 210//63 226//63 225//6 -f 218//64 234//64 233//5 -f 211//65 227//65 226//63 -f 219//66 235//66 234//64 -f 212//67 228//67 227//65 -f 220//68 236//68 235//66 -f 213//4 229//4 228//67 -f 206//69 222//69 221//3 -f 205//3 221//3 236//68 -f 214//70 230//70 229//4 -f 207//71 223//71 222//69 -f 215//72 231//72 230//70 -f 208//73 224//73 223//71 -f 216//74 232//74 231//72 -f 209//6 225//6 224//73 -f 217//5 233//5 232//74 -f 244//67 260//67 259//65 -f 252//68 268//68 267//66 -f 245//4 261//4 260//67 -f 238//69 254//69 253//3 -f 237//3 253//3 268//68 -f 246//70 262//70 261//4 -f 239//71 255//71 254//69 -f 247//72 263//72 262//70 -f 240//73 256//73 255//71 -f 248//74 264//74 263//72 -f 241//6 257//6 256//73 -f 249//5 265//5 264//74 -f 242//63 258//63 257//6 -f 250//64 266//64 265//5 -f 243//65 259//65 258//63 -f 251//66 267//66 266//64 -f 271//71 287//71 286//69 -f 279//72 295//72 294//70 -f 272//73 288//73 287//71 -f 280//74 296//74 295//72 -f 273//6 289//6 288//73 -f 281//5 297//5 296//74 -f 274//63 290//63 289//6 -f 282//64 298//64 297//5 -f 275//65 291//65 290//63 -f 283//66 299//66 298//64 -f 276//67 292//67 291//65 -f 284//68 300//68 299//66 -f 277//4 293//4 292//67 -f 270//69 286//69 285//3 -f 269//3 285//3 300//68 -f 278//70 294//70 293//4 -f 308//67 324//67 323//65 -f 316//68 332//68 331//66 -f 309//4 325//4 324//67 -f 302//69 318//69 317//3 -f 301//3 317//3 332//68 -f 310//70 326//70 325//4 -f 303//71 319//71 318//69 -f 311//72 327//72 326//70 -f 304//73 320//73 319//71 -f 312//74 328//74 327//72 -f 305//6 321//6 320//73 -f 313//5 329//5 328//74 -f 306//63 322//63 321//6 -f 314//64 330//64 329//5 -f 307//65 323//65 322//63 -f 315//66 331//66 330//64 -f 335//71 351//71 350//69 -f 343//72 359//72 358//70 -f 336//73 352//73 351//71 -f 344//74 360//74 359//72 -f 337//6 353//6 352//73 -f 345//5 361//5 360//74 -f 338//63 354//63 353//6 -f 346//64 362//64 361//5 -f 339//65 355//65 354//63 -f 347//66 363//66 362//64 -f 340//67 356//67 355//65 -f 348//68 364//68 363//66 -f 341//4 357//4 356//67 -f 334//69 350//69 349//3 -f 333//3 349//3 364//68 -f 342//70 358//70 357//4 -f 375//71 391//71 390//69 -f 368//74 384//74 383//72 -f 376//73 392//73 391//71 -f 369//5 385//5 384//74 -f 377//6 393//6 392//73 -f 370//64 386//64 385//5 -f 378//63 394//63 393//6 -f 371//66 387//66 386//64 -f 379//65 395//65 394//63 -f 372//68 388//68 387//66 -f 380//67 396//67 395//65 -f 373//3 389//3 388//68 -f 366//70 382//70 381//4 -f 365//4 381//4 396//67 -f 374//69 390//69 389//3 -f 367//72 383//72 382//70 -f 399//75 400//76 208//76 -f 400//76 401//77 209//77 -f 209//77 401//77 402//78 -f 402//78 403//79 211//79 -f 403//79 404//80 212//80 -f 404//80 405//81 213//81 -f 405//81 406//82 214//82 -f 406//82 407//83 215//83 -f 407//83 408//84 216//84 -f 408//84 409//85 217//85 -f 409//85 410//86 218//86 -f 218//86 410//86 411//87 -f 411//87 412//88 220//88 -f 412//88 397//89 205//89 -f 397//89 398//90 206//90 -f 206//90 398//90 399//75 -f 480//91 496//91 495//92 -f 481//93 497//93 496//91 -f 482//94 498//94 497//93 -f 483//95 499//95 498//94 -f 484//96 500//96 499//95 -f 485//97 501//97 500//96 -f 486//98 502//98 501//97 -f 486//98 487//99 503//99 -f 488//100 504//100 503//99 -f 489//101 505//101 504//100 -f 490//102 506//102 505//101 -f 491//103 507//103 506//102 -f 492//104 508//104 507//103 -f 477//105 493//105 508//104 -f 478//106 494//106 493//105 -f 478//106 479//92 495//92 -f 526//70 542//70 541//4 -f 525//4 541//4 556//67 -f 534//69 550//69 549//3 -f 527//72 543//72 542//70 -f 535//71 551//71 550//69 -f 528//74 544//74 543//72 -f 536//73 552//73 551//71 -f 529//5 545//5 544//74 -f 537//6 553//6 552//73 -f 530//64 546//64 545//5 -f 538//63 554//63 553//6 -f 531//66 547//66 546//64 -f 539//65 555//65 554//63 -f 532//68 548//68 547//66 -f 540//67 556//67 555//65 -f 533//3 549//3 548//68 -f 568//74 584//74 583//72 -f 561//6 577//6 576//73 -f 569//5 585//5 584//74 -f 562//63 578//63 577//6 -f 570//64 586//64 585//5 -f 563//65 579//65 578//63 -f 571//66 587//66 586//64 -f 564//67 580//67 579//65 -f 572//68 588//68 587//66 -f 565//4 581//4 580//67 -f 558//69 574//69 573//3 -f 557//3 573//3 588//68 -f 566//70 582//70 581//4 -f 559//71 575//71 574//69 -f 567//72 583//72 582//70 -f 560//73 576//73 575//71 -f 600//74 616//74 615//72 -f 593//6 609//6 608//73 -f 601//5 617//5 616//74 -f 594//63 610//63 609//6 -f 602//64 618//64 617//5 -f 595//65 611//65 610//63 -f 603//66 619//66 618//64 -f 596//67 612//67 611//65 -f 604//68 620//68 619//66 -f 597//4 613//4 612//67 -f 590//69 606//69 605//3 -f 589//3 605//3 620//68 -f 598//70 614//70 613//4 -f 591//71 607//71 606//69 -f 599//72 615//72 614//70 -f 592//73 608//73 607//71 -f 632//74 648//74 647//72 -f 625//6 641//6 640//73 -f 633//5 649//5 648//74 -f 626//63 642//63 641//6 -f 634//64 650//64 649//5 -f 627//65 643//65 642//63 -f 635//66 651//66 650//64 -f 628//67 644//67 643//65 -f 636//68 652//68 651//66 -f 629//4 645//4 644//67 -f 622//69 638//69 637//3 -f 621//3 637//3 652//68 -f 630//70 646//70 645//4 -f 623//71 639//71 638//69 -f 631//72 647//72 646//70 -f 624//73 640//73 639//71 -f 668//68 684//68 683//66 -f 661//4 677//4 676//67 -f 654//69 670//69 669//3 -f 653//3 669//3 684//68 -f 662//70 678//70 677//4 -f 655//71 671//71 670//69 -f 663//72 679//72 678//70 -f 656//73 672//73 671//71 -f 664//74 680//74 679//72 -f 657//6 673//6 672//73 -f 665//5 681//5 680//74 -f 658//63 674//63 673//6 -f 666//64 682//64 681//5 -f 659//65 675//65 674//63 -f 667//66 683//66 682//64 -f 660//67 676//67 675//65 -f 689//5 705//5 704//74 -f 697//6 713//6 712//73 -f 690//64 706//64 705//5 -f 698//63 714//63 713//6 -f 691//66 707//66 706//64 -f 699//65 715//65 714//63 -f 692//68 708//68 707//66 -f 700//67 716//67 715//65 -f 693//3 709//3 708//68 -f 686//70 702//70 701//4 -f 685//4 701//4 716//67 -f 694//69 710//69 709//3 -f 687//72 703//72 702//70 -f 695//71 711//71 710//69 -f 688//74 704//74 703//72 -f 696//73 712//73 711//71 -f 839//72 855//72 854//70 -f 832//73 848//73 847//71 -f 840//74 856//74 855//72 -f 833//6 849//6 848//73 -f 841//5 857//5 856//74 -f 834//63 850//63 849//6 -f 842//64 858//64 857//5 -f 835//65 851//65 850//63 -f 843//66 859//66 858//64 -f 836//67 852//67 851//65 -f 844//68 860//68 859//66 -f 837//4 853//4 852//67 -f 830//69 846//69 845//3 -f 829//3 845//3 860//68 -f 838//70 854//70 853//4 -f 831//71 847//71 846//69 -f 873//6 973//6 972//73 -f 866//64 966//64 965//5 -f 874//63 974//63 973//6 -f 867//66 967//66 966//64 -f 875//65 975//65 974//63 -f 868//68 968//68 967//66 -f 876//67 976//67 975//65 -f 869//3 969//3 968//68 -f 862//70 962//70 961//4 -f 861//4 961//4 976//67 -f 870//69 970//69 969//3 -f 863//72 963//72 962//70 -f 871//71 971//71 970//69 -f 864//74 964//74 963//72 -f 872//73 972//73 971//71 -f 865//5 965//5 964//74 -f 1005//3 1013//113 1020//107 -f 1011//5 1019//111 1018//108 -f 1009//4 1017//2 1016//109 -f 1007//6 1015//112 1014//110 -f 1012//66 1020//107 1019//111 -f 1010//72 1018//108 1017//2 -f 1008//65 1016//109 1015//112 -f 1006//71 1014//110 1013//113 -f 1015//112 1023//118 1022//114 -f 1019//111 1020//107 1027//115 -f 1015//112 1016//109 1024//117 -f 1013//113 1014//110 1022//114 -f 1013//113 1021//10 1027//115 -f 1018//108 1019//111 1026//116 -f 1021//10 1028//125 1034//120 -f 1025//119 1026//116 1033//121 -f 1023//118 1030//124 1029//123 -f 1026//116 1027//115 1034//120 -f 1024//117 1031//126 1030//124 -f 1021//10 1022//114 1029//123 -f 1032//122 1040//7 1035//1 -f 1028//125 1036//14 1042//12 -f 1031//126 1017//2 1035//1 -f 1033//121 1041//5 1040//7 -f 1030//124 1038//6 1037//13 -f 1033//121 1034//120 1042//12 -f 1031//126 1039//8 1038//6 -f 1028//125 1029//123 1037//13 -f 1043//3 1051//113 1058//107 -f 1049//5 1057//111 1056//108 -f 1047//4 1055//2 1054//109 -f 1045//6 1053//112 1052//110 -f 1050//66 1058//107 1057//111 -f 1048//72 1056//108 1055//2 -f 1046//65 1054//109 1053//112 -f 1044//71 1052//110 1051//113 -f 1052//110 1053//112 1061//118 -f 1057//111 1058//107 1065//115 -f 1053//112 1054//109 1062//117 -f 1051//113 1052//110 1060//114 -f 1051//113 1059//10 1065//115 -f 1057//111 1064//116 1063//119 -f 1059//10 1066//125 1072//120 -f 1063//119 1064//116 1071//121 -f 1061//118 1068//124 1067//123 -f 1065//115 1072//120 1071//121 -f 1062//117 1069//126 1068//124 -f 1059//10 1060//114 1067//123 -f 1070//122 1078//7 1073//1 -f 1066//125 1074//14 1080//12 -f 1069//126 1055//2 1073//1 -f 1071//121 1079//5 1078//7 -f 1068//124 1076//6 1075//13 -f 1071//121 1072//120 1080//12 -f 1069//126 1077//8 1076//6 -f 1066//125 1067//123 1075//13 -f 1081//4 1089//133 1096//127 -f 1087//6 1095//131 1094//128 -f 1085//3 1093//9 1092//129 -f 1083//5 1091//132 1090//130 -f 1088//65 1096//127 1095//131 -f 1086//71 1094//128 1093//9 -f 1084//66 1092//129 1091//132 -f 1082//72 1090//130 1089//133 -f 1091//132 1099//136 1098//134 -f 1096//127 1103//137 1102//135 -f 1092//129 1100//143 1099//136 -f 1089//133 1090//130 1098//134 -f 1096//127 1089//133 1097//11 -f 1094//128 1095//131 1102//135 -f 1097//11 1104//145 1110//139 -f 1101//138 1102//135 1109//140 -f 1099//136 1106//144 1105//142 -f 1102//135 1103//137 1110//139 -f 1100//143 1107//146 1106//144 -f 1097//11 1098//134 1105//142 -f 1108//141 1116//8 1111//1 -f 1104//145 1112//14 1118//13 -f 1107//146 1093//9 1111//1 -f 1109//140 1117//6 1116//8 -f 1106//144 1114//5 1113//12 -f 1109//140 1110//139 1118//13 -f 1107//146 1115//7 1114//5 -f 1104//145 1105//142 1113//12 -f 1119//4 1127//133 1134//127 -f 1125//6 1133//131 1132//128 -f 1123//3 1131//9 1130//129 -f 1121//5 1129//132 1128//130 -f 1126//65 1134//127 1133//131 -f 1124//71 1132//128 1131//9 -f 1122//66 1130//129 1129//132 -f 1120//72 1128//130 1127//133 -f 1129//132 1137//136 1136//134 -f 1133//131 1134//127 1141//137 -f 1129//132 1130//129 1138//143 -f 1127//133 1128//130 1136//134 -f 1127//133 1135//11 1141//137 -f 1133//131 1140//135 1139//138 -f 1135//11 1142//145 1148//139 -f 1139//138 1140//135 1147//140 -f 1137//136 1144//144 1143//142 -f 1141//137 1148//139 1147//140 -f 1138//143 1145//146 1144//144 -f 1135//11 1136//134 1143//142 -f 1146//141 1154//8 1149//1 -f 1142//145 1150//14 1156//13 -f 1145//146 1131//9 1149//1 -f 1147//140 1155//6 1154//8 -f 1144//144 1152//5 1151//12 -f 1147//140 1148//139 1156//13 -f 1145//146 1153//7 1152//5 -f 1142//145 1143//142 1151//12 -f 1157//6 1165//153 1172//147 -f 1163//3 1171//151 1170//148 -f 1161//5 1169//7 1168//149 -f 1159//4 1167//152 1166//150 -f 1164//71 1172//147 1171//151 -f 1162//66 1170//148 1169//7 -f 1160//72 1168//149 1167//152 -f 1158//65 1166//150 1165//153 -f 1166//150 1167//152 1175//154 -f 1172//147 1179//158 1178//156 -f 1167//152 1168//149 1176//157 -f 1165//153 1166//150 1174//155 -f 1165//153 1173//13 1179//158 -f 1171//151 1178//156 1177//159 -f 1173//13 1180//165 1186//160 -f 1177//159 1178//156 1185//161 -f 1175//154 1182//164 1181//163 -f 1179//158 1186//160 1185//161 -f 1176//157 1183//166 1182//164 -f 1174//155 1181//163 1180//165 -f 1184//162 1192//9 1187//1 -f 1180//165 1188//14 1194//10 -f 1183//166 1169//7 1187//1 -f 1185//161 1193//3 1192//9 -f 1182//164 1190//4 1189//11 -f 1186//160 1194//10 1193//3 -f 1183//166 1191//2 1190//4 -f 1180//165 1181//163 1189//11 -f 1195//6 1203//153 1210//147 -f 1201//3 1209//151 1208//148 -f 1199//5 1207//7 1206//149 -f 1197//4 1205//152 1204//150 -f 1202//71 1210//147 1209//151 -f 1200//66 1208//148 1207//7 -f 1198//72 1206//149 1205//152 -f 1196//65 1204//150 1203//153 -f 1205//152 1213//154 1212//155 -f 1209//151 1210//147 1217//167 -f 1205//152 1206//149 1214//157 -f 1203//153 1204//150 1212//155 -f 1203//153 1211//13 1217//167 -f 1208//148 1209//151 1216//156 -f 1211//13 1218//165 1224//160 -f 1216//156 1223//161 1222//162 -f 1212//155 1213//154 1220//164 -f 1217//167 1224//160 1223//161 -f 1214//157 1221//166 1220//164 -f 1212//155 1219//163 1218//165 -f 1222//162 1230//9 1225//1 -f 1218//165 1226//14 1232//10 -f 1207//7 1225//1 1229//2 -f 1222//162 1223//161 1231//3 -f 1220//164 1228//4 1227//11 -f 1223//161 1224//160 1232//10 -f 1220//164 1221//166 1229//2 -f 1218//165 1219//163 1227//11 -f 1233//5 1241//174 1248//168 -f 1239//4 1247//172 1246//169 -f 1237//6 1245//8 1244//170 -f 1235//3 1243//173 1242//171 -f 1240//72 1248//168 1247//172 -f 1238//65 1246//169 1245//8 -f 1236//71 1244//170 1243//173 -f 1234//66 1242//171 1241//174 -f 1243//173 1251//178 1250//175 -f 1248//168 1255//179 1254//176 -f 1243//173 1244//170 1252//177 -f 1242//171 1250//175 1249//12 -f 1241//174 1249//12 1255//179 -f 1246//169 1247//172 1254//176 -f 1249//12 1256//186 1262//181 -f 1253//180 1254//176 1261//182 -f 1250//175 1251//178 1258//184 -f 1254//176 1255//179 1262//181 -f 1252//177 1259//187 1258//184 -f 1249//12 1250//175 1257//185 -f 1260//183 1268//2 1263//1 -f 1256//186 1264//14 1270//11 -f 1245//8 1263//1 1267//9 -f 1260//183 1261//182 1269//4 -f 1258//184 1266//3 1265//10 -f 1261//182 1262//181 1270//11 -f 1259//187 1267//9 1266//3 -f 1256//186 1257//185 1265//10 -f 1271//5 1279//174 1286//168 -f 1277//4 1285//172 1284//169 -f 1275//6 1283//8 1282//170 -f 1273//3 1281//173 1280//171 -f 1278//72 1286//168 1285//172 -f 1276//65 1284//169 1283//8 -f 1274//71 1282//170 1281//173 -f 1272//66 1280//171 1279//174 -f 1280//171 1281//173 1289//178 -f 1285//172 1286//168 1293//188 -f 1282//170 1290//177 1289//178 -f 1279//174 1280//171 1288//175 -f 1279//174 1287//12 1293//188 -f 1285//172 1292//176 1291//180 -f 1287//12 1294//186 1300//181 -f 1291//180 1292//176 1299//182 -f 1288//175 1289//178 1296//184 -f 1292//176 1293//188 1300//181 -f 1290//177 1297//187 1296//184 -f 1287//12 1288//175 1295//185 -f 1298//183 1306//2 1301//1 -f 1294//186 1302//14 1308//11 -f 1297//187 1283//8 1301//1 -f 1299//182 1307//4 1306//2 -f 1296//184 1304//3 1303//10 -f 1299//182 1300//181 1308//11 -f 1297//187 1305//9 1304//3 -f 1294//186 1295//185 1303//10 +f 195/519/27 210/232/28 194/520/28 +f 188/521/29 203/218/30 187/522/30 +f 196/523/31 211/235/27 195/519/27 +f 189/524/6 204/216/29 188/521/29 +f 197/525/5 212/234/31 196/523/31 +f 190/526/32 205/221/6 189/527/6 +f 198/528/33 213/236/5 197/525/5 +f 191/529/34 206/225/32 190/526/32 +f 199/530/35 214/240/33 198/528/33 +f 192/531/36 207/224/34 191/529/34 +f 200/532/37 215/243/35 199/530/35 +f 193/533/4 208/229/36 192/531/36 +f 186/534/38 201/244/3 185/535/3 +f 185/535/3 216/242/37 200/532/37 +f 194/520/28 209/228/4 193/533/4 +f 187/522/30 202/246/38 186/534/38 +f 229/536/6 328/537/29 228/538/29 +f 222/539/33 321/540/5 221/541/5 +f 230/542/32 329/543/6 229/536/6 +f 223/544/35 322/545/33 222/539/33 +f 231/546/34 330/547/32 230/542/32 +f 224/548/37 323/549/35 223/544/35 +f 232/550/36 331/551/34 231/546/34 +f 225/552/3 324/553/37 224/548/37 +f 218/554/28 317/555/4 217/556/4 +f 217/556/4 332/557/36 232/550/36 +f 226/558/38 325/559/3 225/552/3 +f 219/560/27 318/561/28 218/554/28 +f 227/562/30 326/563/38 226/558/38 +f 220/564/31 319/565/27 219/560/27 +f 228/538/29 327/566/30 227/562/30 +f 221/567/5 320/568/31 220/564/31 +f 361/569/5 376/570/39 368/571/27 +f 367/572/4 374/573/40 366/574/34 +f 365/575/6 372/576/41 364/577/30 +f 363/578/3 370/579/42 362/580/35 +f 368/571/27 375/581/43 367/572/4 +f 366/574/34 373/582/8 365/583/6 +f 364/577/30 371/584/44 363/578/3 +f 362/580/35 369/585/45 361/569/5 +f 370/586/42 379/587/46 378/588/47 +f 376/589/39 382/590/48 375/591/43 +f 371/592/44 380/593/49 379/587/46 +f 369/585/45 378/588/47 377/594/12 +f 376/589/39 377/594/12 383/595/50 +f 375/591/43 381/596/51 374/597/40 +f 383/595/50 384/598/52 390/599/53 +f 381/596/51 389/600/54 388/601/55 +f 378/588/47 386/602/56 385/603/57 +f 383/595/50 389/600/54 382/590/48 +f 380/593/49 386/602/56 379/587/46 +f 378/588/47 384/598/52 377/594/12 +f 372/604/41 373/605/8 380/593/49 +f 380/593/49 373/605/8 387/606/58 +f 374/597/40 381/596/51 373/607/8 +f 381/596/51 388/601/55 373/607/8 +f 388/608/55 391/609/1 373/610/8 +f 384/598/52 398/611/11 390/612/53 +f 373/613/8 395/614/9 387/615/58 +f 389/616/54 396/617/2 388/608/55 +f 386/618/56 393/619/10 385/620/57 +f 390/612/53 397/621/4 389/616/54 +f 387/615/58 394/622/3 386/618/56 +f 384/598/52 393/619/10 392/623/14 +f 399/624/5 414/625/39 406/626/27 +f 405/627/4 412/628/40 404/629/34 +f 403/630/6 410/631/41 402/632/30 +f 401/633/3 408/634/42 400/635/35 +f 406/626/27 413/636/43 405/627/4 +f 404/629/34 411/637/8 403/638/6 +f 402/632/30 409/639/44 401/633/3 +f 400/635/35 407/640/45 399/624/5 +f 408/641/42 417/642/46 416/643/47 +f 414/644/39 420/645/48 413/646/43 +f 409/647/44 418/648/49 417/642/46 +f 407/640/45 416/643/47 415/649/12 +f 407/640/45 421/650/50 414/644/39 +f 413/646/43 419/651/51 412/652/40 +f 421/650/50 422/653/52 428/654/53 +f 420/645/48 426/655/55 419/651/51 +f 417/642/46 423/656/57 416/643/47 +f 420/645/48 428/654/53 427/657/54 +f 418/648/49 424/658/56 417/642/46 +f 415/649/12 423/656/57 422/653/52 +f 410/659/41 411/660/8 418/648/49 +f 418/648/49 411/660/8 425/661/58 +f 412/652/40 419/651/51 411/662/8 +f 419/651/51 426/655/55 411/662/8 +f 426/663/55 429/664/1 411/665/8 +f 422/653/52 436/666/11 428/667/53 +f 411/668/8 433/669/9 425/670/58 +f 427/671/54 434/672/2 426/663/55 +f 424/673/56 431/674/10 423/675/57 +f 428/667/53 435/676/4 427/671/54 +f 425/670/58 432/677/3 424/673/56 +f 423/675/57 430/678/14 422/653/52 +f 437/679/6 452/680/59 444/681/30 +f 443/682/3 450/683/60 442/684/35 +f 441/685/5 448/686/61 440/687/27 +f 439/688/4 446/689/62 438/690/34 +f 444/681/30 451/691/63 443/682/3 +f 442/684/35 449/692/7 441/693/5 +f 440/687/27 447/694/64 439/688/4 +f 438/690/34 445/695/65 437/679/6 +f 446/696/62 455/697/66 454/698/67 +f 452/699/59 458/700/68 451/701/63 +f 447/702/64 456/703/69 455/697/66 +f 445/695/65 454/698/67 453/704/13 +f 452/699/59 453/704/13 459/705/70 +f 451/701/63 457/706/71 450/707/60 +f 459/705/70 460/708/72 466/709/73 +f 458/700/68 464/710/74 457/706/71 +f 454/698/67 462/711/75 461/712/76 +f 458/700/68 466/709/73 465/713/77 +f 456/703/69 462/711/75 455/697/66 +f 453/704/13 461/712/76 460/708/72 +f 448/714/61 449/715/7 456/703/69 +f 456/703/69 449/715/7 463/716/78 +f 450/707/60 457/706/71 449/717/7 +f 457/706/71 464/710/74 449/717/7 +f 464/718/74 467/719/1 449/720/7 +f 460/708/72 474/721/10 466/722/73 +f 449/723/7 471/724/2 463/725/78 +f 465/726/77 472/727/9 464/718/74 +f 462/728/75 469/729/11 461/730/76 +f 466/722/73 473/731/3 465/726/77 +f 463/725/78 470/732/4 462/728/75 +f 460/708/72 469/729/11 468/733/14 +f 475/734/6 490/735/59 482/736/30 +f 481/737/3 488/738/60 480/739/35 +f 479/740/5 486/741/61 478/742/27 +f 477/743/4 484/744/62 476/745/34 +f 482/736/30 489/746/63 481/737/3 +f 480/739/35 487/747/7 479/748/5 +f 478/742/27 485/749/64 477/743/4 +f 476/745/34 483/750/65 475/734/6 +f 484/751/62 493/752/66 492/753/67 +f 490/754/59 496/755/68 489/756/63 +f 485/757/64 494/758/69 493/752/66 +f 483/750/65 492/753/67 491/759/13 +f 483/750/65 497/760/79 490/754/59 +f 489/756/63 495/761/71 488/762/60 +f 497/760/79 498/763/72 504/764/73 +f 495/761/71 503/765/77 502/766/74 +f 493/752/66 499/767/76 492/753/67 +f 496/755/68 504/764/73 503/765/77 +f 494/758/69 500/768/75 493/752/66 +f 492/753/67 498/763/72 491/759/13 +f 486/769/61 487/770/7 494/758/69 +f 494/758/69 487/770/7 501/771/78 +f 488/762/60 495/761/71 487/772/7 +f 495/761/71 502/766/74 487/772/7 +f 502/773/74 505/774/1 487/775/7 +f 498/763/72 512/776/10 504/777/73 +f 487/778/7 509/779/2 501/780/78 +f 503/781/77 510/782/9 502/773/74 +f 500/783/75 507/784/11 499/785/76 +f 504/777/73 511/786/3 503/781/77 +f 501/780/78 508/787/4 500/783/75 +f 499/785/76 506/788/14 498/763/72 +f 513/789/3 528/790/80 520/791/35 +f 519/792/5 526/793/81 518/794/27 +f 517/795/4 524/796/82 516/797/34 +f 515/798/6 522/799/83 514/800/30 +f 520/791/35 527/801/84 519/792/5 +f 518/794/27 525/802/2 517/803/4 +f 516/797/34 523/804/85 515/798/6 +f 514/800/30 521/805/86 513/789/3 +f 522/806/83 531/807/87 530/808/88 +f 528/809/80 534/810/89 527/811/84 +f 523/812/85 532/813/90 531/807/87 +f 521/805/86 530/808/88 529/814/10 +f 528/809/80 529/814/10 535/815/91 +f 527/811/84 533/816/92 526/817/81 +f 535/815/91 536/818/93 542/819/94 +f 533/816/92 541/820/95 540/821/96 +f 530/808/88 538/822/97 537/823/98 +f 535/815/91 541/820/95 534/810/89 +f 532/813/90 538/822/97 531/807/87 +f 530/808/88 536/818/93 529/814/10 +f 524/824/82 525/825/2 532/813/90 +f 532/813/90 525/825/2 539/826/99 +f 526/817/81 533/816/92 525/827/2 +f 533/816/92 540/821/96 525/827/2 +f 540/828/96 543/829/1 525/830/2 +f 536/818/93 550/831/12 542/832/94 +f 525/833/2 547/834/8 539/835/99 +f 540/828/96 549/836/5 548/837/7 +f 537/838/98 546/839/6 545/840/13 +f 542/832/94 549/836/5 541/841/95 +f 539/835/99 546/839/6 538/842/97 +f 537/838/98 544/843/14 536/818/93 +f 551/844/3 566/845/80 558/846/35 +f 557/847/5 564/848/81 556/849/27 +f 555/850/4 562/851/82 554/852/34 +f 553/853/6 560/854/83 552/855/30 +f 558/846/35 565/856/84 557/847/5 +f 556/849/27 563/857/2 555/858/4 +f 554/852/34 561/859/85 553/853/6 +f 552/855/30 559/860/86 551/844/3 +f 560/861/83 569/862/87 568/863/88 +f 566/864/80 572/865/89 565/866/84 +f 561/867/85 570/868/90 569/862/87 +f 559/860/86 568/863/88 567/869/10 +f 559/860/86 573/870/91 566/864/80 +f 565/866/84 571/871/92 564/872/81 +f 573/870/91 574/873/93 580/874/94 +f 571/871/92 579/875/95 578/876/96 +f 569/862/87 575/877/98 568/863/88 +f 573/870/91 579/875/95 572/865/89 +f 569/862/87 577/878/99 576/879/97 +f 567/869/10 575/877/98 574/873/93 +f 562/880/82 563/881/2 570/868/90 +f 570/868/90 563/881/2 577/878/99 +f 564/872/81 571/871/92 563/882/2 +f 571/871/92 578/876/96 563/882/2 +f 578/883/96 581/884/1 563/885/2 +f 574/873/93 588/886/12 580/887/94 +f 563/888/2 585/889/8 577/890/99 +f 579/891/95 586/892/7 578/883/96 +f 576/893/97 583/894/13 575/895/98 +f 580/887/94 587/896/5 579/891/95 +f 577/890/99 584/897/6 576/893/97 +f 575/895/98 582/898/14 574/873/93 +f 589/899/4 604/900/100 596/901/34 +f 595/902/6 602/903/101 594/904/30 +f 593/905/3 600/906/102 592/907/35 +f 591/908/5 598/909/103 590/910/27 +f 596/901/34 603/911/104 595/902/6 +f 594/904/30 601/912/9 593/913/3 +f 592/907/35 599/914/105 591/908/5 +f 590/910/27 597/915/106 589/899/4 +f 598/916/103 607/917/107 606/918/108 +f 603/919/104 611/920/109 610/921/110 +f 599/922/105 608/923/111 607/917/107 +f 597/915/106 606/918/108 605/924/11 +f 597/915/106 611/920/109 604/925/100 +f 603/919/104 609/926/112 602/927/101 +f 611/920/109 612/928/113 618/929/114 +f 610/921/110 616/930/115 609/926/112 +f 606/918/108 614/931/116 613/932/117 +f 610/921/110 618/929/114 617/933/118 +f 608/923/111 614/931/116 607/917/107 +f 606/918/108 612/928/113 605/924/11 +f 600/934/102 601/935/9 608/923/111 +f 608/923/111 601/935/9 615/936/119 +f 602/927/101 609/926/112 601/937/9 +f 609/926/112 616/930/115 601/937/9 +f 616/938/115 619/939/1 601/940/9 +f 612/928/113 626/941/13 618/942/114 +f 601/943/9 623/944/7 615/945/119 +f 617/946/118 624/947/8 616/938/115 +f 614/948/116 621/949/12 613/950/117 +f 617/946/118 626/941/13 625/951/6 +f 615/945/119 622/952/5 614/948/116 +f 612/928/113 621/949/12 620/953/14 +f 627/954/4 642/955/100 634/956/34 +f 633/957/6 640/958/101 632/959/30 +f 631/960/3 638/961/102 630/962/35 +f 629/963/5 636/964/103 628/965/27 +f 634/956/34 641/966/104 633/957/6 +f 632/959/30 639/967/9 631/968/3 +f 630/962/35 637/969/105 629/963/5 +f 628/965/27 635/970/106 627/954/4 +f 636/971/103 645/972/107 644/973/108 +f 642/974/100 648/975/110 641/976/104 +f 637/977/105 646/978/111 645/972/107 +f 635/970/106 644/973/108 643/979/11 +f 635/970/106 649/980/109 642/974/100 +f 641/976/104 647/981/112 640/982/101 +f 649/980/109 650/983/113 656/984/114 +f 647/981/112 655/985/118 654/986/115 +f 645/972/107 651/987/117 644/973/108 +f 648/975/110 656/984/114 655/985/118 +f 646/978/111 652/988/116 645/972/107 +f 643/979/11 651/987/117 650/983/113 +f 638/989/102 639/990/9 646/978/111 +f 646/978/111 639/990/9 653/991/119 +f 640/982/101 647/981/112 639/992/9 +f 647/981/112 654/986/115 639/992/9 +f 654/993/115 657/994/1 639/995/9 +f 650/983/113 664/996/13 656/997/114 +f 639/998/9 661/999/7 653/1000/119 +f 655/1001/118 662/1002/8 654/993/115 +f 652/1003/116 659/1004/12 651/1005/117 +f 656/997/114 663/1006/6 655/1001/118 +f 653/1000/119 660/1007/5 652/1003/116 +f 651/1005/117 658/1008/14 650/983/113 +f 195/519/27 211/235/27 210/232/28 +f 188/521/29 204/216/29 203/218/30 +f 196/523/31 212/234/31 211/235/27 +f 189/524/6 205/219/6 204/216/29 +f 197/525/5 213/236/5 212/234/31 +f 190/526/32 206/225/32 205/221/6 +f 198/528/33 214/240/33 213/236/5 +f 191/529/34 207/224/34 206/225/32 +f 199/530/35 215/243/35 214/240/33 +f 192/531/36 208/229/36 207/224/34 +f 200/532/37 216/242/37 215/243/35 +f 193/533/4 209/228/4 208/229/36 +f 186/534/38 202/246/38 201/244/3 +f 185/535/3 201/244/3 216/242/37 +f 194/520/28 210/232/28 209/228/4 +f 187/522/30 203/218/30 202/246/38 +f 229/536/6 329/543/6 328/537/29 +f 222/539/33 322/545/33 321/540/5 +f 230/542/32 330/547/32 329/543/6 +f 223/544/35 323/549/35 322/545/33 +f 231/546/34 331/551/34 330/547/32 +f 224/548/37 324/553/37 323/549/35 +f 232/550/36 332/557/36 331/551/34 +f 225/552/3 325/559/3 324/553/37 +f 218/554/28 318/561/28 317/555/4 +f 217/556/4 317/555/4 332/557/36 +f 226/558/38 326/563/38 325/559/3 +f 219/560/27 319/565/27 318/561/28 +f 227/562/30 327/566/30 326/563/38 +f 220/564/31 320/568/31 319/565/27 +f 228/538/29 328/537/29 327/566/30 +f 221/567/5 321/1009/5 320/568/31 +f 361/569/5 369/585/45 376/570/39 +f 367/572/4 375/581/43 374/573/40 +f 365/575/6 373/1010/8 372/576/41 +f 363/578/3 371/584/44 370/579/42 +f 368/571/27 376/570/39 375/581/43 +f 366/574/34 374/573/40 373/582/8 +f 364/577/30 372/576/41 371/584/44 +f 362/580/35 370/579/42 369/585/45 +f 370/586/42 371/592/44 379/587/46 +f 376/589/39 383/595/50 382/590/48 +f 371/592/44 372/604/41 380/593/49 +f 369/585/45 370/586/42 378/588/47 +f 376/589/39 369/585/45 377/594/12 +f 375/591/43 382/590/48 381/596/51 +f 383/595/50 377/594/12 384/598/52 +f 381/596/51 382/590/48 389/600/54 +f 378/588/47 379/587/46 386/602/56 +f 383/595/50 390/599/53 389/600/54 +f 380/593/49 387/606/58 386/602/56 +f 378/588/47 385/603/57 384/598/52 +f 388/608/55 396/617/2 391/609/1 +f 384/598/52 392/623/14 398/611/11 +f 373/613/8 391/1011/1 395/614/9 +f 389/616/54 397/621/4 396/617/2 +f 386/618/56 394/622/3 393/619/10 +f 390/612/53 398/611/11 397/621/4 +f 387/615/58 395/614/9 394/622/3 +f 384/598/52 385/620/57 393/619/10 +f 399/624/5 407/640/45 414/625/39 +f 405/627/4 413/636/43 412/628/40 +f 403/630/6 411/1012/8 410/631/41 +f 401/633/3 409/639/44 408/634/42 +f 406/626/27 414/625/39 413/636/43 +f 404/629/34 412/628/40 411/637/8 +f 402/632/30 410/631/41 409/639/44 +f 400/635/35 408/634/42 407/640/45 +f 408/641/42 409/647/44 417/642/46 +f 414/644/39 421/650/50 420/645/48 +f 409/647/44 410/659/41 418/648/49 +f 407/640/45 408/641/42 416/643/47 +f 407/640/45 415/649/12 421/650/50 +f 413/646/43 420/645/48 419/651/51 +f 421/650/50 415/649/12 422/653/52 +f 420/645/48 427/657/54 426/655/55 +f 417/642/46 424/658/56 423/656/57 +f 420/645/48 421/650/50 428/654/53 +f 418/648/49 425/661/58 424/658/56 +f 415/649/12 416/643/47 423/656/57 +f 426/663/55 434/672/2 429/664/1 +f 422/653/52 430/678/14 436/666/11 +f 411/668/8 429/1013/1 433/669/9 +f 427/671/54 435/676/4 434/672/2 +f 424/673/56 432/677/3 431/674/10 +f 428/667/53 436/666/11 435/676/4 +f 425/670/58 433/669/9 432/677/3 +f 423/675/57 431/674/10 430/678/14 +f 437/679/6 445/695/65 452/680/59 +f 443/682/3 451/691/63 450/683/60 +f 441/685/5 449/1014/7 448/686/61 +f 439/688/4 447/694/64 446/689/62 +f 444/681/30 452/680/59 451/691/63 +f 442/684/35 450/683/60 449/692/7 +f 440/687/27 448/686/61 447/694/64 +f 438/690/34 446/689/62 445/695/65 +f 446/696/62 447/702/64 455/697/66 +f 452/699/59 459/705/70 458/700/68 +f 447/702/64 448/714/61 456/703/69 +f 445/695/65 446/696/62 454/698/67 +f 452/699/59 445/695/65 453/704/13 +f 451/701/63 458/700/68 457/706/71 +f 459/705/70 453/704/13 460/708/72 +f 458/700/68 465/713/77 464/710/74 +f 454/698/67 455/697/66 462/711/75 +f 458/700/68 459/705/70 466/709/73 +f 456/703/69 463/716/78 462/711/75 +f 453/704/13 454/698/67 461/712/76 +f 464/718/74 472/727/9 467/719/1 +f 460/708/72 468/733/14 474/721/10 +f 449/723/7 467/1015/1 471/724/2 +f 465/726/77 473/731/3 472/727/9 +f 462/728/75 470/732/4 469/729/11 +f 466/722/73 474/721/10 473/731/3 +f 463/725/78 471/724/2 470/732/4 +f 460/708/72 461/730/76 469/729/11 +f 475/734/6 483/750/65 490/735/59 +f 481/737/3 489/746/63 488/738/60 +f 479/740/5 487/1016/7 486/741/61 +f 477/743/4 485/749/64 484/744/62 +f 482/736/30 490/735/59 489/746/63 +f 480/739/35 488/738/60 487/747/7 +f 478/742/27 486/741/61 485/749/64 +f 476/745/34 484/744/62 483/750/65 +f 484/751/62 485/757/64 493/752/66 +f 490/754/59 497/760/79 496/755/68 +f 485/757/64 486/769/61 494/758/69 +f 483/750/65 484/751/62 492/753/67 +f 483/750/65 491/759/13 497/760/79 +f 489/756/63 496/755/68 495/761/71 +f 497/760/79 491/759/13 498/763/72 +f 495/761/71 496/755/68 503/765/77 +f 493/752/66 500/768/75 499/767/76 +f 496/755/68 497/760/79 504/764/73 +f 494/758/69 501/771/78 500/768/75 +f 492/753/67 499/767/76 498/763/72 +f 502/773/74 510/782/9 505/774/1 +f 498/763/72 506/788/14 512/776/10 +f 487/778/7 505/1017/1 509/779/2 +f 503/781/77 511/786/3 510/782/9 +f 500/783/75 508/787/4 507/784/11 +f 504/777/73 512/776/10 511/786/3 +f 501/780/78 509/779/2 508/787/4 +f 499/785/76 507/784/11 506/788/14 +f 513/789/3 521/805/86 528/790/80 +f 519/792/5 527/801/84 526/793/81 +f 517/795/4 525/1018/2 524/796/82 +f 515/798/6 523/804/85 522/799/83 +f 520/791/35 528/790/80 527/801/84 +f 518/794/27 526/793/81 525/802/2 +f 516/797/34 524/796/82 523/804/85 +f 514/800/30 522/799/83 521/805/86 +f 522/806/83 523/812/85 531/807/87 +f 528/809/80 535/815/91 534/810/89 +f 523/812/85 524/824/82 532/813/90 +f 521/805/86 522/806/83 530/808/88 +f 528/809/80 521/805/86 529/814/10 +f 527/811/84 534/810/89 533/816/92 +f 535/815/91 529/814/10 536/818/93 +f 533/816/92 534/810/89 541/820/95 +f 530/808/88 531/807/87 538/822/97 +f 535/815/91 542/819/94 541/820/95 +f 532/813/90 539/826/99 538/822/97 +f 530/808/88 537/823/98 536/818/93 +f 540/828/96 548/837/7 543/829/1 +f 536/818/93 544/843/14 550/831/12 +f 525/833/2 543/1019/1 547/834/8 +f 540/828/96 541/841/95 549/836/5 +f 537/838/98 538/842/97 546/839/6 +f 542/832/94 550/831/12 549/836/5 +f 539/835/99 547/834/8 546/839/6 +f 537/838/98 545/840/13 544/843/14 +f 551/844/3 559/860/86 566/845/80 +f 557/847/5 565/856/84 564/848/81 +f 555/850/4 563/1020/2 562/851/82 +f 553/853/6 561/859/85 560/854/83 +f 558/846/35 566/845/80 565/856/84 +f 556/849/27 564/848/81 563/857/2 +f 554/852/34 562/851/82 561/859/85 +f 552/855/30 560/854/83 559/860/86 +f 560/861/83 561/867/85 569/862/87 +f 566/864/80 573/870/91 572/865/89 +f 561/867/85 562/880/82 570/868/90 +f 559/860/86 560/861/83 568/863/88 +f 559/860/86 567/869/10 573/870/91 +f 565/866/84 572/865/89 571/871/92 +f 573/870/91 567/869/10 574/873/93 +f 571/871/92 572/865/89 579/875/95 +f 569/862/87 576/879/97 575/877/98 +f 573/870/91 580/874/94 579/875/95 +f 569/862/87 570/868/90 577/878/99 +f 567/869/10 568/863/88 575/877/98 +f 578/883/96 586/892/7 581/884/1 +f 574/873/93 582/898/14 588/886/12 +f 563/888/2 581/1021/1 585/889/8 +f 579/891/95 587/896/5 586/892/7 +f 576/893/97 584/897/6 583/894/13 +f 580/887/94 588/886/12 587/896/5 +f 577/890/99 585/889/8 584/897/6 +f 575/895/98 583/894/13 582/898/14 +f 589/899/4 597/915/106 604/900/100 +f 595/902/6 603/911/104 602/903/101 +f 593/905/3 601/1022/9 600/906/102 +f 591/908/5 599/914/105 598/909/103 +f 596/901/34 604/900/100 603/911/104 +f 594/904/30 602/903/101 601/912/9 +f 592/907/35 600/906/102 599/914/105 +f 590/910/27 598/909/103 597/915/106 +f 598/916/103 599/922/105 607/917/107 +f 603/919/104 604/925/100 611/920/109 +f 599/922/105 600/934/102 608/923/111 +f 597/915/106 598/916/103 606/918/108 +f 597/915/106 605/924/11 611/920/109 +f 603/919/104 610/921/110 609/926/112 +f 611/920/109 605/924/11 612/928/113 +f 610/921/110 617/933/118 616/930/115 +f 606/918/108 607/917/107 614/931/116 +f 610/921/110 611/920/109 618/929/114 +f 608/923/111 615/936/119 614/931/116 +f 606/918/108 613/932/117 612/928/113 +f 616/938/115 624/947/8 619/939/1 +f 612/928/113 620/953/14 626/941/13 +f 601/943/9 619/1023/1 623/944/7 +f 617/946/118 625/951/6 624/947/8 +f 614/948/116 622/952/5 621/949/12 +f 617/946/118 618/942/114 626/941/13 +f 615/945/119 623/944/7 622/952/5 +f 612/928/113 613/950/117 621/949/12 +f 627/954/4 635/970/106 642/955/100 +f 633/957/6 641/966/104 640/958/101 +f 631/960/3 639/1024/9 638/961/102 +f 629/963/5 637/969/105 636/964/103 +f 634/956/34 642/955/100 641/966/104 +f 632/959/30 640/958/101 639/967/9 +f 630/962/35 638/961/102 637/969/105 +f 628/965/27 636/964/103 635/970/106 +f 636/971/103 637/977/105 645/972/107 +f 642/974/100 649/980/109 648/975/110 +f 637/977/105 638/989/102 646/978/111 +f 635/970/106 636/971/103 644/973/108 +f 635/970/106 643/979/11 649/980/109 +f 641/976/104 648/975/110 647/981/112 +f 649/980/109 643/979/11 650/983/113 +f 647/981/112 648/975/110 655/985/118 +f 645/972/107 652/988/116 651/987/117 +f 648/975/110 649/980/109 656/984/114 +f 646/978/111 653/991/119 652/988/116 +f 643/979/11 644/973/108 651/987/117 +f 654/993/115 662/1002/8 657/994/1 +f 650/983/113 658/1008/14 664/996/13 +f 639/998/9 657/1025/1 661/999/7 +f 655/1001/118 663/1006/6 662/1002/8 +f 652/1003/116 660/1007/5 659/1004/12 +f 656/997/114 664/996/13 663/1006/6 +f 653/1000/119 661/999/7 660/1007/5 +f 651/1005/117 659/1004/12 658/1008/14 diff --git a/src/main/resources/assets/hbm/textures/gui/processing/gui_coker.png b/src/main/resources/assets/hbm/textures/gui/processing/gui_coker.png index 221c215fb74287c0f3ad3ca88a4afb2bb8645a66..3a8854ed2768853df66d70e7e47b8ea03e8c0153 100644 GIT binary patch literal 2153 zcmb7F2~<;88opU1VJSh8Q4malf)frPjItP-1Y`$+f;SvA<44T3KS_K+Hl4>KN0eN(s-Eff8;U8TR0n4>$#0rr><1q z`JrugrP%{#aUx8%L>0*-6FZcvj~6x53`i?eWp^^0?@Dej%EjcceIe(AvlI#;@tzj^ zS-ka^7P%}Yv0ZL%LO$inkgJW|FMgvCg;doITrO)Ac6PcRYzSr})vPCV_y)Py87r|4 zn0Ud$D9e0#M5ehs`6rKf+MF<2)-k^&)T?F(6)%w|^Q1OAzE75=e(%cSL6@CFcAdC3 z^{3!@wwtU&q(N&LN;@lT>AgC;*dX#~zb|e-zy@?Y8ld+9$8b1+H>r9Iwq0LsY0<`v zsR6h)&?*6RJ`x~J!N*oGkfXC;I~Jx)Ihv5))FhDn+JVx(S(+l*HG5i>UKEfaEg(C* zS*6jI<{W6sF+W=N(_Ye>@y4u8FSoyDIQhdk%lUSTqJ52mG0gMxRJH-?JLBp%`zs844RtK4-G=`D_>uWRyQmRSf)naG=+!vXxK~zWDhNlW+|*n1OqXK@8EQ|+J<763bqr6 z^t5ga=)t967|J|Ran2T%ou8YIja05}p34!u04_~y! z-!2tZLvXv5`%{dhjJeZlbZS(obwSw^G`s%{VUxK#tIpXUX7!-$u+X_+%}`X zIKtij<;?m|S|e*eg;Whf(XT~smyfXP5#cP|x)ZWT-Vsyr5OS-nO}2!tmFEo{R9}TD zoUifYNn#5m;ZW3(8Mn%pkhYhhn^dqSTde;P3 ziFi;Qha6@R=xfSG&@AcOa-`$y?7hdqKU4HJYU}4^Q&3p65$O30A}6z66Rf9z6sGIq zpi*3e$+5i$o$Ni6o3+97zPrw>1LS=`e_XSbY!?TO!<{_%yH8{2D;x}1!4bjFtrpV_drRCBVVon_a4LVB!ixDM z4w->PV5`YKAokU{VEYgo7-!EIb(5wh`D+mC(EJPiq(ny-Xg1J4J)OA)bi2Rx2lZ{h z28%vuylN>dDx*IV^pfUC?eZR)^yX{Eot{L^FKCI0*3J*pZxXbc|G5A}L4!}7I#=WR zL*8t(F$g)ZU>D&--99i95Bc_5qkq*fTI4_OV{&^U@?xGw{0)|W`<4myTrN1~lg>6-6c@H6+pkKlT)%Pa$Kd$xe zl>^Oo>~8T+O!l$KBnG>&anL_%9^YF*aJa51UY)?8LM@9?gj~{H?A@_WjIHdx`39%GTPEOwPyLc8~ROgLbq>k1UWh=&SG0~TNRVlW9NFI;p zg{x{l*btDhKj<@!gv@mefSGl&oIZ4^| z%kK5<_tQ%pj|Jy00_HDBu+w6h+W04m(?KzLrCh~Q3~ZpXTFjbhV8RR8Zd~(WA=++{bHbEcGME=!YHAP^!7IsjcT~as)Jq07dq7SoyW>eG`umlpTAca( z#X7SLrc-)iqYm>CLpYVKn!TlLft~cKHHGLx$>mFD8=U4Cth@Z{&-s0Hpgk%n$sOG8j4W>>w`nnl=@mMXUC zob``binaujkD^YcjHBzuS|%VdtJCiIb&%@A0%5U}d+kQ)felZOcRl=uVlVZcz^cCD!nLk;LHv=L#n@41a%oU89GD{ELi2pZth$Z0YtH(ovY@1Fn*PcRLh zQZdH@4bv}kR;A2C_LAB^9}r<~=ZS0Xx>INqvGJ6#DjM}@p9}82I?ZhR&H9@u+9x~;>&OLEX}sfvwhVecolOb zE|f~8<{V*F@ROD%`)?0jA5bad1S4@t_tD(OMoS`**g@#-8G2bDO^Jd1)%X6x5?_aO zmJkQ63rD0<=`ilF;gEpiVR5v+KW4AROxjLvo@+j$K48(NTu0k# zl%6A8b|k^O_y+$p+tgj`_RR1voS5w+BO{?U$c|Xxm@9@;yW@0i iOK+oB+vu&H=}LWs>A9+*wLSjoJZ}%bJvHu>)4u{xj8A$1 diff --git a/src/main/resources/assets/hbm/textures/models/machines/coker.png b/src/main/resources/assets/hbm/textures/models/machines/coker.png new file mode 100644 index 0000000000000000000000000000000000000000..3c0bf7e5ba40c0b44f804719effcfb823ab932da GIT binary patch literal 8597 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 F{$Bz3uciP1 literal 0 HcmV?d00001 From 30e2fef6b8d7ed35b284bb328919987a80cbe9af Mon Sep 17 00:00:00 2001 From: Bob Date: Sun, 30 Apr 2023 17:03:33 +0200 Subject: [PATCH 16/40] finished coker, tau remodel, biden blast --- .../com/hbm/blocks/machine/MachineCoker.java | 16 +- .../java/com/hbm/crafting/WeaponRecipes.java | 2 +- .../entity/projectile/EntityBulletBase.java | 16 + .../hbm/handler/BulletConfigSyncingUtil.java | 15 + .../com/hbm/handler/BulletConfiguration.java | 1 + .../com/hbm/handler/GunConfiguration.java | 1 + .../hbm/handler/guncfg/Gun12GaugeFactory.java | 45 +- .../hbm/handler/guncfg/GunGaussFactory.java | 25 +- .../inventory/recipes/AssemblerRecipes.java | 1 + .../hbm/inventory/recipes/CokerRecipes.java | 49 +- .../inventory/recipes/FractionRecipes.java | 29 +- src/main/java/com/hbm/items/ModItems.java | 3 + .../com/hbm/items/weapon/ItemGunBase.java | 6 +- .../com/hbm/items/weapon/ItemGunGauss.java | 15 +- src/main/java/com/hbm/lib/HbmCollection.java | 4 + src/main/java/com/hbm/lib/RefStrings.java | 2 +- src/main/java/com/hbm/main/ClientProxy.java | 3 +- .../com/hbm/main/ModEventHandlerRenderer.java | 8 +- .../java/com/hbm/main/ResourceManager.java | 4 + .../java/com/hbm/packet/PermaSyncHandler.java | 25 + .../entity/projectile/RenderBullet.java | 124 +- .../weapon/ItemRenderWeaponRemington.java | 108 + .../item/weapon/ItemRenderWeaponSpas12.java | 1 - .../item/weapon/ItemRenderWeaponTau.java | 116 + .../render/item/weapon/ItemRenderXVL1456.java | 75 - .../machine/TileEntityCrucible.java | 3 +- .../machine/oil/TileEntityMachineCoker.java | 10 + .../turret/TileEntityTurretBaseNT.java | 16 +- .../turret/TileEntityTurretFritz.java | 34 +- src/main/resources/assets/hbm/lang/de_DE.lang | 10 +- src/main/resources/assets/hbm/lang/en_US.lang | 7 +- .../assets/hbm/models/weapons/remington.obj | 1397 +++++ .../assets/hbm/models/weapons/tau.obj | 5293 +++++++++++++++++ .../models/tank/tank_CHOLERSTEROL.png | Bin 0 -> 1250 bytes .../hbm/textures/models/tank/tank_EGG.png | Bin 0 -> 1032 bytes .../textures/models/tank/tank_ESTRADIOL.png | Bin 0 -> 1310 bytes .../textures/models/tank/tank_GAS_COKER.png | Bin 0 -> 1258 bytes .../models/tank/tank_NAPHTHA_COKER.png | Bin 0 -> 1122 bytes .../textures/models/tank/tank_OIL_COKER.png | Bin 0 -> 1009 bytes .../hbm/textures/models/weapons/remington.png | Bin 0 -> 10514 bytes 40 files changed, 7286 insertions(+), 178 deletions(-) create mode 100644 src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponRemington.java create mode 100644 src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponTau.java delete mode 100644 src/main/java/com/hbm/render/item/weapon/ItemRenderXVL1456.java create mode 100644 src/main/resources/assets/hbm/models/weapons/remington.obj create mode 100644 src/main/resources/assets/hbm/models/weapons/tau.obj create mode 100644 src/main/resources/assets/hbm/textures/models/tank/tank_CHOLERSTEROL.png create mode 100644 src/main/resources/assets/hbm/textures/models/tank/tank_EGG.png create mode 100644 src/main/resources/assets/hbm/textures/models/tank/tank_ESTRADIOL.png create mode 100644 src/main/resources/assets/hbm/textures/models/tank/tank_GAS_COKER.png create mode 100644 src/main/resources/assets/hbm/textures/models/tank/tank_NAPHTHA_COKER.png create mode 100644 src/main/resources/assets/hbm/textures/models/tank/tank_OIL_COKER.png create mode 100644 src/main/resources/assets/hbm/textures/models/weapons/remington.png diff --git a/src/main/java/com/hbm/blocks/machine/MachineCoker.java b/src/main/java/com/hbm/blocks/machine/MachineCoker.java index e79ee0537..695698016 100644 --- a/src/main/java/com/hbm/blocks/machine/MachineCoker.java +++ b/src/main/java/com/hbm/blocks/machine/MachineCoker.java @@ -1,17 +1,21 @@ package com.hbm.blocks.machine; +import java.util.List; + import com.hbm.blocks.BlockDummyable; +import com.hbm.blocks.ITooltipProvider; import com.hbm.handler.MultiblockHandlerXR; import com.hbm.tileentity.TileEntityProxyCombo; import com.hbm.tileentity.machine.oil.TileEntityMachineCoker; 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 net.minecraftforge.common.util.ForgeDirection; -public class MachineCoker extends BlockDummyable { +public class MachineCoker extends BlockDummyable implements ITooltipProvider { public MachineCoker(Material mat) { super(mat); @@ -21,8 +25,7 @@ public class MachineCoker extends BlockDummyable { public TileEntity createNewTileEntity(World world, int meta) { if(meta >= 12) return new TileEntityMachineCoker(); - if(meta >= 6) return new TileEntityProxyCombo().inventory().fluid(); - + if(meta >= extra) return new TileEntityProxyCombo().inventory().fluid(); return null; } @@ -38,7 +41,7 @@ public class MachineCoker extends BlockDummyable { @Override public int getOffset() { - return 2; + return 1; } @Override @@ -76,4 +79,9 @@ public class MachineCoker extends BlockDummyable { this.makeExtra(world, x - 1, y, z + 1); this.makeExtra(world, x - 1, y, z - 1); } + + @Override + public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean ext) { + this.addStandardInfo(stack, player, list, ext); + } } diff --git a/src/main/java/com/hbm/crafting/WeaponRecipes.java b/src/main/java/com/hbm/crafting/WeaponRecipes.java index 9b740413a..72585ccb7 100644 --- a/src/main/java/com/hbm/crafting/WeaponRecipes.java +++ b/src/main/java/com/hbm/crafting/WeaponRecipes.java @@ -156,6 +156,7 @@ public class WeaponRecipes { CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_fireext, 1), new Object[] { "HB", " T", 'H', ModItems.hull_small_steel, 'B', ModItems.bolt_tungsten, 'T', ModItems.tank_steel }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_spas12, 1), new Object[] { "TPS", "HHR", " L", 'T', ModItems.bolt_tungsten, 'P', STEEL.plate(), 'S', STEEL.ingot(), 'H', ModItems.hull_small_steel, '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 }); //Ammo assemblies CraftingManager.addRecipeAuto(new ItemStack(ModItems.pellet_flechette, 1), new Object[] { " L ", " L ", "LLL", 'L', PB.nugget() }); @@ -187,7 +188,6 @@ public class WeaponRecipes { CraftingManager.addRecipeAuto(new ItemStack(ModItems.ammo_12gauge, 12), new Object[] { " I ", "GCL", " P ", 'I', ModItems.pellet_buckshot, 'G', ModItems.ballistite, 'C', ModItems.casing_buckshot, 'P', ModItems.primer_buckshot, 'L', ModItems.plate_polymer }); CraftingManager.addRecipeAuto(ModItems.ammo_12gauge.stackFromEnum(12, Ammo12Gauge.PERCUSSION), new Object[] { "G", "C", "P", 'G', ModItems.ballistite, 'C', ModItems.casing_buckshot, 'P', ModItems.primer_buckshot }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.ammo_4gauge, 12), new Object[] { " I ", "GCL", " P ", 'I', ModItems.pellet_buckshot, 'G', ModItems.cordite, 'C', ModItems.casing_50, 'P', ModItems.primer_50, 'L', ModItems.plate_polymer }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.ammo_4gauge, 12), new Object[] { " I ", "GCL", " P ", 'I', ModItems.pellet_buckshot, 'G', ModItems.ballistite, 'C', ModItems.casing_50, 'P', ModItems.primer_50, 'L', ModItems.plate_polymer }); CraftingManager.addRecipeAuto(ModItems.ammo_4gauge.stackFromEnum(12, Ammo4Gauge.SLUG), new Object[] { " I ", "GCL", " P ", 'I', PB.ingot(), 'G', ANY_SMOKELESS.dust(), 'C', ModItems.casing_50, 'P', ModItems.primer_50, 'L', ModItems.plate_polymer }); CraftingManager.addRecipeAuto(ModItems.ammo_4gauge.stackFromEnum(12, Ammo4Gauge.FLECHETTE), new Object[] { " I ", "GCL", " P ", 'I', ModItems.pellet_flechette, 'G', ANY_SMOKELESS.dust(), 'C', ModItems.casing_50, 'P', ModItems.primer_50, 'L', ModItems.plate_polymer }); CraftingManager.addRecipeAuto(ModItems.ammo_4gauge.stackFromEnum(4, Ammo4Gauge.EXPLOSIVE), new Object[] { " I ", "GCL", " P ", 'I', ModBlocks.tnt, 'G', ANY_SMOKELESS.dust(), 'C', ModItems.casing_50, 'P', ModItems.primer_50, 'L', ModItems.plate_polymer }); diff --git a/src/main/java/com/hbm/entity/projectile/EntityBulletBase.java b/src/main/java/com/hbm/entity/projectile/EntityBulletBase.java index 81e67cac1..76f9340b0 100644 --- a/src/main/java/com/hbm/entity/projectile/EntityBulletBase.java +++ b/src/main/java/com/hbm/entity/projectile/EntityBulletBase.java @@ -1,6 +1,7 @@ package com.hbm.entity.projectile; import java.lang.reflect.Field; +import java.util.ArrayList; import java.util.List; import com.hbm.blocks.ModBlocks; @@ -22,6 +23,7 @@ import com.hbm.packet.PacketDispatcher; import com.hbm.potion.HbmPotion; import com.hbm.util.ArmorUtil; import com.hbm.util.BobMathUtil; +import com.hbm.util.Tuple.Pair; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import cpw.mods.fml.relauncher.ReflectionHelper; @@ -50,6 +52,11 @@ public class EntityBulletBase extends Entity implements IProjectile { private BulletConfiguration config; public EntityLivingBase shooter; public float overrideDamage; + + public double prevRenderX; + public double prevRenderY; + public double prevRenderZ; + public final List> trailNodes = new ArrayList(); public BulletConfiguration getConfig() { return config; @@ -236,6 +243,15 @@ public class EntityBulletBase extends Entity implements IProjectile { return; } + if(worldObj.isRemote && config.style == config.STYLE_TAU) { + if(trailNodes.isEmpty()) { + this.ignoreFrustumCheck = true; + trailNodes.add(new Pair(Vec3.createVectorHelper(-motionX * 2, -motionY * 2, -motionZ * 2), 0D)); + } else { + trailNodes.add(new Pair(Vec3.createVectorHelper(0, 0, 0), 1D)); + } + } + if(this.config.blackPowder && this.ticksExisted == 1) { for(int i = 0; i < 15; i++) { diff --git a/src/main/java/com/hbm/handler/BulletConfigSyncingUtil.java b/src/main/java/com/hbm/handler/BulletConfigSyncingUtil.java index 06d4afa91..7e7af9633 100644 --- a/src/main/java/com/hbm/handler/BulletConfigSyncingUtil.java +++ b/src/main/java/com/hbm/handler/BulletConfigSyncingUtil.java @@ -77,6 +77,14 @@ public class BulletConfigSyncingUtil { 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++; @@ -359,6 +367,13 @@ public class BulletConfigSyncingUtil { 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()); diff --git a/src/main/java/com/hbm/handler/BulletConfiguration.java b/src/main/java/com/hbm/handler/BulletConfiguration.java index 71c208daa..a55ffe030 100644 --- a/src/main/java/com/hbm/handler/BulletConfiguration.java +++ b/src/main/java/com/hbm/handler/BulletConfiguration.java @@ -137,6 +137,7 @@ public class BulletConfiguration implements Cloneable { public static final int STYLE_APDS = 14; public static final int STYLE_BLADE = 15; public static final int STYLE_BARREL = 16; + public static final int STYLE_TAU = 17; public static final int PLINK_NONE = 0; public static final int PLINK_BULLET = 1; diff --git a/src/main/java/com/hbm/handler/GunConfiguration.java b/src/main/java/com/hbm/handler/GunConfiguration.java index 87f6f9b2f..43a21ce01 100644 --- a/src/main/java/com/hbm/handler/GunConfiguration.java +++ b/src/main/java/com/hbm/handler/GunConfiguration.java @@ -52,6 +52,7 @@ public class GunConfiguration implements Cloneable { public String reloadSound = ""; //sound path to the shooting sound public String firingSound = ""; + public float firingVolume = 1.0F; public float firingPitch = 1.0F; //whether the reload sound should be played at the beginning or at the end of the reload public boolean reloadSoundEnd = true; diff --git a/src/main/java/com/hbm/handler/guncfg/Gun12GaugeFactory.java b/src/main/java/com/hbm/handler/guncfg/Gun12GaugeFactory.java index 12bf84902..e5f851c48 100644 --- a/src/main/java/com/hbm/handler/guncfg/Gun12GaugeFactory.java +++ b/src/main/java/com/hbm/handler/guncfg/Gun12GaugeFactory.java @@ -48,6 +48,44 @@ public class Gun12GaugeFactory { 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() + .addKeyframe(new BusAnimationKeyframe(0, 0, -2, 100)) + .addKeyframe(new BusAnimationKeyframe(0, 0, 0, 200)) + ) + .addBus("PUMP", new BusAnimationSequence() + .addKeyframe(new BusAnimationKeyframe(0, 0, 0, 450)) + .addKeyframe(new BusAnimationKeyframe(0, 0, -1.8, 200)) + .addKeyframe(new BusAnimationKeyframe(0, 0, 0, 200)) + ) + ); + + config.ejector = EJECTOR_SPAS; + return config; + } public static GunConfiguration getSpas12Config() { @@ -109,7 +147,7 @@ public class Gun12GaugeFactory { config.firingSound = "hbm:weapon.shotgunPump"; config.reloadType = GunConfiguration.RELOAD_SINGLE; - config.config = HbmCollection.g12; + config.config = HbmCollection.g12hs; config.ejector = EJECTOR_SPAS_ALT; @@ -137,7 +175,7 @@ public class Gun12GaugeFactory { config.name = "uboinik"; config.manufacturer = EnumGunManufacturer.METRO; - config.config = HbmCollection.g12; + config.config = HbmCollection.g12hs; config.ejector = EJECTOR_UBOINIK; @@ -190,7 +228,7 @@ public class Gun12GaugeFactory { config.manufacturer = EnumGunManufacturer.UAC; config.comment.add("God-damned ARCH-VILES!"); - config.config = HbmCollection.g12; + config.config = HbmCollection.g12hs; config.ejector = EJECTOR_SSG; @@ -346,5 +384,4 @@ public class Gun12GaugeFactory { return bullet; } - } diff --git a/src/main/java/com/hbm/handler/guncfg/GunGaussFactory.java b/src/main/java/com/hbm/handler/guncfg/GunGaussFactory.java index 159171a0f..6fee544a6 100644 --- a/src/main/java/com/hbm/handler/guncfg/GunGaussFactory.java +++ b/src/main/java/com/hbm/handler/guncfg/GunGaussFactory.java @@ -8,6 +8,10 @@ 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.BusAnimationKeyframe; +import com.hbm.render.anim.BusAnimationSequence; +import com.hbm.render.anim.HbmAnimations.AnimType; import com.hbm.render.util.RenderScreenOverlay.Crosshair; public class GunGaussFactory { @@ -25,9 +29,10 @@ public class GunGaussFactory { config.ammoCap = 0; config.reloadType = GunConfiguration.RELOAD_NONE; config.allowsInfinity = true; - config.crosshair = Crosshair.L_RAD; - config.durability = 6000; + config.crosshair = Crosshair.CIRCLE; + config.durability = 15000; config.firingSound = "hbm:weapon.tauShoot"; + config.firingVolume = 0.5F; config.name = "tau"; config.manufacturer = EnumGunManufacturer.BLACK_MESA; @@ -35,6 +40,13 @@ public class GunGaussFactory { config.config = new ArrayList(); config.config.add(BulletConfigSyncingUtil.SPECIAL_GAUSS); + config.animations.put(AnimType.CYCLE, new BusAnimation() + .addBus("RECOIL", new BusAnimationSequence() + .addKeyframe(new BusAnimationKeyframe(1, 0, 0, 25)) + .addKeyframe(new BusAnimationKeyframe(0, 0, 0, 75)) + ) + ); + return config; } @@ -63,10 +75,9 @@ public class GunGaussFactory { BulletConfiguration bullet = BulletConfigFactory.standardBulletConfig(); bullet.ammo = new ComparableStack(ModItems.gun_xvl1456_ammo); - bullet.dmgMin = 6; - bullet.dmgMax = 9; - bullet.trail = 1; - bullet.vPFX = "fireworksSpark"; + bullet.dmgMin = 18; + bullet.dmgMax = 27; + bullet.style = bullet.STYLE_TAU; bullet.LBRC = 80; bullet.HBRC = 5; @@ -77,7 +88,7 @@ public class GunGaussFactory { BulletConfiguration bullet = getGaussConfig(); - bullet.vPFX = "reddust"; + bullet.trail = 1; return bullet; } diff --git a/src/main/java/com/hbm/inventory/recipes/AssemblerRecipes.java b/src/main/java/com/hbm/inventory/recipes/AssemblerRecipes.java index 383e87b4b..ac990970a 100644 --- a/src/main/java/com/hbm/inventory/recipes/AssemblerRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/AssemblerRecipes.java @@ -285,6 +285,7 @@ public class AssemblerRecipes { makeRecipe(new ComparableStack(ModBlocks.machine_well, 1), new AStack[] {new ComparableStack(ModBlocks.steel_scaffold, 20), new ComparableStack(ModBlocks.steel_beam, 8), new ComparableStack(ModItems.tank_steel, 2), new ComparableStack(ModItems.motor, 1), new ComparableStack(ModItems.pipes_steel, 3), new ComparableStack(ModItems.drill_titanium, 1), new ComparableStack(ModItems.wire_red_copper, 6), },250); makeRecipe(new ComparableStack(ModBlocks.machine_pumpjack, 1), new AStack[] {new ComparableStack(ModBlocks.steel_scaffold, 8), new OreDictStack(STEEL.block(), 8), new ComparableStack(ModItems.pipes_steel, 4), new ComparableStack(ModItems.tank_steel, 4), new OreDictStack(STEEL.ingot(), 24), new OreDictStack(STEEL.plate(), 16), new OreDictStack(AL.plate(), 6), new ComparableStack(ModItems.drill_titanium, 1), new ComparableStack(ModItems.motor, 2), new ComparableStack(ModItems.wire_red_copper, 8), },400); makeRecipe(new ComparableStack(ModBlocks.machine_flare, 1), new AStack[] {new OreDictStack(STEEL.ingot(), 12), new OreDictStack(IRON.ingot(), 12), new OreDictStack(CU.plate528(), 4), new ComparableStack(ModItems.tank_steel, 1), new ComparableStack(ModBlocks.deco_pipe_quad, 8), new ComparableStack(ModItems.hull_small_steel, 4), new ComparableStack(ModItems.thermo_element, 3), },200); + makeRecipe(new ComparableStack(ModBlocks.machine_coker, 1), new AStack[] {new OreDictStack(STEEL.plate(), 24), new OreDictStack(IRON.ingot(), 12), new OreDictStack(CU.plate528(), 8), new OreDictStack(RUBBER.ingot(), 4), new ComparableStack(ModItems.tank_steel, 2), new ComparableStack(ModBlocks.steel_grate, 4) },200); makeRecipe(new ComparableStack(ModBlocks.machine_refinery, 1), new AStack[] {new OreDictStack(STEEL.plate528(), 16), new OreDictStack(CU.plate(), 16), new ComparableStack(ModItems.hull_big_steel, 6), new ComparableStack(ModItems.pipes_steel, 2), new ComparableStack(ModItems.plate_polymer, 8), new ComparableStack(ModItems.circuit_red_copper, 1) },350); makeRecipe(new ComparableStack(ModBlocks.machine_epress, 1), new AStack[] {new OreDictStack(STEEL.plate(), 8), new ComparableStack(ModItems.plate_polymer, 4), new ComparableStack(ModItems.bolt_tungsten, 4), new ComparableStack(ModItems.coil_copper, 2), new ComparableStack(ModItems.motor, 1), new ComparableStack(ModItems.circuit_copper, 1), new ComparableStack(ModItems.canister_full, 1, Fluids.LUBRICANT.getID()), },160); makeRecipe(new ComparableStack(ModBlocks.machine_chemplant, 1), new AStack[] {new OreDictStack(STEEL.ingot(), 8), new OreDictStack(CU.plate528(), 6), new ComparableStack(ModItems.tank_steel, 4), new ComparableStack(ModItems.hull_big_steel, 1), new ComparableStack(ModItems.coil_tungsten, 3), new ComparableStack(ModItems.circuit_copper, 2), new ComparableStack(ModItems.circuit_red_copper, 1), new ComparableStack(ModItems.plate_polymer, 8), },200); diff --git a/src/main/java/com/hbm/inventory/recipes/CokerRecipes.java b/src/main/java/com/hbm/inventory/recipes/CokerRecipes.java index 1aa72f875..1c74b406c 100644 --- a/src/main/java/com/hbm/inventory/recipes/CokerRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/CokerRecipes.java @@ -12,7 +12,6 @@ import com.google.gson.stream.JsonWriter; import com.hbm.inventory.FluidStack; import com.hbm.inventory.OreDictManager.DictFrame; import com.hbm.inventory.fluid.FluidType; -import com.hbm.inventory.fluid.Fluids; import com.hbm.inventory.fluid.trait.FT_Combustible; import com.hbm.inventory.fluid.trait.FT_Flammable; import com.hbm.inventory.recipes.loader.SerializableRecipe; @@ -21,6 +20,7 @@ import com.hbm.items.ItemEnums.EnumCokeType; import com.hbm.items.machine.ItemFluidIcon; import com.hbm.util.Tuple.Triplet; +import net.minecraft.init.Items; import net.minecraft.item.ItemStack; public class CokerRecipes extends SerializableRecipe { @@ -30,27 +30,32 @@ public class CokerRecipes extends SerializableRecipe { @Override public void registerDefaults() { - registerAuto(HEAVYOIL, Fluids.OIL_COKER); - registerAuto(HEAVYOIL_VACUUM, Fluids.REFORMATE); - registerAuto(COALCREOSOTE, Fluids.NAPHTHA_COKER); - registerAuto(WOODOIL, Fluids.NAPHTHA_COKER); - registerAuto(SMEAR, Fluids.OIL_COKER); - registerAuto(HEATINGOIL, Fluids.OIL_COKER); - registerAuto(HEATINGOIL_VACUUM, Fluids.OIL_COKER); - registerAuto(RECLAIMED, Fluids.NAPHTHA_COKER); - registerAuto(NAPHTHA, Fluids.NAPHTHA_COKER); - registerAuto(NAPHTHA_CRACK, Fluids.NAPHTHA_COKER); - registerAuto(DIESEL, Fluids.NAPHTHA_COKER); - registerAuto(DIESEL_REFORM, Fluids.NAPHTHA_COKER); - registerAuto(DIESEL_CRACK, Fluids.GAS_COKER); - registerAuto(DIESEL_CRACK_REFORM, Fluids.GAS_COKER); - registerAuto(LIGHTOIL, Fluids.GAS_COKER); - registerAuto(LIGHTOIL_CRACK, Fluids.GAS_COKER); - registerAuto(LIGHTOIL_VACUUM, Fluids.GAS_COKER); - registerAuto(BIOFUEL, Fluids.GAS_COKER); - registerAuto(AROMATICS, Fluids.GAS_COKER); - registerAuto(REFORMATE, Fluids.GAS_COKER); - registerAuto(XYLENE, Fluids.GAS_COKER); + registerAuto(HEAVYOIL, OIL_COKER); + registerAuto(HEAVYOIL_VACUUM, REFORMATE); + registerAuto(COALCREOSOTE, NAPHTHA_COKER); + registerAuto(SMEAR, OIL_COKER); + registerAuto(HEATINGOIL, OIL_COKER); + registerAuto(HEATINGOIL_VACUUM, OIL_COKER); + registerAuto(RECLAIMED, NAPHTHA_COKER); + registerAuto(NAPHTHA, NAPHTHA_COKER); + registerAuto(NAPHTHA_CRACK, NAPHTHA_COKER); + registerAuto(DIESEL, NAPHTHA_COKER); + registerAuto(DIESEL_REFORM, NAPHTHA_COKER); + registerAuto(DIESEL_CRACK, GAS_COKER); + registerAuto(DIESEL_CRACK_REFORM, GAS_COKER); + registerAuto(LIGHTOIL, GAS_COKER); + registerAuto(LIGHTOIL_CRACK, GAS_COKER); + registerAuto(LIGHTOIL_VACUUM, GAS_COKER); + registerAuto(BIOFUEL, GAS_COKER); + registerAuto(AROMATICS, GAS_COKER); + registerAuto(REFORMATE, GAS_COKER); + registerAuto(XYLENE, GAS_COKER); + + registerSFAuto(WOODOIL, 340_000L, new ItemStack(Items.coal, 1, 1), GAS_COKER); + + registerRecipe(WATZ, 4_000, new ItemStack(ModItems.ingot_mud, 4), null); + registerRecipe(BITUMEN, 16_000, DictFrame.fromOne(ModItems.coke, EnumCokeType.PETROLEUM), new FluidStack(OIL_COKER, 1_600)); + registerRecipe(LUBRICANT, 12_000, DictFrame.fromOne(ModItems.coke, EnumCokeType.PETROLEUM), new FluidStack(OIL_COKER, 1_200)); } private static void registerAuto(FluidType fluid, FluidType type) { diff --git a/src/main/java/com/hbm/inventory/recipes/FractionRecipes.java b/src/main/java/com/hbm/inventory/recipes/FractionRecipes.java index 73a04b10b..00f49aeae 100644 --- a/src/main/java/com/hbm/inventory/recipes/FractionRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/FractionRecipes.java @@ -47,19 +47,22 @@ public class FractionRecipes extends SerializableRecipe { @Override public void registerDefaults() { - fractions.put(Fluids.HEAVYOIL, new Pair(new FluidStack(Fluids.BITUMEN, heavy_frac_bitu), new FluidStack(Fluids.SMEAR, heavy_frac_smear))); - fractions.put(Fluids.SMEAR, new Pair(new FluidStack(Fluids.HEATINGOIL, smear_frac_heat), new FluidStack(Fluids.LUBRICANT, smear_frac_lube))); - fractions.put(Fluids.NAPHTHA, new Pair(new FluidStack(Fluids.HEATINGOIL, napht_frac_heat), new FluidStack(Fluids.DIESEL, napht_frac_diesel))); - fractions.put(Fluids.NAPHTHA_CRACK, new Pair(new FluidStack(Fluids.HEATINGOIL, ncrack_frac_heat), new FluidStack(Fluids.DIESEL_CRACK, ncrack_frac_diesel))); - fractions.put(Fluids.LIGHTOIL, new Pair(new FluidStack(Fluids.DIESEL, light_frac_diesel), new FluidStack(Fluids.KEROSENE, light_frac_kero))); - fractions.put(Fluids.LIGHTOIL_CRACK, new Pair(new FluidStack(Fluids.KEROSENE, lcrack_frac_kero), new FluidStack(Fluids.PETROLEUM, lcrack_frac_petro))); - fractions.put(Fluids.COALOIL, new Pair(new FluidStack(Fluids.COALGAS, coal_frac_coalgas), new FluidStack(Fluids.OIL, coal_frac_oil))); - fractions.put(Fluids.COALCREOSOTE, new Pair(new FluidStack(Fluids.COALOIL, creo_frac_coaloil), new FluidStack(Fluids.BITUMEN, creo_frac_bitu))); - fractions.put(Fluids.HEAVYOIL_VACUUM, new Pair(new FluidStack(Fluids.SMEAR, hvac_frac_smear), new FluidStack(Fluids.HEATINGOIL_VACUUM, hvac_frac_heat))); - fractions.put(Fluids.REFORMATE, new Pair(new FluidStack(Fluids.AROMATICS, reform_frac_arom), new FluidStack(Fluids.XYLENE, reform_frac_xyle))); - fractions.put(Fluids.LIGHTOIL_VACUUM, new Pair(new FluidStack(Fluids.KEROSENE, lvac_frac_kero), new FluidStack(Fluids.REFORMGAS, lvac_frac_gas))); - fractions.put(Fluids.SOURGAS, new Pair(new FluidStack(Fluids.GAS, 30), new FluidStack(Fluids.PETROLEUM, 20))); - fractions.put(Fluids.EGG, new Pair(new FluidStack(Fluids.CHOLESTEROL, 50), new FluidStack(Fluids.RADIOSOLVENT, 50))); + fractions.put(Fluids.HEAVYOIL, new Pair(new FluidStack(Fluids.BITUMEN, heavy_frac_bitu), new FluidStack(Fluids.SMEAR, heavy_frac_smear))); + fractions.put(Fluids.SMEAR, new Pair(new FluidStack(Fluids.HEATINGOIL, smear_frac_heat), new FluidStack(Fluids.LUBRICANT, smear_frac_lube))); + fractions.put(Fluids.NAPHTHA, new Pair(new FluidStack(Fluids.HEATINGOIL, napht_frac_heat), new FluidStack(Fluids.DIESEL, napht_frac_diesel))); + fractions.put(Fluids.NAPHTHA_CRACK, new Pair(new FluidStack(Fluids.HEATINGOIL, ncrack_frac_heat), new FluidStack(Fluids.DIESEL_CRACK, ncrack_frac_diesel))); + fractions.put(Fluids.LIGHTOIL, new Pair(new FluidStack(Fluids.DIESEL, light_frac_diesel), new FluidStack(Fluids.KEROSENE, light_frac_kero))); + fractions.put(Fluids.LIGHTOIL_CRACK, new Pair(new FluidStack(Fluids.KEROSENE, lcrack_frac_kero), new FluidStack(Fluids.PETROLEUM, lcrack_frac_petro))); + fractions.put(Fluids.COALOIL, new Pair(new FluidStack(Fluids.COALGAS, coal_frac_coalgas), new FluidStack(Fluids.OIL, coal_frac_oil))); + fractions.put(Fluids.COALCREOSOTE, new Pair(new FluidStack(Fluids.COALOIL, creo_frac_coaloil), new FluidStack(Fluids.BITUMEN, creo_frac_bitu))); + fractions.put(Fluids.HEAVYOIL_VACUUM, new Pair(new FluidStack(Fluids.SMEAR, hvac_frac_smear), new FluidStack(Fluids.HEATINGOIL_VACUUM, hvac_frac_heat))); + fractions.put(Fluids.REFORMATE, new Pair(new FluidStack(Fluids.AROMATICS, reform_frac_arom), new FluidStack(Fluids.XYLENE, reform_frac_xyle))); + fractions.put(Fluids.LIGHTOIL_VACUUM, new Pair(new FluidStack(Fluids.KEROSENE, lvac_frac_kero), new FluidStack(Fluids.REFORMGAS, lvac_frac_gas))); + fractions.put(Fluids.SOURGAS, new Pair(new FluidStack(Fluids.GAS, 30), new FluidStack(Fluids.PETROLEUM, 20))); + fractions.put(Fluids.EGG, new Pair(new FluidStack(Fluids.CHOLESTEROL, 50), new FluidStack(Fluids.RADIOSOLVENT, 50))); + fractions.put(Fluids.OIL_COKER, new Pair(new FluidStack(Fluids.CRACKOIL, 30), new FluidStack(Fluids.HEATINGOIL, 70))); + fractions.put(Fluids.NAPHTHA_COKER, new Pair(new FluidStack(Fluids.NAPHTHA_CRACK, 75), new FluidStack(Fluids.LIGHTOIL_CRACK, 25))); + fractions.put(Fluids.GAS_COKER, new Pair(new FluidStack(Fluids.AROMATICS, 25), new FluidStack(Fluids.CARBONDIOXIDE, 75))); } public static Pair getFractions(FluidType oil) { diff --git a/src/main/java/com/hbm/items/ModItems.java b/src/main/java/com/hbm/items/ModItems.java index 7912a792e..df864b559 100644 --- a/src/main/java/com/hbm/items/ModItems.java +++ b/src/main/java/com/hbm/items/ModItems.java @@ -1546,6 +1546,7 @@ public class ModItems { 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_ks23; @@ -4156,6 +4157,7 @@ public class ModItems { 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_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"); @@ -6960,6 +6962,7 @@ public class ModItems { 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_supershotgun, gun_supershotgun.getUnlocalizedName()); GameRegistry.registerItem(gun_ks23, gun_ks23.getUnlocalizedName()); diff --git a/src/main/java/com/hbm/items/weapon/ItemGunBase.java b/src/main/java/com/hbm/items/weapon/ItemGunBase.java index 347570496..065dcf6f4 100644 --- a/src/main/java/com/hbm/items/weapon/ItemGunBase.java +++ b/src/main/java/com/hbm/items/weapon/ItemGunBase.java @@ -229,7 +229,7 @@ public class ItemGunBase extends Item implements IHoldableWeapon, IItemHUD, IEqu setItemWear(stack, getItemWear(stack) + wear); } - world.playSoundAtEntity(player, mainConfig.firingSound, 1.0F, mainConfig.firingPitch); + world.playSoundAtEntity(player, mainConfig.firingSound, mainConfig.firingVolume, mainConfig.firingPitch); if(mainConfig.ejector != null && !mainConfig.ejector.getAfterReload()) queueCasing(player, mainConfig.ejector, config, stack); @@ -263,7 +263,7 @@ public class ItemGunBase extends Item implements IHoldableWeapon, IItemHUD, IEqu setItemWear(stack, getItemWear(stack) + config.wear); } - world.playSoundAtEntity(player, altConfig.firingSound, 1.0F, altConfig.firingPitch); + world.playSoundAtEntity(player, altConfig.firingSound, mainConfig.firingVolume, altConfig.firingPitch); if(altConfig.ejector != null) queueCasing(player, altConfig.ejector, config, stack); @@ -458,6 +458,8 @@ public class ItemGunBase extends Item implements IHoldableWeapon, IItemHUD, IEqu { final BulletConfiguration bulletConfig = BulletConfigSyncingUtil.pullConfig(mainConfig.config.get(getMagType(stack))); list.add(I18nUtil.resolveKey(HbmCollection.gunDamage, bulletConfig.dmgMin, bulletConfig.dmgMax)); + if(bulletConfig.bulletsMax != 1) + list.add(I18nUtil.resolveKey(HbmCollection.gunPellets, bulletConfig.bulletsMin, bulletConfig.bulletsMax)); int dura = Math.max(mainConfig.durability - getItemWear(stack), 0); list.add(I18nUtil.resolveKey(HbmCollection.durability, dura + " / " + mainConfig.durability)); diff --git a/src/main/java/com/hbm/items/weapon/ItemGunGauss.java b/src/main/java/com/hbm/items/weapon/ItemGunGauss.java index 63f347527..f394e9062 100644 --- a/src/main/java/com/hbm/items/weapon/ItemGunGauss.java +++ b/src/main/java/com/hbm/items/weapon/ItemGunGauss.java @@ -5,9 +5,13 @@ 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; @@ -22,17 +26,20 @@ public class ItemGunGauss extends ItemGunBase { public void endAction(ItemStack stack, World world, EntityPlayer player, boolean main) { if(getHasShot(stack)) { - world.playSoundAtEntity(player, "hbm:weapon.sparkShoot", 1.0F, 1.0F); + world.playSoundAtEntity(player, "hbm:weapon.sparkShoot", 2.0F, 1.0F); setHasShot(stack, false); } if(!main && getStored(stack) > 0) { EntityBulletBase bullet = new EntityBulletBase(world, altConfig.config.get(0), player); - bullet.overrideDamage = Math.min(getStored(stack), 13) * 3.5F; + bullet.overrideDamage = Math.min(getStored(stack), 1) * 10F; world.spawnEntityInWorld(bullet); - world.playSoundAtEntity(player, "hbm:weapon.tauShoot", 1.0F, 0.75F); + 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); } } @@ -107,7 +114,7 @@ public class ItemGunGauss extends ItemGunBase { chargeLoop = rebootAudio(chargeLoop, player); } chargeLoop.updatePosition((float)player.posX, (float)player.posY, (float)player.posZ); - chargeLoop.updatePitch(chargeLoop.getPitch() + 0.01F); + chargeLoop.updatePitch(1 + (getCharge(stack)) * 0.01F); } } diff --git a/src/main/java/com/hbm/lib/HbmCollection.java b/src/main/java/com/hbm/lib/HbmCollection.java index 2e037769a..a0d1efc1e 100644 --- a/src/main/java/com/hbm/lib/HbmCollection.java +++ b/src/main/java/com/hbm/lib/HbmCollection.java @@ -24,6 +24,7 @@ public class HbmCollection { // 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 **/ @@ -140,6 +141,8 @@ public class HbmCollection { LUNA, /**Raytheon Missile Systems**/ RAYTHEON, + /**Remingotn Arms**/ + REMINGTON, /**Rockwell International Corporation**/ ROCKWELL, /**Rockwell International Corporation?**/ @@ -181,6 +184,7 @@ public class HbmCollection { public static final String gunName = "desc.item.gun.name"; public static final String gunMaker = "desc.item.gun.manufacturer"; public static final String gunDamage = "desc.item.gun.damage"; + public static final String gunPellets = "desc.item.gun.pellets"; // MISC public static final String capacity = "desc.block.barrel.capacity"; public static final String durability = "desc.item.durability"; diff --git a/src/main/java/com/hbm/lib/RefStrings.java b/src/main/java/com/hbm/lib/RefStrings.java index 0a206e0f1..dcc814ea7 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 (4578)"; + public static final String VERSION = "1.0.27 BETA (4585)"; //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 7ff9cbf0b..d366c31f2 100644 --- a/src/main/java/com/hbm/main/ClientProxy.java +++ b/src/main/java/com/hbm/main/ClientProxy.java @@ -449,7 +449,7 @@ public class ClientProxy extends ServerProxy { 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 ItemRenderXVL1456()); + 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()); @@ -502,6 +502,7 @@ public class ClientProxy extends ServerProxy { MinecraftForgeClient.registerItemRenderer(ModItems.gun_ar15, new ItemRenderWeaponAR15()); MinecraftForgeClient.registerItemRenderer(ModItems.gun_detonator, new ItemRenderDetonatorLaser()); 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()); diff --git a/src/main/java/com/hbm/main/ModEventHandlerRenderer.java b/src/main/java/com/hbm/main/ModEventHandlerRenderer.java index 5ab4434c7..1c629ee3f 100644 --- a/src/main/java/com/hbm/main/ModEventHandlerRenderer.java +++ b/src/main/java/com/hbm/main/ModEventHandlerRenderer.java @@ -5,7 +5,7 @@ import org.lwjgl.opengl.GL11; import com.hbm.blocks.ICustomBlockHighlight; import com.hbm.items.armor.IArmorDisableModel; import com.hbm.items.armor.IArmorDisableModel.EnumPlayerPart; -import com.hbm.potion.HbmPotion; +import com.hbm.packet.PermaSyncHandler; import com.hbm.render.model.ModelMan; import cpw.mods.fml.common.eventhandler.EventPriority; @@ -36,7 +36,7 @@ public class ModEventHandlerRenderer { EntityPlayer player = event.entityPlayer; RenderPlayer renderer = event.renderer; - boolean isManly = player.isPotionActive(HbmPotion.death.id); + boolean isManly = PermaSyncHandler.boykissers.contains(player.getEntityId()); for(int j = 0; j < 7; j++) { @@ -78,7 +78,7 @@ public class ModEventHandlerRenderer { EntityPlayer player = event.entityPlayer; RenderPlayer renderer = event.renderer; - boolean isManly = player.isPotionActive(HbmPotion.death.id); + boolean isManly = PermaSyncHandler.boykissers.contains(player.getEntityId()); if(isManly) { if(manlyModel == null) @@ -117,7 +117,7 @@ public class ModEventHandlerRenderer { EntityPlayer player = event.entityPlayer; //RenderPlayer renderer = event.renderer; - boolean isManly = player.isPotionActive(HbmPotion.death.id); + boolean isManly = PermaSyncHandler.boykissers.contains(player.getEntityId()); if(!isManly) return; diff --git a/src/main/java/com/hbm/main/ResourceManager.java b/src/main/java/com/hbm/main/ResourceManager.java index bcc950339..c56c4ed0d 100644 --- a/src/main/java/com/hbm/main/ResourceManager.java +++ b/src/main/java/com/hbm/main/ResourceManager.java @@ -708,6 +708,7 @@ public class ResourceManager { public static final IModelCustom rem700sat = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/weapons/rem700sat.obj")); 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")); @@ -717,6 +718,7 @@ public class ResourceManager { public static final IModelCustom novac_scoped = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/weapons/novac_scoped.obj")); public static final IModelCustom m2 = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/weapons/m2_browning.obj")).asDisplayList(); //large fella should be a display list public static final IModelCustom lunatic_sniper = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/weapons/lunatic_sniper.obj")).asDisplayList(); + public static final IModelCustom tau = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/weapons/tau.obj")); public static final IModelCustom lance = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/weapons/lance.obj")); @@ -793,6 +795,7 @@ public class ResourceManager { public static final ResourceLocation rem700poly_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/ff/rem700poly.png"); public static final ResourceLocation rem700sat_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/ff/rem700sat.png"); public static final ResourceLocation detonator_laser_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/detonator_laser.png"); + 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"); @@ -805,6 +808,7 @@ public class ResourceManager { 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 lance_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/lance.png"); diff --git a/src/main/java/com/hbm/packet/PermaSyncHandler.java b/src/main/java/com/hbm/packet/PermaSyncHandler.java index a3db60ecf..6d15243be 100644 --- a/src/main/java/com/hbm/packet/PermaSyncHandler.java +++ b/src/main/java/com/hbm/packet/PermaSyncHandler.java @@ -1,6 +1,11 @@ package com.hbm.packet; +import java.util.ArrayList; +import java.util.HashSet; +import java.util.List; + import com.hbm.handler.ImpactWorldHandler; +import com.hbm.potion.HbmPotion; import com.hbm.saveddata.TomSaveData; import io.netty.buffer.ByteBuf; @@ -14,6 +19,8 @@ import net.minecraft.world.World; * @author hbm */ public class PermaSyncHandler { + + public static HashSet boykissers = new HashSet(); public static void writePacket(ByteBuf buf, World world, EntityPlayerMP player) { @@ -23,6 +30,18 @@ public class PermaSyncHandler { buf.writeFloat(data.dust); buf.writeBoolean(data.impact); /// TOM IMPACT DATA /// + + /// SHITTY MEMES /// + List ids = new ArrayList(); + for(Object o : world.playerEntities) { + EntityPlayer p = (EntityPlayer) o; + if(p.isPotionActive(HbmPotion.death.id)) { + ids.add(p.getEntityId()); + } + } + buf.writeShort((short) ids.size()); + for(Integer i : ids) buf.writeInt(i); + /// SHITTY MEMES /// } public static void readPacket(ByteBuf buf, World world, EntityPlayer player) { @@ -33,5 +52,11 @@ public class PermaSyncHandler { ImpactWorldHandler.dust = buf.readFloat(); ImpactWorldHandler.impact = buf.readBoolean(); /// TOM IMPACT DATA /// + + /// SHITTY MEMES /// + boykissers.clear(); + int ids = buf.readShort(); + for(int i = 0; i < ids; i++) boykissers.add(buf.readInt()); + /// SHITTY MEMES /// } } 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 3d11f351c..0c8f15481 100644 --- a/src/main/java/com/hbm/render/entity/projectile/RenderBullet.java +++ b/src/main/java/com/hbm/render/entity/projectile/RenderBullet.java @@ -4,6 +4,7 @@ import java.util.Random; import org.lwjgl.opengl.GL11; +import com.hbm.entity.projectile.EntityBulletBase; import com.hbm.handler.BulletConfiguration; import com.hbm.items.ModItems; import com.hbm.lib.RefStrings; @@ -11,6 +12,7 @@ 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; import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.Tessellator; @@ -19,8 +21,10 @@ 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.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; import net.minecraft.util.ResourceLocation; +import net.minecraft.util.Vec3; public class RenderBullet extends Render { @@ -37,10 +41,8 @@ public class RenderBullet extends Render { GL11.glPushMatrix(); GL11.glTranslatef((float) x, (float) y, (float) z); - GL11.glRotatef(bullet.prevRotationYaw + (bullet.rotationYaw - bullet.prevRotationYaw) * f1 - 90.0F, - 0.0F, 1.0F, 0.0F); - GL11.glRotatef(bullet.prevRotationPitch + (bullet.rotationPitch - bullet.prevRotationPitch) * f1 + 180, - 0.0F, 0.0F, 1.0F); + GL11.glRotatef(bullet.prevRotationYaw + (bullet.rotationYaw - bullet.prevRotationYaw) * f1 - 90.0F, 0.0F, 1.0F, 0.0F); + GL11.glRotatef(bullet.prevRotationPitch + (bullet.rotationPitch - bullet.prevRotationPitch) * f1 + 180, 0.0F, 0.0F, 1.0F); GL11.glScalef(1.5F, 1.5F, 1.5F); int style = bullet.getDataWatcher().getWatchableObjectByte(16); @@ -69,6 +71,7 @@ public class RenderBullet extends Render { case BulletConfiguration.STYLE_APDS: renderAPDS(); break; case BulletConfiguration.STYLE_BLADE: renderBlade(); break; case BulletConfiguration.STYLE_BARREL: renderNuke(3); break; + case BulletConfiguration.STYLE_TAU: renderTau((EntityBulletBase) bullet, trail, f1); break; default: renderBullet(trail); break; } @@ -450,11 +453,11 @@ public class RenderBullet extends Render { tess.addVertex(0, -0.5, -0.5); tess.draw(); - GL11.glEnable(GL11.GL_TEXTURE_2D); + GL11.glEnable(GL11.GL_TEXTURE_2D); GL11.glDisable(GL11.GL_BLEND); - GL11.glEnable(GL11.GL_LIGHTING); - GL11.glEnable(GL11.GL_CULL_FACE); - GL11.glDepthMask(true); + GL11.glEnable(GL11.GL_LIGHTING); + GL11.glEnable(GL11.GL_CULL_FACE); + GL11.glDepthMask(true); GL11.glPopMatrix(); } @@ -479,6 +482,111 @@ public class RenderBullet extends Render { GL11.glPopMatrix(); } + private void renderTau(EntityBulletBase bullet, int trail, float interp) { + + Tessellator tessellator = Tessellator.instance; + + float scale = 0.125F; + + double pX = bullet.prevPosX + (bullet.posX - bullet.prevPosX) * interp; + double pY = bullet.prevPosY + (bullet.posY - bullet.prevPosY) * interp; + double pZ = bullet.prevPosZ + (bullet.posZ - bullet.prevPosZ) * interp; + + if(bullet.prevRenderY == 0) { + bullet.prevRenderX = pX; + bullet.prevRenderY = pY; + bullet.prevRenderZ = pZ; + } + + double deltaX = bullet.prevRenderX - pX; + double deltaY = bullet.prevRenderY - pY; + double deltaZ = bullet.prevRenderZ - pZ; + + 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.glPopMatrix(); + GL11.glPushMatrix(); + GL11.glTranslated(pX - dX, pY - dY, pZ - dZ); + + float r = 1F; + float g = 0.5F; + float b = 0F; + + if(trail == 1) { + r = 1; + g = 1; + b = 1; + } + + for(Pair pair : bullet.trailNodes) { + Vec3 pos = pair.getKey(); + + double mult = 1D; + pos.xCoord += deltaX * mult; + pos.yCoord += deltaY * mult; + pos.zCoord += deltaZ * mult; + } + + tessellator.startDrawingQuads(); + tessellator.setNormal(0F, 1F, 0F); + + for(int i = 0; i < bullet.trailNodes.size() - 1; i++) { + final Pair node = bullet.trailNodes.get(i), past = bullet.trailNodes.get(i + 1); + final Vec3 nodeLoc = node.getKey(), pastLoc = past.getKey(); + float nodeAlpha = node.getValue().floatValue(); + float pastAlpha = past.getValue().floatValue(); + + double timeAlpha = Math.max(2D - bullet.ticksExisted * 0.2, 0D); + nodeAlpha *= timeAlpha; + pastAlpha *= timeAlpha; + float outerAlpha = 0.25F; + + if(nodeAlpha == 0 && pastAlpha == 0) { + break; + } + + tessellator.setNormal(0F, 1F, 0F); + tessellator.setColorRGBA_F(r, g, b, nodeAlpha); + tessellator.addVertex(nodeLoc.xCoord, nodeLoc.yCoord, nodeLoc.zCoord); + tessellator.setColorRGBA_F(r, g, b, nodeAlpha * outerAlpha); + tessellator.addVertex(nodeLoc.xCoord, nodeLoc.yCoord + scale, nodeLoc.zCoord); + tessellator.setColorRGBA_F(r, g, b, pastAlpha * outerAlpha); + tessellator.addVertex(pastLoc.xCoord, pastLoc.yCoord + scale, pastLoc.zCoord); + tessellator.setColorRGBA_F(r, g, b, pastAlpha); + tessellator.addVertex(pastLoc.xCoord, pastLoc.yCoord, pastLoc.zCoord); + + tessellator.setColorRGBA_F(r, g, b, nodeAlpha); + tessellator.addVertex(nodeLoc.xCoord, nodeLoc.yCoord, nodeLoc.zCoord); + tessellator.setColorRGBA_F(r, g, b, nodeAlpha * outerAlpha); + tessellator.addVertex(nodeLoc.xCoord, nodeLoc.yCoord - scale, nodeLoc.zCoord); + tessellator.setColorRGBA_F(r, g, b, pastAlpha * outerAlpha); + tessellator.addVertex(pastLoc.xCoord, pastLoc.yCoord - scale, pastLoc.zCoord); + tessellator.setColorRGBA_F(r, g, b, pastAlpha); + tessellator.addVertex(pastLoc.xCoord, pastLoc.yCoord, pastLoc.zCoord); + } + + GL11.glColor3f(1F, 1F, 1F); + GL11.glDepthMask(true); + GL11.glAlphaFunc(GL11.GL_GREATER, 0F); + GL11.glEnable(GL11.GL_BLEND); + GL11.glDisable(GL11.GL_TEXTURE_2D); + GL11.glDisable(GL11.GL_CULL_FACE); + GL11.glShadeModel(GL11.GL_SMOOTH); + tessellator.draw(); + GL11.glShadeModel(GL11.GL_FLAT); + GL11.glEnable(GL11.GL_CULL_FACE); + GL11.glEnable(GL11.GL_TEXTURE_2D); + GL11.glDisable(GL11.GL_BLEND); + GL11.glAlphaFunc(GL11.GL_GEQUAL, 0.1F); + + bullet.prevRenderX = pX; + bullet.prevRenderY = pY; + bullet.prevRenderZ = pZ; + } + @Override protected ResourceLocation getEntityTexture(Entity p_110775_1_) { return new ResourceLocation(RefStrings.MODID + ":textures/models/bullet.png"); diff --git a/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponRemington.java b/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponRemington.java new file mode 100644 index 000000000..e49b57531 --- /dev/null +++ b/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponRemington.java @@ -0,0 +1,108 @@ +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/ItemRenderWeaponSpas12.java b/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponSpas12.java index 555795bc4..33de43282 100644 --- a/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponSpas12.java +++ b/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponSpas12.java @@ -112,5 +112,4 @@ public class ItemRenderWeaponSpas12 implements IItemRenderer { 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 new file mode 100644 index 000000000..b46f19474 --- /dev/null +++ b/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponTau.java @@ -0,0 +1,116 @@ +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/ItemRenderXVL1456.java b/src/main/java/com/hbm/render/item/weapon/ItemRenderXVL1456.java deleted file mode 100644 index dacfc20b4..000000000 --- a/src/main/java/com/hbm/render/item/weapon/ItemRenderXVL1456.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.ModelXVL1456; - -import net.minecraft.client.Minecraft; -import net.minecraft.entity.Entity; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.EnumAction; -import net.minecraft.item.ItemStack; -import net.minecraft.util.ResourceLocation; -import net.minecraftforge.client.IItemRenderer; - -public class ItemRenderXVL1456 implements IItemRenderer { - - protected ModelXVL1456 swordModel; - - public ItemRenderXVL1456() { - swordModel = new ModelXVL1456(); - } - - @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]).getItemInUseCount() > 0 && ((Entity)data[1]).isSneaking() ? 0.05F : 0; - f = (((EntityPlayer)data[1]).getItemInUse() != null &&((EntityPlayer)data[1]).getItemInUse().getItemUseAction() == EnumAction.bow) ? 0.05F : 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/ModelXVL1456.png")); - GL11.glRotatef(-150.0F, 0.0F, 0.0F, 1.0F); - GL11.glTranslatef(-0.9F, -0.1F, -0.1F); - GL11.glScalef(0.3F, 0.3F, 0.3F); - 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/ModelXVL1456.png")); - GL11.glTranslatef(0.25F, 0F, 1F); - 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.2F); - 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, f); - GL11.glPopMatrix(); - default: break; - } - } -} diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityCrucible.java b/src/main/java/com/hbm/tileentity/machine/TileEntityCrucible.java index bc44e2653..3581d35b4 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityCrucible.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityCrucible.java @@ -545,7 +545,7 @@ public class TileEntityCrucible extends TileEntityMachineBase implements IGUIPro int matMaximum = recipeInputRequired * this.recipeZCapacity / recipeContent; int amountStored = getQuantaFromType(recipeStack, stack.material); - return amountStored < matMaximum; + return amountStored < matMaximum && getQuantaFromType(this.recipeStack, null) < this.recipeZCapacity; } @Override @@ -577,6 +577,7 @@ public class TileEntityCrucible extends TileEntityMachineBase implements IGUIPro } int toAdd = matMaximum - stack.amount; + toAdd = Math.min(toAdd, this.recipeZCapacity - getQuantaFromType(this.recipeStack, null)); this.addToStack(this.recipeStack, new MaterialStack(stack.material, toAdd)); return new MaterialStack(stack.material, stack.amount - toAdd); } 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 aad99c2a0..fa5ee1a72 100644 --- a/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineCoker.java +++ b/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineCoker.java @@ -204,6 +204,16 @@ public class TileEntityMachineCoker extends TileEntityMachineBase implements IFl this.heat = Math.max(this.heat - Math.max(this.heat / 1000, 1), 0); } + + @Override + public boolean canExtractItem(int slot, ItemStack stack, int side) { + return true; + } + + @Override + public int[] getAccessibleSlotsFromSide(int side) { + return new int[] { 1 }; + } @Override public void readFromNBT(NBTTagCompound nbt) { diff --git a/src/main/java/com/hbm/tileentity/turret/TileEntityTurretBaseNT.java b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretBaseNT.java index 568431479..ef43786c1 100644 --- a/src/main/java/com/hbm/tileentity/turret/TileEntityTurretBaseNT.java +++ b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretBaseNT.java @@ -272,17 +272,17 @@ public abstract class TileEntityTurretBaseNT extends TileEntityMachineBase imple ForgeDirection rot = dir.getRotation(ForgeDirection.UP); //how did i even make this? what??? - this.trySubscribe(worldObj, xCoord + dir.offsetX * -1 + rot.offsetX * 0, yCoord, zCoord + dir.offsetZ * -1 + rot.offsetZ * 0, ForgeDirection.UNKNOWN); - this.trySubscribe(worldObj, xCoord + dir.offsetX * -1 + rot.offsetX * -1, yCoord, zCoord + dir.offsetZ * -1 + rot.offsetZ * -1, ForgeDirection.UNKNOWN); + this.trySubscribe(worldObj, xCoord + dir.offsetX * -1 + rot.offsetX * 0, yCoord, zCoord + dir.offsetZ * -1 + rot.offsetZ * 0, dir.getOpposite()); + this.trySubscribe(worldObj, xCoord + dir.offsetX * -1 + rot.offsetX * -1, yCoord, zCoord + dir.offsetZ * -1 + rot.offsetZ * -1, dir.getOpposite()); - this.trySubscribe(worldObj, xCoord + dir.offsetX * 0 + rot.offsetX * -2, yCoord, zCoord + dir.offsetZ * 0 + rot.offsetZ * -2, ForgeDirection.UNKNOWN); - this.trySubscribe(worldObj, xCoord + dir.offsetX * 1 + rot.offsetX * -2, yCoord, zCoord + dir.offsetZ * 1 + rot.offsetZ * -2, ForgeDirection.UNKNOWN); + this.trySubscribe(worldObj, xCoord + dir.offsetX * 0 + rot.offsetX * -2, yCoord, zCoord + dir.offsetZ * 0 + rot.offsetZ * -2, rot.getOpposite()); + this.trySubscribe(worldObj, xCoord + dir.offsetX * 1 + rot.offsetX * -2, yCoord, zCoord + dir.offsetZ * 1 + rot.offsetZ * -2, rot.getOpposite()); - this.trySubscribe(worldObj, xCoord + dir.offsetX * 0 + rot.offsetX * 1, yCoord, zCoord + dir.offsetZ * 0 + rot.offsetZ * 1, ForgeDirection.UNKNOWN); - this.trySubscribe(worldObj, xCoord + dir.offsetX * 1 + rot.offsetX * 1, yCoord, zCoord + dir.offsetZ * 1 + rot.offsetZ * 1, ForgeDirection.UNKNOWN); + this.trySubscribe(worldObj, xCoord + dir.offsetX * 0 + rot.offsetX * 1, yCoord, zCoord + dir.offsetZ * 0 + rot.offsetZ * 1, rot); + this.trySubscribe(worldObj, xCoord + dir.offsetX * 1 + rot.offsetX * 1, yCoord, zCoord + dir.offsetZ * 1 + rot.offsetZ * 1, rot); - this.trySubscribe(worldObj, xCoord + dir.offsetX * 2 + rot.offsetX * 0, yCoord, zCoord + dir.offsetZ * 2 + rot.offsetZ * 0, ForgeDirection.UNKNOWN); - this.trySubscribe(worldObj, xCoord + dir.offsetX * 2 + rot.offsetX * -1, yCoord, zCoord + dir.offsetZ * 2 + rot.offsetZ * -1, ForgeDirection.UNKNOWN); + this.trySubscribe(worldObj, xCoord + dir.offsetX * 2 + rot.offsetX * 0, yCoord, zCoord + dir.offsetZ * 2 + rot.offsetZ * 0, dir); + this.trySubscribe(worldObj, xCoord + dir.offsetX * 2 + rot.offsetX * -1, yCoord, zCoord + dir.offsetZ * 2 + rot.offsetZ * -1, dir); } @Override diff --git a/src/main/java/com/hbm/tileentity/turret/TileEntityTurretFritz.java b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretFritz.java index 5863b119f..3121134f9 100644 --- a/src/main/java/com/hbm/tileentity/turret/TileEntityTurretFritz.java +++ b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretFritz.java @@ -161,23 +161,23 @@ public class TileEntityTurretFritz extends TileEntityTurretBaseNT implements IFl ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata() - BlockDummyable.offset).getOpposite(); ForgeDirection rot = dir.getRotation(ForgeDirection.UP); - this.trySubscribe(worldObj, xCoord + dir.offsetX * -1 + rot.offsetX * 0, yCoord, zCoord + dir.offsetZ * -1 + rot.offsetZ * 0, ForgeDirection.SOUTH); - this.trySubscribe(worldObj, xCoord + dir.offsetX * -1 + rot.offsetX * -1, yCoord, zCoord + dir.offsetZ * -1 + rot.offsetZ * -1, ForgeDirection.SOUTH); - this.trySubscribe(worldObj, xCoord + dir.offsetX * 0 + rot.offsetX * -2, yCoord, zCoord + dir.offsetZ * 0 + rot.offsetZ * -2, ForgeDirection.WEST); - this.trySubscribe(worldObj, xCoord + dir.offsetX * 1 + rot.offsetX * -2, yCoord, zCoord + dir.offsetZ * 1 + rot.offsetZ * -2, ForgeDirection.WEST); - this.trySubscribe(worldObj, xCoord + dir.offsetX * 0 + rot.offsetX * 1, yCoord, zCoord + dir.offsetZ * 0 + rot.offsetZ * 1, ForgeDirection.EAST); - this.trySubscribe(worldObj, xCoord + dir.offsetX * 1 + rot.offsetX * 1, yCoord, zCoord + dir.offsetZ * 1 + rot.offsetZ * 1, ForgeDirection.EAST); - this.trySubscribe(worldObj, xCoord + dir.offsetX * 2 + rot.offsetX * 0, yCoord, zCoord + dir.offsetZ * 2 + rot.offsetZ * 0, ForgeDirection.NORTH); - this.trySubscribe(worldObj, xCoord + dir.offsetX * 2 + rot.offsetX * -1, yCoord, zCoord + dir.offsetZ * 2 + rot.offsetZ * -1, ForgeDirection.NORTH); - - this.trySubscribe(tank.getTankType(), worldObj, xCoord + dir.offsetX * -1 + rot.offsetX * 0, yCoord, zCoord + dir.offsetZ * -1 + rot.offsetZ * 0, ForgeDirection.SOUTH); - this.trySubscribe(tank.getTankType(), worldObj, xCoord + dir.offsetX * -1 + rot.offsetX * -1, yCoord, zCoord + dir.offsetZ * -1 + rot.offsetZ * -1, ForgeDirection.SOUTH); - this.trySubscribe(tank.getTankType(), worldObj, xCoord + dir.offsetX * 0 + rot.offsetX * -2, yCoord, zCoord + dir.offsetZ * 0 + rot.offsetZ * -2, ForgeDirection.WEST); - this.trySubscribe(tank.getTankType(), worldObj, xCoord + dir.offsetX * 1 + rot.offsetX * -2, yCoord, zCoord + dir.offsetZ * 1 + rot.offsetZ * -2, ForgeDirection.WEST); - this.trySubscribe(tank.getTankType(), worldObj, xCoord + dir.offsetX * 0 + rot.offsetX * 1, yCoord, zCoord + dir.offsetZ * 0 + rot.offsetZ * 1, ForgeDirection.EAST); - this.trySubscribe(tank.getTankType(), worldObj, xCoord + dir.offsetX * 1 + rot.offsetX * 1, yCoord, zCoord + dir.offsetZ * 1 + rot.offsetZ * 1, ForgeDirection.EAST); - this.trySubscribe(tank.getTankType(), worldObj, xCoord + dir.offsetX * 2 + rot.offsetX * 0, yCoord, zCoord + dir.offsetZ * 2 + rot.offsetZ * 0, ForgeDirection.NORTH); - this.trySubscribe(tank.getTankType(), worldObj, xCoord + dir.offsetX * 2 + rot.offsetX * -1, yCoord, zCoord + dir.offsetZ * 2 + rot.offsetZ * -1, ForgeDirection.NORTH); + this.trySubscribe(worldObj, xCoord + dir.offsetX * -1 + rot.offsetX * 0, yCoord, zCoord + dir.offsetZ * -1 + rot.offsetZ * 0, dir.getOpposite()); + this.trySubscribe(worldObj, xCoord + dir.offsetX * -1 + rot.offsetX * -1, yCoord, zCoord + dir.offsetZ * -1 + rot.offsetZ * -1, dir.getOpposite()); + this.trySubscribe(worldObj, xCoord + dir.offsetX * 0 + rot.offsetX * -2, yCoord, zCoord + dir.offsetZ * 0 + rot.offsetZ * -2, rot.getOpposite()); + this.trySubscribe(worldObj, xCoord + dir.offsetX * 1 + rot.offsetX * -2, yCoord, zCoord + dir.offsetZ * 1 + rot.offsetZ * -2, rot.getOpposite()); + this.trySubscribe(worldObj, xCoord + dir.offsetX * 0 + rot.offsetX * 1, yCoord, zCoord + dir.offsetZ * 0 + rot.offsetZ * 1, rot); + this.trySubscribe(worldObj, xCoord + dir.offsetX * 1 + rot.offsetX * 1, yCoord, zCoord + dir.offsetZ * 1 + rot.offsetZ * 1, rot); + this.trySubscribe(worldObj, xCoord + dir.offsetX * 2 + rot.offsetX * 0, yCoord, zCoord + dir.offsetZ * 2 + rot.offsetZ * 0, dir); + this.trySubscribe(worldObj, xCoord + dir.offsetX * 2 + rot.offsetX * -1, yCoord, zCoord + dir.offsetZ * 2 + rot.offsetZ * -1, dir); + + this.trySubscribe(tank.getTankType(), worldObj, xCoord + dir.offsetX * -1 + rot.offsetX * 0, yCoord, zCoord + dir.offsetZ * -1 + rot.offsetZ * 0, dir.getOpposite()); + this.trySubscribe(tank.getTankType(), worldObj, xCoord + dir.offsetX * -1 + rot.offsetX * -1, yCoord, zCoord + dir.offsetZ * -1 + rot.offsetZ * -1, dir.getOpposite()); + this.trySubscribe(tank.getTankType(), worldObj, xCoord + dir.offsetX * 0 + rot.offsetX * -2, yCoord, zCoord + dir.offsetZ * 0 + rot.offsetZ * -2, rot.getOpposite()); + this.trySubscribe(tank.getTankType(), worldObj, xCoord + dir.offsetX * 1 + rot.offsetX * -2, yCoord, zCoord + dir.offsetZ * 1 + rot.offsetZ * -2, rot.getOpposite()); + this.trySubscribe(tank.getTankType(), worldObj, xCoord + dir.offsetX * 0 + rot.offsetX * 1, yCoord, zCoord + dir.offsetZ * 0 + rot.offsetZ * 1, rot); + this.trySubscribe(tank.getTankType(), worldObj, xCoord + dir.offsetX * 1 + rot.offsetX * 1, yCoord, zCoord + dir.offsetZ * 1 + rot.offsetZ * 1, rot); + this.trySubscribe(tank.getTankType(), worldObj, xCoord + dir.offsetX * 2 + rot.offsetX * 0, yCoord, zCoord + dir.offsetZ * 2 + rot.offsetZ * 0, dir); + this.trySubscribe(tank.getTankType(), worldObj, xCoord + dir.offsetX * 2 + rot.offsetX * -1, yCoord, zCoord + dir.offsetZ * 2 + rot.offsetZ * -1, dir); } @Override diff --git a/src/main/resources/assets/hbm/lang/de_DE.lang b/src/main/resources/assets/hbm/lang/de_DE.lang index 4ed70d973..5e7a1b6f3 100644 --- a/src/main/resources/assets/hbm/lang/de_DE.lang +++ b/src/main/resources/assets/hbm/lang/de_DE.lang @@ -624,7 +624,7 @@ hbmfluid.ethanol=Ethanol hbmfluid.enderjuice=Endersaft hbmfluid.fracksol=Frackinglösung hbmfluid.gas=Erdgas -hbmfluid.gas_coker=Coker-Gas +hbmfluid.gas_coker=Koker-Gas hbmfluid.gasoline=Benzin hbmfluid.gasoline_leaded=Bleibenzin hbmfluid.heatingoil=Heizöl @@ -651,13 +651,13 @@ hbmfluid.mug=Mug Root Beer hbmfluid.mug_hot=Heißes Mug Root Beer hbmfluid.mustardgas=Senfgas hbmfluid.naphtha=Mitteldestillat -hbmfluid.naphtha_coker=Coker-Naphtha +hbmfluid.naphtha_coker=Koker-Naphtha hbmfluid.naphtha_crack=Crack-Mitteldestillat hbmfluid.nitan=NITAN© 100 Oktan Supertreibstoff hbmfluid.nitric_acid=Salpetersäure hbmfluid.none=Nichts hbmfluid.oil=Rohöl -hbmfluid.oil_coker=Coker-Öl +hbmfluid.oil_coker=Koker-Öl hbmfluid.oxyhydrogen=Knallgas hbmfluid.oxygen=Flüssiger Sauerstoff hbmfluid.pain=Pandemonium(III)tantalit-Lösung @@ -1881,6 +1881,7 @@ 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_remington.name=バイデン ブラスト [BIDEN BLAST] item.gun_revolver.name=Verbesserter Revolver item.gun_revolver_ammo.name=Bleipatrone item.gun_revolver_blackjack.name=Blackjack Five-Shooter @@ -3303,7 +3304,7 @@ itemGroup.tabTest=Nuclear Tech Mod Test Tab itemGroup.tabWeapon=NTM Waffen und Geschütze potion.hbm_bang=! ! ! -potion.hbm_death=Schwere Mutation +potion.hbm_death=Astolfisierung potion.hbm_lead=Bleivergiftung potion.hbm_mutation=Verdorbenes Herz potion.hbm_potionsickness=Trankkrankheit @@ -3875,6 +3876,7 @@ tile.machine_chungus.desc=Effizienz: 85%% tile.machine_coal_off.name=Verbrennungsgenerator tile.machine_coal_on.name=Verbrennungsgenerator tile.machine_coker.name=Koker-Anlage +tile.machine_coker.desc=Verkokt Öl, erzeugt fluides Nebenprodukt.$Benötigt externe Hitzequelle.$Wärmestransferrate: ΔT*0.025 TU/t tile.machine_combine_factory.name=CMB-Stahl Hochofen tile.machine_combustion_engine.name=Industrieller Verbrennungsmotor tile.machine_condenser.name=Dampfkondensierer diff --git a/src/main/resources/assets/hbm/lang/en_US.lang b/src/main/resources/assets/hbm/lang/en_US.lang index d168a6073..c35075e33 100644 --- a/src/main/resources/assets/hbm/lang/en_US.lang +++ b/src/main/resources/assets/hbm/lang/en_US.lang @@ -909,6 +909,7 @@ desc.item.gun.lore=to view in-depth lore desc.item.gun.loreFunc=to view in-depth functionality desc.item.gun.manufacturer=Manufacturer: %s desc.item.gun.name=Name: %s +desc.item.gun.pellets=Projectiles: %s - %s desc.item.gun.penetration=Armor Penetration Value: %s desc.item.kitArmor=Armor will be displaced by new set. desc.item.kitHaz=Armor will be displaced by hazmat suit. @@ -1012,6 +1013,7 @@ gun.make.MWT=MWT Prototype Labs gun.make.NAZI=Erfurter Maschinenfabrik Geipel gun.make.NONE=- gun.make.RAYTHEON=Raytheon Missile Systems +gun.make.REMINGTON=Remington Arms gun.make.ROCKWELL=Rockwell International Corporation gun.make.ROCKWELL_U=Rockwell International Corporation? gun.make.RYAN=Ryan Industries @@ -1078,6 +1080,7 @@ gun.name.nerf=NERF blaster of unknown design gun.name.osipr=Overwatch Standard Issue Pulse Rifle gun.name.panz=Raketenpanzerbüchse 54 gun.name.quadro=OpenQuadro Guided Man-Portable Missile Launcher +gun.name.remington870=Remington 870 gun.name.revolverCursed=Britannia Standard Issue Motorized Handgun gun.name.sauer=Sauer Shotgun gun.name.spas12=Franchi SPAS-12 @@ -2520,6 +2523,7 @@ 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_remington.name=バイデン ブラスト [BIDEN BLAST] item.gun_revolver.name=Enhanced Revolver item.gun_revolver_ammo.name=Lead Bullet item.gun_revolver_blackjack.name=Blackjack Five-Shooter @@ -4096,7 +4100,7 @@ itemGroup.tabTest=Nuclear Tech Mod Test Tab itemGroup.tabWeapon=NTM Weapons and Turrets potion.hbm_bang=! ! ! -potion.hbm_death=Heavy Mutation +potion.hbm_death=Astolfization potion.hbm_lead=Lead Poisoning potion.hbm_mutation=Tainted Heart potion.hbm_phosphorus=Phosphorus Burns @@ -4688,6 +4692,7 @@ tile.machine_chungus.desc=Efficiency: 85%% tile.machine_coal_off.name=Combustion Generator tile.machine_coal_on.name=Combustion Generator tile.machine_coker.name=Coker Unit +tile.machine_coker.desc=Cokes oil, creating fluid byproducts.$Requires external heat source.$Heat transfer rate: ΔT*0.025 TU/t tile.machine_combine_factory.name=CMB Steel Furnace tile.machine_combustion_engine.name=Industrial Combustion Engine tile.machine_condenser.name=Steam Condenser diff --git a/src/main/resources/assets/hbm/models/weapons/remington.obj b/src/main/resources/assets/hbm/models/weapons/remington.obj new file mode 100644 index 000000000..6a4a0996a --- /dev/null +++ b/src/main/resources/assets/hbm/models/weapons/remington.obj @@ -0,0 +1,1397 @@ +# Blender v2.79 (sub 0) OBJ File: 'remington.blend' +# www.blender.org +o Pump +v 4.470348 4.051385 0.238853 +v 4.464032 4.375494 0.170446 +v 4.517191 4.375128 0.170446 +v 4.516782 4.097449 0.238853 +v 2.114282 4.046224 0.238853 +v 2.115330 4.391657 0.170446 +v 1.935458 3.997166 0.238853 +v 1.938089 4.280882 0.170446 +v 1.743975 3.978176 0.238853 +v 1.754518 4.246067 0.170446 +v 1.292959 3.962351 0.238853 +v 1.298755 4.214417 0.170446 +v 4.470348 4.051385 -0.248818 +v 4.516782 4.097449 -0.248818 +v 4.517191 4.375128 -0.180411 +v 4.464032 4.375494 -0.180411 +v 2.114282 4.046224 -0.248818 +v 2.115330 4.391657 -0.180411 +v 1.938089 4.280882 -0.180411 +v 1.935458 3.997166 -0.248818 +v 1.754518 4.246067 -0.180411 +v 1.743975 3.978176 -0.248818 +v 1.298755 4.214416 -0.180411 +v 1.292959 3.962351 -0.248818 +v 2.113234 3.792164 0.170446 +v 4.476664 3.818649 0.170446 +v 4.476664 3.818649 -0.180410 +v 2.113234 3.792164 -0.180410 +v 4.516372 3.911143 0.170446 +v 4.516372 3.911143 -0.180410 +v 1.932828 3.804824 0.170446 +v 1.932828 3.804824 -0.180410 +v 1.733431 3.801659 0.170446 +v 1.733431 3.801659 -0.180410 +v 1.287163 3.801659 0.170446 +v 1.287163 3.801659 -0.180410 +vt 0.864829 0.032779 +vt 0.823320 0.058384 +vt 0.817558 0.031254 +vt 0.815862 0.381968 +vt 0.858642 0.397274 +vt 0.823150 0.398077 +vt 0.857696 0.355504 +vt 0.822205 0.356307 +vt 0.858781 0.014506 +vt 0.824771 0.013409 +vt 0.857330 0.059481 +vt 0.865193 0.380852 +vt 0.796575 0.058190 +vt 0.823225 0.063426 +vt 0.792403 0.062566 +vt 0.793538 0.277032 +vt 0.824707 0.270438 +vt 0.821187 0.290152 +vt 0.791601 0.294748 +vt 0.820728 0.309376 +vt 0.792296 0.314027 +vt 0.795819 0.359768 +vt 0.856967 0.064571 +vt 0.884708 0.062410 +vt 0.888162 0.067556 +vt 0.883401 0.276703 +vt 0.856989 0.289393 +vt 0.853394 0.271357 +vt 0.885748 0.293777 +vt 0.857549 0.308583 +vt 0.885593 0.312538 +vt 0.907260 0.278504 +vt 0.940020 0.062713 +vt 0.940017 0.280374 +vt 0.909753 0.072431 +vt 0.935924 0.052137 +vt 0.905408 0.295551 +vt 0.939146 0.297544 +vt 0.904106 0.314997 +vt 0.938208 0.316923 +vt 0.901397 0.359208 +vt 0.936004 0.360941 +vt 0.884004 0.357643 +vt 0.904099 0.065820 +vt 0.773406 0.317183 +vt 0.778246 0.362247 +vt 0.771554 0.297195 +vt 0.768662 0.279468 +vt 0.778275 0.057591 +vt 0.770061 0.061917 +vn 1.0000 -0.0015 0.0000 +vn -0.9994 0.0360 0.0000 +vn -0.9997 0.0230 0.0000 +vn 1.0000 -0.0022 0.0000 +vn -0.0495 0.0646 0.9967 +vn -0.0019 0.7811 0.6244 +vn 0.1091 -0.1147 0.9874 +vn -0.0095 -0.0064 0.9999 +vn -0.2170 0.7834 0.5825 +vn -0.2719 0.7024 0.6578 +vn -0.0040 -0.0512 0.9987 +vn -0.0978 0.7738 0.6258 +vn -0.0011 -0.0608 0.9982 +vn -0.0502 0.7782 0.6260 +vn -0.0029 -0.0777 0.9970 +vn -0.0019 0.7811 -0.6244 +vn -0.0495 0.0646 -0.9967 +vn 0.1091 -0.1147 -0.9874 +vn -0.0095 -0.0064 -0.9999 +vn -0.2719 0.7024 -0.6578 +vn -0.2170 0.7834 -0.5825 +vn -0.0040 -0.0512 -0.9987 +vn -0.0978 0.7738 -0.6258 +vn -0.0011 -0.0608 -0.9982 +vn -0.0502 0.7782 -0.6260 +vn -0.0123 -0.8056 -0.5923 +vn 0.4607 -0.7282 0.5074 +vn -0.0123 -0.8056 0.5923 +vn 0.4607 -0.7282 -0.5074 +vn 0.7415 -0.3337 0.5821 +vn -0.0176 -0.8135 -0.5812 +vn -0.0176 -0.8135 0.5812 +vn 0.0054 0.7863 -0.6178 +vn 0.0054 0.7863 0.6178 +vn 0.0095 -0.8271 -0.5619 +vn 0.0095 -0.8271 0.5619 +vn 0.0000 -0.8380 -0.5456 +vn 0.0000 -0.8380 0.5456 +vn -0.0029 -0.0777 -0.9970 +vn 0.7415 -0.3337 -0.5821 +s off +f 14/1/1 3/2/1 4/3/1 +f 11/4/2 36/5/2 35/6/2 +f 23/7/3 11/4/3 12/8/3 +f 30/9/4 4/3/4 29/10/4 +f 14/1/1 15/11/1 3/2/1 +f 11/4/2 24/12/2 36/5/2 +f 23/7/3 24/12/3 11/4/3 +f 30/9/4 14/1/4 4/3/4 +s 1 +f 4/13/5 2/14/6 1/15/7 +f 5/16/8 2/14/6 6/17/9 +f 5/16/8 8/18/10 7/19/11 +f 7/19/11 10/20/12 9/21/13 +f 9/21/13 12/8/14 11/22/15 +f 16/23/16 14/24/17 13/25/18 +f 17/26/19 16/23/16 13/25/18 +f 17/26/19 19/27/20 18/28/21 +f 20/29/22 21/30/23 19/27/20 +f 22/31/24 23/7/25 21/30/23 +f 28/32/26 26/33/27 25/34/28 +f 16/23/16 6/17/9 2/14/6 +f 18/28/21 8/18/10 6/17/9 +f 27/35/29 29/36/30 26/33/27 +f 32/37/31 25/34/28 31/38/32 +f 15/11/33 2/14/6 3/2/34 +f 19/27/20 10/20/12 8/18/10 +f 34/39/35 31/38/32 33/40/36 +f 21/30/23 12/8/14 10/20/12 +f 36/41/37 33/40/36 35/42/38 +f 34/39/35 24/43/39 22/31/24 +f 32/37/31 22/31/24 20/29/22 +f 28/32/26 20/29/22 17/26/19 +f 28/32/26 13/25/18 27/35/29 +f 13/25/18 30/44/40 27/35/29 +f 33/45/36 11/22/15 35/46/38 +f 31/47/32 9/21/13 33/45/36 +f 25/48/28 7/19/11 31/47/32 +f 25/48/28 1/15/7 5/16/8 +f 29/49/30 1/15/7 26/50/27 +f 4/13/5 3/2/34 2/14/6 +f 5/16/8 1/15/7 2/14/6 +f 5/16/8 6/17/9 8/18/10 +f 7/19/11 8/18/10 10/20/12 +f 9/21/13 10/20/12 12/8/14 +f 16/23/16 15/11/33 14/24/17 +f 17/26/19 18/28/21 16/23/16 +f 17/26/19 20/29/22 19/27/20 +f 20/29/22 22/31/24 21/30/23 +f 22/31/24 24/43/39 23/7/25 +f 28/32/26 27/35/29 26/33/27 +f 16/23/16 18/28/21 6/17/9 +f 18/28/21 19/27/20 8/18/10 +f 27/35/29 30/44/40 29/36/30 +f 32/37/31 28/32/26 25/34/28 +f 15/11/33 16/23/16 2/14/6 +f 19/27/20 21/30/23 10/20/12 +f 34/39/35 32/37/31 31/38/32 +f 21/30/23 23/7/25 12/8/14 +f 36/41/37 34/39/35 33/40/36 +f 34/39/35 36/41/37 24/43/39 +f 32/37/31 34/39/35 22/31/24 +f 28/32/26 32/37/31 20/29/22 +f 28/32/26 17/26/19 13/25/18 +f 13/25/18 14/24/17 30/44/40 +f 33/45/36 9/21/13 11/22/15 +f 31/47/32 7/19/11 9/21/13 +f 25/48/28 5/16/8 7/19/11 +f 25/48/28 26/50/27 1/15/7 +f 29/49/30 4/13/5 1/15/7 +o Gun +v -5.112951 4.013554 -0.065163 +v -5.105778 3.902181 -0.180411 +v -5.105778 3.902181 0.170446 +v -5.112951 4.013554 0.055197 +v 0.602908 3.893884 0.084710 +v 0.602236 4.009133 0.200229 +v 0.599076 4.551005 0.200230 +v 0.598345 4.676232 0.084971 +v 0.598345 4.676232 -0.094936 +v 0.599076 4.551005 -0.210195 +v 0.602236 4.009133 -0.210195 +v 0.602908 3.893884 -0.094675 +v -1.666145 4.663572 0.054192 +v -1.857614 4.621053 0.055192 +v -1.857614 4.621053 -0.065157 +v -1.666145 4.663572 -0.064157 +v -2.478364 3.807992 0.054210 +v -2.213445 3.836719 0.041686 +v -2.213445 3.836719 -0.051651 +v -2.478364 3.807992 -0.064175 +v -2.906781 3.570996 0.054613 +v -2.665227 3.748743 0.054442 +v -2.665227 3.748743 -0.064407 +v -2.906781 3.570996 -0.064578 +v -3.143145 4.117467 0.055195 +v -3.193279 4.111999 0.055196 +v -3.193279 4.111999 -0.065161 +v -3.143145 4.117467 -0.065161 +v -3.160185 3.084241 0.054826 +v -3.033484 3.404187 0.054738 +v -3.033484 3.404187 -0.064703 +v -3.160185 3.084241 -0.064791 +v -6.301458 3.916862 0.055197 +v -6.301458 3.916862 -0.065163 +v -3.924444 4.110246 0.055196 +v -3.924444 4.110246 -0.065161 +v -5.033370 2.777969 0.054928 +v -3.810306 3.255416 0.054917 +v -3.810306 3.255416 -0.064883 +v -5.033370 2.777969 -0.065163 +v -6.545590 2.203708 0.055197 +v -6.141582 2.333336 0.055197 +v -6.141582 2.333336 -0.065163 +v -6.545590 2.203708 -0.065163 +v -3.477396 3.188155 0.054884 +v -3.477396 3.188155 -0.064849 +v -6.950308 2.039633 0.055197 +v -6.843499 2.082934 0.055197 +v -6.843499 2.082934 -0.065163 +v -6.950308 2.039633 -0.065163 +v -1.514214 4.676232 0.054190 +v -1.514214 4.676232 -0.064155 +v -2.438198 3.938664 0.170446 +v -2.678900 3.863265 0.170446 +v -2.715178 4.167140 0.170446 +v -2.308827 4.359546 0.170446 +v -0.826960 3.892838 0.109936 +v -0.811455 3.840602 0.089794 +v -0.933279 3.774469 0.065189 +v -1.393356 3.767455 0.065189 +v -1.519956 3.881396 0.109936 +v -0.711728 3.894740 -0.005583 +v -0.711728 3.894740 -0.004382 +v -0.811455 3.840602 -0.099759 +v -0.933279 3.774469 -0.075154 +v -1.186481 3.660529 0.065189 +v -1.339550 3.666174 0.065189 +v -1.382712 3.511773 0.065189 +v -1.437666 3.539574 0.065189 +v -1.696049 3.426317 0.065189 +v -1.694033 3.479438 0.065189 +v -1.974571 3.467462 0.065189 +v -1.959894 3.517418 0.065189 +v -2.091677 3.552918 0.065189 +v -1.994710 3.593379 0.065189 +v -2.132822 3.625713 0.065189 +v -1.975719 3.710485 0.065189 +v -2.145482 3.761809 0.065189 +v -1.947234 3.808600 0.065189 +v -1.733595 3.844998 0.065189 +v -1.841206 3.740552 0.065189 +v -1.899759 3.745300 0.065189 +v -1.834876 3.658262 0.065189 +v -1.868109 3.647184 0.065189 +v -1.812721 3.572806 0.065189 +v -1.833293 3.545904 0.065189 +v 0.598663 4.464297 -0.179291 +v 7.053775 4.464296 -0.179291 +v 7.053775 4.337518 -0.126778 +v 0.598663 4.337519 -0.126778 +v 7.053775 4.285005 0.000000 +v 0.598663 4.285006 0.000000 +v 7.053775 4.337518 0.126778 +v 0.598663 4.337519 0.126778 +v 7.053775 4.464296 0.179291 +v 0.598663 4.464297 0.179291 +v 7.053775 4.591074 0.126778 +v 0.598663 4.591074 0.126778 +v 7.053775 4.643588 0.000000 +v 0.598663 4.643588 0.000000 +v 7.053775 4.591074 -0.126778 +v 0.598663 4.591074 -0.126778 +v 0.598663 4.231049 -0.126778 +v 4.738556 4.231049 -0.126778 +v 4.738556 4.104270 -0.179291 +v 0.598663 4.104271 -0.179291 +v 0.598663 3.924980 0.000000 +v 4.738556 3.924979 0.000000 +v 4.738556 3.977493 0.126778 +v 0.598663 3.977493 0.126778 +v 4.738556 4.104270 0.179291 +v 0.598663 4.104271 0.179291 +v 4.738556 4.231049 0.126778 +v 0.598663 4.231049 0.126778 +v 4.738556 4.283562 0.000000 +v 0.598663 4.283562 0.000000 +v 4.738556 3.977493 -0.126778 +v 0.598663 3.977493 -0.126778 +v -2.145515 3.761845 -0.075167 +v -2.100131 3.849006 -0.090017 +v -1.519956 3.881396 -0.119901 +v -1.515127 4.549832 -0.169949 +v -1.737748 4.529163 -0.169593 +v -2.154962 3.965629 -0.115909 +v -1.918767 4.486259 -0.167145 +v -2.308827 4.359546 -0.180411 +v -2.438198 3.938664 -0.180411 +v -2.678900 3.863265 -0.180411 +v -2.715178 4.167140 -0.180411 +v -3.057939 4.018990 -0.180411 +v -2.940559 3.671105 -0.180411 +v -3.126581 4.009727 -0.180411 +v -3.051667 3.522461 -0.180411 +v -3.480488 3.321639 -0.180411 +v -3.496978 4.033666 -0.180411 +v -3.909676 3.999638 -0.180411 +v -3.828276 3.390000 -0.180411 +v -3.189723 4.001576 -0.180411 +v -3.164598 3.221291 -0.180411 +v -5.042223 2.915424 -0.180411 +v -6.857377 2.201114 -0.180411 +v -7.035906 3.721401 -0.180411 +v -7.105495 3.463608 -0.180411 +v -6.963232 2.158221 -0.180411 +v -6.289105 3.794504 -0.180411 +v -6.153575 2.452128 -0.180411 +v -6.558358 2.322273 -0.180411 +v -6.713084 3.759094 -0.180411 +v -0.826960 3.892838 -0.119901 +v -0.685173 4.009406 -0.133150 +v -0.559645 4.551436 -0.195776 +v -1.393356 3.767455 -0.075154 +v -1.947234 3.808600 -0.075154 +v -1.733595 3.844998 -0.075154 +v -1.339550 3.666174 -0.075154 +v -1.186481 3.660529 -0.075154 +v -1.437666 3.539574 -0.075154 +v -1.382712 3.511773 -0.075154 +v -1.694033 3.479438 -0.075154 +v -1.696049 3.426317 -0.075154 +v -1.959894 3.517418 -0.075154 +v -1.974571 3.467462 -0.075154 +v -1.994710 3.593379 -0.075154 +v -2.091677 3.552918 -0.075154 +v -1.975719 3.710485 -0.075154 +v -2.132822 3.625713 -0.075154 +v -1.899759 3.745300 -0.075154 +v -1.841206 3.740552 -0.075154 +v -1.868109 3.647184 -0.075154 +v -1.834876 3.658262 -0.075154 +v -1.833293 3.545904 -0.075154 +v -1.812721 3.572806 -0.075154 +v -6.857377 2.201114 0.170445 +v -6.963232 2.158221 0.170445 +v -7.105495 3.463608 0.170445 +v -7.035906 3.721401 0.170446 +v -7.050545 3.846062 0.055197 +v -7.120131 3.597898 0.055197 +v -7.120131 3.597898 -0.065163 +v -7.050545 3.846062 -0.065163 +v -1.515127 4.549832 0.159984 +v -0.559645 4.551436 0.185811 +v -0.685173 4.009405 0.123185 +v -6.153575 2.452128 0.170445 +v -6.558358 2.322273 0.170445 +v -6.713084 3.759094 0.170446 +v -6.289105 3.794504 0.170446 +v -5.041132 2.910362 0.170445 +v -2.100131 3.849006 0.080052 +v -1.737748 4.529163 0.159628 +v -3.828276 3.390000 0.170445 +v -3.909676 3.999638 0.170446 +v -2.154962 3.965629 0.105944 +v -1.918767 4.486259 0.157180 +v -0.530743 4.676232 0.084970 +v -0.530743 4.676232 -0.094935 +v -2.940559 3.671105 0.170446 +v -3.057939 4.018990 0.170446 +v -6.726351 3.882294 0.055197 +v -6.726351 3.882294 -0.065163 +v -2.268081 4.492105 0.055193 +v -2.268081 4.492105 -0.065158 +v -2.728401 4.277896 0.055194 +v -2.728401 4.277896 -0.065159 +v -3.051667 3.522461 0.170445 +v -3.126581 4.009727 0.170446 +v -3.093011 4.122937 0.055195 +v -3.093011 4.122937 -0.065160 +v -3.499552 4.144814 0.055196 +v -3.499552 4.144814 -0.065161 +v -3.480488 3.321639 0.170445 +v -3.496978 4.033666 0.170446 +v -3.164598 3.221291 0.170445 +v -3.189723 4.001576 0.170446 +v -0.452439 4.315853 0.162668 +v 0.430686 4.315853 0.191772 +v -0.452439 4.519165 0.186038 +v 0.430686 4.519165 0.198078 +vt 0.810585 0.462900 +vt 0.810585 0.567026 +vt 0.731720 0.462900 +vt 0.917774 0.422399 +vt 0.968228 0.472853 +vt 0.917774 0.523308 +vt 0.459182 0.923197 +vt 0.479882 0.923197 +vt 0.479881 0.943896 +vt 0.891510 0.620277 +vt 0.896272 0.640007 +vt 0.891510 0.640007 +vt 0.703125 0.921875 +vt 0.523438 0.960938 +vt 0.523438 0.921875 +vt 0.788387 0.589172 +vt 0.753918 0.589172 +vt 0.731720 0.567026 +vt 0.753867 0.438837 +vt 0.788437 0.438837 +vt 0.867320 0.472853 +vt 0.882097 0.437177 +vt 0.953450 0.437177 +vt 0.953450 0.508530 +vt 0.882097 0.508530 +vt 0.459182 0.943896 +vt 0.454895 0.933547 +vt 0.469532 0.918910 +vt 0.484169 0.933547 +vt 0.469532 0.948183 +vt 0.896272 0.620277 +vt 0.703125 0.960938 +vt 0.265217 0.603645 +vt 0.227917 0.624794 +vt 0.265076 0.625865 +vt 0.062957 0.466013 +vt 0.109501 0.425991 +vt 0.056471 0.442087 +vt 0.658552 0.151318 +vt 0.707840 0.161074 +vt 0.669941 0.136406 +vt 0.629331 0.281703 +vt 0.620680 0.262350 +vt 0.621490 0.281989 +vt 0.602836 0.100498 +vt 0.645468 0.115288 +vt 0.607139 0.085117 +vt 0.633240 0.129305 +vt 0.308914 0.288450 +vt 0.119382 0.326891 +vt 0.310691 0.307902 +vt 0.503112 0.272396 +vt 0.504518 0.291958 +vt 0.286925 0.055937 +vt 0.504299 0.110636 +vt 0.504983 0.090153 +vt 0.030596 0.030829 +vt 0.100246 0.021875 +vt 0.033433 0.011876 +vt 0.560482 0.103717 +vt 0.559295 0.086301 +vt 0.909966 0.772776 +vt 0.895143 0.761855 +vt 0.907688 0.759674 +vt 0.897484 0.774987 +vt 0.859844 0.768146 +vt 0.293603 0.603181 +vt 0.294138 0.625696 +vt 0.090847 0.510531 +vt 0.046548 0.563242 +vt 0.042879 0.504327 +vt 0.386403 0.434406 +vt 0.412361 0.457082 +vt 0.294234 0.444144 +vt 0.295057 0.700286 +vt 0.316422 0.674877 +vt 0.316414 0.704083 +vt 0.333051 0.417789 +vt 0.302618 0.422567 +vt 0.290402 0.392766 +vt 0.280079 0.399575 +vt 0.225893 0.382844 +vt 0.175132 0.407271 +vt 0.170951 0.397657 +vt 0.149810 0.417672 +vt 0.170146 0.423220 +vt 0.143502 0.433240 +vt 0.176883 0.445919 +vt 0.144614 0.460700 +vt 0.850837 0.680302 +vt 0.860705 0.665594 +vt 0.880427 0.673045 +vt 0.852012 0.655056 +vt 0.856918 0.654626 +vt 0.854995 0.642365 +vt 0.727911 0.837417 +vt 0.022087 0.852422 +vt 0.022087 0.837415 +vt 0.727911 0.852422 +vt 0.022087 0.867430 +vt 0.727913 0.747390 +vt 0.022089 0.762379 +vt 0.022089 0.747371 +vt 0.727912 0.762395 +vt 0.022088 0.777386 +vt 0.727912 0.777399 +vt 0.022088 0.792393 +vt 0.727912 0.792404 +vt 0.022088 0.807400 +vt 0.727911 0.807408 +vt 0.022088 0.822408 +vt 0.727911 0.822413 +vt 0.474785 0.942561 +vt 0.022088 0.957569 +vt 0.022088 0.942564 +vt 0.474785 0.867534 +vt 0.022088 0.882546 +vt 0.022087 0.867541 +vt 0.474785 0.882540 +vt 0.022088 0.897550 +vt 0.474785 0.897545 +vt 0.022088 0.912555 +vt 0.474785 0.912551 +vt 0.022088 0.927559 +vt 0.474785 0.927556 +vt 0.474785 0.957567 +vt 0.022088 0.972573 +vt 0.474786 0.972572 +vt 0.022088 0.987578 +vt 0.141775 0.430009 +vt 0.122000 0.408061 +vt 0.248277 0.573554 +vt 0.271138 0.443328 +vt 0.151148 0.447865 +vt 0.143827 0.475073 +vt 0.135316 0.565877 +vt 0.212560 0.572296 +vt 0.694597 0.199946 +vt 0.640565 0.235479 +vt 0.699482 0.245226 +vt 0.649731 0.175629 +vt 0.629334 0.235727 +vt 0.503237 0.141466 +vt 0.568999 0.243384 +vt 0.559631 0.130404 +vt 0.627151 0.155114 +vt 0.619063 0.235893 +vt 0.601524 0.119228 +vt 0.306201 0.262489 +vt 0.502376 0.246265 +vt 0.897420 0.793191 +vt 0.895298 0.927965 +vt 0.882382 0.950618 +vt 0.285598 0.103345 +vt 0.115128 0.280588 +vt 0.861789 0.799940 +vt 0.850682 0.955557 +vt 0.290740 0.571758 +vt 0.445893 0.447827 +vt 0.412664 0.427645 +vt 0.097500 0.066951 +vt 0.047160 0.287302 +vt 0.082675 0.495928 +vt 0.050147 0.558151 +vt 0.294505 0.415662 +vt 0.225672 0.436728 +vt 0.182426 0.435035 +vt 0.333623 0.388990 +vt 0.386762 0.405287 +vt 0.290803 0.363616 +vt 0.303025 0.393785 +vt 0.225553 0.352973 +vt 0.280317 0.370421 +vt 0.173771 0.376849 +vt 0.227081 0.363707 +vt 0.147974 0.386830 +vt 0.169746 0.367041 +vt 0.141286 0.402377 +vt 0.168368 0.392882 +vt 0.174660 0.416001 +vt 0.907629 0.653134 +vt 0.919563 0.640046 +vt 0.919563 0.670514 +vt 0.895324 0.647201 +vt 0.909669 0.645131 +vt 0.883708 0.653121 +vt 0.896075 0.652068 +vt 0.499507 0.703859 +vt 0.476989 0.684128 +vt 0.499507 0.684128 +vt 0.815297 0.780573 +vt 0.807303 0.914495 +vt 0.803560 0.777502 +vt 0.876454 0.620277 +vt 0.876454 0.640007 +vt 0.214339 0.678639 +vt 0.252275 0.700274 +vt 0.214333 0.700264 +vt 0.884379 0.964703 +vt 0.909966 0.956254 +vt 0.890143 0.974636 +vt 0.908683 0.640007 +vt 0.445680 0.477727 +vt 0.475655 0.589140 +vt 0.286353 0.602104 +vt 0.476989 0.703859 +vt 0.439969 0.684128 +vt 0.164295 0.678625 +vt 0.164289 0.700250 +vt 0.101585 0.084926 +vt 0.050621 0.307480 +vt 0.033882 0.075621 +vt 0.439969 0.703859 +vt 0.402213 0.684128 +vt 0.120913 0.678613 +vt 0.120907 0.700238 +vt 0.708036 0.482915 +vt 0.475645 0.589132 +vt 0.291238 0.124486 +vt 0.118928 0.300851 +vt 0.271116 0.471283 +vt 0.243054 0.602496 +vt 0.155545 0.477278 +vt 0.402213 0.703859 +vt 0.390466 0.684128 +vt 0.500926 0.164420 +vt 0.309814 0.283356 +vt 0.147680 0.502653 +vt 0.129911 0.584896 +vt 0.098575 0.678607 +vt 0.098569 0.700232 +vt 0.097152 0.040725 +vt 0.207386 0.598906 +vt 0.933875 0.960964 +vt 0.933875 0.773016 +vt 0.984094 0.960964 +vt 0.704517 0.588195 +vt 0.483981 0.624209 +vt 0.704653 0.623356 +vt 0.390466 0.703859 +vt 0.373787 0.684128 +vt 0.085691 0.678604 +vt 0.085685 0.700228 +vt 0.694311 0.214929 +vt 0.639302 0.249556 +vt 0.649024 0.190576 +vt 0.227005 0.465484 +vt 0.117466 0.307614 +vt 0.051220 0.333640 +vt 0.228956 0.602159 +vt 0.147373 0.619440 +vt 0.373787 0.703859 +vt 0.359424 0.684128 +vt 0.024062 0.473973 +vt 0.018614 0.451028 +vt 0.054106 0.588288 +vt 0.052076 0.611133 +vt 0.064624 0.700223 +vt 0.855397 0.973903 +vt 0.859323 0.985274 +vt 0.476566 0.557773 +vt 0.704652 0.449581 +vt 0.628182 0.249803 +vt 0.627142 0.169560 +vt 0.849691 0.789654 +vt 0.818207 0.938125 +vt 0.701244 0.269589 +vt 0.637111 0.281729 +vt 0.699202 0.288452 +vt 0.570043 0.703859 +vt 0.539575 0.677838 +vt 0.570043 0.684128 +vt 0.539575 0.710150 +vt 0.515630 0.684128 +vt 0.570783 0.268520 +vt 0.572559 0.287373 +vt 0.850837 0.620277 +vt 0.861960 0.640007 +vt 0.850837 0.640007 +vt 0.483190 0.589185 +vt 0.637577 0.262089 +vt 0.920286 0.620277 +vt 0.941368 0.640007 +vt 0.920286 0.640007 +vt 0.515630 0.703859 +vt 0.569403 0.260726 +vt 0.556346 0.147731 +vt 0.861960 0.620277 +vt 0.252281 0.678650 +vt 0.617998 0.250101 +vt 0.601853 0.130295 +vt 0.908683 0.620277 +vt 0.442348 0.442476 +vt 0.131775 0.476132 +vt 0.442260 0.412978 +vt 0.121740 0.443383 +vt 0.707582 0.451210 +vt 0.706507 0.589839 +vt 0.482023 0.620911 +vt 0.221637 0.630474 +vt 0.045642 0.594178 +vt 0.080339 0.477749 +vt 0.697412 0.262019 +vt 0.636347 0.274750 +vt 0.697961 0.190099 +vt 0.620447 0.275434 +vt 0.657530 0.167173 +vt 0.553439 0.119252 +vt 0.634596 0.144122 +vt 0.121211 0.327943 +vt 0.312574 0.309128 +vt 0.504549 0.291471 +vt 0.503318 0.265598 +vt 0.500243 0.135119 +vt 0.289904 0.095967 +vt 0.101358 0.058225 +vt 0.052780 0.334691 +vt 0.816460 0.762701 +vt 0.800971 0.932061 +vt 0.850639 0.942092 +vt 0.814503 0.954710 +vt 0.850639 0.771435 +vt 0.259126 0.634289 +vt 0.288602 0.634277 +vt 0.139959 0.617855 +vt 0.703805 0.418329 +vt 0.704542 0.554851 +vt 0.149094 0.596839 +vt 0.033762 0.503191 +vt 0.698403 0.175955 +vt 0.629106 0.262193 +vt 0.283705 0.074790 +vt 0.030597 0.057430 +vt 0.909490 0.790948 +vt 0.900406 0.946851 +vt 0.862199 0.781355 +vt 0.441465 0.408469 +vt 0.702092 0.382759 +vt 0.334395 0.689295 +vt 0.333901 0.689392 +vt 0.413080 0.444871 +vt 0.295063 0.678662 +vt 0.227537 0.393431 +vt 0.184966 0.464482 +vt 0.853419 0.669482 +vt 0.850837 0.640046 +vt 0.727911 0.867426 +vt 0.474786 0.987578 +vt 0.413306 0.415532 +vt 0.880466 0.649634 +vt 0.950371 0.753681 +vt 0.967598 0.753681 +vt 0.984094 0.773016 +vt 0.967598 0.978039 +vt 0.950371 0.978039 +vt 0.049316 0.314394 +vt 0.359424 0.703859 +vt 0.064624 0.678596 +vt 0.941368 0.620277 +vt 0.705958 0.623592 +vt 0.042879 0.472796 +vt 0.697262 0.287188 +vt 0.628409 0.275077 +vt 0.572536 0.286039 +vt 0.603637 0.104124 +vt 0.033645 0.048906 +vt 0.804432 0.759674 +vt 0.848172 0.959565 +vn 1.0000 0.0058 0.0000 +vn 1.0000 0.0000 0.0000 +vn 0.7944 -0.6075 0.0000 +vn -0.0327 -0.1141 0.9929 +vn -0.0136 -0.0310 0.9994 +vn -0.1304 0.9023 -0.4109 +vn -0.2342 0.8849 0.4026 +vn -0.1304 0.9023 0.4109 +vn 0.2058 -0.8940 -0.3981 +vn -0.2341 -0.7665 0.5980 +vn 0.2058 -0.8940 0.3981 +vn 0.6693 -0.6596 -0.3420 +vn 0.4302 -0.8198 0.3779 +vn 0.6693 -0.6596 0.3420 +vn -0.1008 0.9237 0.3696 +vn -0.0017 0.9245 -0.3812 +vn -0.0017 0.9245 0.3812 +vn 0.3707 -0.8580 -0.3555 +vn 0.8547 -0.4470 0.2640 +vn 0.3707 -0.8580 0.3555 +vn 0.8547 -0.4470 -0.2640 +vn -0.8323 0.5302 -0.1618 +vn -0.0763 0.9147 0.3969 +vn -0.0701 0.8617 -0.5025 +vn -0.0754 0.9240 -0.3748 +vn -0.0754 0.9240 0.3748 +vn 0.7016 -0.6308 0.3314 +vn 0.0750 -0.8892 -0.4513 +vn 0.0758 -0.8893 0.4510 +vn 0.3158 -0.8664 -0.3869 +vn 0.3122 -0.8703 0.3810 +vn 0.3158 -0.8664 0.3869 +vn -0.2339 -0.8802 -0.4130 +vn -0.2339 -0.8802 0.4130 +vn -0.4413 -0.8413 -0.3122 +vn 0.3473 -0.8566 0.3817 +vn -0.4413 -0.8413 0.3122 +vn 0.3473 -0.8566 -0.3817 +vn -0.0434 0.9086 -0.4154 +vn -0.0434 0.9086 0.4154 +vn 0.1326 -0.3338 0.9333 +vn -0.1617 0.3620 0.9181 +vn 0.1559 -0.3255 0.9326 +vn 0.0048 -0.3123 0.9500 +vn 0.0058 -0.3583 0.9336 +vn 0.0041 -0.2491 0.9685 +vn 0.4458 -0.8951 0.0000 +vn 0.4771 -0.8789 0.0000 +vn 0.0000 -0.0000 1.0000 +vn 0.0152 -0.0645 0.9978 +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.7071 0.7071 +vn 0.0000 1.0000 0.0000 +vn 0.0000 0.7071 -0.7071 +vn -0.6836 -0.4365 -0.5850 +vn -0.6835 -0.4366 0.5850 +vn -0.0709 0.3152 -0.9464 +vn -0.0178 -0.0817 -0.9965 +vn -0.1499 -0.1597 -0.9757 +vn 0.1132 -0.2336 -0.9657 +vn -0.1095 0.3455 -0.9320 +vn -0.0866 0.2995 -0.9502 +vn 0.1559 -0.3255 -0.9326 +vn -0.0987 0.3510 -0.9312 +vn -0.1617 0.3620 -0.9181 +vn 0.2686 -0.2850 -0.9201 +vn -0.0500 0.3921 -0.9186 +vn 0.0271 -0.2871 -0.9575 +vn 0.0057 0.4105 -0.9118 +vn -0.0843 -0.3364 -0.9379 +vn 0.3700 -0.2289 -0.9004 +vn -0.0048 0.3673 -0.9301 +vn 0.3388 -0.4105 -0.8465 +vn 0.5809 0.3581 -0.7310 +vn -0.0319 0.3890 -0.9207 +vn 0.1441 -0.3556 -0.9234 +vn -0.7116 -0.0174 -0.7024 +vn -0.4518 0.3360 -0.8264 +vn -0.2668 -0.0410 -0.9629 +vn -0.0319 0.3655 -0.9303 +vn 0.1259 -0.3517 -0.9276 +vn -0.0358 0.3672 -0.9294 +vn -0.0238 0.3123 -0.9497 +vn 0.0462 -0.3931 -0.9183 +vn 0.3189 -0.2434 -0.9160 +vn 0.1337 -0.3654 -0.9212 +vn 0.1326 -0.3338 -0.9333 +vn 0.0041 -0.2491 -0.9685 +vn 0.0059 -0.3598 -0.9330 +vn 0.0058 -0.3583 -0.9336 +vn 0.0431 -0.2297 -0.9723 +vn 0.0165 -0.7847 -0.6196 +vn 0.0290 -0.1615 -0.9864 +vn 0.0048 -0.3123 -0.9500 +vn 0.0153 -0.0645 -0.9978 +vn -0.9963 0.0854 0.0000 +vn -0.5404 0.8414 0.0000 +vn 0.1441 -0.3556 0.9234 +vn -0.7116 -0.0174 0.7024 +vn -0.5443 -0.4088 0.7326 +vn -0.9487 -0.3161 0.0000 +vn -0.9457 -0.3251 0.0000 +vn 0.4417 -0.8972 0.0000 +vn 0.5105 -0.8599 0.0000 +vn -0.5806 0.7420 -0.3353 +vn -0.9803 0.1251 0.1531 +vn -0.5806 0.7420 0.3353 +vn 0.9680 0.2510 0.0000 +vn 0.9864 0.1645 0.0000 +vn 0.0462 -0.3932 0.9183 +vn -0.0305 0.2919 0.9560 +vn -0.0238 0.3123 0.9497 +vn -0.0442 0.9990 0.0000 +vn 0.0598 -0.9982 0.0000 +vn 0.1337 -0.3655 0.9212 +vn -0.0358 0.3672 0.9294 +vn 0.1259 -0.3517 0.9276 +vn 0.5984 0.8012 0.0000 +vn -0.3788 -0.9255 0.0000 +vn -0.0365 -0.3922 0.9192 +vn -0.2698 -0.0565 0.9612 +vn -0.0319 0.3655 0.9303 +vn -0.0178 -0.0817 0.9965 +vn -0.0709 0.3152 0.9464 +vn -0.1499 -0.1597 0.9757 +vn 0.9910 0.1341 0.0000 +vn 0.0276 -0.2866 0.9576 +vn 0.0096 -0.2507 0.9680 +vn 0.1132 -0.2336 0.9657 +vn -0.1095 0.3455 0.9320 +vn -0.7469 -0.6649 0.0000 +vn 0.3122 -0.8703 -0.3810 +vn -0.0866 0.2995 0.9502 +vn -0.5443 -0.4088 -0.7326 +vn -0.0000 0.9155 -0.4023 +vn -0.0087 0.9019 0.4318 +vn -0.0000 0.9155 0.4023 +vn 0.9755 -0.2199 0.0000 +vn -0.9543 -0.2990 0.0001 +vn -0.9543 -0.2990 0.0000 +vn -0.0987 0.3510 0.9312 +vn 0.2686 -0.2850 0.9201 +vn 0.0165 -0.7847 0.6196 +vn 0.0150 -0.8094 0.5870 +vn 0.0430 -0.2297 0.9723 +vn -0.0763 0.9147 -0.3969 +vn -0.0882 0.9132 0.3979 +vn -0.2342 0.8849 -0.4026 +vn -0.3245 0.8695 0.3725 +vn 0.1795 -0.9838 0.0000 +vn 0.4302 -0.8198 -0.3779 +vn -0.3805 0.8498 -0.3647 +vn -0.3805 0.8498 0.3647 +vn -0.9957 -0.0927 0.0001 +vn -0.0882 0.9132 -0.3979 +vn -0.0305 0.2919 -0.9560 +vn -0.0365 -0.3922 -0.9192 +vn -0.0500 0.3921 0.9186 +vn 0.3700 -0.2289 0.9004 +vn -0.4518 0.3360 0.8264 +vn -0.2336 0.8933 0.3840 +vn 0.1680 -0.9858 0.0000 +vn -0.2691 -0.9631 0.0000 +vn -0.7798 -0.6261 0.0000 +vn 0.0114 0.9303 -0.3667 +vn 0.0114 0.9303 0.3667 +vn -0.8880 -0.4598 0.0000 +vn -0.0087 0.9019 -0.4318 +vn -0.2336 0.8933 -0.3840 +vn 0.9353 -0.3539 0.0000 +vn 0.6965 -0.7176 0.0000 +vn 0.0057 0.4105 0.9118 +vn -0.0843 -0.3364 0.9379 +vn -0.0048 0.3673 0.9301 +vn 0.3388 -0.4105 0.8465 +vn 0.3189 -0.2434 0.9160 +vn 0.2033 0.2380 0.9497 +vn 0.2034 0.2380 -0.9497 +vn -0.2342 -0.7665 -0.5980 +vn -0.0243 -0.9190 0.3936 +vn -0.0072 0.3586 0.9335 +vn -0.0319 0.3890 0.9207 +vn -0.0243 -0.9190 -0.3936 +vn -0.0072 0.3586 -0.9335 +vn -0.3245 0.8695 -0.3725 +vn -0.1008 0.9237 -0.3696 +vn -0.0947 -0.9218 -0.3758 +vn -0.9803 0.1251 -0.1531 +vn 0.7372 -0.4050 0.5409 +vn 0.0059 -0.3582 0.9336 +vn 0.0059 -0.3598 0.9330 +vn 0.0290 -0.1615 0.9864 +vn 0.0059 -0.3582 -0.9336 +vn 0.0150 -0.8094 -0.5870 +vn -0.9957 -0.0928 0.0002 +vn 0.7372 -0.4050 -0.5409 +s off +f 43/51/41 42/52/41 46/53/41 +f 124/54/42 135/55/42 131/56/42 +f 141/57/42 151/58/42 147/59/42 +f 207/60/43 121/61/43 122/62/43 +f 252/63/44 253/64/44 251/65/44 +f 42/52/41 41/66/41 48/67/41 +f 48/67/41 47/68/41 42/52/41 +f 47/68/41 46/53/41 42/52/41 +f 46/53/41 45/69/41 44/70/41 +f 44/70/41 43/51/41 46/53/41 +f 127/71/42 125/72/42 124/54/42 +f 124/54/42 137/73/42 135/55/42 +f 135/55/42 133/74/42 131/56/42 +f 131/56/42 129/75/42 127/71/42 +f 127/71/42 124/54/42 131/56/42 +f 144/76/42 153/77/42 141/57/42 +f 141/57/42 140/78/42 151/58/42 +f 151/58/42 149/79/42 147/59/42 +f 147/59/42 145/80/42 144/76/42 +f 144/76/42 141/57/42 147/59/42 +f 207/60/43 208/81/43 121/61/43 +f 252/63/45 254/82/45 253/64/45 +s 1 +f 52/83/46 50/84/47 49/85/48 +f 56/86/49 54/87/50 53/88/51 +f 60/89/52 58/90/53 57/91/54 +f 61/92/55 63/93/56 62/94/57 +f 68/95/58 66/96/59 65/97/60 +f 67/98/61 57/91/54 66/96/59 +f 37/99/62 69/100/63 40/101/64 +f 72/102/65 40/101/64 71/103/66 +f 73/104/67 75/105/68 74/106/69 +f 80/107/70 78/108/71 77/109/72 +f 74/106/69 82/110/73 81/111/74 +f 86/112/75 84/113/76 83/114/77 +f 85/115/78 77/116/72 84/113/76 +f 88/117/79 49/85/48 87/118/80 +f 89/119/81 91/120/82 90/121/83 +f 95/122/84 93/123/85 96/124/86 +f 95/125/87 100/126/88 94/127/88 +f 96/124/86 102/128/89 95/122/84 +f 103/129/89 104/130/89 102/128/89 +f 105/131/89 106/132/89 104/130/89 +f 106/132/89 109/133/89 108/134/89 +f 109/133/89 110/135/89 108/134/89 +f 111/136/89 112/137/89 110/135/89 +f 113/138/89 114/139/90 112/137/89 +f 115/140/89 117/141/89 116/142/89 +f 117/141/89 120/143/89 119/144/89 +f 120/143/89 121/145/89 119/144/89 +f 124/146/91 126/147/92 123/148/91 +f 125/149/92 128/150/93 126/147/92 +f 127/151/93 130/152/94 128/153/93 +f 129/154/94 132/155/89 130/152/94 +f 131/156/89 134/157/95 132/155/89 +f 133/158/95 136/159/96 134/157/95 +f 135/160/96 138/161/97 136/159/96 +f 137/162/97 123/148/91 138/161/97 +f 140/163/97 142/164/91 139/165/97 +f 144/166/93 146/167/94 143/168/93 +f 145/169/94 148/170/89 146/167/94 +f 147/171/89 150/172/95 148/170/89 +f 149/173/95 152/174/96 150/172/95 +f 151/175/96 139/165/97 152/174/96 +f 141/176/91 154/177/92 142/164/91 +f 153/178/92 143/179/93 154/177/92 +f 54/87/50 155/180/98 114/181/99 +f 159/182/100 157/183/101 156/184/102 +f 160/185/103 162/186/104 161/187/105 +f 164/188/106 166/189/107 165/190/108 +f 167/191/109 168/192/110 166/189/107 +f 173/193/111 171/194/112 170/195/113 +f 169/196/114 174/197/115 168/192/110 +f 170/195/113 174/197/115 175/198/116 +f 173/193/111 38/199/117 172/200/118 +f 177/201/119 179/202/120 178/203/121 +f 176/204/122 181/205/123 38/199/117 +f 183/206/124 178/203/121 184/207/125 +f 158/208/126 186/209/127 185/210/128 +f 182/211/129 184/212/125 181/205/123 +f 156/184/102 161/187/105 159/182/100 +f 163/213/130 165/214/108 162/186/104 +f 188/215/131 157/183/132 185/210/133 +f 156/184/134 190/216/135 189/217/136 +f 192/218/91 188/215/131 101/219/137 +f 194/220/91 191/221/91 192/218/91 +f 196/222/91 193/223/91 194/220/91 +f 196/222/91 197/224/91 195/225/91 +f 200/226/91 197/224/91 198/227/91 +f 202/228/91 199/229/91 200/226/91 +f 155/180/138 201/230/91 202/228/91 +f 204/231/91 189/232/91 190/233/91 +f 204/231/91 205/234/91 203/235/91 +f 208/236/91 205/234/91 206/237/91 +f 191/238/139 105/239/140 103/240/139 +f 209/241/141 211/242/142 210/243/143 +f 82/110/73 65/97/60 81/111/74 +f 205/244/144 122/62/145 120/245/144 +f 194/246/146 102/247/147 104/248/146 +f 216/249/148 214/250/149 213/251/150 +f 208/81/151 119/252/152 121/61/151 +f 219/253/153 218/254/154 217/255/155 +f 193/256/140 107/257/156 105/239/140 +f 196/258/157 104/248/146 106/259/157 +f 220/260/158 222/261/159 221/262/160 +f 195/263/156 109/264/161 107/257/156 +f 198/265/162 106/259/157 108/266/162 +f 42/267/163 218/268/154 219/253/153 +f 224/269/164 223/270/165 220/260/158 +f 97/271/166 226/272/167 225/273/168 +f 197/274/161 111/275/169 109/264/161 +f 227/276/170 39/277/171 224/269/164 +f 229/278/172 92/279/173 89/119/81 +f 200/280/174 108/266/162 110/281/174 +f 79/282/175 73/104/67 78/108/71 +f 225/273/168 230/283/176 229/278/172 +f 210/284/143 211/285/142 180/286/177 +f 45/287/178 231/288/179 44/289/180 +f 199/290/169 113/291/181 111/275/169 +f 202/292/182 110/281/174 112/293/183 +f 90/294/83 234/295/184 233/296/185 +f 116/297/186 97/271/187 225/273/188 +f 70/298/189 235/299/190 69/100/63 +f 51/300/191 237/301/192 50/84/47 +f 201/302/181 115/303/193 113/291/181 +f 59/304/194 53/88/51 58/305/53 +f 237/301/192 240/306/195 239/307/196 +f 114/308/197 202/292/182 112/293/183 +f 236/309/198 213/251/150 235/310/190 +f 187/311/199 47/312/200 186/209/127 +f 233/296/185 242/313/201 241/314/202 +f 221/315/160 212/316/203 209/241/141 +f 240/317/195 243/318/204 239/319/196 +f 190/320/205 97/321/206 116/322/205 +f 157/323/206 96/324/207 97/321/206 +f 246/325/208 71/103/66 245/326/209 +f 63/93/56 245/326/209 62/94/57 +f 189/327/193 118/328/210 115/329/193 +f 232/330/211 87/118/80 231/288/179 +f 244/331/212 61/92/55 243/318/204 +f 204/332/213 116/333/214 117/334/213 +f 188/335/207 103/240/139 96/324/207 +f 248/336/215 227/276/170 247/337/216 +f 203/338/210 120/245/144 118/328/210 +f 192/339/147 95/125/87 102/247/147 +f 241/314/202 250/340/217 249/341/218 +f 206/342/152 117/334/213 119/252/152 +f 250/340/217 247/337/216 249/341/218 +f 93/123/219 98/343/220 219/253/153 +f 54/344/50 225/273/168 229/278/172 +f 99/345/221 185/210/128 186/209/127 +f 156/184/102 55/346/222 160/185/103 +f 219/253/153 41/347/223 42/267/163 +f 43/348/224 231/349/179 218/254/154 +f 226/272/167 50/350/47 230/283/176 +f 92/279/173 239/351/196 91/120/82 +f 90/121/83 53/352/51 89/119/81 +f 91/353/82 243/354/204 234/295/184 +f 233/296/185 58/355/53 90/294/83 +f 242/313/201 62/356/57 250/340/217 +f 241/314/202 57/357/54 233/296/185 +f 62/356/57 248/336/215 250/340/217 +f 81/358/74 249/341/218 247/337/216 +f 243/354/204 242/313/201 234/295/184 +f 249/341/218 66/359/59 241/314/202 +f 69/360/63 39/277/171 40/361/64 +f 71/362/66 39/277/171 228/363/225 +f 74/364/69 224/269/164 73/365/67 +f 220/260/158 73/365/67 224/269/164 +f 221/262/160 78/366/71 220/260/158 +f 222/261/159 69/360/63 235/367/190 +f 248/336/215 71/362/66 228/363/225 +f 247/337/216 74/364/69 81/358/74 +f 210/243/143 84/368/76 209/241/141 +f 212/316/203 214/369/149 211/242/142 +f 222/370/159 213/371/150 212/316/203 +f 77/372/72 209/241/141 84/368/76 +f 49/373/48 217/255/155 87/374/80 +f 237/375/192 230/283/176 50/350/47 +f 218/254/154 87/374/80 217/255/155 +f 89/119/81 54/344/50 229/278/172 +f 186/209/127 48/376/226 99/345/221 +f 46/377/227 232/330/211 45/287/178 +f 159/182/100 51/300/191 52/83/46 +f 162/186/104 240/306/195 238/378/228 +f 164/379/106 56/86/49 59/304/194 +f 165/190/108 244/331/212 240/317/195 +f 167/191/109 59/380/194 60/89/52 +f 168/192/110 63/93/56 64/381/229 +f 169/196/114 60/89/52 67/98/61 +f 63/93/56 171/194/112 246/325/208 +f 82/110/73 175/198/116 68/95/58 +f 244/331/212 168/192/110 64/381/229 +f 175/198/116 67/98/61 68/95/58 +f 70/298/189 38/199/117 181/205/123 +f 72/102/65 38/199/117 37/99/62 +f 75/105/68 176/204/122 173/193/111 +f 182/211/129 76/382/230 79/282/175 +f 183/383/124 79/282/175 80/107/70 +f 184/212/125 70/298/189 181/205/123 +f 171/194/112 72/102/65 246/325/208 +f 170/195/113 75/105/68 173/193/111 +f 180/384/177 85/115/78 86/112/75 +f 178/203/121 215/385/231 216/249/148 +f 184/207/125 216/249/148 236/309/198 +f 80/386/70 177/201/119 183/206/124 +f 52/83/46 158/208/126 159/182/100 +f 238/378/228 161/187/105 162/186/104 +f 187/311/199 88/117/79 232/330/211 +f 163/213/130 55/346/222 56/86/49 +f 98/387/220 48/376/226 41/388/223 +f 94/127/232 99/389/221 98/390/220 +f 52/83/46 51/300/191 50/84/47 +f 56/86/49 55/346/222 54/87/50 +f 60/89/52 59/380/194 58/90/53 +f 61/92/55 64/381/229 63/93/56 +f 68/95/58 67/98/61 66/96/59 +f 67/98/61 60/89/52 57/91/54 +f 37/99/62 70/298/189 69/100/63 +f 72/102/65 37/99/62 40/101/64 +f 73/104/67 76/382/230 75/105/68 +f 80/107/70 79/282/175 78/108/71 +f 74/106/69 75/105/68 82/110/73 +f 86/112/75 85/115/78 84/113/76 +f 85/115/78 80/386/70 77/116/72 +f 88/117/79 52/83/46 49/85/48 +f 89/119/81 92/279/173 91/120/82 +f 94/391/233 93/123/85 95/122/84 +f 93/123/85 97/271/234 96/124/86 +f 95/125/87 101/392/87 100/126/88 +f 96/124/86 103/129/89 102/128/89 +f 103/129/89 105/131/89 104/130/89 +f 105/131/89 107/393/89 106/132/89 +f 106/132/89 107/393/89 109/133/89 +f 109/133/89 111/136/89 110/135/89 +f 111/136/89 113/138/89 112/137/89 +f 113/138/89 115/394/235 114/139/90 +f 115/140/89 118/395/89 117/141/89 +f 117/141/89 118/395/89 120/143/89 +f 120/143/89 122/396/89 121/145/89 +f 124/146/91 125/149/92 126/147/92 +f 125/149/92 127/397/93 128/150/93 +f 127/151/93 129/154/94 130/152/94 +f 129/154/94 131/156/89 132/155/89 +f 131/156/89 133/158/95 134/157/95 +f 133/158/95 135/160/96 136/159/96 +f 135/160/96 137/162/97 138/161/97 +f 137/162/97 124/146/91 123/148/91 +f 140/163/97 141/176/91 142/164/91 +f 144/166/93 145/169/94 146/167/94 +f 145/169/94 147/171/89 148/170/89 +f 147/171/89 149/173/95 150/172/95 +f 149/173/95 151/175/96 152/174/96 +f 151/175/96 140/163/97 139/165/97 +f 141/176/91 153/178/92 154/177/92 +f 153/178/92 144/398/93 143/179/93 +f 54/87/50 55/346/222 155/180/98 +f 159/182/100 158/208/126 157/183/101 +f 160/185/103 163/213/130 162/186/104 +f 164/188/106 167/191/109 166/189/107 +f 167/191/109 169/196/114 168/192/110 +f 173/193/111 172/200/118 171/194/112 +f 169/196/114 175/198/116 174/197/115 +f 170/195/113 171/194/112 174/197/115 +f 173/193/111 176/204/122 38/199/117 +f 177/201/119 180/384/177 179/202/120 +f 176/204/122 182/211/129 181/205/123 +f 183/206/124 177/201/119 178/203/121 +f 185/210/128 157/183/101 158/208/126 +f 158/208/126 187/311/199 186/209/127 +f 182/211/129 183/383/124 184/212/125 +f 156/184/102 160/185/103 161/187/105 +f 163/213/130 164/379/106 165/214/108 +f 185/210/133 100/399/236 101/219/137 +f 101/219/137 188/215/131 185/210/133 +f 156/184/134 157/183/237 190/216/135 +f 189/217/136 155/180/138 156/184/134 +f 192/218/91 191/221/91 188/215/131 +f 194/220/91 193/223/91 191/221/91 +f 196/222/91 195/225/91 193/223/91 +f 196/222/91 198/227/91 197/224/91 +f 200/226/91 199/229/91 197/224/91 +f 202/228/91 201/230/91 199/229/91 +f 155/180/138 189/217/136 201/230/91 +f 204/231/91 203/235/91 189/232/91 +f 204/231/91 206/237/91 205/234/91 +f 208/236/91 207/400/91 205/234/91 +f 191/238/139 193/256/140 105/239/140 +f 209/241/141 212/316/203 211/242/142 +f 82/110/73 68/95/58 65/97/60 +f 205/244/144 207/60/145 122/62/145 +f 194/246/146 192/339/147 102/247/147 +f 216/249/148 215/385/231 214/250/149 +f 208/81/151 206/342/152 119/252/152 +f 217/255/155 97/271/166 93/123/219 +f 93/123/219 219/253/153 217/255/155 +f 193/256/140 195/263/156 107/257/156 +f 196/258/157 194/246/146 104/248/146 +f 220/260/158 223/270/165 222/261/159 +f 195/263/156 197/274/161 109/264/161 +f 198/265/162 196/258/157 106/259/157 +f 42/267/163 43/348/224 218/268/154 +f 224/269/164 39/277/171 223/270/165 +f 97/271/166 217/255/155 226/272/167 +f 197/274/161 199/290/169 111/275/169 +f 227/276/170 228/363/225 39/277/171 +f 229/278/172 230/283/176 92/279/173 +f 200/280/174 198/265/162 108/266/162 +f 79/282/175 76/382/230 73/104/67 +f 225/273/168 226/272/167 230/283/176 +f 211/285/142 214/401/149 215/402/231 +f 215/402/231 179/403/120 211/285/142 +f 179/403/120 180/286/177 211/285/142 +f 180/286/177 86/404/75 83/405/77 +f 83/405/77 210/284/143 180/286/177 +f 45/287/178 232/330/211 231/288/179 +f 199/290/169 201/302/181 113/291/181 +f 202/292/182 200/280/174 110/281/174 +f 90/294/83 91/353/82 234/295/184 +f 225/273/188 114/139/90 115/394/235 +f 115/394/235 116/297/186 225/273/188 +f 70/298/189 236/406/198 235/299/190 +f 51/300/191 238/378/228 237/301/192 +f 201/302/181 189/407/193 115/303/193 +f 59/304/194 56/86/49 53/88/51 +f 237/301/192 238/378/228 240/306/195 +f 114/308/197 155/408/238 202/292/182 +f 236/309/198 216/249/148 213/251/150 +f 187/311/199 46/377/227 47/312/200 +f 233/296/185 234/295/184 242/313/201 +f 221/315/160 222/370/159 212/316/203 +f 240/317/195 244/331/212 243/318/204 +f 190/320/205 157/323/206 97/321/206 +f 157/323/206 188/335/207 96/324/207 +f 246/325/208 72/102/65 71/103/66 +f 63/93/56 246/325/208 245/326/209 +f 189/327/193 203/338/210 118/328/210 +f 232/330/211 88/117/79 87/118/80 +f 244/331/212 64/381/229 61/92/55 +f 204/332/213 190/409/214 116/333/214 +f 188/335/207 191/238/139 103/240/139 +f 248/336/215 228/363/225 227/276/170 +f 203/338/210 205/244/144 120/245/144 +f 192/339/147 101/392/87 95/125/87 +f 241/314/202 242/313/201 250/340/217 +f 206/342/152 204/332/213 117/334/213 +f 250/340/217 248/336/215 247/337/216 +f 93/123/219 94/391/232 98/343/220 +f 54/344/50 114/139/99 225/273/168 +f 99/345/221 100/399/239 185/210/128 +f 156/184/102 155/180/98 55/346/222 +f 219/253/153 98/343/220 41/347/223 +f 43/348/224 44/410/180 231/349/179 +f 226/272/167 49/373/48 50/350/47 +f 92/279/173 237/375/192 239/351/196 +f 90/121/83 58/411/53 53/352/51 +f 91/353/82 239/412/196 243/354/204 +f 233/296/185 57/357/54 58/355/53 +f 242/313/201 61/413/55 62/356/57 +f 241/314/202 66/359/59 57/357/54 +f 62/356/57 245/414/209 248/336/215 +f 81/358/74 65/415/60 249/341/218 +f 243/354/204 61/413/55 242/313/201 +f 249/341/218 65/415/60 66/359/59 +f 69/360/63 223/270/165 39/277/171 +f 71/362/66 40/361/64 39/277/171 +f 74/364/69 227/276/170 224/269/164 +f 220/260/158 78/366/71 73/365/67 +f 221/262/160 77/416/72 78/366/71 +f 222/261/159 223/270/165 69/360/63 +f 248/336/215 245/414/209 71/362/66 +f 247/337/216 227/276/170 74/364/69 +f 210/243/143 83/417/77 84/368/76 +f 212/316/203 213/371/150 214/369/149 +f 222/370/159 235/418/190 213/371/150 +f 77/372/72 221/315/160 209/241/141 +f 49/373/48 226/272/167 217/255/155 +f 237/375/192 92/279/173 230/283/176 +f 218/254/154 231/349/179 87/374/80 +f 89/119/81 53/352/51 54/344/50 +f 186/209/127 47/312/200 48/376/226 +f 46/377/227 187/311/199 232/330/211 +f 159/182/100 161/187/105 51/300/191 +f 162/186/104 165/214/108 240/306/195 +f 164/379/106 163/213/130 56/86/49 +f 165/190/108 166/189/107 244/331/212 +f 167/191/109 164/188/106 59/380/194 +f 168/192/110 174/197/115 63/93/56 +f 169/196/114 167/191/109 60/89/52 +f 63/93/56 174/197/115 171/194/112 +f 82/110/73 170/195/113 175/198/116 +f 244/331/212 166/189/107 168/192/110 +f 175/198/116 169/196/114 67/98/61 +f 70/298/189 37/99/62 38/199/117 +f 72/102/65 172/200/118 38/199/117 +f 75/105/68 76/382/230 176/204/122 +f 182/211/129 176/204/122 76/382/230 +f 183/383/124 182/211/129 79/282/175 +f 184/212/125 236/406/198 70/298/189 +f 171/194/112 172/200/118 72/102/65 +f 170/195/113 82/110/73 75/105/68 +f 180/384/177 177/201/119 85/115/78 +f 178/203/121 179/202/120 215/385/231 +f 184/207/125 178/203/121 216/249/148 +f 80/386/70 85/115/78 177/201/119 +f 52/83/46 88/117/79 158/208/126 +f 238/378/228 51/300/191 161/187/105 +f 187/311/199 158/208/126 88/117/79 +f 163/213/130 160/185/103 55/346/222 +f 98/387/220 99/345/221 48/376/226 +f 94/127/232 100/126/239 99/389/221 diff --git a/src/main/resources/assets/hbm/models/weapons/tau.obj b/src/main/resources/assets/hbm/models/weapons/tau.obj new file mode 100644 index 000000000..f0f981346 --- /dev/null +++ b/src/main/resources/assets/hbm/models/weapons/tau.obj @@ -0,0 +1,5293 @@ +# 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.375000 0.144338 -1.375000 +v 0.375000 0.144337 -1.375000 +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.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.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.680769 -0.859548 -1.375000 +v -0.868269 -0.534789 -1.375000 +v -0.868269 -0.534789 -2.125000 +vt 0.168950 0.125000 +vt 0.127854 0.066176 +vt 0.182648 0.066176 +vt 0.237443 0.036765 +vt 0.200913 0.125000 +vt 0.200913 0.036765 +vt 0.353940 0.111230 +vt 0.321932 0.111230 +vt 0.337936 0.066594 +vt 0.264840 0.125000 +vt 0.237443 0.125000 +vt 0.353901 0.111151 +vt 0.322070 0.111151 +vt 0.337986 0.066761 +vt 0.182648 0.125000 +vt 0.182648 0.036765 +vt 0.173516 0.036765 +vt 0.136986 0.036765 +vt 0.301370 0.125000 +vt 0.319635 0.036765 +vt 0.319635 0.125000 +vt 0.182648 0.066176 +vt 0.136986 0.036765 +vt 0.173516 0.036765 +vt 0.200913 0.036765 +vt 0.182648 0.125000 +vt 0.182648 0.036765 +vt 0.182648 0.066176 +vt 0.136986 0.036765 +vt 0.173516 0.036765 +vt 0.301370 0.125000 +vt 0.319635 0.036765 +vt 0.319635 0.125000 +vt 0.182648 0.066176 +vt 0.136986 0.036765 +vt 0.173516 0.036765 +vt 0.200913 0.036765 +vt 0.182648 0.125000 +vt 0.182648 0.036765 +vt 0.182648 0.066176 +vt 0.136986 0.036765 +vt 0.173516 0.036765 +vt 0.301370 0.125000 +vt 0.319635 0.036765 +vt 0.319635 0.125000 +vt 0.182648 0.066176 +vt 0.136986 0.036765 +vt 0.173516 0.036765 +vt 0.301370 0.036765 +vt 0.141553 0.125000 +vt 0.127854 0.066176 +vt 0.237443 0.036765 +vt 0.264840 0.125000 +vt 0.237443 0.125000 +vt 0.200913 0.125000 +vt 0.141553 0.125000 +vt 0.127854 0.066176 +vt 0.301370 0.036765 +vt 0.168950 0.125000 +vt 0.127854 0.066176 +vt 0.237443 0.036765 +vt 0.264840 0.125000 +vt 0.237443 0.125000 +vt 0.200913 0.125000 +vt 0.168950 0.125000 +vt 0.127854 0.066176 +vt 0.301370 0.036765 +vt 0.168950 0.125000 +vt 0.127854 0.066176 +vt 0.141553 0.125000 +vt 0.264840 0.036765 +vt 0.168950 0.125000 +vt 0.264840 0.036765 +vt 0.168950 0.125000 +vt 0.141553 0.125000 +vt 0.264840 0.036765 +vt 0.141553 0.125000 +vt 0.141553 0.125000 +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.0599 0.9982 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.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.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 diff --git a/src/main/resources/assets/hbm/textures/models/tank/tank_CHOLERSTEROL.png b/src/main/resources/assets/hbm/textures/models/tank/tank_CHOLERSTEROL.png new file mode 100644 index 0000000000000000000000000000000000000000..586ddc6ffc1ea64668d05aef239e707d66f64010 GIT binary patch literal 1250 zcmeAS@N?(olHy`uVBq!ia0vp^RY2Us!3HEZPulwcNU;<})Z`w0Lbr+r8>fgO6 zLS&Z)SFng{`u)_!n{^eVZdSd0s%P`EB-=x*HLS@=d*jFal!}<$L6!;5*0;~cRrKuQ zufDl`%ZrwnnESfA_4Yq6-rUw1-qaCZpcJPl1=ixYN62MQlki8a;3L`=rbo5Iooi;y zpAB^4`q%emcCkPB^sMlyl}Hss4c|u~d2j#S$eny2y#zjT`7Qi-YI(m}9Oo{$ z6;Dgo&8|>wpUwPGL~4E2$%{u;e_h-k)+E!*x(>BWD|D zK6>V0;b~WWbYV4vM5*>cPGQxmnYWm}0__Lu&EsnczGTdvRC{Xihwba-!~57@ES|dH zf|tO07SE&FzYAsMfuZx`*y;%35cmEF5 zon0|?M%KjBho-GRDz=;V(Nu--iEp2l${gD*c6U*+-I{*&%SS)me0i~c{rtIdy3@9o zeV=|!^XaGQ%~!U)2zC8dsjq%ywbZ(6x34|dS3f3^oVGbK_l!~;XYtl6A5*f<`SoW- z7v6q!K5cVg@WfotAyy366Y=8UN__fxzgvX&@?-X3_TN{18?riC~%B$OE+ui?OeBIS3 zuJ_iKjO$j;lBMlgx6~K@zM}f==IR$>bG`Rm=o41+D){O(p{t_x+oqmyiGn>&GV8Er zJ;C(?y-wPW3#Tf?aVo_f?5voo`ABq5M|g+ZLTCb6Dzg3`lcRQ{SvY%~A> literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/models/tank/tank_EGG.png b/src/main/resources/assets/hbm/textures/models/tank/tank_EGG.png new file mode 100644 index 0000000000000000000000000000000000000000..ce463919b7e86276a7d3cc0869c1c9dce45f6cc7 GIT binary patch literal 1032 zcmV+j1o!)iP)!K(`@bO*sI8MA$)ONgLj5eZf zyo$Mwc%`VVcolOU@hT&9-JsApAV)h9lcR}OiilSTV)e?Xw&K<4*as z*fZt?Iob)Hz3SK|<5kS>D#K(fA!P@%$9y2lJ`BVwMQjd45Ss&0ibV}4$k9&l>{Z8j z_6k89ZDABgTR;U}cjlONJHhIe6Rci!jLm@vVsoHTYz{;a&t9Pvvu-C?rgVa%Ejq^0 z76{^K3!~T^h#<|)fh<#IqG~?C80`dwc7oL_MOyJ{^>Lk;|BDu#kl1*2KO>Jvyi%kU zuj-tJK)gx_M_ZsVTC{Po56IJ^ogiK*(uh~9(TWyrP)xk46RkvuSE@APRo&S*ld*(o z#w!YKMAPG^7^9t_&`uDq6s2@>AT2r}e66rieD4*4SiM4H6xs<2?F8{k5%CH^#4DqS zR|q0rp)u2i9*%G1_~cvHw_$?Gu6sDX5fPE2!+p8BzLnwlN`C$REAQXF==jdkWiDO~ z$2W3xxWDvoSJ$`GpPeUF><^#+h=|B&GN6dKK#D)el2jrEy|R}XdHiywfLA{MJx4SfCn zbE&X7wQ}Os)WP8Ke4=$Q*jxJ9aC|Nzl1ytBNh@BNJy33SW}Q-jHMspo_}mM-Y39ag z)I*`2Fcq(?AzmSfcx6;d@yhJ1J4dWup)m^W1ci2jc%_JVg&^XUQN$|*5wFk~g?55M zJ3+isM7%-}@yaOT6@rLYXpBNTL7|->UMWf`Ui}AzG&J&sl}=&+0000yRMP)27^@=<%~Nzx^}bkqE!P z`TLuQ$jR|R%;xT0Ufqa@$i>rNcGhkC`JaEk^^ZS&crOnhKUqHRx=wz5_S?PpOtl+R z#M}?@YFNaO_B-vmZdvHA>!j$b@Z5baX*JeRzNG@n5fBP4?czD?`L9sEAj{MxmXc&`uDq3=yxO zB3@OBcm>s1ywV!+^6ExTjt`>Ff3xduz}GJy*KR|h8xXULr_c>JIz3yv4e`nl@d~Qc zcoj276R!--6|cIklcS#>jc!A{DoE z%ot5a7bG=aMIGxVUfJQ|K&VpV)hs!hc(r|u(N2(~vBcRcLvzKem@%4;E=X#;iaH-n zys|S_yqe{jF-(W0Eij5}#+=~ZD<@*c=(W>-5!UP8RO))&V`8G(7$#!{8C#fL`v0EaMf0u0-zgQ;gA0P-rKJ zSBB=gI4}ksT@e0T;Y#uUUO~m#D`cb4P87ZC4#zRp3r|;UywWBs{rc3F4)^y&MCAJR zF8jTRS8EK5d~$qnueg>8pf7UxcrI?^)$ltFSDLq=74~p{FRQbOSCNLh>bZ*C7q)*c zx7eF-7q7xyb+{{^l2+vK@iunjQ_JpXi%#pu~#6~`P+ALes(I)-@aQu zcX@TQ+~#n9@7`kIcBwCvBTF|P-MK?hGCTI#f-_d#H&d=dTdhDKey^lJ8LxIW>1b`6R%YF) z#(pQMzf(=_y;s>CT}!<1&h4>oZ;Cy8)q0|hO#lD@07*qoM6N<$g1W$<0RR91 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/models/tank/tank_GAS_COKER.png b/src/main/resources/assets/hbm/textures/models/tank/tank_GAS_COKER.png new file mode 100644 index 0000000000000000000000000000000000000000..f73b4bd4dd4f15e97e1b07a3200ae4658472df1e GIT binary patch literal 1258 zcmeAS@N?(olHy`uVBq!ia0vp^RY2Us!3HEZPulwcNU;<zYV-kE*x)fL~oefw5Zf3xxayL)$vc77;+e{pWdiC+(G(uzN? z<1ce{d2;jQ`l;J;_4D@KpL+W9;^3RLU-v}mbvecDzrTC?`E_B*T{ph_t|{t%!Tr~_ zdy&Az=T|@7KYlnuHpl@rvBc9M2n*c-9dtxer}tMpW6Go5EA56}G; z_%Gyl#$-w4dW1`~TSmTgG^^xGj0k3)K~#3HUEme{lF&|FztX@UD(KS&k z#O4aDi%ZQ~Q}H$RaqFA^|8DKz{ivlF`}nGcrPcHb!_+SqR|LG^?6A6i*E}v#euZgi zEKJ{obsx1}#h8Ee;x}hkT9Lg+O4VI>{j`3&TO36uS}}WrOv3hby{4$C+%7oBz%XgbO5K3|mAV2)u87Ti z^vr=p)wWn++HxDN`hVZnmD)JS=d!e#HB~J2(2hIX@3&N=tMyl5REbm4*5xg17$!qKfMukTTF1` z>D!wfzq#-63W!Xpuk<;hox1Q)-rC&nc{h)&ZrS0g#~r;+deMz;g*Z)4(VOvc*Ai28x=`pWI`Envv}(b&31Dce|jeN5hzRo7g*JwPt^7j7y_`B7|jwx;55X%;~QraYLr@G9krx$h!)bIU&YuEMd zd!H+{>22s-9iCgiB|vcYyzld~vo5A?EVe#5v1HGx%hy)@nI?XD(ckBHjz6t#yQcd( zz~*MfQ?UcO2`{EB(od7#e<1gF*6sMLO~2lR#&Yx6=4GAjez*E<>9wzVC3+tZS$$Ub zSp!TVO2Qwxx=$O$B_8_7^|#mdKI;Vst E0H}6oW&i*H literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/models/tank/tank_NAPHTHA_COKER.png b/src/main/resources/assets/hbm/textures/models/tank/tank_NAPHTHA_COKER.png new file mode 100644 index 0000000000000000000000000000000000000000..1e8d34ac0a1fb3a25df654e0ea5944f8ec371ec8 GIT binary patch literal 1122 zcmV-o1fBbdP)PU?V5U@#JlUEcSTV%{mtJViNcq!pI?j~5vQi|BT5dU_N&S#InP%MFE= zQRpBjbP$8HLJ?-&Q;nTIa(RCJ=JDz7Y_YM4R}CRv1wp*RY!o^O3LOOT$`J7i zS;VU#h*v?(jaRiz1*`52(5&Jq^aiAq2A84GTcFsE6R!-d9k19%J25q0X_g~iHDq$U z`twob#H)r(j#r9523FlcQ0NUHM+c$F(Znl5#4BW39=$rITkVYf-F8>ODW(7M zYWU~6v8;rSZpiz1r8`8)zV0Z<(b%KV8=%_Ptr>_3+cc}iE5*KUI=Uf~>uMDjfulD=8iC0ccjaQm&H1W#NYVk^wqsM#@*y7d} zs3J!PL5_}sYp)J#$#|t1tA@!~Luxl>*Ze_LFUg@>?Qn7+vN$;qbsW@)fgBwK*IpeM z*IpruTU!Ldtu2D!))uH@)*S>pOrqfE)nRdRAhI|)(5aSA4y2uBDKj&6uHUcJu9N8seZ zhRpd|;h~P^x6CSFa6RwBf!rc8-f+Ky&2 z))32hMWLOTd;2N2(Lqq?Ac$9nTDo%}9o-PVR@kYQzW0h*cSAUORd9d%AosTqhyEBY zxGi+Iz!ZC!%R=W0OR?+R#j9>XuWl}iueE@9HBqUc-N&9g+cI9cIeJy=l_C$;Z4^q!irJvz3yKIs1T;oa=G8-+@%-2UrVHy7FEwd0q5 zerWvCdkrnyxAym5)f{viT`O4b`QE-j{joITYd(|aH4C+`6`t#$CkOUBO54%h|LZ;% zsqZ|=Et4C!G|t$9Z~o-KZV|3-F5W#a(JZrNmL~_g-C+_<*c~Pqhe8M8?&y^#oE(TO zuDx<<^YIGPaP1XlqtHQ6=pcw!hKN_lB3?N~yh0Z73bRq@ASiSY#4AI@D`XL`oFZN! oi+F|ED0C1MItb#Gp_by+U*l_uM_vC-C;$Ke07*qoM6N<$f?Mw&Y5)KL literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/models/tank/tank_OIL_COKER.png b/src/main/resources/assets/hbm/textures/models/tank/tank_OIL_COKER.png new file mode 100644 index 0000000000000000000000000000000000000000..06c2aedbd191bc88e15813703e122b42ce0287aa GIT binary patch literal 1009 zcmV5XSM7lOd8Zx)}mU)uM`~QF-R-y=o4?OX+Xr&R2yUjthAI|;x+l=lLyte!8PQLy4 zetO(>o&5a$E6Y>4rHFg|lu; zjOZ2FZ+B;ppB^5w9h-P%iFk#%(Yl?W&`wZjCx};;h*wAwf5U(t;I1o9Vax}BO|5*Nrt}PLQL$;j>o@$r-OS#~MKEUXj6gb+V@a$<3yH{|HLk)xg9 zvsX*wvsXyr))uAW))p{9>#iHKZYOBn-f;D5AuJ9=3X20v#o|EZMC*2fS+_Tg=(=%h zi=}aE3#4#si&C*T5IM0p(36q*0Ox2YD6|t?y|QE!ulC!WbX|8o0i$)7LmRKA+-#0` zWyvUBjYX*xX5F=*bwfntcIhX8D=9x9&xm${cxA~TUi}xX7}4d?#H*?I@g`nbGKg1G zqLm2os(i}U&8)i=+ml_l;Rh!p;&WKT7LlA0>+8oaA|leZZU1XL(`)N;M5jh-Y9wDfDQnxd87y*y zcx9luzd0517^V7J_2kh_yjl-0@ydOnMfxXNt0}SwIXZ__L047e46+wG%%XkU@%M0_ zcz?~Y<6}rNGM==WY!7q8-x zs2R~ksySZ8Z$PBB!$QVUCjPzV*x}!X+f^Z6IYGRF28DKl#etSs9Eg3h}B`#4B8k)(s5`?F5B( ff_P@f00000NkvXXu0mjf*~Z;q literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/models/weapons/remington.png b/src/main/resources/assets/hbm/textures/models/weapons/remington.png new file mode 100644 index 0000000000000000000000000000000000000000..01935ed268c2da685a57c128c47f1340b37289d3 GIT binary patch literal 10514 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 U&MTr@(EtDd07*qoM6N<$f;SD5kpKVy literal 0 HcmV?d00001 From fe7ca86b46d0c490919d80f3691737246e6a342e Mon Sep 17 00:00:00 2001 From: Doctor17-git <60807716+Doctor17-git@users.noreply.github.com> Date: Sun, 30 Apr 2023 18:45:54 +0300 Subject: [PATCH 17/40] Updated ru_RU.lang updated russian localization --- src/main/resources/assets/hbm/lang/ru_RU.lang | 21 ++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/src/main/resources/assets/hbm/lang/ru_RU.lang b/src/main/resources/assets/hbm/lang/ru_RU.lang index eace51f10..1006e4d4f 100644 --- a/src/main/resources/assets/hbm/lang/ru_RU.lang +++ b/src/main/resources/assets/hbm/lang/ru_RU.lang @@ -236,7 +236,7 @@ potion.hbm_telekinesis=! ! ! potion.hbm_phosphorus=Фосфорные ожоги potion.hbm_stability=Стабильность potion.hbm_potionsickness=Послезельевая болезнь -potion.hbm_death=Серьёзная мутация +potion.hbm_death=Астольфофикация tool.ability.recursion=Жилковый Майнер tool.ability.hammer=Зона действия @@ -641,6 +641,7 @@ desc.item.gun.lore=чтобы увидеть более глубокий лор desc.item.gun.loreFunc=чтобы увидеть больше функциональности desc.item.gun.manufacturer=Производитель: %s desc.item.gun.name=Название: %s +desc.item.gun.pellets=Снаряды: %s - %s desc.item.kitArmor=Броня будет заменена новым комплектом. desc.item.kitHaz=Броня будет заменена защитным костюмом. desc.item.kitPack=Какая выгодная сделка! @@ -735,6 +736,7 @@ gun.make.UAC=Объединённая Аэрокосмическая Корпо gun.make.UNKNOWN=??? gun.make.WINCHESTER=Winchester Repeating Arms Company gun.make.WINCHESTER_BIGMT=Winchester Repeating Arms Company / Большая Гора +gun.make.REMINGTON=Remington Arms gun.name.ar15_50=Модификация AR-15 под .50 BMG gun.name.baeAR=Стандартная винтовка британнской армии @@ -804,6 +806,7 @@ gun.name.win20Inox=Winchester Model 20 Inox gun.name.win20Poly=Winchester Model 20 Polymer gun.name.win20Satur=Winchester Model 20 D-25A gun.name.zomg=Пушка отрицательной энергии EMC101 +gun.name.remington870=Remington 870 book.error.cover=Адронный Коллайдер:$Диагностирование проблем book.error.title1=Ошибка 0x01 [NC] @@ -1169,6 +1172,12 @@ hbmfluid.colloid=Коллоидный раствор hbmfluid.mustardgas=Горчичный газ hbmfluid.phosgene=Фосген hbmfluid.iongel=Ионный гель +hbmfluid.gas_coker=Коксовый газ +hbmfluid.naphtha_coker=Коксовая нафта +hbmfluid.oil_coker=Коксовая нефть +hbmfluid.cholesterol=Раствор холестерина +hbmfluid.egg=Растворенное яйцо +hbmfluid.estradiol=Раствор эстрадиола hbmmat.actinium227=Актиний-227 hbmmat.advancedalloy=Продвинутый сплав @@ -2099,6 +2108,9 @@ container.catalyticReformer=Каталитический реформер tile.fan.name=Вентилятор tile.watz.name=Реактор Ватцз tile.watz_pump.name=Нагнетающая помпа Ватцза +tile.machine_coker.name=Коксовая установка +tile.machine_coker.desc=Коксует жидкость, создавая жидкую побочку.$Требует внешний источник тепла.$Скорость передачи тепла: ΔT*0.025 TU/t +container.machineCoker=Коксовая установка container.hadron=Ускоритель частиц tile.hadron_access.name=Терминал доступа ускорителя частиц @@ -3439,6 +3451,7 @@ item.oil_tar.crack.name=Крекинговая нефтяная смола item.oil_tar.coal.name=Угольная смола item.oil_tar.wood.name=Древесная смола item.oil_tar.wax.name=Хлорированный нефтяной воск +item.oil_tar.paraffin.name=Парафин item.canister_empty.name=Пустая канистра item.canister_smear.name=Канистра с промышленным маслом (LEGACY) @@ -4027,6 +4040,7 @@ item.gun_lever_action_dark.name=«Нога кобылы» (Тёмный) item.gun_bolt_action_green.name=Винтовка со скользящим затвором (Зелёный) item.gun_bolt_action_saturnite.name=Сатурнитовая винтовка item.gun_lever_action_sonata.name=Перевёрнутая «Нога кобылы» +item.gun_remington.name=バイデン ブラスト [BIDEN BLAST] item.gun_lever_action_sonata_2.name=§cSonata's Microphone§r item.gun_b92.name=§9Энергетический бластер B92§r item.gun_b93.name=§cМодифицированный бластер B93§r @@ -4360,6 +4374,7 @@ item.radx.name=Рад-X item.mentats.name=Ментаты item.pt_mentats.name=Праздничные Ментаты item.pill_iodine.name=Таблетка иода +item.pill_red.name=Красная таблетка item.pill_herbal.name=Травяная паста item.fmn.name=Таблетка флунитразепама item.xanax.name=Препарат "НАКСА" против дигаммы @@ -5100,7 +5115,7 @@ item.watz_pellet.mep.name=Ватцз-пеллета из среднеобога item.watz_pellet.meu.name=Ватцз-пеллета из среднеобогащенного урана item.watz_pellet.nqd.name=Ватцз-пеллета из обогащенного наквадаха item.watz_pellet.nqr.name=Ватцз-пеллета из наквадрии -item.watz_pellet.hen.name=Ватцз-пеллета из высокообогащенного наквадаха +item.watz_pellet.hen.name=Ватцз-пеллета из высокообогащенного нептуния item.watz_pellet.schrabidium.name=Ватцз-пеллета из чистого шрабидия item.watz_pellet_depleted.boron.name=Поглощающая Ватцз-пеллета из бора (Обедненная) item.watz_pellet_depleted.du.name=Поглощающая Ватцз-пеллета из обедненного урана (Обедненная) @@ -5112,7 +5127,7 @@ item.watz_pellet_depleted.mep.name=Ватцз-пеллета из среднео item.watz_pellet_depleted.meu.name=Ватцз-пеллета из среднеобогащенного урана (Обедненная) item.watz_pellet_depleted.nqd.name=Ватцз-пеллета из обогащенного наквадаха (Обедненная) item.watz_pellet_depleted.nqr.name=Ватцз-пеллета из наквадрии (Обедненная) -item.watz_pellet_depleted.hen.name=Ватцз-пеллета из высокообогащенного наквадаха (Обедненная) +item.watz_pellet_depleted.hen.name=Ватцз-пеллета из высокообогащенного нептуния (Обедненная) item.watz_pellet_depleted.schrabidium.name=Ватцз-пеллета из чистого шрабидия (Обедненная) item.titanium_filter.name=Титановый фильтр From cf533339f5d089364a955dd9bd664a0ff1dca2e7 Mon Sep 17 00:00:00 2001 From: Bob Date: Mon, 1 May 2023 22:47:20 +0200 Subject: [PATCH 18/40] fixed tau damage, fluid bucket registry --- gradle.properties | 4 ++-- src/main/java/com/hbm/items/ModItems.java | 10 +++++----- .../java/com/hbm/items/weapon/ItemGunGauss.java | 2 +- .../hbm/textures/items/rbmk_component_card.png | Bin 0 -> 313 bytes 4 files changed, 8 insertions(+), 8 deletions(-) create mode 100644 src/main/resources/assets/hbm/textures/items/rbmk_component_card.png diff --git a/gradle.properties b/gradle.properties index 9383abbe4..311c2314b 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=4578 +mod_build_number=4585 credits=HbMinecraft, rodolphito (explosion algorithms), grangerave (explosion algorithms),\ \ Hoboy (textures, models), Doctor17 (russian localization), Drillgon200 (effects, models, porting),\ @@ -11,4 +11,4 @@ credits=HbMinecraft, rodolphito (explosion algorithms), grangerave (explosion al \ Sten89 (models), Pixelguru26 (textures), TheBlueHat (textures), Alcater (GUI textures, porting), impbk2002 (project settings),\ \ OvermindDL1 (project settings), TehTemmie (reacher radiation function), Toshayo (satellite loot system, project settings), Silly541 (config for safe ME drives),\ \ Voxelstice (OpenComputers integration, turbine spinup), BallOfEnergy1 (OpenComputers integration), martemen (project settings),\ - \ Pvndols (thorium fuel recipe, gas turbine), JamesH2 (blood mechanics, nitric acid), sdddddf80 (recipe configs), SuperCraftAlex (tooltips) \ No newline at end of file + \ Pvndols (thorium fuel recipe, gas turbine), JamesH2 (blood mechanics, nitric acid), sdddddf80 (recipe configs), SuperCraftAlex (tooltips) diff --git a/src/main/java/com/hbm/items/ModItems.java b/src/main/java/com/hbm/items/ModItems.java index c191ffd59..79043e1e0 100644 --- a/src/main/java/com/hbm/items/ModItems.java +++ b/src/main/java/com/hbm/items/ModItems.java @@ -5460,11 +5460,11 @@ 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"); - FluidContainerRegistry.registerFluidContainer(new FluidStack(ModBlocks.mud_fluid, 1000), new ItemStack(ModItems.bucket_mud)); - FluidContainerRegistry.registerFluidContainer(new FluidStack(ModBlocks.acid_fluid, 1000), new ItemStack(ModItems.bucket_acid)); - FluidContainerRegistry.registerFluidContainer(new FluidStack(ModBlocks.toxic_fluid, 1000), new ItemStack(ModItems.bucket_toxic)); - FluidContainerRegistry.registerFluidContainer(new FluidStack(ModBlocks.schrabidic_fluid, 1000), new ItemStack(ModItems.bucket_schrabidic_acid)); - FluidContainerRegistry.registerFluidContainer(new FluidStack(ModBlocks.sulfuric_acid_fluid, 1000), new ItemStack(ModItems.bucket_sulfuric_acid)); + 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)); + FluidContainerRegistry.registerFluidContainer(new FluidStack(ModBlocks.schrabidic_fluid, 1000), new ItemStack(ModItems.bucket_schrabidic_acid), new ItemStack(Items.bucket)); + FluidContainerRegistry.registerFluidContainer(new FluidStack(ModBlocks.sulfuric_acid_fluid, 1000), new ItemStack(ModItems.bucket_sulfuric_acid), new ItemStack(Items.bucket)); BucketHandler.INSTANCE.buckets.put(ModBlocks.mud_block, ModItems.bucket_mud); BucketHandler.INSTANCE.buckets.put(ModBlocks.acid_block, ModItems.bucket_acid); BucketHandler.INSTANCE.buckets.put(ModBlocks.toxic_block, ModItems.bucket_toxic); diff --git a/src/main/java/com/hbm/items/weapon/ItemGunGauss.java b/src/main/java/com/hbm/items/weapon/ItemGunGauss.java index f394e9062..4db1ce526 100644 --- a/src/main/java/com/hbm/items/weapon/ItemGunGauss.java +++ b/src/main/java/com/hbm/items/weapon/ItemGunGauss.java @@ -32,7 +32,7 @@ public class ItemGunGauss extends ItemGunBase { if(!main && getStored(stack) > 0) { EntityBulletBase bullet = new EntityBulletBase(world, altConfig.config.get(0), player); - bullet.overrideDamage = Math.min(getStored(stack), 1) * 10F; + 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); diff --git a/src/main/resources/assets/hbm/textures/items/rbmk_component_card.png b/src/main/resources/assets/hbm/textures/items/rbmk_component_card.png new file mode 100644 index 0000000000000000000000000000000000000000..269a3d9308cd82822a9ea23c1cbb9d1d8a2e13f8 GIT binary patch literal 313 zcmV-90mlA`P)-08hXR zT+Y Date: Tue, 2 May 2023 16:40:26 +0200 Subject: [PATCH 19/40] on a rail --- .../java/com/hbm/blocks/rail/IRailNTM.java | 27 +++++ .../hbm/blocks/rail/RailStandardStraight.java | 105 ++++++++++++++++++ 2 files changed, 132 insertions(+) create mode 100644 src/main/java/com/hbm/blocks/rail/IRailNTM.java create mode 100644 src/main/java/com/hbm/blocks/rail/RailStandardStraight.java diff --git a/src/main/java/com/hbm/blocks/rail/IRailNTM.java b/src/main/java/com/hbm/blocks/rail/IRailNTM.java new file mode 100644 index 000000000..87738ed77 --- /dev/null +++ b/src/main/java/com/hbm/blocks/rail/IRailNTM.java @@ -0,0 +1,27 @@ +package com.hbm.blocks.rail; + +import net.minecraft.util.Vec3; +import net.minecraft.world.World; + +public interface IRailNTM { + + /** Returns a vector pointing to the closest snapping position given the starting position */ + public Vec3 getSnappingPos(World world, int x, int y, int z, double trainX, double trainY, double trainZ); + + /** + * Returns a location on the rail based on the train's current X/Y/Z momentum as well as the intended speed along the rail. + * If the train would leave the rail within that tick, the position is the last valid position on that rail. + * Inherently safer than simply adding the motion to the position and then snapping, since that may lead to derailing. + * The motion has to be calculated from the train's rotation, the scalar doesn't matter since it's only used for determining orientation in a clear way. + * Motion ends up being *-1 if the train is going in reverse, still pointing forwards despite the speed being negative. + * Also features a double[] wrapper with size 1 which holds the speed value that overshoots the rail. + * */ + public Vec3 getTravelLocation(World world, int x, int y, int z, double trainX, double trainY, double trainZ, double motionX, double motionY, double motionZ, double speed, double[] leftover); + + /** Returns that rail'S gauge. Trains will derail if the gauge does not match. */ + public TrackGauge getGauge(World world, int x, int y, int z); + + public static enum TrackGauge { + STANDARD //roughly 1.5m + } +} diff --git a/src/main/java/com/hbm/blocks/rail/RailStandardStraight.java b/src/main/java/com/hbm/blocks/rail/RailStandardStraight.java new file mode 100644 index 000000000..66a188e6a --- /dev/null +++ b/src/main/java/com/hbm/blocks/rail/RailStandardStraight.java @@ -0,0 +1,105 @@ +package com.hbm.blocks.rail; + +import com.hbm.blocks.BlockDummyable; +import com.hbm.lib.Library; + +import net.minecraft.block.material.Material; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.AxisAlignedBB; +import net.minecraft.util.MathHelper; +import net.minecraft.util.Vec3; +import net.minecraft.world.IBlockAccess; +import net.minecraft.world.World; +import net.minecraftforge.common.util.ForgeDirection; + +public class RailStandardStraight extends BlockDummyable implements IRailNTM { + + public RailStandardStraight(Material mat) { + super(mat); + } + + @Override + public TileEntity createNewTileEntity(World world, int meta) { + return null; + } + + @Override + public int[] getDimensions() { + return new int[] {0, 0, 2, 2, 0, 0}; + } + + @Override + public int getOffset() { + return 2; + } + + @Override + public void setBlockBoundsBasedOnState(IBlockAccess world, int x, int y, int z) { + int meta = world.getBlockMetadata(x, y, z); + this.setBlockBounds(0F, 0F, 0F, 1F, 0.125F, 1F); + } + + @Override + public AxisAlignedBB getCollisionBoundingBoxFromPool(World world, int x, int y, int z) { + this.setBlockBounds(0F, 0F, 0F, 1F, 0.125F, 1F); + return AxisAlignedBB.getBoundingBox(x + this.minX, y + this.minY, z + this.minZ, x + this.maxX, y + this.maxY, z + this.maxZ); + } + + @Override + public Vec3 getSnappingPos(World world, int x, int y, int z, double trainX, double trainY, double trainZ) { + return snapAndMove(world, x, y, z, trainX, trainY, trainZ, 0, 0, 0, 0, new double[1]); + } + + @Override + public Vec3 getTravelLocation(World world, int x, int y, int z, double trainX, double trainY, double trainZ, double motionX, double motionY, double motionZ, double speed, double[] leftover) { + return snapAndMove(world, x, y, z, trainX, trainY, trainZ, motionX, motionY, motionZ, speed, leftover); + } + + /* Very simple function determining the snapping position and adding the motion value to it, if desired. */ + public Vec3 snapAndMove(World world, int x, int y, int z, double trainX, double trainY, double trainZ, double motionX, double motionY, double motionZ, double speed, double[] leftover) { + int[] pos = this.findCore(world, x, y, z); + if(pos == null) return Vec3.createVectorHelper(trainX, trainY, trainZ); + int cX = pos[0]; + int cY = pos[1]; + int cZ = pos[2]; + int meta = world.getBlockMetadata(cX, cY, cZ) - this.offset; + ForgeDirection dir = ForgeDirection.getOrientation(meta); + + Vec3 vec = Vec3.createVectorHelper(trainX, trainY, trainZ); + + if(speed == 0) { + return vec; + } + + if(dir == Library.POS_X || dir == Library.NEG_X) { + double targetX = trainX; + if(motionX > 0) { + targetX += speed; + } else { + targetX -= speed; + } + vec.xCoord = MathHelper.clamp_double(targetX, x - 2, x + 3); + vec.yCoord = y; + vec.zCoord = z + 0.5; + leftover[0] = Math.abs(targetX - vec.xCoord); + } else { + double targetZ = trainZ; + if(motionZ > 0) { + targetZ += speed; + } else { + targetZ -= speed; + } + vec.xCoord = x + 0.5; + vec.yCoord = y; + vec.zCoord = MathHelper.clamp_double(targetZ, z - 2, z + 3); + leftover[0] = Math.abs(targetZ - vec.zCoord); + } + + return vec; + } + + @Override + public TrackGauge getGauge(World world, int x, int y, int z) { + return TrackGauge.STANDARD; + } +} From 02f89cc0c84f48e3894d75f3aa84268064a6b02c Mon Sep 17 00:00:00 2001 From: BallOfEnergy <66693744+BallOfEnergy1@users.noreply.github.com> Date: Tue, 2 May 2023 21:55:31 -0500 Subject: [PATCH 20/40] my own bobble :D --- .../java/com/hbm/blocks/generic/BlockBobble.java | 10 +++++----- .../com/hbm/render/tileentity/RenderBobble.java | 10 ++++++---- .../hbm/textures/models/trinkets/Microwave.png | Bin 0 -> 1788 bytes 3 files changed, 11 insertions(+), 9 deletions(-) create mode 100644 src/main/resources/assets/hbm/textures/models/trinkets/Microwave.png diff --git a/src/main/java/com/hbm/blocks/generic/BlockBobble.java b/src/main/java/com/hbm/blocks/generic/BlockBobble.java index df84bf616..0757002f9 100644 --- a/src/main/java/com/hbm/blocks/generic/BlockBobble.java +++ b/src/main/java/com/hbm/blocks/generic/BlockBobble.java @@ -1,13 +1,9 @@ package com.hbm.blocks.generic; -import java.util.List; -import java.util.Random; - import com.hbm.inventory.gui.GUIScreenBobble; import com.hbm.items.special.ItemPlasticScrap.ScrapType; import com.hbm.main.MainRegistry; import com.hbm.tileentity.IGUIProvider; - 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.util.MovingObjectPosition; import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; +import java.util.List; +import java.util.Random; + public class BlockBobble extends BlockContainer implements IGUIProvider { public BlockBobble() { @@ -191,7 +190,8 @@ public class BlockBobble extends BlockContainer implements IGUIProvider { VAER( "vaer", "vaer", "ZIRNOX", "taken de family out to the weekend cigarette festival", true, ScrapType.MEM_16K_D), 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); + CIRNO( "Cirno", "Cirno", "the only multi layered skin i had", "No brain. Head empty.", true, ScrapType.BOARD_BLANK), + MICROWAVE( "Microwave", "Microwave", "adding OC compat", "they call me the food heater", true, ScrapType.BRIDGE_BIOS); public String name; //the title of the tooltip public String label; //the name engraved in the socket diff --git a/src/main/java/com/hbm/render/tileentity/RenderBobble.java b/src/main/java/com/hbm/render/tileentity/RenderBobble.java index 58f96d995..649bd7ce5 100644 --- a/src/main/java/com/hbm/render/tileentity/RenderBobble.java +++ b/src/main/java/com/hbm/render/tileentity/RenderBobble.java @@ -45,6 +45,7 @@ public class RenderBobble extends TileEntitySpecialRenderer { public static final ResourceLocation bobble_nos = new ResourceLocation(RefStrings.MODID, "textures/models/trinkets/nos.png"); public static final ResourceLocation bobble_drillgon = new ResourceLocation(RefStrings.MODID, "textures/models/trinkets/drillgon200.png"); public static final ResourceLocation bobble_cirno = new ResourceLocation(RefStrings.MODID, "textures/models/trinkets/cirno.png"); + public static final ResourceLocation bobble_microwave = new ResourceLocation(RefStrings.MODID, "textures/models/trinkets/microwave.png"); @Override public void renderTileEntityAt(TileEntity tile, double x, double y, double z, float intero) { @@ -94,6 +95,7 @@ public class RenderBobble extends TileEntitySpecialRenderer { case VAER: bindTexture(bobble_vaer); break; case NOS: bindTexture(bobble_nos); break; case DRILLGON: bindTexture(bobble_drillgon); break; + case MICROWAVE: bindTexture(bobble_microwave); break; default: bindTexture(ResourceManager.universal); } @@ -311,19 +313,19 @@ public class RenderBobble extends TileEntitySpecialRenderer { public void renderPellet(BobbleType type) { GL11.glEnable(GL11.GL_CULL_FACE); - + GL11.glPushMatrix(); GL11.glPushAttrib(GL11.GL_LIGHTING_BIT); OpenGlHelper.setLightmapTextureCoords(OpenGlHelper.lightmapTexUnit, 240F, 240F); GL11.glDisable(GL11.GL_LIGHTING); bobble.renderPart("Pellet"); - + 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(1.0F, 1.0F, 0.0F, 0.1F + (float)Math.sin(System.currentTimeMillis() * 0.001D) * 0.05F); + GL11.glColor4f(1.0F, 1.0F, 0.0F, 0.1F + (float) Math.sin(System.currentTimeMillis() * 0.001D) * 0.05F); bobble.renderPart("PelletShine"); GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); diff --git a/src/main/resources/assets/hbm/textures/models/trinkets/Microwave.png b/src/main/resources/assets/hbm/textures/models/trinkets/Microwave.png new file mode 100644 index 0000000000000000000000000000000000000000..13afba352dcb8175b35341cb00bb585beeb37eb4 GIT binary patch literal 1788 zcmVPx#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D29ZfbK~#8N?ORK4 z6h{!Q?wQ^7+C;1kaiS1VKuB-`5i6$%iJZ7ZxpB)0Df|d7CjTI3t~nx3L6IzxTOuJL zD-j_INrXb;AQB9T?cJH_d31Na>KPj?UVH7Gh4o{;Rl9qtduO()tE+0d%Yyn~dV1Ox z&4KXr>C?W?7$sy;?^_H_0GR2nvRhDTKvC~oR01gKF3i%bBx|>2z2Pmo%5FhV0X&&` z;>~_^&9mDS!UovUZcvo<^JOvWIKi8kn7CH7H^j}GH>uTX(bcP0yXyJ*`C`Q22!i1A zqB#<5$q3HP&C$h+7uVH$0b3G4FXp-43#c@ps5eC~=DFSr*!LQ+@7>_Khf6wc4W;CX zv78_T8KX#w1{oWZrG=Nj-!57k!)Et36^QW9 zbWPaH&)Kd(*9{hQ4B?*-MpLx8HmE(+8ba_%+lQMyK;Q=&ZtNBTtg`{kC^OHDb74s7 zLkRqOkY8_tkuIk}AfdWG>NTmc>hsKVEk(`EdS*h1g4JIaqxKHOkqCy3 z)>0j`BuOaEQV2oP`1rW%i$UW)tu@u^b^7)8ZAb5gkM*BLi|CejtZ2Pn^j%Vu=RUO_ zt2dYwP;rfqhmXdb`_O}1Ye0Z{G4G%I?ijpXBMXQ*M%1DPDiaO7!9!pBVcpSDVMPCwy zu4GXRA+=rK>%#f-@6*|{r(8WuNDb8&u>oVtn9&rfy$k__B%{o=Wn#c^;QB}uZB9?JMj{t)TF+mf|a%5OA z&TPX&XbU4KbN9GY(bo$|>m$}j_zu3U$;fC}d#%t;K@Uh6M24WF!;N!e3mW(Bb_h?L z#u7-}65u)qVgg)pNdun^YP zJx7Bue2)1Sv#bf80%a9@Av9*`lzM@|+gZ_iHF(t;u-YkRX0G_BmmAIHgG;SkH7n2ODQtjf#p+VtI*=( zb>36Vg^=$$@4T&pp$kA#lk#%}>o!tZ3*0#ZZ>YLW)}4j20$8^z#K{%Bp~@Sr%rIZ` zc51E#oQkls)S%3d5m#oeG{0_A;Q2mTV<^)Z9XRlY%PTNiQ*(Trbe55nxtzJ?+=Eyt zs@LljMG-x|bI0`!ihc(l{V?#CdFG>^#*W;bX#A1q6w1yIHY*v2pIFbzBT(R##3>x!g;^^YNjC?w7w zuuP8ZiirT0niozubBQ5d?+LWS? zi%|*LBqlG>F8hRY6Gn}J1ppf$Rn|O|s)#7T+K-{`U@%i5$pl&nCT$F32o2yo0s+l1 zk%9m?-ynAVN-Y+58y!m7fXlD}UoQN-0vCWA<+rkYVvL0@yarr9yTH{)gggjU z4TiFf$gs>$7_kj#pJ`)ZL#@-0vb0Tx+i-v2j6eXNhzeotjahNW>U`u*Iw7r>F%Fu; z<3@~9Hh>nX>2eAq literal 0 HcmV?d00001 From dd2f929821ee9432429cf927ab1809b0c295f11d Mon Sep 17 00:00:00 2001 From: Boblet Date: Wed, 3 May 2023 10:42:58 +0200 Subject: [PATCH 21/40] EntityRailCarBase --- .../java/com/hbm/blocks/machine/Watz.java | 8 + .../java/com/hbm/blocks/rail/IRailNTM.java | 17 +- .../hbm/blocks/rail/RailStandardStraight.java | 15 +- .../hbm/entity/train/EntityRailCarBase.java | 157 ++++++++++++++++++ 4 files changed, 189 insertions(+), 8 deletions(-) create mode 100644 src/main/java/com/hbm/entity/train/EntityRailCarBase.java diff --git a/src/main/java/com/hbm/blocks/machine/Watz.java b/src/main/java/com/hbm/blocks/machine/Watz.java index 8a975bbc2..4f195b722 100644 --- a/src/main/java/com/hbm/blocks/machine/Watz.java +++ b/src/main/java/com/hbm/blocks/machine/Watz.java @@ -1,5 +1,7 @@ package com.hbm.blocks.machine; +import java.util.Random; + import com.hbm.blocks.BlockDummyable; import com.hbm.blocks.ModBlocks; import com.hbm.handler.MultiblockHandlerXR; @@ -11,6 +13,7 @@ import net.minecraft.block.Block; import net.minecraft.block.material.Material; 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.tileentity.TileEntity; import net.minecraft.world.World; @@ -29,6 +32,11 @@ public class Watz extends BlockDummyable { if(meta >= 6) return new TileEntityProxyCombo().inventory().fluid(); return null; } + + @Override + 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) { diff --git a/src/main/java/com/hbm/blocks/rail/IRailNTM.java b/src/main/java/com/hbm/blocks/rail/IRailNTM.java index 87738ed77..0bb68d517 100644 --- a/src/main/java/com/hbm/blocks/rail/IRailNTM.java +++ b/src/main/java/com/hbm/blocks/rail/IRailNTM.java @@ -1,8 +1,11 @@ package com.hbm.blocks.rail; +import com.hbm.util.fauxpointtwelve.BlockPos; + import net.minecraft.util.Vec3; import net.minecraft.world.World; +/** in retrospect, not the best name i could have chosen */ public interface IRailNTM { /** Returns a vector pointing to the closest snapping position given the starting position */ @@ -16,12 +19,22 @@ public interface IRailNTM { * Motion ends up being *-1 if the train is going in reverse, still pointing forwards despite the speed being negative. * Also features a double[] wrapper with size 1 which holds the speed value that overshoots the rail. * */ - public Vec3 getTravelLocation(World world, int x, int y, int z, double trainX, double trainY, double trainZ, double motionX, double motionY, double motionZ, double speed, double[] leftover); + public Vec3 getTravelLocation(World world, int x, int y, int z, double trainX, double trainY, double trainZ, double motionX, double motionY, double motionZ, double speed, RailLeaveInfo info); - /** Returns that rail'S gauge. Trains will derail if the gauge does not match. */ + /** Returns that rail's gauge. Trains will derail if the gauge does not match. */ public TrackGauge getGauge(World world, int x, int y, int z); public static enum TrackGauge { STANDARD //roughly 1.5m } + + /** A wrapper for all relevant info required when leaving a rail */ + public static class RailLeaveInfo { + /** The amount of blocks still left to travel after completing the rail */ + public double overshoot; + /** The exit position of that rail */ + public BlockPos pos; + public RailLeaveInfo dist(double d) { this.overshoot = d; return this; } + public RailLeaveInfo pos(BlockPos d) { this.pos = d; return this; } + } } diff --git a/src/main/java/com/hbm/blocks/rail/RailStandardStraight.java b/src/main/java/com/hbm/blocks/rail/RailStandardStraight.java index 66a188e6a..d28329aca 100644 --- a/src/main/java/com/hbm/blocks/rail/RailStandardStraight.java +++ b/src/main/java/com/hbm/blocks/rail/RailStandardStraight.java @@ -2,6 +2,7 @@ package com.hbm.blocks.rail; import com.hbm.blocks.BlockDummyable; import com.hbm.lib.Library; +import com.hbm.util.fauxpointtwelve.BlockPos; import net.minecraft.block.material.Material; import net.minecraft.tileentity.TileEntity; @@ -47,16 +48,16 @@ public class RailStandardStraight extends BlockDummyable implements IRailNTM { @Override public Vec3 getSnappingPos(World world, int x, int y, int z, double trainX, double trainY, double trainZ) { - return snapAndMove(world, x, y, z, trainX, trainY, trainZ, 0, 0, 0, 0, new double[1]); + return snapAndMove(world, x, y, z, trainX, trainY, trainZ, 0, 0, 0, 0, new RailLeaveInfo()); } @Override - public Vec3 getTravelLocation(World world, int x, int y, int z, double trainX, double trainY, double trainZ, double motionX, double motionY, double motionZ, double speed, double[] leftover) { - return snapAndMove(world, x, y, z, trainX, trainY, trainZ, motionX, motionY, motionZ, speed, leftover); + public Vec3 getTravelLocation(World world, int x, int y, int z, double trainX, double trainY, double trainZ, double motionX, double motionY, double motionZ, double speed, RailLeaveInfo info) { + return snapAndMove(world, x, y, z, trainX, trainY, trainZ, motionX, motionY, motionZ, speed, info); } /* Very simple function determining the snapping position and adding the motion value to it, if desired. */ - public Vec3 snapAndMove(World world, int x, int y, int z, double trainX, double trainY, double trainZ, double motionX, double motionY, double motionZ, double speed, double[] leftover) { + public Vec3 snapAndMove(World world, int x, int y, int z, double trainX, double trainY, double trainZ, double motionX, double motionY, double motionZ, double speed, RailLeaveInfo info) { int[] pos = this.findCore(world, x, y, z); if(pos == null) return Vec3.createVectorHelper(trainX, trainY, trainZ); int cX = pos[0]; @@ -81,7 +82,8 @@ public class RailStandardStraight extends BlockDummyable implements IRailNTM { vec.xCoord = MathHelper.clamp_double(targetX, x - 2, x + 3); vec.yCoord = y; vec.zCoord = z + 0.5; - leftover[0] = Math.abs(targetX - vec.xCoord); + info.dist(Math.abs(targetX - vec.xCoord)); + info.pos(new BlockPos(vec.xCoord + (motionX > 0 ? 1 : -1), y, z)); } else { double targetZ = trainZ; if(motionZ > 0) { @@ -92,7 +94,8 @@ public class RailStandardStraight extends BlockDummyable implements IRailNTM { vec.xCoord = x + 0.5; vec.yCoord = y; vec.zCoord = MathHelper.clamp_double(targetZ, z - 2, z + 3); - leftover[0] = Math.abs(targetZ - vec.zCoord); + info.dist(Math.abs(targetZ - vec.zCoord)); + info.pos(new BlockPos(x, y, vec.zCoord + (motionZ > 0 ? 1 : -1))); } return vec; diff --git a/src/main/java/com/hbm/entity/train/EntityRailCarBase.java b/src/main/java/com/hbm/entity/train/EntityRailCarBase.java new file mode 100644 index 000000000..f5c800bb0 --- /dev/null +++ b/src/main/java/com/hbm/entity/train/EntityRailCarBase.java @@ -0,0 +1,157 @@ +package com.hbm.entity.train; + +import com.hbm.blocks.rail.IRailNTM; +import com.hbm.blocks.rail.IRailNTM.RailLeaveInfo; +import com.hbm.blocks.rail.IRailNTM.TrackGauge; +import com.hbm.util.fauxpointtwelve.BlockPos; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.block.Block; +import net.minecraft.entity.Entity; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.MathHelper; +import net.minecraft.util.Vec3; +import net.minecraft.world.World; + +public abstract class EntityRailCarBase extends Entity { + + public boolean isOnRail = true; + private int turnProgress; + private double trainX; + private double trainY; + private double trainZ; + private double trainYaw; + private double trainPitch; + @SideOnly(Side.CLIENT) private double velocityX; + @SideOnly(Side.CLIENT) private double velocityY; + @SideOnly(Side.CLIENT) private double velocityZ; + + public EntityRailCarBase(World world) { + super(world); + } + + @Override protected void entityInit() { } + @Override protected void readEntityFromNBT(NBTTagCompound nbt) { } + @Override protected void writeEntityToNBT(NBTTagCompound nbt) { } + + @Override + public void onUpdate() { + + if(this.worldObj.isRemote) { + if(this.turnProgress > 0) { + double x = this.posX + (this.trainX - this.posX) / (double) this.turnProgress; + double y = this.posY + (this.trainY - this.posY) / (double) this.turnProgress; + double z = this.posZ + (this.trainZ - this.posZ) / (double) this.turnProgress; + double yaw = MathHelper.wrapAngleTo180_double(this.trainYaw - (double) this.rotationYaw); + this.rotationYaw = (float) ((double) this.rotationYaw + yaw / (double) this.turnProgress); + this.rotationPitch = (float) ((double) this.rotationPitch + (this.trainPitch - (double) this.rotationPitch) / (double) this.turnProgress); + --this.turnProgress; + this.setPosition(x, y, z); + this.setRotation(this.rotationYaw, this.rotationPitch); + } else { + this.setPosition(this.posX, this.posY, this.posZ); + this.setRotation(this.rotationYaw, this.rotationPitch); + } + } else { + + BlockPos anchor = this.getCurentAnchorPos(); + Vec3 corePos = getRelPosAlongRail(anchor, this.getCurrentSpeed()); + + if(corePos == null) { + this.derail(); + } else { + this.setPosition(corePos.xCoord, corePos.yCoord, corePos.zCoord); + + anchor = this.getCurentAnchorPos(); //reset origin to new position + Vec3 frontPos = getRelPosAlongRail(anchor, this.getLengthSpan()); + Vec3 backPos = getRelPosAlongRail(anchor, -this.getLengthSpan()); + + if(frontPos == null) this.derail(); + if(backPos == null) this.derail(); + + if(frontPos != null && backPos != null) this.rotationYaw = generateYaw(frontPos, backPos); + } + } + } + + public Vec3 getRelPosAlongRail(BlockPos anchor, double distanceToCover) { + + double overshoot = 0; + float yaw = this.rotationYaw; + + Vec3 next = null; + + do { + + int x = anchor.getX(); + int y = anchor.getY(); + int z = anchor.getZ(); + Block block = worldObj.getBlock(x, y, z); + + Vec3 rot = Vec3.createVectorHelper(1, 0, 0); + rot.rotateAroundY(yaw); + + if(block instanceof IRailNTM) { + IRailNTM rail = (IRailNTM) block; + + if(rail.getGauge(worldObj, x, y, z) == this.getGauge()) { + RailLeaveInfo info = new RailLeaveInfo(); + Vec3 prev = next; + next = rail.getTravelLocation(worldObj, x, y, z, posX, posY, posZ, rot.xCoord, rot.yCoord, rot.zCoord, distanceToCover, info); + overshoot = info.overshoot; + anchor = info.pos; + yaw = generateYaw(next, prev); + + } else { + return null; + } + } else { + return null; + } + + } while(overshoot != 0); //if there's still length to cover, keep going + + return next; + } + + public float generateYaw(Vec3 front, Vec3 back) { + return 0F; //TODO + } + + /** Returns the amount of blocks that the train should move per tick */ + public abstract double getCurrentSpeed(); + /** Returns the gauge of this train */ + public abstract TrackGauge getGauge(); + /** Returns the length between the core and one of the bogies */ + public abstract double getLengthSpan(); + + /** Returns the "true" position of the train, i.e. the block it wants to snap to */ + public BlockPos getCurentAnchorPos() { + return new BlockPos(posX, posY, posZ); + } + + public void derail() { + isOnRail = false; + } + + @SideOnly(Side.CLIENT) + public void setPositionAndRotation2(double posX, double posY, double posZ, float yaw, float pitch, int turnProg) { + this.trainX = posX; + this.trainY = posY; + this.trainZ = posZ; + this.trainYaw = (double) yaw; + this.trainPitch = (double) pitch; + this.turnProgress = turnProg + 2; + this.motionX = this.velocityX; + this.motionY = this.velocityY; + this.motionZ = this.velocityZ; + } + + @SideOnly(Side.CLIENT) + public void setVelocity(double mX, double mY, double mZ) { + this.velocityX = this.motionX = mX; + this.velocityY = this.motionY = mY; + this.velocityZ = this.motionZ = mZ; + } +} From ec63136436efbe3dd543ccb4646c66e8169c2de7 Mon Sep 17 00:00:00 2001 From: Boblet Date: Wed, 3 May 2023 14:15:16 +0200 Subject: [PATCH 22/40] the black mesa rail network --- .../hbm/entity/train/EntityRailCarBase.java | 19 ++++++-- .../entity/train/EntityRailCarRidable.java | 43 +++++++++++++++++ .../com/hbm/entity/train/TrainCargoTram.java | 46 +++++++++++++++++++ 3 files changed, 104 insertions(+), 4 deletions(-) create mode 100644 src/main/java/com/hbm/entity/train/EntityRailCarRidable.java create mode 100644 src/main/java/com/hbm/entity/train/TrainCargoTram.java diff --git a/src/main/java/com/hbm/entity/train/EntityRailCarBase.java b/src/main/java/com/hbm/entity/train/EntityRailCarBase.java index f5c800bb0..7099bebde 100644 --- a/src/main/java/com/hbm/entity/train/EntityRailCarBase.java +++ b/src/main/java/com/hbm/entity/train/EntityRailCarBase.java @@ -34,6 +34,16 @@ public abstract class EntityRailCarBase extends Entity { @Override protected void entityInit() { } @Override protected void readEntityFromNBT(NBTTagCompound nbt) { } @Override protected void writeEntityToNBT(NBTTagCompound nbt) { } + + @Override + public boolean canBePushed() { + return true; + } + + @Override + public boolean canBeCollidedWith() { + return !this.isDead; + } @Override public void onUpdate() { @@ -67,10 +77,11 @@ public abstract class EntityRailCarBase extends Entity { Vec3 frontPos = getRelPosAlongRail(anchor, this.getLengthSpan()); Vec3 backPos = getRelPosAlongRail(anchor, -this.getLengthSpan()); - if(frontPos == null) this.derail(); - if(backPos == null) this.derail(); - - if(frontPos != null && backPos != null) this.rotationYaw = generateYaw(frontPos, backPos); + if(frontPos == null || backPos == null) { + this.derail(); + } else { + this.rotationYaw = generateYaw(frontPos, backPos); + } } } } diff --git a/src/main/java/com/hbm/entity/train/EntityRailCarRidable.java b/src/main/java/com/hbm/entity/train/EntityRailCarRidable.java new file mode 100644 index 000000000..837fcceb2 --- /dev/null +++ b/src/main/java/com/hbm/entity/train/EntityRailCarRidable.java @@ -0,0 +1,43 @@ +package com.hbm.entity.train; + +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.util.Vec3; +import net.minecraft.world.World; + +public abstract class EntityRailCarRidable extends EntityRailCarBase { + + public EntityRailCarRidable(World world) { + super(world); + } + + @Override + public boolean interactFirst(EntityPlayer player) { + if(this.riddenByEntity != null && this.riddenByEntity instanceof EntityPlayer && this.riddenByEntity != player) { + return true; + } else { + if(!this.worldObj.isRemote) { + player.mountEntity(this); + } + return true; + } + } + + @Override + public void onUpdate() { + super.onUpdate(); + } + + @Override + public void updateRiderPosition() { + + Vec3 offset = getRiderSeatPosition(); + offset.rotateAroundY(this.rotationYaw); + + if(this.riddenByEntity != null) { + this.riddenByEntity.setPosition(this.posX + offset.xCoord, this.posY + offset.yCoord, this.posZ + offset.zCoord); + } + } + + /** Returns a Vec3 showing the relative position from the driver to the core */ + public abstract Vec3 getRiderSeatPosition(); +} diff --git a/src/main/java/com/hbm/entity/train/TrainCargoTram.java b/src/main/java/com/hbm/entity/train/TrainCargoTram.java new file mode 100644 index 000000000..11c89263a --- /dev/null +++ b/src/main/java/com/hbm/entity/train/TrainCargoTram.java @@ -0,0 +1,46 @@ +package com.hbm.entity.train; + +import com.hbm.blocks.rail.IRailNTM.TrackGauge; + +import net.minecraft.util.Vec3; +import net.minecraft.world.World; + +public class TrainCargoTram extends EntityRailCarRidable { + + /* + * + * _________ + * | | \ <-- + * | | |___ + * | | | | | + * _O\|_|_______|__|_____________________________|/O_ + * |____| |____| + * \__________________________________________/ + * '( + )' '( + )' + * + */ + + public TrainCargoTram(World world) { + super(world); + } + + @Override + public double getCurrentSpeed() { + return 0; + } + + @Override + public TrackGauge getGauge() { + return TrackGauge.STANDARD; + } + + @Override + public double getLengthSpan() { + return 2; + } + + @Override + public Vec3 getRiderSeatPosition() { + return Vec3.createVectorHelper(1, 1, 0); + } +} From abc4dc0cbf92aef81a627d2df2d3ec59cd17faae Mon Sep 17 00:00:00 2001 From: Bob Date: Wed, 3 May 2023 23:10:28 +0200 Subject: [PATCH 23/40] tram trom --- src/main/java/com/hbm/blocks/ModBlocks.java | 5 + .../hbm/blocks/rail/RailStandardStraight.java | 9 +- .../java/com/hbm/entity/EntityMappings.java | 3 + .../hbm/entity/train/EntityRailCarBase.java | 13 +- .../com/hbm/entity/train/TrainCargoTram.java | 16 +- src/main/java/com/hbm/main/ClientProxy.java | 2 + .../com/hbm/main/ModEventHandlerClient.java | 14 + .../java/com/hbm/main/ResourceManager.java | 1 + .../entity/item/RenderTrainCargoTram.java | 37 ++ .../assets/hbm/models/vehicles/tram.obj | 425 ++++++++++++++++++ 10 files changed, 517 insertions(+), 8 deletions(-) create mode 100644 src/main/java/com/hbm/render/entity/item/RenderTrainCargoTram.java create mode 100644 src/main/resources/assets/hbm/models/vehicles/tram.obj diff --git a/src/main/java/com/hbm/blocks/ModBlocks.java b/src/main/java/com/hbm/blocks/ModBlocks.java index 3b4ee27cf..d806d1efc 100644 --- a/src/main/java/com/hbm/blocks/ModBlocks.java +++ b/src/main/java/com/hbm/blocks/ModBlocks.java @@ -11,6 +11,7 @@ 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.RailStandardStraight; import com.hbm.blocks.siege.*; import com.hbm.blocks.test.*; import com.hbm.blocks.turret.*; @@ -1085,6 +1086,8 @@ public class ModBlocks { public static Block rail_highspeed; public static Block rail_booster; + public static Block rail_large_straight; + public static Block statue_elb; public static Block statue_elb_g; public static Block statue_elb_w; @@ -2109,6 +2112,7 @@ public class ModBlocks { 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_large_straight = new RailStandardStraight().setBlockName("rail_large_straight").setHardness(5.0F).setResistance(10.0F).setCreativeTab(CreativeTabs.tabTransport).setBlockTextureName(RefStrings.MODID + ":block_steel"); 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"); @@ -3326,6 +3330,7 @@ public class ModBlocks { 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_large_straight); //Crate GameRegistry.registerBlock(crate, crate.getUnlocalizedName()); diff --git a/src/main/java/com/hbm/blocks/rail/RailStandardStraight.java b/src/main/java/com/hbm/blocks/rail/RailStandardStraight.java index d28329aca..91e51c8ca 100644 --- a/src/main/java/com/hbm/blocks/rail/RailStandardStraight.java +++ b/src/main/java/com/hbm/blocks/rail/RailStandardStraight.java @@ -15,8 +15,8 @@ import net.minecraftforge.common.util.ForgeDirection; public class RailStandardStraight extends BlockDummyable implements IRailNTM { - public RailStandardStraight(Material mat) { - super(mat); + public RailStandardStraight() { + super(Material.iron); } @Override @@ -24,6 +24,11 @@ public class RailStandardStraight extends BlockDummyable implements IRailNTM { return null; } + @Override + public int getRenderType() { + return 0; + } + @Override public int[] getDimensions() { return new int[] {0, 0, 2, 2, 0, 0}; diff --git a/src/main/java/com/hbm/entity/EntityMappings.java b/src/main/java/com/hbm/entity/EntityMappings.java index 4d56ebc9b..844c470e9 100644 --- a/src/main/java/com/hbm/entity/EntityMappings.java +++ b/src/main/java/com/hbm/entity/EntityMappings.java @@ -14,6 +14,7 @@ import com.hbm.entity.mob.botprime.*; import com.hbm.entity.mob.siege.*; import com.hbm.entity.particle.*; import com.hbm.entity.projectile.*; +import com.hbm.entity.train.TrainCargoTram; import com.hbm.main.MainRegistry; import com.hbm.util.Tuple.Quartet; @@ -205,6 +206,8 @@ public class EntityMappings { addEntity(EntityChemical.class, "entity_chemthrower_splash", 1000); addEntity(EntityMist.class, "entity_mist", 1000); + addEntity(TrainCargoTram.class, "entity_ntm_cargo_tram", 250, false); + addMob(EntityCreeperNuclear.class, "entity_mob_nuclear_creeper", 0x204131, 0x75CE00); addMob(EntityCreeperTainted.class, "entity_mob_tainted_creeper", 0x813b9b, 0xd71fdd); addMob(EntityCreeperPhosgene.class, "entity_mob_phosgene_creeper", 0xE3D398, 0xB8A06B); diff --git a/src/main/java/com/hbm/entity/train/EntityRailCarBase.java b/src/main/java/com/hbm/entity/train/EntityRailCarBase.java index 7099bebde..deefbf4db 100644 --- a/src/main/java/com/hbm/entity/train/EntityRailCarBase.java +++ b/src/main/java/com/hbm/entity/train/EntityRailCarBase.java @@ -75,7 +75,7 @@ public abstract class EntityRailCarBase extends Entity { anchor = this.getCurentAnchorPos(); //reset origin to new position Vec3 frontPos = getRelPosAlongRail(anchor, this.getLengthSpan()); - Vec3 backPos = getRelPosAlongRail(anchor, -this.getLengthSpan()); + Vec3 backPos = getRelPosAlongRail(anchor, this.getLengthSpan()); if(frontPos == null || backPos == null) { this.derail(); @@ -91,7 +91,7 @@ public abstract class EntityRailCarBase extends Entity { double overshoot = 0; float yaw = this.rotationYaw; - Vec3 next = null; + Vec3 next = Vec3.createVectorHelper(posX, posY, posZ); do { @@ -100,7 +100,7 @@ public abstract class EntityRailCarBase extends Entity { int z = anchor.getZ(); Block block = worldObj.getBlock(x, y, z); - Vec3 rot = Vec3.createVectorHelper(1, 0, 0); + Vec3 rot = Vec3.createVectorHelper(0, 0, 1); rot.rotateAroundY(yaw); if(block instanceof IRailNTM) { @@ -127,7 +127,10 @@ public abstract class EntityRailCarBase extends Entity { } public float generateYaw(Vec3 front, Vec3 back) { - return 0F; //TODO + double deltaX = front.xCoord - back.xCoord; + double deltaZ = front.zCoord - back.zCoord; + double radians = Math.atan(deltaZ / deltaX); + return (float) MathHelper.wrapAngleTo180_double(radians * 180D / Math.PI - 90); } /** Returns the amount of blocks that the train should move per tick */ @@ -144,6 +147,8 @@ public abstract class EntityRailCarBase extends Entity { public void derail() { isOnRail = false; + this.setDead(); + worldObj.createExplosion(this, posX, posY, posZ, 1F, false); } @SideOnly(Side.CLIENT) diff --git a/src/main/java/com/hbm/entity/train/TrainCargoTram.java b/src/main/java/com/hbm/entity/train/TrainCargoTram.java index 11c89263a..c8c7160e4 100644 --- a/src/main/java/com/hbm/entity/train/TrainCargoTram.java +++ b/src/main/java/com/hbm/entity/train/TrainCargoTram.java @@ -2,6 +2,8 @@ package com.hbm.entity.train; import com.hbm.blocks.rail.IRailNTM.TrackGauge; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.util.DamageSource; import net.minecraft.util.Vec3; import net.minecraft.world.World; @@ -22,11 +24,12 @@ public class TrainCargoTram extends EntityRailCarRidable { public TrainCargoTram(World world) { super(world); + this.setSize(2F, 1F); } @Override public double getCurrentSpeed() { - return 0; + return this.riddenByEntity instanceof EntityPlayer ? ((EntityPlayer) this.riddenByEntity).moveForward * 0.125D : 0; } @Override @@ -41,6 +44,15 @@ public class TrainCargoTram extends EntityRailCarRidable { @Override public Vec3 getRiderSeatPosition() { - return Vec3.createVectorHelper(1, 1, 0); + return Vec3.createVectorHelper(0.75, 1.75, 0.75); + } + + @Override + public boolean attackEntityFrom(DamageSource p_70097_1_, float p_70097_2_) { + if(!this.worldObj.isRemote && !this.isDead) { + this.setDead(); + } + + return true; } } diff --git a/src/main/java/com/hbm/main/ClientProxy.java b/src/main/java/com/hbm/main/ClientProxy.java index d366c31f2..04a912a51 100644 --- a/src/main/java/com/hbm/main/ClientProxy.java +++ b/src/main/java/com/hbm/main/ClientProxy.java @@ -60,6 +60,7 @@ import com.hbm.entity.mob.botprime.*; import com.hbm.entity.mob.siege.*; import com.hbm.entity.particle.*; import com.hbm.entity.projectile.*; +import com.hbm.entity.train.*; import com.hbm.handler.CasingEjector; import com.hbm.handler.HbmKeybinds; import com.hbm.handler.ImpactWorldHandler; @@ -681,6 +682,7 @@ public class ClientProxy extends ServerProxy { RenderingRegistry.registerEntityRenderingHandler(EntityMinecartCrate.class, new RenderMinecart()); RenderingRegistry.registerEntityRenderingHandler(EntityMinecartNTM.class, new RenderNeoCart()); RenderingRegistry.registerEntityRenderingHandler(EntityMagnusCartus.class, new RenderMagnusCartus()); + RenderingRegistry.registerEntityRenderingHandler(TrainCargoTram.class, new RenderTrainCargoTram()); //items RenderingRegistry.registerEntityRenderingHandler(EntityMovingItem.class, new RenderMovingItem()); RenderingRegistry.registerEntityRenderingHandler(EntityMovingPackage.class, new RenderMovingPackage()); diff --git a/src/main/java/com/hbm/main/ModEventHandlerClient.java b/src/main/java/com/hbm/main/ModEventHandlerClient.java index 9e8872aec..9938c2ec9 100644 --- a/src/main/java/com/hbm/main/ModEventHandlerClient.java +++ b/src/main/java/com/hbm/main/ModEventHandlerClient.java @@ -127,6 +127,7 @@ 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.common.util.ForgeDirection; import net.minecraftforge.event.entity.player.ItemTooltipEvent; public class ModEventHandlerClient { @@ -200,6 +201,19 @@ public class ModEventHandlerClient { GL11.glPopMatrix(); Minecraft.getMinecraft().renderEngine.bindTexture(Gui.icons); }*/ + + List text = new ArrayList(); + text.add("YAW: " + player.rotationYaw); + text.add("PITCH: " + player.rotationPitch); + int i = MathHelper.floor_double(player.rotationYaw * 4.0F / 360.0F + 0.5D) & 3; + int j = 0; + if(i == 0) j = 2; + if(i == 1) j = 5; + if(i == 2) j = 3; + if(i == 3) j = 4; + ForgeDirection dir = ForgeDirection.getOrientation(j).getOpposite(); + text.add("x: " + dir.offsetX + " z: " + dir.offsetZ); + ILookOverlay.printGeneric(event, "DEBUG", 0xffff00, 0x4040000, text); } /// HANLDE ANIMATION BUSES /// diff --git a/src/main/java/com/hbm/main/ResourceManager.java b/src/main/java/com/hbm/main/ResourceManager.java index c56c4ed0d..302a3523c 100644 --- a/src/main/java/com/hbm/main/ResourceManager.java +++ b/src/main/java/com/hbm/main/ResourceManager.java @@ -1005,6 +1005,7 @@ public class ResourceManager { 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")); public static final IModelCustom cart_powder = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/vehicles/cart_powder.obj")); + public static final IModelCustom train_cargo_tram = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/vehicles/tram.obj")); ////Texture Entities diff --git a/src/main/java/com/hbm/render/entity/item/RenderTrainCargoTram.java b/src/main/java/com/hbm/render/entity/item/RenderTrainCargoTram.java new file mode 100644 index 000000000..660340f0f --- /dev/null +++ b/src/main/java/com/hbm/render/entity/item/RenderTrainCargoTram.java @@ -0,0 +1,37 @@ +package com.hbm.render.entity.item; + +import org.lwjgl.opengl.GL11; + +import com.hbm.main.MainRegistry; +import com.hbm.main.ResourceManager; + +import net.minecraft.client.renderer.entity.Render; +import net.minecraft.entity.Entity; +import net.minecraft.util.ResourceLocation; + +public class RenderTrainCargoTram extends Render { + + @Override + public void doRender(Entity entity, double x, double y, double z, float swing, float interp) { + GL11.glPushMatrix(); + GL11.glTranslated(x, y, z); + + GL11.glRotated(180 - entity.rotationYaw, 0, 1, 0); + GL11.glRotated(-entity.rotationPitch, 0, 0, 1); + + MainRegistry.proxy.displayTooltip("Yaw: " + entity.rotationYaw, 666); + MainRegistry.proxy.displayTooltip("Pitch: " + entity.rotationPitch, 667); + + GL11.glDisable(GL11.GL_CULL_FACE); + bindTexture(ResourceManager.universal); + ResourceManager.train_cargo_tram.renderAll(); + GL11.glEnable(GL11.GL_CULL_FACE); + + GL11.glPopMatrix(); + } + + @Override + protected ResourceLocation getEntityTexture(Entity entity) { + return ResourceManager.universal; + } +} diff --git a/src/main/resources/assets/hbm/models/vehicles/tram.obj b/src/main/resources/assets/hbm/models/vehicles/tram.obj new file mode 100644 index 000000000..38a567ec5 --- /dev/null +++ b/src/main/resources/assets/hbm/models/vehicles/tram.obj @@ -0,0 +1,425 @@ +# Blender v2.79 (sub 0) OBJ File: 'tram.blend' +# www.blender.org +o Plane +v -1.000000 0.500000 2.500000 +v 1.000000 0.500000 2.500000 +v -1.000000 0.500000 -2.500000 +v 1.000000 0.500000 -2.500000 +v -1.000000 0.250000 2.500000 +v 1.000000 0.250000 2.500000 +v -1.000000 0.250000 -2.500000 +v 1.000000 0.250000 -2.500000 +v -1.000000 0.000000 2.250000 +v 1.000000 0.000000 2.250000 +v -1.000000 0.000000 -2.250000 +v 1.000000 0.000000 -2.250000 +v -0.125000 0.500000 1.000000 +v 0.875000 0.500000 1.000000 +v -0.125000 1.500000 1.000000 +v 0.875000 1.500000 1.000000 +v 0.125000 0.500000 2.000000 +v -0.125000 0.500000 1.750000 +v 0.875000 0.500000 1.750000 +v 0.625000 0.500000 2.000000 +v -0.125000 1.500000 1.750000 +v 0.125000 1.500000 2.000000 +v 0.625000 1.500000 2.000000 +v 0.875000 1.500000 1.750000 +v -0.625000 0.750000 2.437500 +v -0.625000 0.750000 2.312500 +v 0.625000 0.750000 2.312500 +v 0.625000 0.750000 2.437500 +v 0.713388 0.713388 2.312500 +v 0.713388 0.713388 2.437500 +v 0.750000 0.625000 2.312500 +v 0.750000 0.625000 2.437500 +v 0.713388 0.536612 2.312500 +v 0.713388 0.536612 2.437500 +v 0.625000 0.500000 2.312500 +v 0.625000 0.500000 2.437500 +v 0.536612 0.536612 2.312500 +v 0.536612 0.536612 2.437500 +v 0.500000 0.625000 2.312500 +v 0.500000 0.625000 2.437500 +v 0.536612 0.713388 2.312500 +v 0.536612 0.713388 2.437500 +v -0.536612 0.713388 2.312500 +v -0.536612 0.713388 2.437500 +v -0.500000 0.625000 2.312500 +v -0.500000 0.625000 2.437500 +v -0.536612 0.536612 2.312500 +v -0.536612 0.536612 2.437500 +v -0.625000 0.500000 2.312500 +v -0.625000 0.500000 2.437500 +v -0.713388 0.536612 2.312500 +v -0.713388 0.536612 2.437500 +v -0.750000 0.625000 2.312500 +v -0.750000 0.625000 2.437500 +v -0.713388 0.713388 2.312500 +v -0.713388 0.713388 2.437500 +v 0.375000 0.500000 2.312500 +v 0.875000 0.500000 2.312500 +v 0.375000 0.500000 2.187500 +v 0.875000 0.500000 2.187500 +v 0.375000 0.750000 2.187500 +v 0.375000 0.750000 2.312500 +v 0.875000 0.750000 2.312500 +v 0.875000 0.750000 2.187500 +v -0.875000 0.500000 2.312500 +v -0.375000 0.500000 2.312500 +v -0.875000 0.500000 2.187500 +v -0.375000 0.500000 2.187500 +v -0.875000 0.750000 2.187500 +v -0.875000 0.750000 2.312500 +v -0.375000 0.750000 2.312500 +v -0.375000 0.750000 2.187500 +v -0.875000 0.500000 1.875000 +v -0.125000 0.500000 1.875000 +v -0.875000 0.500000 1.125000 +v -0.125000 0.500000 1.125000 +v -0.875000 1.000000 1.125000 +v -0.875000 1.000000 1.875000 +v -0.125000 1.000000 1.875000 +v -0.125000 1.000000 1.125000 +v -0.750000 0.500000 -2.250000 +v 0.750000 0.500000 -2.250000 +v -0.750000 0.500000 -1.750000 +v 0.750000 0.500000 -1.750000 +v -0.750000 1.000000 -2.250000 +v 0.750000 1.000000 -2.250000 +v -0.750000 1.000000 -1.750000 +v 0.750000 1.000000 -1.750000 +vt 0.000000 0.833333 +vt 0.320000 0.000000 +vt 0.320000 0.833333 +vt 0.840000 0.333333 +vt 0.800000 0.000000 +vt 0.840000 0.000000 +vt 0.720000 0.833333 +vt 0.720000 0.000000 +vt 0.800000 0.041667 +vt 0.880000 0.333333 +vt 0.880000 0.000000 +vt 0.920000 0.333333 +vt 0.880000 0.000000 +vt 0.920000 0.000000 +vt 0.320000 0.000000 +vt 0.640000 0.750000 +vt 0.320000 0.750000 +vt 0.320000 0.791666 +vt 0.640000 0.791667 +vt 0.640000 0.833333 +vt 0.640000 0.000000 +vt 0.720000 0.041667 +vt 0.800000 0.875000 +vt 0.880000 0.708333 +vt 0.880000 0.875000 +vt 0.640000 0.958333 +vt 0.480000 0.833333 +vt 0.640000 0.833333 +vt 0.280000 1.000000 +vt 0.160000 1.000000 +vt 0.160000 0.833333 +vt 0.160000 0.833333 +vt 0.000000 1.000000 +vt 0.000000 0.833333 +vt 0.640000 0.791667 +vt 0.480000 0.916667 +vt 0.320000 0.958333 +vt 0.320000 0.916667 +vt 0.320000 0.791667 +vt 0.480000 0.791667 +vt 0.760000 0.833333 +vt 0.800000 0.916666 +vt 0.760000 0.916667 +vt 0.906131 0.580162 +vt 0.880000 0.568887 +vt 0.890824 0.541667 +vt 0.400000 0.973065 +vt 0.420000 0.958333 +vt 0.420000 0.973065 +vt 0.320000 1.000000 +vt 0.340000 0.958333 +vt 0.340000 1.000000 +vt 0.460000 0.987796 +vt 0.480000 0.973065 +vt 0.480000 0.987796 +vt 0.360000 0.958333 +vt 0.340000 0.973065 +vt 0.340000 0.958333 +vt 0.760000 0.996828 +vt 0.780000 0.955161 +vt 0.780000 0.996828 +vt 0.380000 0.973065 +vt 0.400000 0.958333 +vt 0.400000 0.973065 +vt 0.360000 0.973065 +vt 0.340000 0.987796 +vt 0.780000 0.996828 +vt 0.800000 0.955161 +vt 0.800000 0.996828 +vt 0.380000 0.987796 +vt 0.400000 0.987796 +vt 0.380000 0.987796 +vt 0.360000 0.973065 +vt 0.380000 0.973065 +vt 0.940000 0.583333 +vt 0.960000 0.666667 +vt 0.940000 0.666667 +vt 0.440000 0.973065 +vt 0.460000 0.958333 +vt 0.460000 0.973065 +vt 0.380000 0.958333 +vt 0.420000 0.987796 +vt 0.440000 0.973065 +vt 0.440000 0.987796 +vt 0.440000 0.987796 +vt 0.460000 0.987796 +vt 0.916955 0.571129 +vt 0.936955 0.556398 +vt 0.936955 0.571129 +vt 0.770824 0.916666 +vt 0.796955 0.927941 +vt 0.786131 0.955161 +vt 0.420000 0.973065 +vt 0.440000 0.958333 +vt 0.916955 0.556398 +vt 0.936955 0.541667 +vt 0.920000 0.250000 +vt 0.960000 0.333333 +vt 0.920000 0.333333 +vt 0.460000 0.973065 +vt 0.480000 0.958333 +vt 0.400000 0.987796 +vt 0.420000 0.987796 +vt 0.920000 0.083333 +vt 0.960000 0.166667 +vt 0.920000 0.166667 +vt 0.940000 0.666667 +vt 0.920000 0.708333 +vt 0.920000 0.666667 +vt 0.920000 0.583333 +vt 0.940000 0.666667 +vt 0.920000 0.666667 +vt 0.960000 0.250000 +vt 0.920000 0.166667 +vt 0.960000 0.166667 +vt 0.800000 0.708333 +vt 0.920000 0.583333 +vt 0.920000 0.708333 +vt 0.640000 0.958333 +vt 0.760000 0.833333 +vt 0.760000 0.958333 +vt 0.960000 0.458333 +vt 0.880000 0.333333 +vt 0.960000 0.333333 +vt 0.960000 0.958333 +vt 0.880000 0.833333 +vt 0.960000 0.833333 +vt 0.880000 1.000000 +vt 0.800000 0.875000 +vt 0.880000 0.875000 +vt 0.880000 0.708333 +vt 0.960000 0.833333 +vt 0.880000 0.833333 +vt 1.000000 0.083333 +vt 0.920000 0.000000 +vt 1.000000 0.000000 +vt 0.880000 0.541667 +vt 0.960000 0.458333 +vt 0.960000 0.541667 +vt 0.800000 0.583333 +vt 0.880000 0.333333 +vt 0.880000 0.583333 +vt 0.000000 0.000000 +vt 0.800000 0.333333 +vt 0.760000 0.000000 +vt 0.800000 0.791666 +vt 0.760000 0.833333 +vt 0.880000 0.333333 +vt 0.640000 0.000000 +vt 0.680000 0.000000 +vt 0.720000 0.791667 +vt 0.680000 0.833333 +vt 0.800000 0.708333 +vt 0.480000 0.958333 +vt 0.280000 0.833333 +vt 0.320000 0.875000 +vt 0.320000 0.958333 +vt 0.160000 1.000000 +vt 0.480000 0.791667 +vt 0.480000 0.958333 +vt 0.800000 0.833333 +vt 0.916955 0.552942 +vt 0.916955 0.568887 +vt 0.890824 0.580162 +vt 0.880000 0.552942 +vt 0.906131 0.541667 +vt 0.400000 0.958333 +vt 0.320000 0.958333 +vt 0.760000 0.955161 +vt 0.380000 0.958333 +vt 0.360000 0.987796 +vt 0.780000 0.955161 +vt 0.960000 0.583333 +vt 0.440000 0.958333 +vt 0.360000 0.958333 +vt 0.760000 0.943886 +vt 0.760000 0.927941 +vt 0.786131 0.916666 +vt 0.796955 0.943886 +vt 0.770824 0.955161 +vt 0.420000 0.958333 +vt 0.916955 0.541667 +vt 0.960000 0.250000 +vt 0.460000 0.958333 +vt 0.960000 0.083333 +vt 0.940000 0.708333 +vt 0.940000 0.583333 +vt 0.920000 0.250000 +vt 0.800000 0.583333 +vt 0.640000 0.833333 +vt 0.880000 0.458333 +vt 0.880000 0.958333 +vt 0.800000 1.000000 +vt 0.960000 0.708333 +vt 0.920000 0.083333 +vt 0.880000 0.458333 +vt 0.800000 0.333333 +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.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 -1.0000 0.0000 0.0000 +vn 0.7071 0.0000 0.7071 +vn -0.7071 0.0000 0.7071 +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.3827 -0.9239 0.0000 +vn -0.3827 0.9239 0.0000 +vn -0.9239 0.3827 0.0000 +s off +f 2/1/1 3/2/1 1/3/1 +f 8/4/2 11/5/2 7/6/2 +f 4/7/3 2/8/3 10/9/3 +f 4/10/4 7/6/4 3/11/4 +f 1/12/5 6/13/5 2/14/5 +f 11/15/6 10/16/6 9/17/6 +f 5/18/7 10/16/7 6/19/7 +f 1/20/8 3/21/8 11/22/8 +f 20/23/5 22/24/5 17/25/5 +f 14/26/3 24/27/3 19/28/3 +f 24/29/1 16/30/1 15/31/1 +f 13/32/4 16/33/4 14/34/4 +f 24/27/9 20/35/9 19/28/9 +f 18/36/10 22/37/10 21/38/10 +f 18/36/8 15/39/8 13/40/8 +f 58/41/5 62/42/5 57/43/5 +f 25/44/5 54/45/5 50/46/5 +f 28/47/11 29/48/11 27/49/11 +f 65/50/8 69/51/8 67/52/8 +f 52/53/12 53/54/12 51/55/12 +f 30/56/13 31/57/13 29/58/13 +f 57/59/8 61/60/8 59/61/8 +f 50/62/14 51/63/14 49/64/14 +f 32/65/15 33/66/15 31/57/15 +f 60/67/3 63/68/3 58/69/3 +f 48/70/16 49/64/16 47/71/16 +f 33/72/16 36/73/16 35/74/16 +f 63/75/1 61/76/1 62/77/1 +f 46/78/15 47/79/15 45/80/15 +f 36/73/14 37/81/14 35/74/14 +f 56/82/17 26/83/17 55/84/17 +f 44/85/13 45/80/13 43/86/13 +f 38/87/12 39/88/12 37/89/12 +f 28/90/5 40/91/5 36/92/5 +f 25/93/11 43/94/11 26/83/11 +f 40/95/18 41/96/18 39/88/18 +f 59/97/4 64/98/4 60/99/4 +f 54/100/18 55/101/18 53/54/18 +f 42/102/17 27/49/17 41/103/17 +f 66/104/5 70/105/5 65/106/5 +f 68/107/3 71/108/3 66/109/3 +f 71/110/1 69/111/1 70/112/1 +f 67/113/4 72/114/4 68/115/4 +f 75/116/6 74/117/6 73/118/6 +f 79/119/1 77/120/1 78/121/1 +f 76/122/3 79/123/3 74/124/3 +f 73/125/8 77/126/8 75/127/8 +f 75/128/4 80/129/4 76/130/4 +f 74/131/5 78/132/5 73/133/5 +f 86/134/3 84/135/3 82/136/3 +f 87/137/8 81/138/8 83/139/8 +f 85/140/4 82/141/4 81/142/4 +f 2/1/1 4/143/1 3/2/1 +f 8/4/2 12/144/2 11/5/2 +f 2/8/3 6/145/3 10/9/3 +f 10/9/3 12/146/3 4/7/3 +f 12/146/3 8/147/3 4/7/3 +f 4/10/4 8/4/4 7/6/4 +f 1/12/5 5/148/5 6/13/5 +f 11/15/6 12/149/6 10/16/6 +f 5/18/7 9/17/7 10/16/7 +f 3/21/8 7/150/8 11/22/8 +f 11/22/8 9/151/8 1/20/8 +f 9/151/8 5/152/8 1/20/8 +f 20/23/5 23/153/5 22/24/5 +f 14/26/3 16/154/3 24/27/3 +f 15/31/1 21/155/1 24/29/1 +f 21/155/1 22/156/1 24/29/1 +f 22/156/1 23/157/1 24/29/1 +f 13/32/4 15/158/4 16/33/4 +f 24/27/9 23/159/9 20/35/9 +f 18/36/10 17/160/10 22/37/10 +f 18/36/8 21/38/8 15/39/8 +f 58/41/5 63/161/5 62/42/5 +f 46/162/5 44/163/5 25/44/5 +f 25/44/5 56/164/5 54/45/5 +f 54/45/5 52/165/5 50/46/5 +f 50/46/5 48/166/5 46/162/5 +f 46/162/5 25/44/5 50/46/5 +f 28/47/11 30/167/11 29/48/11 +f 65/50/8 70/168/8 69/51/8 +f 52/53/12 54/100/12 53/54/12 +f 30/56/13 32/65/13 31/57/13 +f 57/59/8 62/169/8 61/60/8 +f 50/62/14 52/170/14 51/63/14 +f 32/65/15 34/171/15 33/66/15 +f 60/67/3 64/172/3 63/68/3 +f 48/70/16 50/62/16 49/64/16 +f 33/72/16 34/171/16 36/73/16 +f 63/75/1 64/173/1 61/76/1 +f 46/78/15 48/174/15 47/79/15 +f 36/73/14 38/175/14 37/81/14 +f 56/82/17 25/93/17 26/83/17 +f 44/85/13 46/78/13 45/80/13 +f 38/87/12 40/95/12 39/88/12 +f 32/176/5 30/177/5 28/90/5 +f 28/90/5 42/178/5 40/91/5 +f 40/91/5 38/179/5 36/92/5 +f 36/92/5 34/180/5 32/176/5 +f 32/176/5 28/90/5 36/92/5 +f 25/93/11 44/181/11 43/94/11 +f 40/95/18 42/182/18 41/96/18 +f 59/97/4 61/183/4 64/98/4 +f 54/100/18 56/184/18 55/101/18 +f 42/102/17 28/47/17 27/49/17 +f 66/104/5 71/185/5 70/105/5 +f 68/107/3 72/186/3 71/108/3 +f 71/110/1 72/187/1 69/111/1 +f 67/113/4 69/188/4 72/114/4 +f 75/116/6 76/189/6 74/117/6 +f 79/119/1 80/190/1 77/120/1 +f 76/122/3 80/191/3 79/123/3 +f 73/125/8 78/192/8 77/126/8 +f 75/128/4 77/193/4 80/129/4 +f 74/131/5 79/194/5 78/132/5 +f 86/134/3 88/195/3 84/135/3 +f 87/137/8 85/196/8 81/138/8 +f 85/140/4 86/197/4 82/141/4 From 907ab2f7b480add8a8723d2e70b43f906c4303f3 Mon Sep 17 00:00:00 2001 From: BallOfEnergy <66693744+BallOfEnergy1@users.noreply.github.com> Date: Wed, 3 May 2023 19:20:24 -0500 Subject: [PATCH 24/40] fixing the texture because it wants to be crappy --- .../hbm/textures/models/trinkets/Microwave.png | Bin 1788 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 src/main/resources/assets/hbm/textures/models/trinkets/Microwave.png diff --git a/src/main/resources/assets/hbm/textures/models/trinkets/Microwave.png b/src/main/resources/assets/hbm/textures/models/trinkets/Microwave.png deleted file mode 100644 index 13afba352dcb8175b35341cb00bb585beeb37eb4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1788 zcmVPx#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D29ZfbK~#8N?ORK4 z6h{!Q?wQ^7+C;1kaiS1VKuB-`5i6$%iJZ7ZxpB)0Df|d7CjTI3t~nx3L6IzxTOuJL zD-j_INrXb;AQB9T?cJH_d31Na>KPj?UVH7Gh4o{;Rl9qtduO()tE+0d%Yyn~dV1Ox z&4KXr>C?W?7$sy;?^_H_0GR2nvRhDTKvC~oR01gKF3i%bBx|>2z2Pmo%5FhV0X&&` z;>~_^&9mDS!UovUZcvo<^JOvWIKi8kn7CH7H^j}GH>uTX(bcP0yXyJ*`C`Q22!i1A zqB#<5$q3HP&C$h+7uVH$0b3G4FXp-43#c@ps5eC~=DFSr*!LQ+@7>_Khf6wc4W;CX zv78_T8KX#w1{oWZrG=Nj-!57k!)Et36^QW9 zbWPaH&)Kd(*9{hQ4B?*-MpLx8HmE(+8ba_%+lQMyK;Q=&ZtNBTtg`{kC^OHDb74s7 zLkRqOkY8_tkuIk}AfdWG>NTmc>hsKVEk(`EdS*h1g4JIaqxKHOkqCy3 z)>0j`BuOaEQV2oP`1rW%i$UW)tu@u^b^7)8ZAb5gkM*BLi|CejtZ2Pn^j%Vu=RUO_ zt2dYwP;rfqhmXdb`_O}1Ye0Z{G4G%I?ijpXBMXQ*M%1DPDiaO7!9!pBVcpSDVMPCwy zu4GXRA+=rK>%#f-@6*|{r(8WuNDb8&u>oVtn9&rfy$k__B%{o=Wn#c^;QB}uZB9?JMj{t)TF+mf|a%5OA z&TPX&XbU4KbN9GY(bo$|>m$}j_zu3U$;fC}d#%t;K@Uh6M24WF!;N!e3mW(Bb_h?L z#u7-}65u)qVgg)pNdun^YP zJx7Bue2)1Sv#bf80%a9@Av9*`lzM@|+gZ_iHF(t;u-YkRX0G_BmmAIHgG;SkH7n2ODQtjf#p+VtI*=( zb>36Vg^=$$@4T&pp$kA#lk#%}>o!tZ3*0#ZZ>YLW)}4j20$8^z#K{%Bp~@Sr%rIZ` zc51E#oQkls)S%3d5m#oeG{0_A;Q2mTV<^)Z9XRlY%PTNiQ*(Trbe55nxtzJ?+=Eyt zs@LljMG-x|bI0`!ihc(l{V?#CdFG>^#*W;bX#A1q6w1yIHY*v2pIFbzBT(R##3>x!g;^^YNjC?w7w zuuP8ZiirT0niozubBQ5d?+LWS? zi%|*LBqlG>F8hRY6Gn}J1ppf$Rn|O|s)#7T+K-{`U@%i5$pl&nCT$F32o2yo0s+l1 zk%9m?-ynAVN-Y+58y!m7fXlD}UoQN-0vCWA<+rkYVvL0@yarr9yTH{)gggjU z4TiFf$gs>$7_kj#pJ`)ZL#@-0vb0Tx+i-v2j6eXNhzeotjahNW>U`u*Iw7r>F%Fu; z<3@~9Hh>nX>2eAq From 76756f02e85da12e2374b25b06db035d0f4821ba Mon Sep 17 00:00:00 2001 From: BallOfEnergy <66693744+BallOfEnergy1@users.noreply.github.com> Date: Wed, 3 May 2023 19:28:46 -0500 Subject: [PATCH 25/40] intellij being dumb and not seeing files moment --- .../hbm/textures/models/trinkets/microwave.png | Bin 0 -> 566 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 src/main/resources/assets/hbm/textures/models/trinkets/microwave.png diff --git a/src/main/resources/assets/hbm/textures/models/trinkets/microwave.png b/src/main/resources/assets/hbm/textures/models/trinkets/microwave.png new file mode 100644 index 0000000000000000000000000000000000000000..82a5c22a44f90fea0a359d8b8d3c99ead67c999a GIT binary patch literal 566 zcmV-60?GY}P)Px$@JU2LRCr$PS+Puz0xpk$g+W;^`InA7%Z|37`TpRe*>zlj+>0GF1yu0hub`Vuzqh zW0`}8#!K}5U+_%};SnY1a)$gP{K@_#V4xgch7q0$aK1hxg3T>}9HNTlz8)o{T_gdy zm(Up>6%ZqkEx>72b6queiHB> zt7^$_s|k$LR%7$g4|vO-xZKs_1oM>S3v9Z>IvvcI95Q8 z)la4X6413ltAKt2T%7`r&w^Z&Puc=0rb`N+Nv1%GKvVf70jZcR#cv7)px+qLo?g6( zdlZbxS!e7`z>7D5RP<^x}0 Date: Wed, 3 May 2023 20:17:10 -0500 Subject: [PATCH 26/40] added accelerated compatibility to other components such as the DFC and batteries, also added some highly requested compatibility to fluid tanks. --- .../machine/TileEntityCoreEmitter.java | 27 ++++++------ .../machine/TileEntityCoreInjector.java | 6 +-- .../machine/TileEntityCoreReceiver.java | 8 ++-- .../machine/TileEntityCoreStabilizer.java | 12 +++--- .../storage/TileEntityMachineBattery.java | 24 ++++------- .../storage/TileEntityMachineFluidTank.java | 42 +++++++++++++++---- 6 files changed, 70 insertions(+), 49 deletions(-) diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityCoreEmitter.java b/src/main/java/com/hbm/tileentity/machine/TileEntityCoreEmitter.java index 5dd663165..085f1d9ad 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityCoreEmitter.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityCoreEmitter.java @@ -1,7 +1,8 @@ package com.hbm.tileentity.machine; -import java.util.List; - +import api.hbm.block.ILaserable; +import api.hbm.energy.IEnergyUser; +import api.hbm.fluid.IFluidStandardReceiver; import com.hbm.interfaces.IFluidAcceptor; import com.hbm.inventory.container.ContainerCoreEmitter; import com.hbm.inventory.fluid.FluidType; @@ -11,10 +12,6 @@ import com.hbm.inventory.gui.GUICoreEmitter; import com.hbm.lib.ModDamageSource; import com.hbm.tileentity.IGUIProvider; import com.hbm.tileentity.TileEntityMachineBase; - -import api.hbm.block.ILaserable; -import api.hbm.energy.IEnergyUser; -import api.hbm.fluid.IFluidStandardReceiver; import cpw.mods.fml.common.Optional; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -35,6 +32,8 @@ import net.minecraft.util.MathHelper; import net.minecraft.world.World; 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 TileEntityCoreEmitter extends TileEntityMachineBase implements IEnergyUser, IFluidAcceptor, ILaserable, IFluidStandardReceiver, SimpleComponent, IGUIProvider { @@ -311,50 +310,50 @@ public class TileEntityCoreEmitter extends TileEntityMachineBase implements IEne return "dfc_emitter"; } - @Callback + @Callback(direct = true, limit = 4) @Optional.Method(modid = "OpenComputers") public Object[] getEnergyStored(Context context, Arguments args) { return new Object[] {getPower()}; } - @Callback + @Callback(direct = true, limit = 4) @Optional.Method(modid = "OpenComputers") public Object[] getMaxEnergy(Context context, Arguments args) { return new Object[] {getMaxPower()}; } - @Callback + @Callback(direct = true, limit = 4) @Optional.Method(modid = "OpenComputers") public Object[] getCryogel(Context context, Arguments args) { return new Object[] {tank.getFill()}; } - @Callback + @Callback(direct = true, limit = 4) @Optional.Method(modid = "OpenComputers") public Object[] getInput(Context context, Arguments args) { return new Object[] {watts}; } - @Callback + @Callback(direct = true, limit = 4) @Optional.Method(modid = "OpenComputers") public Object[] getInfo(Context context, Arguments args) { return new Object[] {getPower(), getMaxPower(), tank.getFill(), watts, isOn}; } - @Callback + @Callback(direct = true, limit = 2) @Optional.Method(modid = "OpenComputers") public Object[] isActive(Context context, Arguments args) { return new Object[] {isOn}; } - @Callback + @Callback(direct = true, limit = 2) @Optional.Method(modid = "OpenComputers") public Object[] setActive(Context context, Arguments args) { isOn = args.checkBoolean(0); return new Object[] {}; } - @Callback + @Callback(direct = true, limit = 2) @Optional.Method(modid = "OpenComputers") public Object[] setInput(Context context, Arguments args) { int newOutput = args.checkInteger(0); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityCoreInjector.java b/src/main/java/com/hbm/tileentity/machine/TileEntityCoreInjector.java index 5b7e90266..7285639bd 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityCoreInjector.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityCoreInjector.java @@ -200,19 +200,19 @@ public class TileEntityCoreInjector extends TileEntityMachineBase implements IFl return "dfc_injector"; } - @Callback + @Callback(direct = true, limit = 2) @Optional.Method(modid = "OpenComputers") public Object[] getFirstFuel(Context context, Arguments args) { return new Object[] {tanks[0].getFill()}; } - @Callback + @Callback(direct = true, limit = 2) @Optional.Method(modid = "OpenComputers") public Object[] getSecondFuel(Context context, Arguments args) { return new Object[] {tanks[1].getFill()}; } - @Callback + @Callback(direct = true, limit = 4) @Optional.Method(modid = "OpenComputers") public Object[] getInfo(Context context, Arguments args) { return new Object[] {tanks[0].getFill(), tanks[1].getFill()}; diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityCoreReceiver.java b/src/main/java/com/hbm/tileentity/machine/TileEntityCoreReceiver.java index d3e203e67..51b79e242 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityCoreReceiver.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityCoreReceiver.java @@ -191,25 +191,25 @@ public class TileEntityCoreReceiver extends TileEntityMachineBase implements IEn return "dfc_receiver"; } - @Callback + @Callback(direct = true, limit = 4) @Optional.Method(modid = "OpenComputers") public Object[] getInput(Context context, Arguments args) { return new Object[] {joules}; } - @Callback + @Callback(direct = true, limit = 4) @Optional.Method(modid = "OpenComputers") public Object[] getOutput(Context context, Arguments args) { return new Object[] {power}; } - @Callback + @Callback(direct = true, limit = 4) @Optional.Method(modid = "OpenComputers") public Object[] getCryogel(Context context, Arguments args) { return new Object[] {tank.getFill()}; } - @Callback + @Callback(direct = true, limit = 4) @Optional.Method(modid = "OpenComputers") public Object[] getInfo(Context context, Arguments args) { return new Object[] {joules, power, tank.getFill()}; diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityCoreStabilizer.java b/src/main/java/com/hbm/tileentity/machine/TileEntityCoreStabilizer.java index 27f060d89..de41bd82a 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityCoreStabilizer.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityCoreStabilizer.java @@ -173,25 +173,25 @@ public class TileEntityCoreStabilizer extends TileEntityMachineBase implements I return "dfc_stabilizer"; } - @Callback + @Callback(direct = true, limit = 4) @Optional.Method(modid = "OpenComputers") public Object[] getEnergyStored(Context context, Arguments args) { return new Object[] {power}; } - @Callback + @Callback(direct = true, limit = 4) @Optional.Method(modid = "OpenComputers") public Object[] getMaxEnergy(Context context, Arguments args) { return new Object[] {maxPower}; } - @Callback + @Callback(direct = true, limit = 4) @Optional.Method(modid = "OpenComputers") public Object[] getInput(Context context, Arguments args) { return new Object[] {watts}; } - @Callback + @Callback(direct = true, limit = 4) @Optional.Method(modid = "OpenComputers") public Object[] getDurability(Context context, Arguments args) { if(slots[0] != null && slots[0].getItem() == ModItems.ams_lens && ItemLens.getLensDamage(slots[0]) < ((ItemLens)ModItems.ams_lens).maxDamage) { @@ -200,7 +200,7 @@ public class TileEntityCoreStabilizer extends TileEntityMachineBase implements I return new Object[] {"N/A"}; } - @Callback + @Callback(direct = true, limit = 4) @Optional.Method(modid = "OpenComputers") public Object[] getInfo(Context context, Arguments args) { Object lens_damage_buf; @@ -212,7 +212,7 @@ public class TileEntityCoreStabilizer extends TileEntityMachineBase implements I return new Object[] {power, maxPower, watts, lens_damage_buf}; } - @Callback + @Callback(direct = true, limit = 2) @Optional.Method(modid = "OpenComputers") public Object[] setInput(Context context, Arguments args) { int newOutput = args.checkInteger(0); 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 1043fb572..a0463756c 100644 --- a/src/main/java/com/hbm/tileentity/machine/storage/TileEntityMachineBattery.java +++ b/src/main/java/com/hbm/tileentity/machine/storage/TileEntityMachineBattery.java @@ -1,10 +1,6 @@ package com.hbm.tileentity.machine.storage; -import java.util.ArrayList; -import java.util.HashSet; -import java.util.List; -import java.util.Set; - +import api.hbm.energy.*; import com.hbm.blocks.machine.MachineBattery; import com.hbm.inventory.container.ContainerMachineBattery; import com.hbm.inventory.gui.GUIMachineBattery; @@ -12,13 +8,6 @@ import com.hbm.lib.Library; import com.hbm.tileentity.IGUIProvider; import com.hbm.tileentity.IPersistentNBT; import com.hbm.tileentity.TileEntityMachineBase; - -import api.hbm.energy.IBatteryItem; -import api.hbm.energy.IEnergyConductor; -import api.hbm.energy.IEnergyConnector; -import api.hbm.energy.IEnergyUser; -import api.hbm.energy.IPowerNet; -import api.hbm.energy.PowerNet; import cpw.mods.fml.common.Optional; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -36,6 +25,11 @@ import net.minecraft.util.MathHelper; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; +import java.util.ArrayList; +import java.util.HashSet; +import java.util.List; +import java.util.Set; + @Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "opencomputers")}) public class TileEntityMachineBattery extends TileEntityMachineBase implements IEnergyUser, IPersistentNBT, SimpleComponent, IGUIProvider { @@ -379,19 +373,19 @@ public class TileEntityMachineBattery extends TileEntityMachineBase implements I return "ntm_energy_storage"; // need a way to somehow detect the first word of the energy storage block so people wont get confused when it comes to multiple energy storage blocks } - @Callback + @Callback(direct = true, limit = 8) @Optional.Method(modid = "OpenComputers") public Object[] getEnergyStored(Context context, Arguments args) { return new Object[] {getPower()}; } - @Callback + @Callback(direct = true, limit = 8) @Optional.Method(modid = "OpenComputers") public Object[] getMaxEnergy(Context context, Arguments args) { return new Object[] {getMaxPower()}; } - @Callback + @Callback(direct = true, limit = 8) @Optional.Method(modid = "OpenComputers") public Object[] getInfo(Context context, Arguments args) { return new Object[] {getPower(), getMaxPower()}; 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 0036b77d2..327af7299 100644 --- a/src/main/java/com/hbm/tileentity/machine/storage/TileEntityMachineFluidTank.java +++ b/src/main/java/com/hbm/tileentity/machine/storage/TileEntityMachineFluidTank.java @@ -1,9 +1,6 @@ package com.hbm.tileentity.machine.storage; -import java.util.ArrayList; -import java.util.List; -import java.util.Random; - +import api.hbm.fluid.IFluidStandardTransceiver; import com.hbm.blocks.BlockDummyable; import com.hbm.blocks.ModBlocks; import com.hbm.explosion.vanillant.ExplosionVNT; @@ -35,11 +32,13 @@ import com.hbm.tileentity.IRepairable; import com.hbm.tileentity.TileEntityMachineBase; import com.hbm.util.ParticleUtil; import com.hbm.util.fauxpointtwelve.DirPos; - -import api.hbm.fluid.IFluidStandardTransceiver; +import cpw.mods.fml.common.Optional; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import li.cil.oc.api.machine.Arguments; +import li.cil.oc.api.machine.Callback; +import li.cil.oc.api.machine.Context; import net.minecraft.client.gui.GuiScreen; import net.minecraft.entity.Entity; import net.minecraft.entity.player.EntityPlayer; @@ -50,6 +49,11 @@ import net.minecraft.world.Explosion; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; +import java.util.ArrayList; +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 IFluidContainer, IFluidSource, IFluidAcceptor, IFluidStandardTransceiver, IPersistentNBT, IOverpressurable, IGUIProvider, IRepairable { public FluidTank tank; @@ -438,4 +442,28 @@ public class TileEntityMachineFluidTank extends TileEntityMachineBase implements this.hasExploded = false; this.markChanged(); } -} + + public String getComponentName() { + return "ntm_fluid_tank"; + } + @Callback(direct = true, limit = 4) + @Optional.Method(modid = "OpenComputers") + public Object[] getFluidStored(Context context, Arguments args) { + return new Object[] {tank.getFill()}; + } + @Callback(direct = true, limit = 4) + @Optional.Method(modid = "OpenComputers") + public Object[] getMaxStored(Context context, Arguments args) { + return new Object[] {tank.getMaxFill()}; + } + @Callback(direct = true, limit = 4) + @Optional.Method(modid = "OpenComputers") + public Object[] getTypeStored(Context context, Arguments args) { + return new Object[] {tank.getTankType()}; + } + @Callback(direct = true, limit = 4) + @Optional.Method(modid = "OpenComputers") + public Object[] getInfo(Context context, Arguments args) { + return new Object[]{tank.getFill(), tank.getMaxFill(), tank.getTankType().getName()}; + } +} \ No newline at end of file From 13e534be653a554c89d481eb4d41fe172812a83c Mon Sep 17 00:00:00 2001 From: BallOfEnergy <66693744+BallOfEnergy1@users.noreply.github.com> Date: Wed, 3 May 2023 21:02:55 -0500 Subject: [PATCH 27/40] Fixed some dumb compatibility issues in the fluid tanks --- .../machine/storage/TileEntityBarrel.java | 54 ++++++++++++++----- .../storage/TileEntityMachineFluidTank.java | 12 +++-- 2 files changed, 51 insertions(+), 15 deletions(-) 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 9c26e28d9..d6957ce01 100644 --- a/src/main/java/com/hbm/tileentity/machine/storage/TileEntityBarrel.java +++ b/src/main/java/com/hbm/tileentity/machine/storage/TileEntityBarrel.java @@ -1,10 +1,6 @@ package com.hbm.tileentity.machine.storage; -import java.util.ArrayList; -import java.util.HashSet; -import java.util.List; -import java.util.Set; - +import api.hbm.fluid.*; import com.hbm.blocks.ModBlocks; import com.hbm.interfaces.IFluidAcceptor; import com.hbm.interfaces.IFluidSource; @@ -21,14 +17,13 @@ import com.hbm.tileentity.IGUIProvider; import com.hbm.tileentity.IPersistentNBT; import com.hbm.tileentity.TileEntityMachineBase; import com.hbm.util.fauxpointtwelve.DirPos; - -import api.hbm.fluid.IFluidConductor; -import api.hbm.fluid.IFluidConnector; -import api.hbm.fluid.IFluidStandardTransceiver; -import api.hbm.fluid.IPipeNet; -import api.hbm.fluid.PipeNet; +import cpw.mods.fml.common.Optional; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import li.cil.oc.api.machine.Arguments; +import li.cil.oc.api.machine.Callback; +import li.cil.oc.api.machine.Context; +import li.cil.oc.api.network.SimpleComponent; import net.minecraft.block.Block; import net.minecraft.client.gui.GuiScreen; import net.minecraft.entity.player.EntityPlayer; @@ -39,7 +34,13 @@ import net.minecraft.tileentity.TileEntity; import net.minecraft.world.EnumSkyBlock; import net.minecraft.world.World; -public class TileEntityBarrel extends TileEntityMachineBase implements IFluidAcceptor, IFluidSource, IFluidStandardTransceiver, IPersistentNBT, IGUIProvider { +import java.util.ArrayList; +import java.util.HashSet; +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 IFluidAcceptor, IFluidSource, SimpleComponent, IFluidStandardTransceiver, IPersistentNBT, IGUIProvider { public FluidTank tank; public short mode = 0; @@ -349,4 +350,33 @@ public class TileEntityBarrel extends TileEntityMachineBase implements IFluidAcc public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GUIBarrel(player.inventory, this); } + + @Override + public String getComponentName() { + return "ntm_fluid_tank"; + } + + @Callback(direct = true, limit = 4) + @Optional.Method(modid = "OpenComputers") + public Object[] getFluidStored(Context context, Arguments args) { + return new Object[] {tank.getFill()}; + } + + @Callback(direct = true, limit = 4) + @Optional.Method(modid = "OpenComputers") + public Object[] getMaxStored(Context context, Arguments args) { + return new Object[] {tank.getMaxFill()}; + } + + @Callback(direct = true, limit = 4) + @Optional.Method(modid = "OpenComputers") + public Object[] getTypeStored(Context context, Arguments args) { + return new Object[] {tank.getTankType().getName()}; + } + + @Callback(direct = true, limit = 4) + @Optional.Method(modid = "OpenComputers") + public Object[] getInfo(Context context, Arguments args) { + return new Object[]{tank.getFill(), tank.getMaxFill(), tank.getTankType().getName()}; + } } 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 327af7299..91174eb4a 100644 --- a/src/main/java/com/hbm/tileentity/machine/storage/TileEntityMachineFluidTank.java +++ b/src/main/java/com/hbm/tileentity/machine/storage/TileEntityMachineFluidTank.java @@ -39,6 +39,7 @@ import cpw.mods.fml.relauncher.SideOnly; import li.cil.oc.api.machine.Arguments; import li.cil.oc.api.machine.Callback; import li.cil.oc.api.machine.Context; +import li.cil.oc.api.network.SimpleComponent; import net.minecraft.client.gui.GuiScreen; import net.minecraft.entity.Entity; import net.minecraft.entity.player.EntityPlayer; @@ -54,7 +55,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 IFluidContainer, IFluidSource, IFluidAcceptor, IFluidStandardTransceiver, IPersistentNBT, IOverpressurable, IGUIProvider, IRepairable { +public class TileEntityMachineFluidTank extends TileEntityMachineBase implements IFluidContainer, SimpleComponent, IFluidSource, IFluidAcceptor, IFluidStandardTransceiver, IPersistentNBT, IOverpressurable, IGUIProvider, IRepairable { public FluidTank tank; public short mode = 0; @@ -443,24 +444,29 @@ public class TileEntityMachineFluidTank extends TileEntityMachineBase implements this.markChanged(); } + @Override public String getComponentName() { - return "ntm_fluid_tank"; + return "ntm_tank"; } + @Callback(direct = true, limit = 4) @Optional.Method(modid = "OpenComputers") public Object[] getFluidStored(Context context, Arguments args) { return new Object[] {tank.getFill()}; } + @Callback(direct = true, limit = 4) @Optional.Method(modid = "OpenComputers") public Object[] getMaxStored(Context context, Arguments args) { return new Object[] {tank.getMaxFill()}; } + @Callback(direct = true, limit = 4) @Optional.Method(modid = "OpenComputers") public Object[] getTypeStored(Context context, Arguments args) { - return new Object[] {tank.getTankType()}; + return new Object[] {tank.getTankType().getName()}; } + @Callback(direct = true, limit = 4) @Optional.Method(modid = "OpenComputers") public Object[] getInfo(Context context, Arguments args) { From 3983285c288e41e002873c9188143c5f0c51db45 Mon Sep 17 00:00:00 2001 From: Boblet Date: Thu, 4 May 2023 13:08:37 +0200 Subject: [PATCH 28/40] a curve that doesn't actually curve --- src/main/java/com/hbm/blocks/ModBlocks.java | 6 +- .../hbm/blocks/rail/RailStandardCurve.java | 132 ++++++++++++++++++ .../hbm/blocks/rail/RailStandardStraight.java | 2 +- .../hbm/entity/train/EntityRailCarBase.java | 10 +- .../com/hbm/entity/train/TrainCargoTram.java | 29 +++- 5 files changed, 174 insertions(+), 5 deletions(-) create mode 100644 src/main/java/com/hbm/blocks/rail/RailStandardCurve.java diff --git a/src/main/java/com/hbm/blocks/ModBlocks.java b/src/main/java/com/hbm/blocks/ModBlocks.java index d806d1efc..fe53bd84c 100644 --- a/src/main/java/com/hbm/blocks/ModBlocks.java +++ b/src/main/java/com/hbm/blocks/ModBlocks.java @@ -11,6 +11,7 @@ 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.RailStandardCurve; import com.hbm.blocks.rail.RailStandardStraight; import com.hbm.blocks.siege.*; import com.hbm.blocks.test.*; @@ -1085,8 +1086,9 @@ public class ModBlocks { public static Block rail_narrow; public static Block rail_highspeed; public static Block rail_booster; - + public static Block rail_large_straight; + public static Block rail_large_curve; public static Block statue_elb; public static Block statue_elb_g; @@ -2113,6 +2115,7 @@ public class ModBlocks { 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_large_straight = new RailStandardStraight().setBlockName("rail_large_straight").setHardness(5.0F).setResistance(10.0F).setCreativeTab(CreativeTabs.tabTransport).setBlockTextureName(RefStrings.MODID + ":block_steel"); + rail_large_curve = new RailStandardCurve().setBlockName("rail_large_curve").setHardness(5.0F).setResistance(10.0F).setCreativeTab(CreativeTabs.tabTransport).setBlockTextureName(RefStrings.MODID + ":block_steel"); 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"); @@ -3331,6 +3334,7 @@ public class ModBlocks { GameRegistry.registerBlock(rail_highspeed, ItemBlockBase.class, rail_highspeed.getUnlocalizedName()); GameRegistry.registerBlock(rail_booster, ItemBlockBase.class, rail_booster.getUnlocalizedName()); register(rail_large_straight); + register(rail_large_curve); //Crate GameRegistry.registerBlock(crate, crate.getUnlocalizedName()); diff --git a/src/main/java/com/hbm/blocks/rail/RailStandardCurve.java b/src/main/java/com/hbm/blocks/rail/RailStandardCurve.java new file mode 100644 index 000000000..de7a478a1 --- /dev/null +++ b/src/main/java/com/hbm/blocks/rail/RailStandardCurve.java @@ -0,0 +1,132 @@ +package com.hbm.blocks.rail; + +import com.hbm.blocks.BlockDummyable; +import com.hbm.lib.Library; +import com.hbm.util.fauxpointtwelve.BlockPos; + +import net.minecraft.block.material.Material; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.AxisAlignedBB; +import net.minecraft.util.Vec3; +import net.minecraft.world.IBlockAccess; +import net.minecraft.world.World; +import net.minecraftforge.common.util.ForgeDirection; + +public class RailStandardCurve extends BlockDummyable implements IRailNTM { + + public RailStandardCurve() { + super(Material.iron); + } + + @Override + public TileEntity createNewTileEntity(World p_149915_1_, int p_149915_2_) { + return null; + } + + @Override + public int getRenderType() { + return 0; + } + + @Override + public Vec3 getSnappingPos(World world, int x, int y, int z, double trainX, double trainY, double trainZ) { + return snapAndMove(world, x, y, z, trainX, trainY, trainZ, 0, 0, 0, 0, new RailLeaveInfo()); + } + + @Override + public Vec3 getTravelLocation(World world, int x, int y, int z, double trainX, double trainY, double trainZ, double motionX, double motionY, double motionZ, double speed, RailLeaveInfo info) { + return snapAndMove(world, x, y, z, trainX, trainY, trainZ, motionX, motionY, motionZ, speed, info); + } + + /* Very simple function determining the snapping position and adding the motion value to it, if desired. */ + public Vec3 snapAndMove(World world, int x, int y, int z, double trainX, double trainY, double trainZ, double motionX, double motionY, double motionZ, double speed, RailLeaveInfo info) { + int[] pos = this.findCore(world, x, y, z); + if(pos == null) return Vec3.createVectorHelper(trainX, trainY, trainZ); + int cX = pos[0]; + int cY = pos[1]; + int cZ = pos[2]; + int meta = world.getBlockMetadata(cX, cY, cZ) - this.offset; + ForgeDirection dir = ForgeDirection.getOrientation(meta); + ForgeDirection rot = dir.getRotation(ForgeDirection.UP); + + double turnRadius = 4.5D; + + Vec3 vec = Vec3.createVectorHelper(trainX, trainY, trainZ); + double axisX = cX + 0.5 + dir.offsetX * 0.5 + rot.offsetX * turnRadius; + double axisZ = cZ + 0.5 + dir.offsetZ * 0.5 + rot.offsetZ * turnRadius; + + Vec3 dist = Vec3.createVectorHelper(vec.xCoord - axisX, 0, vec.zCoord - axisZ); + dist = dist.normalize(); + dist.xCoord *= turnRadius; + dist.zCoord *= turnRadius; + + if(speed == 0) { + info.dist(0).pos(new BlockPos(x, y, z)); + return Vec3.createVectorHelper(axisX + dist.xCoord, y, axisZ + dist.zCoord); + } + + double angleDeg = -Math.atan(dist.zCoord / dist.xCoord) * 180D / Math.PI; + double length90Deg = turnRadius * Math.PI / 2D; + double angularChange = speed / length90Deg * 90D; + + ForgeDirection moveDir = ForgeDirection.UNKNOWN; + + if(Math.abs(motionX) > Math.abs(motionZ)) { + moveDir = motionX > 0 ? Library.POS_X : Library.NEG_X; + } else { + moveDir = motionZ > 0 ? Library.POS_Z : Library.NEG_Z; + } + + if(moveDir == dir || moveDir == rot.getOpposite()) { + angularChange *= -1; + } + + double effAngle = angleDeg + angularChange; + + if(effAngle > 90) { + double angleOvershoot = effAngle - 90D; + double lengthOvershoot = angleOvershoot * length90Deg / 90D; + info.dist(lengthOvershoot).pos(new BlockPos(cX - dir.offsetX * 4 + rot.offsetX * 4, y, cZ - dir.offsetZ * 4 + rot.offsetZ * 4)); + return Vec3.createVectorHelper(axisX - dir.offsetX * turnRadius + rot.offsetX * turnRadius, y, axisZ - dir.offsetZ * turnRadius + rot.offsetZ * turnRadius); + } + + if(effAngle < 0) { + double angleOvershoot = -effAngle; + double lengthOvershoot = angleOvershoot * length90Deg / 90D; + info.dist(lengthOvershoot).pos(new BlockPos(cX + dir.offsetX , y, cZ + dir.offsetZ)); + return Vec3.createVectorHelper(axisX + 0.5 + dir.offsetX * 0.5, y, axisZ * 0.5 + dir.offsetZ * 0.5); + } + + double radianChange = angularChange * Math.PI / 180D; + dist.rotateAroundY((float) -radianChange); + + return Vec3.createVectorHelper(axisX + dist.xCoord, y, axisZ + dist.zCoord); + } + + @Override + public TrackGauge getGauge(World world, int x, int y, int z) { + return TrackGauge.STANDARD; + } + + @Override + public int[] getDimensions() { + return new int[] {0, 0, 4, 0, 4, 0}; + } + + @Override + public int getOffset() { + return 0; + } + + @Override + public void setBlockBoundsBasedOnState(IBlockAccess world, int x, int y, int z) { + int meta = world.getBlockMetadata(x, y, z); + this.setBlockBounds(0F, 0F, 0F, 1F, 0.125F, 1F); + } + + @Override + public AxisAlignedBB getCollisionBoundingBoxFromPool(World world, int x, int y, int z) { + this.setBlockBounds(0F, 0F, 0F, 1F, 0.125F, 1F); + 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/rail/RailStandardStraight.java b/src/main/java/com/hbm/blocks/rail/RailStandardStraight.java index 91e51c8ca..512ca9aaa 100644 --- a/src/main/java/com/hbm/blocks/rail/RailStandardStraight.java +++ b/src/main/java/com/hbm/blocks/rail/RailStandardStraight.java @@ -74,7 +74,7 @@ public class RailStandardStraight extends BlockDummyable implements IRailNTM { Vec3 vec = Vec3.createVectorHelper(trainX, trainY, trainZ); if(speed == 0) { - return vec; + //return vec; } if(dir == Library.POS_X || dir == Library.NEG_X) { diff --git a/src/main/java/com/hbm/entity/train/EntityRailCarBase.java b/src/main/java/com/hbm/entity/train/EntityRailCarBase.java index deefbf4db..00d27e963 100644 --- a/src/main/java/com/hbm/entity/train/EntityRailCarBase.java +++ b/src/main/java/com/hbm/entity/train/EntityRailCarBase.java @@ -75,7 +75,7 @@ public abstract class EntityRailCarBase extends Entity { anchor = this.getCurentAnchorPos(); //reset origin to new position Vec3 frontPos = getRelPosAlongRail(anchor, this.getLengthSpan()); - Vec3 backPos = getRelPosAlongRail(anchor, this.getLengthSpan()); + Vec3 backPos = getRelPosAlongRail(anchor, -this.getLengthSpan()); if(frontPos == null || backPos == null) { this.derail(); @@ -92,9 +92,17 @@ public abstract class EntityRailCarBase extends Entity { float yaw = this.rotationYaw; Vec3 next = Vec3.createVectorHelper(posX, posY, posZ); + int it = 0; do { + it++; + + if(it > 30) { + this.derail(); + return null; + } + int x = anchor.getX(); int y = anchor.getY(); int z = anchor.getZ(); diff --git a/src/main/java/com/hbm/entity/train/TrainCargoTram.java b/src/main/java/com/hbm/entity/train/TrainCargoTram.java index c8c7160e4..900f1026d 100644 --- a/src/main/java/com/hbm/entity/train/TrainCargoTram.java +++ b/src/main/java/com/hbm/entity/train/TrainCargoTram.java @@ -4,6 +4,7 @@ import com.hbm.blocks.rail.IRailNTM.TrackGauge; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.util.DamageSource; +import net.minecraft.util.MathHelper; import net.minecraft.util.Vec3; import net.minecraft.world.World; @@ -26,10 +27,34 @@ public class TrainCargoTram extends EntityRailCarRidable { super(world); this.setSize(2F, 1F); } + + public double speed = 0; + public static final double maxSpeed = 0.5; + public static final double acceleration = 0.01; + public static final double deceleration = 0.75; @Override - public double getCurrentSpeed() { - return this.riddenByEntity instanceof EntityPlayer ? ((EntityPlayer) this.riddenByEntity).moveForward * 0.125D : 0; + public double getCurrentSpeed() { // in its current form, only call once per tick + + if(this.riddenByEntity instanceof EntityPlayer) { + + EntityPlayer player = (EntityPlayer) this.riddenByEntity; + + if(player.moveForward > 0) { + speed += acceleration; + } else if(player.moveForward < 0) { + speed -= acceleration; + } else { + speed *= deceleration; + } + + } else { + speed *= deceleration; + } + + speed = MathHelper.clamp_double(speed, -maxSpeed, maxSpeed); + + return speed; } @Override From c67bb8ad3aef58b7d40ff7ef31a088a3fb4fd0a8 Mon Sep 17 00:00:00 2001 From: Boblet Date: Fri, 5 May 2023 14:39:34 +0200 Subject: [PATCH 29/40] i am in spain without the s --- .../hbm/blocks/rail/RailStandardCurve.java | 40 ++++++++++++++++-- .../hbm/entity/train/EntityRailCarBase.java | 11 +++-- .../entity/train/EntityRailCarRidable.java | 2 +- .../textures/blocks/stone_biome.desert.png | Bin 0 -> 377 bytes .../blocks/stone_biome_layer.desert.png | Bin 0 -> 390 bytes .../blocks/stone_biome_top.desert.png | Bin 0 -> 331 bytes 6 files changed, 46 insertions(+), 7 deletions(-) create mode 100644 src/main/resources/assets/hbm/textures/blocks/stone_biome.desert.png create mode 100644 src/main/resources/assets/hbm/textures/blocks/stone_biome_layer.desert.png create mode 100644 src/main/resources/assets/hbm/textures/blocks/stone_biome_top.desert.png diff --git a/src/main/java/com/hbm/blocks/rail/RailStandardCurve.java b/src/main/java/com/hbm/blocks/rail/RailStandardCurve.java index de7a478a1..08b824df4 100644 --- a/src/main/java/com/hbm/blocks/rail/RailStandardCurve.java +++ b/src/main/java/com/hbm/blocks/rail/RailStandardCurve.java @@ -1,12 +1,20 @@ package com.hbm.blocks.rail; +import java.util.ArrayList; +import java.util.List; + import com.hbm.blocks.BlockDummyable; import com.hbm.lib.Library; +import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.PlayerInformPacket; +import com.hbm.util.ParticleUtil; import com.hbm.util.fauxpointtwelve.BlockPos; import net.minecraft.block.material.Material; +import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.AxisAlignedBB; +import net.minecraft.util.ChatComponentText; import net.minecraft.util.Vec3; import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; @@ -49,6 +57,11 @@ public class RailStandardCurve extends BlockDummyable implements IRailNTM { ForgeDirection dir = ForgeDirection.getOrientation(meta); ForgeDirection rot = dir.getRotation(ForgeDirection.UP); + List context = new ArrayList(); + context.add("========================="); + + boolean debug = Math.abs(speed) < 2; + double turnRadius = 4.5D; Vec3 vec = Vec3.createVectorHelper(trainX, trainY, trainZ); @@ -65,10 +78,16 @@ public class RailStandardCurve extends BlockDummyable implements IRailNTM { return Vec3.createVectorHelper(axisX + dist.xCoord, y, axisZ + dist.zCoord); } + context.add("Speed: " + speed); + double angleDeg = -Math.atan(dist.zCoord / dist.xCoord) * 180D / Math.PI; double length90Deg = turnRadius * Math.PI / 2D; double angularChange = speed / length90Deg * 90D; + context.add("angleDeg: " + angleDeg); + context.add("length90Deg: " + length90Deg); + context.add("angularChange: " + angularChange); + ForgeDirection moveDir = ForgeDirection.UNKNOWN; if(Math.abs(motionX) > Math.abs(motionZ)) { @@ -77,29 +96,44 @@ public class RailStandardCurve extends BlockDummyable implements IRailNTM { moveDir = motionZ > 0 ? Library.POS_Z : Library.NEG_Z; } - if(moveDir == dir || moveDir == rot.getOpposite()) { + context.add("moveDir: " + moveDir); + + if(moveDir == dir || moveDir == rot) { angularChange *= -1; } + context.add("angularChange: " + angularChange); + double effAngle = angleDeg + angularChange; + context.add("effAngle: " + effAngle); + if(effAngle > 90) { double angleOvershoot = effAngle - 90D; double lengthOvershoot = angleOvershoot * length90Deg / 90D; - info.dist(lengthOvershoot).pos(new BlockPos(cX - dir.offsetX * 4 + rot.offsetX * 4, y, cZ - dir.offsetZ * 4 + rot.offsetZ * 4)); + context.add("angleOvershoot: " + angleOvershoot); + context.add("lengthOvershoot: " + lengthOvershoot); + info.dist(lengthOvershoot).pos(new BlockPos(cX - dir.offsetX * 4 + rot.offsetX * 5, y, cZ - dir.offsetZ * 4 + rot.offsetZ * 5)); + if(debug) for(String s : context) System.out.println(s); return Vec3.createVectorHelper(axisX - dir.offsetX * turnRadius + rot.offsetX * turnRadius, y, axisZ - dir.offsetZ * turnRadius + rot.offsetZ * turnRadius); } if(effAngle < 0) { double angleOvershoot = -effAngle; double lengthOvershoot = angleOvershoot * length90Deg / 90D; + context.add("angleOvershoot: " + angleOvershoot); + context.add("lengthOvershoot: " + lengthOvershoot); info.dist(lengthOvershoot).pos(new BlockPos(cX + dir.offsetX , y, cZ + dir.offsetZ)); + ParticleUtil.spawnGasFlame(world, axisX + 0.5 + dir.offsetX * 0.5, y, axisZ * 0.5 + dir.offsetZ * 0.5, 0, 0.2, 0); + if(debug) for(String s : context) System.out.println(s); return Vec3.createVectorHelper(axisX + 0.5 + dir.offsetX * 0.5, y, axisZ * 0.5 + dir.offsetZ * 0.5); } double radianChange = angularChange * Math.PI / 180D; - dist.rotateAroundY((float) -radianChange); + dist.rotateAroundY((float) radianChange); + context.add("radianChange: " + radianChange); + if(debug) for(String s : context) System.out.println(s); return Vec3.createVectorHelper(axisX + dist.xCoord, y, axisZ + dist.zCoord); } diff --git a/src/main/java/com/hbm/entity/train/EntityRailCarBase.java b/src/main/java/com/hbm/entity/train/EntityRailCarBase.java index 00d27e963..79df30ca0 100644 --- a/src/main/java/com/hbm/entity/train/EntityRailCarBase.java +++ b/src/main/java/com/hbm/entity/train/EntityRailCarBase.java @@ -3,6 +3,7 @@ package com.hbm.entity.train; import com.hbm.blocks.rail.IRailNTM; import com.hbm.blocks.rail.IRailNTM.RailLeaveInfo; import com.hbm.blocks.rail.IRailNTM.TrackGauge; +import com.hbm.util.ParticleUtil; import com.hbm.util.fauxpointtwelve.BlockPos; import cpw.mods.fml.relauncher.Side; @@ -71,6 +72,9 @@ public abstract class EntityRailCarBase extends Entity { if(corePos == null) { this.derail(); } else { + this.prevPosX = this.posX; + this.prevPosY = this.posY; + this.prevPosZ = this.posZ; this.setPosition(corePos.xCoord, corePos.yCoord, corePos.zCoord); anchor = this.getCurentAnchorPos(); //reset origin to new position @@ -80,7 +84,7 @@ public abstract class EntityRailCarBase extends Entity { if(frontPos == null || backPos == null) { this.derail(); } else { - this.rotationYaw = generateYaw(frontPos, backPos); + //this.rotationYaw = generateYaw(frontPos, backPos); } } } @@ -99,6 +103,7 @@ public abstract class EntityRailCarBase extends Entity { it++; if(it > 30) { + worldObj.createExplosion(this, posX, posY, posZ, 5F, false); this.derail(); return null; } @@ -109,7 +114,8 @@ public abstract class EntityRailCarBase extends Entity { Block block = worldObj.getBlock(x, y, z); Vec3 rot = Vec3.createVectorHelper(0, 0, 1); - rot.rotateAroundY(yaw); + rot.rotateAroundY((float) (yaw * Math.PI / 180D)); + if(block instanceof IRailNTM) { IRailNTM rail = (IRailNTM) block; @@ -156,7 +162,6 @@ public abstract class EntityRailCarBase extends Entity { public void derail() { isOnRail = false; this.setDead(); - worldObj.createExplosion(this, posX, posY, posZ, 1F, false); } @SideOnly(Side.CLIENT) diff --git a/src/main/java/com/hbm/entity/train/EntityRailCarRidable.java b/src/main/java/com/hbm/entity/train/EntityRailCarRidable.java index 837fcceb2..615db63b0 100644 --- a/src/main/java/com/hbm/entity/train/EntityRailCarRidable.java +++ b/src/main/java/com/hbm/entity/train/EntityRailCarRidable.java @@ -31,7 +31,7 @@ public abstract class EntityRailCarRidable extends EntityRailCarBase { public void updateRiderPosition() { Vec3 offset = getRiderSeatPosition(); - offset.rotateAroundY(this.rotationYaw); + offset.rotateAroundY((float) (this.rotationYaw * Math.PI / 180)); if(this.riddenByEntity != null) { this.riddenByEntity.setPosition(this.posX + offset.xCoord, this.posY + offset.yCoord, this.posZ + offset.zCoord); diff --git a/src/main/resources/assets/hbm/textures/blocks/stone_biome.desert.png b/src/main/resources/assets/hbm/textures/blocks/stone_biome.desert.png new file mode 100644 index 0000000000000000000000000000000000000000..5d121421f906507d8caf3468c3e96ea747f0b4c1 GIT binary patch literal 377 zcmV-<0fzpGP)t+{VScN2)^+Eq_Y&?c=~JNs@?P9v3Nc_$@D#ZIs8ymEt};8 zfNZyldb{5im!GcmQB*BJ7!)tQzS%4%(WdU4-&ilkVc?wK09Y@^p%yRejzu+V@YSL}}l zaI(eP_Q^i=^m`NE_(6k)`uZm=%E9IE6TMw|=wI76K0Mjwr)%W9YI-^l`LEjj=er>9 zWubB--B}{vg`#T1pbe1fZ8m@Bz-Hb0odJ5H4VAuw93<0p;5Wn}>hnPkYzFLRR{*at1EJ;$rZIL1>srl~^FUgHjZ<%Z)0oi%HVyMrIW1Q|Y>&?EemK3hX^cHtr@PZM z?}I!5hkyF|FWw1qPYS6U=CusSJCT>IZIl9{ze%DW9Z0Q9z7qgEQHqLoqys-xBfbGw kM8kNb1E~QyOy(rM0Z}pnk8>f5R{#J207*qoM6N<$f?d_8<^TWy literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/blocks/stone_biome_top.desert.png b/src/main/resources/assets/hbm/textures/blocks/stone_biome_top.desert.png new file mode 100644 index 0000000000000000000000000000000000000000..1c05ff0d1fc67d0560edf35385575c1af38be751 GIT binary patch literal 331 zcmV-R0kr;!P)gzh+SIs9G8;FPq*K_=|HZ`9ExaO$ql6ETT&{&?5cEuSYB4dM+YmN%2Ig+t{xVfag z5v`|^cH(~9LB@J`!%xYQu*G);0uUm*Rd13cLg!a;jPSN=_*@U(?b-0o5r z0FK&7OYGL}3=RmpMM)(cAYK^uqyl3@8)bIOofSvd4|dH?h_yU>teHU*iJx>}+?;>o d**YW&_6sbA35V46ElmIb002ovPDHLkV1oF~h<5-0 literal 0 HcmV?d00001 From 4433726af2b338d26bf77f2789bed095f2fb62d9 Mon Sep 17 00:00:00 2001 From: Bob Date: Fri, 5 May 2023 23:25:12 +0200 Subject: [PATCH 30/40] i fixed it and now it works even less --- .../hbm/blocks/rail/RailStandardCurve.java | 33 ++------- .../hbm/blocks/rail/RailStandardStraight.java | 17 +++-- .../hbm/entity/train/EntityRailCarBase.java | 23 +++++-- .../entity/train/EntityRailCarRidable.java | 2 +- .../com/hbm/entity/train/TrainCargoTram.java | 2 +- .../java/com/hbm/items/tool/ItemWandD.java | 67 ++++++++++++++++++- .../entity/item/RenderTrainCargoTram.java | 6 +- 7 files changed, 100 insertions(+), 50 deletions(-) diff --git a/src/main/java/com/hbm/blocks/rail/RailStandardCurve.java b/src/main/java/com/hbm/blocks/rail/RailStandardCurve.java index 08b824df4..89658d741 100644 --- a/src/main/java/com/hbm/blocks/rail/RailStandardCurve.java +++ b/src/main/java/com/hbm/blocks/rail/RailStandardCurve.java @@ -57,11 +57,6 @@ public class RailStandardCurve extends BlockDummyable implements IRailNTM { ForgeDirection dir = ForgeDirection.getOrientation(meta); ForgeDirection rot = dir.getRotation(ForgeDirection.UP); - List context = new ArrayList(); - context.add("========================="); - - boolean debug = Math.abs(speed) < 2; - double turnRadius = 4.5D; Vec3 vec = Vec3.createVectorHelper(trainX, trainY, trainZ); @@ -78,16 +73,12 @@ public class RailStandardCurve extends BlockDummyable implements IRailNTM { return Vec3.createVectorHelper(axisX + dist.xCoord, y, axisZ + dist.zCoord); } - context.add("Speed: " + speed); double angleDeg = -Math.atan(dist.zCoord / dist.xCoord) * 180D / Math.PI; + if(dir == Library.NEG_X) angleDeg += 90; double length90Deg = turnRadius * Math.PI / 2D; double angularChange = speed / length90Deg * 90D; - context.add("angleDeg: " + angleDeg); - context.add("length90Deg: " + length90Deg); - context.add("angularChange: " + angularChange); - ForgeDirection moveDir = ForgeDirection.UNKNOWN; if(Math.abs(motionX) > Math.abs(motionZ)) { @@ -96,44 +87,31 @@ public class RailStandardCurve extends BlockDummyable implements IRailNTM { moveDir = motionZ > 0 ? Library.POS_Z : Library.NEG_Z; } - context.add("moveDir: " + moveDir); - - if(moveDir == dir || moveDir == rot) { + if(moveDir == dir || moveDir == rot.getOpposite()) { angularChange *= -1; } - context.add("angularChange: " + angularChange); - double effAngle = angleDeg + angularChange; - context.add("effAngle: " + effAngle); + if(Math.abs(speed) != 2)PacketDispatcher.wrapper.sendTo(new PlayerInformPacket(new ChatComponentText(angleDeg + ""), 999, 3000), (EntityPlayerMP) world.playerEntities.get(0)); if(effAngle > 90) { double angleOvershoot = effAngle - 90D; double lengthOvershoot = angleOvershoot * length90Deg / 90D; - context.add("angleOvershoot: " + angleOvershoot); - context.add("lengthOvershoot: " + lengthOvershoot); - info.dist(lengthOvershoot).pos(new BlockPos(cX - dir.offsetX * 4 + rot.offsetX * 5, y, cZ - dir.offsetZ * 4 + rot.offsetZ * 5)); - if(debug) for(String s : context) System.out.println(s); + info.dist(-lengthOvershoot).pos(new BlockPos(cX - dir.offsetX * 4 + rot.offsetX * 5, y, cZ - dir.offsetZ * 4 + rot.offsetZ * 5)); return Vec3.createVectorHelper(axisX - dir.offsetX * turnRadius + rot.offsetX * turnRadius, y, axisZ - dir.offsetZ * turnRadius + rot.offsetZ * turnRadius); } if(effAngle < 0) { - double angleOvershoot = -effAngle; + double angleOvershoot = effAngle; double lengthOvershoot = angleOvershoot * length90Deg / 90D; - context.add("angleOvershoot: " + angleOvershoot); - context.add("lengthOvershoot: " + lengthOvershoot); info.dist(lengthOvershoot).pos(new BlockPos(cX + dir.offsetX , y, cZ + dir.offsetZ)); - ParticleUtil.spawnGasFlame(world, axisX + 0.5 + dir.offsetX * 0.5, y, axisZ * 0.5 + dir.offsetZ * 0.5, 0, 0.2, 0); - if(debug) for(String s : context) System.out.println(s); return Vec3.createVectorHelper(axisX + 0.5 + dir.offsetX * 0.5, y, axisZ * 0.5 + dir.offsetZ * 0.5); } double radianChange = angularChange * Math.PI / 180D; dist.rotateAroundY((float) radianChange); - context.add("radianChange: " + radianChange); - if(debug) for(String s : context) System.out.println(s); return Vec3.createVectorHelper(axisX + dist.xCoord, y, axisZ + dist.zCoord); } @@ -154,7 +132,6 @@ public class RailStandardCurve extends BlockDummyable implements IRailNTM { @Override public void setBlockBoundsBasedOnState(IBlockAccess world, int x, int y, int z) { - int meta = world.getBlockMetadata(x, y, z); this.setBlockBounds(0F, 0F, 0F, 1F, 0.125F, 1F); } diff --git a/src/main/java/com/hbm/blocks/rail/RailStandardStraight.java b/src/main/java/com/hbm/blocks/rail/RailStandardStraight.java index 512ca9aaa..d8a030009 100644 --- a/src/main/java/com/hbm/blocks/rail/RailStandardStraight.java +++ b/src/main/java/com/hbm/blocks/rail/RailStandardStraight.java @@ -41,7 +41,6 @@ public class RailStandardStraight extends BlockDummyable implements IRailNTM { @Override public void setBlockBoundsBasedOnState(IBlockAccess world, int x, int y, int z) { - int meta = world.getBlockMetadata(x, y, z); this.setBlockBounds(0F, 0F, 0F, 1F, 0.125F, 1F); } @@ -84,11 +83,11 @@ public class RailStandardStraight extends BlockDummyable implements IRailNTM { } else { targetX -= speed; } - vec.xCoord = MathHelper.clamp_double(targetX, x - 2, x + 3); + vec.xCoord = MathHelper.clamp_double(targetX, cX - 2, cX + 3); vec.yCoord = y; - vec.zCoord = z + 0.5; - info.dist(Math.abs(targetX - vec.xCoord)); - info.pos(new BlockPos(vec.xCoord + (motionX > 0 ? 1 : -1), y, z)); + vec.zCoord = cZ + 0.5; + info.dist(Math.abs(targetX - vec.xCoord) * -Math.signum(speed)); + info.pos(new BlockPos(cX + (motionX > 0 ? 3 : -3), y, cZ)); } else { double targetZ = trainZ; if(motionZ > 0) { @@ -96,11 +95,11 @@ public class RailStandardStraight extends BlockDummyable implements IRailNTM { } else { targetZ -= speed; } - vec.xCoord = x + 0.5; + vec.xCoord = cX + 0.5; vec.yCoord = y; - vec.zCoord = MathHelper.clamp_double(targetZ, z - 2, z + 3); - info.dist(Math.abs(targetZ - vec.zCoord)); - info.pos(new BlockPos(x, y, vec.zCoord + (motionZ > 0 ? 1 : -1))); + vec.zCoord = MathHelper.clamp_double(targetZ, cZ - 2,cZ + 3); + info.dist(Math.abs(targetZ - vec.zCoord) * -Math.signum(speed)); + info.pos(new BlockPos(cX, y, cZ + (motionZ > 0 ? 3 : -3))); } return vec; diff --git a/src/main/java/com/hbm/entity/train/EntityRailCarBase.java b/src/main/java/com/hbm/entity/train/EntityRailCarBase.java index 79df30ca0..1d76b8b12 100644 --- a/src/main/java/com/hbm/entity/train/EntityRailCarBase.java +++ b/src/main/java/com/hbm/entity/train/EntityRailCarBase.java @@ -3,6 +3,10 @@ package com.hbm.entity.train; import com.hbm.blocks.rail.IRailNTM; import com.hbm.blocks.rail.IRailNTM.RailLeaveInfo; import com.hbm.blocks.rail.IRailNTM.TrackGauge; +import com.hbm.main.MainRegistry; +import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.PlayerInformPacket; +import com.hbm.util.ChatBuilder; import com.hbm.util.ParticleUtil; import com.hbm.util.fauxpointtwelve.BlockPos; @@ -10,7 +14,10 @@ import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.block.Block; import net.minecraft.entity.Entity; +import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.ChatComponentText; +import net.minecraft.util.EnumChatFormatting; import net.minecraft.util.MathHelper; import net.minecraft.util.Vec3; import net.minecraft.world.World; @@ -60,9 +67,11 @@ public abstract class EntityRailCarBase extends Entity { --this.turnProgress; this.setPosition(x, y, z); this.setRotation(this.rotationYaw, this.rotationPitch); + this.setRotation((float)this.trainYaw, this.rotationPitch); } else { this.setPosition(this.posX, this.posY, this.posZ); this.setRotation(this.rotationYaw, this.rotationPitch); + this.setRotation((float)this.trainYaw, this.rotationPitch); } } else { @@ -84,15 +93,16 @@ public abstract class EntityRailCarBase extends Entity { if(frontPos == null || backPos == null) { this.derail(); } else { - //this.rotationYaw = generateYaw(frontPos, backPos); + this.rotationYaw = generateYaw(frontPos, backPos); } } + + PacketDispatcher.wrapper.sendTo(new PlayerInformPacket(new ChatComponentText("Yaw: " + this.rotationYaw), 665, 3000), (EntityPlayerMP) worldObj.playerEntities.get(0)); } } public Vec3 getRelPosAlongRail(BlockPos anchor, double distanceToCover) { - double overshoot = 0; float yaw = this.rotationYaw; Vec3 next = Vec3.createVectorHelper(posX, posY, posZ); @@ -114,8 +124,7 @@ public abstract class EntityRailCarBase extends Entity { Block block = worldObj.getBlock(x, y, z); Vec3 rot = Vec3.createVectorHelper(0, 0, 1); - rot.rotateAroundY((float) (yaw * Math.PI / 180D)); - + rot.rotateAroundY((float) (-yaw * Math.PI / 180D)); if(block instanceof IRailNTM) { IRailNTM rail = (IRailNTM) block; @@ -124,9 +133,11 @@ public abstract class EntityRailCarBase extends Entity { RailLeaveInfo info = new RailLeaveInfo(); Vec3 prev = next; next = rail.getTravelLocation(worldObj, x, y, z, posX, posY, posZ, rot.xCoord, rot.yCoord, rot.zCoord, distanceToCover, info); - overshoot = info.overshoot; + distanceToCover = info.overshoot; anchor = info.pos; yaw = generateYaw(next, prev); + + //if(info.overshoot > 0) System.out.println("[" + (worldObj.getTotalWorldTime() % 100) + "] Left track " + ((Block) rail).getUnlocalizedName() + " with " + ((int)(info.overshoot * 100) / 100D) + "m more to go!"); } else { return null; @@ -135,7 +146,7 @@ public abstract class EntityRailCarBase extends Entity { return null; } - } while(overshoot != 0); //if there's still length to cover, keep going + } while(distanceToCover != 0); //if there's still length to cover, keep going return next; } diff --git a/src/main/java/com/hbm/entity/train/EntityRailCarRidable.java b/src/main/java/com/hbm/entity/train/EntityRailCarRidable.java index 615db63b0..95dd63367 100644 --- a/src/main/java/com/hbm/entity/train/EntityRailCarRidable.java +++ b/src/main/java/com/hbm/entity/train/EntityRailCarRidable.java @@ -31,7 +31,7 @@ public abstract class EntityRailCarRidable extends EntityRailCarBase { public void updateRiderPosition() { Vec3 offset = getRiderSeatPosition(); - offset.rotateAroundY((float) (this.rotationYaw * Math.PI / 180)); + offset.rotateAroundY((float) (-this.rotationYaw * Math.PI / 180)); if(this.riddenByEntity != null) { this.riddenByEntity.setPosition(this.posX + offset.xCoord, this.posY + offset.yCoord, this.posZ + offset.zCoord); diff --git a/src/main/java/com/hbm/entity/train/TrainCargoTram.java b/src/main/java/com/hbm/entity/train/TrainCargoTram.java index 900f1026d..5f76989a4 100644 --- a/src/main/java/com/hbm/entity/train/TrainCargoTram.java +++ b/src/main/java/com/hbm/entity/train/TrainCargoTram.java @@ -69,7 +69,7 @@ public class TrainCargoTram extends EntityRailCarRidable { @Override public Vec3 getRiderSeatPosition() { - return Vec3.createVectorHelper(0.75, 1.75, 0.75); + return Vec3.createVectorHelper(0.375, 1.75, 0.5); } @Override diff --git a/src/main/java/com/hbm/items/tool/ItemWandD.java b/src/main/java/com/hbm/items/tool/ItemWandD.java index 9401b7b76..06b60dc0f 100644 --- a/src/main/java/com/hbm/items/tool/ItemWandD.java +++ b/src/main/java/com/hbm/items/tool/ItemWandD.java @@ -2,13 +2,24 @@ package com.hbm.items.tool; import java.util.List; +import com.hbm.blocks.rail.IRailNTM; +import com.hbm.blocks.rail.IRailNTM.RailLeaveInfo; import com.hbm.lib.Library; +import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.PlayerInformPacket; +import com.hbm.util.ParticleUtil; +import com.hbm.util.fauxpointtwelve.BlockPos; import com.hbm.world.feature.OilSpot; +import net.minecraft.block.Block; 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.util.ChatComponentText; +import net.minecraft.util.MathHelper; import net.minecraft.util.MovingObjectPosition; +import net.minecraft.util.Vec3; import net.minecraft.world.World; public class ItemWandD extends Item { @@ -23,6 +34,60 @@ public class ItemWandD extends Item { if(pos != null) { + 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 = 2D; + + ParticleUtil.spawnGasFlame(world, pos.hitVec.xCoord, pos.hitVec.yCoord, pos.hitVec.zCoord, 0, 0.2, 0); + + do { + + it++; + + if(it > 30) { + world.createExplosion(player, pos.hitVec.xCoord, pos.hitVec.yCoord, pos.hitVec.zCoord, 5F, false); + return stack; + } + + 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; + + RailLeaveInfo info = new RailLeaveInfo(); + Vec3 prev = next; + next = rail.getTravelLocation(world, x, y, z, prev.xCoord, prev.yCoord, prev.zCoord, rot.xCoord, rot.yCoord, rot.zCoord, distanceToCover, info); + distanceToCover = info.overshoot; + anchor = info.pos; + + ParticleUtil.spawnGasFlame(world, next.xCoord, next.yCoord, next.zCoord, 0, 0.2 * it, 0); + + 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); + + PacketDispatcher.wrapper.sendTo(new PlayerInformPacket(new ChatComponentText("Yaw: " + yaw), 0, 3000), (EntityPlayerMP) player); + + //if(info.overshoot > 0) System.out.println("[" + (worldObj.getTotalWorldTime() % 100) + "] Left track " + ((Block) rail).getUnlocalizedName() + " with " + ((int)(info.overshoot * 100) / 100D) + "m more to go!"); + + } else { + return stack; + } + + } while(distanceToCover != 0); //if there's still length to cover, keep going + /*TimeAnalyzer.startCount("setBlock"); world.setBlock(pos.blockX, pos.blockY, pos.blockZ, Blocks.dirt); TimeAnalyzer.startEndCount("getBlock"); @@ -58,8 +123,6 @@ public class ItemWandD extends Item { //MapGenStronghold.Start startS = new MapGenStronghold.Start(world, world.rand, pos.blockX >> 4, pos.blockZ >> 4); //startS.generateStructure(world, world.rand, new StructureBoundingBox(k - 124, l - 124, k + 15 + 124, l + 15 + 124)); - OilSpot.generateOilSpot(world, pos.blockX, pos.blockZ, 3, 50, true); - /*EntityNukeTorex torex = new EntityNukeTorex(world); torex.setPositionAndRotation(pos.blockX, pos.blockY + 1, pos.blockZ, 0, 0); torex.getDataWatcher().updateObject(10, 1.5F); diff --git a/src/main/java/com/hbm/render/entity/item/RenderTrainCargoTram.java b/src/main/java/com/hbm/render/entity/item/RenderTrainCargoTram.java index 660340f0f..5603c1d94 100644 --- a/src/main/java/com/hbm/render/entity/item/RenderTrainCargoTram.java +++ b/src/main/java/com/hbm/render/entity/item/RenderTrainCargoTram.java @@ -16,11 +16,11 @@ public class RenderTrainCargoTram extends Render { GL11.glPushMatrix(); GL11.glTranslated(x, y, z); - GL11.glRotated(180 - entity.rotationYaw, 0, 1, 0); + GL11.glRotated( -entity.rotationYaw, 0, 1, 0); GL11.glRotated(-entity.rotationPitch, 0, 0, 1); - MainRegistry.proxy.displayTooltip("Yaw: " + entity.rotationYaw, 666); - MainRegistry.proxy.displayTooltip("Pitch: " + entity.rotationPitch, 667); + MainRegistry.proxy.displayTooltip("Render Yaw: " + entity.rotationYaw, 666); + MainRegistry.proxy.displayTooltip("Render Pitch: " + entity.rotationPitch, 667); GL11.glDisable(GL11.GL_CULL_FACE); bindTexture(ResourceManager.universal); From a558b1d83b81d94a63181cccb1914d21e17fa916 Mon Sep 17 00:00:00 2001 From: Bob Date: Sat, 6 May 2023 12:43:32 +0200 Subject: [PATCH 31/40] straightened the straights, rail debugger --- .../hbm/blocks/rail/RailStandardCurve.java | 14 ++-- .../hbm/blocks/rail/RailStandardStraight.java | 8 +- .../hbm/entity/train/EntityRailCarBase.java | 6 +- .../java/com/hbm/items/tool/ItemWandD.java | 54 ------------ .../com/hbm/main/ModEventHandlerClient.java | 82 ++++++++++++++++--- 5 files changed, 85 insertions(+), 79 deletions(-) diff --git a/src/main/java/com/hbm/blocks/rail/RailStandardCurve.java b/src/main/java/com/hbm/blocks/rail/RailStandardCurve.java index 89658d741..3bfa512dc 100644 --- a/src/main/java/com/hbm/blocks/rail/RailStandardCurve.java +++ b/src/main/java/com/hbm/blocks/rail/RailStandardCurve.java @@ -15,6 +15,7 @@ import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.AxisAlignedBB; import net.minecraft.util.ChatComponentText; +import net.minecraft.util.MathHelper; import net.minecraft.util.Vec3; import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; @@ -76,6 +77,8 @@ public class RailStandardCurve extends BlockDummyable implements IRailNTM { double angleDeg = -Math.atan(dist.zCoord / dist.xCoord) * 180D / Math.PI; if(dir == Library.NEG_X) angleDeg += 90; + if(dir == Library.POS_X) angleDeg -= 90; + angleDeg = MathHelper.wrapAngleTo180_double(angleDeg); double length90Deg = turnRadius * Math.PI / 2D; double angularChange = speed / length90Deg * 90D; @@ -92,20 +95,19 @@ public class RailStandardCurve extends BlockDummyable implements IRailNTM { } double effAngle = angleDeg + angularChange; - - if(Math.abs(speed) != 2)PacketDispatcher.wrapper.sendTo(new PlayerInformPacket(new ChatComponentText(angleDeg + ""), 999, 3000), (EntityPlayerMP) world.playerEntities.get(0)); + effAngle = MathHelper.wrapAngleTo180_double(effAngle); if(effAngle > 90) { double angleOvershoot = effAngle - 90D; double lengthOvershoot = angleOvershoot * length90Deg / 90D; - info.dist(-lengthOvershoot).pos(new BlockPos(cX - dir.offsetX * 4 + rot.offsetX * 5, y, cZ - dir.offsetZ * 4 + rot.offsetZ * 5)); - return Vec3.createVectorHelper(axisX - dir.offsetX * turnRadius + rot.offsetX * turnRadius, y, axisZ - dir.offsetZ * turnRadius + rot.offsetZ * turnRadius); + info.dist(lengthOvershoot * Math.signum(speed * angularChange)).pos(new BlockPos(cX - dir.offsetX * 4 + rot.offsetX * 5, y, cZ - dir.offsetZ * 4 + rot.offsetZ * 5)); + return Vec3.createVectorHelper(axisX - dir.offsetX * turnRadius, y, axisZ - dir.offsetZ * turnRadius); } if(effAngle < 0) { - double angleOvershoot = effAngle; + double angleOvershoot = -effAngle; double lengthOvershoot = angleOvershoot * length90Deg / 90D; - info.dist(lengthOvershoot).pos(new BlockPos(cX + dir.offsetX , y, cZ + dir.offsetZ)); + info.dist(-lengthOvershoot * Math.signum(speed * angularChange)).pos(new BlockPos(cX + dir.offsetX , y, cZ + dir.offsetZ)); return Vec3.createVectorHelper(axisX + 0.5 + dir.offsetX * 0.5, y, axisZ * 0.5 + dir.offsetZ * 0.5); } diff --git a/src/main/java/com/hbm/blocks/rail/RailStandardStraight.java b/src/main/java/com/hbm/blocks/rail/RailStandardStraight.java index d8a030009..1129155e3 100644 --- a/src/main/java/com/hbm/blocks/rail/RailStandardStraight.java +++ b/src/main/java/com/hbm/blocks/rail/RailStandardStraight.java @@ -86,8 +86,8 @@ public class RailStandardStraight extends BlockDummyable implements IRailNTM { vec.xCoord = MathHelper.clamp_double(targetX, cX - 2, cX + 3); vec.yCoord = y; vec.zCoord = cZ + 0.5; - info.dist(Math.abs(targetX - vec.xCoord) * -Math.signum(speed)); - info.pos(new BlockPos(cX + (motionX > 0 ? 3 : -3), y, cZ)); + info.dist(Math.abs(targetX - vec.xCoord) * Math.signum(speed)); + info.pos(new BlockPos(cX + (motionX * speed > 0 ? 3 : -3), y, cZ)); } else { double targetZ = trainZ; if(motionZ > 0) { @@ -98,8 +98,8 @@ public class RailStandardStraight extends BlockDummyable implements IRailNTM { vec.xCoord = cX + 0.5; vec.yCoord = y; vec.zCoord = MathHelper.clamp_double(targetZ, cZ - 2,cZ + 3); - info.dist(Math.abs(targetZ - vec.zCoord) * -Math.signum(speed)); - info.pos(new BlockPos(cX, y, cZ + (motionZ > 0 ? 3 : -3))); + info.dist(Math.abs(targetZ - vec.zCoord) * Math.signum(speed)); + info.pos(new BlockPos(cX, y, cZ + (motionZ * speed > 0 ? 3 : -3))); } return vec; diff --git a/src/main/java/com/hbm/entity/train/EntityRailCarBase.java b/src/main/java/com/hbm/entity/train/EntityRailCarBase.java index 1d76b8b12..74f9030ec 100644 --- a/src/main/java/com/hbm/entity/train/EntityRailCarBase.java +++ b/src/main/java/com/hbm/entity/train/EntityRailCarBase.java @@ -136,8 +136,6 @@ public abstract class EntityRailCarBase extends Entity { distanceToCover = info.overshoot; anchor = info.pos; yaw = generateYaw(next, prev); - - //if(info.overshoot > 0) System.out.println("[" + (worldObj.getTotalWorldTime() % 100) + "] Left track " + ((Block) rail).getUnlocalizedName() + " with " + ((int)(info.overshoot * 100) / 100D) + "m more to go!"); } else { return null; @@ -154,8 +152,8 @@ public abstract class EntityRailCarBase extends Entity { public float generateYaw(Vec3 front, Vec3 back) { double deltaX = front.xCoord - back.xCoord; double deltaZ = front.zCoord - back.zCoord; - double radians = Math.atan(deltaZ / deltaX); - return (float) MathHelper.wrapAngleTo180_double(radians * 180D / Math.PI - 90); + double radians = -Math.atan2(deltaX, deltaZ); + return (float) MathHelper.wrapAngleTo180_double(radians * 180D / Math.PI); } /** Returns the amount of blocks that the train should move per tick */ diff --git a/src/main/java/com/hbm/items/tool/ItemWandD.java b/src/main/java/com/hbm/items/tool/ItemWandD.java index 06b60dc0f..f8c7643da 100644 --- a/src/main/java/com/hbm/items/tool/ItemWandD.java +++ b/src/main/java/com/hbm/items/tool/ItemWandD.java @@ -34,60 +34,6 @@ public class ItemWandD extends Item { if(pos != null) { - 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 = 2D; - - ParticleUtil.spawnGasFlame(world, pos.hitVec.xCoord, pos.hitVec.yCoord, pos.hitVec.zCoord, 0, 0.2, 0); - - do { - - it++; - - if(it > 30) { - world.createExplosion(player, pos.hitVec.xCoord, pos.hitVec.yCoord, pos.hitVec.zCoord, 5F, false); - return stack; - } - - 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; - - RailLeaveInfo info = new RailLeaveInfo(); - Vec3 prev = next; - next = rail.getTravelLocation(world, x, y, z, prev.xCoord, prev.yCoord, prev.zCoord, rot.xCoord, rot.yCoord, rot.zCoord, distanceToCover, info); - distanceToCover = info.overshoot; - anchor = info.pos; - - ParticleUtil.spawnGasFlame(world, next.xCoord, next.yCoord, next.zCoord, 0, 0.2 * it, 0); - - 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); - - PacketDispatcher.wrapper.sendTo(new PlayerInformPacket(new ChatComponentText("Yaw: " + yaw), 0, 3000), (EntityPlayerMP) player); - - //if(info.overshoot > 0) System.out.println("[" + (worldObj.getTotalWorldTime() % 100) + "] Left track " + ((Block) rail).getUnlocalizedName() + " with " + ((int)(info.overshoot * 100) / 100D) + "m more to go!"); - - } else { - return stack; - } - - } while(distanceToCover != 0); //if there's still length to cover, keep going - /*TimeAnalyzer.startCount("setBlock"); world.setBlock(pos.blockX, pos.blockY, pos.blockZ, Blocks.dirt); TimeAnalyzer.startEndCount("getBlock"); diff --git a/src/main/java/com/hbm/main/ModEventHandlerClient.java b/src/main/java/com/hbm/main/ModEventHandlerClient.java index 9938c2ec9..f89a281d2 100644 --- a/src/main/java/com/hbm/main/ModEventHandlerClient.java +++ b/src/main/java/com/hbm/main/ModEventHandlerClient.java @@ -12,6 +12,8 @@ import org.lwjgl.opengl.GL11; import com.hbm.blocks.ILookOverlay; import com.hbm.blocks.ModBlocks; import com.hbm.blocks.generic.BlockAshes; +import com.hbm.blocks.rail.IRailNTM; +import com.hbm.blocks.rail.IRailNTM.RailLeaveInfo; import com.hbm.config.GeneralConfig; import com.hbm.entity.effect.EntityNukeTorex; import com.hbm.entity.mob.EntityHunterChopper; @@ -42,6 +44,7 @@ import com.hbm.lib.RefStrings; import com.hbm.packet.AuxButtonPacket; import com.hbm.packet.GunButtonPacket; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.PlayerInformPacket; import com.hbm.packet.SyncButtonsPacket; import com.hbm.render.anim.HbmAnimations; import com.hbm.render.anim.HbmAnimations.Animation; @@ -64,12 +67,14 @@ 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.ParticleUtil; 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.fauxpointtwelve.BlockPos; import com.mojang.authlib.minecraft.MinecraftProfileTexture.Type; import api.hbm.item.IButtonReceiver; @@ -98,6 +103,7 @@ import net.minecraft.client.renderer.RenderHelper; import net.minecraft.client.renderer.Tessellator; import net.minecraft.client.renderer.entity.RenderPlayer; import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.init.Items; import net.minecraft.inventory.Slot; import net.minecraft.item.Item; @@ -105,6 +111,7 @@ import net.minecraft.item.ItemArmor; import net.minecraft.item.ItemStack; import net.minecraft.potion.Potion; import net.minecraft.potion.PotionEffect; +import net.minecraft.util.ChatComponentText; import net.minecraft.util.EnumChatFormatting; import net.minecraft.util.IIcon; import net.minecraft.util.MathHelper; @@ -203,17 +210,70 @@ public class ModEventHandlerClient { }*/ List text = new ArrayList(); - text.add("YAW: " + player.rotationYaw); - text.add("PITCH: " + player.rotationPitch); - int i = MathHelper.floor_double(player.rotationYaw * 4.0F / 360.0F + 0.5D) & 3; - int j = 0; - if(i == 0) j = 2; - if(i == 1) j = 5; - if(i == 2) j = 3; - if(i == 3) j = 4; - ForgeDirection dir = ForgeDirection.getOrientation(j).getOpposite(); - text.add("x: " + dir.offsetX + " z: " + dir.offsetZ); - ILookOverlay.printGeneric(event, "DEBUG", 0xffff00, 0x4040000, text); + 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); + Vec3 first = next; + int it = 0; + + BlockPos anchor = new BlockPos(pos.blockX, pos.blockY, pos.blockZ); + + double distanceToCover = 4D * (i == 0 ? 1 : -1); + + 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; + RailLeaveInfo info = new RailLeaveInfo(); + + boolean flip = distanceToCover < 0; + + if(it == 1) { + Vec3 snap = rail.getTravelLocation(world, x, y, z, next.xCoord, next.yCoord, next.zCoord, rot.xCoord, rot.yCoord, rot.zCoord, 0, info); + 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); + 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 + ": " + distanceToCover); + + } else { + break; + } + + } while(distanceToCover != 0); + + ILookOverlay.printGeneric(event, "DEBUG", 0xffff00, 0x4040000, text); + } } /// HANLDE ANIMATION BUSES /// From c0488324b088c2368cae9a0605d296fe9f7b9643 Mon Sep 17 00:00:00 2001 From: Bob Date: Sat, 6 May 2023 14:44:11 +0200 Subject: [PATCH 32/40] oh HELL yeah --- .../java/com/hbm/blocks/rail/IRailNTM.java | 13 +++--- .../hbm/blocks/rail/RailStandardCurve.java | 29 +++++++------ .../hbm/blocks/rail/RailStandardStraight.java | 10 +++-- .../hbm/entity/train/EntityRailCarBase.java | 43 +++++++++++++------ .../java/com/hbm/items/tool/ItemWandD.java | 2 +- .../com/hbm/main/ModEventHandlerClient.java | 10 ++--- 6 files changed, 67 insertions(+), 40 deletions(-) diff --git a/src/main/java/com/hbm/blocks/rail/IRailNTM.java b/src/main/java/com/hbm/blocks/rail/IRailNTM.java index 0bb68d517..430395012 100644 --- a/src/main/java/com/hbm/blocks/rail/IRailNTM.java +++ b/src/main/java/com/hbm/blocks/rail/IRailNTM.java @@ -15,11 +15,11 @@ public interface IRailNTM { * Returns a location on the rail based on the train's current X/Y/Z momentum as well as the intended speed along the rail. * If the train would leave the rail within that tick, the position is the last valid position on that rail. * Inherently safer than simply adding the motion to the position and then snapping, since that may lead to derailing. - * The motion has to be calculated from the train's rotation, the scalar doesn't matter since it's only used for determining orientation in a clear way. + * The motion has to be calculated from the train's rotation (rotated 180° when going backwards), the scalar doesn't matter since it's only used for determining orientation in a clear way. * Motion ends up being *-1 if the train is going in reverse, still pointing forwards despite the speed being negative. * Also features a double[] wrapper with size 1 which holds the speed value that overshoots the rail. * */ - public Vec3 getTravelLocation(World world, int x, int y, int z, double trainX, double trainY, double trainZ, double motionX, double motionY, double motionZ, double speed, RailLeaveInfo info); + public Vec3 getTravelLocation(World world, int x, int y, int z, double trainX, double trainY, double trainZ, double motionX, double motionY, double motionZ, double speed, RailContext info); /** Returns that rail's gauge. Trains will derail if the gauge does not match. */ public TrackGauge getGauge(World world, int x, int y, int z); @@ -29,12 +29,15 @@ public interface IRailNTM { } /** A wrapper for all relevant info required when leaving a rail */ - public static class RailLeaveInfo { + public static class RailContext { + /** The angle at which the train ends up being on this rail */ + public float yaw; /** The amount of blocks still left to travel after completing the rail */ public double overshoot; /** The exit position of that rail */ public BlockPos pos; - public RailLeaveInfo dist(double d) { this.overshoot = d; return this; } - public RailLeaveInfo pos(BlockPos d) { this.pos = d; return this; } + public RailContext yaw(float y) { this.yaw = y; return this; } + public RailContext dist(double d) { this.overshoot = d; return this; } + public RailContext pos(BlockPos d) { this.pos = d; return this; } } } diff --git a/src/main/java/com/hbm/blocks/rail/RailStandardCurve.java b/src/main/java/com/hbm/blocks/rail/RailStandardCurve.java index 3bfa512dc..35a6a9b4a 100644 --- a/src/main/java/com/hbm/blocks/rail/RailStandardCurve.java +++ b/src/main/java/com/hbm/blocks/rail/RailStandardCurve.java @@ -11,6 +11,7 @@ import com.hbm.util.ParticleUtil; import com.hbm.util.fauxpointtwelve.BlockPos; import net.minecraft.block.material.Material; +import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.AxisAlignedBB; @@ -39,16 +40,16 @@ public class RailStandardCurve extends BlockDummyable implements IRailNTM { @Override public Vec3 getSnappingPos(World world, int x, int y, int z, double trainX, double trainY, double trainZ) { - return snapAndMove(world, x, y, z, trainX, trainY, trainZ, 0, 0, 0, 0, new RailLeaveInfo()); + return snapAndMove(world, x, y, z, trainX, trainY, trainZ, 0, 0, 0, 0, new RailContext()); } @Override - public Vec3 getTravelLocation(World world, int x, int y, int z, double trainX, double trainY, double trainZ, double motionX, double motionY, double motionZ, double speed, RailLeaveInfo info) { + public Vec3 getTravelLocation(World world, int x, int y, int z, double trainX, double trainY, double trainZ, double motionX, double motionY, double motionZ, double speed, RailContext info) { return snapAndMove(world, x, y, z, trainX, trainY, trainZ, motionX, motionY, motionZ, speed, info); } /* Very simple function determining the snapping position and adding the motion value to it, if desired. */ - public Vec3 snapAndMove(World world, int x, int y, int z, double trainX, double trainY, double trainZ, double motionX, double motionY, double motionZ, double speed, RailLeaveInfo info) { + public Vec3 snapAndMove(World world, int x, int y, int z, double trainX, double trainY, double trainZ, double motionX, double motionY, double motionZ, double speed, RailContext info) { int[] pos = this.findCore(world, x, y, z); if(pos == null) return Vec3.createVectorHelper(trainX, trainY, trainZ); int cX = pos[0]; @@ -69,15 +70,17 @@ public class RailStandardCurve extends BlockDummyable implements IRailNTM { dist.xCoord *= turnRadius; dist.zCoord *= turnRadius; + double moveAngle = Math.atan2(motionX, motionZ) * 180D / Math.PI + 90; + if(speed == 0) { - info.dist(0).pos(new BlockPos(x, y, z)); + info.dist(0).pos(new BlockPos(x, y, z)).yaw((float) moveAngle); return Vec3.createVectorHelper(axisX + dist.xCoord, y, axisZ + dist.zCoord); } - - double angleDeg = -Math.atan(dist.zCoord / dist.xCoord) * 180D / Math.PI; - if(dir == Library.NEG_X) angleDeg += 90; - if(dir == Library.POS_X) angleDeg -= 90; + double angleDeg = Math.atan2(dist.xCoord, dist.zCoord) * 180D / Math.PI + 90; + if(dir == Library.NEG_X) angleDeg -= 90; + if(dir == Library.POS_X) angleDeg += 90; + if(dir == Library.POS_Z) angleDeg += 180; angleDeg = MathHelper.wrapAngleTo180_double(angleDeg); double length90Deg = turnRadius * Math.PI / 2D; double angularChange = speed / length90Deg * 90D; @@ -95,20 +98,22 @@ public class RailStandardCurve extends BlockDummyable implements IRailNTM { } double effAngle = angleDeg + angularChange; - effAngle = MathHelper.wrapAngleTo180_double(effAngle); + moveAngle += angularChange; if(effAngle > 90) { double angleOvershoot = effAngle - 90D; + moveAngle -= angleOvershoot; double lengthOvershoot = angleOvershoot * length90Deg / 90D; - info.dist(lengthOvershoot * Math.signum(speed * angularChange)).pos(new BlockPos(cX - dir.offsetX * 4 + rot.offsetX * 5, y, cZ - dir.offsetZ * 4 + rot.offsetZ * 5)); + info.dist(lengthOvershoot * Math.signum(speed * angularChange)).pos(new BlockPos(cX - dir.offsetX * 4 + rot.offsetX * 5, y, cZ - dir.offsetZ * 4 + rot.offsetZ * 5)).yaw((float) moveAngle); return Vec3.createVectorHelper(axisX - dir.offsetX * turnRadius, y, axisZ - dir.offsetZ * turnRadius); } if(effAngle < 0) { double angleOvershoot = -effAngle; + moveAngle -= angleOvershoot; double lengthOvershoot = angleOvershoot * length90Deg / 90D; - info.dist(-lengthOvershoot * Math.signum(speed * angularChange)).pos(new BlockPos(cX + dir.offsetX , y, cZ + dir.offsetZ)); - return Vec3.createVectorHelper(axisX + 0.5 + dir.offsetX * 0.5, y, axisZ * 0.5 + dir.offsetZ * 0.5); + info.dist(-lengthOvershoot * Math.signum(speed * angularChange)).pos(new BlockPos(cX + dir.offsetX , y, cZ + dir.offsetZ)).yaw((float) moveAngle); + return Vec3.createVectorHelper(axisX - rot.offsetX * turnRadius, y, axisZ -rot.offsetZ * turnRadius); } double radianChange = angularChange * Math.PI / 180D; diff --git a/src/main/java/com/hbm/blocks/rail/RailStandardStraight.java b/src/main/java/com/hbm/blocks/rail/RailStandardStraight.java index 1129155e3..1c8889b0b 100644 --- a/src/main/java/com/hbm/blocks/rail/RailStandardStraight.java +++ b/src/main/java/com/hbm/blocks/rail/RailStandardStraight.java @@ -52,16 +52,16 @@ public class RailStandardStraight extends BlockDummyable implements IRailNTM { @Override public Vec3 getSnappingPos(World world, int x, int y, int z, double trainX, double trainY, double trainZ) { - return snapAndMove(world, x, y, z, trainX, trainY, trainZ, 0, 0, 0, 0, new RailLeaveInfo()); + return snapAndMove(world, x, y, z, trainX, trainY, trainZ, 0, 0, 0, 0, new RailContext()); } @Override - public Vec3 getTravelLocation(World world, int x, int y, int z, double trainX, double trainY, double trainZ, double motionX, double motionY, double motionZ, double speed, RailLeaveInfo info) { + public Vec3 getTravelLocation(World world, int x, int y, int z, double trainX, double trainY, double trainZ, double motionX, double motionY, double motionZ, double speed, RailContext info) { return snapAndMove(world, x, y, z, trainX, trainY, trainZ, motionX, motionY, motionZ, speed, info); } /* Very simple function determining the snapping position and adding the motion value to it, if desired. */ - public Vec3 snapAndMove(World world, int x, int y, int z, double trainX, double trainY, double trainZ, double motionX, double motionY, double motionZ, double speed, RailLeaveInfo info) { + public Vec3 snapAndMove(World world, int x, int y, int z, double trainX, double trainY, double trainZ, double motionX, double motionY, double motionZ, double speed, RailContext info) { int[] pos = this.findCore(world, x, y, z); if(pos == null) return Vec3.createVectorHelper(trainX, trainY, trainZ); int cX = pos[0]; @@ -80,8 +80,10 @@ public class RailStandardStraight extends BlockDummyable implements IRailNTM { double targetX = trainX; if(motionX > 0) { targetX += speed; + info.yaw(-90F); } else { targetX -= speed; + info.yaw(90F); } vec.xCoord = MathHelper.clamp_double(targetX, cX - 2, cX + 3); vec.yCoord = y; @@ -92,8 +94,10 @@ public class RailStandardStraight extends BlockDummyable implements IRailNTM { double targetZ = trainZ; if(motionZ > 0) { targetZ += speed; + info.yaw(0F); } else { targetZ -= speed; + info.yaw(180F); } vec.xCoord = cX + 0.5; vec.yCoord = y; diff --git a/src/main/java/com/hbm/entity/train/EntityRailCarBase.java b/src/main/java/com/hbm/entity/train/EntityRailCarBase.java index 74f9030ec..750dc5765 100644 --- a/src/main/java/com/hbm/entity/train/EntityRailCarBase.java +++ b/src/main/java/com/hbm/entity/train/EntityRailCarBase.java @@ -1,7 +1,7 @@ package com.hbm.entity.train; import com.hbm.blocks.rail.IRailNTM; -import com.hbm.blocks.rail.IRailNTM.RailLeaveInfo; +import com.hbm.blocks.rail.IRailNTM.RailContext; import com.hbm.blocks.rail.IRailNTM.TrackGauge; import com.hbm.main.MainRegistry; import com.hbm.packet.PacketDispatcher; @@ -31,6 +31,7 @@ public abstract class EntityRailCarBase extends Entity { private double trainZ; private double trainYaw; private double trainPitch; + private float movementYaw; @SideOnly(Side.CLIENT) private double velocityX; @SideOnly(Side.CLIENT) private double velocityY; @SideOnly(Side.CLIENT) private double velocityZ; @@ -57,7 +58,9 @@ public abstract class EntityRailCarBase extends Entity { public void onUpdate() { if(this.worldObj.isRemote) { + if(this.turnProgress > 0) { + this.prevRotationYaw = this.rotationYaw; double x = this.posX + (this.trainX - this.posX) / (double) this.turnProgress; double y = this.posY + (this.trainY - this.posY) / (double) this.turnProgress; double z = this.posZ + (this.trainZ - this.posZ) / (double) this.turnProgress; @@ -67,11 +70,9 @@ public abstract class EntityRailCarBase extends Entity { --this.turnProgress; this.setPosition(x, y, z); this.setRotation(this.rotationYaw, this.rotationPitch); - this.setRotation((float)this.trainYaw, this.rotationPitch); } else { this.setPosition(this.posX, this.posY, this.posZ); this.setRotation(this.rotationYaw, this.rotationPitch); - this.setRotation((float)this.trainYaw, this.rotationPitch); } } else { @@ -81,11 +82,7 @@ public abstract class EntityRailCarBase extends Entity { if(corePos == null) { this.derail(); } else { - this.prevPosX = this.posX; - this.prevPosY = this.posY; - this.prevPosZ = this.posZ; this.setPosition(corePos.xCoord, corePos.yCoord, corePos.zCoord); - anchor = this.getCurentAnchorPos(); //reset origin to new position Vec3 frontPos = getRelPosAlongRail(anchor, this.getLengthSpan()); Vec3 backPos = getRelPosAlongRail(anchor, -this.getLengthSpan()); @@ -93,11 +90,15 @@ public abstract class EntityRailCarBase extends Entity { if(frontPos == null || backPos == null) { this.derail(); } else { - this.rotationYaw = generateYaw(frontPos, backPos); + this.prevRotationYaw = this.rotationYaw; + this.rotationYaw = this.movementYaw = generateYaw(frontPos, backPos); + this.motionX = this.rotationYaw / 360D; // hijacking this crap for easy syncing + this.velocityChanged = true; } } - - PacketDispatcher.wrapper.sendTo(new PlayerInformPacket(new ChatComponentText("Yaw: " + this.rotationYaw), 665, 3000), (EntityPlayerMP) worldObj.playerEntities.get(0)); + + PacketDispatcher.wrapper.sendTo(new PlayerInformPacket(new ChatComponentText("Yaw: " + this.rotationYaw), 664, 3000), (EntityPlayerMP) worldObj.playerEntities.get(0)); + PacketDispatcher.wrapper.sendTo(new PlayerInformPacket(new ChatComponentText("MYaw: " + this.movementYaw), 665, 3000), (EntityPlayerMP) worldObj.playerEntities.get(0)); } } @@ -105,6 +106,11 @@ public abstract class EntityRailCarBase extends Entity { float yaw = this.rotationYaw; + if(distanceToCover < 0) { + distanceToCover *= -1; + yaw += 180; + } + Vec3 next = Vec3.createVectorHelper(posX, posY, posZ); int it = 0; @@ -129,13 +135,20 @@ public abstract class EntityRailCarBase extends Entity { if(block instanceof IRailNTM) { IRailNTM rail = (IRailNTM) block; + if(it == 1) { + next = rail.getTravelLocation(worldObj, x, y, z, next.xCoord, next.yCoord, next.zCoord, rot.xCoord, rot.yCoord, rot.zCoord, 0, new RailContext()); + } + + boolean flip = distanceToCover < 0; + if(rail.getGauge(worldObj, x, y, z) == this.getGauge()) { - RailLeaveInfo info = new RailLeaveInfo(); + RailContext info = new RailContext(); Vec3 prev = next; - next = rail.getTravelLocation(worldObj, x, y, z, posX, posY, posZ, rot.xCoord, rot.yCoord, rot.zCoord, distanceToCover, info); + next = rail.getTravelLocation(worldObj, x, y, z, prev.xCoord, prev.yCoord, prev.zCoord, rot.xCoord, rot.yCoord, rot.zCoord, distanceToCover, info); distanceToCover = info.overshoot; anchor = info.pos; - yaw = generateYaw(next, prev); + + yaw = generateYaw(next, prev) * (flip ? -1 : 1); } else { return null; @@ -178,16 +191,18 @@ public abstract class EntityRailCarBase extends Entity { this.trainX = posX; this.trainY = posY; this.trainZ = posZ; - this.trainYaw = (double) yaw; + //this.trainYaw = (double) yaw; this.trainPitch = (double) pitch; this.turnProgress = turnProg + 2; this.motionX = this.velocityX; this.motionY = this.velocityY; this.motionZ = this.velocityZ; + this.trainYaw = this.movementYaw; } @SideOnly(Side.CLIENT) public void setVelocity(double mX, double mY, double mZ) { + this.movementYaw = (float) this.motionX * 360F; this.velocityX = this.motionX = mX; this.velocityY = this.motionY = mY; this.velocityZ = this.motionZ = mZ; diff --git a/src/main/java/com/hbm/items/tool/ItemWandD.java b/src/main/java/com/hbm/items/tool/ItemWandD.java index f8c7643da..2d22a2182 100644 --- a/src/main/java/com/hbm/items/tool/ItemWandD.java +++ b/src/main/java/com/hbm/items/tool/ItemWandD.java @@ -3,7 +3,7 @@ package com.hbm.items.tool; import java.util.List; import com.hbm.blocks.rail.IRailNTM; -import com.hbm.blocks.rail.IRailNTM.RailLeaveInfo; +import com.hbm.blocks.rail.IRailNTM.RailContext; import com.hbm.lib.Library; import com.hbm.packet.PacketDispatcher; import com.hbm.packet.PlayerInformPacket; diff --git a/src/main/java/com/hbm/main/ModEventHandlerClient.java b/src/main/java/com/hbm/main/ModEventHandlerClient.java index f89a281d2..9393a59c8 100644 --- a/src/main/java/com/hbm/main/ModEventHandlerClient.java +++ b/src/main/java/com/hbm/main/ModEventHandlerClient.java @@ -13,11 +13,12 @@ import com.hbm.blocks.ILookOverlay; import com.hbm.blocks.ModBlocks; import com.hbm.blocks.generic.BlockAshes; import com.hbm.blocks.rail.IRailNTM; -import com.hbm.blocks.rail.IRailNTM.RailLeaveInfo; +import com.hbm.blocks.rail.IRailNTM.RailContext; import com.hbm.config.GeneralConfig; import com.hbm.entity.effect.EntityNukeTorex; import com.hbm.entity.mob.EntityHunterChopper; import com.hbm.entity.projectile.EntityChopperMine; +import com.hbm.entity.train.EntityRailCarRidable; import com.hbm.extprop.HbmLivingProps; import com.hbm.extprop.HbmPlayerProps; import com.hbm.handler.ArmorModHandler; @@ -217,7 +218,6 @@ public class ModEventHandlerClient { float yaw = player.rotationYaw; Vec3 next = Vec3.createVectorHelper(pos.hitVec.xCoord, pos.hitVec.yCoord, pos.hitVec.zCoord); - Vec3 first = next; int it = 0; BlockPos anchor = new BlockPos(pos.blockX, pos.blockY, pos.blockZ); @@ -243,12 +243,12 @@ public class ModEventHandlerClient { if(block instanceof IRailNTM) { IRailNTM rail = (IRailNTM) block; - RailLeaveInfo info = new RailLeaveInfo(); + RailContext info = new RailContext(); boolean flip = distanceToCover < 0; if(it == 1) { - Vec3 snap = rail.getTravelLocation(world, x, y, z, next.xCoord, next.yCoord, next.zCoord, rot.xCoord, rot.yCoord, rot.zCoord, 0, info); + Vec3 snap = next = rail.getTravelLocation(world, x, y, z, next.xCoord, next.yCoord, next.zCoord, rot.xCoord, rot.yCoord, rot.zCoord, 0, info); if(i == 0) world.spawnParticle("reddust", snap.xCoord, snap.yCoord + 0.25, snap.zCoord, 0.1, 1, 0.1); } @@ -264,7 +264,7 @@ public class ModEventHandlerClient { double radians = -Math.atan2(deltaX, deltaZ); yaw = (float) MathHelper.wrapAngleTo180_double(radians * 180D / Math.PI + (flip ? 180 : 0)); - text.add(it + ": " + distanceToCover); + text.add(it + ": " + yaw); } else { break; From bfb1334b49657bba2ab3bb294d342f0f805fbaaa Mon Sep 17 00:00:00 2001 From: Bob Date: Sun, 7 May 2023 01:36:59 +0200 Subject: [PATCH 33/40] random shit, go! --- src/main/java/com/hbm/blocks/BlockEnums.java | 5 + src/main/java/com/hbm/blocks/ModBlocks.java | 11 +- .../hbm/blocks/generic/BlockBiomeStone.java | 53 ++++++++ .../com/hbm/blocks/generic/BlockSlag.java | 32 +++++ .../java/com/hbm/entity/EntityMappings.java | 32 +++++ .../com/hbm/entity/mob/EntityCreeperGold.java | 36 +++++ .../hbm/entity/mob/EntityCreeperVolatile.java | 36 +++++ .../hbm/explosion/vanillant/ExplosionVNT.java | 8 +- .../vanillant/interfaces/IBlockMutator.java | 5 +- .../standard/BlockAllocatorBulkie.java | 89 +++++++++++++ .../standard/BlockMutatorBulkie.java | 32 +++++ .../standard/BlockProcessorStandard.java | 3 +- .../java/com/hbm/items/tool/ItemWandD.java | 17 +++ src/main/java/com/hbm/main/ClientProxy.java | 2 + src/main/java/com/hbm/main/MainRegistry.java | 1 + .../java/com/hbm/world/feature/BiomeCave.java | 126 ++++++++++++++++++ .../hbm/textures/blocks/block_slag_broken.png | Bin 0 -> 792 bytes .../textures/blocks/stone_biome.woodland.png | Bin 0 -> 704 bytes .../blocks/stone_biome_layer.woodland.png | Bin 0 -> 765 bytes .../blocks/stone_biome_top.woodland.png | Bin 0 -> 790 bytes .../hbm/textures/blocks/stone_deep_base.png | Bin 0 -> 497 bytes .../hbm/textures/entity/creeper_gold.png | Bin 0 -> 3063 bytes .../hbm/textures/entity/creeper_volatile.png | Bin 0 -> 3107 bytes 23 files changed, 478 insertions(+), 10 deletions(-) create mode 100644 src/main/java/com/hbm/blocks/generic/BlockBiomeStone.java create mode 100644 src/main/java/com/hbm/blocks/generic/BlockSlag.java create mode 100644 src/main/java/com/hbm/entity/mob/EntityCreeperGold.java create mode 100644 src/main/java/com/hbm/entity/mob/EntityCreeperVolatile.java create mode 100644 src/main/java/com/hbm/explosion/vanillant/standard/BlockAllocatorBulkie.java create mode 100644 src/main/java/com/hbm/explosion/vanillant/standard/BlockMutatorBulkie.java create mode 100644 src/main/java/com/hbm/world/feature/BiomeCave.java create mode 100644 src/main/resources/assets/hbm/textures/blocks/block_slag_broken.png create mode 100644 src/main/resources/assets/hbm/textures/blocks/stone_biome.woodland.png create mode 100644 src/main/resources/assets/hbm/textures/blocks/stone_biome_layer.woodland.png create mode 100644 src/main/resources/assets/hbm/textures/blocks/stone_biome_top.woodland.png create mode 100644 src/main/resources/assets/hbm/textures/blocks/stone_deep_base.png create mode 100644 src/main/resources/assets/hbm/textures/entity/creeper_gold.png create mode 100644 src/main/resources/assets/hbm/textures/entity/creeper_volatile.png diff --git a/src/main/java/com/hbm/blocks/BlockEnums.java b/src/main/java/com/hbm/blocks/BlockEnums.java index 99d7edadf..5a8e89122 100644 --- a/src/main/java/com/hbm/blocks/BlockEnums.java +++ b/src/main/java/com/hbm/blocks/BlockEnums.java @@ -10,6 +10,11 @@ public class BlockEnums { LIMESTONE } + public static enum EnumBiomeType { + DESERT, + WOODLAND + } + public static enum EnumStalagmiteType { SULFUR, ASBESTOS diff --git a/src/main/java/com/hbm/blocks/ModBlocks.java b/src/main/java/com/hbm/blocks/ModBlocks.java index fe53bd84c..0a0df5800 100644 --- a/src/main/java/com/hbm/blocks/ModBlocks.java +++ b/src/main/java/com/hbm/blocks/ModBlocks.java @@ -138,6 +138,7 @@ public class ModBlocks { public static Block stone_resource; public static Block stalagmite; public static Block stalactite; + public static Block stone_biome; public static Block stone_deep_cobble; public static Block depth_brick; @@ -1318,6 +1319,7 @@ public class ModBlocks { 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); stone_deep_cobble = new BlockDeepCobble().setBlockName("stone_deep_cobble").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(30.0F); basalt = new BlockGeneric(Material.rock).setBlockName("basalt").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":basalt"); @@ -1443,7 +1445,7 @@ public class ModBlocks { 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(900.0F).setBlockTextureName(RefStrings.MODID + ":block_smore_side"); - block_slag = new BlockBeaconable(Material.iron).setBlockName("block_slag").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeMetal).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":block_slag"); + block_slag = new BlockSlag(Material.rock).setBlockName("block_slag").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeStone).setHardness(5.0F).setResistance(10.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"); @@ -2461,9 +2463,10 @@ public class ModBlocks { GameRegistry.registerBlock(crystal_trixite, crystal_trixite.getUnlocalizedName()); //Resource-bearing Stones - GameRegistry.registerBlock(stone_resource, ItemBlockBase.class, stone_resource.getUnlocalizedName()); - GameRegistry.registerBlock(stalagmite, ItemBlockBase.class, stalagmite.getUnlocalizedName()); - GameRegistry.registerBlock(stalactite, ItemBlockBase.class, stalactite.getUnlocalizedName()); + register(stone_resource); + register(stalagmite); + register(stalactite); + register(stone_biome); //Stone Variants GameRegistry.registerBlock(stone_porous, stone_porous.getUnlocalizedName()); diff --git a/src/main/java/com/hbm/blocks/generic/BlockBiomeStone.java b/src/main/java/com/hbm/blocks/generic/BlockBiomeStone.java new file mode 100644 index 000000000..a53cce92d --- /dev/null +++ b/src/main/java/com/hbm/blocks/generic/BlockBiomeStone.java @@ -0,0 +1,53 @@ +package com.hbm.blocks.generic; + +import com.hbm.blocks.BlockEnumMulti; +import com.hbm.blocks.BlockEnums.EnumBiomeType; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.block.material.Material; +import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.util.IIcon; +import net.minecraft.world.IBlockAccess; + +public class BlockBiomeStone extends BlockEnumMulti { + + public BlockBiomeStone() { + super(Material.rock, EnumBiomeType.class, true, true); + } + + protected IIcon[] iconsTop; + protected IIcon[] iconsLayer; + + @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]; + this.iconsLayer = new IIcon[enums.length]; + + for(int i = 0; i < icons.length; i++) { + Enum num = enums[i]; + this.icons[i] = reg.registerIcon(this.getTextureName() + "." + num.name().toLowerCase()); + this.iconsTop[i] = reg.registerIcon(this.getTextureName() + "_top." + num.name().toLowerCase()); + this.iconsLayer[i] = reg.registerIcon(this.getTextureName() + "_layer." + num.name().toLowerCase()); + } + } + + @Override + @SideOnly(Side.CLIENT) + public IIcon getIcon(IBlockAccess world, int x, int y, int z, int side) { + + int meta = world.getBlockMetadata(x, y, z); + if(side == 0) return this.iconsTop[meta % this.icons.length]; + if(side == 1) return this.iconsTop[meta % this.icons.length]; + + if(world.getBlock(x, y + 1, z) == this && world.getBlockMetadata(x, y + 1, z) == meta) { + return this.getIcon(side, meta); + } else { + return this.iconsLayer[meta % this.icons.length]; + } + } +} diff --git a/src/main/java/com/hbm/blocks/generic/BlockSlag.java b/src/main/java/com/hbm/blocks/generic/BlockSlag.java new file mode 100644 index 000000000..b18db55b1 --- /dev/null +++ b/src/main/java/com/hbm/blocks/generic/BlockSlag.java @@ -0,0 +1,32 @@ +package com.hbm.blocks.generic; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.block.material.Material; +import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.util.IIcon; + +public class BlockSlag extends BlockBeaconable { + + @SideOnly(Side.CLIENT) + private IIcon iconAlt; + + public BlockSlag(Material mat) { + super(mat); + } + + @Override + @SideOnly(Side.CLIENT) + public void registerBlockIcons(IIconRegister iconRegister) { + super.registerBlockIcons(iconRegister); + this.iconAlt = iconRegister.registerIcon(this.getTextureName() + "_broken"); + } + + @Override + @SideOnly(Side.CLIENT) + public IIcon getIcon(int side, int metadata) { + if(metadata == 1) return this.iconAlt; + + return this.blockIcon; + } +} diff --git a/src/main/java/com/hbm/entity/EntityMappings.java b/src/main/java/com/hbm/entity/EntityMappings.java index 844c470e9..23a8e70fd 100644 --- a/src/main/java/com/hbm/entity/EntityMappings.java +++ b/src/main/java/com/hbm/entity/EntityMappings.java @@ -20,6 +20,10 @@ import com.hbm.util.Tuple.Quartet; import cpw.mods.fml.common.registry.EntityRegistry; import net.minecraft.entity.Entity; +import net.minecraft.entity.EntityLiving; +import net.minecraft.entity.EnumCreatureType; +import net.minecraft.world.biome.BiomeGenBase; +import net.minecraft.world.biome.BiomeGenBase.SpawnListEntry; public class EntityMappings { @@ -211,6 +215,8 @@ public class EntityMappings { addMob(EntityCreeperNuclear.class, "entity_mob_nuclear_creeper", 0x204131, 0x75CE00); addMob(EntityCreeperTainted.class, "entity_mob_tainted_creeper", 0x813b9b, 0xd71fdd); addMob(EntityCreeperPhosgene.class, "entity_mob_phosgene_creeper", 0xE3D398, 0xB8A06B); + addMob(EntityCreeperVolatile.class, "entity_mob_volatile_creeper", 0xC28153, 0x4D382C); + addMob(EntityCreeperGold.class, "entity_mob_gold_creeper", 0xECC136, 0x9E8B3E); addMob(EntityHunterChopper.class, "entity_mob_hunter_chopper", 0x000020, 0x2D2D72); addMob(EntityCyberCrab.class, "entity_cyber_crab", 0xAAAAAA, 0x444444); addMob(EntityTeslaCrab.class, "entity_tesla_crab", 0xAAAAAA, 0x440000); @@ -224,6 +230,10 @@ public class EntityMappings { addMob(EntitySiegeSkeleton.class, "entity_meme_skeleton", 0x303030, 0x000080); addMob(EntitySiegeUFO.class, "entity_meme_ufo", 0x303030, 0x800000); addMob(EntitySiegeCraft.class, "entity_meme_craft", 0x303030, 0x808000); + + addSpawn(EntityCreeperPhosgene.class, 5, 1, 1, EnumCreatureType.monster, BiomeGenBase.getBiomeGenArray()); + addSpawn(EntityCreeperVolatile.class, 10, 1, 1, EnumCreatureType.monster, BiomeGenBase.getBiomeGenArray()); + addSpawn(EntityCreeperGold.class, 1, 1, 1, EnumCreatureType.monster, BiomeGenBase.getBiomeGenArray()); int id = 0; for(Quartet, String, Integer, Boolean> entry : entityMappings) { @@ -246,4 +256,26 @@ public class EntityMappings { private static void addMob(Class clazz, String name, int color1, int color2) { mobMappings.add(new Quartet(clazz, name, color1, color2)); } + + public static void addSpawn(Class entityClass, int weightedProb, int min, int max, EnumCreatureType typeOfCreature, BiomeGenBase... biomes) { + + for(BiomeGenBase biome : biomes) { + + if(biome == null) continue; + + List spawns = biome.getSpawnableList(typeOfCreature); + + for(SpawnListEntry entry : spawns) { + // Adjusting an existing spawn entry + if(entry.entityClass == entityClass) { + entry.itemWeight = weightedProb; + entry.minGroupCount = min; + entry.maxGroupCount = max; + break; + } + } + + spawns.add(new SpawnListEntry(entityClass, weightedProb, min, max)); + } + } } diff --git a/src/main/java/com/hbm/entity/mob/EntityCreeperGold.java b/src/main/java/com/hbm/entity/mob/EntityCreeperGold.java new file mode 100644 index 000000000..d9ab7d3b6 --- /dev/null +++ b/src/main/java/com/hbm/entity/mob/EntityCreeperGold.java @@ -0,0 +1,36 @@ +package com.hbm.entity.mob; + +import com.hbm.explosion.vanillant.ExplosionVNT; +import com.hbm.explosion.vanillant.standard.*; + +import net.minecraft.entity.monster.EntityCreeper; +import net.minecraft.init.Blocks; +import net.minecraft.world.World; + +public class EntityCreeperGold extends EntityCreeper { + + public EntityCreeperGold(World world) { + super(world); + } + + @Override + public void func_146077_cc() { + + if(!this.worldObj.isRemote) { + this.setDead(); + + ExplosionVNT vnt = new ExplosionVNT(worldObj, posX, posY, posZ, 7); + vnt.setBlockAllocator(new BlockAllocatorBulkie(60)); + vnt.setBlockProcessor(new BlockProcessorStandard().withBlockEffect(new BlockMutatorBulkie(Blocks.gold_ore))); + vnt.setEntityProcessor(new EntityProcessorStandard().withRangeMod(0.5F)); + vnt.setPlayerProcessor(new PlayerProcessorStandard()); + vnt.setSFX(new ExplosionEffectStandard()); + vnt.explode(); + } + } + + @Override + public boolean getCanSpawnHere() { + return super.getCanSpawnHere() && this.posY <= 40; + } +} diff --git a/src/main/java/com/hbm/entity/mob/EntityCreeperVolatile.java b/src/main/java/com/hbm/entity/mob/EntityCreeperVolatile.java new file mode 100644 index 000000000..d957c7aca --- /dev/null +++ b/src/main/java/com/hbm/entity/mob/EntityCreeperVolatile.java @@ -0,0 +1,36 @@ +package com.hbm.entity.mob; + +import com.hbm.blocks.ModBlocks; +import com.hbm.explosion.vanillant.ExplosionVNT; +import com.hbm.explosion.vanillant.standard.*; + +import net.minecraft.entity.monster.EntityCreeper; +import net.minecraft.world.World; + +public class EntityCreeperVolatile extends EntityCreeper { + + public EntityCreeperVolatile(World world) { + super(world); + } + + @Override + public void func_146077_cc() { + + if(!this.worldObj.isRemote) { + this.setDead(); + + ExplosionVNT vnt = new ExplosionVNT(worldObj, posX, posY, posZ, 7); + vnt.setBlockAllocator(new BlockAllocatorBulkie(60)); + vnt.setBlockProcessor(new BlockProcessorStandard().withBlockEffect(new BlockMutatorBulkie(ModBlocks.block_slag, 1))); + vnt.setEntityProcessor(new EntityProcessorStandard().withRangeMod(0.5F)); + vnt.setPlayerProcessor(new PlayerProcessorStandard()); + vnt.setSFX(new ExplosionEffectStandard()); + vnt.explode(); + } + } + + @Override + public boolean getCanSpawnHere() { + return super.getCanSpawnHere() && this.posY <= 40; + } +} diff --git a/src/main/java/com/hbm/explosion/vanillant/ExplosionVNT.java b/src/main/java/com/hbm/explosion/vanillant/ExplosionVNT.java index 891c10213..e1c217617 100644 --- a/src/main/java/com/hbm/explosion/vanillant/ExplosionVNT.java +++ b/src/main/java/com/hbm/explosion/vanillant/ExplosionVNT.java @@ -39,10 +39,10 @@ public class ExplosionVNT { //since we want to reduce each effect to the bare minimum (sound, particles, etc. being separate) we definitely need multiple most of the time private IExplosionSFX[] sfx; - protected World world; - protected double posX; - protected double posY; - protected double posZ; + public World world; + public double posX; + public double posY; + public double posZ; public float size; public Entity exploder; diff --git a/src/main/java/com/hbm/explosion/vanillant/interfaces/IBlockMutator.java b/src/main/java/com/hbm/explosion/vanillant/interfaces/IBlockMutator.java index d1e29ecbc..904f01c69 100644 --- a/src/main/java/com/hbm/explosion/vanillant/interfaces/IBlockMutator.java +++ b/src/main/java/com/hbm/explosion/vanillant/interfaces/IBlockMutator.java @@ -2,7 +2,10 @@ package com.hbm.explosion.vanillant.interfaces; import com.hbm.explosion.vanillant.ExplosionVNT; +import net.minecraft.block.Block; + public interface IBlockMutator { - public int mutateAtPosition(ExplosionVNT explosion, int x, int y, int z); + public void mutatePre(ExplosionVNT explosion, Block block, int meta, int x, int y, int z); + public void mutatePost(ExplosionVNT explosion, int x, int y, int z); } diff --git a/src/main/java/com/hbm/explosion/vanillant/standard/BlockAllocatorBulkie.java b/src/main/java/com/hbm/explosion/vanillant/standard/BlockAllocatorBulkie.java new file mode 100644 index 000000000..863916f19 --- /dev/null +++ b/src/main/java/com/hbm/explosion/vanillant/standard/BlockAllocatorBulkie.java @@ -0,0 +1,89 @@ +package com.hbm.explosion.vanillant.standard; + +import java.util.HashSet; + +import com.hbm.explosion.vanillant.ExplosionVNT; +import com.hbm.explosion.vanillant.interfaces.IBlockAllocator; + +import net.minecraft.block.Block; +import net.minecraft.block.material.Material; +import net.minecraft.util.MathHelper; +import net.minecraft.world.ChunkPosition; +import net.minecraft.world.World; + +public class BlockAllocatorBulkie implements IBlockAllocator { + + protected double maximum; + protected int resolution; + + public BlockAllocatorBulkie(double maximum) { + this(maximum, 16); + } + + public BlockAllocatorBulkie(double maximum, int resolution) { + this.resolution = resolution; + this.maximum = maximum; + } + + @Override + public HashSet allocate(ExplosionVNT explosion, World world, double x, double y, double z, float size) { + + HashSet affectedBlocks = new HashSet(); + + for(int i = 0; i < this.resolution; ++i) { + for(int j = 0; j < this.resolution; ++j) { + for(int k = 0; k < this.resolution; ++k) { + + if(i == 0 || i == this.resolution - 1 || j == 0 || j == this.resolution - 1 || k == 0 || k == this.resolution - 1) { + + double d0 = (double) ((float) i / ((float) this.resolution - 1.0F) * 2.0F - 1.0F); + double d1 = (double) ((float) j / ((float) this.resolution - 1.0F) * 2.0F - 1.0F); + double d2 = (double) ((float) k / ((float) this.resolution - 1.0F) * 2.0F - 1.0F); + double d3 = Math.sqrt(d0 * d0 + d1 * d1 + d2 * d2); + + d0 /= d3; + d1 /= d3; + d2 /= d3; + + double currentX = x; + double currentY = y; + double currentZ = z; + + double dist = 0; + + for(float stepSize = 0.3F; dist <= explosion.size;) { + + double deltaX = currentX - x; + double deltaY = currentY - y; + double deltaZ = currentZ - z; + dist = Math.sqrt(deltaX * deltaX + deltaY * deltaY + deltaZ * deltaZ); + + int blockX = MathHelper.floor_double(currentX); + int blockY = MathHelper.floor_double(currentY); + int blockZ = MathHelper.floor_double(currentZ); + + Block block = world.getBlock(blockX, blockY, blockZ); + + if(block.getMaterial() != Material.air) { + float blockResistance = explosion.exploder != null ? explosion.exploder.func_145772_a(explosion.compat, world, blockX, blockY, blockZ, block) : block.getExplosionResistance(explosion.exploder, world, blockX, blockY, blockZ, x, y, z); + if(this.maximum < blockResistance) { + break; + } + } + + if(explosion.exploder == null || explosion.exploder.func_145774_a(explosion.compat, world, blockX, blockY, blockZ, block, explosion.size)) { + affectedBlocks.add(new ChunkPosition(blockX, blockY, blockZ)); + } + + currentX += d0 * (double) stepSize; + currentY += d1 * (double) stepSize; + currentZ += d2 * (double) stepSize; + } + } + } + } + } + + return affectedBlocks; + } +} diff --git a/src/main/java/com/hbm/explosion/vanillant/standard/BlockMutatorBulkie.java b/src/main/java/com/hbm/explosion/vanillant/standard/BlockMutatorBulkie.java new file mode 100644 index 000000000..5b89ee88e --- /dev/null +++ b/src/main/java/com/hbm/explosion/vanillant/standard/BlockMutatorBulkie.java @@ -0,0 +1,32 @@ +package com.hbm.explosion.vanillant.standard; + +import com.hbm.explosion.vanillant.ExplosionVNT; +import com.hbm.explosion.vanillant.interfaces.IBlockMutator; +import com.hbm.inventory.RecipesCommon.MetaBlock; + +import net.minecraft.block.Block; +import net.minecraft.util.Vec3; + +public class BlockMutatorBulkie implements IBlockMutator { + + protected MetaBlock metaBlock; + + public BlockMutatorBulkie(Block block) { + this(block, 0); + } + + public BlockMutatorBulkie(Block block, int meta) { + this.metaBlock = new MetaBlock(block, meta); + } + + @Override + public void mutatePre(ExplosionVNT explosion, Block block, int meta, int x, int y, int z) { + if(!block.isBlockNormalCube()) return; + Vec3 vec = Vec3.createVectorHelper(x + 0.5 - explosion.posX, y + 0.5 - explosion.posY, z + 0.5 - explosion.posZ); + if(vec.lengthVector() >= explosion.size - 0.5) { + explosion.world.setBlock(x, y, z, metaBlock.block, metaBlock.meta, 3); + } + } + + @Override public void mutatePost(ExplosionVNT explosion, int x, int y, int z) { } +} diff --git a/src/main/java/com/hbm/explosion/vanillant/standard/BlockProcessorStandard.java b/src/main/java/com/hbm/explosion/vanillant/standard/BlockProcessorStandard.java index ac1fcd7be..a6da1e153 100644 --- a/src/main/java/com/hbm/explosion/vanillant/standard/BlockProcessorStandard.java +++ b/src/main/java/com/hbm/explosion/vanillant/standard/BlockProcessorStandard.java @@ -63,6 +63,7 @@ public class BlockProcessorStandard implements IBlockProcessor { } block.onBlockExploded(world, blockX, blockY, blockZ, explosion.compat); + if(this.convert != null) this.convert.mutatePre(explosion, block, world.getBlockMetadata(blockX, blockY, blockZ), blockX, blockY, blockZ); } } @@ -78,7 +79,7 @@ public class BlockProcessorStandard implements IBlockProcessor { Block block = world.getBlock(blockX, blockY, blockZ); if(block.getMaterial() == Material.air) { - this.convert.mutateAtPosition(explosion, blockX, blockY, blockZ); + this.convert.mutatePost(explosion, blockX, blockY, blockZ); } } } diff --git a/src/main/java/com/hbm/items/tool/ItemWandD.java b/src/main/java/com/hbm/items/tool/ItemWandD.java index 2d22a2182..7ea8ad8b7 100644 --- a/src/main/java/com/hbm/items/tool/ItemWandD.java +++ b/src/main/java/com/hbm/items/tool/ItemWandD.java @@ -2,8 +2,16 @@ package com.hbm.items.tool; import java.util.List; +import com.hbm.blocks.ModBlocks; import com.hbm.blocks.rail.IRailNTM; import com.hbm.blocks.rail.IRailNTM.RailContext; +import com.hbm.explosion.vanillant.ExplosionVNT; +import com.hbm.explosion.vanillant.standard.BlockAllocatorBulkie; +import com.hbm.explosion.vanillant.standard.BlockMutatorBulkie; +import com.hbm.explosion.vanillant.standard.BlockProcessorStandard; +import com.hbm.explosion.vanillant.standard.EntityProcessorStandard; +import com.hbm.explosion.vanillant.standard.ExplosionEffectStandard; +import com.hbm.explosion.vanillant.standard.PlayerProcessorStandard; import com.hbm.lib.Library; import com.hbm.packet.PacketDispatcher; import com.hbm.packet.PlayerInformPacket; @@ -14,6 +22,7 @@ import com.hbm.world.feature.OilSpot; import net.minecraft.block.Block; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayerMP; +import net.minecraft.init.Blocks; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.util.ChatComponentText; @@ -34,6 +43,14 @@ public class ItemWandD extends Item { if(pos != null) { + ExplosionVNT vnt = new ExplosionVNT(world, pos.hitVec.xCoord, pos.hitVec.yCoord, pos.hitVec.zCoord, 7); + vnt.setBlockAllocator(new BlockAllocatorBulkie(60)); + vnt.setBlockProcessor(new BlockProcessorStandard().withBlockEffect(new BlockMutatorBulkie(ModBlocks.block_slag)).setNoDrop()); + vnt.setEntityProcessor(new EntityProcessorStandard()); + vnt.setPlayerProcessor(new PlayerProcessorStandard()); + vnt.setSFX(new ExplosionEffectStandard()); + vnt.explode(); + /*TimeAnalyzer.startCount("setBlock"); world.setBlock(pos.blockX, pos.blockY, pos.blockZ, Blocks.dirt); TimeAnalyzer.startEndCount("getBlock"); diff --git a/src/main/java/com/hbm/main/ClientProxy.java b/src/main/java/com/hbm/main/ClientProxy.java index 04a912a51..e69446d89 100644 --- a/src/main/java/com/hbm/main/ClientProxy.java +++ b/src/main/java/com/hbm/main/ClientProxy.java @@ -691,6 +691,8 @@ public class ClientProxy extends ServerProxy { RenderingRegistry.registerEntityRenderingHandler(EntityCreeperNuclear.class, new RenderCreeperUniversal(RefStrings.MODID + ":" + "textures/entity/creeper.png", RefStrings.MODID + ":" + "textures/entity/creeper_armor.png").setSwellMod(5F)); RenderingRegistry.registerEntityRenderingHandler(EntityCreeperTainted.class, new RenderCreeperUniversal(RefStrings.MODID + ":" + "textures/entity/creeper_tainted.png", RefStrings.MODID + ":" + "textures/entity/creeper_armor_taint.png")); RenderingRegistry.registerEntityRenderingHandler(EntityCreeperPhosgene.class, new RenderCreeperUniversal(RefStrings.MODID + ":" + "textures/entity/creeper_phosgene.png", "textures/entity/creeper/creeper_armor.png")); + RenderingRegistry.registerEntityRenderingHandler(EntityCreeperVolatile.class, new RenderCreeperUniversal(RefStrings.MODID + ":" + "textures/entity/creeper_volatile.png", "textures/entity/creeper/creeper_armor.png")); + RenderingRegistry.registerEntityRenderingHandler(EntityCreeperGold.class, new RenderCreeperUniversal(RefStrings.MODID + ":" + "textures/entity/creeper_gold.png", "textures/entity/creeper/creeper_armor.png")); RenderingRegistry.registerEntityRenderingHandler(EntityHunterChopper.class, new RenderHunterChopper()); RenderingRegistry.registerEntityRenderingHandler(EntityCyberCrab.class, new RenderCyberCrab()); RenderingRegistry.registerEntityRenderingHandler(EntityTeslaCrab.class, new RenderTeslaCrab()); diff --git a/src/main/java/com/hbm/main/MainRegistry.java b/src/main/java/com/hbm/main/MainRegistry.java index 6e1e381e5..da251825c 100644 --- a/src/main/java/com/hbm/main/MainRegistry.java +++ b/src/main/java/com/hbm/main/MainRegistry.java @@ -848,6 +848,7 @@ public class MainRegistry { new OreCave(ModBlocks.stone_resource, 0).setThreshold(1.5D).setRangeMult(20).setYLevel(30).setMaxRange(20).withFluid(ModBlocks.sulfuric_acid_block); //sulfur new OreCave(ModBlocks.stone_resource, 1).setThreshold(1.75D).setRangeMult(20).setYLevel(25).setMaxRange(20); //asbestos new OreLayer3D(ModBlocks.stone_resource, EnumStoneType.HEMATITE.ordinal()); + new BiomeCave().setThreshold(1.5D).setRangeMult(20).setYLevel(40).setMaxRange(20); //new OreLayer(Blocks.coal_ore, 0.2F).setThreshold(4).setRangeMult(3).setYLevel(70); Compat.handleRailcraftNonsense(); diff --git a/src/main/java/com/hbm/world/feature/BiomeCave.java b/src/main/java/com/hbm/world/feature/BiomeCave.java new file mode 100644 index 000000000..9d297778e --- /dev/null +++ b/src/main/java/com/hbm/world/feature/BiomeCave.java @@ -0,0 +1,126 @@ +package com.hbm.world.feature; + +import java.util.Random; + +import com.hbm.blocks.BlockEnums.EnumBiomeType; +import com.hbm.blocks.ModBlocks; +import com.hbm.blocks.generic.BlockStalagmite; + +import cpw.mods.fml.common.eventhandler.SubscribeEvent; +import net.minecraft.block.Block; +import net.minecraft.block.material.Material; +import net.minecraft.world.World; +import net.minecraft.world.biome.BiomeGenBase; +import net.minecraft.world.biome.BiomeGenBase.TempCategory; +import net.minecraft.world.gen.NoiseGeneratorPerlin; +import net.minecraftforge.common.MinecraftForge; +import net.minecraftforge.common.util.ForgeDirection; +import net.minecraftforge.event.terraingen.DecorateBiomeEvent; + +public class BiomeCave { + + private NoiseGeneratorPerlin noise; + /** The number that is being deducted flat from the result of the perlin noise before all other processing. Increase this to make strata rarer. */ + private double threshold = 2D; + /** The mulitplier for the remaining bit after the threshold has been deducted. Increase to make strata wavier. */ + private int rangeMult = 3; + /** The maximum range after multiplying - anything above this will be subtracted from (maxRange * 2) to yield the proper range. Increase this to make strata thicker. */ + private int maxRange = 4; + /** The y-level around which the stratum is centered. */ + private int yLevel = 30; + + public BiomeCave() { + MinecraftForge.EVENT_BUS.register(this); + } + + public BiomeCave setThreshold(double threshold) { + this.threshold = threshold; + return this; + } + + public BiomeCave setRangeMult(int rangeMult) { + this.rangeMult = rangeMult; + return this; + } + + public BiomeCave setMaxRange(int maxRange) { + this.maxRange = maxRange; + return this; + } + + public BiomeCave setYLevel(int yLevel) { + this.yLevel = yLevel; + return this; + } + + @SubscribeEvent + public void onDecorate(DecorateBiomeEvent.Pre event) { + + World world = event.world; + + if(world.provider == null || world.provider.dimensionId != 0) return; + + if(this.noise == null) { + this.noise = new NoiseGeneratorPerlin(new Random(event.world.getSeed() - 1916169 + yLevel), 2); + } + + int cX = event.chunkX; + int cZ = event.chunkZ; + + double scale = 0.01D; + + for(int x = cX + 8; x < cX + 24; x++) { + for(int z = cZ + 8; z < cZ + 24; z++) { + + BiomeGenBase biome = world.getBiomeGenForCoords(x, z); + EnumBiomeType type = getTypeFromBiome(biome); + + double n = noise.func_151601_a(x * scale, z * scale); + + if(type != null && n > threshold) { + int range = (int)((n - threshold) * rangeMult); + + if(range > maxRange) + range = (maxRange * 2) - range; + + if(range < 0) + continue; + + for(int y = yLevel - range; y <= yLevel + range; y++) { + handleBiome(world, x, y, z, type); + } + } + } + } + } + + private static void handleBiome(World world, int x, int y, int z, EnumBiomeType type) { + Block target = world.getBlock(x, y, z); + + if(target.isNormalCube()) { + + boolean shouldGen = false; + + for(ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) { + if(world.getBlock(x + dir.offsetX, y + dir.offsetY, z + dir.offsetZ).isAir(world, x + dir.offsetX, y + dir.offsetY, z + dir.offsetZ)) { + shouldGen = true; break; + } + if(world.getBlock(x + dir.offsetX * 2, y + dir.offsetY * 2, z + dir.offsetZ * 2).isAir(world, x + dir.offsetX * 2, y + dir.offsetY * 2, z + dir.offsetZ * 2)) { + shouldGen = true; break; + } + } + + if(shouldGen) { + world.setBlock(x, y, z, ModBlocks.stone_biome, type.ordinal(), 2); + } + } + } + + private static EnumBiomeType getTypeFromBiome(BiomeGenBase biome) { + + if(biome.temperature >= 1 && biome.rainfall < 0.25) return EnumBiomeType.DESERT; + if(biome.temperature >= 0.5 && biome.rainfall > 0.25 && biome.getTempCategory() != TempCategory.OCEAN) return EnumBiomeType.WOODLAND; + + return null; + } +} diff --git a/src/main/resources/assets/hbm/textures/blocks/block_slag_broken.png b/src/main/resources/assets/hbm/textures/blocks/block_slag_broken.png new file mode 100644 index 0000000000000000000000000000000000000000..97f12ce5d660cd318211a09cec315dc28b516882 GIT binary patch literal 792 zcmV+z1LypSP)HFCasS z@B4hR{29S{fKnl$4ADECHviz!0-@~>n05X{jqxL8wArJ{c9K}rL zviR*bzdU@1s8p-ic6zAlc^=(v7l04u7x{2uiTY_B(=c$xGi04h0MzO=ri;_)j^i>n zcZ==qEp~q2q;d9w3D-e}k_SJnP&=s+$_v_UmrCV`pwoG!BkkL-zl?jK#5?fF=L+*81 z2l#aP3!*6E$CV#gU;CBjiw2XEQvj5AcZas+#bCLw6kFv#X*ACeeyfFl-s1lK?*|q~ zM#$&hWPV|hm>7FB&E?lGF+Mg2g;dg{TrRV*zB+WF#Tr)%SFkJ_%d*k+1Y_yZLHoTPreX5;NtKrd W^E)@0cQ{Z00000rET)H5iUZ7Gmo8fmbr&1wGKZP(eZTL0zMe{@(yrBN zD5d!K7-InNeIJ0}_$_;l8h-X3#uyyO0YFr%Rg5uctpSiyb_pq^a9x+alM;TmlnN&% z!gXE3%qOC_2Eeun0VsRR1VMn-nji?e#1k_BQLoo=oD$O)Z=sYz7AlC{B@V(ZqJb@B z;RO9HgFP5C?%!pz{sJMP2{`Q;EUh)hm^1^iyVSWOA3uAK@zaOw{SGPSR`7@B80o)B z^Uz|beV>N!QPHIHbW`Zi8&!-~)E|}O|q8>lTweECd zY|1s7hZb_`glJ!2^g`NRy8 z8LyaIp|?~jJ#DpG^qzVoOQp5Owr#xJ48OuEZ8M72noK5>{t3g7qobov2FbCeTgG)=Xu}_O=0>)SB2FU!0000^B1Or-YY$>q;(QdbK-3FKEZlaVz)}JC;>-6GJB&R+h>&NKNMVzUW zh2S@~+s_daBEZd-v9#70V^B(+cv>HwNkB09I}5|R>>kA|RyGNyuTm}lOmtu|o!w?= zs))60<`O_KSSsPqla(pze^8ltt%&{T1#b8Gn?$)3Q<{hliOh$JBNH%4sP z%6Ne)-8NxMFt=b=#J v;km9$Fded2>++@Zj@_dHp}&FWd62<3E)G!O^&$-#00000NkvXXu0mjfhCN^% literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/blocks/stone_biome_top.woodland.png b/src/main/resources/assets/hbm/textures/blocks/stone_biome_top.woodland.png new file mode 100644 index 0000000000000000000000000000000000000000..e758050f49ccbac64d8fe90f3763441591f27c60 GIT binary patch literal 790 zcmV+x1L^#UP)<@U4fE_YAUjff^fAc2rT;!pSjwum2K%jac9 z5-~FoNC}BDnMY4gzg&KlA7vJ^fxA4rt8=gO+wZ@QVp3s@K_4KCLxcy33h1?qOa^-G zvN~71dG!vN4CrkK(nBeQ05~2`=xs+F3VLg(b&K9Ntj-mq5v$@-2>U*w_`kMWIPb&%>-}2YhTh{9}c{)XUi6sgIfpno)sOL~s6}<-E_b~>t z*hPv7mC4HNfw73%bH#uKtipdHHIMd zxV|rtXU|f;oqq|y!_AJn-3`7M;`o+cgNRbpBp{G3%XN;JjJ$ktg;I**SRqcEhKHLS z0Q1EhfHcYJYM-Vbux<0CD;d}o4|G}}6H7g4(q({5mjR1;j%^*T?>{`*=t_(+1k&YL z)?{(WY13d#%dNb_cS0WT4Sg(-qY>PF*t0rUG^Y-55WZ!7wqUu=dHu&Fy%nTMj!Z0} z`#D4B@YUB(b;NdapcMr#UtCcZhH#n^MG>wyA|@jMW~@2s9Z?ifRu#!ivANx0TLt*#vxu@VNZ~WhBEt9! z(qvCEQ~dMsf{E`FBr!>TiLpg6W84>V$fb!b(gv z(*NZwAxlW%B3%l*LLyTjTM5joqWHag-@ErF#+b3|I)-6jTHbpA(lm|#LXYh5@D2YKEX(M+jzd{eR~6oS5@XD`D+=nW zqCTDC@W+17YPCWs^{W;DN~s4xK%L$m?tR{DDz*@UMX>OwHJ|4*-g~5!q-jc)WwV>Z zX48}Z=luQteu$PN0Nidjmdhn?VYOhH5F(;a19sFp zYUG^5IrqrHvsFi}BY?H`#rHrEz>=nEMu0Mewv~3H(rD>vt;f&B@t;JePGQv33V9Ms4LrTeZyN!ZQ!*(@>MacK1 nX=2(!1y@3ax4Nnx-(ANKBRv|-mOaA+00000NkvXXu0mjfuY%@u literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/entity/creeper_gold.png b/src/main/resources/assets/hbm/textures/entity/creeper_gold.png new file mode 100644 index 0000000000000000000000000000000000000000..8f20dd3f4c31202389b239c55d630cb7f11bda5d GIT binary patch literal 3063 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 FV1kr@l literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/entity/creeper_volatile.png b/src/main/resources/assets/hbm/textures/entity/creeper_volatile.png new file mode 100644 index 0000000000000000000000000000000000000000..b2640153995539e417a041436366671f0295c429 GIT binary patch literal 3107 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 Date: Sun, 7 May 2023 20:30:54 +0200 Subject: [PATCH 34/40] tram passenger seats --- gradle.properties | 2 +- .../java/com/hbm/entity/EntityMappings.java | 4 +- .../com/hbm/entity/mob/EntityCreeperGold.java | 15 ++- .../hbm/entity/mob/EntityCreeperVolatile.java | 12 +- .../hbm/entity/train/EntityRailCarBase.java | 11 -- .../entity/train/EntityRailCarRidable.java | 106 +++++++++++++++++- .../com/hbm/entity/train/TrainCargoTram.java | 15 ++- src/main/java/com/hbm/lib/RefStrings.java | 2 +- src/main/java/com/hbm/main/MainRegistry.java | 2 +- .../com/hbm/main/ModEventHandlerClient.java | 4 +- .../machine/TileEntityMachinePress.java | 7 +- .../tileentity/machine/TileEntityTesla.java | 10 +- src/main/resources/assets/hbm/lang/de_DE.lang | 2 + src/main/resources/assets/hbm/lang/en_US.lang | 2 + ..._CHOLERSTEROL.png => tank_CHOLESTEROL.png} | Bin 15 files changed, 161 insertions(+), 33 deletions(-) rename src/main/resources/assets/hbm/textures/models/tank/{tank_CHOLERSTEROL.png => tank_CHOLESTEROL.png} (100%) diff --git a/gradle.properties b/gradle.properties index 311c2314b..697f43ef4 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=4585 +mod_build_number=4592 credits=HbMinecraft, rodolphito (explosion algorithms), grangerave (explosion algorithms),\ \ Hoboy (textures, models), Doctor17 (russian localization), Drillgon200 (effects, models, porting),\ diff --git a/src/main/java/com/hbm/entity/EntityMappings.java b/src/main/java/com/hbm/entity/EntityMappings.java index 23a8e70fd..d5354b59a 100644 --- a/src/main/java/com/hbm/entity/EntityMappings.java +++ b/src/main/java/com/hbm/entity/EntityMappings.java @@ -14,6 +14,7 @@ import com.hbm.entity.mob.botprime.*; import com.hbm.entity.mob.siege.*; import com.hbm.entity.particle.*; import com.hbm.entity.projectile.*; +import com.hbm.entity.train.EntityRailCarRidable.SeatDummyEntity; import com.hbm.entity.train.TrainCargoTram; import com.hbm.main.MainRegistry; import com.hbm.util.Tuple.Quartet; @@ -209,7 +210,8 @@ public class EntityMappings { addEntity(EntitySawblade.class, "entity_stray_saw", 1000); addEntity(EntityChemical.class, "entity_chemthrower_splash", 1000); addEntity(EntityMist.class, "entity_mist", 1000); - + + addEntity(SeatDummyEntity.class, "entity_ntm_seat_dummy", 250, false); addEntity(TrainCargoTram.class, "entity_ntm_cargo_tram", 250, false); addMob(EntityCreeperNuclear.class, "entity_mob_nuclear_creeper", 0x204131, 0x75CE00); diff --git a/src/main/java/com/hbm/entity/mob/EntityCreeperGold.java b/src/main/java/com/hbm/entity/mob/EntityCreeperGold.java index d9ab7d3b6..70ad6fbe9 100644 --- a/src/main/java/com/hbm/entity/mob/EntityCreeperGold.java +++ b/src/main/java/com/hbm/entity/mob/EntityCreeperGold.java @@ -2,9 +2,11 @@ package com.hbm.entity.mob; import com.hbm.explosion.vanillant.ExplosionVNT; import com.hbm.explosion.vanillant.standard.*; +import com.hbm.items.ModItems; import net.minecraft.entity.monster.EntityCreeper; import net.minecraft.init.Blocks; +import net.minecraft.item.ItemStack; import net.minecraft.world.World; public class EntityCreeperGold extends EntityCreeper { @@ -19,8 +21,8 @@ public class EntityCreeperGold extends EntityCreeper { if(!this.worldObj.isRemote) { this.setDead(); - ExplosionVNT vnt = new ExplosionVNT(worldObj, posX, posY, posZ, 7); - vnt.setBlockAllocator(new BlockAllocatorBulkie(60)); + ExplosionVNT vnt = new ExplosionVNT(worldObj, posX, posY, posZ, this.getPowered() ? 14 : 7, this); + vnt.setBlockAllocator(new BlockAllocatorBulkie(60, this.getPowered() ? 32 : 16)); vnt.setBlockProcessor(new BlockProcessorStandard().withBlockEffect(new BlockMutatorBulkie(Blocks.gold_ore))); vnt.setEntityProcessor(new EntityProcessorStandard().withRangeMod(0.5F)); vnt.setPlayerProcessor(new PlayerProcessorStandard()); @@ -33,4 +35,13 @@ public class EntityCreeperGold extends EntityCreeper { public boolean getCanSpawnHere() { return super.getCanSpawnHere() && this.posY <= 40; } + + @Override + protected void dropFewItems(boolean byPlayer, int looting) { + + int amount = byPlayer ? 5 + rand.nextInt(6 + looting * 2) : 3; + for(int i = 0; i < amount; ++i) { + this.entityDropItem(new ItemStack(ModItems.crystal_gold), 0F); + } + } } diff --git a/src/main/java/com/hbm/entity/mob/EntityCreeperVolatile.java b/src/main/java/com/hbm/entity/mob/EntityCreeperVolatile.java index d957c7aca..17160b15e 100644 --- a/src/main/java/com/hbm/entity/mob/EntityCreeperVolatile.java +++ b/src/main/java/com/hbm/entity/mob/EntityCreeperVolatile.java @@ -3,8 +3,10 @@ package com.hbm.entity.mob; import com.hbm.blocks.ModBlocks; import com.hbm.explosion.vanillant.ExplosionVNT; import com.hbm.explosion.vanillant.standard.*; +import com.hbm.items.ModItems; import net.minecraft.entity.monster.EntityCreeper; +import net.minecraft.item.ItemStack; import net.minecraft.world.World; public class EntityCreeperVolatile extends EntityCreeper { @@ -19,8 +21,8 @@ public class EntityCreeperVolatile extends EntityCreeper { if(!this.worldObj.isRemote) { this.setDead(); - ExplosionVNT vnt = new ExplosionVNT(worldObj, posX, posY, posZ, 7); - vnt.setBlockAllocator(new BlockAllocatorBulkie(60)); + ExplosionVNT vnt = new ExplosionVNT(worldObj, posX, posY, posZ, this.getPowered() ? 14 : 7, this); + vnt.setBlockAllocator(new BlockAllocatorBulkie(60, this.getPowered() ? 32 : 16)); vnt.setBlockProcessor(new BlockProcessorStandard().withBlockEffect(new BlockMutatorBulkie(ModBlocks.block_slag, 1))); vnt.setEntityProcessor(new EntityProcessorStandard().withRangeMod(0.5F)); vnt.setPlayerProcessor(new PlayerProcessorStandard()); @@ -33,4 +35,10 @@ public class EntityCreeperVolatile extends EntityCreeper { public boolean getCanSpawnHere() { return super.getCanSpawnHere() && this.posY <= 40; } + + @Override + protected void dropFewItems(boolean byPlayer, int looting) { + this.entityDropItem(new ItemStack(ModItems.sulfur, 2 + rand.nextInt(3)), 0F); + this.entityDropItem(new ItemStack(ModItems.stick_tnt, 1 + rand.nextInt(2)), 0F); + } } diff --git a/src/main/java/com/hbm/entity/train/EntityRailCarBase.java b/src/main/java/com/hbm/entity/train/EntityRailCarBase.java index 750dc5765..39a31c625 100644 --- a/src/main/java/com/hbm/entity/train/EntityRailCarBase.java +++ b/src/main/java/com/hbm/entity/train/EntityRailCarBase.java @@ -3,21 +3,13 @@ package com.hbm.entity.train; import com.hbm.blocks.rail.IRailNTM; import com.hbm.blocks.rail.IRailNTM.RailContext; import com.hbm.blocks.rail.IRailNTM.TrackGauge; -import com.hbm.main.MainRegistry; -import com.hbm.packet.PacketDispatcher; -import com.hbm.packet.PlayerInformPacket; -import com.hbm.util.ChatBuilder; -import com.hbm.util.ParticleUtil; import com.hbm.util.fauxpointtwelve.BlockPos; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.block.Block; import net.minecraft.entity.Entity; -import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.util.ChatComponentText; -import net.minecraft.util.EnumChatFormatting; import net.minecraft.util.MathHelper; import net.minecraft.util.Vec3; import net.minecraft.world.World; @@ -96,9 +88,6 @@ public abstract class EntityRailCarBase extends Entity { this.velocityChanged = true; } } - - PacketDispatcher.wrapper.sendTo(new PlayerInformPacket(new ChatComponentText("Yaw: " + this.rotationYaw), 664, 3000), (EntityPlayerMP) worldObj.playerEntities.get(0)); - PacketDispatcher.wrapper.sendTo(new PlayerInformPacket(new ChatComponentText("MYaw: " + this.movementYaw), 665, 3000), (EntityPlayerMP) worldObj.playerEntities.get(0)); } } diff --git a/src/main/java/com/hbm/entity/train/EntityRailCarRidable.java b/src/main/java/com/hbm/entity/train/EntityRailCarRidable.java index 95dd63367..4fdb73ec4 100644 --- a/src/main/java/com/hbm/entity/train/EntityRailCarRidable.java +++ b/src/main/java/com/hbm/entity/train/EntityRailCarRidable.java @@ -1,30 +1,107 @@ package com.hbm.entity.train; +import net.minecraft.entity.Entity; import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.Vec3; import net.minecraft.world.World; public abstract class EntityRailCarRidable extends EntityRailCarBase { + public SeatDummyEntity[] passengerSeats; + public EntityRailCarRidable(World world) { super(world); + this.passengerSeats = new SeatDummyEntity[this.getPassengerSeats().length]; } @Override public boolean interactFirst(EntityPlayer player) { - if(this.riddenByEntity != null && this.riddenByEntity instanceof EntityPlayer && this.riddenByEntity != player) { - return true; - } else { - if(!this.worldObj.isRemote) { - player.mountEntity(this); + + if(worldObj.isRemote) return true; + + double nearestDist = Double.POSITIVE_INFINITY; + int nearestSeat = -1; + + Vec3[] seats = getPassengerSeats(); + for(int i = 0; i < seats.length; i++) { + + Vec3 seat = seats[i]; + if(seat == null) continue; + if(passengerSeats[i] != null) continue; + + seat.rotateAroundY((float) (-this.rotationYaw * Math.PI / 180)); + double x = posX + seat.xCoord; + double y = posY + seat.yCoord; + double z = posZ + seat.zCoord; + double dist = Vec3.createVectorHelper(player.posX - x, player.posY - y, player.posZ - z).lengthVector(); + + if(dist < nearestDist) { + nearestDist = dist; + nearestSeat = i; } - return true; } + + if(this.riddenByEntity == null) { + Vec3 seat = getRiderSeatPosition(); + seat.rotateAroundY((float) (-this.rotationYaw * Math.PI / 180)); + double x = posX + seat.xCoord; + double y = posY + seat.yCoord; + double z = posZ + seat.zCoord; + double dist = Vec3.createVectorHelper(player.posX - x, player.posY - y, player.posZ - z).lengthVector(); + + if(dist < nearestDist) { + nearestDist = dist; + nearestSeat = -1; + } + } + + if(nearestDist > 20) return true; + + if(nearestSeat == -1) { + player.mountEntity(this); + } else { + SeatDummyEntity dummySeat = new SeatDummyEntity(worldObj); + Vec3 passengerSeat = this.getPassengerSeats()[nearestSeat]; + passengerSeat.rotateAroundY((float) (-this.rotationYaw * Math.PI / 180)); + double x = posX + passengerSeat.xCoord; + double y = posY + passengerSeat.yCoord; + double z = posZ + passengerSeat.zCoord; + dummySeat.setPosition(x, y - 1, z); + passengerSeats[nearestSeat] = dummySeat; + worldObj.spawnEntityInWorld(dummySeat); + player.mountEntity(dummySeat); + } + + return true; } @Override public void onUpdate() { super.onUpdate(); + + if(!worldObj.isRemote) { + + Vec3[] seats = this.getPassengerSeats(); + for(int i = 0; i < passengerSeats.length; i++) { + SeatDummyEntity seat = passengerSeats[i]; + + if(seat != null) { + if(seat.riddenByEntity == null) { + passengerSeats[i] = null; + seat.setDead(); + } else { + Vec3 rot = seats[i]; + rot.rotateAroundY((float) (-this.rotationYaw * Math.PI / 180)); + double x = posX + rot.xCoord; + double y = posY + rot.yCoord; + double z = posZ + rot.zCoord; + seat.setPosition(x, y - 1, z); + seat.updateRiderPosition(); + } + } + } + } } @Override @@ -40,4 +117,21 @@ public abstract class EntityRailCarRidable extends EntityRailCarBase { /** Returns a Vec3 showing the relative position from the driver to the core */ public abstract Vec3 getRiderSeatPosition(); + + public abstract Vec3[] getPassengerSeats(); + + public static class SeatDummyEntity extends Entity { + public SeatDummyEntity(World world) { super(world); this.setSize(0.5F, 0.1F);} + @Override protected void entityInit() { } + @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 updateRiderPosition() { + if(this.riddenByEntity != null) { + this.riddenByEntity.setPosition(this.posX, this.posY + 1, this.posZ); + } + } + } } diff --git a/src/main/java/com/hbm/entity/train/TrainCargoTram.java b/src/main/java/com/hbm/entity/train/TrainCargoTram.java index 5f76989a4..c18e6ab23 100644 --- a/src/main/java/com/hbm/entity/train/TrainCargoTram.java +++ b/src/main/java/com/hbm/entity/train/TrainCargoTram.java @@ -31,7 +31,7 @@ public class TrainCargoTram extends EntityRailCarRidable { public double speed = 0; public static final double maxSpeed = 0.5; public static final double acceleration = 0.01; - public static final double deceleration = 0.75; + public static final double deceleration = 0.95; @Override public double getCurrentSpeed() { // in its current form, only call once per tick @@ -80,4 +80,17 @@ public class TrainCargoTram extends EntityRailCarRidable { return true; } + + @Override + public boolean shouldRiderSit() { + return true; + } + + @Override + public Vec3[] getPassengerSeats() { + return new Vec3[] { + Vec3.createVectorHelper(0.5, 1.75, -1.5), + Vec3.createVectorHelper(-0.5, 1.75, -1.5) + }; + } } diff --git a/src/main/java/com/hbm/lib/RefStrings.java b/src/main/java/com/hbm/lib/RefStrings.java index dcc814ea7..79c7e3689 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 (4585)"; + public static final String VERSION = "1.0.27 BETA (4592)"; //HBM's Beta Naming Convention: //V T (X) //V -> next release version diff --git a/src/main/java/com/hbm/main/MainRegistry.java b/src/main/java/com/hbm/main/MainRegistry.java index da251825c..b90f1903d 100644 --- a/src/main/java/com/hbm/main/MainRegistry.java +++ b/src/main/java/com/hbm/main/MainRegistry.java @@ -848,7 +848,7 @@ public class MainRegistry { new OreCave(ModBlocks.stone_resource, 0).setThreshold(1.5D).setRangeMult(20).setYLevel(30).setMaxRange(20).withFluid(ModBlocks.sulfuric_acid_block); //sulfur new OreCave(ModBlocks.stone_resource, 1).setThreshold(1.75D).setRangeMult(20).setYLevel(25).setMaxRange(20); //asbestos new OreLayer3D(ModBlocks.stone_resource, EnumStoneType.HEMATITE.ordinal()); - new BiomeCave().setThreshold(1.5D).setRangeMult(20).setYLevel(40).setMaxRange(20); + //new BiomeCave().setThreshold(1.5D).setRangeMult(20).setYLevel(40).setMaxRange(20); //new OreLayer(Blocks.coal_ore, 0.2F).setThreshold(4).setRangeMult(3).setYLevel(70); Compat.handleRailcraftNonsense(); diff --git a/src/main/java/com/hbm/main/ModEventHandlerClient.java b/src/main/java/com/hbm/main/ModEventHandlerClient.java index 9393a59c8..c3efd654e 100644 --- a/src/main/java/com/hbm/main/ModEventHandlerClient.java +++ b/src/main/java/com/hbm/main/ModEventHandlerClient.java @@ -210,7 +210,7 @@ public class ModEventHandlerClient { Minecraft.getMinecraft().renderEngine.bindTexture(Gui.icons); }*/ - List text = new ArrayList(); + /*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) { @@ -273,7 +273,7 @@ public class ModEventHandlerClient { } while(distanceToCover != 0); ILookOverlay.printGeneric(event, "DEBUG", 0xffff00, 0x4040000, text); - } + }*/ } /// HANLDE ANIMATION BUSES /// diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachinePress.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachinePress.java index 354fef320..599287701 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachinePress.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachinePress.java @@ -124,7 +124,12 @@ public class TileEntityMachinePress extends TileEntityMachineBase implements IGU if(slots[0] != null && burnTime < 200 && TileEntityFurnace.getItemBurnTime(slots[0]) > 0) { // less than one operation stored? burn more fuel! burnTime += TileEntityFurnace.getItemBurnTime(slots[0]); - this.decrStackSize(0, 1); + + if(slots[0].stackSize == 1 && slots[0].getItem().hasContainerItem(slots[0])) { + slots[0] = slots[0].getItem().getContainerItem(slots[0]).copy(); + } else { + this.decrStackSize(0, 1); + } this.markChanged(); } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityTesla.java b/src/main/java/com/hbm/tileentity/machine/TileEntityTesla.java index fcab378f7..f3c930d3e 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityTesla.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityTesla.java @@ -125,14 +125,16 @@ public class TileEntityTesla extends TileEntityMachineBase implements IEnergyUse continue; } + if(e instanceof EntityCreeper) { + ((EntityCreeper)e).getDataWatcher().updateObject(17, Byte.valueOf((byte)1)); + ret.add(new double[] {e.posX, e.posY + e.height / 2, e.posZ}); + continue; + } + if(!(e instanceof EntityPlayer && ArmorUtil.checkForFaraday((EntityPlayer)e))) if(e.attackEntityFrom(ModDamageSource.electricity, MathHelper.clamp_float(e.getMaxHealth() * 0.5F, 3, 20) / (float)targets.size())) worldObj.playSoundAtEntity(e, "hbm:weapon.tesla", 1.0F, 1.0F); - if(e instanceof EntityCreeper) { - ((EntityCreeper)e).getDataWatcher().updateObject(17, Byte.valueOf((byte)1)); - } - double offset = 0; if(source != null && e instanceof EntityPlayer && worldObj.isRemote) diff --git a/src/main/resources/assets/hbm/lang/de_DE.lang b/src/main/resources/assets/hbm/lang/de_DE.lang index 5e7a1b6f3..ad9fb7d74 100644 --- a/src/main/resources/assets/hbm/lang/de_DE.lang +++ b/src/main/resources/assets/hbm/lang/de_DE.lang @@ -504,9 +504,11 @@ entity.entity_ntm_radiation_blaze.name=Kernschmelze-Elementar entity.hbm.entity_ntm_ufo.name=Marsianisches Invasionsschiff entity.entity_mob_hunter_chopper.name=Jagdschrauber entity.entity_mob_mask_man.name=Maskenmann +entity.entity_mob_gold_creeper.name=Goldener Creeper entity.entity_mob_nuclear_creeper.name=Nuklearer Creeper entity.entity_mob_phosgene_creeper.name=Phosgen-Creeper entity.entity_mob_tainted_creeper.name=Verseuchter Creeper +entity.entity_mob_volatile_creeper.name=Instabiler Creeper entity.entity_taint_crab.name=Verseuchte Krabbe entity.entity_tesla_crab.name=Tesla-Krabbe entity.hbm.entity_balls_o_tron.name=Balls-O-Tron Prime diff --git a/src/main/resources/assets/hbm/lang/en_US.lang b/src/main/resources/assets/hbm/lang/en_US.lang index c35075e33..e2b518d48 100644 --- a/src/main/resources/assets/hbm/lang/en_US.lang +++ b/src/main/resources/assets/hbm/lang/en_US.lang @@ -950,9 +950,11 @@ entity.entity_ntm_radiation_blaze.name=Meltdown Elemental entity.hbm.entity_ntm_ufo.name=Martian Invasion Ship entity.entity_mob_hunter_chopper.name=Hunter Chopper entity.entity_mob_mask_man.name=Mask Man +entity.entity_mob_gold_creeper.name=Golden Creeper entity.entity_mob_nuclear_creeper.name=Nuclear Creeper entity.entity_mob_phosgene_creeper.name=Phosgene Creeper entity.entity_mob_tainted_creeper.name=Tainted Creeper +entity.entity_mob_volatile_creeper.name=Volatile Creeper entity.entity_taint_crab.name=Taint Crab entity.entity_tesla_crab.name=Tesla Crab entity.hbm.entity_balls_o_tron.name=Balls-O-Tron Prime diff --git a/src/main/resources/assets/hbm/textures/models/tank/tank_CHOLERSTEROL.png b/src/main/resources/assets/hbm/textures/models/tank/tank_CHOLESTEROL.png similarity index 100% rename from src/main/resources/assets/hbm/textures/models/tank/tank_CHOLERSTEROL.png rename to src/main/resources/assets/hbm/textures/models/tank/tank_CHOLESTEROL.png From bea23315bf53f189287ffac10c1014528fa573c4 Mon Sep 17 00:00:00 2001 From: Doctor17-git <60807716+Doctor17-git@users.noreply.github.com> Date: Sun, 7 May 2023 21:41:13 +0300 Subject: [PATCH 35/40] Updated ru_RU.lang updated russian localization --- src/main/resources/assets/hbm/lang/ru_RU.lang | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/main/resources/assets/hbm/lang/ru_RU.lang b/src/main/resources/assets/hbm/lang/ru_RU.lang index 1006e4d4f..f1d124f2e 100644 --- a/src/main/resources/assets/hbm/lang/ru_RU.lang +++ b/src/main/resources/assets/hbm/lang/ru_RU.lang @@ -4430,6 +4430,8 @@ entity.hbm.entity_balls_o_tron.name=Баллс-О-Трон Прайм entity.hbm.entity_balls_o_tron_seg.name=Баллс-О-Трон Сегмент entity.hbm.entity_ntm_ufo.name=Марсианский корабль вторжения entity.entity_ntm_dtrooper.name=Тёмный солдат +entity.entity_mob_gold_creeper.name=Золотой крипер +entity.entity_mob_volatile_creeper.name=Возгораемый крипер eye.respond.no=§c"Нет" eye.respond.nothing=...Оно не отвечает From 015ee2245aed052d3e723725adb9e0aa5b33e38a Mon Sep 17 00:00:00 2001 From: Boblet Date: Mon, 8 May 2023 16:16:59 +0200 Subject: [PATCH 36/40] inventories for trains --- .../hbm/blocks/rail/RailStandardCurve.java | 9 -- .../hbm/entity/train/EntityRailCarCargo.java | 141 ++++++++++++++++++ .../entity/train/EntityRailCarRidable.java | 2 +- .../com/hbm/entity/train/TrainCargoTram.java | 32 +++- 4 files changed, 173 insertions(+), 11 deletions(-) create mode 100644 src/main/java/com/hbm/entity/train/EntityRailCarCargo.java diff --git a/src/main/java/com/hbm/blocks/rail/RailStandardCurve.java b/src/main/java/com/hbm/blocks/rail/RailStandardCurve.java index 35a6a9b4a..46bc0bf4d 100644 --- a/src/main/java/com/hbm/blocks/rail/RailStandardCurve.java +++ b/src/main/java/com/hbm/blocks/rail/RailStandardCurve.java @@ -1,21 +1,12 @@ package com.hbm.blocks.rail; -import java.util.ArrayList; -import java.util.List; - import com.hbm.blocks.BlockDummyable; import com.hbm.lib.Library; -import com.hbm.packet.PacketDispatcher; -import com.hbm.packet.PlayerInformPacket; -import com.hbm.util.ParticleUtil; import com.hbm.util.fauxpointtwelve.BlockPos; import net.minecraft.block.material.Material; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.AxisAlignedBB; -import net.minecraft.util.ChatComponentText; import net.minecraft.util.MathHelper; import net.minecraft.util.Vec3; import net.minecraft.world.IBlockAccess; diff --git a/src/main/java/com/hbm/entity/train/EntityRailCarCargo.java b/src/main/java/com/hbm/entity/train/EntityRailCarCargo.java new file mode 100644 index 000000000..2e41f6d4d --- /dev/null +++ b/src/main/java/com/hbm/entity/train/EntityRailCarCargo.java @@ -0,0 +1,141 @@ +package com.hbm.entity.train; + +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.world.World; + +public abstract class EntityRailCarCargo extends EntityRailCarBase implements IInventory { + + protected String entityName; + protected ItemStack[] slots = new ItemStack[this.getSizeInventory()]; + + public EntityRailCarCargo(World world) { + super(world); + } + + @Override + public ItemStack getStackInSlot(int slot) { + return slots[slot]; + } + + @Override + public ItemStack decrStackSize(int slot, int amount) { + if(this.slots[slot] != null) { + ItemStack itemstack; + + if(this.slots[slot].stackSize <= amount) { + itemstack = this.slots[slot]; + this.slots[slot] = null; + return itemstack; + } else { + itemstack = this.slots[slot].splitStack(amount); + + if(this.slots[slot].stackSize == 0) { + this.slots[slot] = null; + } + + return itemstack; + } + } else { + return null; + } + } + + @Override + public ItemStack getStackInSlotOnClosing(int slot) { + if(this.slots[slot] != null) { + ItemStack itemstack = this.slots[slot]; + this.slots[slot] = null; + return itemstack; + } else { + return null; + } + } + + @Override + public void setInventorySlotContents(int slot, ItemStack stack) { + this.slots[slot] = stack; + + if(stack != null && stack.stackSize > this.getInventoryStackLimit()) { + stack.stackSize = this.getInventoryStackLimit(); + } + } + + @Override + public int getInventoryStackLimit() { + return 64; + } + + @Override + public void markDirty() { } + + @Override + public boolean isUseableByPlayer(EntityPlayer player) { + return this.isDead ? false : player.getDistanceSqToEntity(this) <= 64.0D; + } + + @Override + public void openInventory() { } + + @Override + public void closeInventory() { } + + @Override + public boolean isItemValidForSlot(int slot, ItemStack stack) { + return true; + } + + @Override + protected void writeEntityToNBT(NBTTagCompound nbt) { + super.writeEntityToNBT(nbt); + NBTTagList nbttaglist = new NBTTagList(); + + for(int i = 0; i < this.slots.length; ++i) { + if(this.slots[i] != null) { + NBTTagCompound nbttagcompound1 = new NBTTagCompound(); + nbttagcompound1.setByte("Slot", (byte) i); + this.slots[i].writeToNBT(nbttagcompound1); + nbttaglist.appendTag(nbttagcompound1); + } + } + + nbt.setTag("Items", nbttaglist); + } + + @Override + protected void readEntityFromNBT(NBTTagCompound nbt) { + super.readEntityFromNBT(nbt); + NBTTagList nbttaglist = nbt.getTagList("Items", 10); + this.slots = new ItemStack[this.getSizeInventory()]; + + for(int i = 0; i < nbttaglist.tagCount(); ++i) { + NBTTagCompound nbttagcompound1 = nbttaglist.getCompoundTagAt(i); + int j = nbttagcompound1.getByte("Slot") & 255; + + if(j >= 0 && j < this.slots.length) { + this.slots[j] = ItemStack.loadItemStackFromNBT(nbttagcompound1); + } + } + } + + @Override + public boolean hasCustomInventoryName() { + return this.entityName != null; + } + + public String getEntityName() { + return this.entityName; + } + + public void setEntityName(String name) { + this.entityName = name; + } + + @Override + public String getCommandSenderName() { + return this.entityName != null ? this.entityName : super.getCommandSenderName(); + } +} diff --git a/src/main/java/com/hbm/entity/train/EntityRailCarRidable.java b/src/main/java/com/hbm/entity/train/EntityRailCarRidable.java index 4fdb73ec4..3d2f6805b 100644 --- a/src/main/java/com/hbm/entity/train/EntityRailCarRidable.java +++ b/src/main/java/com/hbm/entity/train/EntityRailCarRidable.java @@ -6,7 +6,7 @@ import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.Vec3; import net.minecraft.world.World; -public abstract class EntityRailCarRidable extends EntityRailCarBase { +public abstract class EntityRailCarRidable extends EntityRailCarCargo { public SeatDummyEntity[] passengerSeats; diff --git a/src/main/java/com/hbm/entity/train/TrainCargoTram.java b/src/main/java/com/hbm/entity/train/TrainCargoTram.java index c18e6ab23..7761a76e0 100644 --- a/src/main/java/com/hbm/entity/train/TrainCargoTram.java +++ b/src/main/java/com/hbm/entity/train/TrainCargoTram.java @@ -1,14 +1,21 @@ package com.hbm.entity.train; import com.hbm.blocks.rail.IRailNTM.TrackGauge; +import com.hbm.inventory.container.ContainerCrateSteel; +import com.hbm.inventory.gui.GUICrateSteel; +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.util.DamageSource; import net.minecraft.util.MathHelper; import net.minecraft.util.Vec3; import net.minecraft.world.World; -public class TrainCargoTram extends EntityRailCarRidable { +public class TrainCargoTram extends EntityRailCarRidable implements IGUIProvider { /* * @@ -93,4 +100,27 @@ public class TrainCargoTram extends EntityRailCarRidable { Vec3.createVectorHelper(-0.5, 1.75, -1.5) }; } + + @Override + public int getSizeInventory() { + return 27; + } + + @Override + public String getInventoryName() { + return this.hasCustomInventoryName() ? this.getEntityName() : "container.trainTram"; + } + + @Override + public Container provideContainer(int ID, EntityPlayer player, World world, int x, int y, int z) { + //return new ContainerTrainCargoTram(player.inventory, (TrainCargoTram)player.worldObj.getEntityByID(x)); + return null; + } + + @Override + @SideOnly(Side.CLIENT) + public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { + //return new GUITrainCargoTram(player.inventory, (TrainCargoTram) player.worldObj.getEntityByID(x)); + return null; + } } From 73911abbd6884ea0f813e532dfcfcba50f8db1fe Mon Sep 17 00:00:00 2001 From: Bob Date: Mon, 8 May 2023 23:52:09 +0200 Subject: [PATCH 37/40] biblically accurate tram model --- .../standard/BlockMutatorBulkie.java | 2 +- .../assets/hbm/models/vehicles/tram.obj | 1255 +++++++++++------ .../assets/hbm/textures/models/trains/ow.png | Bin 0 -> 79618 bytes .../hbm/textures/models/trains/tram.png | Bin 0 -> 1148 bytes 4 files changed, 843 insertions(+), 414 deletions(-) create mode 100644 src/main/resources/assets/hbm/textures/models/trains/ow.png create mode 100644 src/main/resources/assets/hbm/textures/models/trains/tram.png diff --git a/src/main/java/com/hbm/explosion/vanillant/standard/BlockMutatorBulkie.java b/src/main/java/com/hbm/explosion/vanillant/standard/BlockMutatorBulkie.java index 5b89ee88e..8d7a2d77f 100644 --- a/src/main/java/com/hbm/explosion/vanillant/standard/BlockMutatorBulkie.java +++ b/src/main/java/com/hbm/explosion/vanillant/standard/BlockMutatorBulkie.java @@ -21,7 +21,7 @@ public class BlockMutatorBulkie implements IBlockMutator { @Override public void mutatePre(ExplosionVNT explosion, Block block, int meta, int x, int y, int z) { - if(!block.isBlockNormalCube()) return; + if(!block.isNormalCube()) return; Vec3 vec = Vec3.createVectorHelper(x + 0.5 - explosion.posX, y + 0.5 - explosion.posY, z + 0.5 - explosion.posZ); if(vec.lengthVector() >= explosion.size - 0.5) { explosion.world.setBlock(x, y, z, metaBlock.block, metaBlock.meta, 3); diff --git a/src/main/resources/assets/hbm/models/vehicles/tram.obj b/src/main/resources/assets/hbm/models/vehicles/tram.obj index 38a567ec5..7ec0c8733 100644 --- a/src/main/resources/assets/hbm/models/vehicles/tram.obj +++ b/src/main/resources/assets/hbm/models/vehicles/tram.obj @@ -1,425 +1,854 @@ -# Blender v2.79 (sub 0) OBJ File: 'tram.blend' +# Blender v2.79 (sub 0) OBJ File: 'tram_new.blend' # www.blender.org o Plane -v -1.000000 0.500000 2.500000 -v 1.000000 0.500000 2.500000 -v -1.000000 0.500000 -2.500000 -v 1.000000 0.500000 -2.500000 v -1.000000 0.250000 2.500000 v 1.000000 0.250000 2.500000 v -1.000000 0.250000 -2.500000 v 1.000000 0.250000 -2.500000 -v -1.000000 0.000000 2.250000 -v 1.000000 0.000000 2.250000 -v -1.000000 0.000000 -2.250000 -v 1.000000 0.000000 -2.250000 -v -0.125000 0.500000 1.000000 -v 0.875000 0.500000 1.000000 -v -0.125000 1.500000 1.000000 -v 0.875000 1.500000 1.000000 -v 0.125000 0.500000 2.000000 -v -0.125000 0.500000 1.750000 -v 0.875000 0.500000 1.750000 -v 0.625000 0.500000 2.000000 -v -0.125000 1.500000 1.750000 -v 0.125000 1.500000 2.000000 -v 0.625000 1.500000 2.000000 -v 0.875000 1.500000 1.750000 -v -0.625000 0.750000 2.437500 -v -0.625000 0.750000 2.312500 -v 0.625000 0.750000 2.312500 -v 0.625000 0.750000 2.437500 -v 0.713388 0.713388 2.312500 -v 0.713388 0.713388 2.437500 -v 0.750000 0.625000 2.312500 -v 0.750000 0.625000 2.437500 -v 0.713388 0.536612 2.312500 -v 0.713388 0.536612 2.437500 -v 0.625000 0.500000 2.312500 -v 0.625000 0.500000 2.437500 -v 0.536612 0.536612 2.312500 -v 0.536612 0.536612 2.437500 -v 0.500000 0.625000 2.312500 -v 0.500000 0.625000 2.437500 -v 0.536612 0.713388 2.312500 -v 0.536612 0.713388 2.437500 -v -0.536612 0.713388 2.312500 -v -0.536612 0.713388 2.437500 -v -0.500000 0.625000 2.312500 -v -0.500000 0.625000 2.437500 -v -0.536612 0.536612 2.312500 -v -0.536612 0.536612 2.437500 -v -0.625000 0.500000 2.312500 -v -0.625000 0.500000 2.437500 -v -0.713388 0.536612 2.312500 -v -0.713388 0.536612 2.437500 -v -0.750000 0.625000 2.312500 -v -0.750000 0.625000 2.437500 -v -0.713388 0.713388 2.312500 -v -0.713388 0.713388 2.437500 -v 0.375000 0.500000 2.312500 -v 0.875000 0.500000 2.312500 -v 0.375000 0.500000 2.187500 -v 0.875000 0.500000 2.187500 -v 0.375000 0.750000 2.187500 -v 0.375000 0.750000 2.312500 -v 0.875000 0.750000 2.312500 -v 0.875000 0.750000 2.187500 -v -0.875000 0.500000 2.312500 -v -0.375000 0.500000 2.312500 -v -0.875000 0.500000 2.187500 -v -0.375000 0.500000 2.187500 -v -0.875000 0.750000 2.187500 -v -0.875000 0.750000 2.312500 -v -0.375000 0.750000 2.312500 -v -0.375000 0.750000 2.187500 -v -0.875000 0.500000 1.875000 -v -0.125000 0.500000 1.875000 -v -0.875000 0.500000 1.125000 -v -0.125000 0.500000 1.125000 -v -0.875000 1.000000 1.125000 -v -0.875000 1.000000 1.875000 -v -0.125000 1.000000 1.875000 -v -0.125000 1.000000 1.125000 -v -0.750000 0.500000 -2.250000 -v 0.750000 0.500000 -2.250000 -v -0.750000 0.500000 -1.750000 -v 0.750000 0.500000 -1.750000 -v -0.750000 1.000000 -2.250000 -v 0.750000 1.000000 -2.250000 -v -0.750000 1.000000 -1.750000 -v 0.750000 1.000000 -1.750000 -vt 0.000000 0.833333 -vt 0.320000 0.000000 -vt 0.320000 0.833333 -vt 0.840000 0.333333 -vt 0.800000 0.000000 -vt 0.840000 0.000000 -vt 0.720000 0.833333 -vt 0.720000 0.000000 -vt 0.800000 0.041667 -vt 0.880000 0.333333 -vt 0.880000 0.000000 -vt 0.920000 0.333333 -vt 0.880000 0.000000 -vt 0.920000 0.000000 -vt 0.320000 0.000000 -vt 0.640000 0.750000 -vt 0.320000 0.750000 -vt 0.320000 0.791666 -vt 0.640000 0.791667 -vt 0.640000 0.833333 -vt 0.640000 0.000000 -vt 0.720000 0.041667 -vt 0.800000 0.875000 -vt 0.880000 0.708333 -vt 0.880000 0.875000 -vt 0.640000 0.958333 -vt 0.480000 0.833333 -vt 0.640000 0.833333 -vt 0.280000 1.000000 -vt 0.160000 1.000000 -vt 0.160000 0.833333 -vt 0.160000 0.833333 -vt 0.000000 1.000000 -vt 0.000000 0.833333 -vt 0.640000 0.791667 -vt 0.480000 0.916667 -vt 0.320000 0.958333 -vt 0.320000 0.916667 -vt 0.320000 0.791667 -vt 0.480000 0.791667 -vt 0.760000 0.833333 -vt 0.800000 0.916666 -vt 0.760000 0.916667 -vt 0.906131 0.580162 -vt 0.880000 0.568887 -vt 0.890824 0.541667 -vt 0.400000 0.973065 -vt 0.420000 0.958333 -vt 0.420000 0.973065 -vt 0.320000 1.000000 -vt 0.340000 0.958333 -vt 0.340000 1.000000 -vt 0.460000 0.987796 -vt 0.480000 0.973065 -vt 0.480000 0.987796 -vt 0.360000 0.958333 -vt 0.340000 0.973065 -vt 0.340000 0.958333 -vt 0.760000 0.996828 -vt 0.780000 0.955161 -vt 0.780000 0.996828 -vt 0.380000 0.973065 -vt 0.400000 0.958333 -vt 0.400000 0.973065 -vt 0.360000 0.973065 -vt 0.340000 0.987796 -vt 0.780000 0.996828 -vt 0.800000 0.955161 -vt 0.800000 0.996828 -vt 0.380000 0.987796 -vt 0.400000 0.987796 -vt 0.380000 0.987796 -vt 0.360000 0.973065 -vt 0.380000 0.973065 -vt 0.940000 0.583333 -vt 0.960000 0.666667 -vt 0.940000 0.666667 -vt 0.440000 0.973065 -vt 0.460000 0.958333 -vt 0.460000 0.973065 -vt 0.380000 0.958333 -vt 0.420000 0.987796 -vt 0.440000 0.973065 -vt 0.440000 0.987796 -vt 0.440000 0.987796 -vt 0.460000 0.987796 -vt 0.916955 0.571129 -vt 0.936955 0.556398 -vt 0.936955 0.571129 -vt 0.770824 0.916666 -vt 0.796955 0.927941 -vt 0.786131 0.955161 -vt 0.420000 0.973065 -vt 0.440000 0.958333 -vt 0.916955 0.556398 -vt 0.936955 0.541667 -vt 0.920000 0.250000 -vt 0.960000 0.333333 -vt 0.920000 0.333333 -vt 0.460000 0.973065 -vt 0.480000 0.958333 -vt 0.400000 0.987796 -vt 0.420000 0.987796 -vt 0.920000 0.083333 -vt 0.960000 0.166667 -vt 0.920000 0.166667 -vt 0.940000 0.666667 -vt 0.920000 0.708333 -vt 0.920000 0.666667 -vt 0.920000 0.583333 -vt 0.940000 0.666667 -vt 0.920000 0.666667 -vt 0.960000 0.250000 -vt 0.920000 0.166667 -vt 0.960000 0.166667 -vt 0.800000 0.708333 -vt 0.920000 0.583333 -vt 0.920000 0.708333 -vt 0.640000 0.958333 -vt 0.760000 0.833333 -vt 0.760000 0.958333 -vt 0.960000 0.458333 -vt 0.880000 0.333333 -vt 0.960000 0.333333 -vt 0.960000 0.958333 -vt 0.880000 0.833333 -vt 0.960000 0.833333 -vt 0.880000 1.000000 -vt 0.800000 0.875000 -vt 0.880000 0.875000 -vt 0.880000 0.708333 -vt 0.960000 0.833333 -vt 0.880000 0.833333 -vt 1.000000 0.083333 -vt 0.920000 0.000000 -vt 1.000000 0.000000 -vt 0.880000 0.541667 -vt 0.960000 0.458333 -vt 0.960000 0.541667 -vt 0.800000 0.583333 -vt 0.880000 0.333333 -vt 0.880000 0.583333 -vt 0.000000 0.000000 -vt 0.800000 0.333333 -vt 0.760000 0.000000 -vt 0.800000 0.791666 -vt 0.760000 0.833333 -vt 0.880000 0.333333 -vt 0.640000 0.000000 -vt 0.680000 0.000000 -vt 0.720000 0.791667 -vt 0.680000 0.833333 -vt 0.800000 0.708333 -vt 0.480000 0.958333 -vt 0.280000 0.833333 -vt 0.320000 0.875000 -vt 0.320000 0.958333 -vt 0.160000 1.000000 -vt 0.480000 0.791667 -vt 0.480000 0.958333 -vt 0.800000 0.833333 -vt 0.916955 0.552942 -vt 0.916955 0.568887 -vt 0.890824 0.580162 -vt 0.880000 0.552942 -vt 0.906131 0.541667 -vt 0.400000 0.958333 -vt 0.320000 0.958333 -vt 0.760000 0.955161 -vt 0.380000 0.958333 -vt 0.360000 0.987796 -vt 0.780000 0.955161 -vt 0.960000 0.583333 -vt 0.440000 0.958333 -vt 0.360000 0.958333 -vt 0.760000 0.943886 -vt 0.760000 0.927941 -vt 0.786131 0.916666 -vt 0.796955 0.943886 -vt 0.770824 0.955161 -vt 0.420000 0.958333 -vt 0.916955 0.541667 -vt 0.960000 0.250000 -vt 0.460000 0.958333 -vt 0.960000 0.083333 -vt 0.940000 0.708333 -vt 0.940000 0.583333 -vt 0.920000 0.250000 -vt 0.800000 0.583333 -vt 0.640000 0.833333 -vt 0.880000 0.458333 -vt 0.880000 0.958333 -vt 0.800000 1.000000 -vt 0.960000 0.708333 -vt 0.920000 0.083333 -vt 0.880000 0.458333 -vt 0.800000 0.333333 +v -1.000000 0.750000 -2.500000 +v -1.000000 0.750000 2.500000 +v 1.000000 0.750000 2.500000 +v 1.000000 0.750000 -2.500000 +v 0.562500 0.375000 2.562500 +v 0.562500 0.875000 2.562500 +v 0.562500 0.375000 2.062500 +v 0.562500 0.875000 2.062500 +v 1.062500 0.375000 2.562500 +v 1.062500 0.875000 2.562500 +v 1.062500 0.375000 2.062500 +v 1.062500 0.875000 2.062500 +v -1.062500 0.375000 2.562500 +v -1.062500 0.875000 2.562500 +v -1.062500 0.375000 2.062500 +v -1.062500 0.875000 2.062500 +v -0.562500 0.375000 2.562500 +v -0.562500 0.875000 2.562500 +v -0.562500 0.375000 2.062500 +v -0.562500 0.875000 2.062500 +v 0.562500 0.375000 -1.812500 +v 0.562500 0.875000 -1.812500 +v 0.562500 0.375000 -2.562500 +v 0.562500 0.875000 -2.562500 +v 1.062500 0.375000 -1.812500 +v 1.062500 0.875000 -1.812500 +v 1.062500 0.375000 -2.562500 +v 1.062500 0.875000 -2.562500 +v -1.062500 0.375000 -1.812500 +v -1.062500 0.875000 -1.812500 +v -1.062500 0.375000 -2.562500 +v -1.062500 0.875000 -2.562500 +v -0.562500 0.375000 -1.812500 +v -0.562500 0.875000 -1.812500 +v -0.562500 0.375000 -2.562500 +v -0.562500 0.875000 -2.562500 +v 0.875000 0.750000 1.062500 +v -0.125000 0.750000 1.062500 +v 0.000000 1.625000 1.187500 +v 0.750000 1.625000 1.187500 +v 0.000000 0.750000 1.187500 +v 0.750000 0.750000 1.187500 +v 0.875000 0.750000 1.875000 +v 0.687500 0.750000 2.062500 +v 0.062500 0.750000 2.062500 +v -0.125000 0.750000 1.875000 +v 0.687500 1.750000 2.062500 +v 0.875000 1.750000 1.875000 +v -0.125000 1.750000 1.875000 +v 0.062500 1.750000 2.062500 +v 0.000000 1.625000 1.875000 +v 0.750000 1.625000 1.875000 +v 0.687500 1.750000 1.937500 +v 0.062500 1.750000 1.937500 +v -0.875000 0.750000 1.250000 +v 0.750000 1.750000 1.875000 +v -0.875000 0.750000 1.750000 +v 0.000000 1.750000 1.875000 +v 0.687500 1.625000 1.937500 +v 0.062500 1.625000 1.937500 +v 0.000000 0.750000 1.062500 +v 0.750000 0.750000 1.062500 +v 0.875000 1.500000 1.062500 +v 0.875000 1.750000 1.187500 +v -0.125000 1.750000 1.187500 +v -0.125000 1.500000 1.062500 +v 0.750000 1.750000 1.187500 +v 0.750000 1.500000 1.062500 +v -0.187500 0.750000 1.750000 +v 0.000000 1.500000 1.062500 +v 0.000000 1.750000 1.187500 +v -0.187500 0.750000 1.250000 +v -0.187500 0.937500 1.250000 +v -0.187500 0.937500 1.750000 +v -0.875000 0.937500 1.250000 +v -0.875000 0.937500 1.750000 +v -0.187500 1.062500 1.375000 +v -0.187500 1.062500 1.625000 +v -0.875000 1.062500 1.375000 +v -0.875000 1.062500 1.625000 +v 0.937500 0.750000 1.000000 +v 0.812500 0.750000 1.000000 +v 0.937500 0.750000 0.875000 +v 0.812500 0.750000 0.875000 +v 0.812500 1.750000 0.875000 +v 0.937500 1.750000 0.875000 +v 0.812500 1.750000 1.000000 +v 0.937500 1.750000 1.000000 +v -0.812500 0.750000 0.750000 +v -0.937500 0.750000 0.750000 +v -0.812500 0.750000 0.625000 +v -0.937500 0.750000 0.625000 +v -0.812500 1.375000 0.750000 +v -0.937500 1.375000 0.750000 +v -0.812500 1.500000 0.625000 +v -0.937500 1.500000 0.625000 +v -0.812500 1.375000 1.125000 +v -0.937500 1.375000 1.250000 +v -0.812500 1.500000 1.125000 +v -0.937500 1.500000 1.250000 +v -0.125000 1.375000 1.125000 +v -0.125000 1.375000 1.250000 +v -0.125000 1.500000 1.125000 +v -0.125000 1.500000 1.250000 +v 0.875000 0.250000 -1.625000 +v 0.750000 0.250000 1.750000 +v 0.750000 0.073223 -1.676777 +v 0.875000 0.250000 -1.250000 +v 0.875000 0.250000 1.750000 +v 0.750000 0.073223 1.323223 +v 0.750000 0.000000 1.500000 +v 0.750000 0.073223 1.676777 +v 0.750000 0.250000 -1.250000 +v 0.750000 0.250000 1.250000 +v 0.875000 0.250000 -1.375000 +v 0.875000 0.073223 -1.323223 +v 0.875000 0.250000 1.250000 +v 0.875000 0.073223 1.323223 +v 0.875000 0.000000 1.500000 +v 0.875000 0.073223 1.676777 +v 0.875000 0.250000 1.625000 +v 0.875000 0.000000 -1.500000 +v 0.875000 0.073223 -1.676777 +v 0.875000 0.250000 -1.750000 +v 0.875000 0.250000 1.375000 +v 0.875000 0.161612 1.411612 +v 0.875000 0.125000 1.500000 +v 0.875000 0.161612 1.588388 +v 0.937500 0.250000 1.625000 +v 0.750000 0.250000 -1.750000 +v 0.750000 0.073223 -1.323223 +v 0.750000 0.000000 -1.500000 +v 0.937500 0.250000 1.375000 +v 0.937500 0.161612 1.411612 +v 0.937500 0.125000 1.500000 +v 0.937500 0.161612 1.588388 +v 0.875000 0.161612 -1.588388 +v 0.875000 0.125000 -1.500000 +v 0.875000 0.161612 -1.411612 +v 0.937500 0.250000 -1.375000 +v 0.937500 0.250000 -1.625000 +v 0.937500 0.161612 -1.588388 +v 0.937500 0.125000 -1.500000 +v 0.937500 0.161612 -1.411612 +v -0.750000 0.250000 2.000000 +v 0.750000 0.250000 2.000000 +v -0.750000 0.250000 -2.000000 +v 0.750000 0.250000 -2.000000 +v -0.750000 0.125000 -1.875000 +v -0.750000 0.125000 1.875000 +v 0.750000 0.125000 1.875000 +v 0.750000 0.125000 -1.875000 +v -0.875000 0.250000 1.625000 +v -0.750000 0.250000 -1.750000 +v -0.750000 0.073223 1.676777 +v -0.875000 0.250000 1.250000 +v -0.875000 0.250000 -1.750000 +v -0.750000 0.073223 -1.323223 +v -0.750000 0.000000 -1.500000 +v -0.750000 0.073223 -1.676777 +v -0.750000 0.250000 1.250000 +v -0.750000 0.250000 -1.250000 +v -0.875000 0.250000 1.375000 +v -0.875000 0.073223 1.323223 +v -0.875000 0.250000 -1.250000 +v -0.875000 0.073223 -1.323223 +v -0.875000 0.000000 -1.500000 +v -0.875000 0.073223 -1.676777 +v -0.875000 0.250000 -1.625000 +v -0.875000 0.000000 1.500000 +v -0.875000 0.073223 1.676777 +v -0.875000 0.250000 1.750000 +v -0.875000 0.250000 -1.375000 +v -0.875000 0.161612 -1.411611 +v -0.875000 0.125000 -1.500000 +v -0.875000 0.161612 -1.588388 +v -0.937500 0.250000 -1.625000 +v -0.750000 0.250000 1.750000 +v -0.750000 0.073223 1.323223 +v -0.750000 0.000000 1.500000 +v -0.937500 0.250000 -1.375000 +v -0.937500 0.161612 -1.411611 +v -0.937500 0.125000 -1.500000 +v -0.937500 0.161612 -1.588388 +v -0.875000 0.161612 1.588389 +v -0.875000 0.125000 1.500000 +v -0.875000 0.161612 1.411612 +v -0.937500 0.250000 1.375000 +v -0.937500 0.250000 1.625000 +v -0.937500 0.161612 1.588389 +v -0.937500 0.125000 1.500000 +v -0.937500 0.161612 1.411612 +vt 0.543210 0.090909 +vt 0.049383 0.454545 +vt 0.049383 0.090909 +vt 0.049383 0.090909 +vt 0.543210 0.454545 +vt 0.049383 0.454545 +vt 0.543210 0.000000 +vt 0.049383 0.000000 +vt 0.049383 0.545455 +vt 0.543210 0.545455 +vt 0.592593 0.454545 +vt 0.543210 0.090909 +vt 0.592593 0.090909 +vt -0.000000 0.090909 +vt -0.000000 0.454545 +vt 0.049383 0.727273 +vt -0.000000 0.636364 +vt 0.049383 0.636364 +vt 0.049383 0.818182 +vt 0.098765 0.909091 +vt 0.049383 0.909091 +vt 0.148148 0.727273 +vt 0.098765 0.636364 +vt 0.148148 0.636364 +vt 0.098765 0.727273 +vt 0.098765 0.545455 +vt 0.049383 0.545455 +vt 0.098765 0.818182 +vt 0.049383 0.727273 +vt -0.000000 0.636364 +vt 0.049383 0.636364 +vt 0.049383 0.818182 +vt 0.098765 0.909091 +vt 0.049383 0.909091 +vt 0.148148 0.727273 +vt 0.098765 0.636364 +vt 0.148148 0.636364 +vt 0.098765 0.727273 +vt 0.098765 0.545455 +vt 0.049383 0.545455 +vt 0.098765 0.818182 +vt 0.345679 0.772727 +vt 0.271605 0.681818 +vt 0.345679 0.681818 +vt 0.271605 0.772727 +vt 0.222222 0.681818 +vt 0.222222 0.772727 +vt 0.148148 0.681818 +vt 0.222222 0.909091 +vt 0.271605 1.000000 +vt 0.222222 1.000000 +vt 0.271605 0.545455 +vt 0.345679 0.772727 +vt 0.271605 0.681818 +vt 0.345679 0.681818 +vt 0.271605 0.772727 +vt 0.222222 0.681818 +vt 0.222222 0.772727 +vt 0.148148 0.681818 +vt 0.222222 0.909091 +vt 0.271605 1.000000 +vt 0.222222 1.000000 +vt 0.271605 0.545455 +vt 0.987654 0.318182 +vt 0.913580 0.477273 +vt 0.913580 0.318182 +vt 0.567901 0.454545 +vt 0.555556 0.590909 +vt 0.555556 0.454545 +vt 0.777778 0.318182 +vt 0.716049 0.500000 +vt 0.716901 0.318679 +vt 0.697531 0.500000 +vt 0.629630 0.534091 +vt 0.629630 0.500000 +vt 0.777778 0.522727 +vt 0.716049 0.522727 +vt 0.697531 0.318182 +vt 0.796296 0.500000 +vt 0.777778 0.500000 +vt 0.864198 0.500000 +vt 0.796296 0.534091 +vt 0.617284 0.454545 +vt 0.604938 0.318182 +vt 0.617284 0.318182 +vt 0.901235 0.318182 +vt 0.888889 0.454545 +vt 0.888889 0.318182 +vt 0.709877 0.534091 +vt 0.697531 0.534091 +vt 0.783951 0.534091 +vt 0.796296 0.534091 +vt 0.919753 0.636364 +vt 0.981481 0.613636 +vt 0.981481 0.636364 +vt 0.913580 0.636364 +vt 0.919753 0.613636 +vt 0.913580 0.602273 +vt 0.987654 0.477273 +vt 0.987654 0.636364 +vt 1.000000 0.477273 +vt 0.987654 0.602273 +vt 0.876543 0.454545 +vt 0.901235 0.602273 +vt 0.604938 0.454545 +vt 0.592593 0.477273 +vt 0.592593 0.318182 +vt 0.876543 0.500000 +vt 0.604938 0.500000 +vt 0.623457 0.659091 +vt 0.691358 0.636364 +vt 0.691358 0.659091 +vt 0.691358 0.534091 +vt 0.623457 0.568182 +vt 0.623457 0.534091 +vt 0.722222 0.568182 +vt 0.722222 0.659091 +vt 0.506173 0.727273 +vt 0.518519 0.750000 +vt 0.506173 0.750000 +vt 0.623457 0.693182 +vt 0.691358 0.693182 +vt 0.691358 0.590909 +vt 0.623457 0.636364 +vt 0.623457 0.590909 +vt 0.506173 0.545455 +vt 0.493827 0.727273 +vt 0.493827 0.545455 +vt 0.518519 0.545455 +vt 0.592593 0.659091 +vt 0.592593 0.568182 +vt 0.543210 0.545455 +vt 0.530864 0.727273 +vt 0.530864 0.545455 +vt 0.518519 0.727273 +vt 0.580247 0.568182 +vt 0.567901 0.590909 +vt 0.592593 0.568182 +vt 0.580247 0.454545 +vt 0.592593 0.454545 +vt 0.543210 0.568182 +vt 0.543210 0.454545 +vt 0.592593 0.681818 +vt 0.580247 0.613636 +vt 0.592593 0.613636 +vt 0.555556 0.681818 +vt 0.543210 0.613636 +vt 0.567901 0.704545 +vt 0.580247 0.704545 +vt 0.567901 0.852273 +vt 0.555556 0.727273 +vt 0.543210 0.852273 +vt 0.543210 0.727273 +vt 0.592593 0.727273 +vt 0.580247 0.852273 +vt 0.555556 0.852273 +vt 0.456790 0.568182 +vt 0.438272 0.590909 +vt 0.438272 0.568182 +vt 0.456790 0.568182 +vt 0.438272 0.590909 +vt 0.438272 0.568182 +vt 0.419210 0.590495 +vt 0.377874 0.558974 +vt 0.394996 0.545918 +vt 0.493827 0.568182 +vt 0.475309 0.590909 +vt 0.475309 0.568182 +vt 0.349457 0.574879 +vt 0.358021 0.568349 +vt 0.366584 0.574879 +vt 0.469136 0.590909 +vt 0.456790 0.590909 +vt 0.419753 0.568182 +vt 0.432099 0.590909 +vt 0.419753 0.590909 +vt 0.469136 0.590909 +vt 0.456790 0.590909 +vt 0.419753 0.568182 +vt 0.432099 0.590909 +vt 0.419753 0.590909 +vt 0.493827 0.568182 +vt 0.475309 0.590909 +vt 0.475309 0.568182 +vt 0.349457 0.574879 +vt 0.358021 0.568349 +vt 0.366584 0.574879 +vt 0.377874 0.558974 +vt 0.394996 0.545918 +vt 0.412118 0.558974 +vt 0.975309 0.022727 +vt 0.604938 0.295455 +vt 0.604938 0.022727 +vt 0.987654 0.295455 +vt 0.987654 0.022727 +vt 0.592593 0.022727 +vt 0.592593 0.295455 +vt 0.592593 0.318182 +vt 0.975309 0.295455 +vt 0.987654 0.318182 +vt 0.987654 0.000000 +vt 0.592593 0.000000 +vt 0.456790 0.568182 +vt 0.438272 0.590909 +vt 0.438272 0.568182 +vt 0.456790 0.568182 +vt 0.438272 0.590909 +vt 0.438272 0.568182 +vt 0.419210 0.590495 +vt 0.377874 0.558974 +vt 0.394996 0.545918 +vt 0.493827 0.568182 +vt 0.475309 0.590909 +vt 0.475309 0.568182 +vt 0.358021 0.568349 +vt 0.366584 0.574879 +vt 0.370132 0.590644 +vt 0.475309 0.568182 +vt 0.456790 0.590909 +vt 0.419753 0.590909 +vt 0.419753 0.568182 +vt 0.456790 0.590909 +vt 0.419753 0.590909 +vt 0.419753 0.568182 +vt 0.493827 0.568182 +vt 0.475309 0.590909 +vt 0.358021 0.568349 +vt 0.366584 0.574879 +vt 0.370132 0.590644 +vt 0.377874 0.558974 +vt 0.394996 0.545918 +vt 0.412118 0.558974 +vt 0.543210 0.454545 +vt -0.000000 0.727273 +vt -0.000000 0.727273 +vt 0.148148 0.772727 +vt 0.271605 0.909091 +vt 0.222222 0.545455 +vt 0.148148 0.772727 +vt 0.271605 0.909091 +vt 0.222222 0.545455 +vt 0.697531 0.534091 +vt 0.796296 0.318182 +vt 0.864198 0.534091 +vt 0.901235 0.477273 +vt 0.901235 0.500000 +vt 0.913580 0.613636 +vt 0.987654 0.613636 +vt 1.000000 0.602273 +vt 0.876543 0.318182 +vt 0.901235 0.477273 +vt 0.592593 0.500000 +vt 0.888889 0.500000 +vt 0.617284 0.500000 +vt 0.691358 0.568182 +vt 0.703704 0.659091 +vt 0.703704 0.568182 +vt 0.611111 0.568182 +vt 0.611111 0.659091 +vt 0.543210 0.727273 +vt 0.543210 0.681818 +vt 0.592593 0.852273 +vt 0.450617 0.590909 +vt 0.450617 0.590909 +vt 0.412118 0.558974 +vt 0.370781 0.590495 +vt 0.487654 0.590909 +vt 0.370132 0.590644 +vt 0.345910 0.590644 +vt 0.487654 0.590909 +vt 0.370132 0.590644 +vt 0.345910 0.590644 +vt 0.419210 0.590495 +vt 0.370781 0.590495 +vt 0.450617 0.590909 +vt 0.450617 0.590909 +vt 0.412118 0.558974 +vt 0.370781 0.590495 +vt 0.487654 0.590909 +vt 0.345910 0.590644 +vt 0.349457 0.574879 +vt 0.469136 0.590909 +vt 0.432099 0.590909 +vt 0.469136 0.590909 +vt 0.432099 0.590909 +vt 0.487654 0.590909 +vt 0.345910 0.590644 +vt 0.349457 0.574879 +vt 0.419210 0.590495 +vt 0.370781 0.590495 +vt 0.475309 0.545455 +vt 0.456790 0.545455 +vt 0.456790 0.602273 +vt 0.438272 0.545455 +vt 0.493827 0.545455 +vt 0.419753 0.602273 +vt 0.475309 0.602273 +vt 0.419753 0.545455 +vt 0.438272 0.602273 +vt 0.438272 0.545455 +vt 0.419753 0.545455 +vt 0.438272 0.602273 +vt 0.475309 0.602273 +vt 0.493827 0.545455 +vt 0.475309 0.545455 +vt 0.456790 0.545455 +vt 0.419753 0.602273 +vt 0.456790 0.602273 +vt 0.475309 0.545455 +vt 0.456790 0.545455 +vt 0.456790 0.602273 +vt 0.438272 0.545455 +vt 0.493827 0.545455 +vt 0.419753 0.602273 +vt 0.475309 0.602273 +vt 0.419753 0.545455 +vt 0.438272 0.602273 +vt 0.438272 0.545455 +vt 0.419753 0.545455 +vt 0.438272 0.602273 +vt 0.475309 0.602273 +vt 0.475309 0.545455 +vt 0.456790 0.545455 +vt 0.419753 0.602273 +vt 0.456790 0.602273 +vt 0.469136 0.602273 +vt 0.432099 0.602273 +vt 0.487654 0.602273 +vt 0.450617 0.602273 +vt 0.450617 0.602273 +vt 0.487654 0.602273 +vt 0.432099 0.602273 +vt 0.469136 0.602273 +vt 0.469136 0.602273 +vt 0.432099 0.602273 +vt 0.487654 0.602273 +vt 0.450617 0.602273 +vt 0.450617 0.602273 +vt 0.487654 0.602273 +vt 0.493827 0.545455 +vt 0.432099 0.602273 +vt 0.469136 0.602273 +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.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 -1.0000 0.0000 0.0000 -vn 0.7071 0.0000 0.7071 vn -0.7071 0.0000 0.7071 -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.3827 -0.9239 0.0000 -vn -0.3827 0.9239 0.0000 -vn -0.9239 0.3827 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.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.0000 -0.3827 -0.9239 +vn 0.0000 -0.3827 0.9239 s off -f 2/1/1 3/2/1 1/3/1 -f 8/4/2 11/5/2 7/6/2 -f 4/7/3 2/8/3 10/9/3 -f 4/10/4 7/6/4 3/11/4 -f 1/12/5 6/13/5 2/14/5 -f 11/15/6 10/16/6 9/17/6 -f 5/18/7 10/16/7 6/19/7 -f 1/20/8 3/21/8 11/22/8 -f 20/23/5 22/24/5 17/25/5 -f 14/26/3 24/27/3 19/28/3 -f 24/29/1 16/30/1 15/31/1 -f 13/32/4 16/33/4 14/34/4 -f 24/27/9 20/35/9 19/28/9 -f 18/36/10 22/37/10 21/38/10 -f 18/36/8 15/39/8 13/40/8 -f 58/41/5 62/42/5 57/43/5 -f 25/44/5 54/45/5 50/46/5 -f 28/47/11 29/48/11 27/49/11 -f 65/50/8 69/51/8 67/52/8 -f 52/53/12 53/54/12 51/55/12 -f 30/56/13 31/57/13 29/58/13 -f 57/59/8 61/60/8 59/61/8 -f 50/62/14 51/63/14 49/64/14 -f 32/65/15 33/66/15 31/57/15 -f 60/67/3 63/68/3 58/69/3 -f 48/70/16 49/64/16 47/71/16 -f 33/72/16 36/73/16 35/74/16 -f 63/75/1 61/76/1 62/77/1 -f 46/78/15 47/79/15 45/80/15 -f 36/73/14 37/81/14 35/74/14 -f 56/82/17 26/83/17 55/84/17 -f 44/85/13 45/80/13 43/86/13 -f 38/87/12 39/88/12 37/89/12 -f 28/90/5 40/91/5 36/92/5 -f 25/93/11 43/94/11 26/83/11 -f 40/95/18 41/96/18 39/88/18 -f 59/97/4 64/98/4 60/99/4 -f 54/100/18 55/101/18 53/54/18 -f 42/102/17 27/49/17 41/103/17 -f 66/104/5 70/105/5 65/106/5 -f 68/107/3 71/108/3 66/109/3 -f 71/110/1 69/111/1 70/112/1 -f 67/113/4 72/114/4 68/115/4 -f 75/116/6 74/117/6 73/118/6 -f 79/119/1 77/120/1 78/121/1 -f 76/122/3 79/123/3 74/124/3 -f 73/125/8 77/126/8 75/127/8 -f 75/128/4 80/129/4 76/130/4 -f 74/131/5 78/132/5 73/133/5 -f 86/134/3 84/135/3 82/136/3 -f 87/137/8 81/138/8 83/139/8 -f 85/140/4 82/141/4 81/142/4 -f 2/1/1 4/143/1 3/2/1 -f 8/4/2 12/144/2 11/5/2 -f 2/8/3 6/145/3 10/9/3 -f 10/9/3 12/146/3 4/7/3 -f 12/146/3 8/147/3 4/7/3 -f 4/10/4 8/4/4 7/6/4 -f 1/12/5 5/148/5 6/13/5 -f 11/15/6 12/149/6 10/16/6 -f 5/18/7 9/17/7 10/16/7 -f 3/21/8 7/150/8 11/22/8 -f 11/22/8 9/151/8 1/20/8 -f 9/151/8 5/152/8 1/20/8 -f 20/23/5 23/153/5 22/24/5 -f 14/26/3 16/154/3 24/27/3 -f 15/31/1 21/155/1 24/29/1 -f 21/155/1 22/156/1 24/29/1 -f 22/156/1 23/157/1 24/29/1 -f 13/32/4 15/158/4 16/33/4 -f 24/27/9 23/159/9 20/35/9 -f 18/36/10 17/160/10 22/37/10 -f 18/36/8 21/38/8 15/39/8 -f 58/41/5 63/161/5 62/42/5 -f 46/162/5 44/163/5 25/44/5 -f 25/44/5 56/164/5 54/45/5 -f 54/45/5 52/165/5 50/46/5 -f 50/46/5 48/166/5 46/162/5 -f 46/162/5 25/44/5 50/46/5 -f 28/47/11 30/167/11 29/48/11 -f 65/50/8 70/168/8 69/51/8 -f 52/53/12 54/100/12 53/54/12 -f 30/56/13 32/65/13 31/57/13 -f 57/59/8 62/169/8 61/60/8 -f 50/62/14 52/170/14 51/63/14 -f 32/65/15 34/171/15 33/66/15 -f 60/67/3 64/172/3 63/68/3 -f 48/70/16 50/62/16 49/64/16 -f 33/72/16 34/171/16 36/73/16 -f 63/75/1 64/173/1 61/76/1 -f 46/78/15 48/174/15 47/79/15 -f 36/73/14 38/175/14 37/81/14 -f 56/82/17 25/93/17 26/83/17 -f 44/85/13 46/78/13 45/80/13 -f 38/87/12 40/95/12 39/88/12 -f 32/176/5 30/177/5 28/90/5 -f 28/90/5 42/178/5 40/91/5 -f 40/91/5 38/179/5 36/92/5 -f 36/92/5 34/180/5 32/176/5 -f 32/176/5 28/90/5 36/92/5 -f 25/93/11 44/181/11 43/94/11 -f 40/95/18 42/182/18 41/96/18 -f 59/97/4 61/183/4 64/98/4 -f 54/100/18 56/184/18 55/101/18 -f 42/102/17 28/47/17 27/49/17 -f 66/104/5 71/185/5 70/105/5 -f 68/107/3 72/186/3 71/108/3 -f 71/110/1 72/187/1 69/111/1 -f 67/113/4 69/188/4 72/114/4 -f 75/116/6 76/189/6 74/117/6 -f 79/119/1 80/190/1 77/120/1 -f 76/122/3 80/191/3 79/123/3 -f 73/125/8 78/192/8 77/126/8 -f 75/128/4 77/193/4 80/129/4 -f 74/131/5 79/194/5 78/132/5 -f 86/134/3 88/195/3 84/135/3 -f 87/137/8 85/196/8 81/138/8 -f 85/140/4 86/197/4 82/141/4 +f 3/1/1 2/2/1 1/3/1 +f 7/4/2 5/5/2 6/6/2 +f 4/7/3 7/4/3 2/8/3 +f 1/9/4 5/5/4 3/10/4 +f 3/11/5 8/12/5 4/13/5 +f 2/14/6 6/6/6 1/15/6 +f 10/16/4 11/17/4 9/18/4 +f 12/19/5 15/20/5 11/21/5 +f 16/22/3 13/23/3 15/24/3 +f 14/25/6 9/18/6 13/23/6 +f 15/26/1 9/18/1 11/27/1 +f 12/19/2 14/25/2 16/28/2 +f 18/29/4 19/30/4 17/31/4 +f 20/32/5 23/33/5 19/34/5 +f 24/35/3 21/36/3 23/37/3 +f 22/38/6 17/31/6 21/36/6 +f 23/39/1 17/31/1 19/40/1 +f 20/32/2 22/38/2 24/41/2 +f 26/42/4 27/43/4 25/44/4 +f 28/45/5 31/46/5 27/43/5 +f 32/47/3 29/48/3 31/46/3 +f 30/49/6 25/50/6 29/51/6 +f 31/46/1 25/52/1 27/43/1 +f 28/45/2 30/49/2 32/47/2 +f 34/53/4 35/54/4 33/55/4 +f 36/56/5 39/57/5 35/54/5 +f 40/58/3 37/59/3 39/57/3 +f 38/60/6 33/61/6 37/62/6 +f 39/57/1 33/63/1 35/54/1 +f 36/56/2 38/60/2 40/58/2 +f 45/64/5 44/65/5 46/66/5 +f 96/67/5 99/68/5 95/69/5 +f 48/70/6 54/71/6 49/72/6 +f 53/73/2 75/74/2 69/75/2 +f 54/71/2 57/76/2 58/77/2 +f 54/71/7 50/78/7 49/72/7 +f 48/70/8 52/79/8 51/80/8 +f 68/81/2 60/82/2 52/79/2 +f 70/83/5 65/84/5 42/85/5 +f 46/86/4 72/87/4 66/88/4 +f 54/71/2 62/89/2 53/90/2 +f 60/91/2 51/80/2 52/92/2 +f 57/93/5 64/94/5 58/95/5 +f 60/96/9 63/97/9 57/93/9 +f 56/98/2 44/65/2 43/99/2 +f 64/94/10 62/100/10 58/95/10 +f 75/101/3 55/102/3 43/99/3 +f 67/103/3 68/81/3 52/79/3 +f 53/73/4 69/75/4 70/83/4 +f 60/104/4 44/65/4 56/98/4 +f 74/105/3 43/106/3 45/107/3 +f 72/87/11 68/108/11 67/103/11 +f 70/83/11 75/109/11 74/105/11 +f 67/103/5 66/88/5 72/87/5 +f 78/110/12 84/111/12 80/112/12 +f 59/113/5 77/114/5 76/115/5 +f 59/116/4 61/117/4 84/111/4 +f 90/118/2 91/119/2 92/120/2 +f 73/121/6 80/112/6 61/122/6 +f 83/123/2 82/124/2 81/125/2 +f 87/126/3 92/127/3 85/128/3 +f 88/129/5 90/118/5 87/126/5 +f 77/114/13 83/123/13 81/125/13 +f 73/130/3 76/131/3 81/125/3 +f 85/132/6 91/133/6 86/134/6 +f 86/134/4 89/135/4 88/129/4 +f 96/67/4 98/136/4 100/137/4 +f 97/138/6 94/139/6 93/140/6 +f 95/69/3 97/141/3 93/142/3 +f 101/143/1 98/144/1 97/145/1 +f 100/137/2 103/146/2 99/68/2 +f 103/146/3 97/147/3 99/68/3 +f 98/144/4 104/148/4 100/137/4 +f 102/149/6 108/150/6 104/148/6 +f 103/151/5 105/152/5 101/153/5 +f 101/154/1 106/155/1 102/149/1 +f 103/151/2 108/150/2 107/156/2 +f 126/157/3 143/158/3 120/159/3 +f 123/160/3 132/161/3 124/162/3 +f 117/163/4 111/164/4 136/165/4 +f 121/166/3 130/167/3 122/168/3 +f 148/169/3 147/170/3 146/171/3 +f 126/157/3 141/172/3 142/173/3 +f 113/174/3 132/175/3 125/176/3 +f 123/160/3 130/177/3 131/178/3 +f 112/179/3 143/180/3 119/181/3 +f 128/182/3 141/183/3 127/184/3 +f 140/185/3 139/186/3 138/187/3 +f 114/188/4 115/189/4 116/190/4 +f 153/191/1 155/192/1 154/193/1 +f 152/194/14 153/191/14 151/195/14 +f 149/196/15 155/192/15 150/197/15 +f 150/198/3 156/199/3 152/200/3 +f 151/201/4 154/193/4 149/202/4 +f 174/203/4 191/204/4 168/205/4 +f 171/206/4 180/207/4 172/208/4 +f 165/209/3 159/210/3 184/211/3 +f 169/212/4 178/213/4 170/214/4 +f 195/215/4 194/216/4 193/217/4 +f 175/218/4 190/219/4 174/203/4 +f 172/208/4 173/220/4 161/221/4 +f 170/214/4 179/222/4 171/206/4 +f 168/205/4 167/223/4 160/224/4 +f 176/225/4 189/226/4 175/218/4 +f 187/227/4 186/228/4 185/229/4 +f 162/230/3 163/231/3 164/232/3 +f 3/1/1 4/233/1 2/2/1 +f 7/4/2 8/12/2 5/5/2 +f 4/7/3 8/12/3 7/4/3 +f 1/9/4 6/6/4 5/5/4 +f 3/11/5 5/5/5 8/12/5 +f 2/14/6 7/4/6 6/6/6 +f 10/16/4 12/234/4 11/17/4 +f 12/19/5 16/28/5 15/20/5 +f 16/22/3 14/25/3 13/23/3 +f 14/25/6 10/16/6 9/18/6 +f 15/26/1 13/23/1 9/18/1 +f 12/19/2 10/16/2 14/25/2 +f 18/29/4 20/235/4 19/30/4 +f 20/32/5 24/41/5 23/33/5 +f 24/35/3 22/38/3 21/36/3 +f 22/38/6 18/29/6 17/31/6 +f 23/39/1 21/36/1 17/31/1 +f 20/32/2 18/29/2 22/38/2 +f 26/42/4 28/45/4 27/43/4 +f 28/45/5 32/47/5 31/46/5 +f 32/47/3 30/236/3 29/48/3 +f 30/49/6 26/237/6 25/50/6 +f 31/46/1 29/238/1 25/52/1 +f 28/45/2 26/237/2 30/49/2 +f 34/53/4 36/56/4 35/54/4 +f 36/56/5 40/58/5 39/57/5 +f 40/58/3 38/239/3 37/59/3 +f 38/60/6 34/240/6 33/61/6 +f 39/57/1 37/241/1 33/63/1 +f 36/56/2 34/240/2 38/60/2 +f 45/64/5 43/99/5 44/65/5 +f 96/67/5 100/137/5 99/68/5 +f 48/70/6 51/80/6 54/71/6 +f 53/73/2 62/242/2 75/74/2 +f 54/71/2 51/80/2 57/76/2 +f 54/71/7 53/73/7 50/78/7 +f 48/70/8 47/243/8 52/79/8 +f 68/81/2 71/244/2 60/82/2 +f 70/83/5 74/105/5 65/84/5 +f 46/86/4 44/245/4 72/87/4 +f 44/245/4 71/246/4 72/87/4 +f 54/71/2 58/77/2 62/89/2 +f 60/91/2 57/76/2 51/80/2 +f 57/93/5 63/97/5 64/94/5 +f 60/96/9 56/247/9 63/97/9 +f 43/99/2 55/102/2 56/98/2 +f 55/102/2 64/94/2 56/98/2 +f 64/94/2 63/97/2 56/98/2 +f 64/94/10 55/248/10 62/100/10 +f 75/101/3 62/249/3 55/102/3 +f 52/79/3 47/243/3 67/103/3 +f 47/243/3 41/250/3 67/103/3 +f 70/83/4 42/85/4 50/78/4 +f 50/78/4 53/73/4 70/83/4 +f 60/104/4 71/251/4 44/65/4 +f 45/107/3 65/84/3 74/105/3 +f 74/105/3 75/252/3 43/106/3 +f 72/87/11 71/253/11 68/108/11 +f 70/83/11 69/254/11 75/109/11 +f 67/103/5 41/250/5 66/88/5 +f 78/110/12 82/124/12 84/111/12 +f 59/113/5 79/255/5 77/114/5 +f 61/117/4 80/256/4 84/111/4 +f 84/111/4 83/123/4 59/116/4 +f 83/123/4 79/257/4 59/116/4 +f 90/118/2 89/135/2 91/119/2 +f 73/121/6 78/110/6 80/112/6 +f 83/123/2 84/111/2 82/124/2 +f 87/126/3 90/118/3 92/127/3 +f 88/129/5 89/135/5 90/118/5 +f 77/114/13 79/255/13 83/123/13 +f 76/131/3 77/258/3 81/125/3 +f 81/125/3 82/124/3 73/130/3 +f 82/124/3 78/259/3 73/130/3 +f 85/132/6 92/260/6 91/133/6 +f 86/134/4 91/133/4 89/135/4 +f 96/67/4 94/139/4 98/136/4 +f 97/138/6 98/136/6 94/139/6 +f 95/69/3 99/68/3 97/141/3 +f 101/143/1 102/149/1 98/144/1 +f 100/137/2 104/148/2 103/146/2 +f 103/146/3 101/261/3 97/147/3 +f 98/144/4 102/149/4 104/148/4 +f 102/149/6 106/155/6 108/150/6 +f 103/151/5 107/156/5 105/152/5 +f 101/154/1 105/262/1 106/155/1 +f 103/151/2 104/148/2 108/150/2 +f 126/157/3 142/263/3 143/158/3 +f 123/160/3 131/264/3 132/161/3 +f 136/165/4 135/265/4 117/163/4 +f 117/163/4 134/266/4 111/164/4 +f 121/166/3 129/267/3 130/167/3 +f 145/268/3 144/269/3 146/171/3 +f 144/269/3 148/169/3 146/171/3 +f 126/157/3 127/184/3 141/172/3 +f 113/174/3 124/162/3 132/175/3 +f 123/160/3 122/168/3 130/177/3 +f 112/179/3 120/159/3 143/180/3 +f 128/182/3 109/270/3 141/183/3 +f 137/271/3 133/272/3 138/187/3 +f 133/272/3 140/185/3 138/187/3 +f 110/273/4 118/274/4 116/190/4 +f 118/274/4 114/188/4 116/190/4 +f 153/191/1 156/199/1 155/192/1 +f 152/194/14 156/199/14 153/191/14 +f 149/196/15 154/193/15 155/192/15 +f 150/198/3 155/192/3 156/199/3 +f 151/201/4 153/191/4 154/193/4 +f 174/203/4 190/275/4 191/204/4 +f 171/206/4 179/276/4 180/207/4 +f 184/211/3 183/277/3 165/209/3 +f 165/209/3 182/278/3 159/210/3 +f 169/212/4 177/279/4 178/213/4 +f 193/217/4 192/280/4 196/281/4 +f 196/281/4 195/215/4 193/217/4 +f 175/218/4 189/282/4 190/219/4 +f 172/208/4 180/283/4 173/220/4 +f 170/214/4 178/284/4 179/222/4 +f 168/205/4 191/285/4 167/223/4 +f 176/225/4 157/286/4 189/226/4 +f 185/229/4 181/287/4 188/288/4 +f 188/288/4 187/227/4 185/229/4 +f 158/289/3 166/290/3 164/232/3 +f 166/290/3 162/230/3 164/232/3 +s 1 +f 114/291/14 123/160/1 115/292/1 +f 141/172/14 147/293/1 142/173/1 +f 115/292/1 124/162/15 116/294/15 +f 118/295/16 122/168/14 114/291/14 +f 143/180/15 144/296/17 119/181/17 +f 109/270/16 146/297/14 141/183/14 +f 116/294/15 113/174/17 110/298/17 +f 142/263/1 148/299/15 143/158/15 +f 135/300/15 112/179/17 117/301/17 +f 131/264/1 140/302/15 132/161/15 +f 129/267/16 138/303/14 130/167/14 +f 134/304/16 127/184/14 111/305/14 +f 136/306/1 120/159/15 135/300/15 +f 132/175/15 133/307/17 125/176/17 +f 130/177/14 139/308/1 131/178/1 +f 111/305/14 126/157/1 136/306/1 +f 162/309/15 171/206/1 163/310/1 +f 189/282/15 195/311/1 190/219/1 +f 163/310/1 172/208/14 164/312/14 +f 166/313/17 170/214/15 162/309/15 +f 191/285/14 192/314/16 167/223/16 +f 157/286/17 194/315/15 189/226/15 +f 158/316/16 172/208/14 161/221/16 +f 190/275/1 196/317/14 191/204/14 +f 183/318/14 160/224/16 165/319/16 +f 179/276/1 188/320/14 180/207/14 +f 177/279/17 186/321/15 178/213/15 +f 159/322/15 176/225/17 175/218/15 +f 184/323/1 168/205/14 183/318/14 +f 180/283/14 181/324/16 173/220/16 +f 178/284/15 187/325/1 179/222/1 +f 159/322/15 174/203/1 184/323/1 +f 114/291/14 122/168/14 123/160/1 +f 141/172/14 146/326/14 147/293/1 +f 115/292/1 123/160/1 124/162/15 +f 118/295/16 121/166/16 122/168/14 +f 143/180/15 148/327/15 144/296/17 +f 109/270/16 145/328/16 146/297/14 +f 116/294/15 124/162/15 113/174/17 +f 142/263/1 147/329/1 148/299/15 +f 135/300/15 120/159/15 112/179/17 +f 131/264/1 139/330/1 140/302/15 +f 129/267/16 137/331/16 138/303/14 +f 134/304/16 128/182/16 127/184/14 +f 136/306/1 126/157/1 120/159/15 +f 132/175/15 140/332/15 133/307/17 +f 130/177/14 138/333/14 139/308/1 +f 111/305/14 127/184/14 126/157/1 +f 162/309/15 170/214/15 171/206/1 +f 189/282/15 194/334/15 195/311/1 +f 163/310/1 171/206/1 172/208/14 +f 166/313/17 169/212/17 170/214/15 +f 191/285/14 196/335/14 192/314/16 +f 157/286/17 193/336/17 194/315/15 +f 158/316/16 164/312/14 172/208/14 +f 190/275/1 195/337/1 196/317/14 +f 183/318/14 168/205/14 160/224/16 +f 179/276/1 187/338/1 188/320/14 +f 177/279/17 185/339/17 186/321/15 +f 159/322/15 182/340/17 176/225/17 +f 184/323/1 174/203/1 168/205/14 +f 180/283/14 188/341/14 181/324/16 +f 178/284/15 186/342/15 187/325/1 +f 159/322/15 175/218/15 174/203/1 diff --git a/src/main/resources/assets/hbm/textures/models/trains/ow.png b/src/main/resources/assets/hbm/textures/models/trains/ow.png new file mode 100644 index 0000000000000000000000000000000000000000..3ba1a97679750b05fa6900f1d5b980a458d8b6cc GIT binary patch literal 79618 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

0S6y{g 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

m%w9TN%W5 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 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/models/trains/tram.png b/src/main/resources/assets/hbm/textures/models/trains/tram.png new file mode 100644 index 0000000000000000000000000000000000000000..d50856ed7af73e9de716b5354aa6f8255d84a95c GIT binary patch literal 1148 zcmeAS@N?(olHy`uVBq!ia0vp^i-0(SgAGWQ{nkkVQY^(zo*^7SP{WbZ0puEcx;TbZ z%z1lfZT@Ws3APW6(}v7~8pw%GC4Hxs`#v-OEi3`r31WM!Ke@}lPFvC=mc zx1IQY*V&lWN?lo}T<5&&;}7NKu7SZfO~VyMH1lroE;Cb_)a?OILynpFJJTb;<44)>zsbLbxD^sS9)AMvPA5dgqk)t$Firn58q_B9j(6>!?t19 ze}5@6n;wa#@bvSCZq~iC-ZXcWgwadEi5jc2o}V^f__|_a?B=B1$zcb|{%w9%#rkH4 z)TIvnO27y2J*+!(a7?z>X;k5t+KsR zBsM!$$#v=Hd)p*F8FoZ}@;@4IORaaWjZw_6x|hzC-oN6;Z{IgJ3{viVpJXOg*mGm!GG#5_+wF3i4<}9) z-gvk6)YQj0i=&Qi3El9v^7Fsc->JJ_&%T*wE^Cy{_J~7STWRHkH67PIFa4@|6p_yJ z_35s^UsZ0t|Ge%$OU|EN3uE6_>P%moU)Wc8fSoV=OYCP&A;HbIC$oa)+b|wob8q?F zSXKtJb}2nOZC3q*3T_APterl+hB+o*`qnaT8D+Oa+lAiUUZ%aK!+lzuQhnaRJ6rGV zRAukdyS9C<&6?HeFVbzd@Bckd=x~>Z)&?c50Qtq466<%`?A|~B^w$fwZF2sfE?d*F zKA&|F*EE-DsH@D_wVbrik#^IOvkhLuI}5M|2F^Ij{CniDIury z3$H(&y?HZozWjA#vAr+tIWs}zp+_K?skAPM^4T6|IZ@rrId6k RYk|cHgQu&X%Q~loCIExn8Os0w literal 0 HcmV?d00001 From 6d5e5ddc6d0fb9af590d21a3ba802a1bbe7cbcd9 Mon Sep 17 00:00:00 2001 From: Boblet Date: Tue, 9 May 2023 13:58:17 +0200 Subject: [PATCH 38/40] fixed mojang's weird input restrictions, more tram stuff --- .../com/hbm/entity/train/TrainCargoTram.java | 8 ++--- src/main/java/com/hbm/main/ClientProxy.java | 3 ++ .../com/hbm/main/ModEventHandlerClient.java | 29 +++++++++++++----- .../java/com/hbm/main/ResourceManager.java | 1 + .../entity/item/RenderTrainCargoTram.java | 4 +-- .../hbm/textures/models/trains/tram.png | Bin 1148 -> 2686 bytes 6 files changed, 30 insertions(+), 15 deletions(-) diff --git a/src/main/java/com/hbm/entity/train/TrainCargoTram.java b/src/main/java/com/hbm/entity/train/TrainCargoTram.java index 7761a76e0..5dcff8b21 100644 --- a/src/main/java/com/hbm/entity/train/TrainCargoTram.java +++ b/src/main/java/com/hbm/entity/train/TrainCargoTram.java @@ -1,8 +1,6 @@ package com.hbm.entity.train; import com.hbm.blocks.rail.IRailNTM.TrackGauge; -import com.hbm.inventory.container.ContainerCrateSteel; -import com.hbm.inventory.gui.GUICrateSteel; import com.hbm.tileentity.IGUIProvider; import cpw.mods.fml.relauncher.Side; @@ -71,12 +69,12 @@ public class TrainCargoTram extends EntityRailCarRidable implements IGUIProvider @Override public double getLengthSpan() { - return 2; + return 1.5; } @Override public Vec3 getRiderSeatPosition() { - return Vec3.createVectorHelper(0.375, 1.75, 0.5); + return Vec3.createVectorHelper(0.375, 2.25, 0.5); } @Override @@ -90,7 +88,7 @@ public class TrainCargoTram extends EntityRailCarRidable implements IGUIProvider @Override public boolean shouldRiderSit() { - return true; + return false; } @Override diff --git a/src/main/java/com/hbm/main/ClientProxy.java b/src/main/java/com/hbm/main/ClientProxy.java index e69446d89..8143d4828 100644 --- a/src/main/java/com/hbm/main/ClientProxy.java +++ b/src/main/java/com/hbm/main/ClientProxy.java @@ -61,6 +61,7 @@ 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.EntityRailCarRidable.SeatDummyEntity; import com.hbm.handler.CasingEjector; import com.hbm.handler.HbmKeybinds; import com.hbm.handler.ImpactWorldHandler; @@ -682,6 +683,8 @@ public class ClientProxy extends ServerProxy { RenderingRegistry.registerEntityRenderingHandler(EntityMinecartCrate.class, new RenderMinecart()); RenderingRegistry.registerEntityRenderingHandler(EntityMinecartNTM.class, new RenderNeoCart()); RenderingRegistry.registerEntityRenderingHandler(EntityMagnusCartus.class, new RenderMagnusCartus()); + //trains + RenderingRegistry.registerEntityRenderingHandler(SeatDummyEntity.class, new RenderEmpty()); RenderingRegistry.registerEntityRenderingHandler(TrainCargoTram.class, new RenderTrainCargoTram()); //items RenderingRegistry.registerEntityRenderingHandler(EntityMovingItem.class, new RenderMovingItem()); diff --git a/src/main/java/com/hbm/main/ModEventHandlerClient.java b/src/main/java/com/hbm/main/ModEventHandlerClient.java index c3efd654e..2af37c069 100644 --- a/src/main/java/com/hbm/main/ModEventHandlerClient.java +++ b/src/main/java/com/hbm/main/ModEventHandlerClient.java @@ -12,8 +12,6 @@ import org.lwjgl.opengl.GL11; import com.hbm.blocks.ILookOverlay; import com.hbm.blocks.ModBlocks; import com.hbm.blocks.generic.BlockAshes; -import com.hbm.blocks.rail.IRailNTM; -import com.hbm.blocks.rail.IRailNTM.RailContext; import com.hbm.config.GeneralConfig; import com.hbm.entity.effect.EntityNukeTorex; import com.hbm.entity.mob.EntityHunterChopper; @@ -45,7 +43,6 @@ import com.hbm.lib.RefStrings; import com.hbm.packet.AuxButtonPacket; import com.hbm.packet.GunButtonPacket; import com.hbm.packet.PacketDispatcher; -import com.hbm.packet.PlayerInformPacket; import com.hbm.packet.SyncButtonsPacket; import com.hbm.render.anim.HbmAnimations; import com.hbm.render.anim.HbmAnimations.Animation; @@ -68,14 +65,12 @@ 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.ParticleUtil; 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.fauxpointtwelve.BlockPos; import com.mojang.authlib.minecraft.MinecraftProfileTexture.Type; import api.hbm.item.IButtonReceiver; @@ -90,12 +85,14 @@ import cpw.mods.fml.common.eventhandler.SubscribeEvent; 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; 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.entity.AbstractClientPlayer; +import net.minecraft.client.entity.EntityClientPlayerMP; import net.minecraft.client.gui.ScaledResolution; import net.minecraft.client.gui.inventory.GuiContainer; import net.minecraft.client.multiplayer.WorldClient; @@ -104,15 +101,15 @@ import net.minecraft.client.renderer.RenderHelper; import net.minecraft.client.renderer.Tessellator; import net.minecraft.client.renderer.entity.RenderPlayer; import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.init.Items; import net.minecraft.inventory.Slot; import net.minecraft.item.Item; import net.minecraft.item.ItemArmor; import net.minecraft.item.ItemStack; +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.ChatComponentText; import net.minecraft.util.EnumChatFormatting; import net.minecraft.util.IIcon; import net.minecraft.util.MathHelper; @@ -135,7 +132,6 @@ 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.common.util.ForgeDirection; import net.minecraftforge.event.entity.player.ItemTooltipEvent; public class ModEventHandlerClient { @@ -1166,4 +1162,21 @@ 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)); + client.sendQueue.addToSendQueue(new C0CPacketInput(client.moveStrafing, client.moveForward, client.movementInput.jump, client.movementInput.sneak)); + } + } + } } diff --git a/src/main/java/com/hbm/main/ResourceManager.java b/src/main/java/com/hbm/main/ResourceManager.java index 302a3523c..64c2e280d 100644 --- a/src/main/java/com/hbm/main/ResourceManager.java +++ b/src/main/java/com/hbm/main/ResourceManager.java @@ -1279,6 +1279,7 @@ public class ResourceManager { public static final ResourceLocation cart_powder_tex = new ResourceLocation(RefStrings.MODID, "textures/blocks/block_gunpowder.png"); public static final ResourceLocation cart_semtex_side = new ResourceLocation(RefStrings.MODID, "textures/blocks/semtex_side.png"); 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"); //ISBRHs public static final IModelCustom scaffold = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/blocks/scaffold.obj")); diff --git a/src/main/java/com/hbm/render/entity/item/RenderTrainCargoTram.java b/src/main/java/com/hbm/render/entity/item/RenderTrainCargoTram.java index 5603c1d94..36a19e415 100644 --- a/src/main/java/com/hbm/render/entity/item/RenderTrainCargoTram.java +++ b/src/main/java/com/hbm/render/entity/item/RenderTrainCargoTram.java @@ -23,7 +23,7 @@ public class RenderTrainCargoTram extends Render { MainRegistry.proxy.displayTooltip("Render Pitch: " + entity.rotationPitch, 667); GL11.glDisable(GL11.GL_CULL_FACE); - bindTexture(ResourceManager.universal); + bindTexture(ResourceManager.train_tram); ResourceManager.train_cargo_tram.renderAll(); GL11.glEnable(GL11.GL_CULL_FACE); @@ -32,6 +32,6 @@ public class RenderTrainCargoTram extends Render { @Override protected ResourceLocation getEntityTexture(Entity entity) { - return ResourceManager.universal; + return ResourceManager.train_tram; } } diff --git a/src/main/resources/assets/hbm/textures/models/trains/tram.png b/src/main/resources/assets/hbm/textures/models/trains/tram.png index d50856ed7af73e9de716b5354aa6f8255d84a95c..51683c6374206a1918939b0d9e0abd1958fa6def 100644 GIT binary patch delta 2662 zcmV-s3Yqo%2>uk1Gk*#-NklQA``j8OQ(jSvKdkfw*U%O&}?;PSEHOIaOT3 zDN=GeiL0VWL6wm5aEh+cMM>1BKJrrV6K{QLn?yOK5>H5ZNvcz?hnhB2C@4WyNjOE& zlc5EI2`0uIS7Ouaxev>%XV>f9S=+li_Rdd2c*gV1u4g}g^MB3v&3ZlHj0*$j3VQF4 z-~G&E*SQGn!{_t~l%p#eQk3V{GY*}Jzz(=n#I9%vuZLTebr8zf$atMT0f7JziYVX& zp@;%5;L=B&U(cXRqfXGcaH)uZP&~I`sE8u2C$Ix%i)eRTPs9=31(PD$9oG|aME4<9 z%>phEiYVX$Zhu$Jjl#7nm*mA>clX->fVsIZ<@c}Oye$@cU{pjA*ArL`vqcn&C$JLX zBMP{H+c=`YU2qvk6h5i@;C9t46wh5)u82mtYODJbx$yeHHjAkCG1br(uqztEsT*VX zV847Hz|_@?C2d&y6Y!5MaYQX2v!o5xr>um-!vKH}5`PKc#u(-Y&Q;W(9gx7a2vAoB zmvKZ{2}eeXb%_K%we1Yd)7|~HB4Z*jhp$>6uGT(ay>aczr20v5@L|ffCsw z>ct7Wq9I&3KZec@sl2cRjNjAu*{ZRi_pv`66A}sBuedipxPJ4t=XbyPwWg8^_7%}6 zPADtkL4V0->qG(<&W~Z_W_h2Dme=wz)zFGNb@d`}V@y^?vRFZd{R#Mo$w!oxFfvlC zL!xYZEzBs!{CWoS1Lu@Jp-R5q6isVtzINqOLCY$>*ZXcE9FF0`v!~^{Fa9`*bUG!M z!{Hdx=@cH$JZ=c9YI*p^Y#guA?vW9`AsbAJxPP#uvVdC&EG$`dN)jTsEm=XDa5(1B znOKhxFpd+B-@7RJiTlb(7Art`pRF3jann63@AbZ`u$YxhwYBKOX=ID2cai7UGxEZu zNPYWkyg*yIbUIa{R7Q~Y^=>VFMm|@g`D{Ex79a%mVnt7m7w*Ilnff9PCZBr%u^+Ln zP=BwQd894gWKJL{{o`^!q8lJ#oAYPSH{7avHJM{-M=LG2`w^XjxFX|sKl8A>HtO&C z&D)-GX+N{@Y6SslN^Xlc$x8U!_O}24qy81S&Cp)ET(_FcVKtegkhM zG5Q!z_`0>+zsOtMaMZtop_bw_T&|9W%l(LU9Z%~R|1i0y@Zg(~TAfY_M!9C5(SK4l ztvZ6CB7S@#D!-n1^aQ7mcOtW$K`hdWiAPWHr_oOesf{&+nnU>f;T#6u??q~34Y5co z?*4TK1Mm0h%J-k>fkOU7R9F7q$VUZTdBfwk=pWzg`Tr=2RPxUVHHYwYsZ`$6@e`vV zZa9Ya+I5wVwD|?TlFLjMF`v&N5PxXG?(UwVUR@UQwc+8+W6yMdynsIxt@AqoaFA;B z?Mtb=zv={}a7f=ol4+WrR>`r#(m%a8Dfhk_!%i;@oGY;0BO*{j7C`jWZRSUqru*Z} z3zoi#q=#fQSe1$>;b8K)$Lz7R>gn)JTf7NFd+o?(vzmQekL*Ymapfxz8Gl!m!KFqeSM($4hP=TByaRumU zo-pcP0d&@Jqy81FQe~ltoML8*rQ52@wUVLR)}oD?isOg^eawWPXdkUo>t-kPIg)c9 zOg{G@Y5x3)&&h2Z(ao6N!GBVQ%TvpW@~u;ctL~G|C+oFgL6PG7{V&fJ0N{%y@l%Ob zu=S#t0{q*HzsRpY?D)>o<6fRxE>S$KI$rRFnnTEJXAJLa7MMqG3`5P|A+v4GEK^S5 zZk;-e%Tvo3j#-xtsuW)!Aem94{e}~NU$pbQ@T;G7$r*}?M^Dh*5q}2x(#$QT0H=?4A`oa&WK5irKM?(~{8_Z(uz|p)wF6jZcmW{P%x3Xo(XcK50U))p20%)y z0YEIGzK}{kq`M=msB>DL1=ew|hRajS@*mH5$$+zvT2CvK#>z6eNT-i?0sx*R7m-|D z!`4pG!KE+c)=m!3l7EYMmR!W{?w;fFhGS`B+-n8T%IE`t$=LUB@e4pnuf*=%Kb;R+NF#sY_iZ ziwS~SA)JxBulrUJoja@!sYCWx(w$v5~fc*Z}j`sBCv^)!$?F`QMeN?RItDqCL3`-xC$QZTngR~3B zY(M+I3T!&FVwaCdrY$jc{#>)zkLV7#^%0%kPuPh25qU=JN3=+ug~{0kpeN4Mw$Ty$5gT+r zV!a{uBU&WSf>^K=;dVdb)=p00lf@#fvULgu{eO6tT$KGXvWm^;bBIM+5e)hrmp4M} zM^wV?enh8p#a8E<#ePI3J~GfxcG(0(uDLe3W_fWVc7g%mct0ZGe6HB)T(j7ZSi}n$ z4>&>OnroM92H3~l4fp_Qz&HNKCO}&(tIOm^(}Bu!#ZJl_5o!(r-2VujJ$T4d0sj5! z4S&TO;zyXOM{f*I9`Pf!v4)=?*net)8}}mu^5$6P=QRteLp_Ekk3`F~bSJ)_4t-kH z^O^%!@XjBQN{C`1^S3t#2ghruUVjvc%HR6#P1agxPVC!Pag53C%B28 z;3i(o-AC7JtB8E_R4(@fHxc>fDY{-;#b45+&*gGYa8oY3P5#L1oA~%d6j%Fugb&C7 zvqdC<-D=WhZk8A5V|a7-nKNg^H@XTQJa}My13kI7*=6(}v7~8pw%GC4Hxs`#v-OEi3`r31WM!Ke@}lPFvC=mc zx1IQY*V&lWN?lo}T<5&&;}7NKu7SZfO~VyMH1lroE;Cb_)a?OILynpFJJTb;<44)>zsbLbxD^sS9)AMvPA5dgqk)t$Firn58q_B9j(6>!?t19 ze}5@6n;wa#@bvSCZq~iC-ZXcWgwadEi5jc2o}V^f__|_a?B=B1$zcb|{%w9%#rkH4 z)TIvnO27y2J*+!(a7?z>X;k5t+KsR zBsM!$$#v=Hd)p*F8FoZ}@;@4IORaaWjZw_6x|hzC-oN6;Z{IgJ3{viVpJXOg*mGm!GG#5_+wF3i4<}9) z-gvk6)YQj0i=&Qi3El9v^7Fsc->JJ_&%T*wE^Cy{_J~7STWRHkH67PIFa4@|6p_yJ z_35s^UsZ0t|Ge%$OU|EN3uE6_>P%moU)Wc8fSoV=OYCP&A;HbIC$oa)+b|wob8q?F zSXKtJb}2nOZC3q*3T_APterl+hB+o*`qnaT8D+Oa+lAiUUZ%aK!+lzuQhnaRJ6rGV zRAukdyS9C<&6?HeFVbzd@Bckd=x~>Z)&?c50Qtq466<%`?A|~B^w$fwZF2sfE?d*F zKA&|F*EE-DsH@D_wVbrik#^IOvkhLuI}5M|2F^Ij{CniDIury z3$H(&y?HZozWjA#vAr+tIWs}zp+_K?skAPM^4T6|IZ@rrId6k RYk|cHgQu&X%Q~loCIExn8Os0w From fada68fb896aae710b420d98711cd28195727c34 Mon Sep 17 00:00:00 2001 From: Boblet Date: Tue, 9 May 2023 14:12:48 +0200 Subject: [PATCH 39/40] come on shitkraken do the thing --- src/main/java/com/hbm/main/MainRegistry.java | 1 - 1 file changed, 1 deletion(-) diff --git a/src/main/java/com/hbm/main/MainRegistry.java b/src/main/java/com/hbm/main/MainRegistry.java index b90f1903d..d2806ca03 100644 --- a/src/main/java/com/hbm/main/MainRegistry.java +++ b/src/main/java/com/hbm/main/MainRegistry.java @@ -255,7 +255,6 @@ public class MainRegistry { logger.info("Let us celebrate the fact that the logger finally works again!"); // Reroll Polaroid - if(generalOverride > 0 && generalOverride < 19) { polaroidID = generalOverride; } else { From 9d16e1fddf77acba445f2c314323e4b8b427ef26 Mon Sep 17 00:00:00 2001 From: Boblet Date: Tue, 9 May 2023 14:25:10 +0200 Subject: [PATCH 40/40] shithub is down and GK keeps swallowing my commits --- src/main/java/com/hbm/main/NEIConfig.java | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/main/java/com/hbm/main/NEIConfig.java b/src/main/java/com/hbm/main/NEIConfig.java index 03221742b..a1b32bf65 100644 --- a/src/main/java/com/hbm/main/NEIConfig.java +++ b/src/main/java/com/hbm/main/NEIConfig.java @@ -73,8 +73,6 @@ public class NEIConfig implements IConfigureNEI { //fluids registerHandler(new FluidRecipeHandler()); - - //registerHandler(new ChunkyHandler()); //Some things are even beyond my control...or are they? API.hideItem(ItemBattery.getEmptyBattery(ModItems.memory));