From 6f86dc4db2edb738c2c0f60374b8a2e2bdc53cbb Mon Sep 17 00:00:00 2001 From: Vaern Date: Sun, 26 May 2024 23:02:54 -0700 Subject: [PATCH 01/69] preliminary changes --- .../java/com/hbm/crafting/WeaponRecipes.java | 4 +- .../hbm/entity/item/EntityDeliveryDrone.java | 11 ++++- .../java/com/hbm/handler/ToolAbility.java | 2 +- .../com/hbm/handler/imc/IMCCrystallizer.java | 2 +- .../java/com/hbm/inventory/fluid/Fluids.java | 42 ++++++++++++++++-- .../hbm/inventory/fluid/tank/FluidTank.java | 2 +- .../java/com/hbm/inventory/gui/GUISILEX.java | 4 +- .../inventory/recipes/AssemblerRecipes.java | 4 +- .../inventory/recipes/ChemplantRecipes.java | 18 ++++---- .../recipes/CrystallizerRecipes.java | 2 +- .../hbm/inventory/recipes/MixerRecipes.java | 4 +- .../inventory/recipes/RadiolysisRecipes.java | 2 +- .../inventory/recipes/SolderingRecipes.java | 2 +- .../com/hbm/items/tool/ItemBlowtorch.java | 14 +++++- .../java/com/hbm/items/tool/ItemPipette.java | 2 +- .../java/com/hbm/main/CraftingManager.java | 4 +- .../bomb/TileEntityCompactLauncher.java | 4 +- .../bomb/TileEntityLaunchPadBase.java | 4 +- .../bomb/TileEntityLaunchTable.java | 4 +- .../tileentity/machine/TileEntityCore.java | 2 +- .../TileEntityMachineCrystallizer.java | 2 +- .../machine/TileEntityMachineMiningLaser.java | 2 +- .../tileentity/machine/TileEntitySILEX.java | 4 +- .../com/hbm/wiaj/cannery/CannerySILEX.java | 2 +- .../com/hbm/world/feature/BedrockOre.java | 10 ++--- src/main/resources/assets/hbm/lang/de_DE.lang | 2 +- src/main/resources/assets/hbm/lang/en_NT.lang | 2 +- src/main/resources/assets/hbm/lang/en_US.lang | 2 +- src/main/resources/assets/hbm/lang/fr_FR.lang | 2 +- src/main/resources/assets/hbm/lang/it_IT.lang | 2 +- src/main/resources/assets/hbm/lang/pl_PL.lang | 2 +- src/main/resources/assets/hbm/lang/ru_RU.lang | 2 +- src/main/resources/assets/hbm/lang/zh_CN.lang | 2 +- .../gui/fluids/{acid.png => peroxide.png} | Bin .../tank/{tank_ACID.png => tank_PEROXIDE.png} | Bin 35 files changed, 111 insertions(+), 58 deletions(-) rename src/main/resources/assets/hbm/textures/gui/fluids/{acid.png => peroxide.png} (100%) rename src/main/resources/assets/hbm/textures/models/tank/{tank_ACID.png => tank_PEROXIDE.png} (100%) diff --git a/src/main/java/com/hbm/crafting/WeaponRecipes.java b/src/main/java/com/hbm/crafting/WeaponRecipes.java index 083042da0..aa29c52d8 100644 --- a/src/main/java/com/hbm/crafting/WeaponRecipes.java +++ b/src/main/java/com/hbm/crafting/WeaponRecipes.java @@ -139,7 +139,7 @@ public class WeaponRecipes { CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_b92), new Object[] { "DDD", "SSC", " R", 'D', ModItems.plate_dineutronium, 'S', STAR.ingot(), 'C', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.BISMOID), 'R', ModItems.gun_revolver_schrabidium }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_b93), new Object[] { "PCE", "SEB", "PCE", 'P', ModItems.plate_dineutronium, 'C', ModItems.weaponized_starblaster_cell, 'E', ModItems.component_emitter, 'B', ModItems.gun_b92, 'S', ModItems.singularity_spark }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_b92_ammo, 1), new Object[] { "PSP", "ESE", "PSP", 'P', STEEL.plate(), 'S', STAR.ingot(), 'E', ModItems.powder_spark_mix }); - CraftingManager.addShapelessAuto(new ItemStack(ModItems.weaponized_starblaster_cell, 1), new Object[] { new ItemStack(ModItems.fluid_tank_full, 1, Fluids.ACID.getID()), GunB92Cell.getFullCell(), CU.wireFine() }); + CraftingManager.addShapelessAuto(new ItemStack(ModItems.weaponized_starblaster_cell, 1), new Object[] { new ItemStack(ModItems.fluid_tank_full, 1, Fluids.PEROXIDE.getID()), GunB92Cell.getFullCell(), CU.wireFine() }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_uzi, 1), new Object[] { "SMS", " PB", " P ", 'S', STEEL.ingot(), 'M', ModItems.mechanism_rifle_2, 'P', STEEL.plate(), 'B', DURA.bolt() }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_uzi_silencer, 1), new Object[] { "P ", " P ", " U", 'P', ANY_PLASTIC.ingot(), 'U', ModItems.gun_uzi }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_uzi_saturnite, 1), new Object[] { "SMS", " PB", " P ", 'S', BIGMT.ingot(), 'M', ModItems.mechanism_rifle_2, 'P', BIGMT.plate(), 'B', W.bolt() }); @@ -348,7 +348,7 @@ public class WeaponRecipes { CraftingManager.addRecipeAuto(new ItemStack(ModItems.grenade_mirv, 1), new Object[] { "GGG", "GCG", "GGG", 'G', ModItems.grenade_smart, 'C', ModItems.grenade_generic }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.grenade_breach, 1), new Object[] { "G", "G", "P", 'G', ModItems.grenade_smart, 'P', BIGMT.plate() }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.grenade_burst, 1), new Object[] { "GGG", "GCG", "GGG", 'G', ModItems.grenade_breach, 'C', ModItems.grenade_generic }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.grenade_cloud), new Object[] { "SPS", "CAC", "SPS", 'S', S.dust(), 'P', ModItems.powder_poison, 'C', CU.dust(), 'A', new ItemStack(ModItems.fluid_tank_full, 1, Fluids.ACID.getID()) }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.grenade_cloud), new Object[] { "SPS", "CAC", "SPS", 'S', S.dust(), 'P', ModItems.powder_poison, 'C', CU.dust(), 'A', new ItemStack(ModItems.fluid_tank_full, 1, Fluids.PEROXIDE.getID()) }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.grenade_pink_cloud), new Object[] { " S ", "ECE", " E ", 'S', ModItems.powder_spark_mix, 'E', ModItems.powder_magic, 'C', ModItems.grenade_cloud }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.nuclear_waste_pearl), new Object[] { "WWW", "WFW", "WWW", 'W', ModItems.nuclear_waste_tiny, 'F', ModBlocks.block_fallout }); CraftingManager.addShapelessAuto(new ItemStack(ModItems.grenade_kyiv), new Object[] { ModItems.canister_napalm, ModItems.bottle2_empty, ModItems.rag }); diff --git a/src/main/java/com/hbm/entity/item/EntityDeliveryDrone.java b/src/main/java/com/hbm/entity/item/EntityDeliveryDrone.java index 58ee212b4..8d1f1a01a 100644 --- a/src/main/java/com/hbm/entity/item/EntityDeliveryDrone.java +++ b/src/main/java/com/hbm/entity/item/EntityDeliveryDrone.java @@ -2,6 +2,7 @@ package com.hbm.entity.item; import com.hbm.entity.logic.IChunkLoader; import com.hbm.inventory.FluidStack; +import com.hbm.inventory.fluid.FluidType; import com.hbm.inventory.fluid.Fluids; import com.hbm.main.MainRegistry; @@ -73,7 +74,7 @@ public class EntityDeliveryDrone extends EntityDroneBase implements IInventory, nbt.setTag("Items", nbttaglist); if(fluid != null) { - nbt.setString("fluidType", fluid.type.getName()); + nbt.setInteger("fluidType", fluid.type.getID()); nbt.setInteger("fluidAmount", fluid.fill); } @@ -98,7 +99,13 @@ public class EntityDeliveryDrone extends EntityDroneBase implements IInventory, } if(nbt.hasKey("fluidType")) { - this.fluid = new FluidStack(Fluids.fromName(nbt.getString("fluidType")), nbt.getInteger("fluidAmount")); + FluidType type = Fluids.fromNameCompat(nbt.getString("fluidType")); + if(type != Fluids.NONE) { + nbt.removeTag(nbt.getString("fluidType")); + } else + type = Fluids.fromID(nbt.getInteger("fluidType")); + + this.fluid = new FluidStack(type, nbt.getInteger("fluidAmount")); } this.dataWatcher.updateObject(11, nbt.getByte("load")); diff --git a/src/main/java/com/hbm/handler/ToolAbility.java b/src/main/java/com/hbm/handler/ToolAbility.java index f142c5626..2a03e79a4 100644 --- a/src/main/java/com/hbm/handler/ToolAbility.java +++ b/src/main/java/com/hbm/handler/ToolAbility.java @@ -441,7 +441,7 @@ public abstract class ToolAbility { block = Blocks.redstone_ore; ItemStack stack = new ItemStack(block, 1, meta); - CrystallizerRecipe result = CrystallizerRecipes.getOutput(stack, Fluids.ACID); + CrystallizerRecipe result = CrystallizerRecipes.getOutput(stack, Fluids.PEROXIDE); if(result != null) { world.setBlockToAir(x, y, z); diff --git a/src/main/java/com/hbm/handler/imc/IMCCrystallizer.java b/src/main/java/com/hbm/handler/imc/IMCCrystallizer.java index 875e14f46..9230bb11c 100644 --- a/src/main/java/com/hbm/handler/imc/IMCCrystallizer.java +++ b/src/main/java/com/hbm/handler/imc/IMCCrystallizer.java @@ -40,7 +40,7 @@ public class IMCCrystallizer extends IMCHandler { time = 600; if(acid.type == Fluids.NONE) - acid = new FluidStack(Fluids.ACID, 500); + acid = new FluidStack(Fluids.PEROXIDE, 500); CrystallizerRecipe recipe = new CrystallizerRecipe(out, time); recipe.acidAmount = acid.fill; diff --git a/src/main/java/com/hbm/inventory/fluid/Fluids.java b/src/main/java/com/hbm/inventory/fluid/Fluids.java index 10e776c4c..0b3de1369 100644 --- a/src/main/java/com/hbm/inventory/fluid/Fluids.java +++ b/src/main/java/com/hbm/inventory/fluid/Fluids.java @@ -9,6 +9,7 @@ import java.util.HashMap; import java.util.List; import java.util.Map.Entry; +import com.google.common.collect.HashBiMap; import com.google.gson.Gson; import com.google.gson.JsonElement; import com.google.gson.JsonObject; @@ -83,7 +84,7 @@ public class Fluids { public static FluidType SCHRABIDIC; public static FluidType AMAT; public static FluidType ASCHRAB; - public static FluidType ACID; + public static FluidType PEROXIDE; public static FluidType WATZ; public static FluidType CRYOGEL; public static FluidType HYDROGEN; @@ -175,6 +176,8 @@ public class Fluids { public static FluidType FULLERENE; public static FluidType STELLAR_FLUX; + public static final HashBiMap renameMapping = HashBiMap.create(); + public static List customFluids = new ArrayList(); private static final HashMap idMapping = new HashMap(); @@ -265,7 +268,7 @@ public class Fluids { SCHRABIDIC = new FluidType("SCHRABIDIC", 0x006B6B, 5, 0, 5, EnumSymbol.ACID).addTraits(new FT_VentRadiation(1F), new FT_Corrosive(75), new FT_Poison(true, 2), LIQUID); AMAT = new FluidType("AMAT", 0x010101, 5, 0, 5, EnumSymbol.ANTIMATTER).addTraits(ANTI, GASEOUS); ASCHRAB = new FluidType("ASCHRAB", 0xb50000, 5, 0, 5, EnumSymbol.ANTIMATTER).addTraits(ANTI, GASEOUS); - ACID = new FluidType("ACID", 0xfff7aa, 3, 0, 3, EnumSymbol.OXIDIZER).addTraits(new FT_Corrosive(40), LIQUID); + PEROXIDE = new FluidType("PEROXIDE", 0xfff7aa, 3, 0, 3, EnumSymbol.OXIDIZER).addTraits(new FT_Corrosive(40), LIQUID); WATZ = new FluidType("WATZ", 0x86653E, 4, 0, 3, EnumSymbol.ACID).addTraits(new FT_Corrosive(60), new FT_VentRadiation(0.1F), LIQUID, VISCOUS, new FT_Polluting().release(PollutionType.POISON, POISON_EXTREME)); CRYOGEL = new FluidType("CRYOGEL", 0x32ffff, 2, 0, 0, EnumSymbol.CROYGENIC).setTemp(-170).addTraits(LIQUID, VISCOUS); HYDROGEN = new FluidType("HYDROGEN", 0x4286f4, 3, 4, 0, EnumSymbol.CROYGENIC).setTemp(-260).addContainers(new CD_Gastank(0x4286f4, 0xffffff)).addTraits(new FT_Flammable(5_000), new FT_Combustible(FuelGrade.HIGH, 10_000), LIQUID, EVAP); @@ -484,7 +487,7 @@ public class Fluids { metaOrder.add(SEEDSLURRY); metaOrder.add(COLLOID); metaOrder.add(IONGEL); - metaOrder.add(ACID); + metaOrder.add(PEROXIDE); metaOrder.add(SULFURIC_ACID); metaOrder.add(NITRIC_ACID); metaOrder.add(SOLVENT); @@ -539,6 +542,11 @@ public class Fluids { metaOrder.add(PHEROMONE); metaOrder.add(PHEROMONE_M); + //ANY INTERNAL RENAMING MUST BE REFLECTED HERE - DON'T FORGET TO CHANGE: LANG FILES + TYPE'S STRING ID + NAME OF TANK/GUI TEXTURE FILES! + // V + + renameMapping.put("ACID", PEROXIDE); + for(FluidType custom : customFluids) metaOrder.add(custom); CHLORINE.addTraits(new FT_Toxin().addEntry(new ToxinDirectDamage(ModDamageSource.cloud, 2F, 20, HazardClass.GAS_LUNG, false))); @@ -869,6 +877,34 @@ public class Fluids { return fluid; } + /** for old worlds with types saved as name, do not use otherwise */ + public static FluidType fromNameCompat(String name) { + if(renameMapping.containsKey(name)) { + FluidType fluid = renameMapping.get(name); + + if(fluid == null) //null safety never killed nobody + fluid = Fluids.NONE; + + return fluid; + } + + return fromName(name); + } + + /** basically the inverse of the above method */ + public static String toNameCompat(FluidType type) { + if(renameMapping.containsValue(type)) { + String name = renameMapping.inverse().get(type); + + if(name == null) //ditto + name = Fluids.NONE.getName(); + + return name; + } + + return type.getName(); + } + public static FluidType[] getAll() { return getInOrder(false); } diff --git a/src/main/java/com/hbm/inventory/fluid/tank/FluidTank.java b/src/main/java/com/hbm/inventory/fluid/tank/FluidTank.java index 4fa6180d8..d30374713 100644 --- a/src/main/java/com/hbm/inventory/fluid/tank/FluidTank.java +++ b/src/main/java/com/hbm/inventory/fluid/tank/FluidTank.java @@ -301,7 +301,7 @@ public class FluidTank { fluid = MathHelper.clamp_int(fluid, 0, max); - type = Fluids.fromName(nbt.getString(s + "_type")); //compat + type = Fluids.fromNameCompat(nbt.getString(s + "_type")); //compat if(type == Fluids.NONE) type = Fluids.fromID(nbt.getInteger(s + "_type")); diff --git a/src/main/java/com/hbm/inventory/gui/GUISILEX.java b/src/main/java/com/hbm/inventory/gui/GUISILEX.java index 722b59878..64b9f36bd 100644 --- a/src/main/java/com/hbm/inventory/gui/GUISILEX.java +++ b/src/main/java/com/hbm/inventory/gui/GUISILEX.java @@ -88,7 +88,7 @@ public class GUISILEX extends GuiInfoContainer { if(silex.tank.getFill() > 0) { - if(silex.tank.getTankType() == Fluids.ACID || silex.fluidConversion.containsKey(silex.tank.getTankType()) || SILEXRecipes.getOutput(new ItemStack(ModItems.fluid_icon, 1, silex.tank.getTankType().getID())) != null) { + if(silex.tank.getTankType() == Fluids.PEROXIDE || silex.fluidConversion.containsKey(silex.tank.getTankType()) || SILEXRecipes.getOutput(new ItemStack(ModItems.fluid_icon, 1, silex.tank.getTankType().getID())) != null) { drawTexturedModalRect(guiLeft + 7, guiTop + 41, 176, 118, 54, 9); } else { drawTexturedModalRect(guiLeft + 7, guiTop + 41, 176, 109, 54, 9); @@ -102,7 +102,7 @@ public class GUISILEX extends GuiInfoContainer { drawTexturedModalRect(guiLeft + 26, guiTop + 124 - f, 176, 109 - f, 16, f); int i = silex.getFluidScaled(52); - drawTexturedModalRect(guiLeft + 8, guiTop + 42, 176, silex.tank.getTankType() == Fluids.ACID ? 43 : 50, i, 7); + drawTexturedModalRect(guiLeft + 8, guiTop + 42, 176, silex.tank.getTankType() == Fluids.PEROXIDE ? 43 : 50, i, 7); } private void drawWave(int x, int y, int height, int width, float resolution, float freq, int color, float thickness, float mult) { diff --git a/src/main/java/com/hbm/inventory/recipes/AssemblerRecipes.java b/src/main/java/com/hbm/inventory/recipes/AssemblerRecipes.java index bf1370413..a0bc052f2 100644 --- a/src/main/java/com/hbm/inventory/recipes/AssemblerRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/AssemblerRecipes.java @@ -738,7 +738,7 @@ public class AssemblerRecipes extends SerializableRecipe { new ComparableStack(ModItems.rocket_fuel, 48), new ComparableStack(ModItems.ball_tatb, 32), new OreDictStack(Fluids.KEROSENE_REFORM.getDict(1_000), 12), - new OreDictStack(Fluids.ACID.getDict(1_000), 12), + new OreDictStack(Fluids.PEROXIDE.getDict(1_000), 12), new ComparableStack(ModItems.circuit, 6, EnumCircuitType.BASIC) }, 100); makeRecipe(new ComparableStack(ModItems.ammo_himars, 1, ItemAmmoHIMARS.SMALL_MINI_NUKE), new AStack[] { @@ -771,7 +771,7 @@ public class AssemblerRecipes extends SerializableRecipe { new ComparableStack(ModItems.rocket_fuel, 36), new ComparableStack(ModItems.ball_tatb, 24), new OreDictStack(Fluids.KEROSENE_REFORM.getDict(1_000), 16), - new OreDictStack(Fluids.ACID.getDict(1_000), 16), + new OreDictStack(Fluids.PEROXIDE.getDict(1_000), 16), new ComparableStack(ModItems.circuit, 1, EnumCircuitType.ADVANCED), }, 100); diff --git a/src/main/java/com/hbm/inventory/recipes/ChemplantRecipes.java b/src/main/java/com/hbm/inventory/recipes/ChemplantRecipes.java index 5eef05234..f39cfe6c3 100644 --- a/src/main/java/com/hbm/inventory/recipes/ChemplantRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/ChemplantRecipes.java @@ -64,10 +64,10 @@ public class ChemplantRecipes extends SerializableRecipe { .outputFluids(new FluidStack(Fluids.NITAN, 1000))); recipes.add(new ChemRecipe(40, "PEROXIDE", 50) .inputFluids(new FluidStack(Fluids.WATER, 1000)) - .outputFluids(new FluidStack(Fluids.ACID, 800))); + .outputFluids(new FluidStack(Fluids.PEROXIDE, 800))); recipes.add(new ChemRecipe(90, "SULFURIC_ACID", 50) .inputItems(new OreDictStack(S.dust())) - .inputFluids(new FluidStack(Fluids.ACID, 800)) + .inputFluids(new FluidStack(Fluids.PEROXIDE, 800)) .outputFluids(new FluidStack(Fluids.SULFURIC_ACID, 500))); recipes.add(new ChemRecipe(92, "NITRIC_ACID", 50) .inputItems(new OreDictStack(KNO.dust())) @@ -142,7 +142,7 @@ public class ChemplantRecipes extends SerializableRecipe { .inputItems( new OreDictStack(U.billet(), 2), //12 nuggets: the numbers do match up :) new OreDictStack(S.dust(), 2)) - .inputFluids(new FluidStack(Fluids.ACID, 500)) + .inputFluids(new FluidStack(Fluids.PEROXIDE, 500)) .outputItems(new ItemStack(ModItems.powder_yellowcake))); recipes.add(new ChemRecipe(47, "UF6", 100) .inputItems( @@ -161,7 +161,7 @@ public class ChemplantRecipes extends SerializableRecipe { .inputItems( new OreDictStack(SA326.dust()), new OreDictStack(S.dust(), 2)) - .inputFluids(new FluidStack(Fluids.ACID, 2000)) + .inputFluids(new FluidStack(Fluids.PEROXIDE, 2000)) .outputFluids(new FluidStack(Fluids.SAS3, 1000))); recipes.add(new ChemRecipe(53, "CORDITE", 40) .inputItems( @@ -236,7 +236,7 @@ public class ChemplantRecipes extends SerializableRecipe { .inputItems(new ComparableStack(ModItems.pellet_charged)) .inputFluids( new FluidStack(Fluids.SAS3, 8000), - new FluidStack(Fluids.ACID, 6000)) + new FluidStack(Fluids.PEROXIDE, 6000)) .outputFluids(new FluidStack(Fluids.SCHRABIDIC, 16000))); recipes.add(new ChemRecipe(64, "SCHRABIDATE", 150) .inputItems(new OreDictStack(IRON.dust())) @@ -247,7 +247,7 @@ public class ChemplantRecipes extends SerializableRecipe { new OreDictStack(COLTAN.dust(), 2), new OreDictStack(COAL.dust())) .inputFluids( - new FluidStack(Fluids.ACID, 250), + new FluidStack(Fluids.PEROXIDE, 250), new FluidStack(Fluids.HYDROGEN, 500)) .outputItems( new ItemStack(ModItems.powder_coltan), @@ -265,7 +265,7 @@ public class ChemplantRecipes extends SerializableRecipe { recipes.add(new ChemRecipe(67, "COLTAN_CRYSTAL", 80) .inputFluids( new FluidStack(Fluids.PAIN, 1000), - new FluidStack(Fluids.ACID, 500)) + new FluidStack(Fluids.PEROXIDE, 500)) .outputItems( new ItemStack(ModItems.gem_tantalium), new ItemStack(ModItems.dust, 3)) @@ -328,7 +328,7 @@ public class ChemplantRecipes extends SerializableRecipe { new ComparableStack(ModItems.powder_paleogenite), new OreDictStack(F.dust(), 8), new ComparableStack(ModItems.nugget_bismuth, 4)) - .inputFluids(new FluidStack(Fluids.ACID, 1000, 5)) + .inputFluids(new FluidStack(Fluids.PEROXIDE, 1000, 5)) .outputFluids(new FluidStack(Fluids.DEATH, 1000, GeneralConfig.enable528 ? 5 : 0))); //one bucket of ethanol equals 275_000 TU using the diesel baseline0 //the coal baseline is 400_000 per piece @@ -342,7 +342,7 @@ public class ChemplantRecipes extends SerializableRecipe { new ComparableStack(Items.dye, 2, 3)) .inputFluids( new FluidStack(Fluids.LUBRICANT, 400), - new FluidStack(Fluids.ACID, 400)) + new FluidStack(Fluids.PEROXIDE, 400)) .outputItems(new ItemStack(ModItems.chocolate, 4))); recipes.add(new ChemRecipe(77, "CO2", 60) .inputFluids(new FluidStack(Fluids.GAS, 1000)) diff --git a/src/main/java/com/hbm/inventory/recipes/CrystallizerRecipes.java b/src/main/java/com/hbm/inventory/recipes/CrystallizerRecipes.java index 8a14ed96f..fcad406b9 100644 --- a/src/main/java/com/hbm/inventory/recipes/CrystallizerRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/CrystallizerRecipes.java @@ -226,7 +226,7 @@ public class CrystallizerRecipes extends SerializableRecipe { } public static void registerRecipe(Object input, CrystallizerRecipe recipe) { - registerRecipe(input, recipe, new FluidStack(Fluids.ACID, 500)); + registerRecipe(input, recipe, new FluidStack(Fluids.PEROXIDE, 500)); } public static void registerRecipe(Object input, CrystallizerRecipe recipe, FluidStack stack) { diff --git a/src/main/java/com/hbm/inventory/recipes/MixerRecipes.java b/src/main/java/com/hbm/inventory/recipes/MixerRecipes.java index 9f66d91c8..2c3486d83 100644 --- a/src/main/java/com/hbm/inventory/recipes/MixerRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/MixerRecipes.java @@ -55,10 +55,10 @@ public class MixerRecipes extends SerializableRecipe { new MixerRecipe(1000, 50).setStack1(new FluidStack(Fluids.NAPHTHA_CRACK, 500)).setStack2(new FluidStack(Fluids.AROMATICS, 500)), new MixerRecipe(1000, 50).setStack1(new FluidStack(Fluids.NAPHTHA_DS, 500)).setStack2(new FluidStack(Fluids.AROMATICS, 500)), new MixerRecipe(1000, 50).setStack1(new FluidStack(Fluids.NAPHTHA_COKER, 500)).setStack2(new FluidStack(Fluids.AROMATICS, 500))); - register(Fluids.SULFURIC_ACID, new MixerRecipe(500, 50).setStack1(new FluidStack(Fluids.ACID, 800)).setSolid(new OreDictStack(S.dust()))); + register(Fluids.SULFURIC_ACID, new MixerRecipe(500, 50).setStack1(new FluidStack(Fluids.PEROXIDE, 800)).setSolid(new OreDictStack(S.dust()))); register(Fluids.NITRIC_ACID, new MixerRecipe(500, 50).setStack1(new FluidStack(Fluids.SULFURIC_ACID, 500)).setSolid(new OreDictStack(KNO.dust()))); register(Fluids.RADIOSOLVENT, new MixerRecipe(1000, 50).setStack1(new FluidStack(Fluids.REFORMGAS, 750)).setStack2(new FluidStack(Fluids.CHLORINE, 250))); - register(Fluids.SCHRABIDIC, new MixerRecipe(16_000, 100).setStack1(new FluidStack(Fluids.SAS3, 8_000)).setStack2(new FluidStack(Fluids.ACID, 6_000)).setSolid(new ComparableStack(ModItems.pellet_charged))); + register(Fluids.SCHRABIDIC, new MixerRecipe(16_000, 100).setStack1(new FluidStack(Fluids.SAS3, 8_000)).setStack2(new FluidStack(Fluids.PEROXIDE, 6_000)).setSolid(new ComparableStack(ModItems.pellet_charged))); register(Fluids.PETROIL, new MixerRecipe(1_000, 30).setStack1(new FluidStack(Fluids.RECLAIMED, 800)).setStack2(new FluidStack(Fluids.LUBRICANT, 200))); register(Fluids.LUBRICANT, diff --git a/src/main/java/com/hbm/inventory/recipes/RadiolysisRecipes.java b/src/main/java/com/hbm/inventory/recipes/RadiolysisRecipes.java index 81ee58e0d..079d3d82c 100644 --- a/src/main/java/com/hbm/inventory/recipes/RadiolysisRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/RadiolysisRecipes.java @@ -47,7 +47,7 @@ public class RadiolysisRecipes { } public static void registerRadiolysis() { - radiolysis.put(Fluids.WATER, new Pair(new FluidStack(80, Fluids.ACID), new FluidStack(20, Fluids.HYDROGEN))); + radiolysis.put(Fluids.WATER, new Pair(new FluidStack(80, Fluids.PEROXIDE), new FluidStack(20, Fluids.HYDROGEN))); //automatically add cracking recipes to the radiolysis recipe list //we want the numbers and types to stay consistent anyway and this will save us a lot of headache later on diff --git a/src/main/java/com/hbm/inventory/recipes/SolderingRecipes.java b/src/main/java/com/hbm/inventory/recipes/SolderingRecipes.java index bd2847d0e..4d9f1cf61 100644 --- a/src/main/java/com/hbm/inventory/recipes/SolderingRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/SolderingRecipes.java @@ -61,7 +61,7 @@ public class SolderingRecipes extends SerializableRecipe { )); recipes.add(new SolderingRecipe(new ItemStack(ModItems.circuit, 1, EnumCircuitType.CAPACITOR_BOARD.ordinal()), 200, 300, - new FluidStack(Fluids.ACID, 250), + new FluidStack(Fluids.PEROXIDE, 250), new AStack[] { new ComparableStack(ModItems.circuit, 3, EnumCircuitType.CAPACITOR_TANTALIUM)}, new AStack[] { diff --git a/src/main/java/com/hbm/items/tool/ItemBlowtorch.java b/src/main/java/com/hbm/items/tool/ItemBlowtorch.java index a3aafa9df..e690582c0 100644 --- a/src/main/java/com/hbm/items/tool/ItemBlowtorch.java +++ b/src/main/java/com/hbm/items/tool/ItemBlowtorch.java @@ -69,7 +69,17 @@ public class ItemBlowtorch extends Item implements IFillableItem { initNBT(stack); } - return stack.stackTagCompound.getInteger(type.getName()); + //just in case + String name = Fluids.toNameCompat(type); + if(stack.stackTagCompound.hasKey(name)) { + int fill = stack.stackTagCompound.getInteger(name); + stack.stackTagCompound.removeTag(name); + stack.stackTagCompound.setInteger(Integer.toString(type.getID()), fill); + + return fill; + } + + return stack.stackTagCompound.getInteger(Integer.toString(type.getID())); } public int getMaxFill(FluidType type) { @@ -85,7 +95,7 @@ public class ItemBlowtorch extends Item implements IFillableItem { initNBT(stack); } - stack.stackTagCompound.setInteger(type.getName(), fill); + stack.stackTagCompound.setInteger(Integer.toString(type.getID()), fill); } public void initNBT(ItemStack stack) { diff --git a/src/main/java/com/hbm/items/tool/ItemPipette.java b/src/main/java/com/hbm/items/tool/ItemPipette.java index 7f9d37a8a..2ac303116 100644 --- a/src/main/java/com/hbm/items/tool/ItemPipette.java +++ b/src/main/java/com/hbm/items/tool/ItemPipette.java @@ -143,7 +143,7 @@ public class ItemPipette extends Item implements IFillableItem { public boolean willFizzle(FluidType type) { if (this != ModItems.pipette) return false; - return type.isCorrosive() && type != Fluids.ACID; + return type.isCorrosive() && type != Fluids.PEROXIDE; } @Override diff --git a/src/main/java/com/hbm/main/CraftingManager.java b/src/main/java/com/hbm/main/CraftingManager.java index 90194bca4..7b2b073e1 100644 --- a/src/main/java/com/hbm/main/CraftingManager.java +++ b/src/main/java/com/hbm/main/CraftingManager.java @@ -442,7 +442,7 @@ public class CraftingManager { addRecipeAuto(new ItemStack(ModBlocks.barbed_wire, 16), new Object[] { "AIA", "I I", "AIA", 'A', STEEL.wireFine(), 'I', IRON.ingot() }); addRecipeAuto(new ItemStack(ModBlocks.barbed_wire_fire, 8), new Object[] { "BBB", "BIB", "BBB", 'B', ModBlocks.barbed_wire, 'I', P_RED.dust() }); addRecipeAuto(new ItemStack(ModBlocks.barbed_wire_poison, 8), new Object[] { "BBB", "BIB", "BBB", 'B', ModBlocks.barbed_wire, 'I', ModItems.powder_poison }); - addRecipeAuto(new ItemStack(ModBlocks.barbed_wire_acid, 8), new Object[] { "BBB", "BIB", "BBB", 'B', ModBlocks.barbed_wire, 'I', new ItemStack(ModItems.fluid_tank_full, 1, Fluids.ACID.getID()) }); + addRecipeAuto(new ItemStack(ModBlocks.barbed_wire_acid, 8), new Object[] { "BBB", "BIB", "BBB", 'B', ModBlocks.barbed_wire, 'I', new ItemStack(ModItems.fluid_tank_full, 1, Fluids.PEROXIDE.getID()) }); addRecipeAuto(new ItemStack(ModBlocks.barbed_wire_wither, 8), new Object[] { "BBB", "BIB", "BBB", 'B', ModBlocks.barbed_wire, 'I', new ItemStack(Items.skull, 1, 1) }); addRecipeAuto(new ItemStack(ModBlocks.barbed_wire_ultradeath, 4), new Object[] { "BCB", "CIC", "BCB", 'B', ModBlocks.barbed_wire, 'C', ModItems.powder_yellowcake, 'I', ModItems.nuclear_waste }); @@ -796,7 +796,7 @@ public class CraftingManager { addRecipeAuto(new ItemStack(ModItems.upgrade_smelter, 1), new Object[] { "PHP", "CUC", "DTD", 'P', CU.plate(), 'H', Blocks.hopper, 'C', ModItems.coil_tungsten, 'U', ModItems.upgrade_template, 'D', ModItems.coil_copper, 'T', ModBlocks.machine_transformer }); addRecipeAuto(new ItemStack(ModItems.upgrade_shredder, 1), new Object[] { "PHP", "CUC", "DTD", 'P', ModItems.motor, 'H', Blocks.hopper, 'C', ModItems.blades_advanced_alloy, 'U', ModItems.upgrade_smelter, 'D', TI.plate(), 'T', ModBlocks.machine_transformer }); addRecipeAuto(new ItemStack(ModItems.upgrade_centrifuge, 1), new Object[] { "PHP", "PUP", "DTD", 'P', ModItems.centrifuge_element, 'H', Blocks.hopper, 'U', ModItems.upgrade_shredder, 'D', ANY_PLASTIC.ingot(), 'T', ModBlocks.machine_transformer }); - addRecipeAuto(new ItemStack(ModItems.upgrade_crystallizer, 1), new Object[] { "PHP", "CUC", "DTD", 'P', new ItemStack(ModItems.fluid_barrel_full, 1, Fluids.ACID.getID()), 'H', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.ADVANCED), 'C', ModBlocks.barrel_steel, 'U', ModItems.upgrade_centrifuge, 'D', ModItems.motor, 'T', ModBlocks.machine_transformer }); + addRecipeAuto(new ItemStack(ModItems.upgrade_crystallizer, 1), new Object[] { "PHP", "CUC", "DTD", 'P', new ItemStack(ModItems.fluid_barrel_full, 1, Fluids.PEROXIDE.getID()), 'H', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.ADVANCED), 'C', ModBlocks.barrel_steel, 'U', ModItems.upgrade_centrifuge, 'D', ModItems.motor, 'T', ModBlocks.machine_transformer }); addRecipeAuto(new ItemStack(ModItems.upgrade_screm, 1), new Object[] { "SUS", "SCS", "SUS", 'S', STEEL.plate(), 'U', ModItems.upgrade_template, 'C', ModItems.crystal_xen }); addRecipeAuto(new ItemStack(ModItems.upgrade_gc_speed, 1), new Object[] {"GNG", "RUR", "GMG", 'R', RUBBER.ingot(), 'M', ModItems.motor, 'G', ModItems.coil_gold, 'N', NB.ingot(), 'U', ModItems.upgrade_template}); diff --git a/src/main/java/com/hbm/tileentity/bomb/TileEntityCompactLauncher.java b/src/main/java/com/hbm/tileentity/bomb/TileEntityCompactLauncher.java index 3266a973f..9567f3bff 100644 --- a/src/main/java/com/hbm/tileentity/bomb/TileEntityCompactLauncher.java +++ b/src/main/java/com/hbm/tileentity/bomb/TileEntityCompactLauncher.java @@ -472,7 +472,7 @@ public class TileEntityCompactLauncher extends TileEntityLoadedBase implements I switch((FuelType)fuselage.attributes[0]) { case KEROSENE: tanks[0].setTankType(Fluids.KEROSENE); - tanks[1].setTankType(Fluids.ACID); + tanks[1].setTankType(Fluids.PEROXIDE); break; case HYDROGEN: tanks[0].setTankType(Fluids.HYDROGEN); @@ -483,7 +483,7 @@ public class TileEntityCompactLauncher extends TileEntityLoadedBase implements I break; case BALEFIRE: tanks[0].setTankType(Fluids.BALEFIRE); - tanks[1].setTankType(Fluids.ACID); + tanks[1].setTankType(Fluids.PEROXIDE); break; default: break; } diff --git a/src/main/java/com/hbm/tileentity/bomb/TileEntityLaunchPadBase.java b/src/main/java/com/hbm/tileentity/bomb/TileEntityLaunchPadBase.java index d73ed90bf..3d36b7ff1 100644 --- a/src/main/java/com/hbm/tileentity/bomb/TileEntityLaunchPadBase.java +++ b/src/main/java/com/hbm/tileentity/bomb/TileEntityLaunchPadBase.java @@ -284,11 +284,11 @@ public abstract class TileEntityLaunchPadBase extends TileEntityMachineBase impl switch(missile.fuel) { case ETHANOL_PEROXIDE: tanks[0].setTankType(Fluids.ETHANOL); - tanks[1].setTankType(Fluids.ACID); + tanks[1].setTankType(Fluids.PEROXIDE); break; case KEROSENE_PEROXIDE: tanks[0].setTankType(Fluids.KEROSENE); - tanks[1].setTankType(Fluids.ACID); + tanks[1].setTankType(Fluids.PEROXIDE); break; case KEROSENE_LOXY: tanks[0].setTankType(Fluids.KEROSENE); diff --git a/src/main/java/com/hbm/tileentity/bomb/TileEntityLaunchTable.java b/src/main/java/com/hbm/tileentity/bomb/TileEntityLaunchTable.java index 3259452ce..9123d3aa0 100644 --- a/src/main/java/com/hbm/tileentity/bomb/TileEntityLaunchTable.java +++ b/src/main/java/com/hbm/tileentity/bomb/TileEntityLaunchTable.java @@ -467,7 +467,7 @@ public class TileEntityLaunchTable extends TileEntityLoadedBase implements ISide switch((FuelType)fuselage.attributes[0]) { case KEROSENE: tanks[0].setTankType(Fluids.KEROSENE); - tanks[1].setTankType(Fluids.ACID); + tanks[1].setTankType(Fluids.PEROXIDE); break; case HYDROGEN: tanks[0].setTankType(Fluids.HYDROGEN); @@ -478,7 +478,7 @@ public class TileEntityLaunchTable extends TileEntityLoadedBase implements ISide break; case BALEFIRE: tanks[0].setTankType(Fluids.BALEFIRE); - tanks[1].setTankType(Fluids.ACID); + tanks[1].setTankType(Fluids.PEROXIDE); break; default: break; } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityCore.java b/src/main/java/com/hbm/tileentity/machine/TileEntityCore.java index 13c6a2036..a30090384 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityCore.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityCore.java @@ -257,7 +257,7 @@ public class TileEntityCore extends TileEntityMachineBase implements IGUIProvide return 1.7F; if(type == Fluids.OXYGEN) return 1.2F; - if(type == Fluids.ACID) + if(type == Fluids.PEROXIDE) return 1.4F; if(type == Fluids.XENON) return 1.5F; diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCrystallizer.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCrystallizer.java index 3ead60a33..b0dc6c35f 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCrystallizer.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCrystallizer.java @@ -53,7 +53,7 @@ public class TileEntityMachineCrystallizer extends TileEntityMachineBase impleme public TileEntityMachineCrystallizer() { super(8); - tank = new FluidTank(Fluids.ACID, 8000); + tank = new FluidTank(Fluids.PEROXIDE, 8000); } @Override diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineMiningLaser.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineMiningLaser.java index 018855a6b..6f97159d8 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineMiningLaser.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineMiningLaser.java @@ -266,7 +266,7 @@ public class TileEntityMachineMiningLaser extends TileEntityMachineBase implemen if(stack != null && stack.getItem() != null) { if(hasCrystallizer()) { - CrystallizerRecipe result = CrystallizerRecipes.getOutput(stack, Fluids.ACID); + CrystallizerRecipe result = CrystallizerRecipes.getOutput(stack, Fluids.PEROXIDE); if(result == null) result = CrystallizerRecipes.getOutput(stack, Fluids.SULFURIC_ACID); if(result != null) { diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntitySILEX.java b/src/main/java/com/hbm/tileentity/machine/TileEntitySILEX.java index ffaf2871f..3be37d486 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntitySILEX.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntitySILEX.java @@ -53,7 +53,7 @@ public class TileEntitySILEX extends TileEntityMachineBase implements IFluidAcce public TileEntitySILEX() { super(11); - tank = new FluidTank(Fluids.ACID, 16000, 0); + tank = new FluidTank(Fluids.PEROXIDE, 16000, 0); } @Override @@ -188,7 +188,7 @@ public class TileEntitySILEX extends TileEntityMachineBase implements IFluidAcce if(loadDelay > 20) loadDelay = 0; - if(loadDelay == 0 && slots[0] != null && tank.getTankType() == Fluids.ACID && (this.current == null || this.current.equals(new ComparableStack(slots[0]).makeSingular()))) { + if(loadDelay == 0 && slots[0] != null && tank.getTankType() == Fluids.PEROXIDE && (this.current == null || this.current.equals(new ComparableStack(slots[0]).makeSingular()))) { SILEXRecipe recipe = SILEXRecipes.getOutput(slots[0]); if(recipe == null) diff --git a/src/main/java/com/hbm/wiaj/cannery/CannerySILEX.java b/src/main/java/com/hbm/wiaj/cannery/CannerySILEX.java index 30e0c66e3..5d6900f75 100644 --- a/src/main/java/com/hbm/wiaj/cannery/CannerySILEX.java +++ b/src/main/java/com/hbm/wiaj/cannery/CannerySILEX.java @@ -184,7 +184,7 @@ public class CannerySILEX extends CanneryBase { scene1.add(new ActionWait(10)); TileEntityPipeBaseNT duct = new TileEntityPipeBaseNT(); - duct.setType(Fluids.ACID); + duct.setType(Fluids.PEROXIDE); scene1.add(new ActionSetTile(5, 2, 0, duct)); scene1.add(new ActionSetTile(5, 1, 0, duct)); scene1.add(new ActionSetTile(6, 1, 0, duct)); diff --git a/src/main/java/com/hbm/world/feature/BedrockOre.java b/src/main/java/com/hbm/world/feature/BedrockOre.java index 2f4258234..f4586c795 100644 --- a/src/main/java/com/hbm/world/feature/BedrockOre.java +++ b/src/main/java/com/hbm/world/feature/BedrockOre.java @@ -35,19 +35,19 @@ public class BedrockOre { registerBedrockOre(weightedOres, new BedrockOreDefinition(EnumBedrockOre.BORAX, 3, new FluidStack(Fluids.SULFURIC_ACID, 500)), WorldConfig.bedrockBoraxSpawn); registerBedrockOre(weightedOres, new BedrockOreDefinition(EnumBedrockOre.CHLOROCALCITE, 3, new FluidStack(Fluids.SULFURIC_ACID, 500)), WorldConfig.bedrockChlorocalciteSpawn); registerBedrockOre(weightedOres, new BedrockOreDefinition(EnumBedrockOre.ASBESTOS, 2), WorldConfig.bedrockAsbestosSpawn); - registerBedrockOre(weightedOres, new BedrockOreDefinition(EnumBedrockOre.NIOBIUM, 2, new FluidStack(Fluids.ACID, 500)), WorldConfig.bedrockNiobiumSpawn); - registerBedrockOre(weightedOres, new BedrockOreDefinition(EnumBedrockOre.NEODYMIUM, 3, new FluidStack(Fluids.ACID, 500)), WorldConfig.bedrockNeodymiumSpawn); + registerBedrockOre(weightedOres, new BedrockOreDefinition(EnumBedrockOre.NIOBIUM, 2, new FluidStack(Fluids.PEROXIDE, 500)), WorldConfig.bedrockNiobiumSpawn); + registerBedrockOre(weightedOres, new BedrockOreDefinition(EnumBedrockOre.NEODYMIUM, 3, new FluidStack(Fluids.PEROXIDE, 500)), WorldConfig.bedrockNeodymiumSpawn); registerBedrockOre(weightedOres, new BedrockOreDefinition(EnumBedrockOre.TITANIUM, 2, new FluidStack(Fluids.SULFURIC_ACID, 500)), WorldConfig.bedrockTitaniumSpawn); - registerBedrockOre(weightedOres, new BedrockOreDefinition(EnumBedrockOre.TUNGSTEN, 2, new FluidStack(Fluids.ACID, 500)), WorldConfig.bedrockTungstenSpawn); + registerBedrockOre(weightedOres, new BedrockOreDefinition(EnumBedrockOre.TUNGSTEN, 2, new FluidStack(Fluids.PEROXIDE, 500)), WorldConfig.bedrockTungstenSpawn); registerBedrockOre(weightedOres, new BedrockOreDefinition(EnumBedrockOre.GOLD, 1), WorldConfig.bedrockGoldSpawn); registerBedrockOre(weightedOres, new BedrockOreDefinition(EnumBedrockOre.URANIUM, 4, new FluidStack(Fluids.SULFURIC_ACID, 500)), WorldConfig.bedrockUraniumSpawn); registerBedrockOre(weightedOres, new BedrockOreDefinition(EnumBedrockOre.THORIUM, 4, new FluidStack(Fluids.SULFURIC_ACID, 500)), WorldConfig.bedrockThoriumSpawn); registerBedrockOre(weightedOres, new BedrockOreDefinition(EnumBedrockOre.FLUORITE, 1), WorldConfig.bedrockFluoriteSpawn); registerBedrockOre(weightedOres, new BedrockOreDefinition(new ItemStack(Items.coal, 8), 1, 0x202020), WorldConfig.bedrockCoalSpawn); - registerBedrockOre(weightedOres, new BedrockOreDefinition(new ItemStack(ModItems.niter, 4), 2, 0x808080, new FluidStack(Fluids.ACID, 500)), WorldConfig.bedrockNiterSpawn); + registerBedrockOre(weightedOres, new BedrockOreDefinition(new ItemStack(ModItems.niter, 4), 2, 0x808080, new FluidStack(Fluids.PEROXIDE, 500)), WorldConfig.bedrockNiterSpawn); registerBedrockOre(weightedOres, new BedrockOreDefinition(new ItemStack(Items.redstone, 4), 1, 0xd01010), WorldConfig.bedrockRedstoneSpawn); registerBedrockOre(weightedOres, new BedrockOreDefinition(new ItemStack(Items.emerald, 4), 1, 0x3FDD85), WorldConfig.bedrockEmeraldSpawn); - registerBedrockOre(weightedOres, new BedrockOreDefinition(DictFrame.fromOne(ModItems.chunk_ore, EnumChunkType.RARE), 2, 0x8F9999, new FluidStack(Fluids.ACID, 500)), WorldConfig.bedrockRareEarthSpawn); + registerBedrockOre(weightedOres, new BedrockOreDefinition(DictFrame.fromOne(ModItems.chunk_ore, EnumChunkType.RARE), 2, 0x8F9999, new FluidStack(Fluids.PEROXIDE, 500)), WorldConfig.bedrockRareEarthSpawn); registerBedrockOre(weightedOres, new BedrockOreDefinition(DictFrame.fromOne(ModBlocks.stone_resource, EnumStoneType.BAUXITE, 2),1, 0xEF7213), WorldConfig.bedrockBauxiteSpawn); registerBedrockOre(weightedOresNether, new BedrockOreDefinition(new ItemStack(Items.glowstone_dust, 4), 1, 0xF9FF4D), WorldConfig.bedrockGlowstoneSpawn); diff --git a/src/main/resources/assets/hbm/lang/de_DE.lang b/src/main/resources/assets/hbm/lang/de_DE.lang index c626ce9c3..160e7c76c 100644 --- a/src/main/resources/assets/hbm/lang/de_DE.lang +++ b/src/main/resources/assets/hbm/lang/de_DE.lang @@ -653,7 +653,6 @@ hbm.key.toggleBack=Rucksack umschalten hbm.key.toggleHUD=HUD umschalten hbm.key.reload=Nachladen -hbmfluid.acid=Wasserstoffperoxid hbmfluid.amat=Antimaterie hbmfluid.aromatics=Aromatische Kohlenwasserstoffe hbmfluid.aschrab=Antischrabidium @@ -739,6 +738,7 @@ hbmfluid.oil_coker=Koker-Öl hbmfluid.oxyhydrogen=Knallgas hbmfluid.oxygen=Flüssiger Sauerstoff hbmfluid.pain=Pandemonium(III)tantalit-Lösung +hbmfluid.peroxide=Wasserstoffperoxid hbmfluid.petroil=Gemisch hbmfluid.petroil_leaded=Bleigemisch hbmfluid.petroleum=Petroleumgas diff --git a/src/main/resources/assets/hbm/lang/en_NT.lang b/src/main/resources/assets/hbm/lang/en_NT.lang index 1667e5909..8f694f8e2 100644 --- a/src/main/resources/assets/hbm/lang/en_NT.lang +++ b/src/main/resources/assets/hbm/lang/en_NT.lang @@ -69,7 +69,7 @@ hbmfluid.heatingoil=Heating Oil hbmfluid.naphtha=Naphtha hbmfluid.lightoil=Light Oil hbmfluid.petroleum=Petroleum Gas -hbmfluid.acid=Hydrogen Peroxide +hbmfluid.peroxide=Hydrogen Peroxide hbmfluid.watz=Poisonous Mud hbmfluid.biogas=Biogas hbmfluid.biofuel=Biofuel diff --git a/src/main/resources/assets/hbm/lang/en_US.lang b/src/main/resources/assets/hbm/lang/en_US.lang index 73b5faf11..88fae2ad4 100644 --- a/src/main/resources/assets/hbm/lang/en_US.lang +++ b/src/main/resources/assets/hbm/lang/en_US.lang @@ -1341,7 +1341,6 @@ hbm.key.toggleBack=Toggle Backpack hbm.key.toggleHUD=Toggle HUD hbm.key.reload=Reload -hbmfluid.acid=Hydrogen Peroxide hbmfluid.amat=Antimatter hbmfluid.aromatics=Aromatic Hydrocarbons hbmfluid.aschrab=Antischrabidium @@ -1428,6 +1427,7 @@ hbmfluid.oil_ds=Desulfurized Crude Oil hbmfluid.oxygen=Liquid Oxygen hbmfluid.oxyhydrogen=Oxyhydrogen hbmfluid.pain=Pandemonium(III)tantalite Solution +hbmfluid.peroxide=Hydrogen Peroxide hbmfluid.petroil=Petroil hbmfluid.petroil_leaded=Leaded Petroil hbmfluid.petroleum=Petroleum Gas diff --git a/src/main/resources/assets/hbm/lang/fr_FR.lang b/src/main/resources/assets/hbm/lang/fr_FR.lang index 9b13a0db9..502021ea3 100644 --- a/src/main/resources/assets/hbm/lang/fr_FR.lang +++ b/src/main/resources/assets/hbm/lang/fr_FR.lang @@ -37,7 +37,7 @@ hbmfluid.heatingoil=Huile de chauffage hbmfluid.naphtha=Naphta hbmfluid.lightoil=Huile légère hbmfluid.petroleum=Gaz pétrolier -hbmfluid.acid=Peroxyde d'hydrogène +hbmfluid.peroxide=Peroxyde d'hydrogène hbmfluid.watz=Boue vénéneuse hbmfluid.biogas=Biogaz hbmfluid.biofuel=Biocarburant diff --git a/src/main/resources/assets/hbm/lang/it_IT.lang b/src/main/resources/assets/hbm/lang/it_IT.lang index a9e0d93f9..23ce40e76 100644 --- a/src/main/resources/assets/hbm/lang/it_IT.lang +++ b/src/main/resources/assets/hbm/lang/it_IT.lang @@ -1338,7 +1338,6 @@ hbm.key.toggleBack=Toggle Backpack hbm.key.toggleHUD=Toggle HUD hbm.key.reload=Reload -hbmfluid.acid=Hydrogen Peroxide hbmfluid.amat=Antimatter hbmfluid.aromatics=Aromatic Hydrocarbons hbmfluid.aschrab=Antischrabidium @@ -1425,6 +1424,7 @@ hbmfluid.oil_ds=Desulfurized Crude Oil hbmfluid.oxygen=Liquid Oxygen hbmfluid.oxyhydrogen=Oxyhydrogen hbmfluid.pain=Pandemonium(III)tantalite Solution +hbmfluid.peroxide=Hydrogen Peroxide hbmfluid.petroil=Petroil hbmfluid.petroil_leaded=Leaded Petroil hbmfluid.petroleum=Petroleum Gas diff --git a/src/main/resources/assets/hbm/lang/pl_PL.lang b/src/main/resources/assets/hbm/lang/pl_PL.lang index 0fd01861e..1307d0b8b 100644 --- a/src/main/resources/assets/hbm/lang/pl_PL.lang +++ b/src/main/resources/assets/hbm/lang/pl_PL.lang @@ -1247,7 +1247,6 @@ hbm.key.toggleBack=Włącz/wyłącz plecak hbm.key.toggleHUD=Włącz/wyłącz HUD hbm.key.reload=Przeładuj -hbmfluid.acid=Nadtlenek wodoru hbmfluid.amat=Antymateria hbmfluid.aromatics=Węglowodory aromatyczne hbmfluid.aschrab=Antyschrabid @@ -1326,6 +1325,7 @@ hbmfluid.oil_coker=Olej koksowniczy hbmfluid.oxygen=Ciekły tlen hbmfluid.oxyhydrogen=Tlenowodór hbmfluid.pain=Roztwór tantalitu pandemonium(III). +hbmfluid.peroxide=Nadtlenek wodoru hbmfluid.petroil=Benzyna hbmfluid.petroil_leaded=Benzyna ołowiowa hbmfluid.petroleum=Gaz z ropy naftowej diff --git a/src/main/resources/assets/hbm/lang/ru_RU.lang b/src/main/resources/assets/hbm/lang/ru_RU.lang index 4a3596cc1..93891eb03 100644 --- a/src/main/resources/assets/hbm/lang/ru_RU.lang +++ b/src/main/resources/assets/hbm/lang/ru_RU.lang @@ -1169,7 +1169,7 @@ hbmfluid.naphtha=Нафта hbmfluid.lightoil=Легкая нефть hbmfluid.petroleum=Попутный нефтяной газ hbmfluid.lpg=Сжиженный попутный газ (СПГ) -hbmfluid.acid=Пероксид водорода +hbmfluid.peroxide=Пероксид водорода hbmfluid.watz=Токсичные отходы hbmfluid.wastefluid=Жидкие ядерные отходы hbmfluid.wastegas=Газовые ядерные отходы diff --git a/src/main/resources/assets/hbm/lang/zh_CN.lang b/src/main/resources/assets/hbm/lang/zh_CN.lang index 03c54c1b8..523c767be 100644 --- a/src/main/resources/assets/hbm/lang/zh_CN.lang +++ b/src/main/resources/assets/hbm/lang/zh_CN.lang @@ -1230,7 +1230,6 @@ hbm.key.dash=冲刺 (在config中解绑) hbm.key.toggleBack=开关 喷气背包 hbm.key.toggleHUD=开关 HUD hbm.key.reload=装弹 -hbmfluid.acid=过氧化氢 hbmfluid.amat=反物质 hbmfluid.aromatics=芳香烃 hbmfluid.aschrab=反Sa326 @@ -1317,6 +1316,7 @@ hbmfluid.oil_ds=脱硫原油 hbmfluid.oxygen=液氧 hbmfluid.oxyhydrogen=氢氧混合气 hbmfluid.pain=Pn(III) 钽铁溶液 +hbmfluid.peroxide=过氧化氢 hbmfluid.petroil=汽油 hbmfluid.petroil_leaded=含铅石油 hbmfluid.petroleum=石油气 diff --git a/src/main/resources/assets/hbm/textures/gui/fluids/acid.png b/src/main/resources/assets/hbm/textures/gui/fluids/peroxide.png similarity index 100% rename from src/main/resources/assets/hbm/textures/gui/fluids/acid.png rename to src/main/resources/assets/hbm/textures/gui/fluids/peroxide.png diff --git a/src/main/resources/assets/hbm/textures/models/tank/tank_ACID.png b/src/main/resources/assets/hbm/textures/models/tank/tank_PEROXIDE.png similarity index 100% rename from src/main/resources/assets/hbm/textures/models/tank/tank_ACID.png rename to src/main/resources/assets/hbm/textures/models/tank/tank_PEROXIDE.png From 34092c375dfd912383a2acd8461dac86ad43c143 Mon Sep 17 00:00:00 2001 From: Boblet Date: Mon, 27 May 2024 16:06:06 +0200 Subject: [PATCH 02/69] bash it with a rock a couple of times --- changelog | 45 +++---------------- .../java/com/hbm/crafting/PowderRecipes.java | 8 +++- .../ContainerMachineArcFurnaceLarge.java | 9 ++-- .../inventory/recipes/ShredderRecipes.java | 8 +--- src/main/java/com/hbm/items/ModItems.java | 7 ++- .../TileEntityMachineArcFurnaceLarge.java | 29 +++++++++++- 6 files changed, 53 insertions(+), 53 deletions(-) diff --git a/changelog b/changelog index 51b49850a..d413388bb 100644 --- a/changelog +++ b/changelog @@ -1,42 +1,9 @@ -## Added -* Arc furnace - * A large version of the arc furnace that can do several types of recipe - * Solid mode smelts items like a furnace, however to work the recipe needs an ingredient or result that is oredicted as either an ore, block, ingot or plate - * Liquid mode smelts items like a crucible would, effectively liquiefying metals. Non-castable materials are voided - * Both modes have arc furnace exclusive recipes (smelting sand/quartz/fiberglass into silicon) - * Can be upgraded only with regular speed upgrades -* Soldering station - * Works similar to arc welders - * Used to assemble circuits from parts -* New circuits - * The old circuits will be phased out, the items remain but can be recycled - * Circuits use an entirely new approach for crafting, instead of upgrading tiers constantly, all circuits are made from common parts - * Circuits can be automated entirely with only autocrafters, presses and the soldering station, no assembler or chemplant required - * Legacy circuits can be recycled in any anvil, yielding the roughly equivalent new circuit - ## Changed -* Updated russian and italian localization -* Nerfed conventional explosives (dynamite, TNT, semtex, C4) in order to not outclass small nukes -* Plastic explosive blocks no longer drop and blocks -* Sellafite diamond ore now shreds into diamond gravel -* ICF vessel blocks now use half as much fullerite as before -* ICF capacitor and turbocharger blocks are now quite a bit cheaper -* MEP is no longer self-igniting -* The foundry storage basin now holds 4 blocks worth of material instead of 1 -* The small arc furnace is being retired and is no longer craftable. However, it will still function, and it can use any type of electrode without depleting it -* Wires now use the autogen system and are oredicted with the "wireFine" prefix (equivalent to GT fine wires, 1/8 of an ingot) -* Removed the assembler recipes for wires -* Increased the maximum durability for all stamps -* All upgrades now use the soldering station for their recipes, except for overdrive -* Overdrive upgrade recipes have been rebalanced +* The powder combination recipe for steel powder now yields steel scraps instead, meaning that it has to be smelted either via crucible or arc furnace + * In addition, there is now an alternate recipe combining four times the material, yielding larger steel scraps, allowing for higher throughput +* The new autogen wire items now use texture overrides, restoring the original textures +* Arc furnaces now start burning on the inside as the electrodes are inserted, making the process look a lot more violent ## Fixed -* Fixed missing localization for meteorite ores and the new crucible materials -* Removed the starmetal crystallization recipe, despite starmetal ore no longer existing -* Fixed the ICF structure block detection being incorrect, omitting some parts -* Fixed armor mods adding health showing only half as much as they actually do -* Fixed RBMK fuel xenon burn function being described wrong -* When converting ComparableStacks to ItemStacks, there is now a check that replaces null items with the nothing placeholder, fixing crashes caused by incorrect recipe configuration -* Fixed item icon lighting in the anvil's search field -* Fixed custom machine NEI handlers (again) -* Fixed FEL making sounds when turned on but not actually active +* Removed sand to silicon AE2 compat recipe which caused sand to be shreddable into the new silicon wafers, skipping the arc furnace entirely +* Fixed shift clicking into the arc furnace placing the entire stack into a single slot, ignoring stacksize limitations diff --git a/src/main/java/com/hbm/crafting/PowderRecipes.java b/src/main/java/com/hbm/crafting/PowderRecipes.java index 20eb1a2f1..42776ec55 100644 --- a/src/main/java/com/hbm/crafting/PowderRecipes.java +++ b/src/main/java/com/hbm/crafting/PowderRecipes.java @@ -4,8 +4,12 @@ import static com.hbm.inventory.OreDictManager.*; import com.hbm.config.GeneralConfig; import com.hbm.inventory.fluid.Fluids; +import com.hbm.inventory.material.MaterialShapes; +import com.hbm.inventory.material.Mats; +import com.hbm.inventory.material.Mats.MaterialStack; import com.hbm.items.ModItems; import com.hbm.items.machine.ItemChemicalDye.EnumChemDye; +import com.hbm.items.machine.ItemScraps; import com.hbm.main.CraftingManager; import net.minecraft.init.Blocks; @@ -55,7 +59,9 @@ public class PowderRecipes { //Metal powders CraftingManager.addShapelessAuto(new ItemStack(ModItems.powder_magnetized_tungsten, 1), new Object[] { W.dust(), SA326.nugget() }); CraftingManager.addShapelessAuto(new ItemStack(ModItems.powder_tcalloy, 1), new Object[] { STEEL.dust(), TC99.nugget() }); - CraftingManager.addShapelessAuto(new ItemStack(ModItems.powder_steel, 1), new Object[] { IRON.dust(), COAL.dust() }); + + CraftingManager.addShapelessAuto(ItemScraps.create(new MaterialStack(Mats.MAT_STEEL, MaterialShapes.INGOT.q(1))), new Object[] { IRON.dust(), COAL.dust() }); + CraftingManager.addShapelessAuto(ItemScraps.create(new MaterialStack(Mats.MAT_STEEL, MaterialShapes.INGOT.q(4))), new Object[] { IRON.dust(), IRON.dust(), IRON.dust(), IRON.dust(), COAL.dust(), COAL.dust(), COAL.dust(), COAL.dust() }); CraftingManager.addShapelessAuto(new ItemStack(ModItems.powder_flux, 1), new Object[] { new ItemStack(Items.coal, 1, 1), KEY_SAND }); CraftingManager.addShapelessAuto(new ItemStack(ModItems.powder_flux, 2), new Object[] { COAL.dust(), KEY_SAND }); diff --git a/src/main/java/com/hbm/inventory/container/ContainerMachineArcFurnaceLarge.java b/src/main/java/com/hbm/inventory/container/ContainerMachineArcFurnaceLarge.java index d445788e7..a3be25b0c 100644 --- a/src/main/java/com/hbm/inventory/container/ContainerMachineArcFurnaceLarge.java +++ b/src/main/java/com/hbm/inventory/container/ContainerMachineArcFurnaceLarge.java @@ -4,6 +4,7 @@ import com.hbm.inventory.SlotNonRetarded; import com.hbm.items.ModItems; import com.hbm.items.machine.ItemMachineUpgrade; import com.hbm.tileentity.machine.TileEntityMachineArcFurnaceLarge; +import com.hbm.util.InventoryUtil; import api.hbm.energymk2.IBatteryItem; import net.minecraft.entity.player.EntityPlayer; @@ -56,13 +57,13 @@ public class ContainerMachineArcFurnaceLarge extends Container { } else { if(rStack.getItem() instanceof IBatteryItem || rStack.getItem() == ModItems.battery_creative) { - if(!this.mergeItemStack(stack, 3, 4, false)) return null; + if(!InventoryUtil.mergeItemStack(this.inventorySlots, stack, 3, 4, false)) return null; } else if(rStack.getItem() == ModItems.arc_electrode) { - if(!this.mergeItemStack(stack, 4, 5, false)) return null; + if(!InventoryUtil.mergeItemStack(this.inventorySlots, stack, 4, 5, false)) return null; } else if(rStack.getItem() instanceof ItemMachineUpgrade) { - if(!this.mergeItemStack(stack, 0, 3, false)) return null; + if(!InventoryUtil.mergeItemStack(this.inventorySlots, stack, 0, 3, false)) return null; } else { - if(!this.mergeItemStack(stack, 5, 25, false)) return null; + if(!InventoryUtil.mergeItemStack(this.inventorySlots, stack, 5, 25, false)) return null; } } diff --git a/src/main/java/com/hbm/inventory/recipes/ShredderRecipes.java b/src/main/java/com/hbm/inventory/recipes/ShredderRecipes.java index f9a436189..d7f41593e 100644 --- a/src/main/java/com/hbm/inventory/recipes/ShredderRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/ShredderRecipes.java @@ -207,6 +207,7 @@ public class ShredderRecipes extends SerializableRecipe { ShredderRecipes.setRecipe(ModItems.can_empty, new ItemStack(ModItems.powder_aluminium, 2)); ShredderRecipes.setRecipe(ModBlocks.machine_well, new ItemStack(ModItems.powder_steel, 32)); ShredderRecipes.setRecipe(DictFrame.fromOne(ModItems.chunk_ore, EnumChunkType.RARE), new ItemStack(ModItems.powder_desh_mix)); + ShredderRecipes.setRecipe(Blocks.sand, new ItemStack(ModItems.dust, 2)); List logs = OreDictionary.getOres("logWood"); List planks = OreDictionary.getOres("plankWood"); @@ -215,13 +216,6 @@ public class ShredderRecipes extends SerializableRecipe { for(ItemStack log : logs) ShredderRecipes.setRecipe(log, new ItemStack(ModItems.powder_sawdust, 4)); for(ItemStack plank : planks) ShredderRecipes.setRecipe(plank, new ItemStack(ModItems.powder_sawdust, 1)); for(ItemStack sapling : saplings) ShredderRecipes.setRecipe(sapling, new ItemStack(Items.stick, 1)); - - List silicon = OreDictionary.getOres("itemSilicon"); - if(!silicon.isEmpty()) { - ShredderRecipes.setRecipe(Blocks.sand, silicon.get(0).copy()); - } else { - ShredderRecipes.setRecipe(Blocks.sand, new ItemStack(ModItems.dust, 2)); - } for(EnumBedrockOre ore : EnumBedrockOre.values()) { int i = ore.ordinal(); diff --git a/src/main/java/com/hbm/items/ModItems.java b/src/main/java/com/hbm/items/ModItems.java index 0d379ae56..fa8b6b902 100644 --- a/src/main/java/com/hbm/items/ModItems.java +++ b/src/main/java/com/hbm/items/ModItems.java @@ -3282,7 +3282,12 @@ public class ModItems { plate_cast = new ItemAutogen(MaterialShapes.CASTPLATE).aot(Mats.MAT_BISMUTH, "plate_cast_bismuth").setUnlocalizedName("plate_cast").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":plate_cast"); plate_welded = new ItemAutogen(MaterialShapes.WELDEDPLATE).setUnlocalizedName("plate_welded").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":plate_welded"); heavy_component = new ItemAutogen(MaterialShapes.HEAVY_COMPONENT).setUnlocalizedName("heavy_component").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":heavy_component"); - wire_fine = new ItemAutogen(MaterialShapes.WIRE).setUnlocalizedName("wire_fine").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":wire_fine"); + wire_fine = new ItemAutogen(MaterialShapes.WIRE) + .aot(Mats.MAT_ALUMINIUM, "wire_aluminium").aot(Mats.MAT_COPPER, "wire_copper") + .aot(Mats.MAT_MINGRADE, "wire_red_copper").aot(Mats.MAT_GOLD, "wire_gold") + .aot(Mats.MAT_TUNGSTEN, "wire_tungsten").aot(Mats.MAT_ALLOY, "wire_advanced_alloy") + .aot(Mats.MAT_CARBON, "wire_carbon").aot(Mats.MAT_SCHRABIDIUM, "wire_schrabidium") + .aot(Mats.MAT_MAGTUNG, "wire_magnetized_tungsten").setUnlocalizedName("wire_fine").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":wire_fine"); wire_dense = new ItemAutogen(MaterialShapes.DENSEWIRE).setUnlocalizedName("wire_dense").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":wire_dense"); part_lithium = new Item().setUnlocalizedName("part_lithium").setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":part_lithium"); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineArcFurnaceLarge.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineArcFurnaceLarge.java index dcf646ac9..fd280bc61 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineArcFurnaceLarge.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineArcFurnaceLarge.java @@ -211,7 +211,7 @@ public class TileEntityMachineArcFurnaceLarge extends TileEntityMachineBase impl } } - if(this.lid != this.prevLid && this.lid > this.prevLid && MainRegistry.proxy.me().getDistance(xCoord + 0.5, yCoord + 4, zCoord + 0.5) < 50) { + if(this.lid != this.prevLid && this.lid > this.prevLid && !(this.prevLid == 0 && this.lid == 1) && MainRegistry.proxy.me().getDistance(xCoord + 0.5, yCoord + 4, zCoord + 0.5) < 50) { NBTTagCompound data = new NBTTagCompound(); data.setString("type", "tower"); data.setFloat("lift", 0.01F); @@ -227,6 +227,33 @@ public class TileEntityMachineArcFurnaceLarge extends TileEntityMachineBase impl data.setFloat("strafe", 0.05F); for(int i = 0; i < 3; i++) MainRegistry.proxy.effectNT(data); } + + if(this.lid != this.prevLid && this.lid < this.prevLid && this.lid > 0.5F && this.hasMaterial && MainRegistry.proxy.me().getDistance(xCoord + 0.5, yCoord + 4, zCoord + 0.5) < 50) { + /*NBTTagCompound data = new NBTTagCompound(); + data.setString("type", "tower"); + data.setFloat("lift", 0.01F); + data.setFloat("base", 0.5F); + data.setFloat("max", 2F); + data.setInteger("life", 50 + worldObj.rand.nextInt(20)); + data.setDouble("posX", xCoord + 0.5 + worldObj.rand.nextGaussian() * 0.25); + data.setDouble("posZ", zCoord + 0.5 + worldObj.rand.nextGaussian() * 0.25); + data.setDouble("posY", yCoord + 4); + data.setBoolean("noWind", true); + data.setFloat("alphaMod", prevLid / lid); + data.setInteger("color", 0x808080); + data.setFloat("strafe", 0.15F); + MainRegistry.proxy.effectNT(data);*/ + + if(worldObj.rand.nextInt(5) == 0) { + NBTTagCompound flame = new NBTTagCompound(); + flame.setString("type", "rbmkflame"); + flame.setDouble("posX", xCoord + 0.5 + worldObj.rand.nextGaussian() * 0.5); + flame.setDouble("posZ", zCoord + 0.5 + worldObj.rand.nextGaussian() * 0.5); + flame.setDouble("posY", yCoord + 2.75); + flame.setInteger("maxAge", 50); + for(int i = 0; i < 2; i++) MainRegistry.proxy.effectNT(flame); + } + } } } From 6f2494b8c87ac094c534097eb77d4bf26a20ae98 Mon Sep 17 00:00:00 2001 From: Bob Date: Mon, 27 May 2024 19:46:49 +0200 Subject: [PATCH 03/69] why does it hurt when i pee --- .../java/com/hbm/inventory/recipes/AssemblerRecipes.java | 2 +- .../java/com/hbm/inventory/recipes/ChemplantRecipes.java | 6 ++++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/hbm/inventory/recipes/AssemblerRecipes.java b/src/main/java/com/hbm/inventory/recipes/AssemblerRecipes.java index bf1370413..bc2499df5 100644 --- a/src/main/java/com/hbm/inventory/recipes/AssemblerRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/AssemblerRecipes.java @@ -148,7 +148,7 @@ public class AssemblerRecipes extends SerializableRecipe { makeRecipe(new ComparableStack(ModBlocks.machine_refinery, 1), new AStack[] {!exp ? new OreDictStack(STEEL.plateWelded(), 3) : new OreDictStack(STEEL.heavyComp(), 1), new OreDictStack(CU.plate528(), 16), new OreDictStack(STEEL.shell(), 6), new OreDictStack(STEEL.pipe(), 12), new ComparableStack(ModItems.plate_polymer, 8), new ComparableStack(ModItems.circuit, 16, EnumCircuitType.VACUUM_TUBE.ordinal()) },350); makeRecipe(new ComparableStack(ModBlocks.machine_epress, 1), new AStack[] {new OreDictStack(STEEL.plate(), 8), new OreDictStack(ANY_RUBBER.ingot(), 4), new ComparableStack(ModItems.part_generic, 2, EnumPartType.PISTON_HYDRAULIC.ordinal()), new ComparableStack(ModItems.circuit, 1, EnumCircuitType.BASIC.ordinal()) }, 100); makeRecipe(new ComparableStack(ModBlocks.machine_chemplant, 1), new AStack[] {new OreDictStack(STEEL.ingot(), 12), new OreDictStack(CU.plate528(), 6), new ComparableStack(ModItems.tank_steel, 4), new ComparableStack(ModItems.coil_tungsten, 3), new ComparableStack(ModItems.circuit, 1, EnumCircuitType.ANALOG.ordinal()), new ComparableStack(ModItems.plate_polymer, 8), },200); - makeRecipe(new ComparableStack(ModBlocks.machine_crystallizer, 1), new AStack[] {new OreDictStack(STEEL.shell(), 4), new OreDictStack(STEEL.pipe(), 8), new OreDictStack(DESH.ingot(), 4), new ComparableStack(ModItems.motor, 2), new ComparableStack(ModItems.blades_advanced_alloy, 2), new OreDictStack(STEEL.plateWelded(), 4), new OreDictStack(TI.plate(), 16), new ComparableStack(Blocks.glass, 4), new ComparableStack(ModItems.circuit, 4, EnumCircuitType.BASIC.ordinal()), },400); + makeRecipe(new ComparableStack(ModBlocks.machine_crystallizer, 1), new AStack[] {new OreDictStack(STEEL.plateWelded(), 2), new OreDictStack(TI.shell(), 3), new OreDictStack(DESH.ingot(), 4), new ComparableStack(ModItems.motor, 1), new ComparableStack(ModItems.circuit, 2, EnumCircuitType.BASIC.ordinal()), },200); makeRecipe(new ComparableStack(ModBlocks.machine_fluidtank, 1), new AStack[] {new OreDictStack(STEEL.ingot(), 2), new OreDictStack(STEEL.plate528(), 6), new OreDictStack(STEEL.shell(), 4), new OreDictStack(ANY_TAR.any(), 4), },150); makeRecipe(new ComparableStack(ModBlocks.machine_bat9000, 1), new AStack[] {new OreDictStack(STEEL.plate528(), 16), new OreDictStack(ANY_RESISTANTALLOY.plateWelded(), 2), new ComparableStack(ModBlocks.steel_scaffold, 16), new OreDictStack(ANY_TAR.any(), 16), },150); makeRecipe(new ComparableStack(ModBlocks.machine_orbus, 1), new AStack[] {new OreDictStack(STEEL.ingot(), 12), new OreDictStack(ANY_RESISTANTALLOY.plateWelded(), 8), new OreDictStack(BIGMT.plate(), 12), new ComparableStack(ModItems.coil_advanced_alloy, 12), new ComparableStack(ModItems.battery_sc_polonium, 1) }, 200); diff --git a/src/main/java/com/hbm/inventory/recipes/ChemplantRecipes.java b/src/main/java/com/hbm/inventory/recipes/ChemplantRecipes.java index 5eef05234..03836d15c 100644 --- a/src/main/java/com/hbm/inventory/recipes/ChemplantRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/ChemplantRecipes.java @@ -67,8 +67,10 @@ public class ChemplantRecipes extends SerializableRecipe { .outputFluids(new FluidStack(Fluids.ACID, 800))); recipes.add(new ChemRecipe(90, "SULFURIC_ACID", 50) .inputItems(new OreDictStack(S.dust())) - .inputFluids(new FluidStack(Fluids.ACID, 800)) - .outputFluids(new FluidStack(Fluids.SULFURIC_ACID, 500))); + .inputFluids( + new FluidStack(Fluids.ACID, 800), + new FluidStack(Fluids.WATER, 1_000)) + .outputFluids(new FluidStack(Fluids.SULFURIC_ACID, 2_000))); recipes.add(new ChemRecipe(92, "NITRIC_ACID", 50) .inputItems(new OreDictStack(KNO.dust())) .inputFluids(new FluidStack(Fluids.SULFURIC_ACID, 500)) From 493356e73e29e7dea1064a4c3a8041e7aba724f3 Mon Sep 17 00:00:00 2001 From: Bob Date: Mon, 27 May 2024 19:47:34 +0200 Subject: [PATCH 04/69] UTI --- src/main/java/com/hbm/inventory/recipes/SolderingRecipes.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/hbm/inventory/recipes/SolderingRecipes.java b/src/main/java/com/hbm/inventory/recipes/SolderingRecipes.java index bd2847d0e..8eefdb5d6 100644 --- a/src/main/java/com/hbm/inventory/recipes/SolderingRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/SolderingRecipes.java @@ -78,7 +78,7 @@ public class SolderingRecipes extends SerializableRecipe { new ComparableStack(ModItems.circuit, 24, EnumCircuitType.CAPACITOR)}, new AStack[] { new ComparableStack(ModItems.circuit, 12, EnumCircuitType.PCB), - new OreDictStack(ANY_HARDPLASTIC.ingot(), 4)}, + new OreDictStack(ANY_HARDPLASTIC.ingot(), 1)}, new AStack[] { new OreDictStack(PB.wireFine(), 12)} )); From 2dd5400f8ff5e7890b08ec5ad9b3a3d044e187c2 Mon Sep 17 00:00:00 2001 From: Pvndols Date: Tue, 28 May 2024 16:26:14 +0200 Subject: [PATCH 05/69] i eat batteries tenfolded max power --- .../inventory/gui/GUIMachineTurbineGas.java | 14 +++++++------- .../machine/TileEntityMachineTurbineGas.java | 2 +- .../gui/generators/gui_turbinegas.png | Bin 4557 -> 4560 bytes 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/main/java/com/hbm/inventory/gui/GUIMachineTurbineGas.java b/src/main/java/com/hbm/inventory/gui/GUIMachineTurbineGas.java index e691bffc9..310bc7db0 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIMachineTurbineGas.java +++ b/src/main/java/com/hbm/inventory/gui/GUIMachineTurbineGas.java @@ -202,7 +202,7 @@ public class GUIMachineTurbineGas extends GuiInfoContainer { public void displayStartup() { - if(numberToDisplay < 888888 && turbinegas.counter < 60) { //48 frames needed to complete + if(numberToDisplay < 8888888 && turbinegas.counter < 60) { //48 frames needed to complete digitNumber++; if(digitNumber == 9) { @@ -220,23 +220,23 @@ public class GUIMachineTurbineGas extends GuiInfoContainer { protected void drawPowerMeterDisplay(int number) { //display code - int firstDigitX = 66; + int firstDigitX = 65; int firstDigitY = 62; - int[] digit = new int[6]; + int[] digit = new int[7]; - for(int i = 5; i >= 0; i--) { //creates an array of digits that represent the numbers + for(int i = 6; i >= 0; i--) { //creates an array of digits that represent the numbers digit[i] = (int) (number % 10); number = number / 10; - drawTexturedModalRect(guiLeft + firstDigitX + i * 8, guiTop + 9 + firstDigitY, 194 + digit[i] * 5, 0, 5, 11); + drawTexturedModalRect(guiLeft + firstDigitX + i * 7, guiTop + 9 + firstDigitY, 194 + digit[i] * 5, 0, 5, 11); } int uselessZeros = 0; - for(int i = 0; i < 5; i++) { //counts how much zeros there are before the number, to display 57 instead of 000057 + for(int i = 0; i < 6; i++) { //counts how much zeros there are before the number, to display 57 instead of 000057 if(digit[i] == 0) uselessZeros++; @@ -246,7 +246,7 @@ public class GUIMachineTurbineGas extends GuiInfoContainer { for(int i = 0; i < uselessZeros; i++) { //turns off the useless zeros - drawTexturedModalRect(guiLeft + firstDigitX + i * 8, guiTop + 9 + firstDigitY, 244, 0, 5, 11); + drawTexturedModalRect(guiLeft + firstDigitX + i * 7, guiTop + 9 + firstDigitY, 244, 0, 5, 11); } } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineTurbineGas.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineTurbineGas.java index 28895add2..7bfb3452a 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineTurbineGas.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineTurbineGas.java @@ -70,7 +70,7 @@ public class TileEntityMachineTurbineGas extends TileEntityMachineBase implement fuelMaxCons.put(Fluids.GAS, 50D); // natgas doesn't burn well so it burns faster to compensate fuelMaxCons.put(Fluids.SYNGAS, 10D); // syngas just fucks fuelMaxCons.put(Fluids.OXYHYDROGEN, 100D); // oxyhydrogen is terrible so it needs to burn a ton for the bare minimum - fuelMaxCons.put(Fluids.REFORMGAS, 2.5D); // halved because it's too powerful + fuelMaxCons.put(Fluids.REFORMGAS, 5D); // fuck it we ball // default to 5 if not in list } diff --git a/src/main/resources/assets/hbm/textures/gui/generators/gui_turbinegas.png b/src/main/resources/assets/hbm/textures/gui/generators/gui_turbinegas.png index b429e5ee07a94cbcbc763f6d5bcb8b1d387b462c..ce95196166cb449669d4b407743fe88459332a2a 100644 GIT binary patch delta 3459 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 delta 3485 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 From 23b710deae7a0ddf15678bdc5f00dfef86e376ec Mon Sep 17 00:00:00 2001 From: Boblet Date: Tue, 28 May 2024 16:30:14 +0200 Subject: [PATCH 06/69] let's get silly --- changelog | 7 +++++++ .../inventory/recipes/SolderingRecipes.java | 2 +- .../java/com/hbm/main/CraftingManager.java | 2 +- .../TileEntityMachineArcFurnaceLarge.java | 10 +++++----- .../items/ammo_12gauge_percussion.png | Bin 342 -> 307 bytes .../assets/hbm/textures/items/circuit.png | Bin 8579 -> 9214 bytes .../hbm/textures/items/stick_dynamite.png | Bin 214 -> 254 bytes .../textures/items/stick_dynamite_fishing.png | Bin 215 -> 356 bytes .../assets/hbm/textures/items/stick_tatb.png | Bin 223 -> 212 bytes .../assets/hbm/textures/items/stick_tnt.png | Bin 275 -> 263 bytes 10 files changed, 14 insertions(+), 7 deletions(-) diff --git a/changelog b/changelog index d413388bb..09ed08cf0 100644 --- a/changelog +++ b/changelog @@ -3,6 +3,13 @@ * In addition, there is now an alternate recipe combining four times the material, yielding larger steel scraps, allowing for higher throughput * The new autogen wire items now use texture overrides, restoring the original textures * Arc furnaces now start burning on the inside as the electrodes are inserted, making the process look a lot more violent +* Arc furnaces in liquid mode will now immediately start draining their contents as soon as the lid starts lifting, instead of waiting until the lid is fully lifted +* The arc furnace's lid now moves faster depending on the upgrade (each upgrade adds 50% movement speed). Do note that this shortens the timespan for cycling items, so to utilize it fully you will need multiple or upgraded conveyors. +* Doubled the arc furnace's pouring speed to a full ingot per tick +* Demand for hard plastic per versatile circuit has been reduced from 4 to 2 bars per board +* The autocrafter now uses vacuum tubes instead of microchips +* Buoyant items (fish spawned by fishing dynamite) now sink in flowing water (i.e. in a tank of non-source blocks) +* Retextured all explosive sticks ## Fixed * Removed sand to silicon AE2 compat recipe which caused sand to be shreddable into the new silicon wafers, skipping the arc furnace entirely diff --git a/src/main/java/com/hbm/inventory/recipes/SolderingRecipes.java b/src/main/java/com/hbm/inventory/recipes/SolderingRecipes.java index 2579bc81d..df4c0c8f4 100644 --- a/src/main/java/com/hbm/inventory/recipes/SolderingRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/SolderingRecipes.java @@ -78,7 +78,7 @@ public class SolderingRecipes extends SerializableRecipe { new ComparableStack(ModItems.circuit, 24, EnumCircuitType.CAPACITOR)}, new AStack[] { new ComparableStack(ModItems.circuit, 12, EnumCircuitType.PCB), - new OreDictStack(ANY_HARDPLASTIC.ingot(), 1)}, + new OreDictStack(ANY_HARDPLASTIC.ingot(), 2)}, new AStack[] { new OreDictStack(PB.wireFine(), 12)} )); diff --git a/src/main/java/com/hbm/main/CraftingManager.java b/src/main/java/com/hbm/main/CraftingManager.java index 7b2b073e1..7758ffcb8 100644 --- a/src/main/java/com/hbm/main/CraftingManager.java +++ b/src/main/java/com/hbm/main/CraftingManager.java @@ -283,7 +283,7 @@ public class CraftingManager { addRecipeAuto(new ItemStack(ModBlocks.mass_storage, 1, 1), new Object[] { "PCP", "PMP", "PPP", 'P', DESH.ingot(), 'C', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.CHIP), 'M', new ItemStack(ModBlocks.mass_storage, 1, 0) }); addRecipeAuto(new ItemStack(ModBlocks.mass_storage, 1, 2), new Object[] { "PCP", "PMP", "PPP", 'P', ANY_RESISTANTALLOY.ingot(), 'C', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.ADVANCED), 'M', new ItemStack(ModBlocks.mass_storage, 1, 1) }); addRecipeAuto(new ItemStack(ModBlocks.mass_storage, 1, 3), new Object[] { "PPP", "PIP", "PPP", 'P', KEY_PLANKS, 'I', IRON.plate() }); - addRecipeAuto(new ItemStack(ModBlocks.machine_autocrafter, 1), new Object[] { "SCS", "MWM", "SCS", 'S', STEEL.plate(), 'C', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.CHIP), 'M', ModItems.motor, 'W', Blocks.crafting_table }); + addRecipeAuto(new ItemStack(ModBlocks.machine_autocrafter, 1), new Object[] { "SCS", "MWM", "SCS", 'S', STEEL.plate(), 'C', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.VACUUM_TUBE), 'M', ModItems.motor, 'W', Blocks.crafting_table }); addRecipeAuto(new ItemStack(ModBlocks.machine_funnel, 1), new Object[] { "S S", "SRS", " S ", 'S', STEEL.ingot(), 'R', REDSTONE.dust() }); addRecipeAuto(new ItemStack(ModBlocks.machine_waste_drum, 1), new Object[] { "LRL", "BRB", "LRL", 'L', PB.ingot(), 'B', Blocks.iron_bars, 'R', ModItems.rod_quad_empty }); addRecipeAuto(new ItemStack(ModBlocks.machine_press, 1), new Object[] { "IRI", "IPI", "IBI", 'I', IRON.ingot(), 'R', Blocks.furnace, 'B', IRON.block(), 'P', Blocks.piston }); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineArcFurnaceLarge.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineArcFurnaceLarge.java index fd280bc61..5b07aa03a 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineArcFurnaceLarge.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineArcFurnaceLarge.java @@ -113,7 +113,7 @@ public class TileEntityMachineArcFurnaceLarge extends TileEntityMachineBase impl if(ingredients && electrodes && delay <= 0 && this.liquids.isEmpty()) { if(lid > 0) { - lid -= 1F/60F; + lid -= 1F / (60F / (upgrade * 0.5 + 1)); if(lid < 0) lid = 0; this.progress = 0; } else { @@ -126,7 +126,7 @@ public class TileEntityMachineArcFurnaceLarge extends TileEntityMachineBase impl if(this.progress >= 1F) { this.process(); this.progress = 0; - this.delay = 120; + this.delay = (int) (120 / (upgrade * 0.5 + 1)); PollutionHandler.incrementPollution(worldObj, xCoord, yCoord, zCoord, PollutionType.SOOT, 15F); } } @@ -135,7 +135,7 @@ public class TileEntityMachineArcFurnaceLarge extends TileEntityMachineBase impl if(this.delay > 0) delay--; this.progress = 0; if(lid < 1 && this.electrodes[0] != 0 && this.electrodes[1] != 0 && this.electrodes[2] != 0) { - lid += 1F/60F; + lid += 1F / (60F / (upgrade * 0.5 + 1)); if(lid > 1) lid = 1; } } @@ -147,12 +147,12 @@ public class TileEntityMachineArcFurnaceLarge extends TileEntityMachineBase impl if(!hasMaterial) hasMaterial = this.hasIngredients(); - if(!this.liquids.isEmpty() && this.lid >= 1F) { + if(!this.liquids.isEmpty() && this.lid > 0F) { ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata() - 10); Vec3 impact = Vec3.createVectorHelper(0, 0, 0); - MaterialStack didPour = CrucibleUtil.pourFullStack(worldObj, xCoord + 0.5D + dir.offsetX * 2.875D, yCoord + 1.25D, zCoord + 0.5D + dir.offsetZ * 2.875D, 6, true, this.liquids, MaterialShapes.INGOT.q(1, 2), impact); + MaterialStack didPour = CrucibleUtil.pourFullStack(worldObj, xCoord + 0.5D + dir.offsetX * 2.875D, yCoord + 1.25D, zCoord + 0.5D + dir.offsetZ * 2.875D, 6, true, this.liquids, MaterialShapes.INGOT.q(1), impact); if(didPour != null) { NBTTagCompound data = new NBTTagCompound(); diff --git a/src/main/resources/assets/hbm/textures/items/ammo_12gauge_percussion.png b/src/main/resources/assets/hbm/textures/items/ammo_12gauge_percussion.png index f010e6675197b6a28c64294a335cf77c41e16099..1b60046f7fc7144dc6c1eb9cd5143f6227bd72f6 100644 GIT binary patch delta 265 zcmV+k0rvjZ0Zq}6vpvCo{(j+MO`vkUNVQ>9=QMqVC@ld zfF2=x$DW{!a1X?kC4v#5Z0^()VMj&j(zjT)?4RHF;NR6*DSuYVZ@n*;n-lm{N>VA= zirj${_`Om9yzF+H5fMAQ4#Q?7Sx49_MJnaJlj|^Wn`d69DS!DDcm@d~yg_oACT{Z_ z#3{=%h!dSb4EeMcV@!ZVfi?1eIFRQ#S(XKe0C3Lv<+?;Zjz_fCjN^z9g0AZ@#$c`W zuo$9q&NodHowT*qYpv<~o}wtI>zcN0f9^i&V2xB&<-dP^s{Zu&QGEe~sB2!A^W&5N P0000ZrE5Jev-1zN4>tTe9BHm*&-lw5!V(B=p^ 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 R*bjOD>dHDwbqdxW{ttebP`3a8 literal 8579 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 M07*qoM6N<$f;Ng|asU7T delta 170 zcmV;b09F6~0oDPKG=GgrL_t(IjbmUKc_1z>?tffd+<%fZ-FA`s-_X#2q7lYsB1ZGO zUw;{*kIZ6FQc}W@$7=vg^N)WF4DWvZWpLax9YYNxF`A$M_{;F}=U;~W%kLRs&R?`> z5hG3mh}DeM08%t#gaJOyxBwHmnqkq%NUCO-MvOpQVIuOMfg^!|C}-mY6LkeiOQO^O Y0KJ-&*hjQylmGw#07*qoM6N<$g6Kv~egFUf diff --git a/src/main/resources/assets/hbm/textures/items/stick_dynamite_fishing.png b/src/main/resources/assets/hbm/textures/items/stick_dynamite_fishing.png index 973506281c341fe739640eab0ef3e0a6354a8341..6bc5abb439b42f58d6d96d8ecaf13730280018db 100644 GIT binary patch delta 314 zcmV-A0mc5;0ptRZGk*aaNkl#q_MKrGLIm(n}9yS?mWS@nEXt#$*!HJnM0V9`< zB%RNZI3~M%==fT}R=C1u7SgXURA&&oQ=wix@1H?1guT3ZBzd}X1kYb?XXWMfzH@z( zLF~e^JV}_oUAym}Zpri9(7S;N#Rfip+9`!~YiY@EUmDNibnDTGh#LR!rdQ|W7Yi3S z3rEBLOEgV|YBO?!jfcHMhSge|3Z;dkgVqmV_Z4t_XeezP@cke33$bt7c&tr39smFU M07*qoM6N<$f-F^>J^%m! delta 172 zcmV;d08{_u0@neMGk*Y%NklgySll$0=}@f!fu%y8!;1H+vU3=QT9q&b`6_WS<~+aLUAn0(0000y8gxGXnzy0~4{DpTA;Yc>el7L(0$1DDrq+fU22+ z;l*nPhWyL#QS{(6fEdj<4IoxCRs%@Uj9~z&no$fOM>E_2ax68YxL~D|;C}`N(lld$ hiMoRS39F(q003UmhGZtY8+HHy002ovPDHLkV1jk_QKkR@ diff --git a/src/main/resources/assets/hbm/textures/items/stick_tnt.png b/src/main/resources/assets/hbm/textures/items/stick_tnt.png index 6fa5a55186aee77733c86ebc9bc2949e8abceb69..7ca995a46dc4b3cfc7d570cb89e85395b9753388 100644 GIT binary patch delta 219 zcmV<103`pD0*3;SG=IKHL_t(Ijn$Dc3c^4XL|;U(4hTZ-kj^q#|Dkk%ojva^fI>71h?tzd;?bopTYorfUL0WPZprtRQFQ8+ij{}=?VaF Vi@S~RF1P>y002ovPDHLkV1i2_X|@0W delta 231 zcmV|iM^;L1c%!~j@I$$?|> zYS`zuC|~<98E_be41n*;o~BeMe{-xfy2~|O*L_)ARN>^Ru{crX&Egwu7JP~e4Fbnv h0F7`djb8Pu+yJ55i-ehV(W?Le002ovPDHLkV1nGzZ3X}U From 18734b77bcc8b51ce58f1fa0dca4d8ef53933445 Mon Sep 17 00:00:00 2001 From: Bob Date: Tue, 28 May 2024 21:01:20 +0200 Subject: [PATCH 07/69] oredict --- src/main/java/com/hbm/inventory/OreDictManager.java | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/main/java/com/hbm/inventory/OreDictManager.java b/src/main/java/com/hbm/inventory/OreDictManager.java index 0f20e1db2..edae916e5 100644 --- a/src/main/java/com/hbm/inventory/OreDictManager.java +++ b/src/main/java/com/hbm/inventory/OreDictManager.java @@ -625,6 +625,16 @@ public class OreDictManager { OreDictionary.registerOre("container1000lubricant", bdcl); OreDictionary.registerOre("itemSilicon", billet_silicon); + //Legacy wires + OreDictionary.registerOre(AL.wireFine(), wire_aluminium); + OreDictionary.registerOre(CU.wireFine(), wire_copper); + OreDictionary.registerOre(MINGRADE.wireFine(), wire_red_copper); + OreDictionary.registerOre(GOLD.wireFine(), wire_gold); + OreDictionary.registerOre(W.wireFine(), wire_tungsten); + OreDictionary.registerOre(ALLOY.wireFine(), wire_advanced_alloy); + OreDictionary.registerOre(MAGTUNG.wireFine(), wire_magnetized_tungsten); + OreDictionary.registerOre(SA326.wireFine(), wire_schrabidium); + MaterialShapes.registerCompatShapes(); compensateMojangSpaghettiBullshit(); } From 02b56d2eb58bd98dcc10a4461dbe65ba6ad485b9 Mon Sep 17 00:00:00 2001 From: Boblet Date: Wed, 29 May 2024 16:46:37 +0200 Subject: [PATCH 08/69] recipes --- changelog | 12 +++++++ gradle.properties | 2 +- .../java/com/hbm/crafting/MineralRecipes.java | 2 +- .../java/com/hbm/crafting/PowderRecipes.java | 6 ++-- .../com/hbm/crafting/SmeltingRecipes.java | 1 - .../java/com/hbm/crafting/WeaponRecipes.java | 1 - .../inventory/recipes/ArcFurnaceRecipes.java | 8 +++++ .../recipes/CrystallizerRecipes.java | 3 +- .../inventory/recipes/SolderingRecipes.java | 34 +++++++++++++++++++ src/main/java/com/hbm/lib/RefStrings.java | 2 +- 10 files changed, 62 insertions(+), 9 deletions(-) diff --git a/changelog b/changelog index 09ed08cf0..51a3f0259 100644 --- a/changelog +++ b/changelog @@ -1,6 +1,9 @@ ## Changed +* Updated russian localization * The powder combination recipe for steel powder now yields steel scraps instead, meaning that it has to be smelted either via crucible or arc furnace * In addition, there is now an alternate recipe combining four times the material, yielding larger steel scraps, allowing for higher throughput + * The recipes for magnetized tungsten and technetium steel also now output scraps, although they lack the quadruple yield recipes + * Red copper got its powder mixing recipe back, also yielding scraps instead of powder * The new autogen wire items now use texture overrides, restoring the original textures * Arc furnaces now start burning on the inside as the electrodes are inserted, making the process look a lot more violent * Arc furnaces in liquid mode will now immediately start draining their contents as soon as the lid starts lifting, instead of waiting until the lid is fully lifted @@ -10,6 +13,15 @@ * The autocrafter now uses vacuum tubes instead of microchips * Buoyant items (fish spawned by fishing dynamite) now sink in flowing water (i.e. in a tank of non-source blocks) * Retextured all explosive sticks +* Added an extra digit to the CCGT's power gauge, allowing it to have even higher outputs + * Doubled the reformate gas consumption rate +* Asbestos and flint are now arc smeltable, having the same silicon yields as fiberglass +* The quartz glass recipe has been moved to the arc furnace +* Borax can now also be smelted in the arc furnace, yielding the same 33% boron that the ore acidizer does +* Silicon boules can now be mixed with liquid oxygen in an acidizer to make nether quartz +* Silicon shards from bedrock ore processing now yield 3 silicon nuggets instead of nether quartz +* The soldering station should now have a working recipe config instead of just generating an empty template file +* Removed the old stinger rocket recipe ## Fixed * Removed sand to silicon AE2 compat recipe which caused sand to be shreddable into the new silicon wafers, skipping the arc furnace entirely diff --git a/gradle.properties b/gradle.properties index 8e5f10ced..daa9e69ce 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=4977 +mod_build_number=4980 credits=HbMinecraft,\ \ rodolphito (explosion algorithms),\ diff --git a/src/main/java/com/hbm/crafting/MineralRecipes.java b/src/main/java/com/hbm/crafting/MineralRecipes.java index 26025c419..59e90e880 100644 --- a/src/main/java/com/hbm/crafting/MineralRecipes.java +++ b/src/main/java/com/hbm/crafting/MineralRecipes.java @@ -457,7 +457,7 @@ public class MineralRecipes { add9To1(DictFrame.fromOne(ModItems.ore_byproduct, EnumByproduct.B_IRON), new ItemStack(ModItems.powder_iron)); add9To1(DictFrame.fromOne(ModItems.ore_byproduct, EnumByproduct.B_COPPER), new ItemStack(ModItems.powder_copper)); add9To1(DictFrame.fromOne(ModItems.ore_byproduct, EnumByproduct.B_LITHIUM), new ItemStack(ModItems.powder_lithium)); - add9To1(DictFrame.fromOne(ModItems.ore_byproduct, EnumByproduct.B_SILICON), new ItemStack(ModItems.powder_quartz)); + add9To1(DictFrame.fromOne(ModItems.ore_byproduct, EnumByproduct.B_SILICON), new ItemStack(ModItems.nugget_silicon, 3)); add9To1(DictFrame.fromOne(ModItems.ore_byproduct, EnumByproduct.B_LEAD), new ItemStack(ModItems.powder_lead)); add9To1(DictFrame.fromOne(ModItems.ore_byproduct, EnumByproduct.B_TITANIUM), new ItemStack(ModItems.powder_titanium)); add9To1(DictFrame.fromOne(ModItems.ore_byproduct, EnumByproduct.B_ALUMINIUM), new ItemStack(ModItems.powder_aluminium)); diff --git a/src/main/java/com/hbm/crafting/PowderRecipes.java b/src/main/java/com/hbm/crafting/PowderRecipes.java index 42776ec55..7b08746dd 100644 --- a/src/main/java/com/hbm/crafting/PowderRecipes.java +++ b/src/main/java/com/hbm/crafting/PowderRecipes.java @@ -57,9 +57,9 @@ public class PowderRecipes { CraftingManager.addShapelessAuto(new ItemStack(ModItems.powder_desh_ready, 1), new Object[] { ModItems.powder_desh_mix, ModItems.ingot_mercury, ModItems.ingot_mercury, COAL.dust() }); //Metal powders - CraftingManager.addShapelessAuto(new ItemStack(ModItems.powder_magnetized_tungsten, 1), new Object[] { W.dust(), SA326.nugget() }); - CraftingManager.addShapelessAuto(new ItemStack(ModItems.powder_tcalloy, 1), new Object[] { STEEL.dust(), TC99.nugget() }); - + CraftingManager.addShapelessAuto(ItemScraps.create(new MaterialStack(Mats.MAT_MINGRADE, MaterialShapes.INGOT.q(2))), new Object[] { CU.dust(), REDSTONE.dust() }); + CraftingManager.addShapelessAuto(ItemScraps.create(new MaterialStack(Mats.MAT_MAGTUNG, MaterialShapes.INGOT.q(1))), new Object[] { W.dust(), SA326.nugget() }); + CraftingManager.addShapelessAuto(ItemScraps.create(new MaterialStack(Mats.MAT_TCALLOY, MaterialShapes.INGOT.q(1))), new Object[] { STEEL.dust(), TC99.nugget() }); CraftingManager.addShapelessAuto(ItemScraps.create(new MaterialStack(Mats.MAT_STEEL, MaterialShapes.INGOT.q(1))), new Object[] { IRON.dust(), COAL.dust() }); CraftingManager.addShapelessAuto(ItemScraps.create(new MaterialStack(Mats.MAT_STEEL, MaterialShapes.INGOT.q(4))), new Object[] { IRON.dust(), IRON.dust(), IRON.dust(), IRON.dust(), COAL.dust(), COAL.dust(), COAL.dust(), COAL.dust() }); diff --git a/src/main/java/com/hbm/crafting/SmeltingRecipes.java b/src/main/java/com/hbm/crafting/SmeltingRecipes.java index 0367c6a04..8de9de124 100644 --- a/src/main/java/com/hbm/crafting/SmeltingRecipes.java +++ b/src/main/java/com/hbm/crafting/SmeltingRecipes.java @@ -127,7 +127,6 @@ public class SmeltingRecipes { GameRegistry.addSmelting(new ItemStack(ModBlocks.gravel_diamond), new ItemStack(Items.diamond), 3.0F); GameRegistry.addSmelting(new ItemStack(ModBlocks.sand_uranium), new ItemStack(ModBlocks.glass_uranium), 0.25F); GameRegistry.addSmelting(new ItemStack(ModBlocks.sand_polonium), new ItemStack(ModBlocks.glass_polonium), 0.75F); - GameRegistry.addSmelting(new ItemStack(ModBlocks.sand_quartz), new ItemStack(ModBlocks.glass_quartz), 0.75F); GameRegistry.addSmelting(new ItemStack(ModBlocks.waste_trinitite), new ItemStack(ModBlocks.glass_trinitite), 0.25F); GameRegistry.addSmelting(new ItemStack(ModBlocks.waste_trinitite_red), new ItemStack(ModBlocks.glass_trinitite), 0.25F); GameRegistry.addSmelting(new ItemStack(ModBlocks.sand_boron), new ItemStack(ModBlocks.glass_boron), 0.25F); diff --git a/src/main/java/com/hbm/crafting/WeaponRecipes.java b/src/main/java/com/hbm/crafting/WeaponRecipes.java index aa29c52d8..d221d016f 100644 --- a/src/main/java/com/hbm/crafting/WeaponRecipes.java +++ b/src/main/java/com/hbm/crafting/WeaponRecipes.java @@ -74,7 +74,6 @@ public class WeaponRecipes { CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_hk69, 1), new Object[] { "SSI", " MB", 'S', STEEL.shell(), 'I', IRON.ingot(), 'M', ModItems.mechanism_launcher_1, 'B', STEEL.bolt() }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_congolake, 1), new Object[] { "HHR", "WLW", 'H', AL.shell(), 'R', ModItems.mechanism_rifle_1, 'W', KEY_LOG, 'L', ModItems.mechanism_launcher_1 }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_stinger, 1), new Object[] { "SSW", "CMW", 'S', STEEL.plate(), 'W', TI.plate(), 'C', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.ADVANCED), 'M', ModItems.mechanism_launcher_2 }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.ammo_stinger_rocket, 4), new Object[] { "SS ", "STI", " IR", 'S', STEEL.plate(), 'T', Item.getItemFromBlock(Blocks.tnt), 'I', AL.plate(), 'R', REDSTONE.dust() }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_revolver, 1), new Object[] { "SSM", " RW", 'S', STEEL.plate(), 'W', KEY_PLANKS, 'R', AL.wireFine(), 'M', ModItems.mechanism_revolver_1 }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_revolver_saturnite, 1), new Object[] { "SSM", " RW", 'S', BIGMT.plate(), 'W', KEY_PLANKS, 'R', W.wireFine(), 'M', ModItems.mechanism_revolver_2 }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_revolver_gold, 1), new Object[] { "SSM", " RW", 'S', GOLD.plate(), 'W', W.ingot(), 'R', GOLD.wireFine(), 'M', ModItems.mechanism_revolver_1 }); diff --git a/src/main/java/com/hbm/inventory/recipes/ArcFurnaceRecipes.java b/src/main/java/com/hbm/inventory/recipes/ArcFurnaceRecipes.java index db3c9c869..1be8bdd3c 100644 --- a/src/main/java/com/hbm/inventory/recipes/ArcFurnaceRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/ArcFurnaceRecipes.java @@ -12,6 +12,7 @@ import com.google.gson.JsonArray; import com.google.gson.JsonElement; import com.google.gson.JsonObject; import com.google.gson.stream.JsonWriter; +import com.hbm.blocks.ModBlocks; import com.hbm.inventory.OreDictManager; import com.hbm.inventory.RecipesCommon.AStack; import com.hbm.inventory.RecipesCommon.ComparableStack; @@ -25,6 +26,7 @@ import com.hbm.inventory.recipes.loader.SerializableRecipe; import com.hbm.items.ModItems; import com.hbm.items.machine.ItemScraps; +import net.minecraft.init.Items; import net.minecraft.item.ItemStack; import net.minecraft.item.crafting.FurnaceRecipes; import net.minecraftforge.oredict.OreDictionary; @@ -37,11 +39,17 @@ public class ArcFurnaceRecipes extends SerializableRecipe { public void registerDefaults() { recipes.put(new OreDictStack(KEY_SAND), new ArcFurnaceRecipe().solid(new ItemStack(ModItems.nugget_silicon)) .fluid(new MaterialStack(Mats.MAT_SILICON, MaterialShapes.NUGGET.q(1)))); + recipes.put(new ComparableStack(Items.flint), new ArcFurnaceRecipe().solid(new ItemStack(ModItems.nugget_silicon, 4)) .fluid(new MaterialStack(Mats.MAT_SILICON, MaterialShapes.INGOT.q(1, 2)))); recipes.put(new OreDictStack(QUARTZ.gem()), new ArcFurnaceRecipe().solid(new ItemStack(ModItems.nugget_silicon, 3)) .fluid(new MaterialStack(Mats.MAT_SILICON, MaterialShapes.NUGGET.q(3)))); recipes.put(new OreDictStack(QUARTZ.dust()), new ArcFurnaceRecipe().solid(new ItemStack(ModItems.nugget_silicon, 3)) .fluid(new MaterialStack(Mats.MAT_SILICON, MaterialShapes.NUGGET.q(3)))); recipes.put(new OreDictStack(QUARTZ.block()), new ArcFurnaceRecipe().solid(new ItemStack(ModItems.nugget_silicon, 12)) .fluid(new MaterialStack(Mats.MAT_SILICON, MaterialShapes.NUGGET.q(12)))); recipes.put(new OreDictStack(FIBER.ingot()), new ArcFurnaceRecipe().solid(new ItemStack(ModItems.nugget_silicon, 4)) .fluid(new MaterialStack(Mats.MAT_SILICON, MaterialShapes.INGOT.q(1, 2)))); recipes.put(new OreDictStack(FIBER.block()), new ArcFurnaceRecipe().solid(new ItemStack(ModItems.nugget_silicon, 40)) .fluid(new MaterialStack(Mats.MAT_SILICON, MaterialShapes.INGOT.q(9, 2)))); + recipes.put(new OreDictStack(ASBESTOS.ingot()), new ArcFurnaceRecipe().solid(new ItemStack(ModItems.nugget_silicon, 4)) .fluid(new MaterialStack(Mats.MAT_SILICON, MaterialShapes.INGOT.q(1, 2)))); + recipes.put(new OreDictStack(ASBESTOS.block()), new ArcFurnaceRecipe().solid(new ItemStack(ModItems.nugget_silicon, 40)) .fluid(new MaterialStack(Mats.MAT_SILICON, MaterialShapes.INGOT.q(9, 2)))); + + recipes.put(new ComparableStack(ModBlocks.sand_quartz), new ArcFurnaceRecipe().solid(new ItemStack(ModBlocks.glass_quartz))); + recipes.put(new OreDictStack(BORAX.dust()), new ArcFurnaceRecipe().solid(new ItemStack(ModItems.powder_boron_tiny, 3)).fluid(new MaterialStack(Mats.MAT_BORON, MaterialShapes.NUGGET.q(3)))); // Autogen for simple single type items for(NTMMaterial material : Mats.orderedList) { diff --git a/src/main/java/com/hbm/inventory/recipes/CrystallizerRecipes.java b/src/main/java/com/hbm/inventory/recipes/CrystallizerRecipes.java index fcad406b9..e4095c351 100644 --- a/src/main/java/com/hbm/inventory/recipes/CrystallizerRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/CrystallizerRecipes.java @@ -82,8 +82,9 @@ public class CrystallizerRecipes extends SerializableRecipe { registerRecipe(new ComparableStack(ModBlocks.ore_tikite), new CrystallizerRecipe(ModItems.crystal_trixite, baseTime), sulfur); registerRecipe(new ComparableStack(ModBlocks.gravel_diamond), new CrystallizerRecipe(ModItems.crystal_diamond, baseTime)); registerRecipe(SRN.ingot(), new CrystallizerRecipe(ModItems.crystal_schraranium, baseTime)); - + registerRecipe("sand", new CrystallizerRecipe(ModItems.ingot_fiberglass, utilityTime)); + registerRecipe(SI.ingot(), new CrystallizerRecipe(new ItemStack(Items.quartz, 2), utilityTime), new FluidStack(Fluids.OXYGEN, 250)); registerRecipe(REDSTONE.block(), new CrystallizerRecipe(ModItems.ingot_mercury, baseTime)); registerRecipe(CINNABAR.crystal(), new CrystallizerRecipe(new ItemStack(ModItems.ingot_mercury, 3), baseTime)); registerRecipe(BORAX.dust(), new CrystallizerRecipe(new ItemStack(ModItems.powder_boron_tiny, 3), baseTime), sulfur); diff --git a/src/main/java/com/hbm/inventory/recipes/SolderingRecipes.java b/src/main/java/com/hbm/inventory/recipes/SolderingRecipes.java index df4c0c8f4..23c4dbbd3 100644 --- a/src/main/java/com/hbm/inventory/recipes/SolderingRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/SolderingRecipes.java @@ -8,6 +8,7 @@ import java.util.List; import static com.hbm.inventory.OreDictManager.*; import com.google.gson.JsonElement; +import com.google.gson.JsonObject; import com.google.gson.stream.JsonWriter; import com.hbm.inventory.FluidStack; import com.hbm.inventory.RecipesCommon.AStack; @@ -201,12 +202,45 @@ public class SolderingRecipes extends SerializableRecipe { @Override public void readRecipe(JsonElement recipe) { + JsonObject obj = (JsonObject) recipe; + + AStack[] toppings = this.readAStackArray(obj.get("toppings").getAsJsonArray()); + AStack[] pcb = this.readAStackArray(obj.get("pcb").getAsJsonArray()); + AStack[] solder = this.readAStackArray(obj.get("solder").getAsJsonArray()); + FluidStack fluid = obj.has("fluid") ? this.readFluidStack(obj.get("fluid").getAsJsonArray()) : null; + ItemStack output = this.readItemStack(obj.get("output").getAsJsonArray()); + int duration = obj.get("duration").getAsInt(); + long consumption = obj.get("consumption").getAsLong(); + recipes.add(new SolderingRecipe(output, duration, consumption, fluid, toppings, pcb, solder)); } @Override public void writeRecipe(Object obj, JsonWriter writer) throws IOException { + SolderingRecipe recipe = (SolderingRecipe) obj; + writer.name("toppings").beginArray(); + for(AStack aStack : recipe.toppings) this.writeAStack(aStack, writer); + writer.endArray(); + + writer.name("pcb").beginArray(); + for(AStack aStack : recipe.pcb) this.writeAStack(aStack, writer); + writer.endArray(); + + writer.name("solder").beginArray(); + for(AStack aStack : recipe.solder) this.writeAStack(aStack, writer); + writer.endArray(); + + if(recipe.fluid != null) { + writer.name("fluid"); + this.writeFluidStack(recipe.fluid, writer); + } + + writer.name("output"); + this.writeItemStack(recipe.output, writer); + + writer.name("duration").value(recipe.duration); + writer.name("consumption").value(recipe.consumption); } public static HashSet toppings = new HashSet(); diff --git a/src/main/java/com/hbm/lib/RefStrings.java b/src/main/java/com/hbm/lib/RefStrings.java index 2bdcf4112..4035f0a3e 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 (4977)"; + public static final String VERSION = "1.0.27 BETA (4980)"; //HBM's Beta Naming Convention: //V T (X) //V -> next release version From d99ac8508f499a605e3fa42324d202ea30a85853 Mon Sep 17 00:00:00 2001 From: Ruslanllll Date: Thu, 30 May 2024 12:55:37 +0300 Subject: [PATCH 09/69] Reacher working in 528 mode --- src/main/java/com/hbm/hazard/type/HazardTypeRadiation.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/hbm/hazard/type/HazardTypeRadiation.java b/src/main/java/com/hbm/hazard/type/HazardTypeRadiation.java index ed6c84c69..177d32218 100644 --- a/src/main/java/com/hbm/hazard/type/HazardTypeRadiation.java +++ b/src/main/java/com/hbm/hazard/type/HazardTypeRadiation.java @@ -26,7 +26,7 @@ public class HazardTypeRadiation extends HazardTypeBase { boolean reacher = false; - if(target instanceof EntityPlayer && !GeneralConfig.enable528) + if(target instanceof EntityPlayer) reacher = ((EntityPlayer) target).inventory.hasItem(ModItems.reacher); level *= stack.stackSize; From 211beb1e4ca8bae34730652c9ea24f958bfc43fb Mon Sep 17 00:00:00 2001 From: 70000hp <105080577+70000hp@users.noreply.github.com> Date: Thu, 30 May 2024 19:27:33 -0400 Subject: [PATCH 10/69] when the stairs (and slabs) are speedy --- src/main/java/com/hbm/blocks/ModBlocks.java | 11 +++-- .../hbm/blocks/generic/BlockMultiSlab.java | 18 +++++++- .../hbm/blocks/generic/BlockSpeedyStairs.java | 41 +++++++++++++++++++ .../container/ContainerCraneGrabber.java | 3 +- src/main/resources/assets/hbm/lang/en_US.lang | 2 + 5 files changed, 69 insertions(+), 6 deletions(-) create mode 100644 src/main/java/com/hbm/blocks/generic/BlockSpeedyStairs.java diff --git a/src/main/java/com/hbm/blocks/ModBlocks.java b/src/main/java/com/hbm/blocks/ModBlocks.java index e588f34db..1e4c5efb4 100644 --- a/src/main/java/com/hbm/blocks/ModBlocks.java +++ b/src/main/java/com/hbm/blocks/ModBlocks.java @@ -360,6 +360,7 @@ public class ModBlocks { public static Block brick_compound_stairs; public static Block brick_asbestos_stairs; public static Block brick_fire_stairs; + public static Block asphalt_stairs; public static Block cmb_brick; public static Block cmb_brick_reinforced; @@ -1529,8 +1530,8 @@ public class ModBlocks { brick_ducrete = new BlockGeneric(Material.rock).setBlockName("brick_ducrete").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(750.0F).setBlockTextureName(RefStrings.MODID + ":brick_ducrete"); reinforced_ducrete = new BlockGeneric(Material.rock).setBlockName("reinforced_ducrete").setCreativeTab(MainRegistry.blockTab).setHardness(20.0F).setResistance(1000.0F).setBlockTextureName(RefStrings.MODID + ":reinforced_ducrete"); - concrete_slab = new BlockMultiSlab(null, Material.rock, concrete_smooth, concrete, concrete_asbestos, ducrete_smooth, ducrete).setBlockName("concrete_slab").setCreativeTab(MainRegistry.blockTab); - concrete_double_slab = new BlockMultiSlab(concrete_slab, Material.rock, concrete_smooth, concrete, concrete_asbestos, ducrete_smooth, ducrete).setBlockName("concrete_double_slab").setCreativeTab(MainRegistry.blockTab); + concrete_slab = new BlockMultiSlab(null, Material.rock, concrete_smooth, concrete, concrete_asbestos, ducrete_smooth, ducrete, asphalt).setBlockName("concrete_slab").setCreativeTab(MainRegistry.blockTab); + concrete_double_slab = new BlockMultiSlab(concrete_slab, Material.rock, concrete_smooth, concrete, concrete_asbestos, ducrete_smooth, ducrete, asphalt).setBlockName("concrete_double_slab").setCreativeTab(MainRegistry.blockTab); concrete_brick_slab = new BlockMultiSlab(null, Material.rock, brick_concrete, brick_concrete_mossy, brick_concrete_cracked, brick_concrete_broken, brick_ducrete).setBlockName("concrete_brick_slab").setCreativeTab(MainRegistry.blockTab); concrete_brick_double_slab = new BlockMultiSlab(concrete_brick_slab, Material.rock, brick_concrete, brick_concrete_mossy, brick_concrete_cracked, brick_concrete_broken, brick_ducrete).setBlockName("concrete_brick_double_slab").setCreativeTab(MainRegistry.blockTab); brick_slab = new BlockMultiSlab(null, Material.rock, reinforced_stone, reinforced_brick, brick_obsidian, brick_light, brick_compound, brick_asbestos, brick_fire).setBlockName("brick_slab").setCreativeTab(MainRegistry.blockTab); @@ -1553,9 +1554,10 @@ public class ModBlocks { brick_compound_stairs = new BlockGenericStairs(brick_compound, 0).setBlockName("brick_compound_stairs").setCreativeTab(MainRegistry.blockTab); brick_asbestos_stairs = new BlockGenericStairs(brick_asbestos, 0).setBlockName("brick_asbestos_stairs").setCreativeTab(MainRegistry.blockTab); brick_fire_stairs = new BlockGenericStairs(brick_fire, 0).setBlockName("brick_fire_stairs").setCreativeTab(MainRegistry.blockTab); - + asphalt_stairs = new BlockSpeedyStairs(asphalt, 0, 1.5).setBlockName("asphalt_stairs").setCreativeTab(MainRegistry.blockTab); + vinyl_tile = new BlockEnumMulti(Material.rock, TileType.class, true, true).setBlockName("vinyl_tile").setStepSound(Block.soundTypeGlass).setCreativeTab(MainRegistry.blockTab).setHardness(10.0F).setResistance(60.0F).setBlockTextureName(RefStrings.MODID + ":vinyl_tile"); - + tile_lab = new BlockOutgas(Material.rock, false, 5, true).setBlockName("tile_lab").setStepSound(Block.soundTypeGlass).setCreativeTab(MainRegistry.blockTab).setHardness(1.0F).setResistance(20.0F).setBlockTextureName(RefStrings.MODID + ":tile_lab"); tile_lab_cracked = new BlockOutgas(Material.rock, false, 5, true).setBlockName("tile_lab_cracked").setStepSound(Block.soundTypeGlass).setCreativeTab(MainRegistry.blockTab).setHardness(1.0F).setResistance(20.0F).setBlockTextureName(RefStrings.MODID + ":tile_lab_cracked"); tile_lab_broken = new BlockOutgas(Material.rock, true, 5, true).setBlockName("tile_lab_broken").setStepSound(Block.soundTypeGlass).setCreativeTab(MainRegistry.blockTab).setHardness(1.0F).setResistance(20.0F).setBlockTextureName(RefStrings.MODID + ":tile_lab_broken"); @@ -2707,6 +2709,7 @@ public class ModBlocks { GameRegistry.registerBlock(brick_asbestos_stairs, brick_asbestos_stairs.getUnlocalizedName()); GameRegistry.registerBlock(brick_fire_stairs, brick_fire_stairs.getUnlocalizedName()); GameRegistry.registerBlock(ducrete_stairs, ducrete_stairs.getUnlocalizedName()); + GameRegistry.registerBlock(asphalt_stairs, asphalt_stairs.getUnlocalizedName()); //CMB Building Elements GameRegistry.registerBlock(cmb_brick, ItemBlockBlastInfo.class, cmb_brick.getUnlocalizedName()); diff --git a/src/main/java/com/hbm/blocks/generic/BlockMultiSlab.java b/src/main/java/com/hbm/blocks/generic/BlockMultiSlab.java index 0772eb07c..bcc38242d 100644 --- a/src/main/java/com/hbm/blocks/generic/BlockMultiSlab.java +++ b/src/main/java/com/hbm/blocks/generic/BlockMultiSlab.java @@ -4,6 +4,7 @@ import java.util.ArrayList; import java.util.List; import java.util.Random; +import com.hbm.blocks.IStepTickReceiver; import com.hbm.lib.RefStrings; import cpw.mods.fml.relauncher.Side; @@ -13,12 +14,13 @@ import net.minecraft.block.BlockSlab; import net.minecraft.block.material.Material; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.entity.Entity; +import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.util.IIcon; import net.minecraft.world.World; -public class BlockMultiSlab extends BlockSlab { +public class BlockMultiSlab extends BlockSlab implements IStepTickReceiver { public static List recipeGen = new ArrayList(); @@ -100,4 +102,18 @@ public class BlockMultiSlab extends BlockSlab { Block block = slabMaterials[meta]; return block.getBlockHardness(world, x, y, z); //relies on block not assuming that they are at that position } + + @Override + public void onPlayerStep(World world, int x, int y, int z, EntityPlayer player) { + int meta = world.getBlockMetadata(x, y, z); + meta = (meta & 7) % slabMaterials.length; + Block block = slabMaterials[meta]; + if(!world.isRemote || !(block instanceof BlockSpeedy)) + return; + + if(player.moveForward != 0 || player.moveStrafing != 0) { + player.motionX *= 1.5; + player.motionZ *= 1.5; + } + } } diff --git a/src/main/java/com/hbm/blocks/generic/BlockSpeedyStairs.java b/src/main/java/com/hbm/blocks/generic/BlockSpeedyStairs.java new file mode 100644 index 000000000..609c66d5b --- /dev/null +++ b/src/main/java/com/hbm/blocks/generic/BlockSpeedyStairs.java @@ -0,0 +1,41 @@ +package com.hbm.blocks.generic; + +import com.hbm.blocks.IStepTickReceiver; +import com.hbm.blocks.ITooltipProvider; +import net.minecraft.block.Block; +import net.minecraft.block.material.Material; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; +import net.minecraft.util.EnumChatFormatting; +import net.minecraft.util.MathHelper; +import net.minecraft.world.World; + +import java.util.List; + +public class BlockSpeedyStairs extends BlockGenericStairs implements IStepTickReceiver, ITooltipProvider { + + double speed; + + public BlockSpeedyStairs(Block block, int meta, double speed) { + super(block, meta); + this.speed = speed; + } + + @Override + public void onPlayerStep(World world, int x, int y, int z, EntityPlayer player) { + + if(!world.isRemote) + return; + + if(player.moveForward != 0 || player.moveStrafing != 0) { + player.motionX *= speed; + player.motionZ *= speed; + } + } + + @Override + public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean ext) { + list.add(EnumChatFormatting.BLUE + "Increases speed by " + (MathHelper.floor_double((speed - 1) * 100)) + "%"); + } +} + diff --git a/src/main/java/com/hbm/inventory/container/ContainerCraneGrabber.java b/src/main/java/com/hbm/inventory/container/ContainerCraneGrabber.java index 32c91fd68..04b37445f 100644 --- a/src/main/java/com/hbm/inventory/container/ContainerCraneGrabber.java +++ b/src/main/java/com/hbm/inventory/container/ContainerCraneGrabber.java @@ -1,5 +1,6 @@ package com.hbm.inventory.container; +import com.hbm.inventory.SlotPattern; import com.hbm.inventory.SlotUpgrade; import com.hbm.items.ModItems; import com.hbm.tileentity.network.TileEntityCraneGrabber; @@ -20,7 +21,7 @@ public class ContainerCraneGrabber extends Container { //filter for(int i = 0; i < 3; i++) { for(int j = 0; j < 3; j++) { - this.addSlotToContainer(new Slot(grabber, j + i * 3, 40 + j * 18, 17 + i * 18)); + this.addSlotToContainer(new SlotPattern(grabber, j + i * 3, 40 + j * 18, 17 + i * 18)); } } diff --git a/src/main/resources/assets/hbm/lang/en_US.lang b/src/main/resources/assets/hbm/lang/en_US.lang index 88fae2ad4..742f18ca9 100644 --- a/src/main/resources/assets/hbm/lang/en_US.lang +++ b/src/main/resources/assets/hbm/lang/en_US.lang @@ -4644,6 +4644,7 @@ tile.anvil_starmetal.name=Starmetal Anvil tile.anvil_steel.name=Steel Anvil tile.ash_digamma.name=Ash tile.asphalt.name=Asphalt +tile.asphalt_stairs.name=Asphalt Stairs tile.asphalt_light.name=Glowing Asphalt tile.barbed_wire.name=Barbed Wire tile.barbed_wire_acid.name=Caustic Barbed Wire @@ -4918,6 +4919,7 @@ tile.concrete_colored_ext.machine_stripe.name=Builder's Choice Concrete - Indust tile.concrete_colored_ext.pink.name=Builder's Choice Concrete - Manly Pink tile.concrete_colored_ext.purple.name=Builder's Choice Concrete - Mysterious Purple tile.concrete_pillar.name=Rebar Reinforced Concrete Pillar +tile.concrete_slab.asphalt.name=Asphalt Slab tile.concrete_slab.concrete.name=Concrete Tile Slab tile.concrete_slab.concrete_asbestos.name=Asbestos Concrete Slab tile.concrete_slab.concrete_smooth.name=Concrete Slab From bdbe821d9d98a9f1c9ae43c97768fe68436418cf Mon Sep 17 00:00:00 2001 From: Bob Date: Fri, 31 May 2024 10:05:09 +0200 Subject: [PATCH 11/69] dosenbier --- changelog | 31 ++++--------------- .../TileEntityMachineSolderingStation.java | 22 +++++++++++++ 2 files changed, 28 insertions(+), 25 deletions(-) diff --git a/changelog b/changelog index 51a3f0259..7ef622d7f 100644 --- a/changelog +++ b/changelog @@ -1,28 +1,9 @@ +## Added +* Asphalt stairs + * Stairs, but fast + ## Changed -* Updated russian localization -* The powder combination recipe for steel powder now yields steel scraps instead, meaning that it has to be smelted either via crucible or arc furnace - * In addition, there is now an alternate recipe combining four times the material, yielding larger steel scraps, allowing for higher throughput - * The recipes for magnetized tungsten and technetium steel also now output scraps, although they lack the quadruple yield recipes - * Red copper got its powder mixing recipe back, also yielding scraps instead of powder -* The new autogen wire items now use texture overrides, restoring the original textures -* Arc furnaces now start burning on the inside as the electrodes are inserted, making the process look a lot more violent -* Arc furnaces in liquid mode will now immediately start draining their contents as soon as the lid starts lifting, instead of waiting until the lid is fully lifted -* The arc furnace's lid now moves faster depending on the upgrade (each upgrade adds 50% movement speed). Do note that this shortens the timespan for cycling items, so to utilize it fully you will need multiple or upgraded conveyors. -* Doubled the arc furnace's pouring speed to a full ingot per tick -* Demand for hard plastic per versatile circuit has been reduced from 4 to 2 bars per board -* The autocrafter now uses vacuum tubes instead of microchips -* Buoyant items (fish spawned by fishing dynamite) now sink in flowing water (i.e. in a tank of non-source blocks) -* Retextured all explosive sticks -* Added an extra digit to the CCGT's power gauge, allowing it to have even higher outputs - * Doubled the reformate gas consumption rate -* Asbestos and flint are now arc smeltable, having the same silicon yields as fiberglass -* The quartz glass recipe has been moved to the arc furnace -* Borax can now also be smelted in the arc furnace, yielding the same 33% boron that the ore acidizer does -* Silicon boules can now be mixed with liquid oxygen in an acidizer to make nether quartz -* Silicon shards from bedrock ore processing now yield 3 silicon nuggets instead of nether quartz -* The soldering station should now have a working recipe config instead of just generating an empty template file -* Removed the old stinger rocket recipe ## Fixed -* Removed sand to silicon AE2 compat recipe which caused sand to be shreddable into the new silicon wafers, skipping the arc furnace entirely -* Fixed shift clicking into the arc furnace placing the entire stack into a single slot, ignoring stacksize limitations +* Fixed dupe regarding conveyor grabbers +* Fixed soldering stations not saving progress or their fluid tanks \ No newline at end of file diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineSolderingStation.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineSolderingStation.java index 0dd93775e..3d0e34caf 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineSolderingStation.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineSolderingStation.java @@ -255,6 +255,28 @@ public class TileEntityMachineSolderingStation extends TileEntityMachineBase imp this.tank.readFromNBT(nbt, "t"); } + + @Override + public void readFromNBT(NBTTagCompound nbt) { + super.readFromNBT(nbt); + + this.power = nbt.getLong("power"); + this.maxPower = nbt.getLong("maxPower"); + this.progress = nbt.getInteger("progress"); + this.processTime = nbt.getInteger("processTime"); + tank.readFromNBT(nbt, "t"); + } + + @Override + public void writeToNBT(NBTTagCompound nbt) { + super.writeToNBT(nbt); + + nbt.setLong("power", power); + nbt.setLong("maxPower", maxPower); + nbt.setInteger("progress", progress); + nbt.setInteger("processTime", processTime); + tank.writeToNBT(nbt, "t"); + } @Override public long getPower() { From df7675c48e1d74937b3e81c7f0d425b4547df1f9 Mon Sep 17 00:00:00 2001 From: George Paton Date: Mon, 3 Jun 2024 17:06:57 +1000 Subject: [PATCH 12/69] I _might_ be stupid --- src/main/java/com/hbm/blocks/bomb/BlockChargeBase.java | 2 +- src/main/java/com/hbm/blocks/bomb/DetCord.java | 2 +- src/main/java/com/hbm/blocks/bomb/DetMiner.java | 2 +- src/main/java/com/hbm/blocks/bomb/ExplosiveCharge.java | 2 +- src/main/java/com/hbm/blocks/generic/YellowBarrel.java | 2 +- src/main/java/com/hbm/inventory/material/NTMMaterial.java | 5 +++++ 6 files changed, 10 insertions(+), 5 deletions(-) diff --git a/src/main/java/com/hbm/blocks/bomb/BlockChargeBase.java b/src/main/java/com/hbm/blocks/bomb/BlockChargeBase.java index 6419fe459..4ce9a4bc3 100644 --- a/src/main/java/com/hbm/blocks/bomb/BlockChargeBase.java +++ b/src/main/java/com/hbm/blocks/bomb/BlockChargeBase.java @@ -18,7 +18,7 @@ import com.hbm.tileentity.bomb.TileEntityCharge; import api.hbm.block.IFuckingExplode; import api.hbm.block.IToolable; -import codechicken.lib.math.MathHelper; +import net.minecraft.util.MathHelper; import net.minecraft.block.Block; import net.minecraft.block.material.Material; import net.minecraft.entity.player.EntityPlayer; diff --git a/src/main/java/com/hbm/blocks/bomb/DetCord.java b/src/main/java/com/hbm/blocks/bomb/DetCord.java index 326a0c801..2a02ed0cc 100644 --- a/src/main/java/com/hbm/blocks/bomb/DetCord.java +++ b/src/main/java/com/hbm/blocks/bomb/DetCord.java @@ -2,7 +2,7 @@ package com.hbm.blocks.bomb; import com.hbm.entity.item.EntityTNTPrimedBase; -import codechicken.lib.math.MathHelper; +import net.minecraft.util.MathHelper; import cpw.mods.fml.client.registry.RenderingRegistry; import net.minecraft.block.Block; import net.minecraft.block.material.Material; diff --git a/src/main/java/com/hbm/blocks/bomb/DetMiner.java b/src/main/java/com/hbm/blocks/bomb/DetMiner.java index f8b0ffcaa..4ec679353 100644 --- a/src/main/java/com/hbm/blocks/bomb/DetMiner.java +++ b/src/main/java/com/hbm/blocks/bomb/DetMiner.java @@ -10,7 +10,7 @@ import com.hbm.explosion.ExplosionNT.ExAttrib; import com.hbm.interfaces.IBomb; import api.hbm.block.IFuckingExplode; -import codechicken.lib.math.MathHelper; +import net.minecraft.util.MathHelper; import net.minecraft.block.Block; import net.minecraft.block.material.Material; import net.minecraft.item.Item; diff --git a/src/main/java/com/hbm/blocks/bomb/ExplosiveCharge.java b/src/main/java/com/hbm/blocks/bomb/ExplosiveCharge.java index f1b92756b..84ccebc63 100644 --- a/src/main/java/com/hbm/blocks/bomb/ExplosiveCharge.java +++ b/src/main/java/com/hbm/blocks/bomb/ExplosiveCharge.java @@ -10,7 +10,7 @@ import com.hbm.explosion.ExplosionNT; import com.hbm.interfaces.IBomb; import com.hbm.lib.RefStrings; -import codechicken.lib.math.MathHelper; +import net.minecraft.util.MathHelper; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.block.Block; diff --git a/src/main/java/com/hbm/blocks/generic/YellowBarrel.java b/src/main/java/com/hbm/blocks/generic/YellowBarrel.java index 17895777c..bf0d4baf9 100644 --- a/src/main/java/com/hbm/blocks/generic/YellowBarrel.java +++ b/src/main/java/com/hbm/blocks/generic/YellowBarrel.java @@ -9,7 +9,7 @@ import com.hbm.entity.item.EntityTNTPrimedBase; import com.hbm.explosion.ExplosionNukeGeneric; import com.hbm.handler.radiation.ChunkRadiationManager; -import codechicken.lib.math.MathHelper; +import net.minecraft.util.MathHelper; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.block.material.Material; diff --git a/src/main/java/com/hbm/inventory/material/NTMMaterial.java b/src/main/java/com/hbm/inventory/material/NTMMaterial.java index 193ad939a..554845e05 100644 --- a/src/main/java/com/hbm/inventory/material/NTMMaterial.java +++ b/src/main/java/com/hbm/inventory/material/NTMMaterial.java @@ -4,7 +4,11 @@ import java.util.HashSet; import java.util.Locale; import java.util.Set; +import java.awt.Color; + import com.hbm.inventory.OreDictManager.DictFrame; +import com.hbm.main.MainRegistry; +import com.hbm.util.I18nUtil; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; @@ -86,6 +90,7 @@ public class NTMMaterial { public NTMMaterial setMoltenColor(int color) { this.moltenColor = color; + MainRegistry.logger.info(I18nUtil.resolveKey(getUnlocalizedName()) + " : " + String.format("0x%08X", color)); return this; } From 3b160158c1b19a7e5c0db027fa4bd07144cc34ac Mon Sep 17 00:00:00 2001 From: George Paton Date: Mon, 3 Jun 2024 17:08:40 +1000 Subject: [PATCH 13/69] and the hits keep coming --- src/main/java/com/hbm/inventory/material/NTMMaterial.java | 5 ----- 1 file changed, 5 deletions(-) diff --git a/src/main/java/com/hbm/inventory/material/NTMMaterial.java b/src/main/java/com/hbm/inventory/material/NTMMaterial.java index 554845e05..193ad939a 100644 --- a/src/main/java/com/hbm/inventory/material/NTMMaterial.java +++ b/src/main/java/com/hbm/inventory/material/NTMMaterial.java @@ -4,11 +4,7 @@ import java.util.HashSet; import java.util.Locale; import java.util.Set; -import java.awt.Color; - import com.hbm.inventory.OreDictManager.DictFrame; -import com.hbm.main.MainRegistry; -import com.hbm.util.I18nUtil; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; @@ -90,7 +86,6 @@ public class NTMMaterial { public NTMMaterial setMoltenColor(int color) { this.moltenColor = color; - MainRegistry.logger.info(I18nUtil.resolveKey(getUnlocalizedName()) + " : " + String.format("0x%08X", color)); return this; } From 209c1b169120abf32aad82e40c45dfc2d0859e23 Mon Sep 17 00:00:00 2001 From: George Paton Date: Mon, 3 Jun 2024 17:13:47 +1000 Subject: [PATCH 14/69] Replace scala Arrays with java.util Arrays (asList is equivalent) --- src/main/java/com/hbm/interfaces/ICustomWarhead.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/hbm/interfaces/ICustomWarhead.java b/src/main/java/com/hbm/interfaces/ICustomWarhead.java index 656425cd1..479ad891c 100644 --- a/src/main/java/com/hbm/interfaces/ICustomWarhead.java +++ b/src/main/java/com/hbm/interfaces/ICustomWarhead.java @@ -4,6 +4,7 @@ import java.text.DecimalFormat; import java.util.ArrayList; import java.util.List; import java.util.Locale; +import java.util.Arrays; import org.apache.logging.log4j.Level; @@ -17,7 +18,6 @@ import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.EnumChatFormatting; -import scala.actors.threadpool.Arrays; /** * Interface for customizable warheads or other explosive devices * @author UFFR From 5241ff661bd932ed062179c713e12e959a9a757e Mon Sep 17 00:00:00 2001 From: George Paton Date: Mon, 3 Jun 2024 19:26:38 +1000 Subject: [PATCH 15/69] Automatic fence posts --- .../hbm/blocks/generic/BlockMetalFence.java | 136 +++++++++--------- .../com/hbm/render/block/RenderFence.java | 85 +++++------ .../hbm/textures/blocks/fence_metal.png | Bin 596 -> 4488 bytes .../hbm/textures/blocks/fence_metal_post.png | Bin 0 -> 596 bytes 4 files changed, 104 insertions(+), 117 deletions(-) create mode 100644 src/main/resources/assets/hbm/textures/blocks/fence_metal_post.png diff --git a/src/main/java/com/hbm/blocks/generic/BlockMetalFence.java b/src/main/java/com/hbm/blocks/generic/BlockMetalFence.java index 753832e36..1cdfaa2a7 100644 --- a/src/main/java/com/hbm/blocks/generic/BlockMetalFence.java +++ b/src/main/java/com/hbm/blocks/generic/BlockMetalFence.java @@ -10,104 +10,98 @@ import net.minecraft.block.material.Material; import net.minecraft.client.renderer.texture.IIconRegister; import net.minecraft.entity.Entity; import net.minecraft.util.AxisAlignedBB; +import net.minecraft.util.IIcon; import net.minecraft.world.World; public class BlockMetalFence extends BlockFence { - - public BlockMetalFence(Material p_i45406_2_) { - super("", p_i45406_2_); + + public IIcon postIcon; + + public BlockMetalFence(Material mat) { + super("", mat); } - - public static int renderID = RenderingRegistry.getNextAvailableRenderId(); + + public static int renderID = RenderingRegistry.getNextAvailableRenderId(); @Override - public int getRenderType(){ + public int getRenderType() { return renderID; } - + @Override public boolean isOpaqueCube() { return false; } - + @Override public boolean renderAsNormalBlock() { return false; } - @SideOnly(Side.CLIENT) - public void registerBlockIcons(IIconRegister p_149651_1_) - { - this.blockIcon = p_149651_1_.registerIcon(this.getTextureName()); - } - - public void addCollisionBoxesToList(World p_149743_1_, int p_149743_2_, int p_149743_3_, int p_149743_4_, AxisAlignedBB p_149743_5_, List p_149743_6_, Entity p_149743_7_) - { - boolean flag = this.canConnectFenceTo(p_149743_1_, p_149743_2_, p_149743_3_, p_149743_4_ - 1); - boolean flag1 = this.canConnectFenceTo(p_149743_1_, p_149743_2_, p_149743_3_, p_149743_4_ + 1); - boolean flag2 = this.canConnectFenceTo(p_149743_1_, p_149743_2_ - 1, p_149743_3_, p_149743_4_); - boolean flag3 = this.canConnectFenceTo(p_149743_1_, p_149743_2_ + 1, p_149743_3_, p_149743_4_); - float f = 0.375F; - float f1 = 0.625F; - float f2 = 0.375F; - float f3 = 0.625F; + @Override + @SideOnly(Side.CLIENT) + public void registerBlockIcons(IIconRegister iconRegister) { + this.blockIcon = iconRegister.registerIcon(this.getTextureName()); + this.postIcon = iconRegister.registerIcon(this.getTextureName() + "_post"); + } - if (flag) - { - f2 = 0.0F; - } + @Override + public void addCollisionBoxesToList(World world, int x, int y, int z, AxisAlignedBB aabb, List list, Entity entity) { + boolean flag = this.canConnectFenceTo(world, x, y, z - 1); + boolean flag1 = this.canConnectFenceTo(world, x, y, z + 1); + boolean flag2 = this.canConnectFenceTo(world, x - 1, y, z); + boolean flag3 = this.canConnectFenceTo(world, x + 1, y, z); + float f = 0.375F; + float f1 = 0.625F; + float f2 = 0.375F; + float f3 = 0.625F; - if (flag1) - { - f3 = 1.0F; - } + if(flag) { + f2 = 0.0F; + } - if (flag || flag1) - { - this.setBlockBounds(f, 0.0F, f2, f1, 1.0F, f3); - addCol(p_149743_1_, p_149743_2_, p_149743_3_, p_149743_4_, p_149743_5_, p_149743_6_, p_149743_7_); - } + if(flag1) { + f3 = 1.0F; + } - f2 = 0.375F; - f3 = 0.625F; + if(flag || flag1) { + this.setBlockBounds(f, 0.0F, f2, f1, 1.0F, f3); + addCol(world, x, y, z, aabb, list, entity); + } - if (flag2) - { - f = 0.0F; - } + f2 = 0.375F; + f3 = 0.625F; - if (flag3) - { - f1 = 1.0F; - } + if(flag2) { + f = 0.0F; + } - if (flag2 || flag3 || !flag && !flag1) - { - this.setBlockBounds(f, 0.0F, f2, f1, 1.0F, f3); - addCol(p_149743_1_, p_149743_2_, p_149743_3_, p_149743_4_, p_149743_5_, p_149743_6_, p_149743_7_); - } + if(flag3) { + f1 = 1.0F; + } - if (flag) - { - f2 = 0.0F; - } + if(flag2 || flag3 || !flag && !flag1) { + this.setBlockBounds(f, 0.0F, f2, f1, 1.0F, f3); + addCol(world, x, y, z, aabb, list, entity); + } - if (flag1) - { - f3 = 1.0F; - } + if(flag) { + f2 = 0.0F; + } - this.setBlockBounds(f, 0.0F, f2, f1, 1.0F, f3); - } - - public void addCol(World p_149743_1_, int p_149743_2_, int p_149743_3_, int p_149743_4_, AxisAlignedBB p_149743_5_, List p_149743_6_, Entity p_149743_7_) - { - AxisAlignedBB axisalignedbb1 = this.getCollisionBoundingBoxFromPool(p_149743_1_, p_149743_2_, p_149743_3_, p_149743_4_); + if(flag1) { + f3 = 1.0F; + } - if (axisalignedbb1 != null && p_149743_5_.intersectsWith(axisalignedbb1)) - { - p_149743_6_.add(axisalignedbb1); - } - } + this.setBlockBounds(f, 0.0F, f2, f1, 1.0F, f3); + } + + private void addCol(World world, int x, int y, int z, AxisAlignedBB aabb, List list, Entity entity) { + AxisAlignedBB axisalignedbb1 = this.getCollisionBoundingBoxFromPool(world, x, y, z); + + if(axisalignedbb1 != null && aabb.intersectsWith(axisalignedbb1)) { + list.add(axisalignedbb1); + } + } } diff --git a/src/main/java/com/hbm/render/block/RenderFence.java b/src/main/java/com/hbm/render/block/RenderFence.java index f86d128cc..5b58fbd89 100644 --- a/src/main/java/com/hbm/render/block/RenderFence.java +++ b/src/main/java/com/hbm/render/block/RenderFence.java @@ -5,7 +5,6 @@ import com.hbm.blocks.generic.BlockMetalFence; import cpw.mods.fml.client.registry.ISimpleBlockRenderingHandler; import net.minecraft.block.Block; -import net.minecraft.block.BlockFence; import net.minecraft.client.renderer.RenderBlocks; import net.minecraft.world.IBlockAccess; @@ -19,58 +18,52 @@ public class RenderFence implements ISimpleBlockRenderingHandler { @Override public boolean renderWorldBlock(IBlockAccess world, int x, int y, int z, Block block, int modelId, RenderBlocks renderer) { - BlockFence fence = (BlockFence) ModBlocks.fence_metal; + BlockMetalFence fence = (BlockMetalFence) ModBlocks.fence_metal; + + boolean xNeg = fence.canConnectFenceTo(world, x - 1, y, z); + boolean xPos = fence.canConnectFenceTo(world, x + 1, y, z); + boolean zNeg = fence.canConnectFenceTo(world, x, y, z - 1); + boolean zPos = fence.canConnectFenceTo(world, x, y, z + 1); + + boolean flag1 = xNeg || xPos; + boolean flag2 = zNeg || zPos; - float f = 0.375F; - float f1 = 0.625F; - renderer.setRenderBounds((double)f, 0.0D, (double)f, (double)f1, 1.0D, (double)f1); - renderer.renderStandardBlock(fence, x, y, z); - boolean flag1 = false; - boolean flag2 = false; + boolean hidePost = (xNeg && xPos) || (zNeg && zPos); - if (fence.canConnectFenceTo(world, x - 1, y, z) || fence.canConnectFenceTo(world, x + 1, y, z)) - { - flag1 = true; - } + if (!flag1 && !flag2) { + flag1 = true; + } - if (fence.canConnectFenceTo(world, x, y, z - 1) || fence.canConnectFenceTo(world, x, y, z + 1)) - { - flag2 = true; - } + float f = 0.4375F; + float f1 = 0.5625F; + float f4 = xNeg ? 0.0F : f; + float f5 = xPos ? 1.0F : f1; + float f6 = zNeg ? 0.0F : f; + float f7 = zPos ? 1.0F : f1; + renderer.field_152631_f = true; - boolean flag3 = fence.canConnectFenceTo(world, x - 1, y, z); - boolean flag4 = fence.canConnectFenceTo(world, x + 1, y, z); - boolean flag5 = fence.canConnectFenceTo(world, x, y, z - 1); - boolean flag6 = fence.canConnectFenceTo(world, x, y, z + 1); + if (flag1) { + renderer.setRenderBounds((double)f4, (double)0, (double)0.5, (double)f5, (double)1, (double)0.5); + renderer.renderStandardBlock(fence, x, y, z); + } - if (!flag1 && !flag2) - { - flag1 = true; - } + if (flag2) { + renderer.setRenderBounds((double)0.5, (double)0, (double)f6, (double)0.5, (double)1, (double)f7); + renderer.renderStandardBlock(fence, x, y, z); + } - f = 0.4375F; - f1 = 0.5625F; - float f4 = flag3 ? 0.0F : f; - float f5 = flag4 ? 1.0F : f1; - float f6 = flag5 ? 0.0F : f; - float f7 = flag6 ? 1.0F : f1; - renderer.field_152631_f = true; + if(!hidePost) { + f = 0.375F; + f1 = 0.625F; + renderer.setOverrideBlockTexture(fence.postIcon); + renderer.setRenderBounds((double)f, 0.0D, (double)f, (double)f1, 1.0D, (double)f1); + renderer.renderStandardBlock(fence, x, y, z); + renderer.clearOverrideBlockTexture(); + } - if (flag1) - { - renderer.setRenderBounds((double)f4, (double)0, (double)0.5, (double)f5, (double)1, (double)0.5); - renderer.renderStandardBlock(fence, x, y, z); - } - - if (flag2) - { - renderer.setRenderBounds((double)0.5, (double)0, (double)f6, (double)0.5, (double)1, (double)f7); - renderer.renderStandardBlock(fence, x, y, z); - } - - renderer.field_152631_f = false; - fence.setBlockBoundsBasedOnState(world, x, y, z); - return true; + renderer.field_152631_f = false; + fence.setBlockBoundsBasedOnState(world, x, y, z); + return true; } @Override diff --git a/src/main/resources/assets/hbm/textures/blocks/fence_metal.png b/src/main/resources/assets/hbm/textures/blocks/fence_metal.png index 12d6faaea426ba17de801a84cd9448c04c0c3db8..40f5411bba5643958554457edfe7235a85e26cf7 100644 GIT binary patch literal 4488 zcmeHKdsGwY6(3XxvcQ6ix~r^?(NYnTOu~@Il&C{=R#E_ulW!SCpKT5a2h>4}zcoU82SSojUmHyI(iOuwD{bbndkOis0rMWyDakFo&8Dm)2}Vd@PBX0hE)*cwS|t4Pu9i9zl;S$u&;2J zI}n!9(;7_T-o zXQT+O*!5fn$^?U^}YDqXJ1_IQ$73W{j*SMVkl9E2Uovw*^-GpDEu0USnSuO z>N*)abyq#-AnB6zCk9XYbJ$n-?^;OXWp@(gUe?(Yf7HB&*-0Zrc}6RNmT%1zi_~B z^6qxQi_Ld#l{6pLDZ)bpby=2PVuJ6ZaTn{X8)mxmx+iol7@wBu&ay(Em415Noq5mq z+dDquDtE~jf|dV-HZQFs6L;Jz4-ffeeeYX^DKp+Y>0OX^>vm?ZvJg7ncC{sdWqp73 z+qv&uY`@iT>2|-m^}7y1L!AB356No*py={wP+aNyB^be2#W=|rDY47Sf~td{m<28t zC)QCMY^2PzO)c#B{7*udCe^~UXg#85?9VUG&8PAyE=C&TfKoq|y@Dn>+F7o8^)&i8|3?4$`ZXxey8V4*j5oBNg=FYA)@3ag$R{P0SbXq zB3z*)5ha3}P$}twA_?pr#%{$yI%z9zrX;M*?3v&R$6}LpYN1Sw3`>$NIA;O|pa*Ch z$v7RuQ>nC-O5t#xPpLwxKoJyGB64N4JZgmf3d-&PwaBAN5pfjiG3OJ5fp7q|IA5s% zz#|9IVDWYe=NNk`!&uZp-YJ;39GcdHh9Yqe*WerlKoJ>=A#x0fN|h=xREZ%-gcJey zVSR?AP5J*zn{OXDW+3T_v;(Z4?-333R0@?dFd7(IXiqc2u%|6BoEQkff#*>J90RO@ zDIy!UnJKV;3>NH5IsF60fSaOm6Rx5}MwJrOlN2P+D3eJ=gh{EOjG!!JB;|=}2;IS$ zI45qWV$Fa@z!fM^4_ENq!BmBh)^}!8d>#O0B1A44L77l87_5ZfFwNjq3y_B zZ;8m@r=6fxXhRgj{)hXPCwOng7VQ)ceYf7Mfm(5;mXacnI`s9tx#$A6${I{HG zpY`*$?ti26Lj$+?e4ILOVtqC`Y2$r+IP`tND(IW;{HinUIaBg#S1x(n<%)c=w&q+V zbK7=e+|D^g5cl~iuNxM5?T$|pU8h!u)!wpA&#Jy2Hy+u0@q+)>#xkh#`Z}*{`QF;9 z6%`pbNSX9(Y*0w1AfUdtPyY75{wRTdvq%d)?JcZ2fB*RN6BP%yWwt*2{T0Zy|EHzf z>aq$C%$51&uyi-g;KK zqdl&>wr6#<+17IDS>O7qiwl_(dv(`#W?k#(7fiM^8Yu4@Bh&P`FMnrKV;@ThJ%9SqscP^x77V@Ts&fQ(^;k@TP=UxEv z`MdxwE-nP%d7h4ji2}E-$ahuA+XC=?UjY02`vRCwr{eDJPJeu>`}=zVOa^^*oSMRB zBP9ShJw46f0a#mG6F?Y-0!WfXN5e$DR#S1?*Ur{Y0Tc=a0qpJV2_TB1CE4ZWWrq1^ zn5gSHihNhq?Yz#;&NB1iaJcL}&-;=+nFwGun`zXK6t{hKJx9NPZ3>`XuM1#29t+_3 z_*gtVJY<-w)qko0{`5jcep4N%rlS2L#av%suX->T3^E=BL7>0WvEsI;j#HOYDGFdT z8VR6WE(^f6m*&#z^;SIS@3z$STs6u?9UL5F=1GzWAP4aH_^7wHH_IsKcDwrc_y9m! zuvjd3etxz#HZ}w>pU?I3@?x#8uZtiEGR*V&T;Ed&n}1Gb58^n^;B)Wq?^e6rmKi=h zJy|B-&(BYCIV%O*wyoFKSId02QmHJ-%o>{-#$5$&UA>m4dZ{22v8mhJ+hu=vcqo8U zsU(0-r=xh+U%3U7ze%lDtBI?ts|@q``MJInMC$Lh6gC^G6}MB&$;rv;9vCAX$4OtB z4EpM|nluWV4ee}wU8_;*x^C)ON^)~^^WR%ADH!>tX0w?9{s9kZ6GU%*->Coq002ov JPDHLkV1je|7%>0< diff --git a/src/main/resources/assets/hbm/textures/blocks/fence_metal_post.png b/src/main/resources/assets/hbm/textures/blocks/fence_metal_post.png new file mode 100644 index 0000000000000000000000000000000000000000..12d6faaea426ba17de801a84cd9448c04c0c3db8 GIT binary patch literal 596 zcmV-a0;~OrP)`XuM1#29t+_3_*gtVJY<-w)v5sg^g=~`Qyr(KqWvSq zTwhSS)ycezrC?HUu!A&-L>1Vy&;Qiy#Ox z%=7tN-%|*iPG%3{IL_d6@9*zcyWN%3f**Vk9ee791mEXm9o zn;OPl1#VrvmZy5DAQQ2v+uPe^e|UH(fKsU>fKI2Qc-LRK1(Ux?tyZgvtE;OF^ZEI? zz7$02@3s^+8>$tzQ_RW9$?6^$BOS*{Uz!a1>b05*n+@%3eO;?j>bh>~SxRzqbMxO@ iFew=Mre?F50R90FX%j?me&4A80000 Date: Mon, 3 Jun 2024 15:41:22 +0200 Subject: [PATCH 16/69] comically expensive --- changelog | 5 ++- .../entity/missile/EntityMissileTier0.java | 2 +- .../com/hbm/explosion/ExplosionLarge.java | 2 +- .../inventory/recipes/SolderingRecipes.java | 32 ++++++++++++++++++ .../inventory/recipes/anvil/AnvilRecipes.java | 15 ++++---- src/main/java/com/hbm/items/ModItems.java | 20 ++++------- .../com/hbm/items/machine/ItemCircuit.java | 27 +++++++++++++++ .../java/com/hbm/main/CraftingManager.java | 3 +- .../java/com/hbm/main/ModEventHandler.java | 5 ++- .../hbm/textures/items/circuit.controller.png | Bin 0 -> 322 bytes .../items/circuit.controller_advanced.png | Bin 0 -> 369 bytes .../items/circuit.controller_chassis.png | Bin 0 -> 311 bytes .../assets/hbm/textures/items/circuit.png | Bin 9214 -> 9437 bytes .../hbm/textures/items/stamp_desh_circuit.png | Bin 277 -> 326 bytes .../hbm/textures/items/stamp_dura_flat.png | Bin 234 -> 0 bytes .../hbm/textures/items/stamp_iron_blank.png | Bin 0 -> 719 bytes .../hbm/textures/items/stamp_iron_circuit.png | Bin 619 -> 785 bytes .../textures/items/stamp_obsidian_circuit.png | Bin 278 -> 302 bytes .../textures/items/stamp_obsidian_flat.png | Bin 220 -> 180 bytes .../textures/items/stamp_obsidian_plate.png | Bin 239 -> 220 bytes .../textures/items/stamp_obsidian_wire.png | Bin 239 -> 190 bytes .../items/stamp_schrabidium_circuit.png | Bin 297 -> 0 bytes .../textures/items/stamp_schrabidium_flat.png | Bin 231 -> 0 bytes .../items/stamp_schrabidium_plate.png | Bin 252 -> 0 bytes .../textures/items/stamp_schrabidium_wire.png | Bin 261 -> 0 bytes .../textures/items/stamp_steel_circuit.png | Bin 236 -> 310 bytes .../textures/items/stamp_stone_circuit.png | Bin 267 -> 281 bytes .../hbm/textures/items/stamp_stone_flat.png | Bin 212 -> 177 bytes .../hbm/textures/items/stamp_stone_plate.png | Bin 223 -> 209 bytes .../hbm/textures/items/stamp_stone_wire.png | Bin 223 -> 186 bytes .../textures/items/stamp_titanium_circuit.png | Bin 286 -> 352 bytes .../textures/items/stamp_titanium_flat.png | Bin 224 -> 193 bytes .../textures/items/stamp_titanium_plate.png | Bin 242 -> 232 bytes .../textures/items/stamp_titanium_wire.png | Bin 244 -> 202 bytes 34 files changed, 82 insertions(+), 29 deletions(-) create mode 100644 src/main/resources/assets/hbm/textures/items/circuit.controller.png create mode 100644 src/main/resources/assets/hbm/textures/items/circuit.controller_advanced.png create mode 100644 src/main/resources/assets/hbm/textures/items/circuit.controller_chassis.png delete mode 100644 src/main/resources/assets/hbm/textures/items/stamp_dura_flat.png create mode 100644 src/main/resources/assets/hbm/textures/items/stamp_iron_blank.png delete mode 100644 src/main/resources/assets/hbm/textures/items/stamp_schrabidium_circuit.png delete mode 100644 src/main/resources/assets/hbm/textures/items/stamp_schrabidium_flat.png delete mode 100644 src/main/resources/assets/hbm/textures/items/stamp_schrabidium_plate.png delete mode 100644 src/main/resources/assets/hbm/textures/items/stamp_schrabidium_wire.png diff --git a/changelog b/changelog index 7ef622d7f..a17ed658d 100644 --- a/changelog +++ b/changelog @@ -3,7 +3,10 @@ * Stairs, but fast ## Changed +* Wires now use recipe autogen for anvils, meaning that all fine wires are now obtainable via tier 4 anvil ## Fixed * Fixed dupe regarding conveyor grabbers -* Fixed soldering stations not saving progress or their fluid tanks \ No newline at end of file +* Fixed soldering stations not saving progress or their fluid tanks +* Fixed a bug where missile debris would always spawn with a stack size of 1 and a meta of 0 +* Fixed FM radios disassembling into incorrect parts \ No newline at end of file diff --git a/src/main/java/com/hbm/entity/missile/EntityMissileTier0.java b/src/main/java/com/hbm/entity/missile/EntityMissileTier0.java index 17923d69e..811d7944f 100644 --- a/src/main/java/com/hbm/entity/missile/EntityMissileTier0.java +++ b/src/main/java/com/hbm/entity/missile/EntityMissileTier0.java @@ -99,7 +99,7 @@ public abstract class EntityMissileTier0 extends EntityMissileBaseNT { this.worldObj.spawnEntityInWorld(cloud); } } - @Override public ItemStack getDebrisRareDrop() { return new ItemStack(ModItems.powder_schrabidium, 1); } + @Override public ItemStack getDebrisRareDrop() { return null; } @Override public ItemStack getMissileItemForInfo() { return new ItemStack(ModItems.missile_schrabidium); } } diff --git a/src/main/java/com/hbm/explosion/ExplosionLarge.java b/src/main/java/com/hbm/explosion/ExplosionLarge.java index 650f88da8..64adc7913 100644 --- a/src/main/java/com/hbm/explosion/ExplosionLarge.java +++ b/src/main/java/com/hbm/explosion/ExplosionLarge.java @@ -130,7 +130,7 @@ public class ExplosionLarge { if(debris.get(i) != null) { int k = rand.nextInt(debris.get(i).stackSize + 1); for(int j = 0; j < k; j++) { - EntityItem item = new EntityItem(world, x, y, z, new ItemStack(debris.get(i).getItem())); + EntityItem item = new EntityItem(world, x, y, z, debris.get(i).copy()); item.motionX = (motionX + rand.nextGaussian() * deviation) * 0.85; item.motionY = (motionY + rand.nextGaussian() * deviation) * 0.85; item.motionZ = (motionZ + rand.nextGaussian() * deviation) * 0.85; diff --git a/src/main/java/com/hbm/inventory/recipes/SolderingRecipes.java b/src/main/java/com/hbm/inventory/recipes/SolderingRecipes.java index 23c4dbbd3..a9f16babf 100644 --- a/src/main/java/com/hbm/inventory/recipes/SolderingRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/SolderingRecipes.java @@ -30,6 +30,10 @@ public class SolderingRecipes extends SerializableRecipe { @Override public void registerDefaults() { + /* + * CIRCUITS + */ + recipes.add(new SolderingRecipe(new ItemStack(ModItems.circuit, 1, EnumCircuitType.ANALOG.ordinal()), 100, 100, new AStack[] { new ComparableStack(ModItems.circuit, 3, EnumCircuitType.VACUUM_TUBE), @@ -83,6 +87,34 @@ public class SolderingRecipes extends SerializableRecipe { new AStack[] { new OreDictStack(PB.wireFine(), 12)} )); + + /* + * COMPUTERS + */ + + // a very, very vague guess on what the recipes should be. testing still needed, upgrade requirements are likely to change. maybe inclusion of caesium? + recipes.add(new SolderingRecipe(new ItemStack(ModItems.circuit, 1, EnumCircuitType.CONTROLLER.ordinal()), 400, 15_000, + new AStack[] { + new ComparableStack(ModItems.circuit, 32, EnumCircuitType.CHIP), + new ComparableStack(ModItems.circuit, 32, EnumCircuitType.CAPACITOR), + new ComparableStack(ModItems.circuit, 16, EnumCircuitType.CAPACITOR_TANTALIUM)}, + new AStack[] { + new ComparableStack(ModItems.circuit, 12, EnumCircuitType.CONTROLLER_CHASSIS), + new ComparableStack(ModItems.upgrade_speed_1)}, + new AStack[] { + new OreDictStack(PB.wireFine(), 16)} + )); + recipes.add(new SolderingRecipe(new ItemStack(ModItems.circuit, 1, EnumCircuitType.CONTROLLER_ADVANCED.ordinal()), 600, 25_000, + new AStack[] { + new ComparableStack(ModItems.circuit, 16, EnumCircuitType.CHIP_BISMOID), + new ComparableStack(ModItems.circuit, 48, EnumCircuitType.CAPACITOR), + new ComparableStack(ModItems.circuit, 32, EnumCircuitType.CAPACITOR_TANTALIUM)}, + new AStack[] { + new ComparableStack(ModItems.circuit, 12, EnumCircuitType.CONTROLLER_CHASSIS), + new ComparableStack(ModItems.upgrade_speed_3)}, + new AStack[] { + new OreDictStack(PB.wireFine(), 24)} + )); /* * UPGRADES diff --git a/src/main/java/com/hbm/inventory/recipes/anvil/AnvilRecipes.java b/src/main/java/com/hbm/inventory/recipes/anvil/AnvilRecipes.java index 0eaeeb747..075fc77a2 100644 --- a/src/main/java/com/hbm/inventory/recipes/anvil/AnvilRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/anvil/AnvilRecipes.java @@ -149,14 +149,11 @@ public class AnvilRecipes { constructionRecipes.add(new AnvilConstructionRecipe(new OreDictStack(CMB.ingot()), new AnvilOutput(new ItemStack(ModItems.plate_combine_steel))).setTier(3)); constructionRecipes.add(new AnvilConstructionRecipe(new OreDictStack(BIGMT.ingot()), new AnvilOutput(new ItemStack(ModItems.plate_saturnite))).setTier(3)); - constructionRecipes.add(new AnvilConstructionRecipe(new OreDictStack(AL.ingot()), new AnvilOutput(new ItemStack(ModItems.wire_fine, 8, Mats.MAT_ALUMINIUM.id))).setTier(4)); - constructionRecipes.add(new AnvilConstructionRecipe(new OreDictStack(CU.ingot()), new AnvilOutput(new ItemStack(ModItems.wire_fine, 8, Mats.MAT_COPPER.id))).setTier(4)); - constructionRecipes.add(new AnvilConstructionRecipe(new OreDictStack(W.ingot()), new AnvilOutput(new ItemStack(ModItems.wire_fine, 8, Mats.MAT_TUNGSTEN.id))).setTier(4)); - constructionRecipes.add(new AnvilConstructionRecipe(new OreDictStack(MINGRADE.ingot()), new AnvilOutput(new ItemStack(ModItems.wire_fine, 8, Mats.MAT_MINGRADE.id))).setTier(4)); - constructionRecipes.add(new AnvilConstructionRecipe(new OreDictStack(ALLOY.ingot()), new AnvilOutput(new ItemStack(ModItems.wire_fine, 8, Mats.MAT_ALLOY.id))).setTier(4)); - constructionRecipes.add(new AnvilConstructionRecipe(new OreDictStack(GOLD.ingot()), new AnvilOutput(new ItemStack(ModItems.wire_fine, 8, Mats.MAT_GOLD.id))).setTier(4)); - constructionRecipes.add(new AnvilConstructionRecipe(new OreDictStack(SA326.ingot()), new AnvilOutput(new ItemStack(ModItems.wire_fine, 8, Mats.MAT_SCHRABIDIUM.id))).setTier(4)); - constructionRecipes.add(new AnvilConstructionRecipe(new OreDictStack(MAGTUNG.ingot()), new AnvilOutput(new ItemStack(ModItems.wire_fine, 8, Mats.MAT_MAGTUNG.id))).setTier(4)); + for(NTMMaterial mat : Mats.orderedList) { + if(mat.shapes.contains(MaterialShapes.WIRE) && mat.shapes.contains(MaterialShapes.INGOT)) { + constructionRecipes.add(new AnvilConstructionRecipe(new OreDictStack(OreNames.INGOT + mat.names[0]), new AnvilOutput(new ItemStack(ModItems.wire_fine, 8, mat.id))).setTier(4)); + } + } constructionRecipes.add(new AnvilConstructionRecipe(new OreDictStack(COAL.dust()), new AnvilOutput(new ItemStack(Items.coal))).setTier(3)); constructionRecipes.add(new AnvilConstructionRecipe(new OreDictStack(NETHERQUARTZ.dust()), new AnvilOutput(new ItemStack(Items.quartz))).setTier(3)); @@ -879,7 +876,7 @@ public class AnvilRecipes { new AnvilOutput[] { new AnvilOutput(new ItemStack(ModItems.plate_steel, 4)), new AnvilOutput(new ItemStack(ModItems.wire_fine, 1, Mats.MAT_COPPER.id)), - new AnvilOutput(new ItemStack(ModItems.circuit, 1, EnumCircuitType.BASIC.ordinal()), 0.5F), + new AnvilOutput(new ItemStack(ModItems.circuit, 1, EnumCircuitType.VACUUM_TUBE.ordinal()), 0.5F), new AnvilOutput(new ItemStack(ModItems.ingot_polymer, 1), 0.25F), } ).setTier(2)); diff --git a/src/main/java/com/hbm/items/ModItems.java b/src/main/java/com/hbm/items/ModItems.java index fa8b6b902..5762a6dd0 100644 --- a/src/main/java/com/hbm/items/ModItems.java +++ b/src/main/java/com/hbm/items/ModItems.java @@ -2590,7 +2590,7 @@ public class ModItems { ingot_semtex = new ItemLemon(4, 5, true).setUnlocalizedName("ingot_semtex").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":ingot_semtex"); ingot_c4 = new Item().setUnlocalizedName("ingot_c4").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":ingot_c4"); ingot_phosphorus = new Item().setUnlocalizedName("ingot_phosphorus").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":ingot_phosphorus"); - wire_advanced_alloy = new Item().setUnlocalizedName("wire_advanced_alloy").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":wire_advanced_alloy"); + wire_advanced_alloy = new Item().setUnlocalizedName("wire_advanced_alloy").setCreativeTab(null).setTextureName(RefStrings.MODID + ":wire_advanced_alloy"); coil_advanced_alloy = new Item().setUnlocalizedName("coil_advanced_alloy").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":coil_advanced_alloy"); coil_advanced_torus = new Item().setUnlocalizedName("coil_advanced_torus").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":coil_advanced_torus"); ingot_magnetized_tungsten = new Item().setUnlocalizedName("ingot_magnetized_tungsten").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":ingot_magnetized_tungsten"); @@ -2797,8 +2797,8 @@ public class ModItems { nugget_actinium = new Item().setUnlocalizedName("nugget_actinium").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":nugget_actinium"); plate_titanium = new Item().setUnlocalizedName("plate_titanium").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":plate_titanium"); plate_aluminium = new Item().setUnlocalizedName("plate_aluminium").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":plate_aluminium"); - wire_red_copper = new Item().setUnlocalizedName("wire_red_copper").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":wire_red_copper"); - wire_tungsten = new ItemCustomLore().setUnlocalizedName("wire_tungsten").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":wire_tungsten"); + wire_red_copper = new Item().setUnlocalizedName("wire_red_copper").setCreativeTab(null).setTextureName(RefStrings.MODID + ":wire_red_copper"); + wire_tungsten = new ItemCustomLore().setUnlocalizedName("wire_tungsten").setCreativeTab(null).setTextureName(RefStrings.MODID + ":wire_tungsten"); neutron_reflector = new Item().setUnlocalizedName("neutron_reflector").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":neutron_reflector"); nugget_lead = new Item().setUnlocalizedName("nugget_lead").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":nugget_lead"); ingot_bismuth = new ItemCustomLore().setUnlocalizedName("ingot_bismuth").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":ingot_bismuth"); @@ -2993,24 +2993,18 @@ public class ModItems { motor_desh = new Item().setUnlocalizedName("motor_desh").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":motor_desh"); motor_bismuth = new Item().setUnlocalizedName("motor_bismuth").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":motor_bismuth"); centrifuge_element = new Item().setUnlocalizedName("centrifuge_element").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":centrifuge_element"); - //centrifuge_tower = new Item().setUnlocalizedName("centrifuge_tower").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":centrifuge_tower"); reactor_core = new Item().setUnlocalizedName("reactor_core").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":reactor_core"); rtg_unit = new Item().setUnlocalizedName("rtg_unit").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":rtg_unit"); - //thermo_unit_empty = new Item().setUnlocalizedName("thermo_unit_empty").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":thermo_unit_empty"); - //thermo_unit_endo= new Item().setUnlocalizedName("thermo_unit_endo").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":thermo_unit_endo"); - //thermo_unit_exo = new Item().setUnlocalizedName("thermo_unit_exo").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":thermo_unit_exo"); levitation_unit = new Item().setUnlocalizedName("levitation_unit").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":levitation_unit"); - wire_aluminium = new Item().setUnlocalizedName("wire_aluminium").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":wire_aluminium"); - wire_copper = new Item().setUnlocalizedName("wire_copper").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":wire_copper"); - wire_gold = new Item().setUnlocalizedName("wire_gold").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":wire_gold"); - wire_schrabidium = new ItemCustomLore().setRarity(EnumRarity.rare).setUnlocalizedName("wire_schrabidium").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":wire_schrabidium"); + wire_aluminium = new Item().setUnlocalizedName("wire_aluminium").setCreativeTab(null).setTextureName(RefStrings.MODID + ":wire_aluminium"); + wire_copper = new Item().setUnlocalizedName("wire_copper").setCreativeTab(null).setTextureName(RefStrings.MODID + ":wire_copper"); + wire_gold = new Item().setUnlocalizedName("wire_gold").setCreativeTab(null).setTextureName(RefStrings.MODID + ":wire_gold"); + wire_schrabidium = new ItemCustomLore().setRarity(EnumRarity.rare).setUnlocalizedName("wire_schrabidium").setCreativeTab(null).setTextureName(RefStrings.MODID + ":wire_schrabidium"); wire_magnetized_tungsten = new Item().setUnlocalizedName("wire_magnetized_tungsten").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":wire_magnetized_tungsten"); coil_magnetized_tungsten = new Item().setUnlocalizedName("coil_magnetized_tungsten").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":coil_magnetized_tungsten"); coil_gold = new Item().setUnlocalizedName("coil_gold").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":coil_gold"); coil_gold_torus = new Item().setUnlocalizedName("coil_gold_torus").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":coil_gold_torus"); - //magnet_dee = new Item().setUnlocalizedName("magnet_dee").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":magnet_dee"); magnet_circular = new Item().setUnlocalizedName("magnet_circular").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":magnet_circular"); - //cyclotron_tower = new Item().setUnlocalizedName("cyclotron_tower").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":cyclotron_tower"); pellet_coal = new Item().setUnlocalizedName("pellet_coal").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":pellet_coal"); component_limiter = new Item().setUnlocalizedName("component_limiter").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":component_limiter"); component_emitter = new Item().setUnlocalizedName("component_emitter").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":component_emitter"); diff --git a/src/main/java/com/hbm/items/machine/ItemCircuit.java b/src/main/java/com/hbm/items/machine/ItemCircuit.java index 368af5647..845ff4b81 100644 --- a/src/main/java/com/hbm/items/machine/ItemCircuit.java +++ b/src/main/java/com/hbm/items/machine/ItemCircuit.java @@ -4,7 +4,11 @@ import java.util.List; import com.hbm.items.ItemEnumMulti; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.creativetab.CreativeTabs; import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.Item; import net.minecraft.item.ItemStack; public class ItemCircuit extends ItemEnumMulti { @@ -13,6 +17,26 @@ public class ItemCircuit extends ItemEnumMulti { super(EnumCircuitType.class, true, true); } + @Override + @SideOnly(Side.CLIENT) + public void getSubItems(Item item, CreativeTabs tab, List list) { + list.add(new ItemStack(item, 1, EnumCircuitType.VACUUM_TUBE.ordinal())); + list.add(new ItemStack(item, 1, EnumCircuitType.CAPACITOR.ordinal())); + list.add(new ItemStack(item, 1, EnumCircuitType.CAPACITOR_TANTALIUM.ordinal())); + list.add(new ItemStack(item, 1, EnumCircuitType.PCB.ordinal())); + list.add(new ItemStack(item, 1, EnumCircuitType.SILICON.ordinal())); + list.add(new ItemStack(item, 1, EnumCircuitType.CHIP.ordinal())); + list.add(new ItemStack(item, 1, EnumCircuitType.CHIP_BISMOID.ordinal())); + list.add(new ItemStack(item, 1, EnumCircuitType.ANALOG.ordinal())); + list.add(new ItemStack(item, 1, EnumCircuitType.BASIC.ordinal())); + list.add(new ItemStack(item, 1, EnumCircuitType.ADVANCED.ordinal())); + list.add(new ItemStack(item, 1, EnumCircuitType.CAPACITOR_BOARD.ordinal())); + list.add(new ItemStack(item, 1, EnumCircuitType.BISMOID.ordinal())); + list.add(new ItemStack(item, 1, EnumCircuitType.CONTROLLER_CHASSIS.ordinal())); + list.add(new ItemStack(item, 1, EnumCircuitType.CONTROLLER.ordinal())); + list.add(new ItemStack(item, 1, EnumCircuitType.CONTROLLER_ADVANCED.ordinal())); + } + public static enum EnumCircuitType { VACUUM_TUBE, CAPACITOR, @@ -26,6 +50,9 @@ public class ItemCircuit extends ItemEnumMulti { ADVANCED, CAPACITOR_BOARD, BISMOID, + CONTROLLER_CHASSIS, + CONTROLLER, + CONTROLLER_ADVANCED, } @Override diff --git a/src/main/java/com/hbm/main/CraftingManager.java b/src/main/java/com/hbm/main/CraftingManager.java index 7758ffcb8..991f7cdc0 100644 --- a/src/main/java/com/hbm/main/CraftingManager.java +++ b/src/main/java/com/hbm/main/CraftingManager.java @@ -122,7 +122,8 @@ public class CraftingManager { addRecipeAuto(DictFrame.fromOne(ModItems.circuit, EnumCircuitType.CHIP), new Object[] { "I", "S", "W", 'I', ModItems.plate_polymer, 'S', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.SILICON), 'W', GOLD.wireFine() }); addRecipeAuto(DictFrame.fromOne(ModItems.circuit, EnumCircuitType.CHIP_BISMOID), new Object[] { "III", "SNS", "WWW", 'I', ModItems.plate_polymer, 'S', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.SILICON), 'N', ANY_BISMOID.nugget(), 'W', CU.wireFine() }); addRecipeAuto(DictFrame.fromOne(ModItems.circuit, EnumCircuitType.CHIP_BISMOID), new Object[] { "III", "SNS", "WWW", 'I', ModItems.plate_polymer, 'S', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.SILICON), 'N', ANY_BISMOID.nugget(), 'W', GOLD.wireFine() }); - + addRecipeAuto(DictFrame.fromOne(ModItems.circuit, EnumCircuitType.CONTROLLER_CHASSIS), new Object[] { "PPP", "CBB", "PPP", 'P', ANY_PLASTIC.ingot(), 'C', ModItems.crt_display, 'B', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.PCB) }); + addRecipeAuto(new ItemStack(ModItems.cell_empty, 6), new Object[] { " S ", "G G", " S ", 'S', STEEL.plate(), 'G', KEY_ANYPANE }); addRecipeAuto(new ItemStack(ModItems.cell_deuterium, 8), new Object[] { "DDD", "DTD", "DDD", 'D', ModItems.cell_empty, 'T', ModItems.mike_deut }); addRecipeAuto(new ItemStack(ModItems.particle_empty, 2), new Object[] { "STS", "G G", "STS", 'S', STEEL.plate(), 'T', W.ingot(), 'G', KEY_ANYPANE }); diff --git a/src/main/java/com/hbm/main/ModEventHandler.java b/src/main/java/com/hbm/main/ModEventHandler.java index 72e7d7739..1ceb0ada5 100644 --- a/src/main/java/com/hbm/main/ModEventHandler.java +++ b/src/main/java/com/hbm/main/ModEventHandler.java @@ -878,9 +878,8 @@ public class ModEventHandler { player.fallDistance = 0; } } else if(props.enableBackpack && !player.isSneaking()) { - - if(player.motionY < -0.2) - player.motionY += 0.075D; + if(player.motionY < -0.2) player.motionY += 0.075D; + if(player.fallDistance > 0) player.fallDistance = 0; } } diff --git a/src/main/resources/assets/hbm/textures/items/circuit.controller.png b/src/main/resources/assets/hbm/textures/items/circuit.controller.png new file mode 100644 index 0000000000000000000000000000000000000000..72c131d9665bd214bea2e15b1008216e29ef4eb9 GIT binary patch literal 322 zcmV-I0lof-P)ka&vhomhAdBwRWo zv9`>#$v^~6glL)Us98`L(l}V@BlJqv{n2;qPuFk^>woi+#ATl6hG4fV=yvTE_`TWS zUHDc<557Ljq9|}2M~k-GANu{%7W|$hM5`EpP7MRtcJtDDoiZ4lwcxkql4up2S(auR1~{pUiRUwZ_L+Fq0T5!w=ix-JhX#Dvnt<807*qoM6N<$g0%*YH2?qr literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/items/circuit.controller_advanced.png b/src/main/resources/assets/hbm/textures/items/circuit.controller_advanced.png new file mode 100644 index 0000000000000000000000000000000000000000..d939b6b672c42494e30c16aaa30203cfd0e52b65 GIT binary patch literal 369 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 X#i7M1y7`3jN&rn&J(UV&tC0T(mpQ+| literal 9214 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 R*bjOD>dHDwbqdxW{ttebP`3a8 diff --git a/src/main/resources/assets/hbm/textures/items/stamp_desh_circuit.png b/src/main/resources/assets/hbm/textures/items/stamp_desh_circuit.png index 3e4d62f3f4590cdfaaf737656a24ccf9ac2ead9d..8cbf55186ac6dee273944618be44d52af701eaac 100644 GIT binary patch delta 283 zcmV+$0p$Lb0>%Q6G=Kd`L_t(Ijir-4j>0eyg+CB&DzcW+ra^9^^pQL6K(nXV6YMGW z4!J`*L_eZQM;pmNl>;mV*lUxYMdCGMTb_Au-q?#D_~i|(06w(_AW2jD%jMf%(Au+|uUC@o)_*G~w1%>rSKw4+O3_&h zbxmh2nNobL*MqyuFv-cwlp^2l1`z-euWHbOligX%>A@UE=g*`Ez$kMVpE2;DZp@x4H_fyH;LarCne)viN}6n;GUjj2BGK#f&Wrr-flEln&eL?hfQLx* hl&7%xdhV002ovPDHLkV1i>2k^%q# delta 233 zcmV zZp6J|d7G;V!o&e|KoJm16XG{DdFlWD_wv8s0z9#TEdU&o1OUKxJ2X}0{XP@50%Hmy zXV*vwgq(jJOpz)z>i|-sF$MszS)S6(k3d0$!+R%_^t%7Y!D1?bYo0spGpzw@Jsn61 zrZpaQ?eAbrV+`(P=_gPSAyuj?+_G#CD5mvb`yXb5w2$L1Z7w>2NQidsUXe|Fm=y>) j2drH@pfSN|gTe~DWM4fq$^nU diff --git a/src/main/resources/assets/hbm/textures/items/stamp_iron_blank.png b/src/main/resources/assets/hbm/textures/items/stamp_iron_blank.png new file mode 100644 index 0000000000000000000000000000000000000000..d0276592d29f584b0f7758ac2d0563447c870abc GIT binary patch literal 719 zcmV;=0x5KNcJWg zD?1wz#X?bM5RHLh80PPA<`xESbBnv0U9G*>UTbf0c6OE@A0KmZalz;3C;y9Lu}B=p zn1_dloSdAnv$I39*(3}@;y5M<0<_j>t%>89a=Fah+#H2M0VyT*dY$w0bL8#qE#KeY zL{UT#1o*zsU@#z#W8yf*vMkou*V)|MWMyTALZLtuMO$-TJ$D}HyFbsnr z2oOSGnkE|?8*FWD@%Z@2!@~o2&z|`r_&7iKC+~yQm;g}}VVWkDN`*?LLZi{3R4VcD@xj5t0hgDTxUNeW zh5)2#ieVVc%*k|g2h=Z9*w%FWFUqtS>YNv3N`DM^xq+1c5@ zCdP4$)*9QkNs@$Gtv2;$LYzQr4S;RizY4M}o8~$g46tpRR;$HuIQ-`ySe8YWWz5gd zWA=JI(lkX%iIkFwCt7PP%R(tdp6Anq78Vv*TwFv5L9^NXjd3Dta!g98>7)r6AkTBs zG-ZE(pCAZmx7&!ly}g|OfDmHZ#I|k92x>7eU6nx-LyKnQ`Z>nMuC(9jSA0|UsiOdt^8@bD1V-Q69@WRhO5 zho)(0n#T9{H%CWDIF5tM<-+Ura&T~fWm$AO9op?SH#aw!ritt2<%N2^&TlUi3P_T~ z_VzZ7Mgv7r*nimAV0U+ycDv2y<|dz?pL9AMG)=>0+cuVE@%8mZKA&fQe;?bn5kk;t zG)SdVc)ecs_V)U}w^}WP5ZJbjEJ+fEVPIJnj^i*oI!ZR1<>~2(+uK`8r4s3Mn#;>e zo}Zsl6a`6=FirF4MOl`yEQ@S5%g)XYtyYV8JWeK)A%7SQ5(@saE6YXX4)`Fx&Qt;Xr;DZyZnTrS7f))tDQ{3UQ4hmVgB zgb=vhZr0Y;7#|-e9*xw$!}rlxp%dm|7CV4CI+0YIVA15a#sH*xu z0*}Xo>(>$?1gop7OiWBLIXTJw{XL6|ivXyqN_{jM1)x|g;&!_+O_Sl_VWfqH1t%7Z zAz2V0000%5g#N*z25KMxmAh`%&^bdYpt{Pnj?$FVwabf`G0(VJRbl0@lmVQpP!$i z-|vq`qh7DKTCE-qhvV_MUax=uduSVtM!jCIQmF(%a5|l-R7$MXYFAfRrBdnr{T@zP=6ygJ3ZD^z?*VXmkar`~9AUl!n=CMqY|#G#dGQKDzaKoiCdL zPS6lVQ9|PlG&t&)mzPK+^7ZvajWJ17;N>h9g+k%x=6}X!vn>{j$z%eDxXb18#l^+r zw+@5AA6 zv)SZ82t*IeU@+)(I+3Btr&6h4fPw(f%VaWSO;CwMf7{joYPN&b# z&bST^hgO3YCMEaOa71ndIpE>+^z_?pL-_gmx!>=CJKxJ rB@YgVEaSiYaHSFEi($~*F6{gP_cvju{w@A#00000NkvXXu0mjfRdFow diff --git a/src/main/resources/assets/hbm/textures/items/stamp_obsidian_circuit.png b/src/main/resources/assets/hbm/textures/items/stamp_obsidian_circuit.png index 861d3ace9978895d731d99b5b10433bd02f753d9..a3a25fc41d197ed445a68a2ff80b484750115f75 100644 GIT binary patch delta 258 zcmV+d0sa1#0MO^Hs&%NILz0D#-|@t67ex*Grh=s|gl^3!-d zaj~2rWGtx~p)4)X$~p*&r{5Esycf*uqoH{ZmCS<6=dE_=uV+IKznA;qrA#%5`O z@?6cT9u#!1ycDwp?&N8mUThE$n(Wq1fb5#Z1gikz0w_)v6Jl)7Xj`D%Ef3385aRthN+??$#(tDKY9X<#tohuIsgCw07*qo IM6N<$f{9sl2mk;8 delta 234 zcmVFlr-3c?E;JeN73Bzo5Ma5&T9pq-8Btg)*{4`V+HI2yZp1OPBI*sj+I z!q!DjFvg%POSdz|r*f~Lwep0_?8L_GM6dTVA}GRE7jS~@UBOxffY4G8A;cw<7jSH3 k8MlUaP6kN%`xE8n1LX&3Hhdu(ApigX07*qoM6N<$f}u8L9RL6T diff --git a/src/main/resources/assets/hbm/textures/items/stamp_obsidian_flat.png b/src/main/resources/assets/hbm/textures/items/stamp_obsidian_flat.png index bd35e1d27965810dcb01bbe0bf9239fcbc770e3a..45ff4b3e311abe8a05fa6b5cfa4607d84056664d 100644 GIT binary patch delta 136 zcmcb^xP@_oNqx4bi(`mIZ}JqOi@(l0FeW4>BqS7=Ybbhu{-pd2?>cD}9DME>wJ{{rHYM2vF kP8K=n0F5~{s{jB1 delta 176 zcmV;h08jt40o(zQG=GyxL_t(Ijir*o3c@fD1xE<1?LjL3|33Z8MFE=*aN+|f(Yme z_CT}d3(kOUgCk&95CL7m9@tvjth-O}K)1oK$vtopm{lM#rYQ*#i4@v404SCznh&=~ e0IKnyx6T_TzDKIHG+k%_0000gTe~DWM4frbj>w delta 195 zcmV;!06hQP0q+5jG=HW^L_t(Ijir%Y3&JoAMUN1O+k;H}|Nl`Kl(tyngG{z|{Sfn1 znwxu1)5|nHj6X^MZr6KL6mh5b-iMC?fO|cMQ)gMerjj>C2vn8eSIpwkphvP#-l{NY zk*F#$3>f6Kr7BwVWG~3^YTNG;d>5C8;Q34SdE+gqCk-uM5zR&P@LP1|MFWm5nE002ovPDHLkV1gXwSVjN< diff --git a/src/main/resources/assets/hbm/textures/items/stamp_obsidian_wire.png b/src/main/resources/assets/hbm/textures/items/stamp_obsidian_wire.png index 144bb8fb9e0e83985c4df7039656be4a2b737130..2c9a6fea3f2237e6a1e8127bac4caecdc6acfb20 100644 GIT binary patch delta 146 zcmaFQxQ}syNqwoOi(`mIZ}JqOi@(l0FeW4>BqS7=Ybbhu{-pd&z1&4!81&C?gX;bCyj*5+NuQ0L9S&A`Cm>FVdQ&MBb@0QfFB!2kdN delta 195 zcmV;!06hP`0q+5jG=HW^L_t(Ijm4773d0}}MNeVqG+C6C{{KG)0%AgBx+vNhG!e4s zUFzJ|=&kGC#svt#^YJwaZ?l1ji@sng*Aq^S3D#0vw|EY6<+x5|T#(2uZc-w~%3PzUywjhnrB(K})5+4B zclTBq^UZ!00TKG&x|2*sN-D}&EvTwWJFk|?A tR$I?C=D^B}*I&-N$$jDQ2j}nW_^*FUe)Q5aPX*{#22WQ%mvv4FO#lh;cWVFu diff --git a/src/main/resources/assets/hbm/textures/items/stamp_schrabidium_flat.png b/src/main/resources/assets/hbm/textures/items/stamp_schrabidium_flat.png deleted file mode 100644 index 7a6e25e7644186fe7691e8856962d021893c964b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 231 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#VfwaZ?l1bYrKm80XY*9pCe&s1f;etIKi+^;z3Gcr=6xwqlex%#_+i{b?^77+Q0a1 zZhnf!B zENj|^DGzvNh(u cmj7Znn&h$J_J^~|K$kLjy85}Sb4q9e0MXb}Hvj+t diff --git a/src/main/resources/assets/hbm/textures/items/stamp_schrabidium_plate.png b/src/main/resources/assets/hbm/textures/items/stamp_schrabidium_plate.png deleted file mode 100644 index 847e870ea8895fd8c3b64ce0c41717778c3daf16..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 252 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#Vf|uZ?l0w>wXWP19B!J^E%efP&Dyz@SeyRliD!3RrS{rhlm8e+ktVF_U~)c?O*)n zuV2BGv0Kmb$(-QV?-OtEFvNY1nR81@*k|>QK&J}~{(>L= diff --git a/src/main/resources/assets/hbm/textures/items/stamp_schrabidium_wire.png b/src/main/resources/assets/hbm/textures/items/stamp_schrabidium_wire.png deleted file mode 100644 index e2447983c56332a26973d2883b2f426beff9dc2a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 261 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#Vfwm?_mXzmi-<+4>*H%EG<0fa_^M!k>2eK5*SwTH0UVr^ylJEl2Pz0QoXZ#KD&6^ z!-Mhy46*maJwMx|pMU>&2PcEXTL0Z;Uao2bJ5dc+-eyaeMnBDz z&Z{Q#S$nR{P|`iRZ&gG1mx91oate&qJ_Tt8?Z5c6?%rqFclY2fos|p+w&n^y+UO)P zN#N{}c@eK<*op-zfZGpg$NqUHx3v IIVCg!023Eu7ytkO diff --git a/src/main/resources/assets/hbm/textures/items/stamp_steel_circuit.png b/src/main/resources/assets/hbm/textures/items/stamp_steel_circuit.png index d95fe00dfa6cd988cdca1f883e289d4674127aad..86dbad620267706d4e1e7eb47214449e798bd9df 100644 GIT binary patch delta 267 zcmV+m0rdXt0k#5=G=J?$L_t(Ijir+@j>I4gMgK(8QKYA|T!W5# zL~_XusAr26QOLlKwByDy_&2R)(p z{)7?{VvJqTbQgQ?!OT!q0_*{hG=HN>L_t(IjkS}p4Z|Q51)rmI6!gDjlHV}_3or|FAofC{WCQA? zh)iT~Y;2Tk(L1hyg@|65;0XZ6m|Noz!bboADW!T4V>}!RAwWdmf<3g>8|jKt3d{`e zJpkZwvAUxZ#2ANf|4+e`;A;M1fwdOaTI8I^3tGJQD5V?<>Nz`T^PO{b{40MWXjxy{ u8C4*J05gM`hlZVih;|dtSfrFw-}wz)|31fi>3^vJ00006rp`3V33lHKLDZC$Raa|feFcR!#af>O#5bUin_ zJ5&`U5fLymkc6tj-C<^PKnscpkVGlv$Va-iO}lLofxEv%l4c;;xp;BVPCm!;#|{Cb z$!+`ysI^WVq?G0WRYfTUBJ$ROh@jRwcK`q>rOwHokJK%asvc9?&D_uSCr$xvfthum n_LYMX=#y>{ft>SK#UnicCLoD7fSFNB=^JQ54bN*K zgaB)8S3J)%QcALy1S8Wl&NL#v>o<20V}!M~Dp(e>L36B002ovPDHLkV1h1GXTSge diff --git a/src/main/resources/assets/hbm/textures/items/stamp_stone_flat.png b/src/main/resources/assets/hbm/textures/items/stamp_stone_flat.png index 72d2f52feac8241f44551558704b28030cfe5d05..ea71da78b98644248d164e68669485b51f8cb3bb 100644 GIT binary patch delta 132 zcmV-~0DJ$`0kHv)G<|4EL_t(IjqQ@V4S+Bd#0;W*w?-DoHre*AkpZ$m(nEm)6iED9 z+}pb1hLqCG2PS|R<15+S*8o7y`L-wtGusz*LI~7aFJ(!TQUDn54?gD)`~f&Tu|G`G myMUQ(_k0v+t>NyE#m)k*WEP_!zdl0%0000(X& delta 168 zcmV;Z09XI90n`DIG=GapL_t(IjkS_74#OY}MPDR*1Qrg){YNBr%YvaDqC{%r5R$5Y z0-N{!K`c4v7e6Qfq?Cq-dhc$%*18&On_0yechm6Qm`NZas48amX>bL4at&rc*We2D z`r#?)Cb$C*4gU59t+m5?cm)r16P!&RfxCg30qZXmk(ofp1R(&b`Y1&JD5czc W%1jx|OtkE@{x1i@B=RZNGaV4o7pY^fKrM(ND?A)E|`Q6Tmn@^t#uUuKx@s_JXr() z5MxB|eF>91nkP@!<}dsOAHFcJP4b>VM3z^%1SFxV?%*Q0+8%re#uzZO%fZPT%-0}6 TwuhF~-ZzMQ@hKSdVNp*hK&U002ovPDHLkV1kXBN1Xrw diff --git a/src/main/resources/assets/hbm/textures/items/stamp_stone_wire.png b/src/main/resources/assets/hbm/textures/items/stamp_stone_wire.png index 1a8f4455dfbe87ef5df57196176f3040ad3b794e..a4dd23aef33d16cb796b3dddf8e060ab43ec109e 100644 GIT binary patch delta 142 zcmV;90CE4{0lEQ@G=FhPL_t(IjqQ-J4FWL`1P4TT+lCu(H}3Wda04#D4V-fbkpGjH z@IM)1@>z}cR!VvD1rLCn^Cj8c-va=xwPjHfX0{hhQc6U`M_CfRcL46|!N+U`b6L{0 wfry~ix+MKS_}vf8Y|A<|Fvh^$Pm7ZmPERjI+ATAg00000Ne4wvM6N<$f+})7X#fBK delta 179 zcmV;k08Ib70p9_TG=G*!L_t(IjlEF24g(jNuq_k!!t3lcnnks?ZJAu(K6G+X<}6nW$--z8x9g46 zxtZG+s|2VzH}gqAn$5HZ{oz0l5P?sY&T$=2Yv4K_<55VO&GZHU{oz0|smH324kZGg z@hAjBma7FKs4wR0&h-(sfaZqkslv|uQ3Dm|RP=7HF3t<807*qo IM6N<$g54pM;s5{u delta 243 zcmV&yOp|v)MMFd2Id7f_znzZ%8)9mO9-g^M& t&(m60nWBL2#$0Q9=WM{bu0JBqVTjb|`rl$HodDVPIopYumj1yujLt zv%6azgTlBTGD#SinI``D@lrJI?4Oz>o~%`~c$S}+O9ARjNKm?W@W#OvjEmU}3>22S z3w7X0#8>zmvv4FO#oKC BH|zia delta 180 zcmV;l089VD0pJ0UG=G;#L_t(Ijir*o4Fe$z1UC}x_)A5+=?p$}K?$w_AzVT7IOU|| z956Y*5HPcg#3RP|#Eo$P5JH$<>b`?M9j*S&Q!obGH*0y>1d4aVP zXLq+c28D4wWReI7oUVL|Avn3Z?Q%MQlGFhpD0u!%c~MRqBM-9#5cK%^O4!v^wJIGu zuYPR7vQ?bhCD~?l6dB7IWHC&Oca4+m7w;eY29~igFuajXn*3{SD+3UCy85}Sb4q9e0L>~&bN~PV delta 198 zcmV;%06G8Y0rCNmG=Hf{L_t(Ijir#W4Z|Q1MSmpLxt58j*$f&cxRw!^0U?+mDIzR` zG2rAX1pnTD_DgI1#vda9Kq)m1rId#E*4i%s0KE6xty0PZD*A^V10sSk2Bnl1urfI} z*SP>@CPV~gUIY5M`-umj2KwM^aca;n#u$g^Tfkj-+hAug=RZ6KNGU-?OF(0AZcHhG znYSzeK$KE`YHkbwAcTMr!X;3@bqa9KJ#Mb^0sFpH<#!Ap{Qv*}07*qoM6N<$f}99Z A?*IS* diff --git a/src/main/resources/assets/hbm/textures/items/stamp_titanium_wire.png b/src/main/resources/assets/hbm/textures/items/stamp_titanium_wire.png index ffdae003c22164d67bd667d8cd2f408afd0d1d2b..9fa0bd1dc1341cc0116fc2752d2607db8cfbd252 100644 GIT binary patch delta 158 zcmeyuc#3g?NqwWIi(`mIZ}J-5)Bn#qFeW4>BqVTjb|`rl$HodDVPIopYumj1yujLt zv%6azgTlBTGD#SinI``D@lrJI?4Oz>o~%`~c$S}+O9ARjNKm?W@CM@@);lpeU~wLv zSx+QCe7!B-_Vl!v@X|~Zp0<1mk5gU;=elwweEI%ynTEJEGec68PS8^Cw#y7a;OXk; Jvd$@?2>^0nKPD4{PlcH=qE(7<0K)N}0ZU@81Fd5M$hSW#%rb&VwuGoHGD`h~S(#=U#Af?p5X4kz7gb;pq7Q6sAX<#W4U0R|50000 Date: Mon, 3 Jun 2024 21:23:36 +0200 Subject: [PATCH 17/69] yeah. sure. why not. --- changelog | 12 ++++++- .../java/com/hbm/crafting/WeaponRecipes.java | 2 +- .../inventory/recipes/AssemblerRecipes.java | 33 +++++++++---------- .../inventory/recipes/ShredderRecipes.java | 2 +- .../inventory/recipes/SolderingRecipes.java | 4 +-- .../inventory/recipes/anvil/AnvilRecipes.java | 7 ++-- .../java/com/hbm/main/CraftingManager.java | 6 ++-- src/main/resources/assets/hbm/lang/de_DE.lang | 3 ++ src/main/resources/assets/hbm/lang/en_US.lang | 3 ++ 9 files changed, 46 insertions(+), 26 deletions(-) diff --git a/changelog b/changelog index a17ed658d..face48fe8 100644 --- a/changelog +++ b/changelog @@ -1,12 +1,22 @@ ## Added * Asphalt stairs * Stairs, but fast +* More circuits + * Control units and advanced control units are exclusively used for nukes + * CUs and ACUs are quite a bit more expensive than standard circuits and also make use of tantalum capacitors + * Nukes are no longer for people who weasel their way through progression and then get 8 uranium, 2 steel and some duct tape, instead every atomic bomb requires a large electronics production capacity + * WMDs are expensive, who woulda thunk ## Changed * Wires now use recipe autogen for anvils, meaning that all fine wires are now obtainable via tier 4 anvil +* Changed most nuke recipes + * Most assembler recipes have been de-cluttered, no longer using random extra plates or wires + * Nukes now exclusively use control units or ACUs instead of circuits +* CRTs are now crafted in the crafting table instead of via assembler, making use of vacuum tubes ## Fixed * Fixed dupe regarding conveyor grabbers * Fixed soldering stations not saving progress or their fluid tanks * Fixed a bug where missile debris would always spawn with a stack size of 1 and a meta of 0 -* Fixed FM radios disassembling into incorrect parts \ No newline at end of file +* Fixed FM radios disassembling into incorrect parts +* Fixed 256k tanks yielding too much steel when shredded \ No newline at end of file diff --git a/src/main/java/com/hbm/crafting/WeaponRecipes.java b/src/main/java/com/hbm/crafting/WeaponRecipes.java index d221d016f..8f80a819a 100644 --- a/src/main/java/com/hbm/crafting/WeaponRecipes.java +++ b/src/main/java/com/hbm/crafting/WeaponRecipes.java @@ -285,7 +285,7 @@ public class WeaponRecipes { CraftingManager.addRecipeAuto(new ItemStack(ModItems.ammo_arty, 1, 7), new Object[] { "DSD", "SCS", "DSD", 'D', P_WHITE.ingot(), 'S', new ItemStack(ModItems.ammo_arty, 1, 5), 'C', ModBlocks.det_cord }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.ammo_arty, 1, 3), new Object[] { " P ", "NSN", " P ", 'P', PU239.nugget(), 'N', OreDictManager.getReflector(), 'S', new ItemStack(ModItems.ammo_arty, 1, 0) }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.ammo_arty, 1, 6), new Object[] { "DSD", "SCS", "DSD", 'D', OreDictManager.getReflector(), 'S', new ItemStack(ModItems.ammo_arty, 1, 3), 'C', ModBlocks.det_cord }); - CraftingManager.addShapelessAuto(new ItemStack(ModItems.ammo_arty, 1, 4), new Object[] { new ItemStack(ModItems.ammo_arty, 1, 2), ModItems.boy_bullet, ModItems.boy_target, ModItems.boy_shielding, DictFrame.fromOne(ModItems.circuit, EnumCircuitType.ADVANCED), ModItems.ducttape }); + CraftingManager.addShapelessAuto(new ItemStack(ModItems.ammo_arty, 1, 4), new Object[] { new ItemStack(ModItems.ammo_arty, 1, 2), ModItems.boy_bullet, ModItems.boy_target, ModItems.boy_shielding, DictFrame.fromOne(ModItems.circuit, EnumCircuitType.CONTROLLER), ModItems.ducttape }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.ammo_arty, 1, 8), new Object[] { " I ", " S ", "CCC", 'C', ModItems.cordite, 'I', ModItems.sphere_steel, 'S', CU.shell() }); //DGK Belts diff --git a/src/main/java/com/hbm/inventory/recipes/AssemblerRecipes.java b/src/main/java/com/hbm/inventory/recipes/AssemblerRecipes.java index 34571a4c7..0a5a176b0 100644 --- a/src/main/java/com/hbm/inventory/recipes/AssemblerRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/AssemblerRecipes.java @@ -93,8 +93,8 @@ public class AssemblerRecipes extends SerializableRecipe { makeRecipe(new ComparableStack(ModItems.warhead_buster_small, 1), new AStack[] {new ComparableStack(ModItems.warhead_generic_small, 1), new ComparableStack(ModBlocks.det_cord, 8), },100); makeRecipe(new ComparableStack(ModItems.warhead_buster_medium, 1), new AStack[] {new ComparableStack(ModItems.warhead_generic_medium, 1), new ComparableStack(ModBlocks.det_cord, 4), new ComparableStack(ModBlocks.det_charge, 4), },150); makeRecipe(new ComparableStack(ModItems.warhead_buster_large, 1), new AStack[] {new ComparableStack(ModItems.warhead_generic_large, 1), new ComparableStack(ModBlocks.det_charge, 8), },200); - makeRecipe(new ComparableStack(ModItems.warhead_nuclear, 1), new AStack[] {new ComparableStack(ModItems.boy_shielding, 1), new ComparableStack(ModItems.boy_target, 1), new ComparableStack(ModItems.boy_bullet, 1), new ComparableStack(ModItems.boy_propellant, 1), new OreDictStack(MINGRADE.wireFine(), 6), new OreDictStack(TI.plate(), 24), new ComparableStack(ModItems.circuit, 3, EnumCircuitType.ADVANCED) },300); - makeRecipe(new ComparableStack(ModItems.warhead_mirv, 1), new AStack[] {new OreDictStack(TI.plate(), 24), new OreDictStack(STEEL.plate(), 12), new OreDictStack(PU239.ingot(), 1), new ComparableStack(ModItems.ball_tatb, 8), new OreDictStack(BE.ingot(), 4), new OreDictStack(LI.ingot(), 4), new ComparableStack(ModItems.cell_deuterium, 6), new ComparableStack(ModItems.circuit, 8, EnumCircuitType.ADVANCED) },500); + makeRecipe(new ComparableStack(ModItems.warhead_nuclear, 1), new AStack[] {new ComparableStack(ModItems.boy_shielding, 1), new ComparableStack(ModItems.boy_target, 1), new ComparableStack(ModItems.boy_bullet, 1), new ComparableStack(ModItems.boy_propellant, 1), new OreDictStack(TI.plateCast(), 12), new ComparableStack(ModItems.circuit, 1, EnumCircuitType.CONTROLLER) },300); + makeRecipe(new ComparableStack(ModItems.warhead_mirv, 1), new AStack[] {new OreDictStack(TI.plateCast(), 12), new OreDictStack(STEEL.plate(), 12), new ComparableStack(ModItems.man_core, 1), new ComparableStack(ModItems.ball_tatb, 8), new OreDictStack(LI.ingot(), 8), new OreDictStack(Fluids.DEUTERIUM.getDict(1_000), 8), new ComparableStack(ModItems.circuit, 4, EnumCircuitType.CONTROLLER_ADVANCED) },500); makeRecipe(new ComparableStack(ModItems.warhead_volcano, 1), new AStack[] {new OreDictStack(TI.plate(), 24), new OreDictStack(STEEL.plate(), 16), new ComparableStack(ModBlocks.det_nuke, 3), new OreDictStack(U238.block(), 24), new ComparableStack(ModItems.circuit, 5, EnumCircuitType.CAPACITOR_BOARD.ordinal()) }, 600); makeRecipe(new ComparableStack(ModItems.missile_stealth, 1), new AStack[] { new OreDictStack(TI.plate(), 20), new OreDictStack(AL.plate(), 20), new OreDictStack(CU.plate(), 10), new OreDictStack(KEY_BLACK, 16), new OreDictStack(ANY_HARDPLASTIC.ingot(), 16), new OreDictStack(ANY_HIGHEXPLOSIVE.ingot(), 4), new ComparableStack(ModItems.circuit, 4, EnumCircuitType.ADVANCED.ordinal()), new OreDictStack(STEEL.bolt(), 32) },1200); makeRecipe(new ComparableStack(ModItems.thruster_nuclear, 1), new AStack[] {new OreDictStack(DURA.ingot(), 32), new OreDictStack(B.ingot(), 8), new OreDictStack(PB.plate(), 16), new ComparableStack(ModItems.pipes_steel) },600); @@ -113,7 +113,6 @@ public class AssemblerRecipes extends SerializableRecipe { makeRecipe(new ComparableStack(ModItems.chopper_tail, 1), new AStack[] {new OreDictStack(CMB.plate(), 8), new OreDictStack(CMB.ingot(), 5), new OreDictStack(MAGTUNG.wireFine(), 4), new ComparableStack(ModItems.motor, 1), new ComparableStack(ModItems.chopper_blades, 2), },200); makeRecipe(new ComparableStack(ModItems.chopper_wing, 1), new AStack[] {new OreDictStack(CMB.plate(), 6), new OreDictStack(CMB.ingot(), 3), new OreDictStack(MAGTUNG.wireFine(), 2), },150); makeRecipe(new ComparableStack(ModItems.chopper_blades, 1), new AStack[] {new OreDictStack(CMB.plate(), 8), new OreDictStack(STEEL.plate(), 2), new OreDictStack(CMB.ingot(), 2), },200); - makeRecipe(new ComparableStack(ModItems.crt_display, 8), new AStack[] {new OreDictStack(AL.dust(), 2), new ComparableStack(Blocks.glass_pane, 2), new OreDictStack(W.wireFine(), 4), new OreDictStack(STEEL.shell(), 1) }, 100); makeRecipe(new ComparableStack(ModItems.tritium_deuterium_cake, 1), new AStack[] {new ComparableStack(ModItems.cell_deuterium, 6), new ComparableStack(ModItems.cell_tritium, 2), new OreDictStack(LI.ingot(), 4), },150); makeRecipe(new ComparableStack(ModItems.pellet_cluster, 1), new AStack[] {new OreDictStack(STEEL.plate(), 4), new ComparableStack(Blocks.tnt, 1), }, 50); makeRecipe(new ComparableStack(ModItems.pellet_buckshot, 1), new AStack[] {new OreDictStack(PB.nugget(), 6), }, 50); @@ -164,20 +163,20 @@ public class AssemblerRecipes extends SerializableRecipe { makeRecipe(new ComparableStack(ModBlocks.watz_element, 3), new AStack[] {new OreDictStack(STEEL.plateCast(), 2), new OreDictStack(ZR.ingot(), 2), new OreDictStack(BIGMT.ingot(), 2), new OreDictStack(ANY_HARDPLASTIC.ingot(), 4)},200); makeRecipe(new ComparableStack(ModBlocks.watz_cooler, 3), new AStack[] {new OreDictStack(STEEL.plateCast(), 2), new OreDictStack(CU.plateCast(), 4), new OreDictStack(RUBBER.ingot(), 2), }, 200); makeRecipe(new ComparableStack(ModBlocks.watz_end, 3), new AStack[] {new OreDictStack(ANY_RESISTANTALLOY.plateWelded()), new OreDictStack(B.ingot(), 3), new OreDictStack(STEEL.plateWelded(), 2), }, 100); - makeRecipe(new ComparableStack(ModBlocks.nuke_gadget, 1), new AStack[] {new ComparableStack(ModItems.sphere_steel, 1), new ComparableStack(ModItems.fins_flat, 2), new ComparableStack(ModItems.pedestal_steel, 1), new ComparableStack(ModItems.circuit, 2, EnumCircuitType.ADVANCED), new OreDictStack(GOLD.wireFine(), 6), new OreDictStack("dyeGray", 6), },300); - makeRecipe(new ComparableStack(ModBlocks.nuke_boy, 1), new AStack[] {new OreDictStack(STEEL.shell(), 2), new ComparableStack(ModItems.fins_small_steel, 1), new ComparableStack(ModItems.circuit, 2, EnumCircuitType.ADVANCED), new OreDictStack(AL.wireFine(), 6), new OreDictStack("dyeBlue", 4), },300); - makeRecipe(new ComparableStack(ModBlocks.nuke_man, 1), new AStack[] {new ComparableStack(ModItems.sphere_steel, 1), new OreDictStack(STEEL.shell(), 2), new ComparableStack(ModItems.fins_big_steel, 1), new ComparableStack(ModItems.circuit, 3, EnumCircuitType.ADVANCED), new OreDictStack(CU.wireFine(), 6), new OreDictStack("dyeYellow", 6), },300); - makeRecipe(new ComparableStack(ModBlocks.nuke_mike, 1), new AStack[] {new ComparableStack(ModItems.sphere_steel, 1), new OreDictStack(AL.shell(), 4), new OreDictStack(AL.plate(), 3), new ComparableStack(ModItems.circuit, 10, EnumCircuitType.ADVANCED), new OreDictStack(GOLD.wireFine(), 18), new OreDictStack("dyeLightGray", 12), },300); - makeRecipe(new ComparableStack(ModBlocks.nuke_tsar, 1), new AStack[] {new ComparableStack(ModItems.sphere_steel, 1), new OreDictStack(TI.shell(), 6), new OreDictStack(STEEL.shell(), 2), new ComparableStack(ModItems.fins_tri_steel, 1), new ComparableStack(ModItems.circuit, 4, EnumCircuitType.BISMOID), new OreDictStack(GOLD.wireFine(), 24), new OreDictStack(W.wireFine(), 12), new OreDictStack("dyeBlack", 6), },600); - makeRecipe(new ComparableStack(ModBlocks.nuke_prototype, 1), new AStack[] {new ComparableStack(ModItems.dysfunctional_reactor, 1), new OreDictStack(STEEL.shell(), 2), new ComparableStack(ModItems.ingot_euphemium, 3), new ComparableStack(ModItems.circuit, 16, EnumCircuitType.BISMOID), new OreDictStack(GOLD.wireFine(), 16), },500); - makeRecipe(new ComparableStack(ModBlocks.nuke_fleija, 1), new AStack[] {new OreDictStack(AL.shell(), 1), new ComparableStack(ModItems.fins_quad_titanium, 1), new ComparableStack(ModItems.circuit, 8, EnumCircuitType.ADVANCED), new OreDictStack(GOLD.wireFine(), 8), new OreDictStack("dyeWhite", 4), },400); - makeRecipe(new ComparableStack(ModBlocks.nuke_solinium, 1), new AStack[] {new OreDictStack(STEEL.shell(), 2), new ComparableStack(ModItems.fins_quad_titanium, 1), new ComparableStack(ModItems.circuit, 2, EnumCircuitType.ADVANCED), new OreDictStack(GOLD.wireFine(), 10), new OreDictStack(STEEL.pipe(), 16), new OreDictStack("dyeGray", 4), },400); - makeRecipe(new ComparableStack(ModBlocks.nuke_n2, 1), new AStack[] {new OreDictStack(STEEL.shell(), 6), new OreDictStack(MAGTUNG.wireFine(), 12), new OreDictStack(STEEL.pipe(), 16), new ComparableStack(ModItems.circuit, 1, EnumCircuitType.ADVANCED), new OreDictStack("dyeBlack", 12), },300); - makeRecipe(new ComparableStack(ModBlocks.nuke_fstbmb, 1), new AStack[] {new ComparableStack(ModItems.sphere_steel, 1), new OreDictStack(TI.shell(), 6), new ComparableStack(ModItems.fins_big_steel, 1), new ComparableStack(ModItems.powder_magic, 8), new OreDictStack(GOLD.wireFine(), 12), new ComparableStack(ModItems.circuit, 16, EnumCircuitType.ADVANCED), new OreDictStack("dyeGray", 6), },600, ModItems.journal_pip, ModItems.journal_bj); - makeRecipe(new ComparableStack(ModBlocks.nuke_custom, 1), new AStack[] {new OreDictStack(STEEL.shell(), 2), new ComparableStack(ModItems.fins_small_steel, 1), new ComparableStack(ModItems.circuit, 4, EnumCircuitType.ADVANCED.ordinal()), new OreDictStack(GOLD.wireFine(), 12), new OreDictStack("dyeGray", 4), },300); - makeRecipe(new ComparableStack(ModBlocks.float_bomb, 1), new AStack[] {new OreDictStack(TI.plate(), 12), new ComparableStack(ModItems.levitation_unit, 1), new ComparableStack(ModItems.circuit, 1, EnumCircuitType.ADVANCED.ordinal()), new OreDictStack(GOLD.wireFine(), 6), },250); - makeRecipe(new ComparableStack(ModBlocks.therm_endo, 1), new AStack[] {new OreDictStack(TI.plate(), 12), new ComparableStack(ModItems.powder_ice, 32), new ComparableStack(ModItems.circuit, 1, EnumCircuitType.ADVANCED.ordinal()), new ComparableStack(ModItems.coil_gold, 4), },250); - makeRecipe(new ComparableStack(ModBlocks.therm_exo, 1), new AStack[] {new OreDictStack(TI.plate(), 12), new OreDictStack(P_RED.dust(), 32), new ComparableStack(ModItems.circuit, 1, EnumCircuitType.ADVANCED.ordinal()), new ComparableStack(ModItems.coil_gold, 4), },250); + makeRecipe(new ComparableStack(ModBlocks.nuke_gadget, 1), new AStack[] {new ComparableStack(ModItems.sphere_steel, 1), new ComparableStack(ModItems.fins_flat, 2), new ComparableStack(ModItems.pedestal_steel, 1), new ComparableStack(ModItems.circuit, 3, EnumCircuitType.CONTROLLER), new OreDictStack("dyeGray", 8), },300); + makeRecipe(new ComparableStack(ModBlocks.nuke_boy, 1), new AStack[] {new OreDictStack(STEEL.shell(), 2), new ComparableStack(ModItems.fins_small_steel, 1), new ComparableStack(ModItems.circuit, 2, EnumCircuitType.CONTROLLER), new OreDictStack("dyeBlue", 4), },300); + makeRecipe(new ComparableStack(ModBlocks.nuke_man, 1), new AStack[] {new ComparableStack(ModItems.sphere_steel, 1), new OreDictStack(STEEL.shell(), 2), new ComparableStack(ModItems.fins_big_steel, 1), new ComparableStack(ModItems.circuit, 3, EnumCircuitType.CONTROLLER), new OreDictStack("dyeYellow", 6), },300); + makeRecipe(new ComparableStack(ModBlocks.nuke_mike, 1), new AStack[] {new ComparableStack(ModItems.sphere_steel, 1), new OreDictStack(AL.shell(), 4), new ComparableStack(ModItems.circuit, 8, EnumCircuitType.CONTROLLER_ADVANCED), new OreDictStack("dyeLightGray", 16), },300); + makeRecipe(new ComparableStack(ModBlocks.nuke_tsar, 1), new AStack[] {new ComparableStack(ModItems.sphere_steel, 1), new OreDictStack(TI.shell(), 6), new OreDictStack(STEEL.shell(), 2), new ComparableStack(ModItems.fins_tri_steel, 1), new ComparableStack(ModItems.circuit, 16, EnumCircuitType.CONTROLLER_ADVANCED), new OreDictStack("dyeBlack", 8), },600); + makeRecipe(new ComparableStack(ModBlocks.nuke_prototype, 1), new AStack[] {new ComparableStack(ModItems.dysfunctional_reactor, 1), new OreDictStack(STEEL.shell(), 2), new ComparableStack(ModItems.ingot_euphemium, 3), new ComparableStack(ModItems.circuit, 8, EnumCircuitType.CONTROLLER_ADVANCED) },500); + makeRecipe(new ComparableStack(ModBlocks.nuke_fleija, 1), new AStack[] {new OreDictStack(AL.shell(), 1), new ComparableStack(ModItems.fins_quad_titanium, 1), new ComparableStack(ModItems.circuit, 1, EnumCircuitType.CONTROLLER), new OreDictStack("dyeWhite", 4), },400); + makeRecipe(new ComparableStack(ModBlocks.nuke_solinium, 1), new AStack[] {new OreDictStack(STEEL.shell(), 2), new ComparableStack(ModItems.fins_quad_titanium, 1), new ComparableStack(ModItems.circuit, 1, EnumCircuitType.CONTROLLER), new OreDictStack("dyeGray", 8), },400); + makeRecipe(new ComparableStack(ModBlocks.nuke_n2, 1), new AStack[] {new OreDictStack(STEEL.shell(), 6), new OreDictStack(MAGTUNG.wireFine(), 12), new ComparableStack(ModItems.circuit, 2, EnumCircuitType.CONTROLLER), new OreDictStack("dyeBlack", 8), },300); + makeRecipe(new ComparableStack(ModBlocks.nuke_fstbmb, 1), new AStack[] {new ComparableStack(ModItems.sphere_steel, 1), new OreDictStack(TI.shell(), 6), new ComparableStack(ModItems.fins_big_steel, 1), new ComparableStack(ModItems.powder_magic, 8), new ComparableStack(ModItems.circuit, 4, EnumCircuitType.CONTROLLER_ADVANCED), new OreDictStack("dyeGray", 8), },600, ModItems.journal_pip, ModItems.journal_bj); + makeRecipe(new ComparableStack(ModBlocks.nuke_custom, 1), new AStack[] {new OreDictStack(STEEL.shell(), 2), new ComparableStack(ModItems.fins_small_steel, 1), new ComparableStack(ModItems.circuit, 8, EnumCircuitType.CONTROLLER_ADVANCED), new OreDictStack("dyeGray", 4), },300); + makeRecipe(new ComparableStack(ModBlocks.float_bomb, 1), new AStack[] {new OreDictStack(TI.plate(), 12), new ComparableStack(ModItems.levitation_unit, 1), new ComparableStack(ModItems.circuit, 1, EnumCircuitType.ADVANCED), new OreDictStack(GOLD.wireFine(), 6), },250); + makeRecipe(new ComparableStack(ModBlocks.therm_endo, 1), new AStack[] {new OreDictStack(TI.plate(), 12), new ComparableStack(ModItems.powder_ice, 32), new ComparableStack(ModItems.circuit, 1, EnumCircuitType.ADVANCED), new ComparableStack(ModItems.coil_gold, 4), },250); + makeRecipe(new ComparableStack(ModBlocks.therm_exo, 1), new AStack[] {new OreDictStack(TI.plate(), 12), new OreDictStack(P_RED.dust(), 32), new ComparableStack(ModItems.circuit, 1, EnumCircuitType.ADVANCED), new ComparableStack(ModItems.coil_gold, 4), },250); makeRecipe(new ComparableStack(ModItems.spawn_chopper, 1), new AStack[] {new ComparableStack(ModItems.chopper_blades, 5), new ComparableStack(ModItems.chopper_gun, 1), new ComparableStack(ModItems.chopper_head, 1), new ComparableStack(ModItems.chopper_tail, 1), new ComparableStack(ModItems.chopper_torso, 1), new ComparableStack(ModItems.chopper_wing, 2), },300); makeRecipe(new ComparableStack(ModItems.gun_defabricator, 1), new AStack[] {new OreDictStack(STEEL.ingot(), 2), new OreDictStack(ANY_PLASTIC.ingot(), 8), new OreDictStack(IRON.plate(), 5), new ComparableStack(ModItems.mechanism_special, 3), new ComparableStack(Items.diamond, 1), new ComparableStack(ModItems.plate_dalekanium, 3), },200); makeRecipe(new ComparableStack(ModItems.gun_osipr_ammo, 24), new AStack[] {new OreDictStack(STEEL.plate(), 2), new OreDictStack(REDSTONE.dust(), 1), new ComparableStack(Items.glowstone_dust, 1), },50); diff --git a/src/main/java/com/hbm/inventory/recipes/ShredderRecipes.java b/src/main/java/com/hbm/inventory/recipes/ShredderRecipes.java index d7f41593e..32260e21b 100644 --- a/src/main/java/com/hbm/inventory/recipes/ShredderRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/ShredderRecipes.java @@ -283,7 +283,7 @@ public class ShredderRecipes extends SerializableRecipe { ShredderRecipes.setRecipe(ModBlocks.chain, new ItemStack(ModItems.powder_steel_tiny, 1)); ShredderRecipes.setRecipe(ModBlocks.steel_grate, new ItemStack(ModItems.powder_steel_tiny, 3)); ShredderRecipes.setRecipe(ModItems.pipes_steel, new ItemStack(ModItems.powder_steel, 27)); - ShredderRecipes.setRecipe(ModBlocks.machine_fluidtank, new ItemStack(ModItems.powder_steel, 32)); + ShredderRecipes.setRecipe(ModBlocks.machine_fluidtank, new ItemStack(ModItems.powder_steel, 16)); /* Sellafite scrapping */ ShredderRecipes.setRecipe(ModBlocks.sellafield_slaked, new ItemStack(Blocks.gravel)); diff --git a/src/main/java/com/hbm/inventory/recipes/SolderingRecipes.java b/src/main/java/com/hbm/inventory/recipes/SolderingRecipes.java index a9f16babf..6efc3eaae 100644 --- a/src/main/java/com/hbm/inventory/recipes/SolderingRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/SolderingRecipes.java @@ -99,7 +99,7 @@ public class SolderingRecipes extends SerializableRecipe { new ComparableStack(ModItems.circuit, 32, EnumCircuitType.CAPACITOR), new ComparableStack(ModItems.circuit, 16, EnumCircuitType.CAPACITOR_TANTALIUM)}, new AStack[] { - new ComparableStack(ModItems.circuit, 12, EnumCircuitType.CONTROLLER_CHASSIS), + new ComparableStack(ModItems.circuit, 1, EnumCircuitType.CONTROLLER_CHASSIS), new ComparableStack(ModItems.upgrade_speed_1)}, new AStack[] { new OreDictStack(PB.wireFine(), 16)} @@ -110,7 +110,7 @@ public class SolderingRecipes extends SerializableRecipe { new ComparableStack(ModItems.circuit, 48, EnumCircuitType.CAPACITOR), new ComparableStack(ModItems.circuit, 32, EnumCircuitType.CAPACITOR_TANTALIUM)}, new AStack[] { - new ComparableStack(ModItems.circuit, 12, EnumCircuitType.CONTROLLER_CHASSIS), + new ComparableStack(ModItems.circuit, 1, EnumCircuitType.CONTROLLER_CHASSIS), new ComparableStack(ModItems.upgrade_speed_3)}, new AStack[] { new OreDictStack(PB.wireFine(), 24)} diff --git a/src/main/java/com/hbm/inventory/recipes/anvil/AnvilRecipes.java b/src/main/java/com/hbm/inventory/recipes/anvil/AnvilRecipes.java index 075fc77a2..856779adf 100644 --- a/src/main/java/com/hbm/inventory/recipes/anvil/AnvilRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/anvil/AnvilRecipes.java @@ -815,8 +815,11 @@ public class AnvilRecipes { new AnvilOutput(new ItemStack(ModItems.crt_display, 1)), new AnvilOutput(new ItemStack(ModItems.scrap, 3)), new AnvilOutput(new ItemStack(ModItems.wire_fine, 4, Mats.MAT_COPPER.id)), - new AnvilOutput(new ItemStack(ModItems.circuit, 1, EnumCircuitType.VACUUM_TUBE.ordinal()), 0.25F), - new AnvilOutput(new ItemStack(ModItems.circuit, 2, EnumCircuitType.PCB.ordinal())) + new AnvilOutput(new ItemStack(ModItems.circuit, 2, EnumCircuitType.PCB.ordinal())), + new AnvilOutput(new ItemStack(ModItems.circuit, 1, EnumCircuitType.VACUUM_TUBE.ordinal()), 0.5F), + new AnvilOutput(new ItemStack(ModItems.circuit, 1, EnumCircuitType.CAPACITOR.ordinal()), 0.75F), + new AnvilOutput(new ItemStack(ModItems.circuit, 1, EnumCircuitType.CAPACITOR.ordinal()), 0.5F), + new AnvilOutput(new ItemStack(ModItems.circuit, 1, EnumCircuitType.ANALOG.ordinal()), 0.1F) } ).setTier(2)); diff --git a/src/main/java/com/hbm/main/CraftingManager.java b/src/main/java/com/hbm/main/CraftingManager.java index 991f7cdc0..ecbc94ad6 100644 --- a/src/main/java/com/hbm/main/CraftingManager.java +++ b/src/main/java/com/hbm/main/CraftingManager.java @@ -124,6 +124,8 @@ public class CraftingManager { addRecipeAuto(DictFrame.fromOne(ModItems.circuit, EnumCircuitType.CHIP_BISMOID), new Object[] { "III", "SNS", "WWW", 'I', ModItems.plate_polymer, 'S', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.SILICON), 'N', ANY_BISMOID.nugget(), 'W', GOLD.wireFine() }); addRecipeAuto(DictFrame.fromOne(ModItems.circuit, EnumCircuitType.CONTROLLER_CHASSIS), new Object[] { "PPP", "CBB", "PPP", 'P', ANY_PLASTIC.ingot(), 'C', ModItems.crt_display, 'B', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.PCB) }); + addRecipeAuto(new ItemStack(ModItems.crt_display, 4), new Object[] { " A ", "SGS", " T ", 'A', AL.dust(), 'S', STEEL.plate(), 'G', KEY_ANYPANE, 'T', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.VACUUM_TUBE) }); + addRecipeAuto(new ItemStack(ModItems.cell_empty, 6), new Object[] { " S ", "G G", " S ", 'S', STEEL.plate(), 'G', KEY_ANYPANE }); addRecipeAuto(new ItemStack(ModItems.cell_deuterium, 8), new Object[] { "DDD", "DTD", "DDD", 'D', ModItems.cell_empty, 'T', ModItems.mike_deut }); addRecipeAuto(new ItemStack(ModItems.particle_empty, 2), new Object[] { "STS", "G G", "STS", 'S', STEEL.plate(), 'T', W.ingot(), 'G', KEY_ANYPANE }); @@ -304,7 +306,7 @@ public class CraftingManager { addRecipeAuto(new ItemStack(ModBlocks.piston_inserter), new Object[] { "ITI", "TPT", "ITI", 'P', DictFrame.fromOne(ModItems.part_generic, EnumPartType.PISTON_PNEUMATIC), 'I', IRON.plate(), 'T', STEEL.bolt() }); addRecipeAuto(new ItemStack(ModItems.upgrade_muffler, 16), new Object[] { "III", "IWI", "III", 'I', ANY_RUBBER.ingot(), 'W', Blocks.wool }); - addRecipeAuto(new ItemStack(ModItems.upgrade_template, 1), new Object[] { "WIW", "ICI", "WIW", 'W', CU.wireFine(), 'I', IRON.plate(), 'C', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.ANALOG) }); + addRecipeAuto(new ItemStack(ModItems.upgrade_template, 1), new Object[] { "WIW", "PCP", "WIW", 'W', CU.wireFine(), 'I', IRON.plate(), 'C', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.ANALOG), 'P', ModItems.plate_polymer }); addRecipeAuto(new ItemStack(Item.getItemFromBlock(ModBlocks.factory_titanium_hull), 8), new Object[] { "PIP", "I I", "PIP", 'P', TI.plate(), 'I', TI.ingot() }); addRecipeAuto(new ItemStack(Item.getItemFromBlock(ModBlocks.factory_advanced_hull), 8), new Object[] { "PIP", "I I", "PIP", 'P', ALLOY.plate(), 'I', ALLOY.ingot() }); @@ -521,7 +523,7 @@ public class CraftingManager { addRecipeAuto(new ItemStack(Item.getItemFromBlock(ModBlocks.flame_war), 1), new Object[] { "WHW", "CTP", "WOW", 'W', Item.getItemFromBlock(Blocks.planks), 'T', Item.getItemFromBlock(Blocks.tnt), 'H', ModItems.flame_pony, 'C', ModItems.flame_conspiracy, 'P', ModItems.flame_politics, 'O', ModItems.flame_opinion }); addRecipeAuto(new ItemStack(ModBlocks.det_cord, 4), new Object[] { " P ", "PGP", " P ", 'P', Items.paper, 'G', Items.gunpowder }); addRecipeAuto(new ItemStack(ModBlocks.det_charge, 1), new Object[] { "PDP", "DTD", "PDP", 'P', STEEL.plate(), 'D', ModBlocks.det_cord, 'T', ANY_PLASTICEXPLOSIVE.ingot() }); - addRecipeAuto(new ItemStack(ModBlocks.det_nuke, 1), new Object[] { "PDP", "DCD", "PDP", 'P', ModItems.plate_desh, 'D', ModBlocks.det_charge, 'C', ModItems.man_core }); + addRecipeAuto(new ItemStack(ModBlocks.det_nuke, 1), new Object[] { "PFP", "DCD", "PFP", 'P', DESH.plateCast(), 'D', ModBlocks.det_charge, 'C', ModItems.man_core, 'F', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.CONTROLLER) }); addRecipeAuto(new ItemStack(ModBlocks.det_miner, 4), new Object[] { "FFF", "ITI", "ITI", 'F', Items.flint, 'I', IRON.plate(), 'T', ModItems.ball_dynamite }); addRecipeAuto(new ItemStack(ModBlocks.det_miner, 12), new Object[] { "FFF", "ITI", "ITI", 'F', Items.flint, 'I', STEEL.plate(), 'T', ANY_PLASTICEXPLOSIVE.ingot() }); addRecipeAuto(new ItemStack(ModBlocks.emp_bomb, 1), new Object[] { "LML", "LCL", "LML", 'L', PB.plate(), 'M', ModItems.magnetron, 'C', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.ADVANCED) }); diff --git a/src/main/resources/assets/hbm/lang/de_DE.lang b/src/main/resources/assets/hbm/lang/de_DE.lang index 160e7c76c..2ac978908 100644 --- a/src/main/resources/assets/hbm/lang/de_DE.lang +++ b/src/main/resources/assets/hbm/lang/de_DE.lang @@ -1534,6 +1534,9 @@ item.circuit.capacitor_board.name=Kondensatorboard item.circuit.capacitor_tantalium.name=Tantalkondensator item.circuit.chip.name=Mikrochip item.circuit.chip_bismoid.name=Vielfältiger integrierter Schaltkreis +item.circuit.controller.name=Steuereinheit +item.circuit.controller_advanced.name=Erweiterte Steuereinheit +item.circuit.controller_chassis.name=Steuereinheitsgehäuse item.circuit.pcb.name=Leiterplatte item.circuit.silicon.name=Bedrucker Siliziumwafer item.circuit.vacuum_tube.name=Vakuumröhre diff --git a/src/main/resources/assets/hbm/lang/en_US.lang b/src/main/resources/assets/hbm/lang/en_US.lang index 742f18ca9..0b87a0638 100644 --- a/src/main/resources/assets/hbm/lang/en_US.lang +++ b/src/main/resources/assets/hbm/lang/en_US.lang @@ -2279,6 +2279,9 @@ item.circuit.capacitor_board.name=Capacitor Board item.circuit.capacitor_tantalium.name=Tantalium Capacitor item.circuit.chip.name=Microchip item.circuit.chip_bismoid.name=Versatile Integrated Circuit +item.circuit.controller.name=Control Unit +item.circuit.controller_advanced.name=Advanced Control Unit +item.circuit.controller_chassis.name=Control Unit Casing item.circuit.pcb.name=Printed Circuit Board item.circuit.silicon.name=Printed Silicon Wafer item.circuit.vacuum_tube.name=Vacuum Tube From 27cf5ca091517c4ee5ccf1f06343d396eab7c287 Mon Sep 17 00:00:00 2001 From: George Paton Date: Tue, 4 Jun 2024 11:07:53 +1000 Subject: [PATCH 18/69] Fence blocks can be converted into posts --- src/main/java/com/hbm/blocks/ModBlocks.java | 2 +- .../hbm/blocks/generic/BlockMetalFence.java | 35 ++++++++++++++++++- .../com/hbm/items/block/ItemBlockBase.java | 3 ++ .../java/com/hbm/main/CraftingManager.java | 2 ++ .../com/hbm/render/block/RenderFence.java | 7 ++-- src/main/resources/assets/hbm/lang/en_US.lang | 1 + 6 files changed, 46 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/hbm/blocks/ModBlocks.java b/src/main/java/com/hbm/blocks/ModBlocks.java index 1e4c5efb4..fbb9d13e4 100644 --- a/src/main/java/com/hbm/blocks/ModBlocks.java +++ b/src/main/java/com/hbm/blocks/ModBlocks.java @@ -2934,7 +2934,7 @@ public class ModBlocks { GameRegistry.registerBlock(hev_battery, hev_battery.getUnlocalizedName()); //Chainlink Fence - GameRegistry.registerBlock(fence_metal, fence_metal.getUnlocalizedName()); + GameRegistry.registerBlock(fence_metal, ItemBlockBase.class, fence_metal.getUnlocalizedName()); //Sands, Glass GameRegistry.registerBlock(ash_digamma, ash_digamma.getUnlocalizedName()); diff --git a/src/main/java/com/hbm/blocks/generic/BlockMetalFence.java b/src/main/java/com/hbm/blocks/generic/BlockMetalFence.java index 1cdfaa2a7..ffcea711d 100644 --- a/src/main/java/com/hbm/blocks/generic/BlockMetalFence.java +++ b/src/main/java/com/hbm/blocks/generic/BlockMetalFence.java @@ -2,18 +2,23 @@ package com.hbm.blocks.generic; import java.util.List; +import com.hbm.blocks.IBlockMulti; + import cpw.mods.fml.client.registry.RenderingRegistry; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.block.BlockFence; import net.minecraft.block.material.Material; import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.creativetab.CreativeTabs; import net.minecraft.entity.Entity; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; import net.minecraft.util.AxisAlignedBB; import net.minecraft.util.IIcon; import net.minecraft.world.World; -public class BlockMetalFence extends BlockFence { +public class BlockMetalFence extends BlockFence implements IBlockMulti { public IIcon postIcon; @@ -38,6 +43,21 @@ public class BlockMetalFence extends BlockFence { return false; } + @Override + public int damageDropped(int meta) { + return rectify(meta); + } + + @Override + @SideOnly(Side.CLIENT) + public IIcon getIcon(int side, int meta) { + return meta == 0 ? this.blockIcon : this.postIcon; + } + + public String getUnlocalizedName(ItemStack stack) { + return stack.getItemDamage() == 1 ? getUnlocalizedName() + "_post" : getUnlocalizedName(); + } + @Override @SideOnly(Side.CLIENT) public void registerBlockIcons(IIconRegister iconRegister) { @@ -104,4 +124,17 @@ public class BlockMetalFence extends BlockFence { } } + @Override + @SideOnly(Side.CLIENT) + public void getSubBlocks(Item item, CreativeTabs tab, List list) { + for(int i = 0; i < getSubCount(); ++i) { + list.add(new ItemStack(item, 1, i)); + } + } + + @Override + public int getSubCount() { + return 2; + } + } diff --git a/src/main/java/com/hbm/items/block/ItemBlockBase.java b/src/main/java/com/hbm/items/block/ItemBlockBase.java index e04959cff..d4976b1ab 100644 --- a/src/main/java/com/hbm/items/block/ItemBlockBase.java +++ b/src/main/java/com/hbm/items/block/ItemBlockBase.java @@ -6,6 +6,7 @@ import com.hbm.blocks.BlockMulti; import com.hbm.blocks.IBlockMulti; import com.hbm.blocks.IPersistentInfoProvider; import com.hbm.blocks.ITooltipProvider; +import com.hbm.blocks.generic.BlockMetalFence; import com.hbm.tileentity.IPersistentNBT; import cpw.mods.fml.relauncher.Side; @@ -42,6 +43,8 @@ public class ItemBlockBase extends ItemBlock { if(field_150939_a instanceof BlockMulti) { return ((BlockMulti)field_150939_a).getUnlocalizedName(stack); + } else if(field_150939_a instanceof BlockMetalFence) { + return ((BlockMetalFence)field_150939_a).getUnlocalizedName(stack); // I considered reworking IBlockMulti instead but there are like a bajillion implementers } else { return super.getUnlocalizedName(stack); } diff --git a/src/main/java/com/hbm/main/CraftingManager.java b/src/main/java/com/hbm/main/CraftingManager.java index 7758ffcb8..0095f2e01 100644 --- a/src/main/java/com/hbm/main/CraftingManager.java +++ b/src/main/java/com/hbm/main/CraftingManager.java @@ -740,6 +740,8 @@ public class CraftingManager { addRecipeAuto(new ItemStack(ModBlocks.obj_tester, 1), new Object[] { "P", "I", "S", 'P', ModItems.polaroid, 'I', ModItems.flame_pony, 'S', STEEL.plate() }); addRecipeAuto(new ItemStack(ModBlocks.fence_metal, 6), new Object[] { "BIB", "BIB", 'B', Blocks.iron_bars, 'I', Items.iron_ingot }); + addShapelessAuto(new ItemStack(ModBlocks.fence_metal, 1, 1), new Object[] { new ItemStack(ModBlocks.fence_metal, 1, 0) }); + addShapelessAuto(new ItemStack(ModBlocks.fence_metal, 1, 0), new Object[] { new ItemStack(ModBlocks.fence_metal, 1, 1) }); addShapelessAuto(new ItemStack(ModBlocks.waste_trinitite), new Object[] { new ItemStack(Blocks.sand, 1, 0), ModItems.trinitite }); addShapelessAuto(new ItemStack(ModBlocks.waste_trinitite_red), new Object[] { new ItemStack(Blocks.sand, 1, 1), ModItems.trinitite }); diff --git a/src/main/java/com/hbm/render/block/RenderFence.java b/src/main/java/com/hbm/render/block/RenderFence.java index 5b58fbd89..b03ff14e6 100644 --- a/src/main/java/com/hbm/render/block/RenderFence.java +++ b/src/main/java/com/hbm/render/block/RenderFence.java @@ -19,6 +19,7 @@ public class RenderFence implements ISimpleBlockRenderingHandler { public boolean renderWorldBlock(IBlockAccess world, int x, int y, int z, Block block, int modelId, RenderBlocks renderer) { BlockMetalFence fence = (BlockMetalFence) ModBlocks.fence_metal; + int meta = world.getBlockMetadata(x, y, z); boolean xNeg = fence.canConnectFenceTo(world, x - 1, y, z); boolean xPos = fence.canConnectFenceTo(world, x + 1, y, z); @@ -28,7 +29,9 @@ public class RenderFence implements ISimpleBlockRenderingHandler { boolean flag1 = xNeg || xPos; boolean flag2 = zNeg || zPos; - boolean hidePost = (xNeg && xPos) || (zNeg && zPos); + boolean straightX = xNeg && xPos; + boolean straightZ = zNeg && zPos; + boolean showPost = meta == 1 || (!straightX && !straightZ); if (!flag1 && !flag2) { flag1 = true; @@ -52,7 +55,7 @@ public class RenderFence implements ISimpleBlockRenderingHandler { renderer.renderStandardBlock(fence, x, y, z); } - if(!hidePost) { + if(showPost) { f = 0.375F; f1 = 0.625F; renderer.setOverrideBlockTexture(fence.postIcon); diff --git a/src/main/resources/assets/hbm/lang/en_US.lang b/src/main/resources/assets/hbm/lang/en_US.lang index 742f18ca9..f69d23017 100644 --- a/src/main/resources/assets/hbm/lang/en_US.lang +++ b/src/main/resources/assets/hbm/lang/en_US.lang @@ -5066,6 +5066,7 @@ tile.fallout.name=Fallout tile.fan.name=Fan tile.fan.desc=Activates using redstone$Will push entities up to 10 blocks$Right-click with screwdriver to flip tile.fence_metal.name=Chainlink Fence +tile.fence_metal_post.name=Chainlink Fence Post tile.field_disturber.name=High Energy Field Jammer tile.filing_cabinet.green.name=Dusty Filing Cabinet tile.filing_cabinet.steel.name=Steel Filing Cabinet From 811a1b92c11555610f8bfbc2c18057c6e95476d6 Mon Sep 17 00:00:00 2001 From: George Paton Date: Tue, 4 Jun 2024 11:23:51 +1000 Subject: [PATCH 19/69] T and X junctions now render posts too --- .../java/com/hbm/render/block/RenderFence.java | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/src/main/java/com/hbm/render/block/RenderFence.java b/src/main/java/com/hbm/render/block/RenderFence.java index b03ff14e6..5dd5a9012 100644 --- a/src/main/java/com/hbm/render/block/RenderFence.java +++ b/src/main/java/com/hbm/render/block/RenderFence.java @@ -26,15 +26,15 @@ public class RenderFence implements ISimpleBlockRenderingHandler { boolean zNeg = fence.canConnectFenceTo(world, x, y, z - 1); boolean zPos = fence.canConnectFenceTo(world, x, y, z + 1); - boolean flag1 = xNeg || xPos; - boolean flag2 = zNeg || zPos; + boolean hasX = xNeg || xPos; + boolean hasZ = zNeg || zPos; - boolean straightX = xNeg && xPos; - boolean straightZ = zNeg && zPos; + boolean straightX = !hasZ && xNeg && xPos; + boolean straightZ = !hasX && zNeg && zPos; boolean showPost = meta == 1 || (!straightX && !straightZ); - if (!flag1 && !flag2) { - flag1 = true; + if (!hasX && !hasZ) { + hasX = true; } float f = 0.4375F; @@ -45,12 +45,12 @@ public class RenderFence implements ISimpleBlockRenderingHandler { float f7 = zPos ? 1.0F : f1; renderer.field_152631_f = true; - if (flag1) { + if (hasX) { renderer.setRenderBounds((double)f4, (double)0, (double)0.5, (double)f5, (double)1, (double)0.5); renderer.renderStandardBlock(fence, x, y, z); } - if (flag2) { + if (hasZ) { renderer.setRenderBounds((double)0.5, (double)0, (double)f6, (double)0.5, (double)1, (double)f7); renderer.renderStandardBlock(fence, x, y, z); } From 8618de3f1c03412274af6af1a438520891ba4104 Mon Sep 17 00:00:00 2001 From: Boblet Date: Tue, 4 Jun 2024 16:25:19 +0200 Subject: [PATCH 20/69] guh --- changelog | 6 +++- src/main/java/com/hbm/items/ModItems.java | 36 +++++++++---------- .../java/com/hbm/items/machine/ItemMold.java | 2 +- src/main/resources/assets/hbm/lang/de_DE.lang | 5 ++- src/main/resources/assets/hbm/lang/en_US.lang | 2 +- 5 files changed, 29 insertions(+), 22 deletions(-) diff --git a/changelog b/changelog index face48fe8..f3be1b444 100644 --- a/changelog +++ b/changelog @@ -1,6 +1,7 @@ ## Added * Asphalt stairs * Stairs, but fast + * Slabs too * More circuits * Control units and advanced control units are exclusively used for nukes * CUs and ACUs are quite a bit more expensive than standard circuits and also make use of tantalum capacitors @@ -13,10 +14,13 @@ * Most assembler recipes have been de-cluttered, no longer using random extra plates or wires * Nukes now exclusively use control units or ACUs instead of circuits * CRTs are now crafted in the crafting table instead of via assembler, making use of vacuum tubes +* Chainlink fences now only create posts on edges or intersections + * The new chainlink fence post block will always create a post, emulating the behavior of the old fences ## Fixed * Fixed dupe regarding conveyor grabbers * Fixed soldering stations not saving progress or their fluid tanks * Fixed a bug where missile debris would always spawn with a stack size of 1 and a meta of 0 * Fixed FM radios disassembling into incorrect parts -* Fixed 256k tanks yielding too much steel when shredded \ No newline at end of file +* Fixed 256k tanks yielding too much steel when shredded +* Fixed the wire mold only creating 1 wie instead of the intended 8 due to the changes to the wire oredict \ No newline at end of file diff --git a/src/main/java/com/hbm/items/ModItems.java b/src/main/java/com/hbm/items/ModItems.java index 5762a6dd0..1c501b89d 100644 --- a/src/main/java/com/hbm/items/ModItems.java +++ b/src/main/java/com/hbm/items/ModItems.java @@ -3088,28 +3088,28 @@ public class ModItems { entanglement_kit = new ItemCustomLore().setUnlocalizedName("entanglement_kit").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":entanglement_kit"); circuit = new ItemCircuit().setUnlocalizedName("circuit").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":circuit"); - circuit_raw = new Item().setUnlocalizedName("circuit_raw").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":circuit_raw"); - circuit_aluminium = new Item().setUnlocalizedName("circuit_aluminium").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":circuit_aluminium"); - circuit_copper = new Item().setUnlocalizedName("circuit_copper").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":circuit_copper"); - circuit_red_copper = new Item().setUnlocalizedName("circuit_red_copper").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":circuit_red_copper"); - circuit_gold = new Item().setUnlocalizedName("circuit_gold").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":circuit_gold"); - circuit_schrabidium = new ItemCustomLore().setRarity(EnumRarity.rare).setUnlocalizedName("circuit_schrabidium").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":circuit_schrabidium"); - circuit_bismuth_raw = new Item().setUnlocalizedName("circuit_bismuth_raw").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":circuit_bismuth_raw"); - circuit_bismuth = new ItemCustomLore().setRarity(EnumRarity.uncommon).setUnlocalizedName("circuit_bismuth").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":circuit_bismuth"); - circuit_arsenic_raw = new Item().setUnlocalizedName("circuit_arsenic_raw").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":circuit_arsenic_raw"); - circuit_arsenic = new ItemCustomLore().setRarity(EnumRarity.uncommon).setUnlocalizedName("circuit_arsenic").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":circuit_arsenic"); - circuit_tantalium_raw = new Item().setUnlocalizedName("circuit_tantalium_raw").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":circuit_tantalium_raw"); - circuit_tantalium = new ItemCustomLore().setRarity(EnumRarity.uncommon).setUnlocalizedName("circuit_tantalium").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":circuit_tantalium"); + circuit_raw = new Item().setUnlocalizedName("circuit_raw").setCreativeTab(null).setTextureName(RefStrings.MODID + ":circuit_raw"); + circuit_aluminium = new Item().setUnlocalizedName("circuit_aluminium").setCreativeTab(null).setTextureName(RefStrings.MODID + ":circuit_aluminium"); + circuit_copper = new Item().setUnlocalizedName("circuit_copper").setCreativeTab(null).setTextureName(RefStrings.MODID + ":circuit_copper"); + circuit_red_copper = new Item().setUnlocalizedName("circuit_red_copper").setCreativeTab(null).setTextureName(RefStrings.MODID + ":circuit_red_copper"); + circuit_gold = new Item().setUnlocalizedName("circuit_gold").setCreativeTab(null).setTextureName(RefStrings.MODID + ":circuit_gold"); + circuit_schrabidium = new ItemCustomLore().setRarity(EnumRarity.rare).setUnlocalizedName("circuit_schrabidium").setCreativeTab(null).setTextureName(RefStrings.MODID + ":circuit_schrabidium"); + circuit_bismuth_raw = new Item().setUnlocalizedName("circuit_bismuth_raw").setCreativeTab(null).setTextureName(RefStrings.MODID + ":circuit_bismuth_raw"); + circuit_bismuth = new ItemCustomLore().setRarity(EnumRarity.uncommon).setUnlocalizedName("circuit_bismuth").setCreativeTab(null).setTextureName(RefStrings.MODID + ":circuit_bismuth"); + circuit_arsenic_raw = new Item().setUnlocalizedName("circuit_arsenic_raw").setCreativeTab(null).setTextureName(RefStrings.MODID + ":circuit_arsenic_raw"); + circuit_arsenic = new ItemCustomLore().setRarity(EnumRarity.uncommon).setUnlocalizedName("circuit_arsenic").setCreativeTab(null).setTextureName(RefStrings.MODID + ":circuit_arsenic"); + circuit_tantalium_raw = new Item().setUnlocalizedName("circuit_tantalium_raw").setCreativeTab(null).setTextureName(RefStrings.MODID + ":circuit_tantalium_raw"); + circuit_tantalium = new ItemCustomLore().setRarity(EnumRarity.uncommon).setUnlocalizedName("circuit_tantalium").setCreativeTab(null).setTextureName(RefStrings.MODID + ":circuit_tantalium"); crt_display = new Item().setUnlocalizedName("crt_display").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":crt_display"); circuit_star_piece = (ItemEnumMulti) new ItemEnumMulti(ScrapType.class, true, true).setUnlocalizedName("circuit_star_piece").setCreativeTab(null); circuit_star_component = (ItemEnumMulti) new ItemCircuitStarComponent().setUnlocalizedName("circuit_star_component").setCreativeTab(null); circuit_star = new ItemCustomLore().setRarity(EnumRarity.uncommon).setUnlocalizedName("circuit_star").setCreativeTab(null).setTextureName(RefStrings.MODID + ":circuit_star"); - circuit_targeting_tier1 = new Item().setUnlocalizedName("circuit_targeting_tier1").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":circuit_targeting_tier1"); - circuit_targeting_tier2 = new Item().setUnlocalizedName("circuit_targeting_tier2").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":circuit_targeting_tier2"); - circuit_targeting_tier3 = new Item().setUnlocalizedName("circuit_targeting_tier3").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":circuit_targeting_tier3"); - circuit_targeting_tier4 = new Item().setUnlocalizedName("circuit_targeting_tier4").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":circuit_targeting_tier4"); - circuit_targeting_tier5 = new Item().setUnlocalizedName("circuit_targeting_tier5").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":circuit_targeting_tier5"); - circuit_targeting_tier6 = new Item().setUnlocalizedName("circuit_targeting_tier6").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":circuit_targeting_tier6"); + circuit_targeting_tier1 = new Item().setUnlocalizedName("circuit_targeting_tier1").setCreativeTab(null).setTextureName(RefStrings.MODID + ":circuit_targeting_tier1"); + circuit_targeting_tier2 = new Item().setUnlocalizedName("circuit_targeting_tier2").setCreativeTab(null).setTextureName(RefStrings.MODID + ":circuit_targeting_tier2"); + circuit_targeting_tier3 = new Item().setUnlocalizedName("circuit_targeting_tier3").setCreativeTab(null).setTextureName(RefStrings.MODID + ":circuit_targeting_tier3"); + circuit_targeting_tier4 = new Item().setUnlocalizedName("circuit_targeting_tier4").setCreativeTab(null).setTextureName(RefStrings.MODID + ":circuit_targeting_tier4"); + circuit_targeting_tier5 = new Item().setUnlocalizedName("circuit_targeting_tier5").setCreativeTab(null).setTextureName(RefStrings.MODID + ":circuit_targeting_tier5"); + circuit_targeting_tier6 = new Item().setUnlocalizedName("circuit_targeting_tier6").setCreativeTab(null).setTextureName(RefStrings.MODID + ":circuit_targeting_tier6"); mechanism_revolver_1 = new Item().setUnlocalizedName("mechanism_revolver_1").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":mechanism_1"); mechanism_revolver_2 = new Item().setUnlocalizedName("mechanism_revolver_2").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":mechanism_3"); mechanism_rifle_1 = new Item().setUnlocalizedName("mechanism_rifle_1").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":mechanism_2"); diff --git a/src/main/java/com/hbm/items/machine/ItemMold.java b/src/main/java/com/hbm/items/machine/ItemMold.java index 75c56fee4..0af9d253e 100644 --- a/src/main/java/com/hbm/items/machine/ItemMold.java +++ b/src/main/java/com/hbm/items/machine/ItemMold.java @@ -45,7 +45,7 @@ public class ItemMold extends Item { registerMold(new MoldShape( 1, S, "billet", MaterialShapes.BILLET)); registerMold(new MoldShape( 2, S, "ingot", MaterialShapes.INGOT)); registerMold(new MoldShape( 3, S, "plate", MaterialShapes.PLATE)); - registerMold(new MoldShape( 4, S, "wire", MaterialShapes.WIRE)); + registerMold(new MoldShape( 4, S, "wires", MaterialShapes.WIRE, 8)); registerMold(new MoldShape( 19, S, "plate_cast", MaterialShapes.CASTPLATE)); registerMold(new MoldShape( 20, S, "wire_dense", MaterialShapes.DENSEWIRE)); diff --git a/src/main/resources/assets/hbm/lang/de_DE.lang b/src/main/resources/assets/hbm/lang/de_DE.lang index 2ac978908..2aa6249d7 100644 --- a/src/main/resources/assets/hbm/lang/de_DE.lang +++ b/src/main/resources/assets/hbm/lang/de_DE.lang @@ -3595,7 +3595,7 @@ shape.plate=Platte shape.plateTriple=Gussplatte shape.shell=Mantel shape.stamp=Stempel -shape.wire=Draht +shape.wireFine=Drähte shape.wireDense=Dichter Draht shape.wiresDense=Dichte Drähte @@ -3627,6 +3627,7 @@ tile.anvil_starmetal.name=Sternenmetallamboss tile.anvil_steel.name=Stahlamboss tile.ash_digamma.name=Asche tile.asphalt.name=Asphalt +tile.asphalt_stairs.name=Asphalttreppe tile.asphalt_light.name=Leuchtender Asphalt tile.barbed_wire.name=Stacheldraht tile.barbed_wire_acid.name=Ätzender Stacheldraht @@ -3870,6 +3871,7 @@ tile.concrete_colored_ext.machine_stripe.name=Builder's Choice Concrete - Indust tile.concrete_colored_ext.pink.name=Builder's Choice Concrete - Männliches Pink tile.concrete_colored_ext.purple.name=Builder's Choice Concrete - Mysteriöses Lila tile.concrete_pillar.name=Stahlbetonsäule +tile.concrete_slab.asphalt.name=Asphaltstufe tile.concrete_slab.concrete.name=Betonfliesenstufe tile.concrete_slab.concrete_asbestos.name=Asbestbetonstufe tile.concrete_slab.concrete_smooth.name=Betonstufe @@ -4011,6 +4013,7 @@ tile.fallout.name=Fallout tile.fan.name=Ventilator tile.fan.desc=Kann mit Redstone aktiviert werden$Bewegt Entities bis zu 10 Blöcke$Rechtsclick mit Schraubenzieher um den Ventilator umzudrehen tile.fence_metal.name=Maschendrahtzaun +tile.fence_metal_post.name=Maschendrahtzaun-Pfahl tile.field_disturber.name=Hochenergiefeld-Jammer tile.fire_digamma.name=Verweilendes Digamma tile.fire_door.name=Brandschutztür diff --git a/src/main/resources/assets/hbm/lang/en_US.lang b/src/main/resources/assets/hbm/lang/en_US.lang index 22a05fda4..6a33ffc9c 100644 --- a/src/main/resources/assets/hbm/lang/en_US.lang +++ b/src/main/resources/assets/hbm/lang/en_US.lang @@ -4615,7 +4615,7 @@ shape.plate=Plate shape.plateTriple=Cast Plate shape.shell=Shell shape.stamp=Press Stamp -shape.wire=Wire +shape.wireFine=Wires shape.wireDense=Dense Wire shape.wiresDense=Dense Wires From 14c5941bab60f252243684f032d4a4067f39790d Mon Sep 17 00:00:00 2001 From: Boblet Date: Wed, 5 Jun 2024 12:11:18 +0200 Subject: [PATCH 21/69] even more throughput --- changelog | 12 ++++++- src/main/java/com/hbm/blocks/ModBlocks.java | 6 ---- .../generic/BlockConcreteColoredExt.java | 4 ++- .../com/hbm/blocks/generic/BlockGoldSand.java | 31 ------------------ .../java/com/hbm/crafting/MineralRecipes.java | 3 -- .../java/com/hbm/hazard/HazardRegistry.java | 1 - .../ContainerMachineArcFurnaceLarge.java | 15 ++++++++- .../java/com/hbm/items/machine/ItemMold.java | 2 +- .../java/com/hbm/main/CraftingManager.java | 2 ++ src/main/java/com/hbm/main/MainRegistry.java | 2 ++ .../TileEntityMachineArcFurnaceLarge.java | 31 +++++++++++++++--- .../TileEntityMachineElectricFurnace.java | 4 +++ .../machine/TileEntityMicrowave.java | 9 +++-- src/main/resources/assets/hbm/lang/de_DE.lang | 2 ++ src/main/resources/assets/hbm/lang/en_US.lang | 2 ++ .../blocks/concrete_colored_ext.bronze.png | Bin 0 -> 620 bytes .../blocks/concrete_colored_ext.sand.png | Bin 0 -> 528 bytes .../hbm/textures/blocks/rbmk_heatex.png | Bin 701 -> 0 bytes .../hbm/textures/blocks/reactor_computer.png | Bin 620 -> 0 bytes .../textures/blocks/reactor_computer_alt.png | Bin 675 -> 0 bytes .../blocks/reactor_conductor_side.png | Bin 439 -> 0 bytes .../blocks/reactor_conductor_side_alt.png | Bin 594 -> 0 bytes .../textures/blocks/reactor_conductor_top.png | Bin 429 -> 0 bytes .../blocks/reactor_conductor_top_alt.png | Bin 536 -> 0 bytes .../textures/blocks/reactor_control_base.png | Bin 417 -> 0 bytes .../textures/blocks/reactor_control_side.png | Bin 483 -> 0 bytes .../textures/blocks/reactor_control_top.png | Bin 609 -> 0 bytes .../hbm/textures/blocks/reactor_ejector.png | Bin 655 -> 0 bytes .../textures/blocks/reactor_element_base.png | Bin 422 -> 0 bytes .../textures/blocks/reactor_element_side.png | Bin 485 -> 0 bytes .../textures/blocks/reactor_element_top.png | Bin 526 -> 0 bytes .../hbm/textures/blocks/reactor_hatch.png | Bin 572 -> 0 bytes .../hbm/textures/blocks/reactor_hatch_alt.png | Bin 587 -> 0 bytes .../hbm/textures/blocks/reactor_inserter.png | Bin 652 -> 0 bytes .../assets/hbm/textures/blocks/sand_gold.png | Bin 613 -> 0 bytes .../assets/hbm/textures/blocks/stone_gems.png | Bin 768 -> 0 bytes .../hbm/textures/blocks/watz_cooler.png | Bin 420 -> 0 bytes .../assets/hbm/textures/blocks/watz_end.png | Bin 441 -> 0 bytes .../assets/hbm/textures/blocks/watz_hatch.png | Bin 414 -> 0 bytes .../hbm/textures/blocks/white_cable.png | Bin 344 -> 0 bytes .../hbm/textures/blocks/white_cable_icon.png | Bin 293 -> 0 bytes .../hbm/textures/blocks/white_wire_coated.png | Bin 424 -> 0 bytes 42 files changed, 71 insertions(+), 55 deletions(-) delete mode 100644 src/main/java/com/hbm/blocks/generic/BlockGoldSand.java create mode 100644 src/main/resources/assets/hbm/textures/blocks/concrete_colored_ext.bronze.png create mode 100644 src/main/resources/assets/hbm/textures/blocks/concrete_colored_ext.sand.png delete mode 100644 src/main/resources/assets/hbm/textures/blocks/rbmk_heatex.png delete mode 100644 src/main/resources/assets/hbm/textures/blocks/reactor_computer.png delete mode 100644 src/main/resources/assets/hbm/textures/blocks/reactor_computer_alt.png delete mode 100644 src/main/resources/assets/hbm/textures/blocks/reactor_conductor_side.png delete mode 100644 src/main/resources/assets/hbm/textures/blocks/reactor_conductor_side_alt.png delete mode 100644 src/main/resources/assets/hbm/textures/blocks/reactor_conductor_top.png delete mode 100644 src/main/resources/assets/hbm/textures/blocks/reactor_conductor_top_alt.png delete mode 100644 src/main/resources/assets/hbm/textures/blocks/reactor_control_base.png delete mode 100644 src/main/resources/assets/hbm/textures/blocks/reactor_control_side.png delete mode 100644 src/main/resources/assets/hbm/textures/blocks/reactor_control_top.png delete mode 100644 src/main/resources/assets/hbm/textures/blocks/reactor_ejector.png delete mode 100644 src/main/resources/assets/hbm/textures/blocks/reactor_element_base.png delete mode 100644 src/main/resources/assets/hbm/textures/blocks/reactor_element_side.png delete mode 100644 src/main/resources/assets/hbm/textures/blocks/reactor_element_top.png delete mode 100644 src/main/resources/assets/hbm/textures/blocks/reactor_hatch.png delete mode 100644 src/main/resources/assets/hbm/textures/blocks/reactor_hatch_alt.png delete mode 100644 src/main/resources/assets/hbm/textures/blocks/reactor_inserter.png delete mode 100644 src/main/resources/assets/hbm/textures/blocks/sand_gold.png delete mode 100644 src/main/resources/assets/hbm/textures/blocks/stone_gems.png delete mode 100644 src/main/resources/assets/hbm/textures/blocks/watz_cooler.png delete mode 100644 src/main/resources/assets/hbm/textures/blocks/watz_end.png delete mode 100644 src/main/resources/assets/hbm/textures/blocks/watz_hatch.png delete mode 100644 src/main/resources/assets/hbm/textures/blocks/white_cable.png delete mode 100644 src/main/resources/assets/hbm/textures/blocks/white_cable_icon.png delete mode 100644 src/main/resources/assets/hbm/textures/blocks/white_wire_coated.png diff --git a/changelog b/changelog index f3be1b444..3e4a0766f 100644 --- a/changelog +++ b/changelog @@ -16,6 +16,16 @@ * CRTs are now crafted in the crafting table instead of via assembler, making use of vacuum tubes * Chainlink fences now only create posts on edges or intersections * The new chainlink fence post block will always create a post, emulating the behavior of the old fences +* Removed gold sands (frees up 2 block IDs) +* There's now two new variants of builder's choice concrete, desert storm (the texture from the launch pad) and bronze plating (the old ICF laser texture) +* Microwaves are no longer electric furnace copies, instead their recipes are restricted to things considered food +* Electric furnaces now cause minor pollution (does not connect to smoke stacks!) +* Increased the arc furnace's liquid buffer to 128 blocks (from 24) +* The arc furnace can now accept up to *16* items per slot (effective amount is lower depending on the output in order to prevent >64 stacks) + * Due to technical limitations, clicking into a slot once will only place a single item, however after the item is present, the slot's capacity extends to 16 + * This is especially apparent when clicking items into slots by hand, and still noticeable when shift clicking by how the items spred out + * This does not affect automation at all, items will stack up nicely without spreading out unnecessarily +* Reduced arc furnace pollution from 15 to 10 soot per cycle ## Fixed * Fixed dupe regarding conveyor grabbers @@ -23,4 +33,4 @@ * Fixed a bug where missile debris would always spawn with a stack size of 1 and a meta of 0 * Fixed FM radios disassembling into incorrect parts * Fixed 256k tanks yielding too much steel when shredded -* Fixed the wire mold only creating 1 wie instead of the intended 8 due to the changes to the wire oredict \ No newline at end of file +* Fixed the wire mold only creating 1 wire instead of the intended 8 due to the changes to the wire oredict \ No newline at end of file diff --git a/src/main/java/com/hbm/blocks/ModBlocks.java b/src/main/java/com/hbm/blocks/ModBlocks.java index fbb9d13e4..88e2f7e82 100644 --- a/src/main/java/com/hbm/blocks/ModBlocks.java +++ b/src/main/java/com/hbm/blocks/ModBlocks.java @@ -454,8 +454,6 @@ public class ModBlocks { public static Block sand_uranium; public static Block sand_polonium; public static Block sand_quartz; - public static Block sand_gold; - public static Block sand_gold198; public static Block ash_digamma; public static Block glass_boron; public static Block glass_lead; @@ -1644,8 +1642,6 @@ public class ModBlocks { sand_uranium = new BlockFalling(Material.sand).setBlockName("sand_uranium").setStepSound(Block.soundTypeSand).setCreativeTab(MainRegistry.machineTab).setHardness(0.5F).setBlockTextureName(RefStrings.MODID + ":sand_uranium"); sand_polonium = new BlockFalling(Material.sand).setBlockName("sand_polonium").setStepSound(Block.soundTypeSand).setCreativeTab(MainRegistry.machineTab).setHardness(0.5F).setBlockTextureName(RefStrings.MODID + ":sand_polonium"); sand_quartz = new BlockFalling(Material.sand).setBlockName("sand_quartz").setStepSound(Block.soundTypeSand).setCreativeTab(MainRegistry.machineTab).setHardness(0.5F).setBlockTextureName(RefStrings.MODID + ":sand_quartz"); - sand_gold = new BlockGoldSand(Material.sand).setBlockName("sand_gold").setStepSound(Block.soundTypeSand).setCreativeTab(MainRegistry.machineTab).setHardness(0.5F).setBlockTextureName(RefStrings.MODID + ":sand_gold"); - sand_gold198 = new BlockGoldSand(Material.sand).setBlockName("sand_gold198").setStepSound(Block.soundTypeSand).setCreativeTab(MainRegistry.machineTab).setHardness(0.5F).setBlockTextureName(RefStrings.MODID + ":sand_gold"); glass_boron = new BlockNTMGlassCT(0, RefStrings.MODID + ":glass_boron", Material.glass).setBlockName("glass_boron").setStepSound(Block.soundTypeGlass).setCreativeTab(MainRegistry.machineTab).setHardness(0.3F); glass_lead = new BlockNTMGlassCT(0, RefStrings.MODID + ":glass_lead", Material.glass).setBlockName("glass_lead").setStepSound(Block.soundTypeGlass).setCreativeTab(MainRegistry.machineTab).setHardness(0.3F); glass_uranium = new BlockNTMGlassCT(1, RefStrings.MODID + ":glass_uranium", Material.glass).setBlockName("glass_uranium").setLightLevel(5F/15F).setStepSound(Block.soundTypeGlass).setCreativeTab(MainRegistry.machineTab).setHardness(0.3F); @@ -2943,8 +2939,6 @@ public class ModBlocks { GameRegistry.registerBlock(sand_uranium, sand_uranium.getUnlocalizedName()); GameRegistry.registerBlock(sand_polonium, sand_polonium.getUnlocalizedName()); GameRegistry.registerBlock(sand_quartz, sand_quartz.getUnlocalizedName()); - GameRegistry.registerBlock(sand_gold, sand_gold.getUnlocalizedName()); - GameRegistry.registerBlock(sand_gold198, sand_gold198.getUnlocalizedName()); GameRegistry.registerBlock(glass_boron, glass_boron.getUnlocalizedName()); GameRegistry.registerBlock(glass_lead, glass_lead.getUnlocalizedName()); GameRegistry.registerBlock(glass_uranium, glass_uranium.getUnlocalizedName()); diff --git a/src/main/java/com/hbm/blocks/generic/BlockConcreteColoredExt.java b/src/main/java/com/hbm/blocks/generic/BlockConcreteColoredExt.java index 929d2281a..5e0e6ced3 100644 --- a/src/main/java/com/hbm/blocks/generic/BlockConcreteColoredExt.java +++ b/src/main/java/com/hbm/blocks/generic/BlockConcreteColoredExt.java @@ -30,6 +30,8 @@ public class BlockConcreteColoredExt extends BlockEnumMulti { INDIGO, PURPLE, PINK, - HAZARD + HAZARD, + SAND, + BRONZE } } diff --git a/src/main/java/com/hbm/blocks/generic/BlockGoldSand.java b/src/main/java/com/hbm/blocks/generic/BlockGoldSand.java deleted file mode 100644 index d8da15f8e..000000000 --- a/src/main/java/com/hbm/blocks/generic/BlockGoldSand.java +++ /dev/null @@ -1,31 +0,0 @@ -package com.hbm.blocks.generic; - -import com.hbm.blocks.ModBlocks; -import com.hbm.extprop.HbmLivingProps; -import com.hbm.extprop.HbmLivingProps.ContaminationEffect; - -import net.minecraft.block.BlockFalling; -import net.minecraft.block.material.Material; -import net.minecraft.entity.Entity; -import net.minecraft.entity.EntityLivingBase; -import net.minecraft.util.DamageSource; -import net.minecraft.world.World; - -public class BlockGoldSand extends BlockFalling { - - public BlockGoldSand(Material mat) { - super(mat); - } - - @Override - public void onEntityWalking(World world, int x, int y, int z, Entity entity) { - - if(entity instanceof EntityLivingBase) { - entity.attackEntityFrom(DamageSource.inFire, 2F); - - if(this == ModBlocks.sand_gold198) { - HbmLivingProps.addCont((EntityLivingBase)entity, new ContaminationEffect(5F, 300, false)); - } - } - } -} diff --git a/src/main/java/com/hbm/crafting/MineralRecipes.java b/src/main/java/com/hbm/crafting/MineralRecipes.java index 59e90e880..6321aebff 100644 --- a/src/main/java/com/hbm/crafting/MineralRecipes.java +++ b/src/main/java/com/hbm/crafting/MineralRecipes.java @@ -32,9 +32,6 @@ public class MineralRecipes { add1To9Pair(ModItems.dust, ModItems.dust_tiny); add1To9Pair(ModItems.powder_coal, ModItems.powder_coal_tiny); add1To9Pair(ModItems.ingot_mercury, ModItems.nugget_mercury); - - add1To9Pair(ModBlocks.sand_gold, ModItems.powder_gold); - add1To9Pair(ModBlocks.sand_gold198, ModItems.powder_au198); add1To9Pair(ModBlocks.block_aluminium, ModItems.ingot_aluminium); add1To9Pair(ModBlocks.block_graphite, ModItems.ingot_graphite); diff --git a/src/main/java/com/hbm/hazard/HazardRegistry.java b/src/main/java/com/hbm/hazard/HazardRegistry.java index 93efb26d3..0653efe8c 100644 --- a/src/main/java/com/hbm/hazard/HazardRegistry.java +++ b/src/main/java/com/hbm/hazard/HazardRegistry.java @@ -216,7 +216,6 @@ public class HazardRegistry { HazardSystem.register(ancient_scrap, makeData(RADIATION, 150F)); HazardSystem.register(block_corium, makeData(RADIATION, 150F)); HazardSystem.register(block_corium_cobble, makeData(RADIATION, 150F)); - HazardSystem.register(sand_gold198, makeData(RADIATION, au198 * block * powder_mult)); HazardSystem.register(new ItemStack(ModBlocks.sellafield, 1, 0), makeData(RADIATION, 0.5F)); HazardSystem.register(new ItemStack(ModBlocks.sellafield, 1, 1), makeData(RADIATION, 1F)); diff --git a/src/main/java/com/hbm/inventory/container/ContainerMachineArcFurnaceLarge.java b/src/main/java/com/hbm/inventory/container/ContainerMachineArcFurnaceLarge.java index a3be25b0c..07f7b931b 100644 --- a/src/main/java/com/hbm/inventory/container/ContainerMachineArcFurnaceLarge.java +++ b/src/main/java/com/hbm/inventory/container/ContainerMachineArcFurnaceLarge.java @@ -1,6 +1,8 @@ package com.hbm.inventory.container; import com.hbm.inventory.SlotNonRetarded; +import com.hbm.inventory.recipes.ArcFurnaceRecipes; +import com.hbm.inventory.recipes.ArcFurnaceRecipes.ArcFurnaceRecipe; import com.hbm.items.ModItems; import com.hbm.items.machine.ItemMachineUpgrade; import com.hbm.tileentity.machine.TileEntityMachineArcFurnaceLarge; @@ -87,10 +89,21 @@ public class ContainerMachineArcFurnaceLarge extends Container { public SlotArcFurnace(IInventory inventory, int id, int x, int y) { super(inventory, id, x, y); } + + @Override + public boolean isItemValid(ItemStack stack) { + TileEntityMachineArcFurnaceLarge furnace = (TileEntityMachineArcFurnaceLarge) this.inventory; + if(furnace.liquidMode) return true; + ArcFurnaceRecipe recipe = ArcFurnaceRecipes.getOutput(stack, furnace.liquidMode); + if(recipe != null && recipe.solidOutput != null) { + return recipe.solidOutput.stackSize * stack.stackSize <= recipe.solidOutput.getMaxStackSize() && stack.stackSize <= TileEntityMachineArcFurnaceLarge.MAX_INPUT_STACK_SIZE; + } + return false; + } @Override public int getSlotStackLimit() { - return this.getHasStack() ? this.getStack().stackSize : 1; + return this.getHasStack() ? TileEntityMachineArcFurnaceLarge.MAX_INPUT_STACK_SIZE : 1; } } } diff --git a/src/main/java/com/hbm/items/machine/ItemMold.java b/src/main/java/com/hbm/items/machine/ItemMold.java index 0af9d253e..81b8fb0b8 100644 --- a/src/main/java/com/hbm/items/machine/ItemMold.java +++ b/src/main/java/com/hbm/items/machine/ItemMold.java @@ -45,7 +45,7 @@ public class ItemMold extends Item { registerMold(new MoldShape( 1, S, "billet", MaterialShapes.BILLET)); registerMold(new MoldShape( 2, S, "ingot", MaterialShapes.INGOT)); registerMold(new MoldShape( 3, S, "plate", MaterialShapes.PLATE)); - registerMold(new MoldShape( 4, S, "wires", MaterialShapes.WIRE, 8)); + registerMold(new MoldShape( 4, S, "wire", MaterialShapes.WIRE, 8)); registerMold(new MoldShape( 19, S, "plate_cast", MaterialShapes.CASTPLATE)); registerMold(new MoldShape( 20, S, "wire_dense", MaterialShapes.DENSEWIRE)); diff --git a/src/main/java/com/hbm/main/CraftingManager.java b/src/main/java/com/hbm/main/CraftingManager.java index 1652e12a5..c50aa9f5a 100644 --- a/src/main/java/com/hbm/main/CraftingManager.java +++ b/src/main/java/com/hbm/main/CraftingManager.java @@ -413,6 +413,8 @@ public class CraftingManager { addRecipeAuto(new ItemStack(ModBlocks.concrete_colored_ext, 6, EnumConcreteType.PURPLE.ordinal()), new Object[] { "CCC", "1 2", "CCC", 'C', ModBlocks.concrete_smooth, '1', KEY_PURPLE, '2', KEY_PURPLE }); addRecipeAuto(new ItemStack(ModBlocks.concrete_colored_ext, 6, EnumConcreteType.PINK.ordinal()), new Object[] { "CCC", "1 2", "CCC", 'C', ModBlocks.concrete_smooth, '1', KEY_PINK, '2', KEY_RED }); addRecipeAuto(new ItemStack(ModBlocks.concrete_colored_ext, 6, EnumConcreteType.HAZARD.ordinal()), new Object[] { "CCC", "1 2", "CCC", 'C', ModBlocks.concrete_smooth, '1', KEY_YELLOW, '2', KEY_BLACK }); + addRecipeAuto(new ItemStack(ModBlocks.concrete_colored_ext, 6, EnumConcreteType.SAND.ordinal()), new Object[] { "CCC", "1 2", "CCC", 'C', ModBlocks.concrete_smooth, '1', KEY_YELLOW, '2', KEY_GRAY }); + addRecipeAuto(new ItemStack(ModBlocks.concrete_colored_ext, 6, EnumConcreteType.BRONZE.ordinal()), new Object[] { "CCC", "1 2", "CCC", 'C', ModBlocks.concrete_smooth, '1', KEY_ORANGE, '2', KEY_BROWN }); addRecipeAuto(new ItemStack(ModBlocks.gneiss_tile, 4), new Object[] { "CC", "CC", 'C', ModBlocks.stone_gneiss }); addRecipeAuto(new ItemStack(ModBlocks.gneiss_brick, 4), new Object[] { "CC", "CC", 'C', ModBlocks.gneiss_tile }); diff --git a/src/main/java/com/hbm/main/MainRegistry.java b/src/main/java/com/hbm/main/MainRegistry.java index de8468791..23a24261c 100644 --- a/src/main/java/com/hbm/main/MainRegistry.java +++ b/src/main/java/com/hbm/main/MainRegistry.java @@ -1330,6 +1330,8 @@ public class MainRegistry { ignoreMappings.add("hbm:tile.machine_generator"); ignoreMappings.add("hbm:item.v1"); ignoreMappings.add("hbm:item.arc_electrode_desh"); + ignoreMappings.add("hbm:tile.sand_gold"); + ignoreMappings.add("hbm:tile.sand_gold198"); /// REMAP /// remapItems.put("hbm:item.gadget_explosive8", ModItems.early_explosive_lenses); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineArcFurnaceLarge.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineArcFurnaceLarge.java index 5b07aa03a..f9b66932d 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineArcFurnaceLarge.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineArcFurnaceLarge.java @@ -71,7 +71,9 @@ public class TileEntityMachineArcFurnaceLarge extends TileEntityMachineBase impl public static final byte ELECTRODE_USED = 2; public static final byte ELECTRODE_DEPLETED = 3; - public static final int maxLiquid = MaterialShapes.BLOCK.q(24); + public static final int MAX_INPUT_STACK_SIZE = 16; + + public static final int maxLiquid = MaterialShapes.BLOCK.q(128); public List liquids = new ArrayList(); public TileEntityMachineArcFurnaceLarge() { @@ -127,7 +129,7 @@ public class TileEntityMachineArcFurnaceLarge extends TileEntityMachineBase impl this.process(); this.progress = 0; this.delay = (int) (120 / (upgrade * 0.5 + 1)); - PollutionHandler.incrementPollution(worldObj, xCoord, yCoord, zCoord, PollutionType.SOOT, 15F); + PollutionHandler.incrementPollution(worldObj, xCoord, yCoord, zCoord, PollutionType.SOOT, 10F); } } } @@ -280,7 +282,9 @@ public class TileEntityMachineArcFurnaceLarge extends TileEntityMachineBase impl if(recipe == null) continue; if(!liquidMode && recipe.solidOutput != null) { + int amount = slots[i].stackSize; slots[i] = recipe.solidOutput.copy(); + slots[i].stackSize *= amount; } if(liquidMode && recipe.fluidOutput != null) { @@ -330,17 +334,34 @@ public class TileEntityMachineArcFurnaceLarge extends TileEntityMachineBase impl @Override public boolean canInsertItem(int slot, ItemStack stack, int side) { - return this.isItemValidForSlot(slot, stack) && stack.stackSize <= 1 && this.lid > 0; + if(lid <= 0) return false; + if(slot < 3) return stack.getItem() == ModItems.arc_electrode; + if(slot > 4) { + ArcFurnaceRecipe recipe = ArcFurnaceRecipes.getOutput(stack, this.liquidMode); + if(recipe == null) return false; + if(liquidMode) { + return recipe.fluidOutput != null; + } else { + if(recipe.solidOutput == null) return false; + int sta = slots[slot] != null ? slots[slot].stackSize : 0; + sta += stack.stackSize; + return sta * recipe.solidOutput.stackSize <= recipe.solidOutput.getMaxStackSize() && sta <= MAX_INPUT_STACK_SIZE; + } + } + return false; } @Override public boolean isItemValidForSlot(int slot, ItemStack stack) { if(slot < 3) return stack.getItem() == ModItems.arc_electrode; if(slot > 4) { - if(slots[slot] != null) return false; ArcFurnaceRecipe recipe = ArcFurnaceRecipes.getOutput(stack, this.liquidMode); if(recipe == null) return false; - return liquidMode ? recipe.fluidOutput != null : recipe.solidOutput != null; + if(liquidMode) { + return recipe.fluidOutput != null; + } else { + return recipe.solidOutput != null; + } } return false; } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineElectricFurnace.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineElectricFurnace.java index 4636da4e2..87b0a777f 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineElectricFurnace.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineElectricFurnace.java @@ -4,6 +4,8 @@ import java.util.List; import com.hbm.blocks.ModBlocks; import com.hbm.blocks.machine.MachineElectricFurnace; +import com.hbm.handler.pollution.PollutionHandler; +import com.hbm.handler.pollution.PollutionHandler.PollutionType; import com.hbm.inventory.UpgradeManager; import com.hbm.inventory.container.ContainerElectricFurnace; import com.hbm.inventory.gui.GUIMachineElectricFurnace; @@ -195,6 +197,8 @@ public class TileEntityMachineElectricFurnace extends TileEntityMachineBase impl progress++; power -= consumption; + + if(worldObj.getTotalWorldTime() % 20 == 0) PollutionHandler.incrementPollution(worldObj, xCoord, yCoord, zCoord, PollutionType.SOOT, PollutionHandler.SOOT_PER_SECOND); if(this.progress >= maxProgress) { this.progress = 0; diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMicrowave.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMicrowave.java index 781adaa14..d6bf0e065 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMicrowave.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMicrowave.java @@ -17,6 +17,7 @@ import li.cil.oc.api.network.SimpleComponent; import net.minecraft.client.gui.GuiScreen; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Container; +import net.minecraft.item.ItemFood; import net.minecraft.item.ItemStack; import net.minecraft.item.crafting.FurnaceRecipes; import net.minecraft.nbt.NBTTagCompound; @@ -131,11 +132,9 @@ public class TileEntityMicrowave extends TileEntityMachineBase implements IEnerg ItemStack stack = FurnaceRecipes.smelting().getSmeltingResult(slots[0]); - if(slots[1] == null) - return true; - - if(!stack.isItemEqual(slots[1])) - return false; + if(!(slots[0].getItem() instanceof ItemFood) && !(stack.getItem() instanceof ItemFood)) return false; + if(slots[1] == null) return true; + if(!stack.isItemEqual(slots[1])) return false; return stack.stackSize + slots[1].stackSize <= stack.getMaxStackSize(); } diff --git a/src/main/resources/assets/hbm/lang/de_DE.lang b/src/main/resources/assets/hbm/lang/de_DE.lang index 2aa6249d7..0bef59215 100644 --- a/src/main/resources/assets/hbm/lang/de_DE.lang +++ b/src/main/resources/assets/hbm/lang/de_DE.lang @@ -3864,12 +3864,14 @@ tile.concrete_colored.red.name=Roter Beton tile.concrete_colored.silver.name=Hellgrauer Beton tile.concrete_colored.white.name=Weißer Beton tile.concrete_colored.yellow.name=Gelber Beton +tile.concrete_colored_ext.bronze.name=Builder's Choice Concrete - Bronzeplatten tile.concrete_colored_ext.hazard.name=Builder's Choice Concrete - Gefahrenstreifen tile.concrete_colored_ext.indigo.name=Builder's Choice Concrete - Tiefes Indigo tile.concrete_colored_ext.machine.name=Builder's Choice Concrete - Industrieller Ton tile.concrete_colored_ext.machine_stripe.name=Builder's Choice Concrete - Industrieller Streifen tile.concrete_colored_ext.pink.name=Builder's Choice Concrete - Männliches Pink tile.concrete_colored_ext.purple.name=Builder's Choice Concrete - Mysteriöses Lila +tile.concrete_colored_ext.sand.name=Builder's Choice Concrete - Wüstensturm tile.concrete_pillar.name=Stahlbetonsäule tile.concrete_slab.asphalt.name=Asphaltstufe tile.concrete_slab.concrete.name=Betonfliesenstufe diff --git a/src/main/resources/assets/hbm/lang/en_US.lang b/src/main/resources/assets/hbm/lang/en_US.lang index 6a33ffc9c..53e2d89c3 100644 --- a/src/main/resources/assets/hbm/lang/en_US.lang +++ b/src/main/resources/assets/hbm/lang/en_US.lang @@ -4915,12 +4915,14 @@ tile.concrete_colored.red.name=Red Concrete tile.concrete_colored.silver.name=Light Gray Concrete tile.concrete_colored.white.name=White Concrete tile.concrete_colored.yellow.name=Yellow Concrete +tile.concrete_colored_ext.bronze.name=Builder's Choice Concrete - Bronze Plating tile.concrete_colored_ext.hazard.name=Builder's Choice Concrete - Hazard Stripe tile.concrete_colored_ext.indigo.name=Builder's Choice Concrete - Deep Indigo tile.concrete_colored_ext.machine.name=Builder's Choice Concrete - Industrial Tinge tile.concrete_colored_ext.machine_stripe.name=Builder's Choice Concrete - Industrial Stripe tile.concrete_colored_ext.pink.name=Builder's Choice Concrete - Manly Pink tile.concrete_colored_ext.purple.name=Builder's Choice Concrete - Mysterious Purple +tile.concrete_colored_ext.sand.name=Builder's Choice Concrete - Desert Storm tile.concrete_pillar.name=Rebar Reinforced Concrete Pillar tile.concrete_slab.asphalt.name=Asphalt Slab tile.concrete_slab.concrete.name=Concrete Tile Slab diff --git a/src/main/resources/assets/hbm/textures/blocks/concrete_colored_ext.bronze.png b/src/main/resources/assets/hbm/textures/blocks/concrete_colored_ext.bronze.png new file mode 100644 index 0000000000000000000000000000000000000000..46677bde3534e5f335a3e375306300e438624986 GIT binary patch literal 620 zcmV-y0+aoTP)3PxsSmyCZ$x4-g)eu89_?WwhwA8v@ualAVR4H3z)-j z2i26(l-c{hvT(hhm9A@Hnxi>0raf~| z%mWowJc7Ls5WyWvt+Z*py}goBVm~@ZAGGHyni9Ddaw+K6I$P_Q2O^15D*fmx2++f?5%U#cGk-U57>{!Fb5INx)XgGs`->FKs6~Z>&h_a z=o3dU4*~&ApV%J3?Xi(_VL#fFSWugB1`;4C5fM*mPJ&!29zmZ*E|vSX<0yeJ+|f2B z_FOOzL{H2>(43iOgb2&B0)nK>-WvD)tXG$HVc2O{O6fDO?Pz#FD&-VN6n`pxd3i-s zru9K?V=}HE3^V?`Uq3xhIfDoy=h45{f3!ZR%R<0sxc>obH=H3**e+lI0000PjjcYhN|%S`Gu%Za$(^xhCrRFz1^nPMyq!j6`Q6CimV&dcP2PGHG3{^!%&|F5b82};1u+UY67}I#D z0>E(`4eJG!WQib$DG66ZKKK>^pAZ2jHubxntgtS}SZD^-(c1N-m>7gzw{E zzg#i*rHjgJC_)So>Ak`8$?bX_JXMG>VD6M$sP{VnB`0c~`fMBK4%_w79>7Ejb~gu*vFtyZstKwIZ#bq!>nMW*P@SouLuR+uQnRC8sr=Xy6|{Aujg5 SAonf+0000J4grw66p;eQKbRZ=2Tuhr-i+A_nopaAQ z_g*cN$tZy3{tEjghiu;{hGFo(nh(C=mK@gO;{bF4*tU&#uuHw>F?4x|rSddH?bFDr z!=rO=kVlfbDM=&}l*?thZujmY8x{6z9soT(J**{jq>E!6lB&bg#CwD=;0Pk7 z$bN~IU!GF+nn%QxY+gyD>w3Fsx){oQeEu!n-Q5Tw&~=@Gja48d(lVKh8XO!%2!RlS zt*xy#!QWZ-h(^zyS0Vos-93CFhYPE>RAsCi3GP=1tMONh$fLol02yp5w%%#CRsIK0iXli{dMzH z>Xu~@F(p?Ye&EuB7kD)f*L6FVqBi$xsg8nw%d#vYnry%8H4j(02qDh=)d5z`mr!-u zVOf@iG$q?Bv*eejLIT(ApsEf}`rmaF^!E1h%-(2+Xjv9{Qn;>*t6bdQF6DBWSS$ur zhqYvmMnmBHe#e5QX*|F1kBeApg-L0ot+)-8+&kg jcD#-g%C4I-!~lN)zmEa*-1#;@00000NkvXXu0mjfmoPcS diff --git a/src/main/resources/assets/hbm/textures/blocks/reactor_computer.png b/src/main/resources/assets/hbm/textures/blocks/reactor_computer.png deleted file mode 100644 index b0bf0b1fa3c84d8d6f5d8656c90f0cf9520b83b7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 620 zcmV-y0+aoTP)q{q7ZSY zA5bHIg{as7e(;))<&j-hBH704Gm6j>E~>(^-L(ly9A9^!Niw6rz_G2-dc-tp=jq z;n%k=X_{tYIY6l?j@`L{KS&8YL+VP(LSkDD`kq0z8dPc}g51@9JMysAbbSYa_~A?b zt!(n=_YW$y62sN!{Jp(_KSPxRUCH#5D@0L*)*7ufNs?r?TaB@Ue9dyaDj^V35_pE*(&iXA8jT9>g0*doF$WIv zVF)3RH_oA5iAht+sMqQ>m54ilW^?yE5Ct+V)u8T8n5lo3>uBb9VMPqkP&EM+A`UfB8JO_3k5{=iyju z>GgVS?Cwr(^hg{&E^95;+U%IR-R=?Pyg(^cIPEYD3&8)4&HzXi1vddoQB7Cur0Ir6QD)K@kcrg-(SCUDBef&O)Uw zBDgrE)S(o~n4z5tg>D91y5t`y7$^-!$YN=hUJ#7u=Hw=!_jHH}{%GFugOB(5-g92D zva({0F$f{>JP*(Fa9tN61lC#x5<(D$Awq~-GuQWh78e%*NF)+Cj&p0d)9EluwOS3g z+wBs^F$)U|j3W7;bG=>%z|~q4MG<#N9=*@;d;c3z6p=YxrM_EYd?!o0P^MO^ad~-3 z7>2k~O48{x-ENo1A70UDXo3Jd1yK~CH?lMoWDZxU1R$>|CMPG6Qj!2L#-O$4=bNtp zI3JI>I5@@_gHjN@Epf8>8KppPWC_D?c#hj@wJ^poAbB_^VS1W;KHm>8{hYC4k-fb= z+J!O_kY{ITtWV0e5JK>G^C>|9T5HC}#)zVbUayDe zd1MY(QL4XWt;HDAe}z;k#mvkM&1RE}gJYJ9>-;c=?d@%*_h0fSe}vdt@+8k$2vqzd{FJK@C*b@xK zFdRV?w{Waj*$n{|qQKApKPfq%&pyvHB0`Lj7$YGBL-C z>rmCE_67Qc9^t?pfrV zIUMc??%py0nCJN^?R``awz--aBGC7Jowd8OEDJejLI~uXs}xmT0orAO=~3j4{tEiw z!PZSx`TF`-LeAS%Koz!UGh02_OL%*O)9FMh1$RePS(c??@bdCt;x;l>#r?U2d(qv% zuImV0*VV_AU>v7Lt18?`RG(CploDpvn)vzS12d~DykF%l%nZHd+hVg!3(q$slA{cc#R^Y_SORrf`n96 z<-mg=Ayrj5^oqnSH|`;hH)|)}?IDd7OK|9S8EIzc&o|$!oSd9^V+0ylh}Ier z!F$gJBEoz=M?`u)ou(;=hlc_bF5aYR})@>F3S>Y zEzUWfo}OOqc&+a_TOAR{G2`(Vfcbom&a#Z6C~(d(nM~N*+vA7&-Q&MlEP#kmLYB)V z!{HEsEX&XU#+Ys?)>@1h&fRfWz&VFf3Z*>O+CGJKd4I4 zG)O$Uo^z-v`r$QXZYZ?7o#?4u8E)|xq#qR$5rLH&Fyy6aU3zm5JDh?fcG9_45~^FV+^m?3u8=!`M&SDTrL1uYjMssm*;ur zuXsEj_+?p0DFKjDV%xSqFNg@vxd!v~;rV=iFoqCV*R`BujGRsrU`&y7z*p*a3IE5EagyD z>^B7f+qN+b1H&+|-|vf(+A@I6Un>ly-IcR!!cUzzI2>%1%rBJw%JTu^`i&o>s9W#N9m7obk6Dj|gC@63w^|Mubs X<(S;PGL2vX00000NkvXXu0mjfp0vL5 diff --git a/src/main/resources/assets/hbm/textures/blocks/reactor_conductor_top_alt.png b/src/main/resources/assets/hbm/textures/blocks/reactor_conductor_top_alt.png deleted file mode 100644 index e0bf9f0b9eb8dc8091f543e4af0cd1227e37be34..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 536 zcmV+z0_XjSP)WyT5QV=Hsn~(#pEz+Y;GJ(#AnTr}H|VlA>KP1pXJirY z6-y#$TI6(Lh=|anK;Lpm&dhrsC@(KB>YPJFD9e(vEV0%iBB&~ZM1;0&5s^{NR#nAr zw*#Ok3XCzM$Ct~6uXH#ZuptCeN&uvk===W52cO9{O@sHIloF@Y>7Nq;CX)%9%?5zB zZL#zDob`H5N{Qp~$iu?}F-D4_Kt$-eZj{CKdS$g*0WhD>u>j7w9E$foHyCnBDPfF3 zRq@`BEp%O%8(3>`&Y`OOc>9fWP?jJ9KeykAF;Z0(=kpm6p=lcIY&K)F*$`vo_4Sp- zVu6TI)v((wNhxtSG#PK#b!@j=0II6O4n6^5jCk*{)^fd)>GVCQD#jSBwPOqC^Ep$P zPN#V92_X;y?Dq{J+${8cPmB>`40T;|cXxNAuvjd3dU`@cI3ACz*J}WNEx)6xTrL-i zqQJ%oKnNjIn9XK43vJuxl?Dm}fxN1<^nH&pCf8II`~Lo(DNH64y!WVTMkgXUi{VaP z*BE1P&S96!CC|^#q?CAkeEe&|5bS5VzrV+->d3#2AS&5<q&u4PZi$?%!ZTZeQF9@H{ zC%4-TKaL{+UDx59!+Vd2kaNa+4?qZEF+5EZkH-T5ug$~Zz%UF<)5N;I-!A~;IO3cm z=S)iJXQB2JLMTHa1lqO*pznJCVvHDLNGTOXg&^mQ+R^I!9`AkW#~3&23c)~^~i zAf-gpG>e{dZc9-6Re9@F>S2x9uR)rEs#@0uui*c-ubws5`p??8%GkCo)>^E!<$Ipz zg&I{<-^9X#h#(@o-){g;rxWl?LnBsYdrsS^!Ap}03PuYWr;Ol#@7no9F zzuy-%^`X`G;6;S4>$uz&{%Zxx{Ohb;#QI z;IQDEj6GPkW_k}xcV@B!g05DnrurdTEEaq^oj^oz&cQi{q9{N_U}nf6A{>uL5K)%1 zP19gLpCg2jy#xSbjK(2^Oz?0xV6|Go4#NNdSg+TJF`}v})OC%%?^Sd*o1yP}0KoNn zMbk9c?RNhz5k+e)-rxV=>FEc$uEQ`4czgT6%gZmcZHo{BUSEIX`S~Z>w#7J(AfitJ zQ3rr=98p!3Vku2%m} zn__0xF`KkLB0`K2%&ZfLF={M06*JNdAuuznwfYe=Yd-{wK;}S5%#5NaGE79;WM;-V zj-L)hAhqSaM+iZ22mzPNMe$@Z(Z(C;J~Qj%oXc=omRU}=mziP3YS(pmeEbF?LI?rV z=@j?(-(if=^?i7_%j^SyWoGR6du%ovd_CLkHp8<2sbf0~1D4CBCchG#bJ?%$y;lwq Z;V*Ll6I^3;$g2PV002ovPDHLkV1ff7(CGjG diff --git a/src/main/resources/assets/hbm/textures/blocks/reactor_control_top.png b/src/main/resources/assets/hbm/textures/blocks/reactor_control_top.png deleted file mode 100644 index bb7d99c144223c0ac04b15b6a11a64c8111ffebe..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 609 zcmV-n0-pVeP)coPj{Zg)6~C@@SIu%Y}3$?cCKpb*oO*Iro-0J3Gtf^EpBYwAN^?QA#0%Aj>lH z5JE7WP7y*B)?~F>rQL3mBuSwNP%4#No+L?u@a5%&`}=$3YPAAjI2_`69#Tpwl?vnW z7%3%6DXg`;y}bbtMG@6%m8Yktk4th!tu@!zf9Q0ssMTtCo=30uK&NwswH6@+mzM*& z-CK+?#Bux~VOx(ehGw$~fKtlgIF5;;$l)x@oE%4BjN$nBfc1Kf)*9dUX}5nOr6f&L z%H=YLhu=SLmG0PvU^1C7pU;V+2x~2`udhs}Qvj^B%w{uYvl&V$eBa*~ohM2uE-ro( z1bsZuW4Tpc(zeT*>x+}#Zcf6Z>iVo0NmXCB?$VCAWc(bnx_AG;CUWNk~kbi5mHKr zl~NlC`MmG#?Qwegh4p$(9LHE|IXU@C7=~n7hVT2dTKmLt>!C>GPKX1@l7ru5Fh6TcR^T7N2#EOH_00000NkvXXu0mjfY$y|C diff --git a/src/main/resources/assets/hbm/textures/blocks/reactor_ejector.png b/src/main/resources/assets/hbm/textures/blocks/reactor_ejector.png deleted file mode 100644 index 7a48733893dac9438be5f9a5691b53a74e32ff45..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 655 zcmV;A0&x9_P)2G+$|kVRauunVhle%)5zq6i zZj7<#-rgSle&5>K^E`qepe#$Y)`$r0cALp$0)U7RMG;CVT-Rk`VF3{#2m+K+Xn-h+ za9!7e#^W&$4-e#d4uJ3b^m;vBUS6oG$}$VXut|_*8DSWbB#8w9oDGKneBRjL^70aZ zBuQ9XTLU1^b6jH#bzM`IC3&9HYPE>tn6u%KRBKYL`TqEbF$QA{v)Rn{#BrR4K^(_C zKR?@-MT9R~Th^Wj)^&}D*!!X=8U~Zegr}z`j4}MUxd9+eQ%0i^qtS@jYzDy3`+JNr z3fI5+@6UteEaN^>xP{-Ec1 z{?31Ob%ikoS41$z;QKzO-L4IYqKKWH9eTYUT5BA~0pPUT#rJ(&*QG2=oTH+Eu*LCv? zbMbwjEXyd0f=}z~7JS_4kYyPnV(G7}tk7<^|1wxwTH@s7go}#{;yC8+?vCS5$0qJ} zyBK2-5tLGl$Kz%f{+%lLvte4ZySvNl>nrmn2SLEw+nX(Sd3m|Pou8lAN-2t>Ktu?` p&^BwHTq#9WRa8}l=XviI>NlRx{3ROr(YpWu002ovPDHLkV1f-=GY*OLqbFYJFsd;*Iq62|+S6oFzE*2&gJKXF>=7h)DJFJkNZ8ec$h_*mWJZ+l`!aA)3IlEC5W? zLj3Ec9)K7l&N-H4DIJwJa?Y3?L*Ms=5K2A9$QG4A+qOGG zN{Oavs+w7=1Ptr;wy6Mk@5`O4B3qKB092DVZ24lOd7gJ<^K7xMzif4Hiig7i?>*l8 za$YY_&bf%JJF6_HDyqsb3;-ODN8p}@MQj{9%X)EAO6A-%P07DxF2XpDWe%!}*i?;R z$Di?-eeQB^LN3!fjKyCH7zpIw>8iPPI@Hyl+3W%p~3x3LoZ10-YIIIV0o QC;$Ke07*qoM6N<$f=f}i1poj5 diff --git a/src/main/resources/assets/hbm/textures/blocks/reactor_element_side.png b/src/main/resources/assets/hbm/textures/blocks/reactor_element_side.png deleted file mode 100644 index 8ebff9842dc75d635e6d1f55a65ac824533811f7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 485 zcmVez=5QV?-?g?88KOjYrXx8+hix6E>EY-AA;RFxbe!sOQk5eaH`o{3G%J+HcyVX-b-= zhzPZ^-P3ocIOk}_j%74shjVT*K(&Zd2xM6nHf&v0@?{hPNBc)O_h<6?x7AASoTKx; zb6cPa&8@4yPS4kD^HnWA+-l|FWf%B9@!JKp<=y_XsRF7>EqAbYwhO-d{|LTI>&s5@ zSX;h*<>o4$Pc9sk*SFJo3BHTm51jyun(xy7`l`6%s*1$VVqJf@&Uic~Ns>bS)O3FE(RBsQ34mGxT?x@GQ}o7q4&KPWGlFG>(}-( b9|+z68@{_(o=YN_00000NkvXXu0mjf`v2PH diff --git a/src/main/resources/assets/hbm/textures/blocks/reactor_element_top.png b/src/main/resources/assets/hbm/textures/blocks/reactor_element_top.png deleted file mode 100644 index cb37aec67b202380c84f62415264e4b4d7ad52ca..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 526 zcmV+p0`dKcP)TI5xbSD`8^=JPq;`|b#FD8_5swi641$z+nmz4u(N*Y4T* zG;cq;R858VzKf=6)=Ew5GK Q?*IS*07*qoM6N<$f&tk}@P)Xiq5QZQB1)3kCw(71@rCy>7#EP?U01k)53iS+Jp&J$~ z5UD~E+i@3sb{pxNjXfjJyzjg-7Msl`@E^;vEZvPU>0B-7qNwU)9hQA#1DWImr`ttHR%dkml~OP-#d65{1@NvHthI5L~fXxkR=eTo-F zfd=Thj-n_y9*^{WKWW7ngS9sK$K#Rr_jdsLzDFBl2qEB{qwjkjA0P4FBc((LLDzL? zt#Qr)aJ$_SJ0ZlK!D6xC>+36_SZfL4S6d+jT5CcG6E?#zAdN9xuUB4QUopnebsYfb z^O@7>#OZY6cDqeliVXU`N3T{Zlu~%_(|7=!bDYm-0N&o-7={5M1OV&xI*F+dhr?vn zahzJ~R7`6<5qH1eryLz;8bykUWm)p^@xgpP$2phKW1{!|4iD_U%V?U05W;;AqRnPAx~?OHz&MU5r4T|e zj^pHwl#-X17rghs463SPyWO(i?^!GsD5d!R{>ECHn8dAAN^!Yd?tkI$RwZTsElo6~ z6m?xEziAq(sv^&G#BR3>N-2h6z*KpWV`hrMET_GL<0Sk6? z(_PwBQ4+`YT~u{jdS_$LXnf}A%&}N37M}k^9LM3VwGQWeKIi@YJ>)8mW0EAH?|YO| z7-P7-y=A-I0$_|G%QB>tL{Y@`^)<#Ak|f#J0J1FO=H@0$EXy)X1#r%Bb#+Bu*H~*q zJxx;-K+`m&Y0Bf{BXwOPgg|SJ)|$3$5kdfvBndx1KLMa^Ta?xs?>&9rlVusx=@ft{ zijY#$w(XfVUteE=oe*NrU^pD|`}@miG{QLtz~|>DbzP&iMhL-dHoFkI>$*LI?RLv} zJf^BDnx?@yN0wzgJUn2nWwlySmL&kY-7YX_+ZOTi^5UhGSZi6Y*UV-!oO1{v@ZQrj z&DqrN?{A);pM#j{?d>h>bTXMx*Y%|-PQqHta=ASE;IPxa@7ZiN7XW?VhgC``gD%$E zy>||cMNv=`1^4&&IOp)*Bc)`w+noUp1_QkJIhI(72f-c2YpDI@K0+gal=4hSAp}trad&rzwf4v$&vTxho>(rI42Q!&-xxy_ML6fsT4Ri%C<@B5 z-2a7BR|RF23JeY`ilPX4RaNA9PLd>u*Vk7srKIaRj4`BXinSJFOfbyBC)QfxI6nJO Z{{Vsw0V8uxWWxXe002ovPDHLkV1i}R2zUSh diff --git a/src/main/resources/assets/hbm/textures/blocks/reactor_inserter.png b/src/main/resources/assets/hbm/textures/blocks/reactor_inserter.png deleted file mode 100644 index 9bf758d19317784bbb7770b8ea8b69da80848b54..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 652 zcmV;70(1R|P)A$Tnb}Qt;~p`HrC_IAaYaBxBz~D(BOF*>b$TD; zu<|G#Z3q z=ta}%l)+$t)*65~j_Gtd%w{vnvh-wWnpO$&JSR<4`u)BaZC^bCU`7HQ{Qh43@Av!c z?(PDhwI)mVj%yyk5USy6wBq(_aq2{iXh7}o}ZsRnza_^ z9GvgHT?8p5&N-~L{+=-DJD>--zeRc0;A5^F8(cDwR`lz7g?V&MfVvotRs0GNIKyp}MEA{L7U&bjIpRuRWB zd7fj8p?Ud$841itP(L4%=Q-9|kH59GMXS|%C)n87;Oy*-o0}W5EaOi%UbFI-FMBAZ zu+}1kU^<;vv+&VX@HSyma(H;i%gYO^CMQY4>+7p8cXM;I(p_I)J0S$d7_7CVY3iG` mN-l(;EKAC=B#NT7f%*#>ybI%A?cLb`0000MV;s)Dk#sPPvm^A5bHeQ8k&KwkfUtd*})ieX61 zv(z{H5>@{oSu4!e!Z1KlK;MJ+@c0Oa186OBj4`B?7{`^@SJ0b{JelW;d4>=a#we;v zB<*&he_3RT%VptsTq#ONmVs`Xgmcg|iSYSA*CmWGEDKDN)V8-d&Ou!ZSy4dW&BO@0 z>%_oif#LB;+rm6YVwC2T;Bp#pPI36UCC{NOMN$Z$x}T(V6}{6Wg>ih75(49EL*IjQ zvKjA%)Q5uD_h@6pQEM&UE0huvfT3=fCfI)2(=fgSJu!m%^NkdOI6Th+)LOP7 z#JsOIuRMJ_qBU=ZTl8)xP51Xg(shvM7UzVZ2%bFTWSOQtjR5$Mdz6B{kCKBBBqVj6 z_@7K`WmIdgF)#0SG{0*=?rjTtyK^iHbY0^1&ZCqRje+wSnnuP?2~H0+Ste@)xVb^1 zthKP6PO#lxP2B8q#>?>T__|)V76k}Q#>McG~dnM9^=ynuM! zd!u>p_rCd!@H}stWf`N+e?B8)LiCKKM<-Q{F^n>#OFu(Y%^Q&6o|XI;Pen*9&HAx%@fqa%o8k|aS& zNuKA_+HGzEQ52D7831JfA;fIwZVpFdEX(5L!Sm*Tg6x+5DK@dzE zjzh=u5JGT!rA6<#i`KI_Ns<)Q^E_v5ZLP?|Fr<8be$LJ7LYk)Zp3k1@`1qJosZ`W0 z%OcNn`u#q(Z6l?`wrxs_i;L_90ZJ*-G%Y4umWAJJBBkW3oqd}3eBRu8M73H)YfZb= zLMb(a7)22P`}gnT_Iia}uhSupW4b-~{S@K>WR<`8{zQcn3!2BjDet@TV|H;2v) zq?D4T@6!c-177z1;sdR&t`h9Mk5cL%29wDIV+;Vp;gIF!Ww^c=11bmra2gHVgM*@( ya9wwLb#;X?hDxQvU@%~7YwLd|n)8{*oYUXe1~Z4S8WSb}0000N2bZe?^J zG%heMIczh2P5=M_B1uF+R5(wKlCe&OKoCXu#{eO~LIHuEKw?2<2|*KUTkB`yC)n6q z`3YA3jc2{j2@#{-O!m!N?wz?iyUu%m@ozwO{Pca_wr$sSB(_#nRTKqlS(YS1mSrwY z)4HzNz4{e!5Jyqu&?QN7xx@X-tHnIe(=?6aI1ED^$H*LAnx*!IVM=;SfQ!5S z!nSS9O@#%hfYL#rw*>UylrRjD^cN2K*%IeQ#(_wv0r;SmO;)}N-un;on?>!$q@2(I O0000N2bZe?^J zG%heMIczh2P5=M_H%UZ6R5(wKl22=cKoG_Ei>X!ARYB3aD3o9W@z7Ld(}PgRDc`z3 zckGgSD18i@$JFbwlN=XU%P z|p3wJw*L7{%`o2$@f~73Wd7hVL;Y1sM0m4MgPBD)7)F|4!Tj9N4 zS7+R~DD_(bSCEJjiihFjaxuFiq}%SF)$OvOw(kweTg{|HxF7==~(?Yhkt`B4GVstHvLKvVrP6@aLqgb#9YzUI= zTRJT6%|f=ua0DWWUi-HMSlsOg#u(N&b?9zf0oXl<^=O jdH@1)a>+?lptb%6F_r?Og!mAN00000NkvXXu0mjfFY>eZ diff --git a/src/main/resources/assets/hbm/textures/blocks/watz_hatch.png b/src/main/resources/assets/hbm/textures/blocks/watz_hatch.png deleted file mode 100644 index 546958c8989e8675205755f4c9104452be355ec9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 414 zcmV;P0b%}$P)N2bZe?^J zG%heMIczh2P5=M_97#k$R5(v%k;{sMKoCXqx%~m|-3p4v=SE%l0bvAjIShgi{Hq-M zc8r-Eu((xSuWoPVh39$y1fYfUjX4TVUuVAWUtMV+j(bx`4)!VpZjvMjmAMH}mSq@* zQ52#W3*p*b>G>tp|f)`WMqd0aqPxM~Ctk;bB3fl%laSJ!D{p0~i5E)=<#1^@s607*qo IM6N<$f*%y5!vFvP diff --git a/src/main/resources/assets/hbm/textures/blocks/white_cable.png b/src/main/resources/assets/hbm/textures/blocks/white_cable.png deleted file mode 100644 index c59723c58b18d1b6b2d04710c316f60a8ff17434..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 344 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdzmUKs7M+SzC{oH>NS%G}c0*}aI z1_r(ZAk3I`t&Du0a>Xs#->%zM=+$ud mdYNclT;Z}!lvI6;>1s;*b z3=Dh+L6~vJ#O${~L5ULAh?3y^w370~qEv>0#LT=By}Z;C1rt33JdXgi>&V1%sDzav4#C1_cmLn4HqqBLF&-C8w<^OVTW3KeKT6r%`i$3P9 z*9xD{iM&@GbG>!t*0w1^zh8*YdSr9{yPSzpugkvUOE$jrKew~-+Mflb$GJ*uz-Dg< hZ0Z%t`6ItfTz}p%Uw58a+(73tc)I$ztaD0e0ssPyY4QL7 diff --git a/src/main/resources/assets/hbm/textures/blocks/white_wire_coated.png b/src/main/resources/assets/hbm/textures/blocks/white_wire_coated.png deleted file mode 100644 index be4a5f12912290d41b9cce0fc3caa27d626566a8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 424 zcmV;Z0ayNsP)<{97<5HgbW?9;ba!ELWdLwtX>N2bZe?^J zG%heMIczh2P5=M_CP_p=R5(wSl1plZKoCXUm0+XsJMc4b0YUL0$s{BazuBF_19c#{ z2XP;{-PH#3A-s16MYmK}-MW_Ix~`^aj4{(RJo_s;az0(=n)iOC5qN%cg1S`~E6`9s;TmrKGlP$(%RAx~}`aZ`(GGqpW Date: Wed, 5 Jun 2024 21:05:41 +0200 Subject: [PATCH 22/69] balls (with reverb) --- changelog | 9 ++++++--- .../com/hbm/handler/pollution/PollutionHandler.java | 5 ++--- .../container/ContainerMachineArcFurnaceLarge.java | 5 +++-- .../machine/TileEntityMachineArcFurnaceLarge.java | 12 ++++++++---- 4 files changed, 19 insertions(+), 12 deletions(-) diff --git a/changelog b/changelog index 3e4a0766f..8d99f96de 100644 --- a/changelog +++ b/changelog @@ -21,11 +21,14 @@ * Microwaves are no longer electric furnace copies, instead their recipes are restricted to things considered food * Electric furnaces now cause minor pollution (does not connect to smoke stacks!) * Increased the arc furnace's liquid buffer to 128 blocks (from 24) -* The arc furnace can now accept up to *16* items per slot (effective amount is lower depending on the output in order to prevent >64 stacks) - * Due to technical limitations, clicking into a slot once will only place a single item, however after the item is present, the slot's capacity extends to 16 - * This is especially apparent when clicking items into slots by hand, and still noticeable when shift clicking by how the items spred out +* The arc furnace can now accepts more items depending on the speed upgrade, extending all the way to 16 with speed 3 (effective cap might be lower to prevent outputs from exceeding 64 items) + * Due to technical limitations, clicking into a slot once will only place a single item, however after the item is present, the slot's capacity extends to the upgraded size + * This is especially apparent when clicking items into slots by hand, and still noticeable when shift clicking by how the items spread out * This does not affect automation at all, items will stack up nicely without spreading out unnecessarily * Reduced arc furnace pollution from 15 to 10 soot per cycle +* The way soot spreads has been changed + * The spreading threshold has been decreased from 15 to 10 + * Every update, soot will decrease by regardless of whether it can spread or not (instead of only if it cannot spread) ## Fixed * Fixed dupe regarding conveyor grabbers diff --git a/src/main/java/com/hbm/handler/pollution/PollutionHandler.java b/src/main/java/com/hbm/handler/pollution/PollutionHandler.java index b4904425f..5627d1109 100644 --- a/src/main/java/com/hbm/handler/pollution/PollutionHandler.java +++ b/src/main/java/com/hbm/handler/pollution/PollutionHandler.java @@ -207,13 +207,12 @@ public class PollutionHandler { int P = PollutionType.POISON.ordinal(); /* CALCULATION */ - if(data.pollution[S] > 15) { + if(data.pollution[S] > 10) { pollutionForNeightbors[S] = (float) (data.pollution[S] * 0.05F); data.pollution[S] *= 0.8F; - } else { - data.pollution[S] *= 0.99F; } + data.pollution[S] *= 0.99F; data.pollution[H] *= 0.9995F; if(data.pollution[P] > 10) { diff --git a/src/main/java/com/hbm/inventory/container/ContainerMachineArcFurnaceLarge.java b/src/main/java/com/hbm/inventory/container/ContainerMachineArcFurnaceLarge.java index 07f7b931b..942f3cfcb 100644 --- a/src/main/java/com/hbm/inventory/container/ContainerMachineArcFurnaceLarge.java +++ b/src/main/java/com/hbm/inventory/container/ContainerMachineArcFurnaceLarge.java @@ -96,14 +96,15 @@ public class ContainerMachineArcFurnaceLarge extends Container { if(furnace.liquidMode) return true; ArcFurnaceRecipe recipe = ArcFurnaceRecipes.getOutput(stack, furnace.liquidMode); if(recipe != null && recipe.solidOutput != null) { - return recipe.solidOutput.stackSize * stack.stackSize <= recipe.solidOutput.getMaxStackSize() && stack.stackSize <= TileEntityMachineArcFurnaceLarge.MAX_INPUT_STACK_SIZE; + return recipe.solidOutput.stackSize * stack.stackSize <= recipe.solidOutput.getMaxStackSize() && stack.stackSize <= furnace.getMaxInputSize(); } return false; } @Override public int getSlotStackLimit() { - return this.getHasStack() ? TileEntityMachineArcFurnaceLarge.MAX_INPUT_STACK_SIZE : 1; + TileEntityMachineArcFurnaceLarge furnace = (TileEntityMachineArcFurnaceLarge) this.inventory; + return this.getHasStack() ? furnace.getMaxInputSize() : 1; } } } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineArcFurnaceLarge.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineArcFurnaceLarge.java index f9b66932d..4417371b0 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineArcFurnaceLarge.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineArcFurnaceLarge.java @@ -56,6 +56,7 @@ public class TileEntityMachineArcFurnaceLarge extends TileEntityMachineBase impl public boolean isProgressing; public boolean hasMaterial; public int delay; + public int upgrade; public float lid; public float prevLid; @@ -71,7 +72,9 @@ public class TileEntityMachineArcFurnaceLarge extends TileEntityMachineBase impl public static final byte ELECTRODE_USED = 2; public static final byte ELECTRODE_DEPLETED = 3; - public static final int MAX_INPUT_STACK_SIZE = 16; + public int getMaxInputSize() { + return upgrade == 0 ? 1 : upgrade == 1 ? 4 : upgrade == 2 ? 8 : 16; + } public static final int maxLiquid = MaterialShapes.BLOCK.q(128); public List liquids = new ArrayList(); @@ -97,6 +100,9 @@ public class TileEntityMachineArcFurnaceLarge extends TileEntityMachineBase impl @Override public void updateEntity() { + UpgradeManager.eval(slots, 4, 4); + this.upgrade = Math.min(UpgradeManager.getLevel(UpgradeType.SPEED), 3); + if(!worldObj.isRemote) { this.power = Library.chargeTEFromItems(slots, 3, power, maxPower); @@ -109,8 +115,6 @@ public class TileEntityMachineArcFurnaceLarge extends TileEntityMachineBase impl boolean ingredients = this.hasIngredients(); boolean electrodes = this.hasElectrodes(); - UpgradeManager.eval(slots, 4, 4); - int upgrade = Math.min(UpgradeManager.getLevel(UpgradeType.SPEED), 3); int consumption = (int) (1_000 * Math.pow(5, upgrade)); if(ingredients && electrodes && delay <= 0 && this.liquids.isEmpty()) { @@ -345,7 +349,7 @@ public class TileEntityMachineArcFurnaceLarge extends TileEntityMachineBase impl if(recipe.solidOutput == null) return false; int sta = slots[slot] != null ? slots[slot].stackSize : 0; sta += stack.stackSize; - return sta * recipe.solidOutput.stackSize <= recipe.solidOutput.getMaxStackSize() && sta <= MAX_INPUT_STACK_SIZE; + return sta * recipe.solidOutput.stackSize <= recipe.solidOutput.getMaxStackSize() && sta <= getMaxInputSize(); } } return false; From 7eb8900c13412be9850df3900a58c5c16c38ad5f Mon Sep 17 00:00:00 2001 From: George Paton Date: Thu, 6 Jun 2024 21:15:43 +1000 Subject: [PATCH 23/69] crouch-clicking is grate --- .../com/hbm/blocks/generic/BlockGrate.java | 60 +++++++++++++++++-- .../com/hbm/render/block/RenderGrate.java | 4 +- 2 files changed, 59 insertions(+), 5 deletions(-) diff --git a/src/main/java/com/hbm/blocks/generic/BlockGrate.java b/src/main/java/com/hbm/blocks/generic/BlockGrate.java index 735c8a89f..767aaed21 100644 --- a/src/main/java/com/hbm/blocks/generic/BlockGrate.java +++ b/src/main/java/com/hbm/blocks/generic/BlockGrate.java @@ -14,6 +14,7 @@ import net.minecraft.block.Block; import net.minecraft.block.material.Material; import net.minecraft.client.renderer.texture.IIconRegister; import net.minecraft.entity.Entity; +import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.item.EntityItem; import net.minecraft.entity.item.EntityXPOrb; import net.minecraft.entity.player.EntityPlayer; @@ -31,8 +32,6 @@ public class BlockGrate extends Block implements ITooltipProvider { public BlockGrate(Material material) { super(material); - - //this.maxY = 0.999D; } @Override @@ -65,16 +64,23 @@ public class BlockGrate extends Block implements ITooltipProvider { return false; } + public float getY(int meta) { + if(meta == 9) return -0.125F; + return meta * 0.125F; + } + @Override public void setBlockBoundsBasedOnState(IBlockAccess world, int x, int y, int z) { int meta = world.getBlockMetadata(x, y, z); - this.setBlockBounds(0F, meta * 0.125F, 0F, 1F, meta * 0.125F + 0.125F - (this == ModBlocks.steel_grate_wide ? 0.001F : 0), 1F); + float fy = getY(meta); + this.setBlockBounds(0F, fy, 0F, 1F, fy + 0.125F - (this == ModBlocks.steel_grate_wide ? 0.001F : 0), 1F); } @Override public AxisAlignedBB getCollisionBoundingBoxFromPool(World world, int x, int y, int z) { int meta = world.getBlockMetadata(x, y, z); - this.setBlockBounds(0F, meta * 0.125F, 0F, 1F, meta * 0.125F + 0.125F - (this == ModBlocks.steel_grate_wide ? 0.001F : 0), 1F); + float fy = getY(meta); + this.setBlockBounds(0F, fy, 0F, 1F, fy + 0.125F - (this == ModBlocks.steel_grate_wide ? 0.001F : 0), 1F); return AxisAlignedBB.getBoundingBox(x + this.minX, y + this.minY, z + this.minZ, x + this.maxX, y + this.maxY, z + this.maxZ); } @@ -96,6 +102,52 @@ public class BlockGrate extends Block implements ITooltipProvider { return (int)Math.floor(hY * 8D); } + @Override + public void onBlockPlacedBy(World world, int x, int y, int z, EntityLivingBase player, ItemStack itemStack) { + if(player.isSneaking()) { + int meta = world.getBlockMetadata(x, y, z); + + if(meta == 0) { + // Check that the block below can fit a grate above it + AxisAlignedBB bb = world.getBlock(x, y - 1, z).getCollisionBoundingBoxFromPool(world, x, y - 1, z); + if(bb == null || (int) ((bb.maxY - (y - 1)) * 100) < 90) { + world.setBlockMetadataWithNotify(x, y, z, 9, 3); + } + } else if(meta == 7) { + AxisAlignedBB bb = world.getBlock(x, y + 1, z).getCollisionBoundingBoxFromPool(world, x, y + 1, z); + if(bb == null || (int) ((bb.minY - (y + 1)) * 100) > 10) { + world.setBlockMetadataWithNotify(x, y, z, 8, 3); + } + } + } + } + + @Override + public void onNeighborBlockChange(World world, int x, int y, int z, Block neighborBlock) { + if(world.isRemote) return; + + int meta = world.getBlockMetadata(x, y, z); + + boolean breakIt = false; + + if(meta == 9) { + AxisAlignedBB bb = world.getBlock(x, y - 1, z).getCollisionBoundingBoxFromPool(world, x, y - 1, z); + if(bb != null && (int) ((bb.maxY - (y - 1)) * 100) >= 90) { + breakIt = true; + } + } else if(meta == 8) { + AxisAlignedBB bb = world.getBlock(x, y + 1, z).getCollisionBoundingBoxFromPool(world, x, y + 1, z); + if(bb != null && (int) ((bb.minY - (y + 1)) * 100) <= 10) { + breakIt = true; + } + } + + if(breakIt) { + dropBlockAsItem(world, x, y, z, 0, 0); + world.setBlockToAir(x, y, z); + } + } + @Override public void addCollisionBoxesToList(World world, int x, int y, int z, AxisAlignedBB entityBounding, List list, Entity entity) { if(this != ModBlocks.steel_grate_wide || !(entity instanceof EntityItem || entity instanceof EntityXPOrb)) { diff --git a/src/main/java/com/hbm/render/block/RenderGrate.java b/src/main/java/com/hbm/render/block/RenderGrate.java index cf8eb161a..f6858c584 100644 --- a/src/main/java/com/hbm/render/block/RenderGrate.java +++ b/src/main/java/com/hbm/render/block/RenderGrate.java @@ -22,7 +22,9 @@ public class RenderGrate implements ISimpleBlockRenderingHandler { tessellator.setBrightness(block.getMixedBrightnessForBlock(world, x, y, z)); tessellator.setColorOpaque_F(1, 1, 1); - renderer.setRenderBounds(0.0D, meta * 0.125D, 0D, 1D, meta * 0.125D + 0.125D, 1D); + float fy = ((BlockGrate)block).getY(meta); + + renderer.setRenderBounds(0.0D, fy, 0D, 1D, fy + 0.125D, 1D); renderer.renderStandardBlock(block, x, y, z); return true; } From ad45288d5f7004d36026f0fcd40c07184bacb4a6 Mon Sep 17 00:00:00 2001 From: Boblet Date: Thu, 6 Jun 2024 15:42:51 +0200 Subject: [PATCH 24/69] the soldering --- changelog | 9 ++++++- .../java/com/hbm/inventory/fluid/Fluids.java | 6 +++++ .../inventory/recipes/SolderingRecipes.java | 27 +++++++++++-------- .../inventory/recipes/anvil/AnvilRecipes.java | 1 + .../java/com/hbm/main/CraftingManager.java | 2 ++ .../machine/TileEntitySoyuzLauncher.java | 4 +-- .../storage/TileEntityMachineBattery.java | 2 +- 7 files changed, 36 insertions(+), 15 deletions(-) diff --git a/changelog b/changelog index 8d99f96de..2985459e7 100644 --- a/changelog +++ b/changelog @@ -21,7 +21,7 @@ * Microwaves are no longer electric furnace copies, instead their recipes are restricted to things considered food * Electric furnaces now cause minor pollution (does not connect to smoke stacks!) * Increased the arc furnace's liquid buffer to 128 blocks (from 24) -* The arc furnace can now accepts more items depending on the speed upgrade, extending all the way to 16 with speed 3 (effective cap might be lower to prevent outputs from exceeding 64 items) +* The arc furnace can now accept more items depending on the speed upgrade, extending all the way to 16 with speed 3 (effective cap might be lower to prevent outputs from exceeding 64 items) * Due to technical limitations, clicking into a slot once will only place a single item, however after the item is present, the slot's capacity extends to the upgraded size * This is especially apparent when clicking items into slots by hand, and still noticeable when shift clicking by how the items spread out * This does not affect automation at all, items will stack up nicely without spreading out unnecessarily @@ -29,6 +29,13 @@ * The way soot spreads has been changed * The spreading threshold has been decreased from 15 to 10 * Every update, soot will decrease by regardless of whether it can spread or not (instead of only if it cannot spread) +* Batteries no longer transmit in all directions, instead they transmit to their own power node (since they are also considered cables), eliminating any direction-based bias when transmitting +* The base fuel consumption for the soyuz in cargo mode is now only 5,000mB +* The soyuz' fuel consumption in cargo mode is now limited to its max capacity, meaning it can now fly infinitely far +* Less bullshit mode's simple crafting now extends to the soldering station, all circuits, upgrades and control units are substantially cheaper +* There is now an alternate recipe for standard capacitors, using one aluminium dust for two capacitors (i.e. 4.5 aluminium nuggets, vs the standard 1 niobium nugget) +* Shift-clicking steel grates onto the top/bottom of a block now shifts the grate into that block (if there is space, for example for cables or ducts). The effect is only visual, and the block still occupies the position above the block that the grate has been placed at + * This allows for making pipes with grates over them which are flush with the floor ## Fixed * Fixed dupe regarding conveyor grabbers diff --git a/src/main/java/com/hbm/inventory/fluid/Fluids.java b/src/main/java/com/hbm/inventory/fluid/Fluids.java index 0b3de1369..9a5fc151b 100644 --- a/src/main/java/com/hbm/inventory/fluid/Fluids.java +++ b/src/main/java/com/hbm/inventory/fluid/Fluids.java @@ -176,6 +176,9 @@ public class Fluids { public static FluidType FULLERENE; public static FluidType STELLAR_FLUX; + /* Lagacy names for compatibility purposes */ + @Deprecated public static FluidType ACID; //JAOPCA uses this, apparently + public static final HashBiMap renameMapping = HashBiMap.create(); public static List customFluids = new ArrayList(); @@ -547,6 +550,9 @@ public class Fluids { renameMapping.put("ACID", PEROXIDE); + // LEGACY + ACID = PEROXIDE; + for(FluidType custom : customFluids) metaOrder.add(custom); CHLORINE.addTraits(new FT_Toxin().addEntry(new ToxinDirectDamage(ModDamageSource.cloud, 2F, 20, HazardClass.GAS_LUNG, false))); diff --git a/src/main/java/com/hbm/inventory/recipes/SolderingRecipes.java b/src/main/java/com/hbm/inventory/recipes/SolderingRecipes.java index 6efc3eaae..a8a2ee289 100644 --- a/src/main/java/com/hbm/inventory/recipes/SolderingRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/SolderingRecipes.java @@ -10,6 +10,7 @@ import static com.hbm.inventory.OreDictManager.*; import com.google.gson.JsonElement; import com.google.gson.JsonObject; import com.google.gson.stream.JsonWriter; +import com.hbm.config.GeneralConfig; import com.hbm.inventory.FluidStack; import com.hbm.inventory.RecipesCommon.AStack; import com.hbm.inventory.RecipesCommon.ComparableStack; @@ -30,6 +31,8 @@ public class SolderingRecipes extends SerializableRecipe { @Override public void registerDefaults() { + boolean lbsm = GeneralConfig.enableLBSM && GeneralConfig.enableLBSMSimpleCrafting; + /* * CIRCUITS */ @@ -56,7 +59,7 @@ public class SolderingRecipes extends SerializableRecipe { recipes.add(new SolderingRecipe(new ItemStack(ModItems.circuit, 1, EnumCircuitType.ADVANCED.ordinal()), 300, 1_000, new FluidStack(Fluids.SULFURIC_ACID, 1_000), new AStack[] { - new ComparableStack(ModItems.circuit, 16, EnumCircuitType.CHIP), + new ComparableStack(ModItems.circuit, lbsm ? 4 : 16, EnumCircuitType.CHIP), new ComparableStack(ModItems.circuit, 4, EnumCircuitType.CAPACITOR)}, new AStack[] { new ComparableStack(ModItems.circuit, 8, EnumCircuitType.PCB), @@ -79,8 +82,8 @@ public class SolderingRecipes extends SerializableRecipe { new FluidStack(Fluids.SOLVENT, 1_000), new AStack[] { new ComparableStack(ModItems.circuit, 4, EnumCircuitType.CHIP_BISMOID), - new ComparableStack(ModItems.circuit, 16, EnumCircuitType.CHIP), - new ComparableStack(ModItems.circuit, 24, EnumCircuitType.CAPACITOR)}, + new ComparableStack(ModItems.circuit, lbsm ? 4 : 16, EnumCircuitType.CHIP), + new ComparableStack(ModItems.circuit, lbsm ? 8 : 24, EnumCircuitType.CAPACITOR)}, new AStack[] { new ComparableStack(ModItems.circuit, 12, EnumCircuitType.PCB), new OreDictStack(ANY_HARDPLASTIC.ingot(), 2)}, @@ -95,9 +98,9 @@ public class SolderingRecipes extends SerializableRecipe { // a very, very vague guess on what the recipes should be. testing still needed, upgrade requirements are likely to change. maybe inclusion of caesium? recipes.add(new SolderingRecipe(new ItemStack(ModItems.circuit, 1, EnumCircuitType.CONTROLLER.ordinal()), 400, 15_000, new AStack[] { - new ComparableStack(ModItems.circuit, 32, EnumCircuitType.CHIP), - new ComparableStack(ModItems.circuit, 32, EnumCircuitType.CAPACITOR), - new ComparableStack(ModItems.circuit, 16, EnumCircuitType.CAPACITOR_TANTALIUM)}, + new ComparableStack(ModItems.circuit, lbsm ? 8 : 32, EnumCircuitType.CHIP), + new ComparableStack(ModItems.circuit, lbsm ? 8 : 32, EnumCircuitType.CAPACITOR), + new ComparableStack(ModItems.circuit, lbsm ? 8 : 16, EnumCircuitType.CAPACITOR_TANTALIUM)}, new AStack[] { new ComparableStack(ModItems.circuit, 1, EnumCircuitType.CONTROLLER_CHASSIS), new ComparableStack(ModItems.upgrade_speed_1)}, @@ -106,9 +109,9 @@ public class SolderingRecipes extends SerializableRecipe { )); recipes.add(new SolderingRecipe(new ItemStack(ModItems.circuit, 1, EnumCircuitType.CONTROLLER_ADVANCED.ordinal()), 600, 25_000, new AStack[] { - new ComparableStack(ModItems.circuit, 16, EnumCircuitType.CHIP_BISMOID), - new ComparableStack(ModItems.circuit, 48, EnumCircuitType.CAPACITOR), - new ComparableStack(ModItems.circuit, 32, EnumCircuitType.CAPACITOR_TANTALIUM)}, + new ComparableStack(ModItems.circuit, lbsm ? 8 : 16, EnumCircuitType.CHIP_BISMOID), + new ComparableStack(ModItems.circuit, lbsm ? 16 : 48, EnumCircuitType.CAPACITOR), + new ComparableStack(ModItems.circuit, lbsm ? 8 : 32, EnumCircuitType.CAPACITOR_TANTALIUM)}, new AStack[] { new ComparableStack(ModItems.circuit, 1, EnumCircuitType.CONTROLLER_CHASSIS), new ComparableStack(ModItems.upgrade_speed_3)}, @@ -169,17 +172,19 @@ public class SolderingRecipes extends SerializableRecipe { } public static void addFirstUpgrade(Item lower, Item higher) { + boolean lbsm = GeneralConfig.enableLBSM && GeneralConfig.enableLBSMSimpleCrafting; recipes.add(new SolderingRecipe(new ItemStack(higher), 300, 10_000, - new AStack[] {new ComparableStack(ModItems.circuit, 8, EnumCircuitType.CHIP), new ComparableStack(ModItems.circuit, 4, EnumCircuitType.CAPACITOR)}, + new AStack[] {new ComparableStack(ModItems.circuit, lbsm ? 4 : 8, EnumCircuitType.CHIP), new ComparableStack(ModItems.circuit, lbsm ? 2 : 4, EnumCircuitType.CAPACITOR)}, new AStack[] {new ComparableStack(lower), new OreDictStack(ANY_PLASTIC.ingot(), 4)}, new AStack[] {} )); } public static void addSecondUpgrade(Item lower, Item higher) { + boolean lbsm = GeneralConfig.enableLBSM && GeneralConfig.enableLBSMSimpleCrafting; recipes.add(new SolderingRecipe(new ItemStack(higher), 400, 25_000, new FluidStack(Fluids.SOLVENT, 500), - new AStack[] {new ComparableStack(ModItems.circuit, 16, EnumCircuitType.CHIP), new ComparableStack(ModItems.circuit, 16, EnumCircuitType.CAPACITOR)}, + new AStack[] {new ComparableStack(ModItems.circuit, lbsm ? 6 : 16, EnumCircuitType.CHIP), new ComparableStack(ModItems.circuit, lbsm ? 4 : 16, EnumCircuitType.CAPACITOR)}, new AStack[] {new ComparableStack(lower), new OreDictStack(RUBBER.ingot(), 4)}, new AStack[] {} )); diff --git a/src/main/java/com/hbm/inventory/recipes/anvil/AnvilRecipes.java b/src/main/java/com/hbm/inventory/recipes/anvil/AnvilRecipes.java index 856779adf..0c1815206 100644 --- a/src/main/java/com/hbm/inventory/recipes/anvil/AnvilRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/anvil/AnvilRecipes.java @@ -148,6 +148,7 @@ public class AnvilRecipes { constructionRecipes.add(new AnvilConstructionRecipe(new OreDictStack(SA326.ingot()), new AnvilOutput(new ItemStack(ModItems.plate_schrabidium))).setTier(3)); constructionRecipes.add(new AnvilConstructionRecipe(new OreDictStack(CMB.ingot()), new AnvilOutput(new ItemStack(ModItems.plate_combine_steel))).setTier(3)); constructionRecipes.add(new AnvilConstructionRecipe(new OreDictStack(BIGMT.ingot()), new AnvilOutput(new ItemStack(ModItems.plate_saturnite))).setTier(3)); + constructionRecipes.add(new AnvilConstructionRecipe(new OreDictStack(DURA.ingot()), new AnvilOutput(new ItemStack(ModItems.plate_dura_steel))).setTier(3)); for(NTMMaterial mat : Mats.orderedList) { if(mat.shapes.contains(MaterialShapes.WIRE) && mat.shapes.contains(MaterialShapes.INGOT)) { diff --git a/src/main/java/com/hbm/main/CraftingManager.java b/src/main/java/com/hbm/main/CraftingManager.java index c50aa9f5a..553cc2b58 100644 --- a/src/main/java/com/hbm/main/CraftingManager.java +++ b/src/main/java/com/hbm/main/CraftingManager.java @@ -114,6 +114,8 @@ public class CraftingManager { addRecipeAuto(DictFrame.fromOne(ModItems.circuit, EnumCircuitType.VACUUM_TUBE), new Object[] { "G", "W", "I", 'G', KEY_ANYPANE, 'W', CARBON.wireFine(), 'I', ModItems.plate_polymer }); addRecipeAuto(DictFrame.fromOne(ModItems.circuit, EnumCircuitType.CAPACITOR), new Object[] { "I", "N", "W", 'I', ModItems.plate_polymer, 'N', NB.nugget(), 'W', AL.wireFine() }); addRecipeAuto(DictFrame.fromOne(ModItems.circuit, EnumCircuitType.CAPACITOR), new Object[] { "I", "N", "W", 'I', ModItems.plate_polymer, 'N', NB.nugget(), 'W', CU.wireFine() }); + addRecipeAuto(DictFrame.fromOne(ModItems.circuit, EnumCircuitType.CAPACITOR, 2), new Object[] { "IAI", "W W", 'I', ModItems.plate_polymer, 'A', AL.dust(), 'W', AL.wireFine() }); + addRecipeAuto(DictFrame.fromOne(ModItems.circuit, EnumCircuitType.CAPACITOR, 2), new Object[] { "IAI", "W W", 'I', ModItems.plate_polymer, 'A', AL.dust(), 'W', CU.wireFine() }); addRecipeAuto(DictFrame.fromOne(ModItems.circuit, EnumCircuitType.CAPACITOR_TANTALIUM), new Object[] { "I", "N", "W", 'I', ModItems.plate_polymer, 'N', TA.nugget(), 'W', AL.wireFine() }); addRecipeAuto(DictFrame.fromOne(ModItems.circuit, EnumCircuitType.CAPACITOR_TANTALIUM), new Object[] { "I", "N", "W", 'I', ModItems.plate_polymer, 'N', TA.nugget(), 'W', CU.wireFine() }); addRecipeAuto(DictFrame.fromOne(ModItems.circuit, EnumCircuitType.PCB), new Object[] { "I", "P", 'I', ModItems.plate_polymer, 'P', CU.plate() }); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntitySoyuzLauncher.java b/src/main/java/com/hbm/tileentity/machine/TileEntitySoyuzLauncher.java index d13fea7ff..bcba180ec 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntitySoyuzLauncher.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntitySoyuzLauncher.java @@ -269,9 +269,9 @@ public class TileEntitySoyuzLauncher extends TileEntityMachineBase implements IS public int getFuelRequired() { if(mode == 1) - return 20000 + getDist(); + return Math.min(5000 + getDist(), 128_000); - return 128000; + return 128_000; } public int getDist() { 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 84e40e47b..95c4c7191 100644 --- a/src/main/java/com/hbm/tileentity/machine/storage/TileEntityMachineBattery.java +++ b/src/main/java/com/hbm/tileentity/machine/storage/TileEntityMachineBattery.java @@ -184,7 +184,7 @@ public class TileEntityMachineBattery extends TileEntityMachineBase implements I power = Library.chargeItemsFromTE(slots, 1, power, getMaxPower()); if(mode == mode_output || mode == mode_buffer) { - for(ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) this.tryProvide(worldObj, xCoord + dir.offsetX, yCoord + dir.offsetY, zCoord + dir.offsetZ, dir); + this.tryProvide(worldObj, xCoord, yCoord, zCoord, ForgeDirection.UNKNOWN); } else { if(node != null && node.hasValidNet()) node.net.removeProvider(this); } From 0c26d45a71d7e6b5686e6731e42483393b1df596 Mon Sep 17 00:00:00 2001 From: George Paton Date: Fri, 7 Jun 2024 13:24:10 +1000 Subject: [PATCH 25/69] Fix sunk grate side rendering, and prevent sunk placements over air blocks --- src/main/java/com/hbm/blocks/generic/BlockGrate.java | 10 ++++++---- src/main/java/com/hbm/render/block/RenderGrate.java | 7 +++++++ 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/hbm/blocks/generic/BlockGrate.java b/src/main/java/com/hbm/blocks/generic/BlockGrate.java index 767aaed21..f0fad0edd 100644 --- a/src/main/java/com/hbm/blocks/generic/BlockGrate.java +++ b/src/main/java/com/hbm/blocks/generic/BlockGrate.java @@ -109,13 +109,15 @@ public class BlockGrate extends Block implements ITooltipProvider { if(meta == 0) { // Check that the block below can fit a grate above it - AxisAlignedBB bb = world.getBlock(x, y - 1, z).getCollisionBoundingBoxFromPool(world, x, y - 1, z); - if(bb == null || (int) ((bb.maxY - (y - 1)) * 100) < 90) { + Block block = world.getBlock(x, y - 1, z); + AxisAlignedBB bb = block.getCollisionBoundingBoxFromPool(world, x, y - 1, z); + if(!block.isAir(world, x, y + 1, z) && (bb == null || (int) ((bb.maxY - (y - 1)) * 100) < 90)) { world.setBlockMetadataWithNotify(x, y, z, 9, 3); } } else if(meta == 7) { - AxisAlignedBB bb = world.getBlock(x, y + 1, z).getCollisionBoundingBoxFromPool(world, x, y + 1, z); - if(bb == null || (int) ((bb.minY - (y + 1)) * 100) > 10) { + Block block = world.getBlock(x, y + 1, z); + AxisAlignedBB bb = block.getCollisionBoundingBoxFromPool(world, x, y + 1, z); + if(!block.isAir(world, x, y + 1, z) && (bb == null || (int) ((bb.minY - (y + 1)) * 100) > 10)) { world.setBlockMetadataWithNotify(x, y, z, 8, 3); } } diff --git a/src/main/java/com/hbm/render/block/RenderGrate.java b/src/main/java/com/hbm/render/block/RenderGrate.java index f6858c584..ca5f37aa6 100644 --- a/src/main/java/com/hbm/render/block/RenderGrate.java +++ b/src/main/java/com/hbm/render/block/RenderGrate.java @@ -23,6 +23,13 @@ public class RenderGrate implements ISimpleBlockRenderingHandler { tessellator.setColorOpaque_F(1, 1, 1); float fy = ((BlockGrate)block).getY(meta); + if(fy < 0) { + fy++; + y--; + } else if(fy >= 1) { + fy--; + y++; + } renderer.setRenderBounds(0.0D, fy, 0D, 1D, fy + 0.125D, 1D); renderer.renderStandardBlock(block, x, y, z); From 7d26a51c6b176c5d9a36ce7482ae9faf485fa6f1 Mon Sep 17 00:00:00 2001 From: George Paton Date: Fri, 7 Jun 2024 14:25:46 +1000 Subject: [PATCH 26/69] Fix funky placement issues --- .../com/hbm/blocks/generic/BlockGrate.java | 20 ++++++++----------- 1 file changed, 8 insertions(+), 12 deletions(-) diff --git a/src/main/java/com/hbm/blocks/generic/BlockGrate.java b/src/main/java/com/hbm/blocks/generic/BlockGrate.java index f0fad0edd..e7240b485 100644 --- a/src/main/java/com/hbm/blocks/generic/BlockGrate.java +++ b/src/main/java/com/hbm/blocks/generic/BlockGrate.java @@ -110,14 +110,14 @@ public class BlockGrate extends Block implements ITooltipProvider { if(meta == 0) { // Check that the block below can fit a grate above it Block block = world.getBlock(x, y - 1, z); - AxisAlignedBB bb = block.getCollisionBoundingBoxFromPool(world, x, y - 1, z); - if(!block.isAir(world, x, y + 1, z) && (bb == null || (int) ((bb.maxY - (y - 1)) * 100) < 90)) { + AxisAlignedBB otherBB = block.getSelectedBoundingBoxFromPool(world, x, y - 1, z); + if(!block.isAir(world, x, y + 1, z) && (otherBB == null || otherBB.maxY - (double)y < -0.05)) { world.setBlockMetadataWithNotify(x, y, z, 9, 3); } } else if(meta == 7) { Block block = world.getBlock(x, y + 1, z); - AxisAlignedBB bb = block.getCollisionBoundingBoxFromPool(world, x, y + 1, z); - if(!block.isAir(world, x, y + 1, z) && (bb == null || (int) ((bb.minY - (y + 1)) * 100) > 10)) { + AxisAlignedBB otherBB = block.getSelectedBoundingBoxFromPool(world, x, y + 1, z); + if(!block.isAir(world, x, y + 1, z) && (otherBB == null || otherBB.minY - (double)(y + 1) > 0.05)) { world.setBlockMetadataWithNotify(x, y, z, 8, 3); } } @@ -133,15 +133,11 @@ public class BlockGrate extends Block implements ITooltipProvider { boolean breakIt = false; if(meta == 9) { - AxisAlignedBB bb = world.getBlock(x, y - 1, z).getCollisionBoundingBoxFromPool(world, x, y - 1, z); - if(bb != null && (int) ((bb.maxY - (y - 1)) * 100) >= 90) { - breakIt = true; - } + AxisAlignedBB otherBB = world.getBlock(x, y - 1, z).getSelectedBoundingBoxFromPool(world, x, y - 1, z); + breakIt = !(otherBB == null || otherBB.maxY - (double)y < -0.05); } else if(meta == 8) { - AxisAlignedBB bb = world.getBlock(x, y + 1, z).getCollisionBoundingBoxFromPool(world, x, y + 1, z); - if(bb != null && (int) ((bb.minY - (y + 1)) * 100) <= 10) { - breakIt = true; - } + AxisAlignedBB otherBB = world.getBlock(x, y + 1, z).getSelectedBoundingBoxFromPool(world, x, y + 1, z); + breakIt = !(otherBB == null || otherBB.minY - (double)(y + 1) > 0.05); } if(breakIt) { From 2960c299183520ae7e48f11d8e8f4fe7e11f22ee Mon Sep 17 00:00:00 2001 From: George Paton Date: Fri, 7 Jun 2024 18:20:43 +1000 Subject: [PATCH 27/69] Add ByteBuf string reader/writer, and migrate the biggest CPU time offenders to ByteBuf packets --- .../hbm/blocks/machine/MachineCapacitor.java | 43 +++++++------ .../com/hbm/module/ModulePatternMatcher.java | 14 +++++ .../machine/TileEntityHadronPower.java | 21 ++++--- .../machine/TileEntityMachineChemplant.java | 61 ++++++++++--------- .../oil/TileEntityMachineFractionTower.java | 25 +++++--- .../machine/storage/TileEntityBarrel.java | 34 ++++++----- .../storage/TileEntityMachineFluidTank.java | 31 ++++++---- .../network/TileEntityCraneExtractor.java | 30 +++++---- .../network/TileEntityDroneWaypoint.java | 40 +++++++----- src/main/java/com/hbm/util/BufferUtil.java | 33 ++++++++++ 10 files changed, 212 insertions(+), 120 deletions(-) create mode 100644 src/main/java/com/hbm/util/BufferUtil.java diff --git a/src/main/java/com/hbm/blocks/machine/MachineCapacitor.java b/src/main/java/com/hbm/blocks/machine/MachineCapacitor.java index 5abb1e502..8e06209ca 100644 --- a/src/main/java/com/hbm/blocks/machine/MachineCapacitor.java +++ b/src/main/java/com/hbm/blocks/machine/MachineCapacitor.java @@ -10,7 +10,9 @@ import com.hbm.blocks.IPersistentInfoProvider; import com.hbm.blocks.ITooltipProvider; import com.hbm.blocks.ModBlocks; import com.hbm.lib.RefStrings; -import com.hbm.tileentity.INBTPacketReceiver; +import com.hbm.packet.BufPacket; +import com.hbm.packet.PacketDispatcher; +import com.hbm.tileentity.IBufPacketReceiver; import com.hbm.tileentity.IPersistentNBT; import com.hbm.tileentity.TileEntityLoadedBase; import com.hbm.util.BobMathUtil; @@ -20,8 +22,10 @@ import com.hbm.util.fauxpointtwelve.BlockPos; import api.hbm.energymk2.IEnergyProviderMK2; import api.hbm.energymk2.IEnergyReceiverMK2; import cpw.mods.fml.client.registry.RenderingRegistry; +import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; import net.minecraft.block.BlockContainer; import net.minecraft.block.material.Material; import net.minecraft.client.renderer.texture.IIconRegister; @@ -146,7 +150,7 @@ public class MachineCapacitor extends BlockContainer implements ILookOverlay, IP player.addExhaustion(0.025F); } - public static class TileEntityCapacitor extends TileEntityLoadedBase implements IEnergyProviderMK2, IEnergyReceiverMK2, INBTPacketReceiver, IPersistentNBT { + public static class TileEntityCapacitor extends TileEntityLoadedBase implements IEnergyProviderMK2, IEnergyReceiverMK2, IBufPacketReceiver, IPersistentNBT { public long power; protected long maxPower; @@ -190,20 +194,31 @@ public class MachineCapacitor extends BlockContainer implements ILookOverlay, IP this.tryProvide(worldObj, pos.getX(), pos.getY(), pos.getZ(), last); } - this.trySubscribe(worldObj, xCoord + opp.offsetX, yCoord+ opp.offsetY, zCoord + opp.offsetZ, opp); - - NBTTagCompound data = new NBTTagCompound(); - data.setLong("power", power); - data.setLong("maxPower", maxPower); - data.setLong("rec", powerReceived); - data.setLong("sent", powerSent); - INBTPacketReceiver.networkPack(this, data, 15); + this.trySubscribe(worldObj, xCoord + opp.offsetX, yCoord + opp.offsetY, zCoord + opp.offsetZ, opp); + + PacketDispatcher.wrapper.sendToAllAround(new BufPacket(xCoord, yCoord, zCoord, this), new TargetPoint(this.worldObj.provider.dimensionId, xCoord, yCoord, zCoord, 15)); this.powerSent = 0; this.powerReceived = 0; } } + @Override + public void serialize(ByteBuf buf) { + buf.writeLong(power); + buf.writeLong(maxPower); + buf.writeLong(powerReceived); + buf.writeLong(powerSent); + } + + @Override + public void deserialize(ByteBuf buf) { + power = buf.readLong(); + maxPower = buf.readLong(); + powerReceived = buf.readLong(); + powerSent = buf.readLong(); + } + @Override public long transferPower(long power) { if(power + this.getPower() <= this.getMaxPower()) { @@ -224,14 +239,6 @@ public class MachineCapacitor extends BlockContainer implements ILookOverlay, IP this.setPower(this.getPower() - power); } - @Override - public void networkUnpack(NBTTagCompound nbt) { - this.power = nbt.getLong("power"); - this.maxPower = nbt.getLong("maxPower"); - this.powerReceived = nbt.getLong("rec"); - this.powerSent = nbt.getLong("sent"); - } - @Override public long getPower() { return power; diff --git a/src/main/java/com/hbm/module/ModulePatternMatcher.java b/src/main/java/com/hbm/module/ModulePatternMatcher.java index 097bc6859..279a2c1e9 100644 --- a/src/main/java/com/hbm/module/ModulePatternMatcher.java +++ b/src/main/java/com/hbm/module/ModulePatternMatcher.java @@ -2,8 +2,10 @@ package com.hbm.module; import java.util.List; +import com.hbm.util.BufferUtil; import com.hbm.util.ItemStackUtil; +import io.netty.buffer.ByteBuf; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.world.World; @@ -151,4 +153,16 @@ public class ModulePatternMatcher { } } } + + public void serialize(ByteBuf buf) { + for(int i = 0; i < modes.length; i++) { + BufferUtil.writeString(buf, modes[i]); + } + } + + public void deserialize(ByteBuf buf) { + for(int i = 0; i < modes.length; i++) { + modes[i] = BufferUtil.readString(buf); + } + } } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityHadronPower.java b/src/main/java/com/hbm/tileentity/machine/TileEntityHadronPower.java index 814711f6d..f044f3fad 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityHadronPower.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityHadronPower.java @@ -1,15 +1,19 @@ package com.hbm.tileentity.machine; import com.hbm.blocks.machine.BlockHadronPower; -import com.hbm.tileentity.INBTPacketReceiver; +import com.hbm.packet.BufPacket; +import com.hbm.packet.PacketDispatcher; +import com.hbm.tileentity.IBufPacketReceiver; import com.hbm.tileentity.TileEntityLoadedBase; import api.hbm.energymk2.IEnergyReceiverMK2; +import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; +import io.netty.buffer.ByteBuf; import net.minecraft.block.Block; import net.minecraft.nbt.NBTTagCompound; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityHadronPower extends TileEntityLoadedBase implements IEnergyReceiverMK2, INBTPacketReceiver { +public class TileEntityHadronPower extends TileEntityLoadedBase implements IEnergyReceiverMK2, IBufPacketReceiver { public long power; @@ -26,15 +30,18 @@ public class TileEntityHadronPower extends TileEntityLoadedBase implements IEner this.trySubscribe(worldObj, xCoord + dir.offsetX, yCoord + dir.offsetY, zCoord + dir.offsetZ, dir); } - NBTTagCompound data = new NBTTagCompound(); - data.setLong("power", power); - INBTPacketReceiver.networkPack(this, data, 15); + PacketDispatcher.wrapper.sendToAllAround(new BufPacket(xCoord, yCoord, zCoord, this), new TargetPoint(this.worldObj.provider.dimensionId, xCoord, yCoord, zCoord, 15)); } } @Override - public void networkUnpack(NBTTagCompound nbt) { - this.power = nbt.getLong("power"); + public void serialize(ByteBuf buf) { + buf.writeLong(power); + } + + @Override + public void deserialize(ByteBuf buf) { + power = buf.readLong(); } @Override diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineChemplant.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineChemplant.java index 0e1efc401..5febdcbe3 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineChemplant.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineChemplant.java @@ -29,6 +29,7 @@ import api.hbm.energymk2.IEnergyReceiverMK2; import api.hbm.fluid.IFluidStandardTransceiver; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; import net.minecraft.client.gui.GuiScreen; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Container; @@ -152,17 +153,7 @@ public class TileEntityMachineChemplant extends TileEntityMachineBase implements process(); } - NBTTagCompound data = new NBTTagCompound(); - data.setLong("power", this.power); - data.setInteger("progress", this.progress); - data.setInteger("maxProgress", this.maxProgress); - data.setBoolean("isProgressing", isProgressing); - - for(int i = 0; i < tanks.length; i++) { - tanks[i].writeToNBT(data, "t" + i); - } - - this.networkPack(data, 150); + this.networkPackNT(150); } else { if(isProgressing && this.worldObj.getTotalWorldTime() % 3 == 0) { @@ -197,26 +188,36 @@ public class TileEntityMachineChemplant extends TileEntityMachineBase implements } } } + + @Override + public void serialize(ByteBuf buf) { + super.serialize(buf); + buf.writeLong(power); + buf.writeInt(progress); + buf.writeInt(maxProgress); + buf.writeBoolean(isProgressing); + + for(int i = 0; i < tanks.length; i++) + tanks[i].serialize(buf); + } + + @Override + public void deserialize(ByteBuf buf) { + super.deserialize(buf); + power = buf.readLong(); + progress = buf.readInt(); + maxProgress = buf.readInt(); + isProgressing = buf.readBoolean(); + + for(int i = 0; i < tanks.length; i++) + tanks[i].deserialize(buf); + } @Override public AudioWrapper createAudioLoop() { return MainRegistry.proxy.getLoopedSound("hbm:block.chemplantOperate", xCoord, yCoord, zCoord, 1.0F, 10F, 1.0F); } - @Override - public void networkUnpack(NBTTagCompound nbt) { - super.networkUnpack(nbt); - - this.power = nbt.getLong("power"); - this.progress = nbt.getInteger("progress"); - this.maxProgress = nbt.getInteger("maxProgress"); - this.isProgressing = nbt.getBoolean("isProgressing"); - - for(int i = 0; i < tanks.length; i++) { - tanks[i].readFromNBT(nbt, "t" + i); - } - } - @Override public void onChunkUnload() { @@ -501,7 +502,7 @@ public class TileEntityMachineChemplant extends TileEntityMachineBase implements @Override public long getMaxPower() { - return this.maxPower; + return maxPower; } @Override @@ -588,12 +589,12 @@ public class TileEntityMachineChemplant extends TileEntityMachineBase implements public void provideInfo(UpgradeType type, int level, List info, boolean extendedInfo) { info.add(IUpgradeInfoProvider.getStandardLabel(ModBlocks.machine_chemplant)); if(type == UpgradeType.SPEED) { - info.add(EnumChatFormatting.GREEN + I18nUtil.resolveKey(this.KEY_DELAY, "-" + (level * 25) + "%")); - info.add(EnumChatFormatting.RED + I18nUtil.resolveKey(this.KEY_CONSUMPTION, "+" + (level * 300) + "%")); + info.add(EnumChatFormatting.GREEN + I18nUtil.resolveKey(KEY_DELAY, "-" + (level * 25) + "%")); + info.add(EnumChatFormatting.RED + I18nUtil.resolveKey(KEY_CONSUMPTION, "+" + (level * 300) + "%")); } if(type == UpgradeType.POWER) { - info.add(EnumChatFormatting.GREEN + I18nUtil.resolveKey(this.KEY_CONSUMPTION, "-" + (level * 30) + "%")); - info.add(EnumChatFormatting.RED + I18nUtil.resolveKey(this.KEY_DELAY, "+" + (level * 5) + "%")); + info.add(EnumChatFormatting.GREEN + I18nUtil.resolveKey(KEY_CONSUMPTION, "-" + (level * 30) + "%")); + info.add(EnumChatFormatting.RED + I18nUtil.resolveKey(KEY_DELAY, "+" + (level * 5) + "%")); } if(type == UpgradeType.OVERDRIVE) { info.add((BobMathUtil.getBlink() ? EnumChatFormatting.RED : EnumChatFormatting.DARK_GRAY) + "YES"); diff --git a/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineFractionTower.java b/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineFractionTower.java index a00c4ecfb..9052dd9fc 100644 --- a/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineFractionTower.java +++ b/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineFractionTower.java @@ -5,19 +5,23 @@ import com.hbm.inventory.fluid.Fluids; import com.hbm.inventory.fluid.tank.FluidTank; import com.hbm.inventory.recipes.FractionRecipes; import com.hbm.lib.Library; -import com.hbm.tileentity.INBTPacketReceiver; +import com.hbm.packet.BufPacket; +import com.hbm.packet.PacketDispatcher; +import com.hbm.tileentity.IBufPacketReceiver; import com.hbm.tileentity.TileEntityLoadedBase; import com.hbm.util.Tuple.Pair; import com.hbm.util.fauxpointtwelve.DirPos; import api.hbm.fluid.IFluidStandardTransceiver; +import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.AxisAlignedBB; -public class TileEntityMachineFractionTower extends TileEntityLoadedBase implements INBTPacketReceiver, IFluidStandardTransceiver { +public class TileEntityMachineFractionTower extends TileEntityLoadedBase implements IBufPacketReceiver, IFluidStandardTransceiver { public FluidTank[] tanks; @@ -64,20 +68,21 @@ public class TileEntityMachineFractionTower extends TileEntityLoadedBase impleme fractionate(); this.sendFluid(); - - NBTTagCompound data = new NBTTagCompound(); - for(int i = 0; i < 3; i++) - tanks[i].writeToNBT(data, "tank" + i); - - INBTPacketReceiver.networkPack(this, data, 50); + PacketDispatcher.wrapper.sendToAllAround(new BufPacket(xCoord, yCoord, zCoord, this), new TargetPoint(this.worldObj.provider.dimensionId, xCoord, yCoord, zCoord, 50)); } } @Override - public void networkUnpack(NBTTagCompound nbt) { + public void serialize(ByteBuf buf) { for(int i = 0; i < 3; i++) - tanks[i].readFromNBT(nbt, "tank" + i); + tanks[i].serialize(buf); + } + + @Override + public void deserialize(ByteBuf buf) { + for(int i = 0; i < 3; i++) + tanks[i].deserialize(buf); } private void updateConnections() { 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 bca156c87..c82acdf0f 100644 --- a/src/main/java/com/hbm/tileentity/machine/storage/TileEntityBarrel.java +++ b/src/main/java/com/hbm/tileentity/machine/storage/TileEntityBarrel.java @@ -22,6 +22,7 @@ import com.hbm.util.fauxpointtwelve.DirPos; import cpw.mods.fml.common.Optional; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; import li.cil.oc.api.machine.Arguments; import li.cil.oc.api.machine.Callback; import li.cil.oc.api.machine.Context; @@ -108,7 +109,6 @@ public class TileEntityBarrel extends TileEntityMachineBase implements IFluidAcc tank.setType(0, 1, slots); tank.loadTank(2, 3, slots); tank.unloadTank(4, 5, slots); - tank.updateTank(xCoord, yCoord, zCoord, worldObj.provider.dimensionId); this.sendingBrake = true; tank.setFill(transmitFluidFairly(worldObj, tank, this, tank.getFill(), this.mode == 0 || this.mode == 1, this.mode == 1 || this.mode == 2, getConPos())); @@ -121,11 +121,23 @@ public class TileEntityBarrel extends TileEntityMachineBase implements IFluidAcc checkFluidInteraction(); } - NBTTagCompound data = new NBTTagCompound(); - data.setShort("mode", mode); - this.networkPack(data, 50); + this.networkPackNT(50); } } + + @Override + public void serialize(ByteBuf buf) { + super.serialize(buf); + buf.writeShort(mode); + tank.serialize(buf); + } + + @Override + public void deserialize(ByteBuf buf) { + super.deserialize(buf); + mode = buf.readShort(); + tank.deserialize(buf); + } protected DirPos[] getConPos() { return new DirPos[] { @@ -140,8 +152,8 @@ public class TileEntityBarrel extends TileEntityMachineBase implements IFluidAcc protected static int transmitFluidFairly(World world, FluidTank tank, IFluidConnector that, int fill, boolean connect, boolean send, DirPos[] connections) { - Set nets = new HashSet(); - Set consumers = new HashSet(); + Set nets = new HashSet<>(); + Set consumers = new HashSet<>(); FluidType type = tank.getTankType(); int pressure = tank.getPressure(); @@ -166,13 +178,13 @@ public class TileEntityBarrel extends TileEntityMachineBase implements IFluidAcc consumers.remove(that); if(fill > 0 && send) { - List con = new ArrayList(); + List con = new ArrayList<>(); con.addAll(consumers); con.removeIf(x -> x == null || !(x instanceof TileEntity) || ((TileEntity)x).isInvalid()); if(PipeNet.trackingInstances == null) { - PipeNet.trackingInstances = new ArrayList(); + PipeNet.trackingInstances = new ArrayList<>(); } PipeNet.trackingInstances.clear(); @@ -265,12 +277,6 @@ public class TileEntityBarrel extends TileEntityMachineBase implements IFluidAcc } } } - - public void networkUnpack(NBTTagCompound data) { - super.networkUnpack(data); - - mode = data.getShort("mode"); - } @Override public void setFillForSync(int fill, int index) { 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 73e3e47e2..c71ba716c 100644 --- a/src/main/java/com/hbm/tileentity/machine/storage/TileEntityMachineFluidTank.java +++ b/src/main/java/com/hbm/tileentity/machine/storage/TileEntityMachineFluidTank.java @@ -34,6 +34,7 @@ import cpw.mods.fml.common.Optional; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; import li.cil.oc.api.machine.Arguments; import li.cil.oc.api.machine.Callback; import li.cil.oc.api.machine.Context; @@ -161,11 +162,7 @@ public class TileEntityMachineFluidTank extends TileEntityMachineBase implements tank.unloadTank(4, 5, slots); - NBTTagCompound data = new NBTTagCompound(); - data.setShort("mode", mode); - data.setBoolean("hasExploded", hasExploded); - this.tank.writeToNBT(data, "t"); - this.networkPack(data, 150); + this.networkPackNT(150); } ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata() - 10); @@ -177,6 +174,22 @@ public class TileEntityMachineFluidTank extends TileEntityMachineBase implements props.isOnLadder = true; } } + + @Override + public void serialize(ByteBuf buf) { + super.serialize(buf); + buf.writeShort(mode); + buf.writeBoolean(hasExploded); + tank.serialize(buf); + } + + @Override + public void deserialize(ByteBuf buf) { + super.deserialize(buf); + mode = buf.readShort(); + hasExploded = buf.readBoolean(); + tank.deserialize(buf); + } /** called when the tank breaks due to hazardous materials or external force, can be used to quickly void part of the tank or spawn a mushroom cloud */ public void explode() { @@ -269,12 +282,6 @@ public class TileEntityMachineFluidTank extends TileEntityMachineBase implements }; } - public void networkUnpack(NBTTagCompound data) { - this.mode = data.getShort("mode"); - this.hasExploded = data.getBoolean("hasExploded"); - this.tank.readFromNBT(data, "t"); - } - public void handleButtonPacket(int value, int meta) { mode = (short) ((mode + 1) % modes); this.markChanged(); @@ -462,7 +469,7 @@ public class TileEntityMachineFluidTank extends TileEntityMachineBase implements return this.hasExploded; } - List repair = new ArrayList(); + List repair = new ArrayList<>(); @Override public List getRepairMaterials() { diff --git a/src/main/java/com/hbm/tileentity/network/TileEntityCraneExtractor.java b/src/main/java/com/hbm/tileentity/network/TileEntityCraneExtractor.java index 8f08fa356..bd8baa880 100644 --- a/src/main/java/com/hbm/tileentity/network/TileEntityCraneExtractor.java +++ b/src/main/java/com/hbm/tileentity/network/TileEntityCraneExtractor.java @@ -10,6 +10,7 @@ import com.hbm.module.ModulePatternMatcher; import com.hbm.tileentity.IGUIProvider; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; import net.minecraft.block.Block; import net.minecraft.client.gui.GuiScreen; import net.minecraft.entity.player.EntityPlayer; @@ -154,13 +155,24 @@ public class TileEntityCraneExtractor extends TileEntityCraneBase implements IGU } } } - - NBTTagCompound data = new NBTTagCompound(); - data.setBoolean("isWhitelist", isWhitelist); - this.matcher.writeToNBT(data); - this.networkPack(data, 15); + + this.networkPackNT(15); } } + + @Override + public void serialize(ByteBuf buf) { + super.serialize(buf); + buf.writeBoolean(isWhitelist); + this.matcher.serialize(buf); + } + + @Override + public void deserialize(ByteBuf buf) { + super.deserialize(buf); + isWhitelist = buf.readBoolean(); + this.matcher.deserialize(buf); + } public static int[] masquerade(ISidedInventory sided, int side) { @@ -171,14 +183,6 @@ public class TileEntityCraneExtractor extends TileEntityCraneBase implements IGU return sided.getAccessibleSlotsFromSide(side); } - public void networkUnpack(NBTTagCompound nbt) { - super.networkUnpack(nbt); - - this.isWhitelist = nbt.getBoolean("isWhitelist"); - this.matcher.modes = new String[this.matcher.modes.length]; - this.matcher.readFromNBT(nbt); - } - public boolean matchesFilter(ItemStack stack) { for(int i = 0; i < 9; i++) { diff --git a/src/main/java/com/hbm/tileentity/network/TileEntityDroneWaypoint.java b/src/main/java/com/hbm/tileentity/network/TileEntityDroneWaypoint.java index f14fb0f99..08a4cfa19 100644 --- a/src/main/java/com/hbm/tileentity/network/TileEntityDroneWaypoint.java +++ b/src/main/java/com/hbm/tileentity/network/TileEntityDroneWaypoint.java @@ -3,9 +3,13 @@ package com.hbm.tileentity.network; import java.util.List; import com.hbm.entity.item.EntityDeliveryDrone; -import com.hbm.tileentity.INBTPacketReceiver; +import com.hbm.packet.BufPacket; +import com.hbm.packet.PacketDispatcher; +import com.hbm.tileentity.IBufPacketReceiver; import com.hbm.util.fauxpointtwelve.BlockPos; +import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; +import io.netty.buffer.ByteBuf; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.AxisAlignedBB; @@ -13,7 +17,7 @@ import net.minecraft.util.MathHelper; import net.minecraft.util.Vec3; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityDroneWaypoint extends TileEntity implements INBTPacketReceiver, IDroneLinkable { +public class TileEntityDroneWaypoint extends TileEntity implements IBufPacketReceiver, IDroneLinkable { public int height = 5; public int nextX = -1; @@ -35,11 +39,8 @@ public class TileEntityDroneWaypoint extends TileEntity implements INBTPacketRec } } } - - NBTTagCompound data = new NBTTagCompound(); - data.setInteger("height", height); - data.setIntArray("pos", new int[] {nextX, nextY, nextZ}); - INBTPacketReceiver.networkPack(this, data, 15); + + PacketDispatcher.wrapper.sendToAllAround(new BufPacket(xCoord, yCoord, zCoord, this), new TargetPoint(this.worldObj.provider.dimensionId, xCoord, yCoord, zCoord, 15)); } else { if(nextY != -1 && worldObj.getTotalWorldTime() % 2 == 0) { @@ -52,6 +53,22 @@ public class TileEntityDroneWaypoint extends TileEntity implements INBTPacketRec } } + @Override + public void serialize(ByteBuf buf) { + buf.writeInt(height); + buf.writeInt(nextX); + buf.writeInt(nextY); + buf.writeInt(nextZ); + } + + @Override + public void deserialize(ByteBuf buf) { + height = buf.readInt(); + nextX = buf.readInt(); + nextY = buf.readInt(); + nextZ = buf.readInt(); + } + @Override public BlockPos getPoint() { ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata()); @@ -65,15 +82,6 @@ public class TileEntityDroneWaypoint extends TileEntity implements INBTPacketRec this.nextZ = z; this.markDirty(); } - - @Override - public void networkUnpack(NBTTagCompound nbt) { - this.height = nbt.getInteger("height"); - int[] pos = nbt.getIntArray("pos"); - this.nextX = pos[0]; - this.nextY = pos[1]; - this.nextZ = pos[2]; - } public void addHeight(int h) { height += h; diff --git a/src/main/java/com/hbm/util/BufferUtil.java b/src/main/java/com/hbm/util/BufferUtil.java new file mode 100644 index 000000000..3f50e7e54 --- /dev/null +++ b/src/main/java/com/hbm/util/BufferUtil.java @@ -0,0 +1,33 @@ +package com.hbm.util; + +import java.nio.charset.Charset; + +import io.netty.buffer.ByteBuf; + +public class BufferUtil { + + private static final Charset CHARSET = Charset.forName("UTF-8"); + + // Writes a string to a byte buffer by encoding the length and raw bytes + public static final void writeString(ByteBuf buf, String value) { + if(value == null) { + buf.writeInt(-1); + return; + } + + buf.writeInt(value.length()); + buf.writeBytes(value.getBytes(CHARSET)); + } + + // Reads a string from a byte buffer via the written length and raw bytes + public static final String readString(ByteBuf buf) { + final int count = buf.readInt(); + if(count < 0) return null; + + final byte[] bytes = new byte[count]; + buf.readBytes(bytes); + + return new String(bytes, CHARSET); + } + +} From 443d73e3add02466ee60c0e3988e116fa146b73c Mon Sep 17 00:00:00 2001 From: Boblet Date: Fri, 7 Jun 2024 14:45:28 +0200 Subject: [PATCH 28/69] PRISM --- .../radiation/ChunkRadiationHandler3D.java | 10 +- .../radiation/ChunkRadiationHandlerPRISM.java | 222 ++++++++++++++++++ 2 files changed, 228 insertions(+), 4 deletions(-) create mode 100644 src/main/java/com/hbm/handler/radiation/ChunkRadiationHandlerPRISM.java diff --git a/src/main/java/com/hbm/handler/radiation/ChunkRadiationHandler3D.java b/src/main/java/com/hbm/handler/radiation/ChunkRadiationHandler3D.java index a1b85d242..ed64bfc90 100644 --- a/src/main/java/com/hbm/handler/radiation/ChunkRadiationHandler3D.java +++ b/src/main/java/com/hbm/handler/radiation/ChunkRadiationHandler3D.java @@ -3,6 +3,8 @@ package com.hbm.handler.radiation; import java.util.HashMap; import java.util.Map.Entry; +import com.hbm.interfaces.Untested; + import net.minecraft.util.MathHelper; import net.minecraft.world.ChunkCoordIntPair; import net.minecraft.world.World; @@ -19,7 +21,7 @@ public class ChunkRadiationHandler3D extends ChunkRadiationHandler { private HashMap perWorld = new HashMap(); - @Override + @Override @Untested public float getRadiation(World world, int x, int y, int z) { ThreeDimRadiationPerWorld radWorld = perWorld.get(world); @@ -28,7 +30,7 @@ public class ChunkRadiationHandler3D extends ChunkRadiationHandler { int yReg = MathHelper.clamp_int(y >> 4, 0, 15); - Float rad = radWorld.radiation.get(coords)[yReg]; + Float rad = radWorld.radiation.get(coords)[yReg]; // this will crash if the coord pair isn't nullchecked return rad == null ? 0F : rad; } @@ -66,7 +68,7 @@ public class ChunkRadiationHandler3D extends ChunkRadiationHandler { setRadiation(world, x, y, z, Math.max(getRadiation(world, x, y, z) - rad, 0)); } - @Override + @Override @Untested //will most definitely crash, for this to work i need to figure out what it even was i wanted to do in the first place public void updateSystem() { for(Entry entry : perWorld.entrySet()) { @@ -96,7 +98,7 @@ public class ChunkRadiationHandler3D extends ChunkRadiationHandler { if(buff.containsKey(newCoord)) { int newY = MathHelper.clamp_int(y + j, 0, 15); - Float[] vals = radiation.get(newCoord); + Float[] vals = radiation.get(newCoord); // ????????? but radiation was cleared! float newRad = vals[newY] + chunk.getValue()[newY] * percent; vals[newY] = Math.max(0F, newRad * 0.999F - 0.05F); } diff --git a/src/main/java/com/hbm/handler/radiation/ChunkRadiationHandlerPRISM.java b/src/main/java/com/hbm/handler/radiation/ChunkRadiationHandlerPRISM.java new file mode 100644 index 000000000..1016869ae --- /dev/null +++ b/src/main/java/com/hbm/handler/radiation/ChunkRadiationHandlerPRISM.java @@ -0,0 +1,222 @@ +package com.hbm.handler.radiation; + +import java.util.HashMap; +import java.util.Map.Entry; + +import net.minecraft.block.Block; +import net.minecraft.util.MathHelper; +import net.minecraft.world.ChunkCoordIntPair; +import net.minecraft.world.World; +import net.minecraft.world.chunk.Chunk; +import net.minecraft.world.chunk.storage.ExtendedBlockStorage; +import net.minecraftforge.common.util.ForgeDirection; + +/** + * The PRISM system aims to make a semi-realistic containment system with simplified and variable resistance values. + * The general basis for this system is the simplified 3D system with its 16x16x16 regions, but in addition to those + * sub-chunks, each sub-chunk has several arrays of resistance values (three arrays, one for each axis) where each + * value represents the resistance of one "slice" of the sub-chunk. This allows resistances to be handled differently + * depending on the direction the radiation is coming from, and depending on the sub-chunk's localized block resistance + * density. While not as accurate as the pocket-based system from 1.12, it does a better job at simulating resistances + * of various block types instead of a binary sealing/not sealing system. For example it is therefore possible to + * safely store radioactive waste in a cave, shielded by many layers of rock and dirt, without needing extra concrete. + * The system's name stems from the "gradient"-like handling of the resistance values per axis, multiple color + * gradients make a rainbow, and rainbows come from prisms. Just like a prism, sub-chunks too handle the radiation + * going through them differently depending on the angle of approach. + * + * @author hbm + * + */ +public class ChunkRadiationHandlerPRISM extends ChunkRadiationHandler { + + private HashMap perWorld = new HashMap(); + + public static final float MAX_RADIATION = 1_000_000; + + @Override + public float getRadiation(World world, int x, int y, int z) { + + RadPerWorld system = perWorld.get(world); + + if(system != null) { + ChunkCoordIntPair coords = new ChunkCoordIntPair(x >> 4, z >> 4); + int yReg = MathHelper.clamp_int(y >> 4, 0, 15); + SubChunk[] subChunks = system.radiation.get(coords); + if(subChunks != null) { + SubChunk rad = subChunks[yReg]; + if(rad != null) return rad.radiation; + } + } + + return 0; + } + + @Override + public void setRadiation(World world, int x, int y, int z, float rad) { + + RadPerWorld system = perWorld.get(world); + + if(system != null) { + ChunkCoordIntPair coords = new ChunkCoordIntPair(x >> 4, z >> 4); + int yReg = MathHelper.clamp_int(y >> 4, 0, 15); + SubChunk[] subChunks = system.radiation.get(coords); + if(subChunks[yReg] == null) subChunks[yReg] = new SubChunk().rebuild(world, x, y, z); + subChunks[yReg].radiation = MathHelper.clamp_float(rad, 0, MAX_RADIATION); + world.getChunkFromBlockCoords(x, z).isModified = true; + } + } + + @Override + public void incrementRad(World world, int x, int y, int z, float rad) { + setRadiation(world, x, y, z, getRadiation(world, x, y, z) + rad); + } + + @Override + public void decrementRad(World world, int x, int y, int z, float rad) { + setRadiation(world, x, y, z, getRadiation(world, x, y, z) - rad); + } + + @Override + public void updateSystem() { + + for(Entry entries : perWorld.entrySet()) { + RadPerWorld system = entries.getValue(); + + //it would be way to expensive to replace the sub-chunks entirely like with the old system + //(that only used floats anyway...) so instead we shift the radiation into the prev value + for(Entry chunk : system.radiation.entrySet()) for(SubChunk sub : chunk.getValue()) if(sub != null) { + sub.prevRadiation = sub.radiation; + sub.radiation = 0; + } + + for(Entry chunk : system.radiation.entrySet()) { + for(int i = 0; i < 16; i++) { + + SubChunk sub = chunk.getValue()[i]; + + if(sub != null) { + float radSpread = 0; + for(ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) radSpread += spreadRadiation(sub, i, chunk.getKey(), system.radiation, dir); + sub.radiation += (sub.prevRadiation - radSpread) * 0.9F; + } + } + } + + /* + //reap chunks with no radiation at all + system.radiation.entrySet().removeIf(x -> getTotalChunkRadiation(x.getValue()) <= 0F); + */ //is this even a good idea? by reaping unused chunks we still lose our cached resistance values + } + } + + private static float spreadRadiation(SubChunk source, int y, ChunkCoordIntPair origin, HashMap map, ForgeDirection dir) { + + //TODO + + return 0F; + } + + public static float getTotalChunkRadiation(SubChunk[] chunk) { + float rad = 0; + for(SubChunk sub : chunk) if(sub != null) rad += sub.radiation; + return rad; + } + + @Override + public void clearSystem(World world) { + RadPerWorld system = perWorld.get(world); + if(system != null) system.radiation.clear(); + } + + public static class RadPerWorld { + public HashMap radiation = new HashMap(); + } + + public static class SubChunk { + + public float prevRadiation; + public float radiation; + public float[] xResist = new float[16]; + public float[] yResist = new float[16]; + public float[] zResist = new float[16]; + public boolean needsRebuild = false; + + public void updateBlock(World world, int x, int y, int z) { + int cX = x >> 4; + int cY = MathHelper.clamp_int(y >> 4, 0, 15); + int cZ = z >> 4; + + if(!world.getChunkProvider().chunkExists(cX, cZ)) return; + + int tX = cX << 4; + int tY = cY << 4; + int tZ = cX << 4; + + int sX = MathHelper.clamp_int(x - tX, 0, 15); + int sY = MathHelper.clamp_int(y - tY, 0, 15); + int sZ = MathHelper.clamp_int(z - tZ, 0, 15); + + Chunk chunk = world.getChunkFromChunkCoords(cX, cZ); + ExtendedBlockStorage[] xbs = chunk.getBlockStorageArray(); + ExtendedBlockStorage subChunk = xbs[cY]; + + xResist[sX] = yResist[sY] = zResist[sZ] = 0; + + for(int iX = 0; iX < 16; iX++) { + for(int iY = 0; iY < 16; iY ++) { + for(int iZ = 0; iZ < 16; iZ ++) { + + if(iX == sX || iY == sY || iZ == sZ) { //only redo the three affected slices by this position change + + Block b = subChunk.getBlockByExtId(iX, iY, iZ); + float resistance = b.getExplosionResistance(null, world, tX + iX, tY + iY, tZ + iZ, x, y, z); + if(iX == sX) xResist[iX] += resistance; + if(iY == sY) yResist[iY] += resistance; + if(iZ == sZ) zResist[iZ] += resistance; + } + } + } + } + } + + public SubChunk rebuild(World world, int x, int y, int z) { + needsRebuild = true; + int cX = x >> 4; + int cY = MathHelper.clamp_int(y >> 4, 0, 15); + int cZ = z >> 4; + + if(!world.getChunkProvider().chunkExists(cX, cZ)) return this; //if the chunk isn't actually loaded, quit (but needsRebuild is still set!) + + int tX = cX << 4; + int tY = cY << 4; + int tZ = cX << 4; + + for(int i = 0; i < 16; i++) xResist[i] = yResist[i] = zResist[i] = 0; + + Chunk chunk = world.getChunkFromChunkCoords(cX, cZ); + ExtendedBlockStorage[] xbs = chunk.getBlockStorageArray(); + ExtendedBlockStorage subChunk = xbs[cY]; + + for(int iX = 0; iX < 16; iX++) { + for(int iY = 0; iY < 16; iY ++) { + for(int iZ = 0; iZ < 16; iZ ++) { + + Block b = subChunk.getBlockByExtId(iX, iY, iZ); + float resistance = b.getExplosionResistance(null, world, tX + iX, tY + iY, tZ + iZ, x, y, z); + xResist[iX] += resistance; + yResist[iY] += resistance; + zResist[iZ] += resistance; + } + } + } + + needsRebuild = false; + return this; + } + + public float getResistanceValue(ForgeDirection movement) { + //TODO + return 0; + } + } +} From 1769d743be54b9d5d959433091cc89940d7e9f1a Mon Sep 17 00:00:00 2001 From: MerrittK <65367913+MerrittK@users.noreply.github.com> Date: Sat, 8 Jun 2024 13:38:45 -0400 Subject: [PATCH 29/69] Added magtung crucible recipe --- src/main/java/com/hbm/inventory/recipes/CrucibleRecipes.java | 4 ++++ src/main/resources/assets/hbm/lang/en_US.lang | 1 + 2 files changed, 5 insertions(+) diff --git a/src/main/java/com/hbm/inventory/recipes/CrucibleRecipes.java b/src/main/java/com/hbm/inventory/recipes/CrucibleRecipes.java index 903d07e1f..354d26770 100644 --- a/src/main/java/com/hbm/inventory/recipes/CrucibleRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/CrucibleRecipes.java @@ -108,6 +108,10 @@ public class CrucibleRecipes extends SerializableRecipe { .inputs(new MaterialStack(Mats.MAT_MAGTUNG, n * 6), new MaterialStack(Mats.MAT_MUD, n * 3)) .outputs(new MaterialStack(Mats.MAT_CMB, i))); + recipes.add(new CrucibleRecipe(16, "crucible.magtung", 3, new ItemStack(ModItems.ingot_magnetized_tungsten)) + .inputs(new MaterialStack(Mats.MAT_TUNGSTEN, i), new MaterialStack(Mats.MAT_SCHRABIDIUM, n * 1)) + .outputs(new MaterialStack(Mats.MAT_MAGTUNG, i))); + registerMoldsForNEI(); } diff --git a/src/main/resources/assets/hbm/lang/en_US.lang b/src/main/resources/assets/hbm/lang/en_US.lang index 53e2d89c3..f4e888f9e 100644 --- a/src/main/resources/assets/hbm/lang/en_US.lang +++ b/src/main/resources/assets/hbm/lang/en_US.lang @@ -858,6 +858,7 @@ crucible.ferro=Ferrouranium Production crucible.hematite=Iron Production from Hematite crucible.hss=High-Speed Steel Production crucible.malachite=Copper Production from Malachite +crucible.magtung=Magnetized Tungsten Production crucible.redcopper=Red Copper Production crucible.steel=Steel Production crucible.steelMeteoric=Steel Production from Meteoric Iron From a21a0934a6b43d782fc3128a867c082fa880e78f Mon Sep 17 00:00:00 2001 From: Bob Date: Sun, 9 Jun 2024 01:12:53 +0200 Subject: [PATCH 30/69] the malicious gigglefish from the silly dimension --- changelog | 9 +- .../blocks/machine/MachineCrystallizer.java | 46 +- .../inventory/gui/GUIMachineArcWelder.java | 4 +- .../gui/GUIMachineSolderingStation.java | 8 +- .../java/com/hbm/main/ResourceManager.java | 6 +- .../hbm/render/item/ItemRenderLibrary.java | 16 - .../render/tileentity/RenderCrystallizer.java | 67 +- .../TileEntityMachineArcFurnaceLarge.java | 17 +- .../TileEntityMachineCrystallizer.java | 31 +- .../assets/hbm/models/machines/acidizer.obj | 3759 +++++++++++++++++ .../hbm/textures/models/machines/acidizer.png | Bin 0 -> 9447 bytes 11 files changed, 3855 insertions(+), 108 deletions(-) create mode 100644 src/main/resources/assets/hbm/models/machines/acidizer.obj create mode 100644 src/main/resources/assets/hbm/textures/models/machines/acidizer.png diff --git a/changelog b/changelog index 2985459e7..4bdd3492d 100644 --- a/changelog +++ b/changelog @@ -36,6 +36,12 @@ * There is now an alternate recipe for standard capacitors, using one aluminium dust for two capacitors (i.e. 4.5 aluminium nuggets, vs the standard 1 niobium nugget) * Shift-clicking steel grates onto the top/bottom of a block now shifts the grate into that block (if there is space, for example for cables or ducts). The effect is only visual, and the block still occupies the position above the block that the grate has been placed at * This allows for making pipes with grates over them which are flush with the floor +* The ore acidizer has been remodeled + * The ports are now much simpler, having universale ports for all types instead of ppower/fluid being separated from items + * The ports are now all located at the bottom, making it easier to connect power/fluid + * There are now more ports to choose from + * The machine is now one block shorter + * The ladder is now wider and centered on the side ## Fixed * Fixed dupe regarding conveyor grabbers @@ -43,4 +49,5 @@ * Fixed a bug where missile debris would always spawn with a stack size of 1 and a meta of 0 * Fixed FM radios disassembling into incorrect parts * Fixed 256k tanks yielding too much steel when shredded -* Fixed the wire mold only creating 1 wire instead of the intended 8 due to the changes to the wire oredict \ No newline at end of file +* Fixed the wire mold only creating 1 wire instead of the intended 8 due to the changes to the wire oredict +* Fixed potential crashes in the arc welder and soldering station GUIs diff --git a/src/main/java/com/hbm/blocks/machine/MachineCrystallizer.java b/src/main/java/com/hbm/blocks/machine/MachineCrystallizer.java index 25ea1b062..25012acf8 100644 --- a/src/main/java/com/hbm/blocks/machine/MachineCrystallizer.java +++ b/src/main/java/com/hbm/blocks/machine/MachineCrystallizer.java @@ -3,7 +3,6 @@ package com.hbm.blocks.machine; import com.hbm.blocks.BlockDummyable; import com.hbm.main.MainRegistry; import com.hbm.tileentity.TileEntityProxyCombo; -import com.hbm.tileentity.TileEntityProxyInventory; import com.hbm.tileentity.machine.TileEntityMachineCrystallizer; import cpw.mods.fml.common.network.internal.FMLNetworkHandler; @@ -27,34 +26,23 @@ public class MachineCrystallizer extends BlockDummyable { @Override public TileEntity createNewTileEntity(World world, int meta) { - - if(meta >= 12) - return new TileEntityMachineCrystallizer(); - - if(meta >= 8 && meta <= 11) - return new TileEntityProxyInventory(); - - if(meta == 7) - return new TileEntityProxyCombo(false, true, true); - + if(meta >= 12) return new TileEntityMachineCrystallizer(); + if(meta >= 6) return new TileEntityProxyCombo().inventory().power().fluid(); return null; } @Override public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) { - if(world.isRemote) - { + if(world.isRemote) { return true; - } else if(!player.isSneaking()) - { + } else if(!player.isSneaking()) { int[] pos = this.findCore(world, x, y, z); - + if(pos == null) return false; - + TileEntityMachineCrystallizer entity = (TileEntityMachineCrystallizer) world.getTileEntity(pos[0], pos[1], pos[2]); - if(entity != null) - { + if(entity != null) { FMLNetworkHandler.openGui(player, MainRegistry.instance, 0, world, pos[0], pos[1], pos[2]); } return true; @@ -65,7 +53,7 @@ public class MachineCrystallizer extends BlockDummyable { @Override public int[] getDimensions() { - return new int[] { 6, 0, 1, 1, 1, 1 }; + return new int[] { 5, 0, 1, 1, 1, 1 }; } @Override @@ -76,20 +64,10 @@ public class MachineCrystallizer extends BlockDummyable { protected void fillSpace(World world, int x, int y, int z, ForgeDirection dir, int o) { super.fillSpace(world, x, y, z, dir, o); - this.makeExtra(world, x + dir.offsetX * o + 1, y, z + dir.offsetZ * o); - this.makeExtra(world, x + dir.offsetX * o - 1, y, z + dir.offsetZ * o); - this.makeExtra(world, x + dir.offsetX * o, y, z + dir.offsetZ * o + 1); - this.makeExtra(world, x + dir.offsetX * o, y, z + dir.offsetZ * o - 1); - - if(dir == ForgeDirection.NORTH || dir == ForgeDirection.SOUTH) { - this.makeExtra(world, x + dir.offsetX * o + 1, y + 5, z + dir.offsetZ * o); - this.makeExtra(world, x + dir.offsetX * o - 1, y + 5, z + dir.offsetZ * o); - } - - if(dir == ForgeDirection.EAST || dir == ForgeDirection.WEST) { - this.makeExtra(world, x + dir.offsetX * o, y + 5, z + dir.offsetZ * o + 1); - this.makeExtra(world, x + dir.offsetX * o, y + 5, z + dir.offsetZ * o - 1); - } + this.makeExtra(world, x + dir.offsetX * o + 1, y, z + dir.offsetZ * o + 1); + this.makeExtra(world, x + dir.offsetX * o - 1, y, z + dir.offsetZ * o + 1); + this.makeExtra(world, x + dir.offsetX * o + 1, y, z + dir.offsetZ * o - 1); + this.makeExtra(world, x + dir.offsetX * o - 1, y, z + dir.offsetZ * o - 1); } } diff --git a/src/main/java/com/hbm/inventory/gui/GUIMachineArcWelder.java b/src/main/java/com/hbm/inventory/gui/GUIMachineArcWelder.java index ae993fb9a..a008911e0 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIMachineArcWelder.java +++ b/src/main/java/com/hbm/inventory/gui/GUIMachineArcWelder.java @@ -47,10 +47,10 @@ public class GUIMachineArcWelder extends GuiInfoContainer { Minecraft.getMinecraft().getTextureManager().bindTexture(texture); drawTexturedModalRect(guiLeft, guiTop, 0, 0, xSize, ySize); - int p = (int) (welder.power * 52 / welder.maxPower); + int p = (int) (welder.power * 52 / Math.max(welder.maxPower, 1)); drawTexturedModalRect(guiLeft + 152, guiTop + 70 - p, 176, 52 - p, 16, p); - int i = welder.progress * 33 / welder.processTime; + int i = welder.progress * 33 / Math.max(welder.processTime, 1); drawTexturedModalRect(guiLeft + 72, guiTop + 37, 192, 0, i, 14); if(welder.power >= welder.consumption) { diff --git a/src/main/java/com/hbm/inventory/gui/GUIMachineSolderingStation.java b/src/main/java/com/hbm/inventory/gui/GUIMachineSolderingStation.java index f86174285..1a3a3f363 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIMachineSolderingStation.java +++ b/src/main/java/com/hbm/inventory/gui/GUIMachineSolderingStation.java @@ -46,11 +46,11 @@ public class GUIMachineSolderingStation extends GuiInfoContainer { GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); Minecraft.getMinecraft().getTextureManager().bindTexture(texture); drawTexturedModalRect(guiLeft, guiTop, 0, 0, xSize, ySize); - - int p = (int) (solderer.power * 52 / solderer.maxPower); + + int p = (int) (solderer.power * 52 / Math.max(solderer.maxPower, 1)); drawTexturedModalRect(guiLeft + 152, guiTop + 70 - p, 176, 52 - p, 16, p); - - int i = solderer.progress * 33 / solderer.processTime; + + int i = solderer.progress * 33 / Math.max(solderer.processTime, 1); drawTexturedModalRect(guiLeft + 72, guiTop + 28, 192, 0, i, 14); if(solderer.power >= solderer.consumption) { diff --git a/src/main/java/com/hbm/main/ResourceManager.java b/src/main/java/com/hbm/main/ResourceManager.java index 6ada576fc..b1f7f9d0b 100644 --- a/src/main/java/com/hbm/main/ResourceManager.java +++ b/src/main/java/com/hbm/main/ResourceManager.java @@ -184,7 +184,7 @@ public class ResourceManager { public static final IModelCustom mining_laser = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/mining_laser.obj")).asVBO(); //Crystallizer - public static final IModelCustom crystallizer = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/crystallizer.obj")).asVBO(); + public static final IModelCustom crystallizer = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/acidizer.obj")).asVBO(); //Cyclotron public static final IModelCustom cyclotron = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/cyclotron.obj")).asVBO(); @@ -591,9 +591,7 @@ public class ResourceManager { public static final ResourceLocation mining_laser_laser_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/mining_laser_laser.png"); //Crystallizer - public static final ResourceLocation crystallizer_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/crystallizer.png"); - public static final ResourceLocation crystallizer_spinner_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/crystallizer_spinner.png"); - public static final ResourceLocation crystallizer_window_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/crystallizer_window.png"); + public static final ResourceLocation crystallizer_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/acidizer.png"); //Cyclotron public static final ResourceLocation cyclotron_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/cyclotron.png"); diff --git a/src/main/java/com/hbm/render/item/ItemRenderLibrary.java b/src/main/java/com/hbm/render/item/ItemRenderLibrary.java index 41d42e7c2..bcee704d8 100644 --- a/src/main/java/com/hbm/render/item/ItemRenderLibrary.java +++ b/src/main/java/com/hbm/render/item/ItemRenderLibrary.java @@ -93,22 +93,6 @@ public class ItemRenderLibrary { bindTexture(ResourceManager.epress_head_tex); ResourceManager.epress_head.renderAll(); }}); - renderers.put(Item.getItemFromBlock(ModBlocks.machine_crystallizer), new ItemRenderBase() { - public void renderNonInv() { - GL11.glScaled(0.5, 0.5, 0.5); - } - public void renderInventory() { - GL11.glTranslated(0, -4, 0); - GL11.glScaled(1.75, 1.75, 1.75); - } - public void renderCommon() { - GL11.glShadeModel(GL11.GL_SMOOTH); - bindTexture(ResourceManager.crystallizer_tex); ResourceManager.crystallizer.renderPart("Body"); - bindTexture(ResourceManager.crystallizer_window_tex); ResourceManager.crystallizer.renderPart("Windows"); - bindTexture(ResourceManager.crystallizer_spinner_tex); ResourceManager.crystallizer.renderPart("Spinner"); - GL11.glShadeModel(GL11.GL_FLAT); - }}); - renderers.put(Item.getItemFromBlock(ModBlocks.machine_reactor_breeding), new ItemRenderBase() { public void renderInventory() { GL11.glTranslated(0, -4, 0); diff --git a/src/main/java/com/hbm/render/tileentity/RenderCrystallizer.java b/src/main/java/com/hbm/render/tileentity/RenderCrystallizer.java index 75015f4b6..6fdba5911 100644 --- a/src/main/java/com/hbm/render/tileentity/RenderCrystallizer.java +++ b/src/main/java/com/hbm/render/tileentity/RenderCrystallizer.java @@ -2,46 +2,71 @@ package com.hbm.render.tileentity; import org.lwjgl.opengl.GL11; +import com.hbm.blocks.ModBlocks; import com.hbm.main.ResourceManager; +import com.hbm.render.item.ItemRenderBase; import com.hbm.tileentity.machine.TileEntityMachineCrystallizer; import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; +import net.minecraft.item.Item; import net.minecraft.tileentity.TileEntity; +import net.minecraftforge.client.IItemRenderer; -public class RenderCrystallizer extends TileEntitySpecialRenderer { +public class RenderCrystallizer extends TileEntitySpecialRenderer implements IItemRendererProvider { @Override public void renderTileEntityAt(TileEntity te, double x, double y, double z, float inter) { - - GL11.glPushMatrix(); - GL11.glTranslated(x + 0.5D, y, z + 0.5D); - GL11.glEnable(GL11.GL_LIGHTING); - GL11.glDisable(GL11.GL_CULL_FACE); - + + GL11.glPushMatrix(); + GL11.glTranslated(x + 0.5D, y, z + 0.5D); + GL11.glEnable(GL11.GL_LIGHTING); + GL11.glDisable(GL11.GL_CULL_FACE); + switch(te.getBlockMetadata() - 10) { case 2: GL11.glRotatef(90, 0F, 1F, 0F); break; case 4: GL11.glRotatef(180, 0F, 1F, 0F); break; case 3: GL11.glRotatef(270, 0F, 1F, 0F); break; case 5: GL11.glRotatef(0, 0F, 1F, 0F); break; } - - TileEntityMachineCrystallizer crys = (TileEntityMachineCrystallizer)te; + + TileEntityMachineCrystallizer crys = (TileEntityMachineCrystallizer) te; GL11.glShadeModel(GL11.GL_SMOOTH); - bindTexture(ResourceManager.crystallizer_tex); - ResourceManager.crystallizer.renderPart("Body"); - bindTexture(ResourceManager.crystallizer_window_tex); - ResourceManager.crystallizer.renderPart("Windows"); - - GL11.glPushMatrix(); - GL11.glRotatef(crys.prevAngle + (crys.angle - crys.prevAngle) * inter, 0, 1, 0); - bindTexture(ResourceManager.crystallizer_spinner_tex); - ResourceManager.crystallizer.renderPart("Spinner"); - GL11.glPopMatrix(); - + bindTexture(ResourceManager.crystallizer_tex); + ResourceManager.crystallizer.renderPart("Body"); + + GL11.glPushMatrix(); + GL11.glRotatef(crys.prevAngle + (crys.angle - crys.prevAngle) * inter, 0, 1, 0); + ResourceManager.crystallizer.renderPart("Spinner"); + GL11.glPopMatrix(); + GL11.glShadeModel(GL11.GL_FLAT); - GL11.glPopMatrix(); + GL11.glPopMatrix(); + } + + @Override + public Item getItemForRenderer() { + return Item.getItemFromBlock(ModBlocks.machine_crystallizer); + } + + @Override + public IItemRenderer getRenderer() { + return new ItemRenderBase() { + public void renderNonInv() { + GL11.glScaled(0.5, 0.5, 0.5); + } + public void renderInventory() { + GL11.glTranslated(0, -4, 0); + GL11.glScaled(2, 2, 2); + } + public void renderCommon() { + GL11.glShadeModel(GL11.GL_SMOOTH); + bindTexture(ResourceManager.crystallizer_tex); + ResourceManager.crystallizer.renderPart("Body"); + ResourceManager.crystallizer.renderPart("Spinner"); + GL11.glShadeModel(GL11.GL_FLAT); + }}; } } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineArcFurnaceLarge.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineArcFurnaceLarge.java index 4417371b0..37fddad6d 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineArcFurnaceLarge.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineArcFurnaceLarge.java @@ -292,13 +292,18 @@ public class TileEntityMachineArcFurnaceLarge extends TileEntityMachineBase impl } if(liquidMode && recipe.fluidOutput != null) { - int liquid = this.getStackAmount(liquids); - int toAdd = this.getStackAmount(recipe.fluidOutput); - if(liquid + toAdd <= this.maxLiquid) { - slots[i] = null; - for(MaterialStack stack : recipe.fluidOutput) { - this.addToStack(stack); + while(slots[i] != null && slots[i].stackSize > 0) { + int liquid = this.getStackAmount(liquids); + int toAdd = this.getStackAmount(recipe.fluidOutput); + + if(liquid + toAdd <= this.maxLiquid) { + this.decrStackSize(i, 1); + for(MaterialStack stack : recipe.fluidOutput) { + this.addToStack(stack); + } + } else { + break; } } } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCrystallizer.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCrystallizer.java index b0dc6c35f..f74e1a887 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCrystallizer.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCrystallizer.java @@ -115,7 +115,7 @@ public class TileEntityMachineCrystallizer extends TileEntityMachineBase impleme ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata() - 10); ForgeDirection rot = dir.getRotation(ForgeDirection.UP); - List players = worldObj.getEntitiesWithinAABB(EntityPlayer.class, AxisAlignedBB.getBoundingBox(xCoord, yCoord, zCoord, xCoord + 1, yCoord + 6.875, zCoord + 1).offset(dir.offsetX * 0.75 + rot.offsetX * 1.25, 0, dir.offsetZ * 0.75 + rot.offsetZ * 1.25)); + List players = worldObj.getEntitiesWithinAABB(EntityPlayer.class, AxisAlignedBB.getBoundingBox(xCoord + 0.25, yCoord + 1, zCoord + 0.25, xCoord + 0.75, yCoord + 5.875, zCoord + 0.75).offset(rot.offsetX * 1.5, 0, rot.offsetZ * 1.5)); for(EntityPlayer player : players) { HbmPlayerProps props = HbmPlayerProps.getData(player); @@ -133,25 +133,16 @@ public class TileEntityMachineCrystallizer extends TileEntityMachineBase impleme protected DirPos[] getConPos() { - ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata() - BlockDummyable.offset); - - if(dir == ForgeDirection.NORTH || dir == ForgeDirection.SOUTH) { - - return new DirPos[] { - new DirPos(xCoord + 2, yCoord + 5, zCoord, Library.POS_X), - new DirPos(xCoord - 2, yCoord + 5, zCoord, Library.NEG_X) - }; - } - - if(dir == ForgeDirection.EAST || dir == ForgeDirection.WEST) { - - return new DirPos[] { - new DirPos(xCoord, yCoord + 5, zCoord + 2, Library.POS_Z), - new DirPos(xCoord, yCoord + 5, zCoord - 2, Library.NEG_Z) - }; - } - - return new DirPos[0]; + return new DirPos[] { + new DirPos(xCoord + 2, yCoord, zCoord + 1, Library.POS_X), + new DirPos(xCoord + 2, yCoord, zCoord - 2, 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 void networkUnpack(NBTTagCompound data) { diff --git a/src/main/resources/assets/hbm/models/machines/acidizer.obj b/src/main/resources/assets/hbm/models/machines/acidizer.obj new file mode 100644 index 000000000..54e5e7024 --- /dev/null +++ b/src/main/resources/assets/hbm/models/machines/acidizer.obj @@ -0,0 +1,3759 @@ +# Blender v2.79 (sub 0) OBJ File: 'acidizer.blend' +# www.blender.org +o Spinner +v 0.000000 6.250000 -0.250000 +v -0.176777 6.250000 -0.176777 +v -0.250000 6.250000 0.000000 +v -0.176777 6.250000 0.176777 +v 0.000000 6.250000 0.250000 +v 0.176777 6.250000 0.176777 +v 0.250000 6.250000 0.000000 +v 0.176777 6.250000 -0.176777 +v 0.000000 6.625000 -0.250000 +v -0.176777 6.625000 -0.176777 +v -0.250000 6.625000 0.000000 +v -0.176777 6.625000 0.176777 +v 0.000000 6.625000 0.250000 +v 0.176777 6.625000 0.176777 +v 0.250000 6.625000 0.000000 +v 0.176777 6.625000 -0.176777 +v -0.062500 6.250000 0.562500 +v 0.062500 6.250000 0.562500 +v -0.062500 6.250000 -0.562500 +v 0.062500 6.250000 -0.562500 +v -0.062500 6.500000 -0.562500 +v -0.062500 6.500000 0.562500 +v 0.062500 6.500000 0.562500 +v 0.062500 6.500000 -0.562500 +v 0.000000 1.875000 -0.500000 +v -0.353553 1.875000 -0.353553 +v -0.500000 1.875000 0.000000 +v -0.353553 1.875000 0.353553 +v 0.000000 1.875000 0.500000 +v 0.353553 1.875000 0.353553 +v 0.500000 1.875000 0.000000 +v 0.353553 1.875000 -0.353553 +v 0.000000 5.125000 -0.500000 +v -0.353553 5.125000 -0.353553 +v -0.500000 5.125000 0.000000 +v -0.353553 5.125000 0.353553 +v 0.000000 5.125000 0.500000 +v 0.353553 5.125000 0.353553 +v 0.500000 5.125000 0.000000 +v 0.353553 5.125000 -0.353553 +v -0.062500 1.875000 0.750000 +v 0.062500 1.875000 0.750000 +v -0.062500 1.875000 -0.750000 +v 0.062500 1.875000 -0.750000 +v -0.062500 5.125000 0.750000 +v 0.062500 5.125000 0.750000 +v -0.062500 5.125000 -0.750000 +v 0.062500 5.125000 -0.750000 +vt 0.485065 0.898876 +vt 0.505000 0.876477 +vt 0.524935 0.898876 +vt 0.480000 0.831461 +vt 0.570000 0.842697 +vt 0.480000 0.842697 +vt 0.570000 0.808989 +vt 0.480000 0.808989 +vt 0.570000 0.808989 +vt 0.480000 0.831461 +vt 0.480000 0.808989 +vt 0.580000 0.808989 +vt 0.570000 0.831461 +vt 0.580000 0.808989 +vt 0.570000 0.831461 +vt 0.610000 0.808989 +vt 0.600000 0.516854 +vt 0.610000 0.516854 +vt 0.610000 0.808989 +vt 0.600000 0.516854 +vt 0.610000 0.516854 +vt 0.600000 0.808989 +vt 0.480000 0.516854 +vt 0.600000 0.808989 +vt 0.480000 0.516854 +vt 0.519096 0.914715 +vt 0.505000 0.921275 +vt 0.490904 0.914715 +vt 0.490904 0.883038 +vt 0.519096 0.883038 +vt 0.580000 0.831461 +vt 0.580000 0.831461 +vt 0.480000 0.808989 +vt 0.480000 0.808989 +vt 0.730000 0.887640 +vt 0.715000 0.921348 +vt 0.715000 0.887640 +vt 0.700000 0.887640 +vt 0.685000 0.921348 +vt 0.685000 0.887640 +vt 0.670000 0.887640 +vt 0.655000 0.921348 +vt 0.655000 0.887640 +vt 0.760000 0.887640 +vt 0.745000 0.921348 +vt 0.745000 0.887640 +vt 0.730000 0.921348 +vt 0.700000 0.921348 +vt 0.670000 0.921348 +vt 0.775000 0.887640 +vt 0.760000 0.921348 +vt 0.640000 0.516854 +vt 0.610000 0.808989 +vt 0.610000 0.516854 +vt 0.850000 0.516854 +vt 0.820000 0.808989 +vt 0.820000 0.516854 +vt 0.790000 0.516854 +vt 0.760000 0.808989 +vt 0.760000 0.516854 +vt 0.730000 0.516854 +vt 0.700000 0.808989 +vt 0.700000 0.516854 +vt 0.670000 0.516854 +vt 0.640000 0.808989 +vt 0.790000 0.808989 +vt 0.730000 0.808989 +vt 0.670000 0.808989 +vt 0.775000 0.921348 +vt 0.850000 0.808989 +vn 0.0000 1.0000 0.0000 +vn 1.0000 0.0000 0.0000 +vn -1.0000 0.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +vn 0.0000 0.0000 1.0000 +vn 0.7071 0.0000 -0.7071 +vn 0.7071 0.0000 0.7071 +vn -0.7071 0.0000 0.7071 +vn -0.7071 0.0000 -0.7071 +s off +f 13/1/1 15/2/1 9/3/1 +f 23/4/1 21/5/1 22/6/1 +f 20/7/2 23/4/2 18/8/2 +f 17/9/3 21/10/3 19/11/3 +f 19/12/4 24/13/4 20/7/4 +f 18/14/5 22/15/5 17/9/5 +f 47/16/4 44/17/4 43/18/4 +f 46/19/5 41/20/5 42/21/5 +f 48/22/2 42/23/2 44/17/2 +f 45/24/3 43/25/3 41/20/3 +f 9/3/1 10/26/1 11/27/1 +f 11/27/1 12/28/1 13/1/1 +f 13/1/1 14/29/1 15/2/1 +f 15/2/1 16/30/1 9/3/1 +f 9/3/1 11/27/1 13/1/1 +f 23/4/1 24/13/1 21/5/1 +f 20/7/2 24/13/2 23/4/2 +f 17/9/3 22/15/3 21/10/3 +f 19/12/4 21/31/4 24/13/4 +f 18/14/5 23/32/5 22/15/5 +f 47/16/4 48/22/4 44/17/4 +f 46/19/5 45/24/5 41/20/5 +f 48/22/2 46/33/2 42/23/2 +f 45/24/3 47/34/3 43/25/3 +s 1 +f 8/35/6 15/36/2 7/37/2 +f 6/38/7 13/39/5 5/40/5 +f 4/41/8 11/42/3 3/43/3 +f 2/44/9 9/45/4 1/46/4 +f 1/46/4 16/47/6 8/35/6 +f 7/37/2 14/48/7 6/38/7 +f 5/40/5 12/49/8 4/41/8 +f 3/50/3 10/51/9 2/44/9 +f 26/52/9 33/53/4 25/54/4 +f 25/55/4 40/56/6 32/57/6 +f 31/58/2 38/59/7 30/60/7 +f 29/61/5 36/62/8 28/63/8 +f 27/64/3 34/65/9 26/52/9 +f 32/57/6 39/66/2 31/58/2 +f 30/60/7 37/67/5 29/61/5 +f 28/63/8 35/68/3 27/64/3 +f 8/35/6 16/47/6 15/36/2 +f 6/38/7 14/48/7 13/39/5 +f 4/41/8 12/49/8 11/42/3 +f 2/44/9 10/51/9 9/45/4 +f 1/46/4 9/45/4 16/47/6 +f 7/37/2 15/36/2 14/48/7 +f 5/40/5 13/39/5 12/49/8 +f 3/50/3 11/69/3 10/51/9 +f 26/52/9 34/65/9 33/53/4 +f 25/55/4 33/70/4 40/56/6 +f 31/58/2 39/66/2 38/59/7 +f 29/61/5 37/67/5 36/62/8 +f 27/64/3 35/68/3 34/65/9 +f 32/57/6 40/56/6 39/66/2 +f 30/60/7 38/59/7 37/67/5 +f 28/63/8 36/62/8 35/68/3 +o Body +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 -1.250000 1.000000 0.500000 +v 1.250000 1.000000 0.500000 +v -1.250000 1.000000 -0.500000 +v 1.250000 1.000000 -0.500000 +v 0.500000 1.000000 1.250000 +v 0.500000 1.000000 -1.250000 +v -0.500000 1.000000 1.250000 +v -0.500000 1.000000 -1.250000 +v -1.250000 1.875000 0.500000 +v 1.250000 1.875000 0.500000 +v -1.250000 1.875000 -0.500000 +v 1.250000 1.875000 -0.500000 +v 0.500000 1.875000 1.250000 +v 0.500000 1.875000 -1.250000 +v -0.500000 1.875000 1.250000 +v -0.500000 1.875000 -1.250000 +v -1.312500 1.875000 0.500000 +v 1.312500 1.875000 0.500000 +v -1.312500 1.875000 -0.500000 +v 1.312500 1.875000 -0.500000 +v 0.500000 1.875000 1.312500 +v 0.500000 1.875000 -1.312500 +v -0.500000 1.875000 1.312500 +v -0.500000 1.875000 -1.312500 +v -1.312500 2.125000 0.500000 +v 1.312500 2.125000 0.500000 +v -1.312500 2.125000 -0.500000 +v 1.312500 2.125000 -0.500000 +v 0.500000 2.125000 1.312500 +v 0.500000 2.125000 -1.312500 +v -0.500000 2.125000 1.312500 +v -0.500000 2.125000 -1.312500 +v -1.250000 2.125000 0.500000 +v 1.250000 2.125000 0.500000 +v -1.250000 2.125000 -0.500000 +v 1.250000 2.125000 -0.500000 +v 0.500000 2.125000 1.250000 +v 0.500000 2.125000 -1.250000 +v -0.500000 2.125000 1.250000 +v -0.500000 2.125000 -1.250000 +v -1.250000 6.000000 0.500000 +v 1.250000 6.000000 0.500000 +v -1.250000 6.000000 -0.500000 +v 1.250000 6.000000 -0.500000 +v 0.500000 6.000000 1.250000 +v 0.500000 6.000000 -1.250000 +v -0.500000 6.000000 1.250000 +v -0.500000 6.000000 -1.250000 +v -1.250000 4.875000 0.500000 +v 1.250000 4.875000 0.500000 +v -1.250000 4.875000 -0.500000 +v 1.250000 4.875000 -0.500000 +v 0.500000 4.875000 1.250000 +v 0.500000 4.875000 -1.250000 +v -0.500000 4.875000 1.250000 +v -0.500000 4.875000 -1.250000 +v -1.312500 4.875000 0.500000 +v 1.312500 4.875000 0.500000 +v -1.312500 4.875000 -0.500000 +v 1.312500 4.875000 -0.500000 +v 0.500000 4.875000 1.312500 +v 0.500000 4.875000 -1.312500 +v -0.500000 4.875000 1.312500 +v -0.500000 4.875000 -1.312500 +v -1.312500 5.125000 0.500000 +v 1.312500 5.125000 0.500000 +v -1.312500 5.125000 -0.500000 +v 1.312500 5.125000 -0.500000 +v 0.500000 5.125000 1.312500 +v 0.500000 5.125000 -1.312500 +v -0.500000 5.125000 1.312500 +v -0.500000 5.125000 -1.312500 +v -1.250000 5.125000 0.500000 +v 1.250000 5.125000 0.500000 +v -1.250000 5.125000 -0.500000 +v 1.250000 5.125000 -0.500000 +v 0.500000 5.125000 1.250000 +v 0.500000 5.125000 -1.250000 +v -0.500000 5.125000 1.250000 +v -0.500000 5.125000 -1.250000 +v -0.312500 6.000000 0.750000 +v 0.312500 6.000000 0.750000 +v -0.312500 6.000000 -0.750000 +v 0.312500 6.000000 -0.750000 +v 0.750000 6.000000 0.312500 +v 0.750000 6.000000 -0.312500 +v -0.750000 6.000000 0.312500 +v -0.750000 6.000000 -0.312500 +v -0.312500 6.500000 0.750000 +v 0.312500 6.500000 0.750000 +v 0.312500 6.500000 -0.750000 +v -0.312500 6.500000 -0.750000 +v 0.750000 6.500000 0.312500 +v 0.750000 6.500000 -0.312500 +v -0.750000 6.500000 -0.312500 +v -0.750000 6.500000 0.312500 +v -0.250000 6.500000 0.625000 +v 0.250000 6.500000 0.625000 +v -0.250000 6.500000 -0.625000 +v 0.250000 6.500000 -0.625000 +v 0.625000 6.500000 0.250000 +v 0.625000 6.500000 -0.250000 +v -0.625000 6.500000 0.250000 +v -0.625000 6.500000 -0.250000 +v -0.250000 6.250000 0.625000 +v 0.250000 6.250000 0.625000 +v 0.250000 6.250000 -0.625000 +v -0.250000 6.250000 -0.625000 +v 0.625000 6.250000 0.250000 +v 0.625000 6.250000 -0.250000 +v -0.625000 6.250000 -0.250000 +v -0.625000 6.250000 0.250000 +v -0.375000 2.375000 1.250000 +v 0.375000 2.375000 1.250000 +v -0.375000 4.625000 1.250000 +v 0.375000 4.625000 1.250000 +v 0.375000 2.375000 -1.250000 +v -0.375000 2.375000 -1.250000 +v 0.375000 4.625000 -1.250000 +v -0.375000 4.625000 -1.250000 +v 1.250000 2.375000 0.375000 +v 1.250000 2.375000 -0.375000 +v 1.250000 4.625000 0.375000 +v 1.250000 4.625000 -0.375000 +v -1.250000 2.375000 -0.375000 +v -1.250000 2.375000 0.375000 +v -1.250000 4.625000 -0.375000 +v -1.250000 4.625000 0.375000 +v -0.375000 2.375000 0.937500 +v 0.375000 2.375000 0.937500 +v -0.375000 2.375000 -0.937500 +v 0.375000 2.375000 -0.937500 +v -0.375000 4.625000 0.937500 +v 0.375000 4.625000 0.937500 +v -0.375000 4.625000 -0.937500 +v 0.375000 4.625000 -0.937500 +v -0.937500 2.375000 -0.375000 +v -0.937500 2.375000 0.375000 +v -0.937500 4.625000 -0.375000 +v -0.937500 4.625000 0.375000 +v 0.937500 2.375000 0.375000 +v 0.937500 2.375000 -0.375000 +v 0.937500 4.625000 0.375000 +v 0.937500 4.625000 -0.375000 +v -0.375000 1.875000 0.937500 +v 0.375000 1.875000 0.937500 +v -0.375000 1.875000 -0.937500 +v 0.375000 1.875000 -0.937500 +v -0.937500 1.875000 -0.375000 +v -0.937500 1.875000 0.375000 +v 0.937500 1.875000 0.375000 +v 0.937500 1.875000 -0.375000 +v -0.375000 5.125000 0.937500 +v 0.375000 5.125000 0.937500 +v -0.375000 5.125000 -0.937500 +v 0.375000 5.125000 -0.937500 +v -0.937500 5.125000 -0.375000 +v -0.937500 5.125000 0.375000 +v 0.937500 5.125000 0.375000 +v 0.937500 5.125000 -0.375000 +v 1.281631 1.000000 0.839689 +v 1.193243 1.000000 0.803078 +v 1.104854 1.000000 0.839689 +v 1.068243 1.000000 0.928078 +v 1.104854 1.000000 1.016466 +v 1.193243 1.000000 1.053077 +v 1.281631 1.000000 1.016466 +v 1.318243 1.000000 0.928078 +v 1.281631 6.000000 0.839689 +v 1.193243 6.000000 0.803078 +v 1.104854 6.000000 0.839689 +v 1.068243 6.000000 0.928078 +v 1.104854 6.000000 1.016466 +v 1.193243 6.000000 1.053077 +v 1.281631 6.000000 1.016466 +v 1.318243 6.000000 0.928078 +v 1.255743 6.088388 0.813801 +v 1.185660 6.025888 0.795495 +v 1.060660 6.025888 0.920495 +v 1.078966 6.088388 0.990578 +v 1.149049 6.150888 1.008883 +v 1.229854 6.176776 0.964689 +v 1.274049 6.150888 0.883883 +v 1.193243 6.125000 0.751301 +v 1.167354 6.036611 0.777189 +v 1.042355 6.036611 0.902189 +v 1.016466 6.125000 0.928078 +v 1.042355 6.213388 0.902189 +v 1.104854 6.250000 0.839689 +v 1.167354 6.213388 0.777189 +v 0.662913 6.000000 0.397748 +v 0.751301 6.125000 0.309359 +v 0.725412 6.036611 0.335248 +v 0.600413 6.036611 0.460248 +v 0.574524 6.125000 0.486136 +v 0.600413 6.213388 0.460248 +v 0.662912 6.250000 0.397748 +v 0.725412 6.213388 0.335248 +v 1.016466 1.000000 1.104855 +v 0.928078 1.000000 1.068243 +v 0.839689 1.000000 1.104855 +v 0.803078 1.000000 1.193243 +v 0.839689 1.000000 1.281631 +v 0.928078 1.000000 1.318243 +v 1.016466 1.000000 1.281631 +v 1.053078 1.000000 1.193243 +v 1.016466 6.000000 1.104855 +v 0.928078 6.000000 1.068243 +v 0.839689 6.000000 1.104855 +v 0.803078 6.000000 1.193243 +v 0.839689 6.000000 1.281631 +v 0.928078 6.000000 1.318243 +v 1.016466 6.000000 1.281631 +v 1.053078 6.000000 1.193243 +v 0.990578 6.088388 1.078966 +v 0.920495 6.025888 1.060660 +v 0.795495 6.025888 1.185660 +v 0.813801 6.088388 1.255743 +v 0.883884 6.150888 1.274049 +v 0.964689 6.176776 1.229855 +v 1.008883 6.150888 1.149049 +v 0.928078 6.125000 1.016466 +v 0.902189 6.036611 1.042354 +v 0.777189 6.036611 1.167354 +v 0.751301 6.125000 1.193243 +v 0.777189 6.213388 1.167354 +v 0.839689 6.250000 1.104854 +v 0.902189 6.213388 1.042354 +v 0.397748 6.000000 0.662912 +v 0.486136 6.125000 0.574524 +v 0.460248 6.036611 0.600412 +v 0.335248 6.036611 0.725412 +v 0.309359 6.125000 0.751301 +v 0.335248 6.213388 0.725412 +v 0.397748 6.250000 0.662912 +v 0.460248 6.213388 0.600412 +v 1.125000 1.000000 0.750000 +v 0.937500 1.000000 0.800241 +v 0.800241 1.000000 0.937500 +v 0.750000 1.000000 1.125000 +v 0.800241 1.000000 1.312500 +v 0.937500 1.000000 1.449759 +v 1.125000 1.000000 1.500000 +v 1.312500 1.000000 1.449759 +v 1.449759 1.000000 1.312500 +v 1.500000 1.000000 1.125000 +v 1.449760 1.000000 0.937500 +v 1.312500 1.000000 0.800241 +v 1.125000 2.375000 0.750000 +v 0.937500 2.375000 0.800241 +v 0.800241 2.375000 0.937500 +v 0.750000 2.375000 1.125000 +v 0.800241 2.375000 1.312500 +v 0.937500 2.375000 1.449759 +v 1.125000 2.375000 1.500000 +v 1.312500 2.375000 1.449759 +v 1.449759 2.375000 1.312500 +v 1.500000 2.375000 1.125000 +v 1.449760 2.375000 0.937500 +v 1.312500 2.375000 0.800241 +v 1.125000 2.699759 0.937500 +v 1.125000 2.562500 0.800241 +v 1.218750 2.699759 0.962620 +v 1.287380 2.562500 0.843750 +v 1.125000 2.750000 1.125000 +v 1.287380 2.699759 1.031250 +v 1.406250 2.562500 0.962620 +v 1.312500 2.699759 1.125000 +v 1.449759 2.562500 1.125000 +v 1.287380 2.699759 1.218750 +v 1.406250 2.562500 1.287380 +v 1.218750 2.699759 1.287380 +v 1.287380 2.562500 1.406250 +v 1.125000 2.699759 1.312500 +v 1.125000 2.562500 1.449759 +v 1.031250 2.699759 1.287380 +v 0.962620 2.562500 1.406250 +v 0.962620 2.699759 1.218750 +v 0.843750 2.562500 1.287380 +v 0.937500 2.699759 1.125000 +v 0.800241 2.562500 1.125000 +v 0.962620 2.699759 1.031250 +v 0.843750 2.562500 0.962620 +v 1.031250 2.699759 0.962620 +v 0.962620 2.562500 0.843750 +v 1.458408 4.375000 0.928078 +v 0.928078 4.375000 1.458407 +v 1.458408 3.625000 0.928078 +v 0.928078 3.625000 1.458407 +v 1.104854 4.375000 0.574524 +v 0.574524 4.375000 1.104854 +v 1.104854 3.625000 0.574524 +v 0.574524 3.625000 1.104854 +v -1.125000 2.375000 -0.375000 +v -1.125000 2.375000 0.375000 +v -1.125000 4.625000 -0.375000 +v -1.125000 4.625000 0.375000 +v 1.125000 2.375000 0.375000 +v 1.125000 2.375000 -0.375000 +v 1.125000 4.625000 0.375000 +v 1.125000 4.625000 -0.375000 +v -0.375000 2.375000 1.125000 +v 0.375000 2.375000 1.125000 +v -0.375000 4.624999 1.125000 +v 0.375000 4.624999 1.125000 +v 0.375000 2.375000 -1.125000 +v -0.375000 2.375000 -1.125000 +v 0.375000 4.624999 -1.125000 +v -0.375000 4.624999 -1.125000 +v 0.312500 1.000000 1.500000 +v 0.437500 1.000000 1.500000 +v 0.312500 1.000000 1.375000 +v 0.437500 1.000000 1.375000 +v 0.312500 6.125000 1.375000 +v 0.312500 6.125000 1.500000 +v 0.437500 6.125000 1.500000 +v 0.437500 6.125000 1.375000 +v 0.312500 6.250000 1.375000 +v 0.437500 6.250000 1.375000 +v 0.437500 6.125000 1.000000 +v 0.312500 6.125000 1.000000 +v 0.437500 6.250000 1.000000 +v 0.312500 6.250000 1.000000 +v 0.437500 6.125000 0.875000 +v 0.312500 6.125000 0.875000 +v 0.437500 6.000000 1.000000 +v 0.312500 6.000000 1.000000 +v 0.437500 6.000000 0.875000 +v 0.312500 6.000000 0.875000 +v -0.312500 1.312500 1.468750 +v 0.312500 1.312500 1.468750 +v -0.312500 1.312500 1.406250 +v 0.312500 1.312500 1.406250 +v -0.312500 1.437500 1.406250 +v -0.312500 1.437500 1.468750 +v 0.312500 1.437500 1.468750 +v 0.312500 1.437500 1.406250 +v -0.437500 1.000000 1.500000 +v -0.312500 1.000000 1.500000 +v -0.437500 1.000000 1.375000 +v -0.312500 1.000000 1.375000 +v -0.437500 6.125000 1.375000 +v -0.437500 6.125000 1.500000 +v -0.312500 6.125000 1.500000 +v -0.312500 6.125000 1.375000 +v -0.437500 6.250000 1.375000 +v -0.312500 6.250000 1.375000 +v -0.312500 6.125000 1.000000 +v -0.437500 6.125000 1.000000 +v -0.312500 6.250000 1.000000 +v -0.437500 6.250000 1.000000 +v -0.312500 6.125000 0.875000 +v -0.437500 6.125000 0.875000 +v -0.312500 6.000000 1.000000 +v -0.437500 6.000000 1.000000 +v -0.312500 6.000000 0.875000 +v -0.437500 6.000000 0.875000 +v -0.312500 1.812500 1.468750 +v 0.312500 1.812500 1.468750 +v -0.312500 1.812500 1.406250 +v 0.312500 1.812500 1.406250 +v -0.312500 1.937500 1.406250 +v -0.312500 1.937500 1.468750 +v 0.312500 1.937500 1.468750 +v 0.312500 1.937500 1.406250 +v -0.312500 2.312500 1.468750 +v 0.312500 2.312500 1.468750 +v -0.312500 2.312500 1.406250 +v 0.312500 2.312500 1.406250 +v -0.312500 2.437500 1.406250 +v -0.312500 2.437500 1.468750 +v 0.312500 2.437500 1.468750 +v 0.312500 2.437500 1.406250 +v -0.312500 2.812500 1.468750 +v 0.312500 2.812500 1.468750 +v -0.312500 2.812500 1.406250 +v 0.312500 2.812500 1.406250 +v -0.312500 2.937500 1.406250 +v -0.312500 2.937500 1.468750 +v 0.312500 2.937500 1.468750 +v 0.312500 2.937500 1.406250 +v -0.312500 3.312500 1.468750 +v 0.312500 3.312500 1.468750 +v -0.312500 3.312500 1.406250 +v 0.312500 3.312500 1.406250 +v -0.312500 3.437500 1.406250 +v -0.312500 3.437500 1.468750 +v 0.312500 3.437500 1.468750 +v 0.312500 3.437500 1.406250 +v -0.312500 3.812500 1.468750 +v 0.312500 3.812500 1.468750 +v -0.312500 3.812500 1.406250 +v 0.312500 3.812500 1.406250 +v -0.312500 3.937500 1.406250 +v -0.312500 3.937500 1.468750 +v 0.312500 3.937500 1.468750 +v 0.312500 3.937500 1.406250 +v -0.312500 4.312500 1.468750 +v 0.312500 4.312500 1.468750 +v -0.312500 4.312500 1.406250 +v 0.312500 4.312500 1.406250 +v -0.312500 4.437500 1.406250 +v -0.312500 4.437500 1.468750 +v 0.312500 4.437500 1.468750 +v 0.312500 4.437500 1.406250 +v -0.312500 4.812500 1.468750 +v 0.312500 4.812500 1.468750 +v -0.312500 4.812500 1.406250 +v 0.312500 4.812500 1.406250 +v -0.312500 4.937500 1.406250 +v -0.312500 4.937500 1.468750 +v 0.312500 4.937500 1.468750 +v 0.312500 4.937500 1.406250 +v -0.312500 5.312500 1.468750 +v 0.312500 5.312500 1.468750 +v -0.312500 5.312500 1.406250 +v 0.312500 5.312500 1.406250 +v -0.312500 5.437500 1.406250 +v -0.312500 5.437500 1.468750 +v 0.312500 5.437500 1.468750 +v 0.312500 5.437500 1.406250 +v -0.312500 5.812500 1.468750 +v 0.312500 5.812500 1.468750 +v -0.312500 5.812500 1.406250 +v 0.312500 5.812500 1.406250 +v -0.312500 5.937500 1.406250 +v -0.312500 5.937500 1.468750 +v 0.312500 5.937500 1.468750 +v 0.312500 5.937500 1.406250 +v 1.125000 1.000000 -1.500000 +v 0.937500 1.000000 -1.449759 +v 0.800241 1.000000 -1.312500 +v 0.750000 1.000000 -1.125000 +v 0.800241 1.000000 -0.937500 +v 0.937500 1.000000 -0.800241 +v 1.125000 1.000000 -0.750000 +v 1.312500 1.000000 -0.800241 +v 1.449759 1.000000 -0.937500 +v 1.500000 1.000000 -1.125000 +v 1.449760 1.000000 -1.312500 +v 1.312500 1.000000 -1.449759 +v 1.125000 2.375000 -1.500000 +v 0.937500 2.375000 -1.449759 +v 0.800241 2.375000 -1.312500 +v 0.750000 2.375000 -1.125000 +v 0.800241 2.375000 -0.937500 +v 0.937500 2.375000 -0.800241 +v 1.125000 2.375000 -0.750000 +v 1.312500 2.375000 -0.800241 +v 1.449759 2.375000 -0.937500 +v 1.500000 2.375000 -1.125000 +v 1.449760 2.375000 -1.312500 +v 1.312500 2.375000 -1.449759 +v 1.125000 2.699759 -1.312500 +v 1.125000 2.562500 -1.449759 +v 1.218750 2.699759 -1.287380 +v 1.287380 2.562500 -1.406250 +v 1.125000 2.750000 -1.125000 +v 1.287380 2.699759 -1.218750 +v 1.406250 2.562500 -1.287380 +v 1.312500 2.699759 -1.125000 +v 1.449759 2.562500 -1.125000 +v 1.287380 2.699759 -1.031250 +v 1.406250 2.562500 -0.962620 +v 1.218750 2.699759 -0.962620 +v 1.287380 2.562500 -0.843750 +v 1.125000 2.699759 -0.937500 +v 1.125000 2.562500 -0.800241 +v 1.031250 2.699759 -0.962620 +v 0.962620 2.562500 -0.843750 +v 0.962620 2.699759 -1.031250 +v 0.843750 2.562500 -0.962620 +v 0.937500 2.699759 -1.125000 +v 0.800241 2.562500 -1.125000 +v 0.962620 2.699759 -1.218750 +v 0.843750 2.562500 -1.287380 +v 1.031250 2.699759 -1.287380 +v 0.962620 2.562500 -1.406250 +v -1.125000 1.000000 0.750000 +v -1.312500 1.000000 0.800241 +v -1.449759 1.000000 0.937500 +v -1.500000 1.000000 1.125000 +v -1.449759 1.000000 1.312500 +v -1.312500 1.000000 1.449759 +v -1.125000 1.000000 1.500000 +v -0.937500 1.000000 1.449759 +v -0.800241 1.000000 1.312500 +v -0.750000 1.000000 1.125000 +v -0.800240 1.000000 0.937500 +v -0.937500 1.000000 0.800241 +v -1.125000 2.375000 0.750000 +v -1.312500 2.375000 0.800241 +v -1.449759 2.375000 0.937500 +v -1.500000 2.375000 1.125000 +v -1.449759 2.375000 1.312500 +v -1.312500 2.375000 1.449759 +v -1.125000 2.375000 1.500000 +v -0.937500 2.375000 1.449759 +v -0.800241 2.375000 1.312500 +v -0.750000 2.375000 1.125000 +v -0.800240 2.375000 0.937500 +v -0.937500 2.375000 0.800241 +v -1.125000 2.699759 0.937500 +v -1.125000 2.562500 0.800241 +v -1.031250 2.699759 0.962620 +v -0.962620 2.562500 0.843750 +v -1.125000 2.750000 1.125000 +v -0.962620 2.699759 1.031250 +v -0.843750 2.562500 0.962620 +v -0.937500 2.699759 1.125000 +v -0.800241 2.562500 1.125000 +v -0.962620 2.699759 1.218750 +v -0.843750 2.562500 1.287380 +v -1.031250 2.699759 1.287380 +v -0.962620 2.562500 1.406250 +v -1.125000 2.699759 1.312500 +v -1.125000 2.562500 1.449759 +v -1.218750 2.699759 1.287380 +v -1.287380 2.562500 1.406250 +v -1.287380 2.699759 1.218750 +v -1.406250 2.562500 1.287380 +v -1.312500 2.699759 1.125000 +v -1.449759 2.562500 1.125000 +v -1.287380 2.699759 1.031250 +v -1.406250 2.562500 0.962620 +v -1.218750 2.699759 0.962620 +v -1.287380 2.562500 0.843750 +v -1.125000 1.000000 -1.500000 +v -1.312500 1.000000 -1.449759 +v -1.449759 1.000000 -1.312500 +v -1.500000 1.000000 -1.125000 +v -1.449759 1.000000 -0.937500 +v -1.312500 1.000000 -0.800241 +v -1.125000 1.000000 -0.750000 +v -0.937500 1.000000 -0.800241 +v -0.800241 1.000000 -0.937500 +v -0.750000 1.000000 -1.125000 +v -0.800240 1.000000 -1.312500 +v -0.937500 1.000000 -1.449759 +v -1.125000 2.375000 -1.500000 +v -1.312500 2.375000 -1.449759 +v -1.449759 2.375000 -1.312500 +v -1.500000 2.375000 -1.125000 +v -1.449759 2.375000 -0.937500 +v -1.312500 2.375000 -0.800241 +v -1.125000 2.375000 -0.750000 +v -0.937500 2.375000 -0.800241 +v -0.800241 2.375000 -0.937500 +v -0.750000 2.375000 -1.125000 +v -0.800240 2.375000 -1.312500 +v -0.937500 2.375000 -1.449759 +v -1.125000 2.699759 -1.312500 +v -1.125000 2.562500 -1.449759 +v -1.031250 2.699759 -1.287380 +v -0.962620 2.562500 -1.406250 +v -1.125000 2.750000 -1.125000 +v -0.962620 2.699759 -1.218750 +v -0.843750 2.562500 -1.287380 +v -0.937500 2.699759 -1.125000 +v -0.800241 2.562500 -1.125000 +v -0.962620 2.699759 -1.031250 +v -0.843750 2.562500 -0.962620 +v -1.031250 2.699759 -0.962620 +v -0.962620 2.562500 -0.843750 +v -1.125000 2.699759 -0.937500 +v -1.125000 2.562500 -0.800241 +v -1.218750 2.699759 -0.962620 +v -1.287380 2.562500 -0.843750 +v -1.287380 2.699759 -1.031250 +v -1.406250 2.562500 -0.962620 +v -1.312500 2.699759 -1.125000 +v -1.449759 2.562500 -1.125000 +v -1.287380 2.699759 -1.218750 +v -1.406250 2.562500 -1.287380 +v -1.218750 2.699759 -1.287380 +v -1.287380 2.562500 -1.406250 +v -1.281631 1.000000 -0.839689 +v -1.193243 1.000000 -0.803078 +v -1.104854 1.000000 -0.839689 +v -1.068243 1.000000 -0.928078 +v -1.104854 1.000000 -1.016466 +v -1.193243 1.000000 -1.053077 +v -1.281631 1.000000 -1.016466 +v -1.318243 1.000000 -0.928078 +v -1.281631 6.000000 -0.839689 +v -1.193243 6.000000 -0.803078 +v -1.104854 6.000000 -0.839689 +v -1.068243 6.000000 -0.928078 +v -1.104854 6.000000 -1.016466 +v -1.193243 6.000000 -1.053077 +v -1.281631 6.000000 -1.016466 +v -1.318243 6.000000 -0.928078 +v -1.255743 6.088388 -0.813801 +v -1.185660 6.025888 -0.795495 +v -1.060660 6.025888 -0.920495 +v -1.078966 6.088388 -0.990578 +v -1.149049 6.150888 -1.008883 +v -1.229854 6.176776 -0.964689 +v -1.274049 6.150888 -0.883883 +v -1.193243 6.125000 -0.751301 +v -1.167355 6.036611 -0.777189 +v -1.042355 6.036611 -0.902189 +v -1.016466 6.125000 -0.928078 +v -1.042355 6.213388 -0.902189 +v -1.104855 6.250000 -0.839689 +v -1.167355 6.213388 -0.777189 +v -0.662913 6.000000 -0.397747 +v -0.751301 6.125000 -0.309359 +v -0.725412 6.036611 -0.335247 +v -0.600413 6.036611 -0.460247 +v -0.574524 6.125000 -0.486136 +v -0.600413 6.213388 -0.460247 +v -0.662912 6.250000 -0.397747 +v -0.725412 6.213388 -0.335247 +v -1.016466 1.000000 -1.104855 +v -0.928078 1.000000 -1.068243 +v -0.839690 1.000000 -1.104855 +v -0.803078 1.000000 -1.193243 +v -0.839690 1.000000 -1.281631 +v -0.928078 1.000000 -1.318243 +v -1.016466 1.000000 -1.281631 +v -1.053078 1.000000 -1.193243 +v -1.016466 6.000000 -1.104855 +v -0.928078 6.000000 -1.068243 +v -0.839690 6.000000 -1.104855 +v -0.803078 6.000000 -1.193243 +v -0.839690 6.000000 -1.281631 +v -0.928078 6.000000 -1.318243 +v -1.016466 6.000000 -1.281631 +v -1.053078 6.000000 -1.193243 +v -0.990578 6.088388 -1.078966 +v -0.920495 6.025888 -1.060660 +v -0.795495 6.025888 -1.185660 +v -0.813801 6.088388 -1.255743 +v -0.883884 6.150888 -1.274049 +v -0.964690 6.176776 -1.229855 +v -1.008883 6.150888 -1.149049 +v -0.928078 6.125000 -1.016466 +v -0.902189 6.036611 -1.042354 +v -0.777189 6.036611 -1.167354 +v -0.751301 6.125000 -1.193243 +v -0.777189 6.213388 -1.167354 +v -0.839689 6.250000 -1.104854 +v -0.902189 6.213388 -1.042354 +v -0.397748 6.000000 -0.662912 +v -0.486136 6.125000 -0.574524 +v -0.460248 6.036611 -0.600412 +v -0.335248 6.036611 -0.725412 +v -0.309359 6.125000 -0.751301 +v -0.335248 6.213388 -0.725412 +v -0.397748 6.250000 -0.662912 +v -0.460248 6.213388 -0.600412 +v -1.458408 4.375000 -0.928078 +v -0.928078 4.375000 -1.458407 +v -1.458408 3.625000 -0.928078 +v -0.928078 3.625000 -1.458407 +v -1.104854 4.375000 -0.574524 +v -0.574524 4.375000 -1.104854 +v -1.104854 3.625000 -0.574524 +v -0.574524 3.625000 -1.104854 +v 0.839689 1.000000 -1.281631 +v 0.803078 1.000000 -1.193243 +v 0.839689 1.000000 -1.104854 +v 0.928078 1.000000 -1.068243 +v 1.016466 1.000000 -1.104854 +v 1.053077 1.000000 -1.193243 +v 1.016466 1.000000 -1.281631 +v 0.928078 1.000000 -1.318243 +v 0.839689 5.999999 -1.281631 +v 0.803078 5.999999 -1.193243 +v 0.839689 5.999999 -1.104854 +v 0.928078 5.999999 -1.068243 +v 1.016466 5.999999 -1.104854 +v 1.053077 5.999999 -1.193243 +v 1.016466 5.999999 -1.281631 +v 0.928078 5.999999 -1.318243 +v 0.813801 6.088387 -1.255743 +v 0.795495 6.025887 -1.185660 +v 0.920495 6.025887 -1.060660 +v 0.990578 6.088387 -1.078966 +v 1.008883 6.150887 -1.149049 +v 0.964689 6.176776 -1.229854 +v 0.883883 6.150887 -1.274049 +v 0.751301 6.124999 -1.193243 +v 0.777189 6.036611 -1.167354 +v 0.902189 6.036611 -1.042355 +v 0.928078 6.124999 -1.016466 +v 0.902189 6.213387 -1.042355 +v 0.839689 6.249999 -1.104854 +v 0.777189 6.213387 -1.167354 +v 0.397747 5.999999 -0.662913 +v 0.309359 6.124999 -0.751301 +v 0.335247 6.036611 -0.725412 +v 0.460247 6.036611 -0.600413 +v 0.486136 6.124999 -0.574524 +v 0.460247 6.213387 -0.600413 +v 0.397747 6.249999 -0.662912 +v 0.335247 6.213387 -0.725412 +v 1.104855 1.000000 -1.016466 +v 1.068243 1.000000 -0.928078 +v 1.104855 1.000000 -0.839689 +v 1.193243 1.000000 -0.803078 +v 1.281631 1.000000 -0.839689 +v 1.318243 1.000000 -0.928078 +v 1.281631 1.000000 -1.016466 +v 1.193243 1.000000 -1.053078 +v 1.104855 5.999999 -1.016466 +v 1.068243 5.999999 -0.928078 +v 1.104855 5.999999 -0.839689 +v 1.193243 5.999999 -0.803078 +v 1.281631 5.999999 -0.839689 +v 1.318243 5.999999 -0.928078 +v 1.281631 5.999999 -1.016466 +v 1.193243 5.999999 -1.053078 +v 1.078966 6.088387 -0.990578 +v 1.060660 6.025887 -0.920495 +v 1.185660 6.025887 -0.795495 +v 1.255743 6.088387 -0.813801 +v 1.274049 6.150887 -0.883884 +v 1.229855 6.176776 -0.964689 +v 1.149049 6.150887 -1.008883 +v 1.016466 6.124999 -0.928078 +v 1.042354 6.036611 -0.902189 +v 1.167354 6.036611 -0.777189 +v 1.193243 6.124999 -0.751301 +v 1.167354 6.213387 -0.777189 +v 1.104854 6.249999 -0.839689 +v 1.042354 6.213387 -0.902189 +v 0.662912 5.999999 -0.397748 +v 0.574524 6.124999 -0.486136 +v 0.600412 6.036611 -0.460248 +v 0.725412 6.036611 -0.335248 +v 0.751301 6.124999 -0.309359 +v 0.725412 6.213387 -0.335248 +v 0.662912 6.249999 -0.397748 +v 0.600412 6.213387 -0.460248 +v 0.928078 4.375000 -1.458408 +v 1.458407 4.375000 -0.928078 +v 0.928078 3.625000 -1.458408 +v 1.458407 3.625000 -0.928078 +v 0.574524 4.375000 -1.104854 +v 1.104854 4.375000 -0.574524 +v 0.574524 3.625000 -1.104854 +v 1.104854 3.625000 -0.574524 +v -0.839689 1.000000 1.281631 +v -0.803078 1.000000 1.193243 +v -0.839689 1.000000 1.104854 +v -0.928078 1.000000 1.068243 +v -1.016466 1.000000 1.104854 +v -1.053077 1.000000 1.193243 +v -1.016466 1.000000 1.281631 +v -0.928078 1.000000 1.318243 +v -0.839689 5.999999 1.281631 +v -0.803078 5.999999 1.193243 +v -0.839689 5.999999 1.104854 +v -0.928078 5.999999 1.068243 +v -1.016466 5.999999 1.104854 +v -1.053077 5.999999 1.193243 +v -1.016466 5.999999 1.281631 +v -0.928078 5.999999 1.318243 +v -0.813801 6.088387 1.255743 +v -0.795495 6.025887 1.185660 +v -0.920495 6.025887 1.060660 +v -0.990578 6.088387 1.078966 +v -1.008883 6.150887 1.149049 +v -0.964689 6.176776 1.229854 +v -0.883883 6.150887 1.274048 +v -0.751301 6.124999 1.193243 +v -0.777189 6.036611 1.167355 +v -0.902189 6.036611 1.042355 +v -0.928078 6.124999 1.016466 +v -0.902189 6.213387 1.042355 +v -0.839689 6.249999 1.104855 +v -0.777189 6.213387 1.167355 +v -0.397747 5.999999 0.662913 +v -0.309359 6.124999 0.751301 +v -0.335247 6.036611 0.725412 +v -0.460247 6.036611 0.600413 +v -0.486136 6.124999 0.574524 +v -0.460247 6.213387 0.600413 +v -0.397747 6.249999 0.662912 +v -0.335247 6.213387 0.725412 +v -1.104855 1.000000 1.016466 +v -1.068243 1.000000 0.928078 +v -1.104855 1.000000 0.839690 +v -1.193243 1.000000 0.803078 +v -1.281631 1.000000 0.839690 +v -1.318243 1.000000 0.928078 +v -1.281631 1.000000 1.016466 +v -1.193243 1.000000 1.053078 +v -1.104855 5.999999 1.016466 +v -1.068243 5.999999 0.928078 +v -1.104855 5.999999 0.839690 +v -1.193243 5.999999 0.803078 +v -1.281631 5.999999 0.839690 +v -1.318243 5.999999 0.928078 +v -1.281631 5.999999 1.016466 +v -1.193243 5.999999 1.053078 +v -1.078966 6.088387 0.990578 +v -1.060660 6.025887 0.920496 +v -1.185660 6.025887 0.795496 +v -1.255743 6.088387 0.813801 +v -1.274049 6.150887 0.883884 +v -1.229855 6.176776 0.964690 +v -1.149049 6.150887 1.008883 +v -1.016466 6.124999 0.928078 +v -1.042354 6.036611 0.902189 +v -1.167354 6.036611 0.777189 +v -1.193243 6.124999 0.751301 +v -1.167354 6.213387 0.777189 +v -1.104854 6.249999 0.839689 +v -1.042354 6.213387 0.902189 +v -0.662912 5.999999 0.397748 +v -0.574524 6.124999 0.486136 +v -0.600412 6.036611 0.460248 +v -0.725412 6.036611 0.335248 +v -0.751301 6.124999 0.309359 +v -0.725412 6.213387 0.335248 +v -0.662912 6.249999 0.397748 +v -0.600412 6.213387 0.460248 +v -0.928078 4.375000 1.458408 +v -1.458407 4.375000 0.928078 +v -0.928078 3.625000 1.458408 +v -1.458407 3.625000 0.928078 +v -0.574524 4.375000 1.104854 +v -1.104854 4.375000 0.574524 +v -0.574524 3.625000 1.104854 +v -1.104854 3.625000 0.574524 +vt 1.000000 0.000000 +vt 0.000000 1.000000 +vt 0.000000 0.000000 +vt -0.000000 0.089888 +vt 0.240000 0.359551 +vt -0.000000 0.359551 +vt 0.240000 -0.000000 +vt 0.000000 0.089888 +vt 0.240000 0.000000 +vt -0.000000 0.000000 +vt 0.240000 -0.000000 +vt 0.000000 0.089888 +vt 0.000000 -0.000000 +vt 0.240000 -0.000000 +vt 0.000000 0.089888 +vt 0.000000 -0.000000 +vt 0.720000 0.078652 +vt 0.640000 0.000000 +vt 0.720000 -0.000000 +vt 0.320000 0.078652 +vt 0.240000 -0.000000 +vt 0.320000 -0.000000 +vt 0.560000 -0.000000 +vt 0.480000 0.078652 +vt 0.480000 0.000000 +vt 0.400000 0.078652 +vt 0.400000 0.000000 +vt 0.880000 -0.000000 +vt 0.800000 0.078652 +vt 0.800000 0.000000 +vt 0.640000 0.078652 +vt 0.320000 0.084270 +vt 0.880000 0.078652 +vt 0.800000 0.084270 +vt 0.720000 0.084270 +vt 0.400000 0.084270 +vt 0.560000 0.084270 +vt 0.560000 0.078652 +vt 0.240000 0.084270 +vt 0.240000 0.078652 +vt 0.640000 0.084270 +vt 0.480000 0.084270 +vt 0.640000 0.106742 +vt 0.480000 0.106742 +vt 0.320000 0.106742 +vt 0.880000 0.084270 +vt 0.800000 0.106742 +vt 0.720000 0.106742 +vt 0.400000 0.106742 +vt 0.560000 0.106742 +vt 0.240000 0.106742 +vt 0.320000 0.112360 +vt 0.480000 0.112360 +vt 0.640000 0.112360 +vt 0.800000 0.112360 +vt 0.880000 0.106742 +vt 0.400000 0.359551 +vt 0.320000 0.365169 +vt 0.320000 0.359551 +vt 0.880000 0.359551 +vt 0.800000 0.365169 +vt 0.800000 0.359551 +vt 0.720000 0.365169 +vt 0.720000 0.359551 +vt 0.480000 0.359551 +vt 0.400000 0.365169 +vt 0.640000 0.359551 +vt 0.560000 0.365169 +vt 0.560000 0.359551 +vt 0.240000 0.365169 +vt 0.240000 0.359551 +vt 0.640000 0.365169 +vt 0.480000 0.365169 +vt 0.640000 0.387640 +vt 0.480000 0.387640 +vt 0.320000 0.387640 +vt 0.880000 0.365169 +vt 0.800000 0.387640 +vt 0.720000 0.387640 +vt 0.400000 0.387640 +vt 0.560000 0.387640 +vt 0.240000 0.387640 +vt 0.320000 0.393258 +vt 0.480000 0.393258 +vt 0.640000 0.393258 +vt 0.800000 0.393258 +vt 0.880000 0.387640 +vt 0.880000 0.471910 +vt 0.800000 0.471910 +vt 0.240000 0.471910 +vt 0.320000 0.471910 +vt 0.400000 0.393258 +vt 0.400000 0.471910 +vt 0.480000 0.471910 +vt 0.560000 0.471910 +vt 0.640000 0.471910 +vt 0.720000 0.393258 +vt 0.720000 0.471910 +vt 0.410000 0.134831 +vt 0.400000 0.112360 +vt 0.470000 0.337079 +vt 0.560000 0.112360 +vt 0.720000 0.112360 +vt 0.470000 0.134831 +vt 0.880000 0.112360 +vt 0.780000 0.808989 +vt 0.730000 0.853933 +vt 0.730000 0.808989 +vt 0.305000 0.516854 +vt 0.385000 0.516854 +vt 0.335000 0.516854 +vt 0.465000 0.516854 +vt 0.545000 0.516854 +vt 0.625000 0.516854 +vt 0.705000 0.516854 +vt 0.655000 0.516854 +vt 0.785000 0.516854 +vt 0.865000 0.516854 +vt 0.625000 0.865169 +vt 0.580000 0.853933 +vt 0.630000 0.853933 +vt 0.980000 0.808989 +vt 0.930000 0.853933 +vt 0.930000 0.808989 +vt 0.830000 0.808989 +vt 0.780000 0.853933 +vt 0.680000 0.853933 +vt 0.680000 0.808989 +vt 0.880000 0.808989 +vt 0.830000 0.853933 +vt 0.630000 0.808989 +vt 0.580000 0.808989 +vt 0.880000 0.853933 +vt 0.825000 0.865169 +vt 0.925000 0.865169 +vt 0.725000 0.865169 +vt 0.735000 0.865169 +vt 0.835000 0.865169 +vt 0.975000 0.865169 +vt 0.980000 0.853933 +vt 0.675000 0.865169 +vt 0.585000 0.887640 +vt 0.585000 0.865169 +vt 0.625000 1.000000 +vt 0.585000 1.000000 +vt 0.625000 0.887640 +vt 0.785000 0.887640 +vt 0.785000 0.865169 +vt 0.935000 0.887640 +vt 0.935000 0.865169 +vt 0.885000 0.887640 +vt 0.885000 0.865169 +vt 0.775000 0.865169 +vt 0.735000 0.887640 +vt 0.685000 0.887640 +vt 0.685000 0.865169 +vt 0.635000 0.887640 +vt 0.635000 0.865169 +vt 0.875000 0.865169 +vt 0.835000 0.887640 +vt 0.410000 0.337079 +vt 0.120000 0.747191 +vt 0.060000 0.775281 +vt 0.060000 0.747191 +vt 0.570000 0.337079 +vt 0.630000 0.337079 +vt 0.630000 0.134831 +vt 0.730000 0.337079 +vt 0.790000 0.337079 +vt 0.730000 0.134831 +vt 0.240000 0.112360 +vt 0.250000 0.337079 +vt 0.310000 0.337079 +vt 0.310000 0.134831 +vt 0.300000 0.573034 +vt 0.360000 0.601124 +vt 0.300000 0.601124 +vt 0.120000 0.601124 +vt 0.060000 0.573034 +vt 0.120000 0.573034 +vt 0.360000 0.747191 +vt 0.300000 0.775281 +vt 0.300000 0.747191 +vt 0.445000 0.337079 +vt 0.435000 0.337079 +vt 0.765000 0.337079 +vt 0.790000 0.134831 +vt 0.755000 0.337079 +vt 0.420000 0.601124 +vt 0.480000 0.573034 +vt 0.480000 0.601124 +vt 0.285000 0.134831 +vt 0.480000 0.747191 +vt 0.420000 0.775281 +vt 0.420000 0.747191 +vt 0.250000 0.134831 +vt 0.275000 0.337079 +vt 0.570000 0.134831 +vt 0.595000 0.337079 +vt 0.180000 0.601124 +vt 0.240000 0.573034 +vt 0.240000 0.601124 +vt 0.605000 0.134831 +vt 0.240000 0.747191 +vt 0.180000 0.775281 +vt 0.180000 0.747191 +vt 0.240000 0.775281 +vt 0.360000 0.573034 +vt 0.360000 0.775281 +vt 0.000000 0.775281 +vt 0.120000 0.775281 +vt 0.180000 0.573034 +vt 0.240000 0.528090 +vt 0.120000 0.528090 +vt 0.180000 0.528090 +vt 0.420000 0.573034 +vt 0.480000 0.528090 +vt -0.000000 0.573034 +vt 0.060000 0.528090 +vt 0.360000 0.528090 +vt 0.420000 0.528090 +vt 0.300000 0.528090 +vt 0.165000 0.477528 +vt 0.015000 0.410112 +vt 0.180000 0.820225 +vt 0.120000 0.820225 +vt 0.300000 0.820225 +vt 0.480000 0.775281 +vt 0.420000 0.820225 +vt 0.000000 0.820225 +vt 0.360000 0.820225 +vt 0.240000 0.820225 +vt 0.060000 0.820225 +vt 0.165000 0.870786 +vt 0.120000 0.988764 +vt 0.345000 0.932584 +vt 0.385000 0.865169 +vt 0.385000 0.932584 +vt 0.445000 0.977528 +vt 0.445000 0.932584 +vt 0.445000 0.865169 +vt 0.485000 0.865169 +vt 0.445000 0.820225 +vt 0.910000 0.741573 +vt 0.850000 0.539326 +vt 0.910000 0.539326 +vt 0.910000 0.741573 +vt 0.850000 0.539326 +vt 0.910000 0.539326 +vt 0.910000 0.741573 +vt 0.850000 0.539326 +vt 0.910000 0.539326 +vt 0.910000 0.741573 +vt 0.850000 0.539326 +vt 0.910000 0.539326 +vt 1.000000 0.471910 +vt 0.990000 0.505618 +vt 0.990000 0.471910 +vt 1.000000 0.000000 +vt 0.990000 0.460674 +vt 0.990000 0.000000 +vt 0.980000 0.000000 +vt 0.970000 0.460674 +vt 0.970000 0.000000 +vt 0.980000 0.460674 +vt 0.960000 0.460674 +vt 0.960000 0.000000 +vt 0.960000 0.471910 +vt 0.970000 0.471910 +vt 0.990000 0.471910 +vt 0.970000 0.516854 +vt 0.960000 0.528090 +vt 0.960000 0.516854 +vt 0.960000 0.505618 +vt 0.960000 0.471910 +vt 0.980000 0.471910 +vt 0.970000 0.505618 +vt 0.980000 0.505618 +vt 0.990000 0.516854 +vt 0.980000 0.516854 +vt 0.970000 0.528090 +vt 1.000000 0.516854 +vt 0.990000 0.528090 +vt 0.990000 0.516854 +vt 0.980000 0.528090 +vt 0.960000 0.516854 +vt 0.910000 0.539326 +vt 0.960000 0.544944 +vt 0.910000 0.544944 +vt 0.960000 0.556180 +vt 0.910000 0.561798 +vt 0.910000 0.556180 +vt 0.910000 0.573034 +vt 0.960000 0.561798 +vt 0.960000 0.573034 +vt 1.000000 0.471910 +vt 0.990000 0.505618 +vt 0.990000 0.471910 +vt 1.000000 0.000000 +vt 0.990000 0.460674 +vt 0.990000 0.000000 +vt 0.980000 0.000000 +vt 0.970000 0.460674 +vt 0.970000 0.000000 +vt 0.980000 0.460674 +vt 0.960000 0.460674 +vt 0.960000 0.000000 +vt 0.960000 0.471910 +vt 0.970000 0.471910 +vt 0.990000 0.471910 +vt 0.970000 0.516854 +vt 0.960000 0.528090 +vt 0.960000 0.516854 +vt 0.960000 0.505618 +vt 0.960000 0.471910 +vt 0.980000 0.471910 +vt 0.970000 0.505618 +vt 0.980000 0.505618 +vt 0.990000 0.516854 +vt 0.980000 0.516854 +vt 0.970000 0.528090 +vt 1.000000 0.516854 +vt 0.990000 0.528090 +vt 0.990000 0.516854 +vt 0.980000 0.528090 +vt 0.960000 0.516854 +vt 0.910000 0.539326 +vt 0.960000 0.544944 +vt 0.910000 0.544944 +vt 0.960000 0.556180 +vt 0.910000 0.561798 +vt 0.910000 0.556180 +vt 0.910000 0.573034 +vt 0.960000 0.561798 +vt 0.960000 0.573034 +vt 0.910000 0.539326 +vt 0.960000 0.544944 +vt 0.910000 0.544944 +vt 0.960000 0.556180 +vt 0.910000 0.561798 +vt 0.910000 0.556180 +vt 0.910000 0.573034 +vt 0.960000 0.561798 +vt 0.960000 0.573034 +vt 0.910000 0.539326 +vt 0.960000 0.544944 +vt 0.910000 0.544944 +vt 0.960000 0.556180 +vt 0.910000 0.561798 +vt 0.910000 0.556180 +vt 0.910000 0.573034 +vt 0.960000 0.561798 +vt 0.960000 0.573034 +vt 0.910000 0.539326 +vt 0.960000 0.544944 +vt 0.910000 0.544944 +vt 0.960000 0.556180 +vt 0.910000 0.561798 +vt 0.910000 0.556180 +vt 0.910000 0.573034 +vt 0.960000 0.561798 +vt 0.960000 0.573034 +vt 0.910000 0.539326 +vt 0.960000 0.544944 +vt 0.910000 0.544944 +vt 0.960000 0.556180 +vt 0.910000 0.561798 +vt 0.910000 0.556180 +vt 0.910000 0.573034 +vt 0.960000 0.561798 +vt 0.960000 0.573034 +vt 0.910000 0.539326 +vt 0.960000 0.544944 +vt 0.910000 0.544944 +vt 0.960000 0.556180 +vt 0.910000 0.561798 +vt 0.910000 0.556180 +vt 0.910000 0.573034 +vt 0.960000 0.561798 +vt 0.960000 0.573034 +vt 0.910000 0.539326 +vt 0.960000 0.544944 +vt 0.910000 0.544944 +vt 0.960000 0.556180 +vt 0.910000 0.561798 +vt 0.910000 0.556180 +vt 0.910000 0.573034 +vt 0.960000 0.561798 +vt 0.960000 0.573034 +vt 0.910000 0.539326 +vt 0.960000 0.544944 +vt 0.910000 0.544944 +vt 0.960000 0.556180 +vt 0.910000 0.561798 +vt 0.910000 0.556180 +vt 0.910000 0.573034 +vt 0.960000 0.561798 +vt 0.960000 0.573034 +vt 0.910000 0.539326 +vt 0.960000 0.544944 +vt 0.910000 0.544944 +vt 0.960000 0.556180 +vt 0.910000 0.561798 +vt 0.910000 0.556180 +vt 0.910000 0.573034 +vt 0.960000 0.561798 +vt 0.960000 0.573034 +vt 0.345000 0.932584 +vt 0.385000 0.865169 +vt 0.385000 0.932584 +vt 0.445000 0.977528 +vt 0.445000 0.932584 +vt 0.445000 0.865169 +vt 0.485000 0.865169 +vt 0.445000 0.820225 +vt 0.345000 0.932584 +vt 0.385000 0.865169 +vt 0.385000 0.932584 +vt 0.445000 0.977528 +vt 0.445000 0.932584 +vt 0.445000 0.865169 +vt 0.485000 0.865169 +vt 0.385000 0.820225 +vt 0.345000 0.932584 +vt 0.385000 0.865169 +vt 0.385000 0.932584 +vt 0.445000 0.977528 +vt 0.445000 0.932584 +vt 0.445000 0.865169 +vt 0.485000 0.865169 +vt 0.385000 0.820225 +vt 1.000000 1.000000 +vt 0.240000 0.089888 +vt 0.240000 0.089888 +vt 0.240000 0.089888 +vt 0.240000 0.089888 +vt 0.240000 0.393258 +vt 0.560000 0.393258 +vt 0.880000 0.393258 +vt 0.255000 0.516854 +vt 0.415000 0.516854 +vt 0.495000 0.516854 +vt 0.575000 0.516854 +vt 0.735000 0.516854 +vt 0.815000 0.516854 +vt 0.625000 0.887640 +vt 0.555000 0.966292 +vt 0.555000 0.921348 +vt 0.585000 0.887640 +vt 0.655000 0.921348 +vt 0.655000 0.966292 +vt 0.825000 0.887640 +vt 0.975000 0.887640 +vt 0.925000 0.887640 +vt 0.775000 0.887640 +vt 0.725000 0.887640 +vt 0.675000 0.887640 +vt 0.875000 0.887640 +vt 0.060000 0.601124 +vt 0.445000 0.134831 +vt 0.435000 0.134831 +vt 0.765000 0.134831 +vt 0.755000 0.134831 +vt 0.285000 0.337079 +vt 0.275000 0.134831 +vt 0.595000 0.134831 +vt 0.605000 0.337079 +vt 0.000000 0.528090 +vt 0.060000 0.359551 +vt 0.120000 0.359551 +vt 0.165000 0.410112 +vt 0.015000 0.477528 +vt 0.480000 0.820225 +vt 0.060000 0.988764 +vt 0.015000 0.938202 +vt 0.015000 0.870786 +vt 0.165000 0.938202 +vt 0.345000 0.865169 +vt 0.385000 0.977528 +vt 0.485000 0.932584 +vt 0.385000 0.820225 +vt 0.850000 0.741573 +vt 0.850000 0.741573 +vt 0.850000 0.741573 +vt 0.850000 0.741573 +vt 1.000000 0.505618 +vt 1.000000 0.460674 +vt 1.000000 0.528090 +vt 0.960000 0.539326 +vt 1.000000 0.505618 +vt 1.000000 0.460674 +vt 1.000000 0.528090 +vt 0.960000 0.539326 +vt 0.960000 0.539326 +vt 0.960000 0.539326 +vt 0.960000 0.539326 +vt 0.960000 0.539326 +vt 0.960000 0.539326 +vt 0.960000 0.539326 +vt 0.960000 0.539326 +vt 0.960000 0.539326 +vt 0.345000 0.865169 +vt 0.385000 0.977528 +vt 0.485000 0.932584 +vt 0.385000 0.820225 +vt 0.345000 0.865169 +vt 0.385000 0.977528 +vt 0.485000 0.932584 +vt 0.445000 0.820225 +vt 0.345000 0.865169 +vt 0.385000 0.977528 +vt 0.485000 0.932584 +vt 0.445000 0.820225 +vt 0.930000 -0.000000 +vt 0.920000 0.449438 +vt 0.920000 -0.000000 +vt 0.910000 -0.000000 +vt 0.900000 0.449438 +vt 0.900000 -0.000000 +vt 0.890000 0.000000 +vt 0.880000 0.449438 +vt 0.880000 0.000000 +vt 0.950000 -0.000000 +vt 0.940000 0.449438 +vt 0.940000 0.000000 +vt 0.930000 0.449438 +vt 0.910000 0.449438 +vt 0.890000 0.449438 +vt 0.960000 -0.000000 +vt 0.950000 0.449438 +vt 0.950000 0.460674 +vt 0.940000 0.466292 +vt 0.940000 0.455056 +vt 0.930000 0.466292 +vt 0.910000 0.466292 +vt 0.890000 0.460674 +vt 0.900000 0.466292 +vt 0.890000 0.466292 +vt 0.920000 0.466292 +vt 0.900000 0.455056 +vt 0.920000 0.483146 +vt 0.910000 0.483146 +vt 0.900000 0.477528 +vt 0.950000 0.466292 +vt 0.940000 0.477528 +vt 0.930000 0.483146 +vt 0.890000 0.471910 +vt 0.960000 0.466292 +vt 0.950000 0.471910 +vt 0.880000 0.466292 +vt 0.880000 0.483146 +vt 0.890000 0.539326 +vt 0.880000 0.539326 +vt 0.940000 0.483146 +vt 0.930000 0.539326 +vt 0.960000 0.483146 +vt 0.950000 0.539326 +vt 0.950000 0.483146 +vt 0.910000 0.539326 +vt 0.900000 0.483146 +vt 0.890000 0.483146 +vt 0.920000 0.539326 +vt 0.900000 0.539326 +vt 0.940000 0.539326 +vt 0.930000 -0.000000 +vt 0.920000 0.449438 +vt 0.920000 -0.000000 +vt 0.910000 0.000000 +vt 0.900000 0.449438 +vt 0.900000 0.000000 +vt 0.890000 0.000000 +vt 0.880000 0.449438 +vt 0.880000 -0.000000 +vt 0.950000 -0.000000 +vt 0.940000 0.449438 +vt 0.940000 -0.000000 +vt 0.930000 0.449438 +vt 0.910000 0.449438 +vt 0.890000 0.449438 +vt 0.960000 0.000000 +vt 0.950000 0.449438 +vt 0.940000 0.455056 +vt 0.950000 0.466292 +vt 0.940000 0.466292 +vt 0.930000 0.466292 +vt 0.910000 0.466292 +vt 0.900000 0.455056 +vt 0.890000 0.466292 +vt 0.890000 0.460674 +vt 0.920000 0.466292 +vt 0.900000 0.466292 +vt 0.920000 0.483146 +vt 0.900000 0.477528 +vt 0.940000 0.477528 +vt 0.930000 0.483146 +vt 0.910000 0.483146 +vt 0.890000 0.471910 +vt 0.950000 0.460674 +vt 0.960000 0.466292 +vt 0.950000 0.471910 +vt 0.880000 0.466292 +vt 0.890000 0.483146 +vt 0.880000 0.539326 +vt 0.880000 0.483146 +vt 0.940000 0.539326 +vt 0.930000 0.539326 +vt 0.950000 0.483146 +vt 0.960000 0.539326 +vt 0.950000 0.539326 +vt 0.920000 0.539326 +vt 0.910000 0.539326 +vt 0.900000 0.539326 +vt 0.890000 0.539326 +vt 0.900000 0.483146 +vt 0.940000 0.483146 +vt 0.195000 0.949438 +vt 0.180000 0.820225 +vt 0.195000 0.820225 +vt 0.300000 0.949438 +vt 0.285000 0.820225 +vt 0.300000 0.820225 +vt 0.330000 0.949438 +vt 0.315000 0.820225 +vt 0.330000 0.820225 +vt 0.255000 0.949438 +vt 0.240000 0.820225 +vt 0.255000 0.820225 +vt 0.210000 0.949438 +vt 0.210000 0.820225 +vt 0.345000 0.949438 +vt 0.345000 0.820225 +vt 0.270000 0.949438 +vt 0.270000 0.820225 +vt 0.225000 0.949438 +vt 0.225000 0.820225 +vt 0.180000 0.949438 +vt 0.165000 0.820225 +vt 0.285000 0.949438 +vt 0.315000 0.949438 +vt 0.240000 0.949438 +vt 0.295000 0.983146 +vt 0.290000 1.000000 +vt 0.285000 0.983146 +vt 0.285000 0.966292 +vt 0.300000 0.966292 +vt 0.280000 0.983146 +vt 0.275000 1.000000 +vt 0.270000 0.983146 +vt 0.270000 0.966292 +vt 0.265000 0.983146 +vt 0.260000 1.000000 +vt 0.255000 0.983146 +vt 0.255000 0.966292 +vt 0.250000 0.983146 +vt 0.240000 0.966292 +vt 0.245000 1.000000 +vt 0.240000 0.983146 +vt 0.235000 0.983146 +vt 0.225000 0.966292 +vt 0.230000 1.000000 +vt 0.225000 0.983146 +vt 0.220000 0.983146 +vt 0.210000 0.966292 +vt 0.215000 1.000000 +vt 0.210000 0.983146 +vt 0.205000 0.983146 +vt 0.195000 0.966292 +vt 0.200000 1.000000 +vt 0.195000 0.983146 +vt 0.190000 0.983146 +vt 0.180000 0.966292 +vt 0.185000 1.000000 +vt 0.180000 0.983146 +vt 0.175000 0.983146 +vt 0.170000 1.000000 +vt 0.165000 0.983146 +vt 0.165000 0.966292 +vt 0.340000 0.983146 +vt 0.335000 1.000000 +vt 0.330000 0.983146 +vt 0.330000 0.966292 +vt 0.345000 0.966292 +vt 0.165000 0.949438 +vt 0.325000 0.983146 +vt 0.320000 1.000000 +vt 0.315000 0.983146 +vt 0.315000 0.966292 +vt 0.310000 0.983146 +vt 0.305000 1.000000 +vt 0.300000 0.983146 +vt 0.195000 0.949438 +vt 0.180000 0.820225 +vt 0.195000 0.820225 +vt 0.300000 0.949438 +vt 0.285000 0.820225 +vt 0.300000 0.820225 +vt 0.330000 0.949438 +vt 0.315000 0.820225 +vt 0.330000 0.820225 +vt 0.255000 0.949438 +vt 0.240000 0.820225 +vt 0.255000 0.820225 +vt 0.210000 0.949438 +vt 0.210000 0.820225 +vt 0.345000 0.949438 +vt 0.345000 0.820225 +vt 0.270000 0.949438 +vt 0.270000 0.820225 +vt 0.225000 0.949438 +vt 0.225000 0.820225 +vt 0.180000 0.949438 +vt 0.165000 0.820225 +vt 0.285000 0.949438 +vt 0.315000 0.949438 +vt 0.240000 0.949438 +vt 0.295000 0.983146 +vt 0.290000 1.000000 +vt 0.285000 0.983146 +vt 0.285000 0.966292 +vt 0.300000 0.966292 +vt 0.280000 0.983146 +vt 0.275000 1.000000 +vt 0.270000 0.983146 +vt 0.270000 0.966292 +vt 0.265000 0.983146 +vt 0.260000 1.000000 +vt 0.255000 0.983146 +vt 0.255000 0.966292 +vt 0.250000 0.983146 +vt 0.240000 0.966292 +vt 0.245000 1.000000 +vt 0.240000 0.983146 +vt 0.235000 0.983146 +vt 0.225000 0.966292 +vt 0.230000 1.000000 +vt 0.225000 0.983146 +vt 0.220000 0.983146 +vt 0.210000 0.966292 +vt 0.215000 1.000000 +vt 0.210000 0.983146 +vt 0.195000 0.983146 +vt 0.195000 0.966292 +vt 0.205000 0.983146 +vt 0.200000 1.000000 +vt 0.190000 0.983146 +vt 0.180000 0.966292 +vt 0.185000 1.000000 +vt 0.180000 0.983146 +vt 0.175000 0.983146 +vt 0.170000 1.000000 +vt 0.165000 0.983146 +vt 0.165000 0.966292 +vt 0.340000 0.983146 +vt 0.335000 1.000000 +vt 0.330000 0.983146 +vt 0.330000 0.966292 +vt 0.345000 0.966292 +vt 0.165000 0.949438 +vt 0.325000 0.983146 +vt 0.320000 1.000000 +vt 0.315000 0.983146 +vt 0.315000 0.966292 +vt 0.310000 0.983146 +vt 0.305000 1.000000 +vt 0.300000 0.983146 +vt 0.195000 0.949438 +vt 0.180000 0.820225 +vt 0.195000 0.820225 +vt 0.300000 0.949438 +vt 0.285000 0.820225 +vt 0.300000 0.820225 +vt 0.330000 0.949438 +vt 0.315000 0.820225 +vt 0.330000 0.820225 +vt 0.255000 0.949438 +vt 0.240000 0.820225 +vt 0.255000 0.820225 +vt 0.210000 0.949438 +vt 0.210000 0.820225 +vt 0.345000 0.949438 +vt 0.345000 0.820225 +vt 0.270000 0.949438 +vt 0.270000 0.820225 +vt 0.225000 0.949438 +vt 0.225000 0.820225 +vt 0.180000 0.949438 +vt 0.165000 0.820225 +vt 0.285000 0.949438 +vt 0.315000 0.949438 +vt 0.240000 0.949438 +vt 0.295000 0.983146 +vt 0.290000 1.000000 +vt 0.285000 0.983146 +vt 0.300000 0.966292 +vt 0.285000 0.966292 +vt 0.280000 0.983146 +vt 0.275000 1.000000 +vt 0.270000 0.983146 +vt 0.270000 0.966292 +vt 0.265000 0.983146 +vt 0.260000 1.000000 +vt 0.255000 0.983146 +vt 0.255000 0.966292 +vt 0.250000 0.983146 +vt 0.240000 0.966292 +vt 0.245000 1.000000 +vt 0.240000 0.983146 +vt 0.225000 0.983146 +vt 0.225000 0.966292 +vt 0.235000 0.983146 +vt 0.230000 1.000000 +vt 0.210000 0.983146 +vt 0.210000 0.966292 +vt 0.220000 0.983146 +vt 0.215000 1.000000 +vt 0.205000 0.983146 +vt 0.195000 0.966292 +vt 0.200000 1.000000 +vt 0.195000 0.983146 +vt 0.190000 0.983146 +vt 0.180000 0.966292 +vt 0.185000 1.000000 +vt 0.180000 0.983146 +vt 0.175000 0.983146 +vt 0.170000 1.000000 +vt 0.165000 0.983146 +vt 0.165000 0.966292 +vt 0.340000 0.983146 +vt 0.335000 1.000000 +vt 0.330000 0.983146 +vt 0.330000 0.966292 +vt 0.345000 0.966292 +vt 0.165000 0.949438 +vt 0.325000 0.983146 +vt 0.320000 1.000000 +vt 0.315000 0.983146 +vt 0.315000 0.966292 +vt 0.310000 0.983146 +vt 0.305000 1.000000 +vt 0.300000 0.983146 +vt 0.195000 0.949438 +vt 0.180000 0.820225 +vt 0.195000 0.820225 +vt 0.300000 0.949438 +vt 0.285000 0.820225 +vt 0.300000 0.820225 +vt 0.330000 0.949438 +vt 0.315000 0.820225 +vt 0.330000 0.820225 +vt 0.255000 0.949438 +vt 0.240000 0.820225 +vt 0.255000 0.820225 +vt 0.210000 0.949438 +vt 0.210000 0.820225 +vt 0.345000 0.949438 +vt 0.345000 0.820225 +vt 0.270000 0.949438 +vt 0.270000 0.820225 +vt 0.225000 0.949438 +vt 0.225000 0.820225 +vt 0.180000 0.949438 +vt 0.165000 0.820225 +vt 0.285000 0.949438 +vt 0.315000 0.949438 +vt 0.240000 0.949438 +vt 0.295000 0.983146 +vt 0.290000 1.000000 +vt 0.285000 0.983146 +vt 0.285000 0.966292 +vt 0.300000 0.966292 +vt 0.280000 0.983146 +vt 0.275000 1.000000 +vt 0.270000 0.983146 +vt 0.270000 0.966292 +vt 0.265000 0.983146 +vt 0.260000 1.000000 +vt 0.255000 0.983146 +vt 0.255000 0.966292 +vt 0.240000 0.983146 +vt 0.240000 0.966292 +vt 0.250000 0.983146 +vt 0.245000 1.000000 +vt 0.235000 0.983146 +vt 0.225000 0.966292 +vt 0.230000 1.000000 +vt 0.225000 0.983146 +vt 0.210000 0.983146 +vt 0.210000 0.966292 +vt 0.220000 0.983146 +vt 0.215000 1.000000 +vt 0.205000 0.983146 +vt 0.195000 0.966292 +vt 0.200000 1.000000 +vt 0.195000 0.983146 +vt 0.180000 0.983146 +vt 0.180000 0.966292 +vt 0.190000 0.983146 +vt 0.185000 1.000000 +vt 0.175000 0.983146 +vt 0.170000 1.000000 +vt 0.165000 0.983146 +vt 0.165000 0.966292 +vt 0.340000 0.983146 +vt 0.335000 1.000000 +vt 0.330000 0.983146 +vt 0.330000 0.966292 +vt 0.345000 0.966292 +vt 0.165000 0.949438 +vt 0.325000 0.983146 +vt 0.320000 1.000000 +vt 0.315000 0.983146 +vt 0.315000 0.966292 +vt 0.310000 0.983146 +vt 0.305000 1.000000 +vt 0.300000 0.983146 +vt 0.930000 -0.000000 +vt 0.920000 0.449438 +vt 0.920000 -0.000000 +vt 0.910000 -0.000000 +vt 0.900000 0.449438 +vt 0.900000 -0.000000 +vt 0.890000 0.000000 +vt 0.880000 0.449438 +vt 0.880000 0.000000 +vt 0.950000 -0.000000 +vt 0.940000 0.449438 +vt 0.940000 0.000000 +vt 0.930000 0.449438 +vt 0.910000 0.449438 +vt 0.890000 0.449438 +vt 0.960000 -0.000000 +vt 0.950000 0.449438 +vt 0.950000 0.460674 +vt 0.940000 0.466292 +vt 0.940000 0.455056 +vt 0.930000 0.466292 +vt 0.920000 0.466292 +vt 0.910000 0.466292 +vt 0.900000 0.455056 +vt 0.890000 0.466292 +vt 0.890000 0.460674 +vt 0.900000 0.466292 +vt 0.920000 0.483146 +vt 0.910000 0.483146 +vt 0.900000 0.477528 +vt 0.950000 0.471910 +vt 0.940000 0.477528 +vt 0.930000 0.483146 +vt 0.890000 0.471910 +vt 0.960000 0.466292 +vt 0.950000 0.466292 +vt 0.880000 0.466292 +vt 0.880000 0.483146 +vt 0.890000 0.539326 +vt 0.880000 0.539326 +vt 0.940000 0.483146 +vt 0.930000 0.539326 +vt 0.960000 0.483146 +vt 0.950000 0.539326 +vt 0.950000 0.483146 +vt 0.910000 0.539326 +vt 0.900000 0.483146 +vt 0.890000 0.483146 +vt 0.920000 0.539326 +vt 0.900000 0.539326 +vt 0.940000 0.539326 +vt 0.930000 -0.000000 +vt 0.920000 0.449438 +vt 0.920000 -0.000000 +vt 0.910000 0.000000 +vt 0.900000 0.449438 +vt 0.900000 0.000000 +vt 0.890000 0.000000 +vt 0.880000 0.449438 +vt 0.880000 -0.000000 +vt 0.950000 -0.000000 +vt 0.940000 0.449438 +vt 0.940000 -0.000000 +vt 0.930000 0.449438 +vt 0.910000 0.449438 +vt 0.890000 0.449438 +vt 0.960000 0.000000 +vt 0.950000 0.449438 +vt 0.940000 0.455056 +vt 0.950000 0.466292 +vt 0.940000 0.466292 +vt 0.930000 0.466292 +vt 0.910000 0.466292 +vt 0.900000 0.455056 +vt 0.890000 0.466292 +vt 0.890000 0.460674 +vt 0.920000 0.466292 +vt 0.900000 0.466292 +vt 0.920000 0.483146 +vt 0.900000 0.477528 +vt 0.940000 0.477528 +vt 0.930000 0.483146 +vt 0.910000 0.483146 +vt 0.890000 0.471910 +vt 0.950000 0.460674 +vt 0.960000 0.466292 +vt 0.950000 0.471910 +vt 0.880000 0.466292 +vt 0.890000 0.483146 +vt 0.880000 0.539326 +vt 0.880000 0.483146 +vt 0.940000 0.539326 +vt 0.930000 0.539326 +vt 0.950000 0.483146 +vt 0.960000 0.539326 +vt 0.950000 0.539326 +vt 0.910000 0.539326 +vt 0.900000 0.483146 +vt 0.890000 0.539326 +vt 0.920000 0.539326 +vt 0.900000 0.539326 +vt 0.940000 0.483146 +vt 0.930000 -0.000000 +vt 0.920000 0.449438 +vt 0.920000 -0.000000 +vt 0.910000 -0.000000 +vt 0.900000 0.449438 +vt 0.900000 -0.000000 +vt 0.890000 0.000000 +vt 0.880000 0.449438 +vt 0.880000 0.000000 +vt 0.950000 -0.000000 +vt 0.940000 0.449438 +vt 0.940000 0.000000 +vt 0.930000 0.449438 +vt 0.910000 0.449438 +vt 0.890000 0.449438 +vt 0.960000 -0.000000 +vt 0.950000 0.449438 +vt 0.950000 0.460674 +vt 0.940000 0.466292 +vt 0.940000 0.455056 +vt 0.930000 0.466292 +vt 0.920000 0.466292 +vt 0.910000 0.466292 +vt 0.890000 0.460674 +vt 0.900000 0.466292 +vt 0.890000 0.466292 +vt 0.900000 0.455056 +vt 0.930000 0.483146 +vt 0.920000 0.483146 +vt 0.910000 0.483146 +vt 0.900000 0.477528 +vt 0.950000 0.466292 +vt 0.940000 0.477528 +vt 0.890000 0.471910 +vt 0.960000 0.466292 +vt 0.950000 0.471910 +vt 0.880000 0.466292 +vt 0.880000 0.483146 +vt 0.890000 0.539326 +vt 0.880000 0.539326 +vt 0.940000 0.483146 +vt 0.930000 0.539326 +vt 0.960000 0.483146 +vt 0.950000 0.539326 +vt 0.950000 0.483146 +vt 0.910000 0.539326 +vt 0.900000 0.483146 +vt 0.890000 0.483146 +vt 0.920000 0.539326 +vt 0.900000 0.539326 +vt 0.940000 0.539326 +vt 0.930000 -0.000000 +vt 0.920000 0.449438 +vt 0.920000 -0.000000 +vt 0.910000 0.000000 +vt 0.900000 0.449438 +vt 0.900000 0.000000 +vt 0.890000 0.000000 +vt 0.880000 0.449438 +vt 0.880000 -0.000000 +vt 0.950000 -0.000000 +vt 0.940000 0.449438 +vt 0.940000 -0.000000 +vt 0.930000 0.449438 +vt 0.910000 0.449438 +vt 0.890000 0.449438 +vt 0.960000 0.000000 +vt 0.950000 0.449438 +vt 0.940000 0.455056 +vt 0.950000 0.466292 +vt 0.940000 0.466292 +vt 0.930000 0.466292 +vt 0.920000 0.466292 +vt 0.910000 0.466292 +vt 0.900000 0.455056 +vt 0.890000 0.466292 +vt 0.890000 0.460674 +vt 0.900000 0.466292 +vt 0.920000 0.483146 +vt 0.900000 0.477528 +vt 0.940000 0.477528 +vt 0.930000 0.483146 +vt 0.910000 0.483146 +vt 0.890000 0.471910 +vt 0.950000 0.460674 +vt 0.960000 0.466292 +vt 0.950000 0.471910 +vt 0.880000 0.466292 +vt 0.890000 0.483146 +vt 0.880000 0.539326 +vt 0.880000 0.483146 +vt 0.940000 0.539326 +vt 0.930000 0.539326 +vt 0.950000 0.483146 +vt 0.960000 0.539326 +vt 0.950000 0.539326 +vt 0.920000 0.539326 +vt 0.910000 0.539326 +vt 0.900000 0.539326 +vt 0.890000 0.539326 +vt 0.900000 0.483146 +vt 0.940000 0.483146 +vt 0.930000 -0.000000 +vt 0.920000 0.449438 +vt 0.920000 -0.000000 +vt 0.910000 -0.000000 +vt 0.900000 0.449438 +vt 0.900000 -0.000000 +vt 0.890000 0.000000 +vt 0.880000 0.449438 +vt 0.880000 0.000000 +vt 0.950000 -0.000000 +vt 0.940000 0.449438 +vt 0.940000 0.000000 +vt 0.930000 0.449438 +vt 0.910000 0.449438 +vt 0.890000 0.449438 +vt 0.960000 -0.000000 +vt 0.950000 0.449438 +vt 0.950000 0.460674 +vt 0.940000 0.466292 +vt 0.940000 0.455056 +vt 0.930000 0.466292 +vt 0.920000 0.466292 +vt 0.910000 0.466292 +vt 0.890000 0.460674 +vt 0.900000 0.466292 +vt 0.890000 0.466292 +vt 0.900000 0.455056 +vt 0.920000 0.483146 +vt 0.910000 0.483146 +vt 0.900000 0.477528 +vt 0.950000 0.471910 +vt 0.940000 0.477528 +vt 0.930000 0.483146 +vt 0.890000 0.471910 +vt 0.960000 0.466292 +vt 0.950000 0.466292 +vt 0.880000 0.466292 +vt 0.880000 0.483146 +vt 0.890000 0.539326 +vt 0.880000 0.539326 +vt 0.940000 0.483146 +vt 0.930000 0.539326 +vt 0.960000 0.483146 +vt 0.950000 0.539326 +vt 0.950000 0.483146 +vt 0.920000 0.539326 +vt 0.910000 0.539326 +vt 0.900000 0.483146 +vt 0.890000 0.483146 +vt 0.900000 0.539326 +vt 0.940000 0.539326 +vt 0.930000 -0.000000 +vt 0.920000 0.449438 +vt 0.920000 -0.000000 +vt 0.910000 0.000000 +vt 0.900000 0.449438 +vt 0.900000 0.000000 +vt 0.890000 0.000000 +vt 0.880000 0.449438 +vt 0.880000 -0.000000 +vt 0.950000 -0.000000 +vt 0.940000 0.449438 +vt 0.940000 -0.000000 +vt 0.930000 0.449438 +vt 0.910000 0.449438 +vt 0.890000 0.449438 +vt 0.960000 0.000000 +vt 0.950000 0.449438 +vt 0.940000 0.455056 +vt 0.950000 0.466292 +vt 0.940000 0.466292 +vt 0.930000 0.466292 +vt 0.910000 0.466292 +vt 0.900000 0.455056 +vt 0.890000 0.466292 +vt 0.890000 0.460674 +vt 0.920000 0.466292 +vt 0.900000 0.466292 +vt 0.920000 0.483146 +vt 0.900000 0.477528 +vt 0.940000 0.477528 +vt 0.930000 0.483146 +vt 0.910000 0.483146 +vt 0.890000 0.471910 +vt 0.950000 0.460674 +vt 0.960000 0.466292 +vt 0.950000 0.471910 +vt 0.880000 0.466292 +vt 0.890000 0.483146 +vt 0.880000 0.539326 +vt 0.880000 0.483146 +vt 0.940000 0.539326 +vt 0.930000 0.539326 +vt 0.950000 0.483146 +vt 0.960000 0.539326 +vt 0.950000 0.539326 +vt 0.910000 0.539326 +vt 0.900000 0.539326 +vt 0.890000 0.539326 +vt 0.920000 0.539326 +vt 0.900000 0.483146 +vt 0.940000 0.483146 +vt 0.960000 0.449438 +vt 0.960000 0.539326 +vt 0.960000 0.449438 +vt 0.960000 0.483146 +vt 0.960000 0.449438 +vt 0.960000 0.539326 +vt 0.960000 0.449438 +vt 0.960000 0.483146 +vt 0.960000 0.449438 +vt 0.960000 0.539326 +vt 0.960000 0.449438 +vt 0.960000 0.483146 +vt 0.960000 0.449438 +vt 0.960000 0.539326 +vt 0.960000 0.449438 +vt 0.960000 0.483146 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 1.0000 0.0000 +vn 0.0000 0.0000 1.0000 +vn 1.0000 0.0000 0.0000 +vn -1.0000 0.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +vn 0.7071 0.0000 -0.7071 +vn 0.7071 0.0000 0.7071 +vn -0.7071 0.0000 0.7071 +vn -0.7071 0.0000 -0.7071 +vn 0.0000 0.7071 0.7071 +vn 0.0000 0.7071 -0.7071 +vn 0.6947 0.1866 0.6947 +vn -0.6727 0.0196 0.7396 +vn -0.5000 -0.7071 -0.5000 +vn 0.7396 0.0196 -0.6727 +vn 0.9891 0.1448 0.0283 +vn 0.0283 0.1448 0.9891 +vn -0.9900 -0.1363 0.0372 +vn 0.0372 -0.1363 -0.9900 +vn 0.7513 0.0671 -0.6565 +vn 0.8431 0.5294 -0.0945 +vn -0.0945 0.5293 0.8431 +vn -0.6565 0.0671 0.7514 +vn -0.8620 -0.4617 0.2090 +vn 0.5000 0.7071 0.5000 +vn 0.1319 0.9824 0.1319 +vn -0.3780 0.7194 0.5828 +vn -0.6923 0.0473 0.7200 +vn 0.2090 -0.4617 -0.8620 +vn 0.7200 0.0473 -0.6923 +vn 0.5828 0.7194 -0.3780 +vn -0.6099 -0.6737 0.4172 +vn 0.4172 -0.6737 -0.6099 +vn -0.5000 -0.7071 0.5000 +vn 0.5000 0.7071 -0.5000 +vn 0.5000 -0.7071 -0.5000 +vn -0.5000 0.7071 0.5000 +vn -0.6565 0.0671 0.7513 +vn -0.4959 0.1278 0.8589 +vn -0.8660 0.0000 0.5000 +vn -0.5000 0.0000 0.8660 +vn -0.0000 0.1278 -0.9918 +vn 0.5000 0.0000 -0.8660 +vn -0.8589 0.1278 -0.4959 +vn -0.5000 0.0000 -0.8660 +vn -0.8660 0.0000 -0.5000 +vn 0.9918 0.1278 0.0000 +vn 0.8660 0.0000 0.5000 +vn 0.0000 0.1278 0.9918 +vn -0.9918 0.1278 0.0000 +vn 0.8589 0.1278 -0.4959 +vn 0.8660 0.0000 -0.5000 +vn 0.4959 0.1278 0.8589 +vn 0.5000 0.0000 0.8660 +vn -0.8589 0.1278 0.4959 +vn 0.4959 0.1278 -0.8589 +vn -0.4959 0.1278 -0.8589 +vn 0.8589 0.1278 0.4959 +vn -0.0000 0.8474 -0.5309 +vn 0.2654 0.8474 -0.4598 +vn 0.4380 0.4823 -0.7586 +vn -0.0000 0.4823 -0.8760 +vn 0.4598 0.8474 -0.2654 +vn 0.7586 0.4823 -0.4380 +vn 0.5309 0.8474 0.0000 +vn 0.8760 0.4823 -0.0000 +vn 0.7586 0.4823 0.4380 +vn 0.4598 0.8474 0.2654 +vn 0.4380 0.4823 0.7586 +vn 0.2655 0.8474 0.4598 +vn 0.0000 0.4823 0.8760 +vn 0.0000 0.8474 0.5309 +vn -0.4380 0.4823 0.7586 +vn -0.2654 0.8474 0.4598 +vn -0.7586 0.4823 0.4380 +vn -0.4598 0.8474 0.2654 +vn -0.5309 0.8474 -0.0000 +vn -0.8760 0.4823 0.0000 +vn -0.4598 0.8474 -0.2654 +vn -0.7586 0.4823 -0.4380 +vn -0.2654 0.8474 -0.4598 +vn -0.4380 0.4823 -0.7586 +vn -0.4598 0.8474 0.2655 +vn 0.4598 0.8474 -0.2655 +vn 0.2654 0.8474 0.4598 +vn -0.4598 0.8474 -0.2655 +vn -0.6947 0.1866 -0.6947 +vn 0.6727 0.0196 -0.7396 +vn 0.5000 -0.7071 0.5000 +vn -0.7396 0.0196 0.6727 +vn -0.9891 0.1448 -0.0283 +vn -0.0283 0.1448 -0.9891 +vn 0.9900 -0.1363 -0.0372 +vn -0.0372 -0.1363 0.9900 +vn -0.7513 0.0671 0.6565 +vn -0.8431 0.5294 0.0945 +vn -0.5000 0.7071 -0.5000 +vn 0.0945 0.5293 -0.8431 +vn 0.8620 -0.4617 -0.2090 +vn 0.6565 0.0671 -0.7514 +vn -0.1319 0.9824 -0.1319 +vn 0.3780 0.7194 -0.5828 +vn 0.6923 0.0473 -0.7200 +vn -0.4172 -0.6737 0.6099 +vn -0.7200 0.0473 0.6923 +vn -0.5828 0.7194 0.3780 +vn 0.6099 -0.6737 -0.4172 +vn -0.2090 -0.4617 0.8620 +vn 0.6947 0.1866 -0.6947 +vn 0.7396 0.0196 0.6727 +vn -0.6727 0.0196 -0.7396 +vn 0.0283 0.1448 -0.9891 +vn 0.9891 0.1448 -0.0283 +vn 0.0372 -0.1363 0.9900 +vn -0.9900 -0.1363 -0.0372 +vn -0.6565 0.0671 -0.7513 +vn -0.0945 0.5294 -0.8431 +vn 0.8431 0.5294 0.0945 +vn 0.7513 0.0671 0.6565 +vn 0.2090 -0.4617 0.8620 +vn -0.3780 0.7194 -0.5828 +vn 0.1319 0.9824 -0.1319 +vn 0.5828 0.7194 0.3780 +vn 0.7200 0.0473 0.6923 +vn -0.8620 -0.4617 -0.2090 +vn -0.6923 0.0473 -0.7200 +vn 0.4172 -0.6737 0.6099 +vn -0.6099 -0.6737 -0.4172 +vn -0.8620 -0.4617 -0.2091 +vn 0.8431 0.5293 0.0945 +vn -0.6947 0.1866 0.6947 +vn -0.7396 0.0196 -0.6727 +vn 0.6727 0.0196 0.7396 +vn -0.0283 0.1448 0.9891 +vn -0.9891 0.1448 0.0283 +vn -0.0372 -0.1363 -0.9900 +vn 0.9900 -0.1363 0.0372 +vn 0.6565 0.0671 0.7513 +vn 0.0945 0.5294 0.8431 +vn -0.8431 0.5294 -0.0945 +vn -0.7513 0.0671 -0.6565 +vn -0.2090 -0.4617 -0.8620 +vn -0.1319 0.9824 0.1319 +vn -0.5828 0.7194 -0.3780 +vn -0.7200 0.0473 -0.6923 +vn 0.6099 -0.6737 0.4172 +vn 0.6923 0.0473 0.7200 +vn 0.3780 0.7194 0.5828 +vn -0.4172 -0.6737 -0.6099 +vn 0.8620 -0.4617 0.2090 +vn 0.8620 -0.4617 0.2091 +vn 0.6565 0.0671 0.7514 +s off +f 51/71/10 50/72/10 49/73/10 +f 54/74/11 55/75/11 53/76/11 +f 50/77/12 53/78/12 49/73/12 +f 52/79/13 54/74/13 50/80/13 +f 49/81/14 55/82/14 51/83/14 +f 51/84/15 56/85/15 52/86/15 +f 70/87/16 60/88/16 62/89/16 +f 65/90/14 59/91/14 57/92/14 +f 58/93/17 69/94/17 61/95/17 +f 71/96/18 57/92/18 63/97/18 +f 59/98/19 72/99/19 64/100/19 +f 72/99/15 62/89/15 64/100/15 +f 69/94/12 63/97/12 61/95/12 +f 68/101/13 58/93/13 60/88/13 +f 71/96/10 73/102/10 65/90/10 +f 67/103/10 80/104/10 72/99/10 +f 72/99/10 78/105/10 70/87/10 +f 69/94/10 79/106/10 71/96/10 +f 68/101/10 74/107/10 66/108/10 +f 65/90/10 75/109/10 67/110/10 +f 70/87/10 76/111/10 68/101/10 +f 66/108/10 77/112/10 69/94/10 +f 78/105/16 84/113/16 76/111/16 +f 74/107/17 85/114/17 77/112/17 +f 79/106/18 81/115/18 73/102/18 +f 75/116/19 88/117/19 80/104/19 +f 80/104/15 86/118/15 78/105/15 +f 77/112/12 87/119/12 79/106/12 +f 76/111/13 82/120/13 74/107/13 +f 73/102/14 83/121/14 75/109/14 +f 89/122/11 83/121/11 81/115/11 +f 87/119/11 89/122/11 81/115/11 +f 93/123/11 87/119/11 85/114/11 +f 82/120/11 93/123/11 85/114/11 +f 92/124/11 82/120/11 84/113/11 +f 86/118/11 92/124/11 84/113/11 +f 96/125/11 86/118/11 88/117/11 +f 83/126/11 96/125/11 88/117/11 +f 111/127/10 113/128/10 105/129/10 +f 107/130/10 120/131/10 112/132/10 +f 112/132/10 118/133/10 110/134/10 +f 109/135/10 119/136/10 111/127/10 +f 108/137/10 114/138/10 106/139/10 +f 105/129/10 115/140/10 107/141/10 +f 110/134/10 116/142/10 108/137/10 +f 106/139/10 117/143/10 109/135/10 +f 118/133/16 124/144/16 116/142/16 +f 114/138/17 125/145/17 117/143/17 +f 119/136/18 121/146/18 113/128/18 +f 115/147/19 128/148/19 120/131/19 +f 120/131/15 126/149/15 118/133/15 +f 117/143/12 127/150/12 119/136/12 +f 116/142/13 122/151/13 114/138/13 +f 113/128/14 123/152/14 115/140/14 +f 129/153/11 123/152/11 121/146/11 +f 127/150/11 129/153/11 121/146/11 +f 133/154/11 127/150/11 125/145/11 +f 122/151/11 133/154/11 125/145/11 +f 132/155/11 122/151/11 124/144/11 +f 126/149/11 132/155/11 124/144/11 +f 136/156/11 126/149/11 128/148/11 +f 123/157/11 136/156/11 128/148/11 +f 136/156/19 99/158/19 104/159/19 +f 99/160/14 129/153/14 97/161/14 +f 97/161/18 135/162/18 103/163/18 +f 103/163/12 133/154/12 101/164/12 +f 133/154/17 98/165/17 101/164/17 +f 98/165/13 132/155/13 100/166/13 +f 100/166/16 134/167/16 102/168/16 +f 102/168/15 136/156/15 104/159/15 +f 93/123/12 169/169/12 95/170/12 +f 111/127/18 89/122/18 95/170/18 +f 111/127/12 172/171/12 109/135/12 +f 90/172/17 109/135/17 93/123/17 +f 110/134/16 92/124/16 94/173/16 +f 109/135/12 170/174/12 93/123/12 +f 91/175/19 112/132/19 96/125/19 +f 141/176/17 146/177/17 138/178/17 +f 143/179/11 99/160/11 97/161/11 +f 97/161/11 137/180/11 143/181/11 +f 138/182/11 103/163/11 101/164/11 +f 141/183/11 101/164/11 98/165/11 +f 142/184/11 98/165/11 100/166/11 +f 100/166/11 140/185/11 142/186/11 +f 139/187/11 102/168/11 104/159/11 +f 144/188/11 104/159/11 99/158/11 +f 159/189/11 151/190/11 152/191/11 +f 144/192/19 148/193/19 139/194/19 +f 142/195/13 149/196/13 141/176/13 +f 138/178/12 145/197/12 137/198/12 +f 140/199/16 150/200/16 142/195/16 +f 137/198/18 152/191/18 143/201/18 +f 143/201/14 151/190/14 144/202/14 +f 139/194/15 147/203/15 140/199/15 +f 158/204/11 149/196/11 150/200/11 +f 155/205/11 147/203/11 148/193/11 +f 154/206/11 145/197/11 146/177/11 +f 149/196/11 154/207/11 146/177/11 +f 147/203/11 158/208/11 150/200/11 +f 160/209/11 148/193/11 151/210/11 +f 153/211/11 152/191/11 145/197/11 +f 159/189/13 167/212/13 160/213/13 +f 167/214/11 168/215/11 166/216/11 +f 158/204/14 165/217/14 157/218/14 +f 160/209/17 164/219/17 155/220/17 +f 155/205/12 163/221/12 156/222/12 +f 157/223/19 162/224/19 154/207/19 +f 154/206/15 161/225/15 153/226/15 +f 153/211/16 168/227/16 159/228/16 +f 156/229/18 166/230/18 158/208/18 +f 95/170/12 171/231/12 111/127/12 +f 175/232/10 191/233/10 176/234/10 +f 90/172/13 179/235/13 106/139/13 +f 106/139/13 180/236/13 108/137/13 +f 180/236/13 92/124/13 108/137/13 +f 178/237/13 90/172/13 92/124/13 +f 94/173/15 175/238/15 110/134/15 +f 112/132/15 175/238/15 176/239/15 +f 176/239/15 96/125/15 112/132/15 +f 96/125/15 173/240/15 94/173/15 +f 91/241/14 183/242/14 107/141/14 +f 107/141/14 184/243/14 105/129/14 +f 184/243/14 89/122/14 105/129/14 +f 182/244/14 91/241/14 89/122/14 +f 186/245/11 169/246/11 170/247/11 +f 173/248/11 187/249/11 188/250/11 +f 171/251/10 190/252/10 172/253/10 +f 190/254/14 170/174/14 172/171/14 +f 169/169/13 189/255/13 171/231/13 +f 191/256/13 174/257/13 176/239/13 +f 173/240/14 192/258/14 175/238/14 +f 182/259/11 193/260/11 181/261/11 +f 184/243/15 194/262/15 182/244/15 +f 183/263/10 196/264/10 184/265/10 +f 181/266/12 195/267/12 183/242/12 +f 177/268/15 199/269/15 179/235/15 +f 178/270/11 197/271/11 177/272/11 +f 180/236/12 198/273/12 178/237/12 +f 179/274/10 200/275/10 180/276/10 +f 199/277/19 186/245/19 190/252/19 +f 185/278/16 196/264/16 189/279/16 +f 195/280/17 187/249/17 191/233/17 +f 188/250/18 200/275/18 192/281/18 +f 198/282/14 207/283/14 197/271/14 +f 198/282/18 204/284/18 208/285/18 +f 194/286/13 205/287/13 193/260/13 +f 193/288/17 203/289/17 187/249/17 +f 187/249/12 204/284/12 188/250/12 +f 194/286/16 201/290/16 206/291/16 +f 186/245/15 201/290/15 185/278/15 +f 197/271/19 202/292/19 186/245/19 +f 208/293/11 203/289/11 206/294/11 +f 192/281/18 216/295/18 212/296/18 +f 189/279/15 210/297/15 190/252/15 +f 195/298/13 214/299/13 196/264/13 +f 191/233/17 213/300/17 195/280/17 +f 189/279/16 214/299/16 209/301/16 +f 190/252/19 215/302/19 199/277/19 +f 192/281/12 211/303/12 191/233/12 +f 199/277/14 216/295/14 200/275/14 +f 211/303/10 216/304/10 210/305/10 +f 347/306/18 345/307/18 343/308/18 +f 346/309/11 343/308/11 342/310/11 +f 344/311/17 343/308/17 345/307/17 +f 348/312/16 342/310/16 344/311/16 +f 345/307/10 348/313/10 344/311/10 +f 353/314/14 350/315/14 351/316/14 +f 357/317/13 354/318/13 355/319/13 +f 361/320/12 358/321/12 359/322/12 +f 365/323/15 362/324/15 363/325/15 +f 370/326/10 376/327/10 373/328/10 +f 368/329/15 373/330/15 369/331/15 +f 367/332/12 371/333/12 366/334/12 +f 369/331/13 372/335/13 367/332/13 +f 366/334/14 370/336/14 368/337/14 +f 371/333/14 374/338/14 370/336/14 +f 372/335/20 374/339/20 371/333/20 +f 373/330/13 375/340/13 372/335/13 +f 381/341/14 383/342/14 377/343/14 +f 374/339/14 377/344/14 370/345/14 +f 375/346/11 379/347/11 374/339/11 +f 373/328/13 378/348/13 375/346/13 +f 376/327/13 380/349/13 378/348/13 +f 380/350/15 385/351/15 381/341/15 +f 377/352/12 382/353/12 376/354/12 +f 376/354/13 384/355/13 380/350/13 +f 378/348/21 381/341/21 379/347/21 +f 379/347/14 381/356/14 377/344/14 +f 388/357/10 387/358/10 386/359/10 +f 392/360/11 390/361/11 391/362/11 +f 388/363/15 393/364/15 389/365/15 +f 387/358/12 391/362/12 386/359/12 +f 398/366/10 404/367/10 401/368/10 +f 396/369/15 401/370/15 397/371/15 +f 395/372/12 399/373/12 394/374/12 +f 397/371/13 400/375/13 395/372/13 +f 394/374/14 398/376/14 396/377/14 +f 399/373/14 402/378/14 398/376/14 +f 400/375/20 402/379/20 399/373/20 +f 401/370/13 403/380/13 400/375/13 +f 409/381/14 411/382/14 405/383/14 +f 402/379/14 405/384/14 398/385/14 +f 403/386/11 407/387/11 402/379/11 +f 401/368/13 406/388/13 403/386/13 +f 404/367/13 408/389/13 406/388/13 +f 408/390/15 413/391/15 409/381/15 +f 405/392/12 410/393/12 404/394/12 +f 404/394/13 412/395/13 408/390/13 +f 406/388/21 409/381/21 407/387/21 +f 407/387/14 409/396/14 405/384/14 +f 416/397/10 415/398/10 414/399/10 +f 420/400/11 418/401/11 419/402/11 +f 416/403/15 421/404/15 417/405/15 +f 415/398/12 419/402/12 414/399/12 +f 424/406/10 423/407/10 422/408/10 +f 428/409/11 426/410/11 427/411/11 +f 424/412/15 429/413/15 425/414/15 +f 423/407/12 427/411/12 422/408/12 +f 432/415/10 431/416/10 430/417/10 +f 436/418/11 434/419/11 435/420/11 +f 432/421/15 437/422/15 433/423/15 +f 431/416/12 435/420/12 430/417/12 +f 440/424/10 439/425/10 438/426/10 +f 444/427/11 442/428/11 443/429/11 +f 440/430/15 445/431/15 441/432/15 +f 439/425/12 443/429/12 438/426/12 +f 448/433/10 447/434/10 446/435/10 +f 452/436/11 450/437/11 451/438/11 +f 448/439/15 453/440/15 449/441/15 +f 447/434/12 451/438/12 446/435/12 +f 456/442/10 455/443/10 454/444/10 +f 460/445/11 458/446/11 459/447/11 +f 456/448/15 461/449/15 457/450/15 +f 455/443/12 459/447/12 454/444/12 +f 464/451/10 463/452/10 462/453/10 +f 468/454/11 466/455/11 467/456/11 +f 464/457/15 469/458/15 465/459/15 +f 463/452/12 467/456/12 462/453/12 +f 472/460/10 471/461/10 470/462/10 +f 476/463/11 474/464/11 475/465/11 +f 472/466/15 477/467/15 473/468/15 +f 471/461/12 475/465/12 470/462/12 +f 480/469/10 479/470/10 478/471/10 +f 484/472/11 482/473/11 483/474/11 +f 480/475/15 485/476/15 481/477/15 +f 479/470/12 483/474/12 478/471/12 +f 714/478/16 712/479/16 710/480/16 +f 713/481/11 710/480/11 709/482/11 +f 711/483/19 710/480/19 712/479/19 +f 715/484/18 709/482/18 711/483/18 +f 712/479/10 715/485/10 711/483/10 +f 798/486/17 796/487/17 794/488/17 +f 797/489/11 794/488/11 793/490/11 +f 795/491/16 794/488/16 796/487/16 +f 799/492/19 793/490/19 795/491/19 +f 800/493/10 795/491/10 796/487/10 +f 882/494/19 880/495/19 878/496/19 +f 881/497/11 878/496/11 877/498/11 +f 879/499/18 878/496/18 880/495/18 +f 883/500/17 877/498/17 879/499/17 +f 884/501/10 879/499/10 880/495/10 +f 51/71/10 52/502/10 50/72/10 +f 54/74/11 56/503/11 55/75/11 +f 50/77/12 54/504/12 53/78/12 +f 52/79/13 56/503/13 54/74/13 +f 49/81/14 53/505/14 55/82/14 +f 51/84/15 55/506/15 56/85/15 +f 70/87/16 68/101/16 60/88/16 +f 65/90/14 67/110/14 59/91/14 +f 58/93/17 66/108/17 69/94/17 +f 71/96/18 65/90/18 57/92/18 +f 59/98/19 67/103/19 72/99/19 +f 72/99/15 70/87/15 62/89/15 +f 69/94/12 71/96/12 63/97/12 +f 68/101/13 66/108/13 58/93/13 +f 71/96/10 79/106/10 73/102/10 +f 67/103/10 75/116/10 80/104/10 +f 72/99/10 80/104/10 78/105/10 +f 69/94/10 77/112/10 79/106/10 +f 68/101/10 76/111/10 74/107/10 +f 65/90/10 73/102/10 75/109/10 +f 70/87/10 78/105/10 76/111/10 +f 66/108/10 74/107/10 77/112/10 +f 78/105/16 86/118/16 84/113/16 +f 74/107/17 82/120/17 85/114/17 +f 79/106/18 87/119/18 81/115/18 +f 75/116/19 83/126/19 88/117/19 +f 80/104/15 88/117/15 86/118/15 +f 77/112/12 85/114/12 87/119/12 +f 76/111/13 84/113/13 82/120/13 +f 73/102/14 81/115/14 83/121/14 +f 89/122/11 91/241/11 83/121/11 +f 87/119/11 95/170/11 89/122/11 +f 93/123/11 95/170/11 87/119/11 +f 82/120/11 90/172/11 93/123/11 +f 92/124/11 90/172/11 82/120/11 +f 86/118/11 94/173/11 92/124/11 +f 96/125/11 94/173/11 86/118/11 +f 83/126/11 91/175/11 96/125/11 +f 111/127/10 119/136/10 113/128/10 +f 107/130/10 115/147/10 120/131/10 +f 112/132/10 120/131/10 118/133/10 +f 109/135/10 117/143/10 119/136/10 +f 108/137/10 116/142/10 114/138/10 +f 105/129/10 113/128/10 115/140/10 +f 110/134/10 118/133/10 116/142/10 +f 106/139/10 114/138/10 117/143/10 +f 118/133/16 126/149/16 124/144/16 +f 114/138/17 122/151/17 125/145/17 +f 119/136/18 127/150/18 121/146/18 +f 115/147/19 123/157/19 128/148/19 +f 120/131/15 128/148/15 126/149/15 +f 117/143/12 125/145/12 127/150/12 +f 116/142/13 124/144/13 122/151/13 +f 113/128/14 121/146/14 123/152/14 +f 129/153/11 131/507/11 123/152/11 +f 127/150/11 135/162/11 129/153/11 +f 133/154/11 135/162/11 127/150/11 +f 122/151/11 130/508/11 133/154/11 +f 132/155/11 130/508/11 122/151/11 +f 126/149/11 134/167/11 132/155/11 +f 136/156/11 134/167/11 126/149/11 +f 123/157/11 131/509/11 136/156/11 +f 136/156/19 131/509/19 99/158/19 +f 99/160/14 131/507/14 129/153/14 +f 97/161/18 129/153/18 135/162/18 +f 103/163/12 135/162/12 133/154/12 +f 133/154/17 130/508/17 98/165/17 +f 98/165/13 130/508/13 132/155/13 +f 100/166/16 132/155/16 134/167/16 +f 102/168/15 134/167/15 136/156/15 +f 93/123/12 170/174/12 169/169/12 +f 111/127/18 105/129/18 89/122/18 +f 111/127/12 171/231/12 172/171/12 +f 90/172/17 106/139/17 109/135/17 +f 110/134/16 108/137/16 92/124/16 +f 109/135/12 172/171/12 170/174/12 +f 91/175/19 107/130/19 112/132/19 +f 141/176/17 149/196/17 146/177/17 +f 143/179/11 144/510/11 99/160/11 +f 97/161/11 103/163/11 137/180/11 +f 138/182/11 137/511/11 103/163/11 +f 141/183/11 138/512/11 101/164/11 +f 142/184/11 141/513/11 98/165/11 +f 100/166/11 102/168/11 140/185/11 +f 139/187/11 140/514/11 102/168/11 +f 144/188/11 139/515/11 104/159/11 +f 159/189/11 160/213/11 151/190/11 +f 144/192/19 151/210/19 148/193/19 +f 142/195/13 150/200/13 149/196/13 +f 138/178/12 146/177/12 145/197/12 +f 140/199/16 147/203/16 150/200/16 +f 137/198/18 145/197/18 152/191/18 +f 143/201/14 152/191/14 151/190/14 +f 139/194/15 148/193/15 147/203/15 +f 158/204/11 157/218/11 149/196/11 +f 155/205/11 156/222/11 147/203/11 +f 154/206/11 153/226/11 145/197/11 +f 149/196/11 157/223/11 154/207/11 +f 147/203/11 156/229/11 158/208/11 +f 160/209/11 155/220/11 148/193/11 +f 153/211/11 159/228/11 152/191/11 +f 159/189/13 168/516/13 167/212/13 +f 168/215/11 161/517/11 162/518/11 +f 162/518/11 165/519/11 168/215/11 +f 165/519/11 166/216/11 168/215/11 +f 166/216/11 163/520/11 164/521/11 +f 164/521/11 167/214/11 166/216/11 +f 158/204/14 166/522/14 165/217/14 +f 160/209/17 167/523/17 164/219/17 +f 155/205/12 164/524/12 163/221/12 +f 157/223/19 165/525/19 162/224/19 +f 154/206/15 162/526/15 161/225/15 +f 153/211/16 161/527/16 168/227/16 +f 156/229/18 163/528/18 166/230/18 +f 95/170/12 169/169/12 171/231/12 +f 175/232/10 192/281/10 191/233/10 +f 90/172/13 177/268/13 179/235/13 +f 106/139/13 179/235/13 180/236/13 +f 180/236/13 178/237/13 92/124/13 +f 178/237/13 177/268/13 90/172/13 +f 94/173/15 173/240/15 175/238/15 +f 112/132/15 110/134/15 175/238/15 +f 176/239/15 174/257/15 96/125/15 +f 96/125/15 174/257/15 173/240/15 +f 91/241/14 181/266/14 183/242/14 +f 107/141/14 183/242/14 184/243/14 +f 184/243/14 182/244/14 89/122/14 +f 182/244/14 181/266/14 91/241/14 +f 186/245/11 185/278/11 169/246/11 +f 173/248/11 174/529/11 187/249/11 +f 171/251/10 189/279/10 190/252/10 +f 190/254/14 186/530/14 170/174/14 +f 169/169/13 185/531/13 189/255/13 +f 191/256/13 187/532/13 174/257/13 +f 173/240/14 188/533/14 192/258/14 +f 182/259/11 194/286/11 193/260/11 +f 184/243/15 196/534/15 194/262/15 +f 183/263/10 195/298/10 196/264/10 +f 181/266/12 193/535/12 195/267/12 +f 177/268/15 197/536/15 199/269/15 +f 178/270/11 198/282/11 197/271/11 +f 180/236/12 200/537/12 198/273/12 +f 179/274/10 199/277/10 200/275/10 +f 199/277/19 197/271/19 186/245/19 +f 185/278/16 194/286/16 196/264/16 +f 195/280/17 193/288/17 187/249/17 +f 188/250/18 198/282/18 200/275/18 +f 198/282/14 208/285/14 207/283/14 +f 198/282/18 188/250/18 204/284/18 +f 194/286/13 206/291/13 205/287/13 +f 193/288/17 205/538/17 203/289/17 +f 187/249/12 203/289/12 204/284/12 +f 194/286/16 185/278/16 201/290/16 +f 186/245/15 202/292/15 201/290/15 +f 197/271/19 207/283/19 202/292/19 +f 206/294/11 201/539/11 202/540/11 +f 202/540/11 207/541/11 208/293/11 +f 208/293/11 204/284/11 203/289/11 +f 203/289/11 205/542/11 206/294/11 +f 206/294/11 202/540/11 208/293/11 +f 192/281/18 200/275/18 216/295/18 +f 189/279/15 209/301/15 210/297/15 +f 195/298/13 213/543/13 214/299/13 +f 191/233/17 211/303/17 213/300/17 +f 189/279/16 196/264/16 214/299/16 +f 190/252/19 210/297/19 215/302/19 +f 192/281/12 212/296/12 211/303/12 +f 199/277/14 215/302/14 216/295/14 +f 210/305/10 209/544/10 214/545/10 +f 214/545/10 213/546/10 211/303/10 +f 211/303/10 212/296/10 216/304/10 +f 216/304/10 215/547/10 210/305/10 +f 210/305/10 214/545/10 211/303/10 +f 347/306/18 349/548/18 345/307/18 +f 346/309/11 347/549/11 343/308/11 +f 344/311/17 342/310/17 343/308/17 +f 348/312/16 346/550/16 342/310/16 +f 345/307/10 349/551/10 348/313/10 +f 353/314/14 352/552/14 350/315/14 +f 357/317/13 356/553/13 354/318/13 +f 361/320/12 360/554/12 358/321/12 +f 365/323/15 364/555/15 362/324/15 +f 370/326/10 377/556/10 376/327/10 +f 368/329/15 370/557/15 373/330/15 +f 367/332/12 372/335/12 371/333/12 +f 369/331/13 373/330/13 372/335/13 +f 366/334/14 371/333/14 370/336/14 +f 372/335/20 375/346/20 374/339/20 +f 381/341/14 385/351/14 383/342/14 +f 374/339/14 379/347/14 377/344/14 +f 375/346/11 378/348/11 379/347/11 +f 373/328/13 376/327/13 378/348/13 +f 380/350/15 384/355/15 385/351/15 +f 377/352/12 383/558/12 382/353/12 +f 376/354/13 382/353/13 384/355/13 +f 378/348/21 380/350/21 381/341/21 +f 388/357/10 389/559/10 387/358/10 +f 392/360/11 393/364/11 390/361/11 +f 388/363/15 390/361/15 393/364/15 +f 387/358/12 392/360/12 391/362/12 +f 398/366/10 405/560/10 404/367/10 +f 396/369/15 398/561/15 401/370/15 +f 395/372/12 400/375/12 399/373/12 +f 397/371/13 401/370/13 400/375/13 +f 394/374/14 399/373/14 398/376/14 +f 400/375/20 403/386/20 402/379/20 +f 409/381/14 413/391/14 411/382/14 +f 402/379/14 407/387/14 405/384/14 +f 403/386/11 406/388/11 407/387/11 +f 401/368/13 404/367/13 406/388/13 +f 408/390/15 412/395/15 413/391/15 +f 405/392/12 411/562/12 410/393/12 +f 404/394/13 410/393/13 412/395/13 +f 406/388/21 408/390/21 409/381/21 +f 416/397/10 417/563/10 415/398/10 +f 420/400/11 421/404/11 418/401/11 +f 416/403/15 418/401/15 421/404/15 +f 415/398/12 420/400/12 419/402/12 +f 424/406/10 425/564/10 423/407/10 +f 428/409/11 429/413/11 426/410/11 +f 424/412/15 426/410/15 429/413/15 +f 423/407/12 428/409/12 427/411/12 +f 432/415/10 433/565/10 431/416/10 +f 436/418/11 437/422/11 434/419/11 +f 432/421/15 434/419/15 437/422/15 +f 431/416/12 436/418/12 435/420/12 +f 440/424/10 441/566/10 439/425/10 +f 444/427/11 445/431/11 442/428/11 +f 440/430/15 442/428/15 445/431/15 +f 439/425/12 444/427/12 443/429/12 +f 448/433/10 449/567/10 447/434/10 +f 452/436/11 453/440/11 450/437/11 +f 448/439/15 450/437/15 453/440/15 +f 447/434/12 452/436/12 451/438/12 +f 456/442/10 457/568/10 455/443/10 +f 460/445/11 461/449/11 458/446/11 +f 456/448/15 458/446/15 461/449/15 +f 455/443/12 460/445/12 459/447/12 +f 464/451/10 465/569/10 463/452/10 +f 468/454/11 469/458/11 466/455/11 +f 464/457/15 466/455/15 469/458/15 +f 463/452/12 468/454/12 467/456/12 +f 472/460/10 473/570/10 471/461/10 +f 476/463/11 477/467/11 474/464/11 +f 472/466/15 474/464/15 477/467/15 +f 471/461/12 476/463/12 475/465/12 +f 480/469/10 481/571/10 479/470/10 +f 484/472/11 485/476/11 482/473/11 +f 480/475/15 482/473/15 485/476/15 +f 479/470/12 484/472/12 483/474/12 +f 714/478/16 716/572/16 712/479/16 +f 713/481/11 714/573/11 710/480/11 +f 711/483/19 709/482/19 710/480/19 +f 715/484/18 713/574/18 709/482/18 +f 712/479/10 716/575/10 715/485/10 +f 798/486/17 800/576/17 796/487/17 +f 797/489/11 798/577/11 794/488/11 +f 795/491/16 793/490/16 794/488/16 +f 799/492/19 797/578/19 793/490/19 +f 800/493/10 799/579/10 795/491/10 +f 882/494/19 884/580/19 880/495/19 +f 881/497/11 882/581/11 878/496/11 +f 879/499/18 877/498/18 878/496/18 +f 883/500/17 881/582/17 877/498/17 +f 884/501/10 883/583/10 879/499/10 +s 1 +f 224/584/13 231/585/22 223/586/17 +f 222/587/12 229/588/23 221/589/18 +f 220/590/14 227/591/24 219/592/19 +f 218/593/15 225/594/25 217/595/16 +f 217/595/16 232/596/26 224/584/13 +f 223/586/17 230/597/27 222/587/12 +f 221/589/18 228/598/28 220/590/14 +f 219/599/19 226/600/29 218/593/15 +f 226/601/29 233/602/30 225/603/25 +f 225/603/25 239/604/31 232/596/26 +f 231/585/22 237/605/32 230/597/27 +f 228/606/28 236/607/33 235/608/34 +f 231/585/22 239/604/31 238/609/35 +f 230/597/27 236/607/33 229/610/23 +f 239/604/31 245/611/36 238/609/35 +f 236/607/33 244/612/37 243/613/38 +f 234/614/39 240/615/40 233/602/30 +f 233/602/30 246/616/41 239/604/31 +f 238/609/35 244/612/37 237/605/32 +f 236/607/33 242/617/42 235/608/34 +f 226/601/29 227/618/24 234/614/39 +f 234/614/39 227/618/24 241/619/43 +f 228/606/28 235/608/34 227/620/24 +f 235/608/34 242/617/42 227/620/24 +f 227/621/24 250/622/44 247/623/10 +f 240/624/40 254/625/45 246/616/41 +f 227/626/24 249/627/46 241/628/43 +f 245/611/36 252/629/47 244/612/37 +f 243/630/38 250/622/44 242/631/42 +f 246/616/41 253/632/11 245/611/36 +f 243/630/38 252/629/47 251/633/18 +f 240/624/40 249/627/46 248/634/16 +f 262/635/13 269/636/22 261/637/17 +f 260/638/12 267/639/23 259/640/18 +f 258/641/14 265/642/24 257/643/19 +f 256/644/15 263/645/25 255/646/16 +f 255/646/16 270/647/26 262/635/13 +f 261/637/17 268/648/27 260/638/12 +f 259/640/18 266/649/28 258/641/14 +f 257/650/19 264/651/29 256/644/15 +f 263/652/25 272/653/39 271/654/30 +f 263/652/25 277/655/31 270/647/26 +f 269/636/22 275/656/32 268/648/27 +f 267/657/23 273/658/34 266/659/28 +f 269/636/22 277/655/31 276/660/35 +f 267/657/23 275/656/32 274/661/48 +f 277/655/31 283/662/36 276/660/35 +f 275/656/32 281/663/38 274/661/48 +f 272/653/39 278/664/40 271/654/30 +f 277/655/31 278/664/40 284/665/41 +f 276/660/35 282/666/37 275/656/32 +f 273/658/34 281/663/38 280/667/42 +f 264/668/29 265/669/24 272/653/39 +f 272/653/39 265/669/24 279/670/43 +f 266/659/28 273/658/34 265/671/24 +f 273/658/34 280/667/42 265/671/24 +f 280/672/42 285/673/10 265/674/24 +f 284/665/41 286/675/16 292/676/45 +f 279/677/43 285/678/10 287/679/46 +f 282/666/37 291/680/11 290/681/47 +f 280/672/42 289/682/18 288/683/44 +f 284/665/41 291/680/11 283/662/36 +f 282/666/37 289/682/18 281/684/38 +f 279/677/43 286/675/16 278/685/40 +f 310/686/49 297/687/50 298/688/51 +f 305/689/52 304/690/53 293/691/15 +f 307/692/54 294/693/55 295/694/56 +f 314/695/57 301/696/58 302/697/13 +f 311/698/59 298/688/51 299/699/12 +f 308/700/60 295/694/56 296/701/14 +f 315/702/61 302/697/13 303/703/62 +f 312/704/63 299/699/12 300/705/64 +f 309/706/65 296/707/14 297/687/50 +f 316/708/66 303/703/62 304/690/53 +f 306/709/67 293/691/15 294/693/55 +f 313/710/68 300/705/64 301/696/58 +f 317/711/69 321/712/11 319/713/70 +f 317/711/69 320/714/71 318/715/72 +f 319/716/70 321/717/11 322/718/73 +f 320/714/71 322/718/73 323/719/74 +f 322/720/73 321/721/11 324/722/75 +f 323/719/74 324/722/75 325/723/76 +f 324/724/75 327/725/77 325/723/76 +f 324/724/75 321/726/11 326/727/78 +f 326/728/78 329/729/79 327/725/77 +f 326/728/78 321/730/11 328/731/80 +f 328/732/80 331/733/81 329/729/79 +f 328/732/80 321/734/11 330/735/82 +f 330/736/82 333/737/83 331/733/81 +f 330/736/82 321/738/11 332/739/84 +f 332/740/84 335/741/85 333/737/83 +f 332/740/84 321/742/11 334/743/86 +f 334/744/86 321/745/11 336/746/87 +f 334/744/86 337/747/88 335/741/85 +f 327/725/77 312/704/63 313/710/68 +f 312/704/63 331/733/81 311/698/59 +f 336/748/87 321/749/11 338/750/89 +f 311/698/59 333/737/83 310/686/49 +f 333/737/83 309/706/65 310/686/49 +f 336/748/87 339/751/90 337/752/88 +f 308/753/60 335/741/85 337/747/88 +f 308/700/60 339/751/90 307/692/54 +f 338/754/89 321/755/11 340/756/91 +f 307/692/54 341/757/92 306/709/67 +f 305/689/52 341/757/92 318/715/72 +f 338/754/89 341/757/92 339/751/90 +f 305/689/52 320/714/71 316/708/66 +f 316/708/66 323/719/74 315/702/61 +f 340/758/91 321/759/11 317/760/69 +f 323/719/74 314/695/57 315/702/61 +f 325/723/76 313/710/68 314/695/57 +f 341/757/92 317/760/69 318/715/72 +f 503/761/49 490/762/50 491/763/51 +f 498/764/52 497/765/53 486/766/15 +f 500/767/54 487/768/55 488/769/56 +f 507/770/57 494/771/58 495/772/13 +f 504/773/59 491/763/51 492/774/12 +f 501/775/60 488/769/56 489/776/14 +f 508/777/61 495/772/13 496/778/62 +f 505/779/63 492/774/12 493/780/64 +f 502/781/65 489/782/14 490/762/50 +f 509/783/66 496/778/62 497/765/53 +f 499/784/67 486/766/15 487/768/55 +f 506/785/68 493/780/64 494/771/58 +f 510/786/69 514/787/11 512/788/70 +f 510/786/69 513/789/71 511/790/72 +f 512/791/70 514/792/11 515/793/73 +f 512/791/70 516/794/74 513/789/71 +f 515/795/73 514/796/11 517/797/75 +f 515/795/73 518/798/76 516/794/74 +f 517/799/75 520/800/77 518/798/76 +f 517/799/75 514/801/11 519/802/78 +f 519/803/78 522/804/79 520/800/77 +f 519/803/78 514/805/11 521/806/80 +f 521/807/80 524/808/81 522/804/79 +f 521/807/80 514/809/11 523/810/82 +f 524/808/81 525/811/84 526/812/83 +f 523/813/82 514/814/11 525/811/84 +f 525/815/84 528/816/85 526/812/83 +f 525/815/84 514/817/11 527/818/93 +f 527/819/93 514/820/11 529/821/87 +f 528/816/85 529/821/87 530/822/88 +f 506/785/68 522/804/79 505/779/63 +f 505/779/63 524/808/81 504/773/59 +f 529/823/87 514/824/11 531/825/89 +f 504/773/59 526/812/83 503/761/49 +f 526/812/83 502/781/65 503/761/49 +f 529/823/87 532/826/90 530/827/88 +f 501/828/60 528/816/85 530/822/88 +f 501/775/60 532/826/90 500/767/54 +f 531/829/89 514/830/11 533/831/91 +f 500/767/54 534/832/92 499/784/67 +f 498/764/52 534/832/92 511/790/72 +f 531/829/89 534/832/92 532/826/90 +f 498/764/52 513/789/71 509/783/66 +f 509/783/66 516/794/74 508/777/61 +f 533/833/91 514/834/11 510/835/69 +f 516/794/74 507/770/57 508/777/61 +f 507/770/57 520/800/77 506/785/68 +f 533/833/91 511/790/72 534/832/92 +f 552/836/49 539/837/50 540/838/51 +f 547/839/52 546/840/53 535/841/15 +f 549/842/54 536/843/55 537/844/56 +f 556/845/57 543/846/58 544/847/13 +f 553/848/59 540/838/51 541/849/12 +f 550/850/60 537/844/56 538/851/14 +f 557/852/61 544/847/13 545/853/62 +f 554/854/63 541/849/12 542/855/64 +f 551/856/65 538/857/14 539/837/50 +f 558/858/66 545/853/62 546/840/53 +f 548/859/67 535/841/15 536/843/55 +f 555/860/68 542/855/64 543/846/58 +f 559/861/69 563/862/11 561/863/70 +f 560/864/72 561/863/70 562/865/71 +f 561/866/70 563/867/11 564/868/94 +f 561/866/70 565/869/74 562/865/71 +f 564/870/94 563/871/11 566/872/75 +f 565/869/74 566/872/75 567/873/76 +f 566/874/75 569/875/77 567/873/76 +f 566/874/75 563/876/11 568/877/78 +f 569/875/77 570/878/95 571/879/79 +f 568/880/78 563/881/11 570/878/95 +f 571/879/79 572/882/82 573/883/81 +f 570/884/95 563/885/11 572/882/82 +f 572/886/82 575/887/83 573/883/81 +f 572/886/82 563/888/11 574/889/84 +f 574/890/84 577/891/85 575/887/83 +f 574/890/84 563/892/11 576/893/93 +f 576/894/93 563/895/11 578/896/87 +f 576/894/93 579/897/88 577/891/85 +f 569/875/77 554/854/63 555/860/68 +f 571/879/79 553/848/59 554/854/63 +f 578/898/87 563/899/11 580/900/96 +f 573/883/81 552/836/49 553/848/59 +f 575/887/83 551/856/65 552/836/49 +f 578/898/87 581/901/90 579/902/88 +f 551/856/65 579/897/88 550/903/60 +f 550/850/60 581/901/90 549/842/54 +f 580/904/96 563/905/11 582/906/91 +f 549/842/54 583/907/92 548/859/67 +f 547/839/52 583/907/92 560/864/72 +f 580/904/96 583/907/92 581/901/90 +f 547/839/52 562/865/71 558/858/66 +f 558/858/66 565/869/74 557/852/61 +f 582/908/91 563/909/11 559/910/69 +f 565/869/74 556/845/57 557/852/61 +f 556/845/57 569/875/77 555/860/68 +f 582/908/91 560/864/72 583/907/92 +f 601/911/49 588/912/50 589/913/51 +f 596/914/52 595/915/53 584/916/15 +f 598/917/54 585/918/55 586/919/56 +f 605/920/57 592/921/58 593/922/13 +f 602/923/59 589/913/51 590/924/12 +f 599/925/60 586/919/56 587/926/14 +f 606/927/61 593/922/13 594/928/62 +f 603/929/63 590/924/12 591/930/64 +f 600/931/65 587/932/14 588/912/50 +f 607/933/66 594/928/62 595/915/53 +f 597/934/67 584/916/15 585/918/55 +f 604/935/68 591/930/64 592/921/58 +f 608/936/69 612/937/11 610/938/70 +f 608/936/69 611/939/71 609/940/72 +f 610/941/70 612/942/11 613/943/94 +f 610/941/70 614/944/74 611/939/71 +f 613/945/94 612/946/11 615/947/75 +f 613/945/94 616/948/76 614/944/74 +f 616/948/76 617/949/78 618/950/77 +f 615/951/75 612/952/11 617/949/78 +f 617/953/78 620/954/79 618/950/77 +f 617/953/78 612/955/11 619/956/80 +f 620/954/79 621/957/82 622/958/81 +f 619/959/80 612/960/11 621/957/82 +f 621/961/82 624/962/83 622/958/81 +f 621/961/82 612/963/11 623/964/84 +f 624/962/83 625/965/93 626/966/85 +f 623/967/84 612/968/11 625/965/93 +f 625/969/93 612/970/11 627/971/87 +f 625/969/93 628/972/88 626/966/85 +f 618/950/77 603/929/63 604/935/68 +f 603/929/63 622/958/81 602/923/59 +f 627/973/87 612/974/11 629/975/96 +f 602/923/59 624/962/83 601/911/49 +f 624/962/83 600/931/65 601/911/49 +f 627/973/87 630/976/90 628/977/88 +f 599/978/60 626/966/85 628/972/88 +f 599/925/60 630/976/90 598/917/54 +f 629/979/96 612/980/11 631/981/91 +f 598/917/54 632/982/92 597/934/67 +f 597/934/67 609/940/72 596/914/52 +f 629/979/96 632/982/92 630/976/90 +f 596/914/52 611/939/71 607/933/66 +f 607/933/66 614/944/74 606/927/61 +f 631/983/91 612/984/11 608/985/69 +f 614/944/74 605/920/57 606/927/61 +f 605/920/57 618/950/77 604/935/68 +f 631/983/91 609/940/72 632/982/92 +f 640/986/14 647/987/97 639/988/19 +f 638/989/15 645/990/98 637/991/16 +f 636/992/13 643/993/99 635/994/17 +f 634/995/12 641/996/100 633/997/18 +f 633/997/18 648/998/101 640/986/14 +f 639/988/19 646/999/102 638/989/15 +f 637/991/16 644/1000/103 636/992/13 +f 635/1001/17 642/1002/104 634/995/12 +f 642/1003/104 649/1004/105 641/1005/100 +f 648/998/101 649/1004/105 655/1006/106 +f 646/999/102 654/1007/107 653/1008/108 +f 645/1009/98 651/1010/109 644/1011/103 +f 648/998/101 654/1007/107 647/987/97 +f 646/999/102 652/1012/110 645/1009/98 +f 655/1006/106 661/1013/111 654/1007/107 +f 652/1012/110 660/1014/112 659/1015/113 +f 649/1004/105 657/1016/114 656/1017/115 +f 649/1004/105 662/1018/116 655/1006/106 +f 654/1007/107 660/1014/112 653/1008/108 +f 652/1012/110 658/1019/117 651/1010/109 +f 642/1003/104 643/1020/99 650/1021/118 +f 650/1021/118 643/1020/99 657/1016/114 +f 644/1011/103 651/1010/109 643/1022/99 +f 651/1010/109 658/1019/117 643/1022/99 +f 643/1023/99 666/1024/46 663/1025/10 +f 656/1026/115 670/1027/47 662/1018/116 +f 643/1028/99 665/1029/44 657/1030/114 +f 661/1013/111 668/1031/45 660/1014/112 +f 659/1032/113 666/1024/46 658/1033/117 +f 661/1013/111 670/1027/47 669/1034/11 +f 659/1032/113 668/1031/45 667/1035/16 +f 656/1026/115 665/1029/44 664/1036/18 +f 678/1037/14 685/1038/97 677/1039/19 +f 676/1040/15 683/1041/98 675/1042/16 +f 674/1043/13 681/1044/99 673/1045/17 +f 672/1046/12 679/1047/100 671/1048/18 +f 671/1048/18 686/1049/101 678/1037/14 +f 677/1039/19 684/1050/102 676/1040/15 +f 675/1042/16 682/1051/103 674/1043/13 +f 673/1052/17 680/1053/104 672/1046/12 +f 679/1054/100 688/1055/118 687/1056/105 +f 679/1054/100 693/1057/106 686/1049/101 +f 685/1038/97 691/1058/108 684/1050/102 +f 683/1059/98 689/1060/109 682/1061/103 +f 685/1038/97 693/1057/106 692/1062/107 +f 684/1050/102 690/1063/110 683/1059/98 +f 693/1057/106 699/1064/111 692/1062/107 +f 691/1058/108 697/1065/113 690/1063/110 +f 688/1055/118 694/1066/115 687/1056/105 +f 693/1057/106 694/1066/115 700/1067/116 +f 692/1062/107 698/1068/112 691/1058/108 +f 689/1060/109 697/1065/113 696/1069/117 +f 680/1070/104 681/1071/99 688/1055/118 +f 688/1055/118 681/1071/99 695/1072/114 +f 682/1061/103 689/1060/109 681/1073/99 +f 689/1060/109 696/1069/117 681/1073/99 +f 696/1074/117 701/1075/10 681/1076/99 +f 700/1067/116 702/1077/18 708/1078/47 +f 695/1079/114 701/1080/10 703/1081/44 +f 699/1064/111 706/1082/45 698/1068/112 +f 697/1083/113 704/1084/46 696/1074/117 +f 700/1067/116 707/1085/11 699/1064/111 +f 698/1068/112 705/1086/16 697/1083/113 +f 695/1079/114 702/1077/18 694/1087/115 +f 724/1088/15 731/1089/119 723/1090/16 +f 722/1091/13 729/1092/120 721/1093/17 +f 720/1094/12 727/1095/44 719/1096/18 +f 718/1097/14 725/1098/121 717/1099/19 +f 717/1099/19 732/1100/122 724/1088/15 +f 723/1090/16 730/1101/123 722/1091/13 +f 721/1093/17 728/1102/124 720/1094/12 +f 719/1103/18 726/1104/125 718/1097/14 +f 726/1105/125 733/1106/126 725/1107/121 +f 732/1100/122 733/1106/126 739/1108/127 +f 730/1101/123 738/1109/45 737/1110/128 +f 728/1111/124 736/1112/129 735/1113/130 +f 731/1089/119 739/1108/127 738/1109/45 +f 730/1101/123 736/1112/129 729/1114/120 +f 738/1109/45 746/1115/131 745/1116/132 +f 736/1112/129 744/1117/133 743/1118/134 +f 734/1119/135 740/1120/136 733/1106/126 +f 733/1106/126 746/1115/131 739/1108/127 +f 738/1109/45 744/1117/133 737/1110/128 +f 736/1112/129 742/1121/137 735/1113/130 +f 726/1105/125 727/1122/44 734/1119/135 +f 734/1119/135 727/1122/44 741/1123/138 +f 728/1111/124 735/1113/130 727/1124/44 +f 735/1113/130 742/1121/137 727/1124/44 +f 727/1125/44 750/1126/99 747/1127/10 +f 740/1128/136 754/1129/107 746/1115/131 +f 727/1130/44 749/1131/24 741/1132/138 +f 745/1116/132 752/1133/35 744/1117/133 +f 743/1134/134 750/1126/99 742/1135/137 +f 746/1115/131 753/1136/11 745/1116/132 +f 743/1134/134 752/1133/35 751/1137/17 +f 740/1128/136 749/1131/24 748/1138/19 +f 762/1139/15 769/1140/119 761/1141/16 +f 760/1142/13 767/1143/120 759/1144/17 +f 758/1145/12 765/1146/44 757/1147/18 +f 756/1148/14 763/1149/121 755/1150/19 +f 755/1150/19 770/1151/122 762/1139/15 +f 761/1141/16 768/1152/123 760/1142/13 +f 759/1144/17 766/1153/124 758/1145/12 +f 757/1154/18 764/1155/125 756/1148/14 +f 763/1156/121 772/1157/139 771/1158/126 +f 763/1156/121 777/1159/127 770/1151/122 +f 768/1152/123 776/1160/45 775/1161/140 +f 767/1162/120 773/1163/130 766/1164/124 +f 769/1140/119 777/1159/127 776/1160/45 +f 768/1152/123 774/1165/129 767/1162/120 +f 777/1159/127 783/1166/132 776/1160/45 +f 775/1161/140 781/1167/134 774/1165/129 +f 772/1157/139 778/1168/136 771/1158/126 +f 771/1158/126 784/1169/131 777/1159/127 +f 776/1160/45 782/1170/133 775/1161/140 +f 773/1163/130 781/1167/134 780/1171/137 +f 764/1172/125 765/1173/44 772/1157/139 +f 772/1157/139 765/1173/44 779/1174/138 +f 766/1164/124 773/1163/130 765/1175/44 +f 773/1163/130 780/1171/137 765/1175/44 +f 780/1176/137 785/1177/10 765/1178/44 +f 784/1169/131 786/1179/19 792/1180/107 +f 779/1181/138 785/1182/10 787/1183/24 +f 782/1170/133 791/1184/11 790/1185/35 +f 780/1176/137 789/1186/17 788/1187/99 +f 783/1166/132 792/1180/107 791/1184/11 +f 782/1170/133 789/1186/17 781/1188/134 +f 779/1181/138 786/1179/19 778/1189/136 +f 808/1190/12 815/1191/141 807/1192/18 +f 806/1193/14 813/1194/142 805/1195/19 +f 804/1196/15 811/1197/46 803/1198/16 +f 802/1199/13 809/1200/143 801/1201/17 +f 801/1201/17 816/1202/144 808/1190/12 +f 807/1192/18 814/1203/145 806/1193/14 +f 805/1195/19 812/1204/146 804/1196/15 +f 803/1205/16 810/1206/147 802/1199/13 +f 810/1207/147 817/1208/148 809/1209/143 +f 816/1202/144 817/1208/148 823/1210/149 +f 814/1203/145 822/1211/47 821/1212/150 +f 812/1213/146 820/1214/151 819/1215/152 +f 815/1191/141 823/1210/149 822/1211/47 +f 814/1203/145 820/1214/151 813/1216/142 +f 823/1210/149 829/1217/153 822/1211/47 +f 820/1214/151 828/1218/154 827/1219/155 +f 817/1208/148 825/1220/156 824/1221/157 +f 817/1208/148 830/1222/158 823/1210/149 +f 822/1211/47 828/1218/154 821/1212/150 +f 820/1214/151 826/1223/159 819/1215/152 +f 810/1207/147 811/1224/46 818/1225/160 +f 818/1225/160 811/1224/46 825/1220/156 +f 812/1213/146 819/1215/152 811/1226/46 +f 819/1215/152 826/1223/159 811/1226/46 +f 811/1227/46 834/1228/24 831/1229/10 +f 824/1230/157 838/1231/35 830/1222/158 +f 811/1232/46 833/1233/99 825/1234/156 +f 828/1218/154 837/1235/11 836/1236/107 +f 827/1237/155 834/1228/24 826/1238/159 +f 829/1217/153 838/1231/35 837/1235/11 +f 828/1218/154 835/1239/19 827/1237/155 +f 824/1230/157 833/1233/99 832/1240/17 +f 846/1241/12 853/1242/141 845/1243/18 +f 844/1244/14 851/1245/142 843/1246/19 +f 842/1247/15 849/1248/46 841/1249/16 +f 840/1250/13 847/1251/143 839/1252/17 +f 839/1252/17 854/1253/144 846/1241/12 +f 845/1243/18 852/1254/145 844/1244/14 +f 843/1246/19 850/1255/146 842/1247/15 +f 841/1256/16 848/1257/147 840/1250/13 +f 847/1258/143 856/1259/161 855/1260/162 +f 847/1258/143 861/1261/149 854/1253/144 +f 853/1242/141 859/1262/150 852/1254/145 +f 851/1263/142 857/1264/152 850/1265/146 +f 853/1242/141 861/1261/149 860/1266/47 +f 852/1254/145 858/1267/151 851/1263/142 +f 861/1261/149 867/1268/153 860/1266/47 +f 859/1262/150 865/1269/155 858/1267/151 +f 856/1259/161 862/1270/157 855/1260/162 +f 855/1260/162 868/1271/158 861/1261/149 +f 860/1266/47 866/1272/154 859/1262/150 +f 857/1264/152 865/1269/155 864/1273/159 +f 848/1274/147 849/1275/46 856/1259/161 +f 856/1259/161 849/1275/46 863/1276/156 +f 850/1265/146 857/1264/152 849/1277/46 +f 857/1264/152 864/1273/159 849/1277/46 +f 864/1278/159 869/1279/10 849/1280/46 +f 868/1271/158 870/1281/17 876/1282/35 +f 863/1283/156 869/1284/10 871/1285/99 +f 867/1268/153 874/1286/107 866/1272/154 +f 864/1278/159 873/1287/19 872/1288/24 +f 868/1271/158 875/1289/11 867/1268/153 +f 866/1272/154 873/1287/19 865/1290/155 +f 863/1283/156 870/1281/17 862/1291/157 +f 224/584/13 232/596/26 231/585/22 +f 222/587/12 230/597/27 229/588/23 +f 220/590/14 228/598/28 227/591/24 +f 218/593/15 226/600/29 225/594/25 +f 217/595/16 225/594/25 232/596/26 +f 223/586/17 231/585/22 230/597/27 +f 221/589/18 229/588/23 228/598/28 +f 219/599/19 227/1292/24 226/600/29 +f 226/601/29 234/614/39 233/602/30 +f 225/603/25 233/602/30 239/604/31 +f 231/585/22 238/609/35 237/605/32 +f 228/606/28 229/610/23 236/607/33 +f 231/585/22 232/596/26 239/604/31 +f 230/597/27 237/605/32 236/607/33 +f 239/604/31 246/616/41 245/611/36 +f 236/607/33 237/605/32 244/612/37 +f 234/614/39 241/619/43 240/615/40 +f 233/602/30 240/615/40 246/616/41 +f 238/609/35 245/611/36 244/612/37 +f 236/607/33 243/613/38 242/617/42 +f 227/621/24 242/631/42 250/622/44 +f 240/624/40 248/634/16 254/625/45 +f 227/626/24 247/1293/10 249/627/46 +f 245/611/36 253/632/11 252/629/47 +f 243/630/38 251/633/18 250/622/44 +f 246/616/41 254/625/45 253/632/11 +f 243/630/38 244/612/37 252/629/47 +f 240/624/40 241/628/43 249/627/46 +f 262/635/13 270/647/26 269/636/22 +f 260/638/12 268/648/27 267/639/23 +f 258/641/14 266/649/28 265/642/24 +f 256/644/15 264/651/29 263/645/25 +f 255/646/16 263/645/25 270/647/26 +f 261/637/17 269/636/22 268/648/27 +f 259/640/18 267/639/23 266/649/28 +f 257/650/19 265/1294/24 264/651/29 +f 263/652/25 264/668/29 272/653/39 +f 263/652/25 271/654/30 277/655/31 +f 269/636/22 276/660/35 275/656/32 +f 267/657/23 274/661/48 273/658/34 +f 269/636/22 270/647/26 277/655/31 +f 267/657/23 268/648/27 275/656/32 +f 277/655/31 284/665/41 283/662/36 +f 275/656/32 282/666/37 281/663/38 +f 272/653/39 279/670/43 278/664/40 +f 277/655/31 271/654/30 278/664/40 +f 276/660/35 283/662/36 282/666/37 +f 273/658/34 274/661/48 281/663/38 +f 280/672/42 288/683/44 285/673/10 +f 284/665/41 278/685/40 286/675/16 +f 279/677/43 265/1295/24 285/678/10 +f 282/666/37 283/662/36 291/680/11 +f 280/672/42 281/684/38 289/682/18 +f 284/665/41 292/676/45 291/680/11 +f 282/666/37 290/681/47 289/682/18 +f 279/677/43 287/679/46 286/675/16 +f 310/686/49 309/706/65 297/687/50 +f 305/689/52 316/708/66 304/690/53 +f 307/692/54 306/709/67 294/693/55 +f 314/695/57 313/710/68 301/696/58 +f 311/698/59 310/686/49 298/688/51 +f 308/700/60 307/692/54 295/694/56 +f 315/702/61 314/695/57 302/697/13 +f 312/704/63 311/698/59 299/699/12 +f 309/706/65 308/753/60 296/707/14 +f 316/708/66 315/702/61 303/703/62 +f 306/709/67 305/689/52 293/691/15 +f 313/710/68 312/704/63 300/705/64 +f 317/711/69 319/713/70 320/714/71 +f 320/714/71 319/716/70 322/718/73 +f 323/719/74 322/720/73 324/722/75 +f 324/724/75 326/727/78 327/725/77 +f 326/728/78 328/731/80 329/729/79 +f 328/732/80 330/735/82 331/733/81 +f 330/736/82 332/739/84 333/737/83 +f 332/740/84 334/743/86 335/741/85 +f 334/744/86 336/746/87 337/747/88 +f 327/725/77 329/729/79 312/704/63 +f 312/704/63 329/729/79 331/733/81 +f 311/698/59 331/733/81 333/737/83 +f 333/737/83 335/741/85 309/706/65 +f 336/748/87 338/750/89 339/751/90 +f 308/753/60 309/706/65 335/741/85 +f 308/700/60 337/752/88 339/751/90 +f 307/692/54 339/751/90 341/757/92 +f 305/689/52 306/709/67 341/757/92 +f 338/754/89 340/756/91 341/757/92 +f 305/689/52 318/715/72 320/714/71 +f 316/708/66 320/714/71 323/719/74 +f 323/719/74 325/723/76 314/695/57 +f 325/723/76 327/725/77 313/710/68 +f 341/757/92 340/758/91 317/760/69 +f 503/761/49 502/781/65 490/762/50 +f 498/764/52 509/783/66 497/765/53 +f 500/767/54 499/784/67 487/768/55 +f 507/770/57 506/785/68 494/771/58 +f 504/773/59 503/761/49 491/763/51 +f 501/775/60 500/767/54 488/769/56 +f 508/777/61 507/770/57 495/772/13 +f 505/779/63 504/773/59 492/774/12 +f 502/781/65 501/828/60 489/782/14 +f 509/783/66 508/777/61 496/778/62 +f 499/784/67 498/764/52 486/766/15 +f 506/785/68 505/779/63 493/780/64 +f 510/786/69 512/788/70 513/789/71 +f 512/791/70 515/793/73 516/794/74 +f 515/795/73 517/797/75 518/798/76 +f 517/799/75 519/802/78 520/800/77 +f 519/803/78 521/806/80 522/804/79 +f 521/807/80 523/810/82 524/808/81 +f 524/808/81 523/813/82 525/811/84 +f 525/815/84 527/818/93 528/816/85 +f 528/816/85 527/819/93 529/821/87 +f 506/785/68 520/800/77 522/804/79 +f 505/779/63 522/804/79 524/808/81 +f 504/773/59 524/808/81 526/812/83 +f 526/812/83 528/816/85 502/781/65 +f 529/823/87 531/825/89 532/826/90 +f 501/828/60 502/781/65 528/816/85 +f 501/775/60 530/827/88 532/826/90 +f 500/767/54 532/826/90 534/832/92 +f 498/764/52 499/784/67 534/832/92 +f 531/829/89 533/831/91 534/832/92 +f 498/764/52 511/790/72 513/789/71 +f 509/783/66 513/789/71 516/794/74 +f 516/794/74 518/798/76 507/770/57 +f 507/770/57 518/798/76 520/800/77 +f 533/833/91 510/835/69 511/790/72 +f 552/836/49 551/856/65 539/837/50 +f 547/839/52 558/858/66 546/840/53 +f 549/842/54 548/859/67 536/843/55 +f 556/845/57 555/860/68 543/846/58 +f 553/848/59 552/836/49 540/838/51 +f 550/850/60 549/842/54 537/844/56 +f 557/852/61 556/845/57 544/847/13 +f 554/854/63 553/848/59 541/849/12 +f 551/856/65 550/903/60 538/857/14 +f 558/858/66 557/852/61 545/853/62 +f 548/859/67 547/839/52 535/841/15 +f 555/860/68 554/854/63 542/855/64 +f 560/864/72 559/861/69 561/863/70 +f 561/866/70 564/868/94 565/869/74 +f 565/869/74 564/870/94 566/872/75 +f 566/874/75 568/877/78 569/875/77 +f 569/875/77 568/880/78 570/878/95 +f 571/879/79 570/884/95 572/882/82 +f 572/886/82 574/889/84 575/887/83 +f 574/890/84 576/893/93 577/891/85 +f 576/894/93 578/896/87 579/897/88 +f 569/875/77 571/879/79 554/854/63 +f 571/879/79 573/883/81 553/848/59 +f 573/883/81 575/887/83 552/836/49 +f 575/887/83 577/891/85 551/856/65 +f 578/898/87 580/900/96 581/901/90 +f 551/856/65 577/891/85 579/897/88 +f 550/850/60 579/902/88 581/901/90 +f 549/842/54 581/901/90 583/907/92 +f 547/839/52 548/859/67 583/907/92 +f 580/904/96 582/906/91 583/907/92 +f 547/839/52 560/864/72 562/865/71 +f 558/858/66 562/865/71 565/869/74 +f 565/869/74 567/873/76 556/845/57 +f 556/845/57 567/873/76 569/875/77 +f 582/908/91 559/910/69 560/864/72 +f 601/911/49 600/931/65 588/912/50 +f 596/914/52 607/933/66 595/915/53 +f 598/917/54 597/934/67 585/918/55 +f 605/920/57 604/935/68 592/921/58 +f 602/923/59 601/911/49 589/913/51 +f 599/925/60 598/917/54 586/919/56 +f 606/927/61 605/920/57 593/922/13 +f 603/929/63 602/923/59 590/924/12 +f 600/931/65 599/978/60 587/932/14 +f 607/933/66 606/927/61 594/928/62 +f 597/934/67 596/914/52 584/916/15 +f 604/935/68 603/929/63 591/930/64 +f 608/936/69 610/938/70 611/939/71 +f 610/941/70 613/943/94 614/944/74 +f 613/945/94 615/947/75 616/948/76 +f 616/948/76 615/951/75 617/949/78 +f 617/953/78 619/956/80 620/954/79 +f 620/954/79 619/959/80 621/957/82 +f 621/961/82 623/964/84 624/962/83 +f 624/962/83 623/967/84 625/965/93 +f 625/969/93 627/971/87 628/972/88 +f 618/950/77 620/954/79 603/929/63 +f 603/929/63 620/954/79 622/958/81 +f 602/923/59 622/958/81 624/962/83 +f 624/962/83 626/966/85 600/931/65 +f 627/973/87 629/975/96 630/976/90 +f 599/978/60 600/931/65 626/966/85 +f 599/925/60 628/977/88 630/976/90 +f 598/917/54 630/976/90 632/982/92 +f 597/934/67 632/982/92 609/940/72 +f 629/979/96 631/981/91 632/982/92 +f 596/914/52 609/940/72 611/939/71 +f 607/933/66 611/939/71 614/944/74 +f 614/944/74 616/948/76 605/920/57 +f 605/920/57 616/948/76 618/950/77 +f 631/983/91 608/985/69 609/940/72 +f 640/986/14 648/998/101 647/987/97 +f 638/989/15 646/999/102 645/990/98 +f 636/992/13 644/1000/103 643/993/99 +f 634/995/12 642/1002/104 641/996/100 +f 633/997/18 641/996/100 648/998/101 +f 639/988/19 647/987/97 646/999/102 +f 637/991/16 645/990/98 644/1000/103 +f 635/1001/17 643/1296/99 642/1002/104 +f 642/1003/104 650/1021/118 649/1004/105 +f 648/998/101 641/1005/100 649/1004/105 +f 646/999/102 647/987/97 654/1007/107 +f 645/1009/98 652/1012/110 651/1010/109 +f 648/998/101 655/1006/106 654/1007/107 +f 646/999/102 653/1008/108 652/1012/110 +f 655/1006/106 662/1018/116 661/1013/111 +f 652/1012/110 653/1008/108 660/1014/112 +f 649/1004/105 650/1021/118 657/1016/114 +f 649/1004/105 656/1017/115 662/1018/116 +f 654/1007/107 661/1013/111 660/1014/112 +f 652/1012/110 659/1015/113 658/1019/117 +f 643/1023/99 658/1033/117 666/1024/46 +f 656/1026/115 664/1036/18 670/1027/47 +f 643/1028/99 663/1297/10 665/1029/44 +f 661/1013/111 669/1034/11 668/1031/45 +f 659/1032/113 667/1035/16 666/1024/46 +f 661/1013/111 662/1018/116 670/1027/47 +f 659/1032/113 660/1014/112 668/1031/45 +f 656/1026/115 657/1030/114 665/1029/44 +f 678/1037/14 686/1049/101 685/1038/97 +f 676/1040/15 684/1050/102 683/1041/98 +f 674/1043/13 682/1051/103 681/1044/99 +f 672/1046/12 680/1053/104 679/1047/100 +f 671/1048/18 679/1047/100 686/1049/101 +f 677/1039/19 685/1038/97 684/1050/102 +f 675/1042/16 683/1041/98 682/1051/103 +f 673/1052/17 681/1298/99 680/1053/104 +f 679/1054/100 680/1070/104 688/1055/118 +f 679/1054/100 687/1056/105 693/1057/106 +f 685/1038/97 692/1062/107 691/1058/108 +f 683/1059/98 690/1063/110 689/1060/109 +f 685/1038/97 686/1049/101 693/1057/106 +f 684/1050/102 691/1058/108 690/1063/110 +f 693/1057/106 700/1067/116 699/1064/111 +f 691/1058/108 698/1068/112 697/1065/113 +f 688/1055/118 695/1072/114 694/1066/115 +f 693/1057/106 687/1056/105 694/1066/115 +f 692/1062/107 699/1064/111 698/1068/112 +f 689/1060/109 690/1063/110 697/1065/113 +f 696/1074/117 704/1084/46 701/1075/10 +f 700/1067/116 694/1087/115 702/1077/18 +f 695/1079/114 681/1299/99 701/1080/10 +f 699/1064/111 707/1085/11 706/1082/45 +f 697/1083/113 705/1086/16 704/1084/46 +f 700/1067/116 708/1078/47 707/1085/11 +f 698/1068/112 706/1082/45 705/1086/16 +f 695/1079/114 703/1081/44 702/1077/18 +f 724/1088/15 732/1100/122 731/1089/119 +f 722/1091/13 730/1101/123 729/1092/120 +f 720/1094/12 728/1102/124 727/1095/44 +f 718/1097/14 726/1104/125 725/1098/121 +f 717/1099/19 725/1098/121 732/1100/122 +f 723/1090/16 731/1089/119 730/1101/123 +f 721/1093/17 729/1092/120 728/1102/124 +f 719/1103/18 727/1300/44 726/1104/125 +f 726/1105/125 734/1119/135 733/1106/126 +f 732/1100/122 725/1107/121 733/1106/126 +f 730/1101/123 731/1089/119 738/1109/45 +f 728/1111/124 729/1114/120 736/1112/129 +f 731/1089/119 732/1100/122 739/1108/127 +f 730/1101/123 737/1110/128 736/1112/129 +f 738/1109/45 739/1108/127 746/1115/131 +f 736/1112/129 737/1110/128 744/1117/133 +f 734/1119/135 741/1123/138 740/1120/136 +f 733/1106/126 740/1120/136 746/1115/131 +f 738/1109/45 745/1116/132 744/1117/133 +f 736/1112/129 743/1118/134 742/1121/137 +f 727/1125/44 742/1135/137 750/1126/99 +f 740/1128/136 748/1138/19 754/1129/107 +f 727/1130/44 747/1301/10 749/1131/24 +f 745/1116/132 753/1136/11 752/1133/35 +f 743/1134/134 751/1137/17 750/1126/99 +f 746/1115/131 754/1129/107 753/1136/11 +f 743/1134/134 744/1117/133 752/1133/35 +f 740/1128/136 741/1132/138 749/1131/24 +f 762/1139/15 770/1151/122 769/1140/119 +f 760/1142/13 768/1152/123 767/1143/120 +f 758/1145/12 766/1153/124 765/1146/44 +f 756/1148/14 764/1155/125 763/1149/121 +f 755/1150/19 763/1149/121 770/1151/122 +f 761/1141/16 769/1140/119 768/1152/123 +f 759/1144/17 767/1143/120 766/1153/124 +f 757/1154/18 765/1302/44 764/1155/125 +f 763/1156/121 764/1172/125 772/1157/139 +f 763/1156/121 771/1158/126 777/1159/127 +f 768/1152/123 769/1140/119 776/1160/45 +f 767/1162/120 774/1165/129 773/1163/130 +f 769/1140/119 770/1151/122 777/1159/127 +f 768/1152/123 775/1161/140 774/1165/129 +f 777/1159/127 784/1169/131 783/1166/132 +f 775/1161/140 782/1170/133 781/1167/134 +f 772/1157/139 779/1174/138 778/1168/136 +f 771/1158/126 778/1168/136 784/1169/131 +f 776/1160/45 783/1166/132 782/1170/133 +f 773/1163/130 774/1165/129 781/1167/134 +f 780/1176/137 788/1187/99 785/1177/10 +f 784/1169/131 778/1189/136 786/1179/19 +f 779/1181/138 765/1303/44 785/1182/10 +f 782/1170/133 783/1166/132 791/1184/11 +f 780/1176/137 781/1188/134 789/1186/17 +f 783/1166/132 784/1169/131 792/1180/107 +f 782/1170/133 790/1185/35 789/1186/17 +f 779/1181/138 787/1183/24 786/1179/19 +f 808/1190/12 816/1202/144 815/1191/141 +f 806/1193/14 814/1203/145 813/1194/142 +f 804/1196/15 812/1204/146 811/1197/46 +f 802/1199/13 810/1206/147 809/1200/143 +f 801/1201/17 809/1200/143 816/1202/144 +f 807/1192/18 815/1191/141 814/1203/145 +f 805/1195/19 813/1194/142 812/1204/146 +f 803/1205/16 811/1304/46 810/1206/147 +f 810/1207/147 818/1225/160 817/1208/148 +f 816/1202/144 809/1209/143 817/1208/148 +f 814/1203/145 815/1191/141 822/1211/47 +f 812/1213/146 813/1216/142 820/1214/151 +f 815/1191/141 816/1202/144 823/1210/149 +f 814/1203/145 821/1212/150 820/1214/151 +f 823/1210/149 830/1222/158 829/1217/153 +f 820/1214/151 821/1212/150 828/1218/154 +f 817/1208/148 818/1225/160 825/1220/156 +f 817/1208/148 824/1221/157 830/1222/158 +f 822/1211/47 829/1217/153 828/1218/154 +f 820/1214/151 827/1219/155 826/1223/159 +f 811/1227/46 826/1238/159 834/1228/24 +f 824/1230/157 832/1240/17 838/1231/35 +f 811/1232/46 831/1305/10 833/1233/99 +f 828/1218/154 829/1217/153 837/1235/11 +f 827/1237/155 835/1239/19 834/1228/24 +f 829/1217/153 830/1222/158 838/1231/35 +f 828/1218/154 836/1236/107 835/1239/19 +f 824/1230/157 825/1234/156 833/1233/99 +f 846/1241/12 854/1253/144 853/1242/141 +f 844/1244/14 852/1254/145 851/1245/142 +f 842/1247/15 850/1255/146 849/1248/46 +f 840/1250/13 848/1257/147 847/1251/143 +f 839/1252/17 847/1251/143 854/1253/144 +f 845/1243/18 853/1242/141 852/1254/145 +f 843/1246/19 851/1245/142 850/1255/146 +f 841/1256/16 849/1306/46 848/1257/147 +f 847/1258/143 848/1274/147 856/1259/161 +f 847/1258/143 855/1260/162 861/1261/149 +f 853/1242/141 860/1266/47 859/1262/150 +f 851/1263/142 858/1267/151 857/1264/152 +f 853/1242/141 854/1253/144 861/1261/149 +f 852/1254/145 859/1262/150 858/1267/151 +f 861/1261/149 868/1271/158 867/1268/153 +f 859/1262/150 866/1272/154 865/1269/155 +f 856/1259/161 863/1276/156 862/1270/157 +f 855/1260/162 862/1270/157 868/1271/158 +f 860/1266/47 867/1268/153 866/1272/154 +f 857/1264/152 858/1267/151 865/1269/155 +f 864/1278/159 872/1288/24 869/1279/10 +f 868/1271/158 862/1291/157 870/1281/17 +f 863/1283/156 849/1307/46 869/1284/10 +f 867/1268/153 875/1289/11 874/1286/107 +f 864/1278/159 865/1290/155 873/1287/19 +f 868/1271/158 876/1282/35 875/1289/11 +f 866/1272/154 874/1286/107 873/1287/19 +f 863/1283/156 871/1285/99 870/1281/17 diff --git a/src/main/resources/assets/hbm/textures/models/machines/acidizer.png b/src/main/resources/assets/hbm/textures/models/machines/acidizer.png new file mode 100644 index 0000000000000000000000000000000000000000..9e93b164b2fb997d71ec6bf61bff297bd75fbee7 GIT binary patch literal 9447 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 literal 0 HcmV?d00001 From 5b77cc7697a944dc405ac060c9449e415ecd8705 Mon Sep 17 00:00:00 2001 From: BallOfEnergy <66693744+BallOfEnergy1@users.noreply.github.com> Date: Sat, 8 Jun 2024 21:01:52 -0500 Subject: [PATCH 31/69] smallest fix known to man --- .../tileentity/machine/rbmk/TileEntityRBMKControlManual.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKControlManual.java b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKControlManual.java index 1afb0cc8d..5c0c71677 100644 --- a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKControlManual.java +++ b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKControlManual.java @@ -136,7 +136,7 @@ public class TileEntityRBMKControlManual extends TileEntityRBMKControl implement @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getColor(Context context, Arguments args) { - return new Object[] {this.color}; + return new Object[] {this.color.ordinal()}; } @Override From dcac56d4e2e73592b278005268a323f1b01c19e5 Mon Sep 17 00:00:00 2001 From: BallOfEnergy <66693744+BallOfEnergy1@users.noreply.github.com> Date: Sat, 8 Jun 2024 21:06:38 -0500 Subject: [PATCH 32/69] add set color function --- .../machine/rbmk/TileEntityRBMKControlManual.java | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKControlManual.java b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKControlManual.java index 5c0c71677..92ec4377e 100644 --- a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKControlManual.java +++ b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKControlManual.java @@ -16,6 +16,7 @@ import net.minecraft.client.gui.GuiScreen; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Container; import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.MathHelper; import net.minecraft.util.Vec3; import net.minecraft.world.World; @@ -139,6 +140,16 @@ public class TileEntityRBMKControlManual extends TileEntityRBMKControl implement return new Object[] {this.color.ordinal()}; } + @Callback(direct = true) + @Optional.Method(modid = "OpenComputers") + public Object[] setColor(Context context, Arguments args) { + int colorI = args.checkInteger(0); + colorI = MathHelper.clamp_int(colorI, 0, 4); + this.color = RBMKColor.values()[colorI]; + return new Object[] {true}; + } + + @Override public Container provideContainer(int ID, EntityPlayer player, World world, int x, int y, int z) { return new ContainerRBMKControl(player.inventory, this); From df34a51913d02bcbfbccf26bc090b4f679fe4b60 Mon Sep 17 00:00:00 2001 From: BallOfEnergy <66693744+BallOfEnergy1@users.noreply.github.com> Date: Sat, 8 Jun 2024 22:25:59 -0500 Subject: [PATCH 33/69] another small fix --- .../hbm/tileentity/machine/rbmk/TileEntityRBMKOutgasser.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 1b74e6e92..9d08657b7 100644 --- a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKOutgasser.java +++ b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKOutgasser.java @@ -241,7 +241,7 @@ public class TileEntityRBMKOutgasser extends TileEntityRBMKSlottedBase implement @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getGasType(Context context, Arguments args) { - return new Object[] {gas.getTankType().getID()}; + return new Object[] {gas.getTankType().getName()}; } @Callback(direct = true) From da9c44e108a67ea11323a351dda870b977b89fb4 Mon Sep 17 00:00:00 2001 From: Bob Date: Sun, 9 Jun 2024 21:03:47 +0200 Subject: [PATCH 34/69] *throws 155 pound anvil at you* --- changelog | 53 - gradle.properties | 2 +- .../com/hbm/blocks/network/CraneGrabber.java | 2 +- .../hbm/blocks/network/RadioTorchBase.java | 8 +- .../hbm/blocks/network/RadioTorchCounter.java | 11 + .../inventory/recipes/ChemplantRecipes.java | 2 +- .../hbm/items/machine/ItemArcElectrode.java | 6 +- src/main/java/com/hbm/lib/RefStrings.java | 2 +- .../render/tileentity/RenderCrystallizer.java | 13 +- .../TileEntityMachineArcFurnaceLarge.java | 2 +- .../TileEntityMachineCrystallizer.java | 16 +- .../machine/TileEntityMachineTurbineGas.java | 26 +- .../com/hbm/world/dungeon/DesertAtom001.java | 2 +- .../assets/hbm/models/machines/acidizer.obj | 2851 +++++++++-------- .../hbm/textures/models/machines/acidizer.png | Bin 9447 -> 9569 bytes 15 files changed, 1513 insertions(+), 1483 deletions(-) diff --git a/changelog b/changelog index 4bdd3492d..e69de29bb 100644 --- a/changelog +++ b/changelog @@ -1,53 +0,0 @@ -## Added -* Asphalt stairs - * Stairs, but fast - * Slabs too -* More circuits - * Control units and advanced control units are exclusively used for nukes - * CUs and ACUs are quite a bit more expensive than standard circuits and also make use of tantalum capacitors - * Nukes are no longer for people who weasel their way through progression and then get 8 uranium, 2 steel and some duct tape, instead every atomic bomb requires a large electronics production capacity - * WMDs are expensive, who woulda thunk - -## Changed -* Wires now use recipe autogen for anvils, meaning that all fine wires are now obtainable via tier 4 anvil -* Changed most nuke recipes - * Most assembler recipes have been de-cluttered, no longer using random extra plates or wires - * Nukes now exclusively use control units or ACUs instead of circuits -* CRTs are now crafted in the crafting table instead of via assembler, making use of vacuum tubes -* Chainlink fences now only create posts on edges or intersections - * The new chainlink fence post block will always create a post, emulating the behavior of the old fences -* Removed gold sands (frees up 2 block IDs) -* There's now two new variants of builder's choice concrete, desert storm (the texture from the launch pad) and bronze plating (the old ICF laser texture) -* Microwaves are no longer electric furnace copies, instead their recipes are restricted to things considered food -* Electric furnaces now cause minor pollution (does not connect to smoke stacks!) -* Increased the arc furnace's liquid buffer to 128 blocks (from 24) -* The arc furnace can now accept more items depending on the speed upgrade, extending all the way to 16 with speed 3 (effective cap might be lower to prevent outputs from exceeding 64 items) - * Due to technical limitations, clicking into a slot once will only place a single item, however after the item is present, the slot's capacity extends to the upgraded size - * This is especially apparent when clicking items into slots by hand, and still noticeable when shift clicking by how the items spread out - * This does not affect automation at all, items will stack up nicely without spreading out unnecessarily -* Reduced arc furnace pollution from 15 to 10 soot per cycle -* The way soot spreads has been changed - * The spreading threshold has been decreased from 15 to 10 - * Every update, soot will decrease by regardless of whether it can spread or not (instead of only if it cannot spread) -* Batteries no longer transmit in all directions, instead they transmit to their own power node (since they are also considered cables), eliminating any direction-based bias when transmitting -* The base fuel consumption for the soyuz in cargo mode is now only 5,000mB -* The soyuz' fuel consumption in cargo mode is now limited to its max capacity, meaning it can now fly infinitely far -* Less bullshit mode's simple crafting now extends to the soldering station, all circuits, upgrades and control units are substantially cheaper -* There is now an alternate recipe for standard capacitors, using one aluminium dust for two capacitors (i.e. 4.5 aluminium nuggets, vs the standard 1 niobium nugget) -* Shift-clicking steel grates onto the top/bottom of a block now shifts the grate into that block (if there is space, for example for cables or ducts). The effect is only visual, and the block still occupies the position above the block that the grate has been placed at - * This allows for making pipes with grates over them which are flush with the floor -* The ore acidizer has been remodeled - * The ports are now much simpler, having universale ports for all types instead of ppower/fluid being separated from items - * The ports are now all located at the bottom, making it easier to connect power/fluid - * There are now more ports to choose from - * The machine is now one block shorter - * The ladder is now wider and centered on the side - -## Fixed -* Fixed dupe regarding conveyor grabbers -* Fixed soldering stations not saving progress or their fluid tanks -* Fixed a bug where missile debris would always spawn with a stack size of 1 and a meta of 0 -* Fixed FM radios disassembling into incorrect parts -* Fixed 256k tanks yielding too much steel when shredded -* Fixed the wire mold only creating 1 wire instead of the intended 8 due to the changes to the wire oredict -* Fixed potential crashes in the arc welder and soldering station GUIs diff --git a/gradle.properties b/gradle.properties index daa9e69ce..aeb2affff 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=4980 +mod_build_number=4991 credits=HbMinecraft,\ \ rodolphito (explosion algorithms),\ diff --git a/src/main/java/com/hbm/blocks/network/CraneGrabber.java b/src/main/java/com/hbm/blocks/network/CraneGrabber.java index fcda1d05a..b88a707ca 100644 --- a/src/main/java/com/hbm/blocks/network/CraneGrabber.java +++ b/src/main/java/com/hbm/blocks/network/CraneGrabber.java @@ -42,7 +42,7 @@ public class CraneGrabber extends BlockCraneBase { this.iconDirectionalSideDownTurnRight = iconRegister.registerIcon(RefStrings.MODID + ":crane_grabber_side_down_turn_right"); } - @Override + @Override public void breakBlock(World world, int x, int y, int z, Block block, int meta) { this.dropContents(world, x, y, z, block, meta, 9, 11); super.breakBlock(world, x, y, z, block, meta); diff --git a/src/main/java/com/hbm/blocks/network/RadioTorchBase.java b/src/main/java/com/hbm/blocks/network/RadioTorchBase.java index 049bc565b..4ebd140fd 100644 --- a/src/main/java/com/hbm/blocks/network/RadioTorchBase.java +++ b/src/main/java/com/hbm/blocks/network/RadioTorchBase.java @@ -91,7 +91,7 @@ public abstract class RadioTorchBase extends BlockContainer implements IGUIProvi ForgeDirection dir = ForgeDirection.getOrientation(meta); Block b = world.getBlock(x - dir.offsetX, y - dir.offsetY, z - dir.offsetZ); - if(!b.isSideSolid(world, x - dir.offsetX, y - dir.offsetY, z - dir.offsetZ, dir) && !b.hasComparatorInputOverride() && (!b.renderAsNormalBlock() || b.isAir(world, x, y, z))) { + if(!canBlockStay(world, x, y, z, dir, b)) { this.dropBlockAsItem(world, x, y, z, meta, 0); world.setBlockToAir(x, y, z); } @@ -104,7 +104,11 @@ public abstract class RadioTorchBase extends BlockContainer implements IGUIProvi ForgeDirection dir = ForgeDirection.getOrientation(side); Block b = world.getBlock(x - dir.offsetX, y - dir.offsetY, z - dir.offsetZ); - return b.isSideSolid(world, x - dir.offsetX, y - dir.offsetY, z - dir.offsetZ, dir) || b.hasComparatorInputOverride() || (b.renderAsNormalBlock() && !b.isAir(world, x, y, z)); + return canBlockStay(world, x, y, z, dir, b); + } + + public boolean canBlockStay(World world, int x, int y, int z, ForgeDirection dir, Block b) { + return b.isSideSolid(world, x - dir.offsetX, y - dir.offsetY, z - dir.offsetZ, dir) || b.hasComparatorInputOverride() || b.canProvidePower() || (b.renderAsNormalBlock() && !b.isAir(world, x, y, z)); } @Override diff --git a/src/main/java/com/hbm/blocks/network/RadioTorchCounter.java b/src/main/java/com/hbm/blocks/network/RadioTorchCounter.java index a78aafc4a..086031285 100644 --- a/src/main/java/com/hbm/blocks/network/RadioTorchCounter.java +++ b/src/main/java/com/hbm/blocks/network/RadioTorchCounter.java @@ -8,18 +8,22 @@ import com.hbm.inventory.container.ContainerCounterTorch; import com.hbm.inventory.gui.GUICounterTorch; import com.hbm.main.MainRegistry; import com.hbm.tileentity.network.TileEntityRadioTorchCounter; +import com.hbm.util.Compat; import com.hbm.util.I18nUtil; import cpw.mods.fml.common.network.internal.FMLNetworkHandler; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.block.Block; import net.minecraft.client.gui.GuiScreen; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Container; +import net.minecraft.inventory.IInventory; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.EnumChatFormatting; import net.minecraft.world.World; import net.minecraftforge.client.event.RenderGameOverlayEvent.Pre; +import net.minecraftforge.common.util.ForgeDirection; public class RadioTorchCounter extends RadioTorchBase { @@ -38,6 +42,13 @@ public class RadioTorchCounter extends RadioTorchBase { return new TileEntityRadioTorchCounter(); } + @Override + public boolean canBlockStay(World world, int x, int y, int z, ForgeDirection dir, Block b) { + if(b.isSideSolid(world, x - dir.offsetX, y - dir.offsetY, z - dir.offsetZ, dir) || (b.renderAsNormalBlock() && !b.isAir(world, x, y, z))) return true; + TileEntity te = Compat.getTileStandard(world, x - dir.offsetX, y - dir.offsetY, z - dir.offsetZ); + return te instanceof IInventory; + } + @Override public Container provideContainer(int ID, EntityPlayer player, World world, int x, int y, int z) { return new ContainerCounterTorch(player.inventory, (TileEntityRadioTorchCounter) world.getTileEntity(x, y, z)); diff --git a/src/main/java/com/hbm/inventory/recipes/ChemplantRecipes.java b/src/main/java/com/hbm/inventory/recipes/ChemplantRecipes.java index 5507ccc90..ddc9b2e7a 100644 --- a/src/main/java/com/hbm/inventory/recipes/ChemplantRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/ChemplantRecipes.java @@ -331,7 +331,7 @@ public class ChemplantRecipes extends SerializableRecipe { new OreDictStack(F.dust(), 8), new ComparableStack(ModItems.nugget_bismuth, 4)) .inputFluids(new FluidStack(Fluids.PEROXIDE, 1000, 5)) - .outputFluids(new FluidStack(Fluids.DEATH, 1000, GeneralConfig.enable528 ? 5 : 0))); + .outputFluids(new FluidStack(Fluids.DEATH, 1000, 0))); //one bucket of ethanol equals 275_000 TU using the diesel baseline0 //the coal baseline is 400_000 per piece //if we assume a burntime of 1.5 ops (300 ticks) for sugar at 100 TU/t that would equal a total of 30_000 TU diff --git a/src/main/java/com/hbm/items/machine/ItemArcElectrode.java b/src/main/java/com/hbm/items/machine/ItemArcElectrode.java index 5df1e4729..70aa58ac6 100644 --- a/src/main/java/com/hbm/items/machine/ItemArcElectrode.java +++ b/src/main/java/com/hbm/items/machine/ItemArcElectrode.java @@ -47,9 +47,9 @@ public class ItemArcElectrode extends ItemEnumMulti { public static enum EnumElectrodeType { GRAPHITE( 10), - LANTHANIUM( 50), - DESH( 250), - SATURNITE( 500); + LANTHANIUM( 100), + DESH( 500), + SATURNITE( 1500); public int durability; diff --git a/src/main/java/com/hbm/lib/RefStrings.java b/src/main/java/com/hbm/lib/RefStrings.java index 4035f0a3e..17155d5a6 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 (4980)"; + public static final String VERSION = "1.0.27 BETA (4991)"; //HBM's Beta Naming Convention: //V T (X) //V -> next release version diff --git a/src/main/java/com/hbm/render/tileentity/RenderCrystallizer.java b/src/main/java/com/hbm/render/tileentity/RenderCrystallizer.java index 6fdba5911..158eb34bd 100644 --- a/src/main/java/com/hbm/render/tileentity/RenderCrystallizer.java +++ b/src/main/java/com/hbm/render/tileentity/RenderCrystallizer.java @@ -7,6 +7,7 @@ import com.hbm.main.ResourceManager; import com.hbm.render.item.ItemRenderBase; import com.hbm.tileentity.machine.TileEntityMachineCrystallizer; +import net.minecraft.client.renderer.OpenGlHelper; import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; import net.minecraft.item.Item; import net.minecraft.tileentity.TileEntity; @@ -20,7 +21,7 @@ public class RenderCrystallizer extends TileEntitySpecialRenderer implements IIt GL11.glPushMatrix(); GL11.glTranslated(x + 0.5D, y, z + 0.5D); GL11.glEnable(GL11.GL_LIGHTING); - GL11.glDisable(GL11.GL_CULL_FACE); + GL11.glEnable(GL11.GL_CULL_FACE); switch(te.getBlockMetadata() - 10) { case 2: GL11.glRotatef(90, 0F, 1F, 0F); break; @@ -39,6 +40,16 @@ public class RenderCrystallizer extends TileEntitySpecialRenderer implements IIt GL11.glRotatef(crys.prevAngle + (crys.angle - crys.prevAngle) * inter, 0, 1, 0); ResourceManager.crystallizer.renderPart("Spinner"); GL11.glPopMatrix(); + + if(crys.prevAngle != crys.angle) { + GL11.glEnable(GL11.GL_BLEND); + GL11.glDepthMask(false); + OpenGlHelper.glBlendFunc(770, 771, 1, 0); + bindTexture(crys.tank.getTankType().getTexture()); + ResourceManager.crystallizer.renderPart("Fluid"); + GL11.glDepthMask(true); + GL11.glDisable(GL11.GL_BLEND); + } GL11.glShadeModel(GL11.GL_FLAT); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineArcFurnaceLarge.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineArcFurnaceLarge.java index 37fddad6d..6a6752b79 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineArcFurnaceLarge.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineArcFurnaceLarge.java @@ -199,7 +199,7 @@ public class TileEntityMachineArcFurnaceLarge extends TileEntityMachineBase impl } } - if((lid == 1 || lid == 0) && lid != prevLid) { + if((lid == 1 || lid == 0) && lid != prevLid && !(this.prevLid == 0 && this.lid == 1)) { MainRegistry.proxy.playSoundClient(xCoord, yCoord, zCoord, "hbm:door.wgh_stop", this.getVolume(1), 1F); } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCrystallizer.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCrystallizer.java index f74e1a887..0f1197c2b 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCrystallizer.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCrystallizer.java @@ -2,7 +2,6 @@ package com.hbm.tileentity.machine; import java.util.List; -import com.hbm.blocks.BlockDummyable; import com.hbm.blocks.ModBlocks; import com.hbm.extprop.HbmPlayerProps; import com.hbm.inventory.UpgradeManager; @@ -15,6 +14,7 @@ import com.hbm.inventory.recipes.CrystallizerRecipes.CrystallizerRecipe; import com.hbm.items.machine.ItemMachineUpgrade; import com.hbm.items.machine.ItemMachineUpgrade.UpgradeType; import com.hbm.lib.Library; +import com.hbm.main.MainRegistry; import com.hbm.tileentity.IGUIProvider; import com.hbm.tileentity.IUpgradeInfoProvider; import com.hbm.tileentity.TileEntityMachineBase; @@ -45,6 +45,7 @@ public class TileEntityMachineCrystallizer extends TileEntityMachineBase impleme public static final int demand = 1000; public short progress; public short duration = 600; + public boolean isOn; public float angle; public float prevAngle; @@ -66,6 +67,8 @@ public class TileEntityMachineCrystallizer extends TileEntityMachineBase impleme if(!worldObj.isRemote) { + this.isOn = false; + this.updateConnections(); power = Library.chargeTEFromItems(slots, 1, power, maxPower); @@ -80,6 +83,7 @@ public class TileEntityMachineCrystallizer extends TileEntityMachineBase impleme progress++; power -= getPowerRequired(); + isOn = true; if(progress > getDuration()) { progress = 0; @@ -97,19 +101,24 @@ public class TileEntityMachineCrystallizer extends TileEntityMachineBase impleme data.setShort("progress", progress); data.setShort("duration", getDuration()); data.setLong("power", power); + data.setBoolean("isOn", isOn); tank.writeToNBT(data, "t"); this.networkPack(data, 25); } else { prevAngle = angle; - if(progress > 0) { + if(isOn) { angle += 5F * this.getCycleCount(); if(angle >= 360) { angle -= 360; prevAngle -= 360; } + + if(worldObj.rand.nextInt(20) == 0 && MainRegistry.proxy.me().getDistance(xCoord + 0.5, yCoord + 6, zCoord + 0.5) < 50) { + worldObj.spawnParticle("cloud", xCoord + worldObj.rand.nextDouble(), yCoord + 6.5D, zCoord + worldObj.rand.nextDouble(), 0.0, 0.1, 0.0); + } } } @@ -135,7 +144,7 @@ public class TileEntityMachineCrystallizer extends TileEntityMachineBase impleme return new DirPos[] { new DirPos(xCoord + 2, yCoord, zCoord + 1, Library.POS_X), - new DirPos(xCoord + 2, yCoord, zCoord - 2, 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), @@ -151,6 +160,7 @@ public class TileEntityMachineCrystallizer extends TileEntityMachineBase impleme this.power = data.getLong("power"); this.progress = data.getShort("progress"); this.duration = data.getShort("duration"); + this.isOn = data.getBoolean("isOn"); this.tank.readFromNBT(data, "t"); } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineTurbineGas.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineTurbineGas.java index 7bfb3452a..66d850a4c 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineTurbineGas.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineTurbineGas.java @@ -99,6 +99,19 @@ public class TileEntityMachineTurbineGas extends TileEntityMachineBase implement } } + if(autoMode) { //power production depending on power requirement + + //scales the slider proportionally to the power gauge + int powerSliderTarget = 60 - (int) (60 * power / maxPower); + + if(powerSliderTarget > powerSliderPos) { //makes the auto slider slide instead of snapping into position + powerSliderPos++; + } + else if(powerSliderTarget < powerSliderPos) { + powerSliderPos--; + } + } + switch(state) { //what to do when turbine offline, starting up and online case 0: shutdown(); @@ -115,19 +128,6 @@ public class TileEntityMachineTurbineGas extends TileEntityMachineBase implement break; } - if(autoMode) { //power production depending on power requirement - - //scales the slider proportionally to the power gauge - int powerSliderTarget = 60 - (int) (60 * power / maxPower); - - if(powerSliderTarget > powerSliderPos) { //makes the auto slider slide instead of snapping into position - powerSliderPos++; - } - else if(powerSliderTarget < powerSliderPos) { - powerSliderPos--; - } - } - ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata() - BlockDummyable.offset); ForgeDirection rot = dir.getRotation(ForgeDirection.UP); diff --git a/src/main/java/com/hbm/world/dungeon/DesertAtom001.java b/src/main/java/com/hbm/world/dungeon/DesertAtom001.java index 194aea997..2daed2527 100644 --- a/src/main/java/com/hbm/world/dungeon/DesertAtom001.java +++ b/src/main/java/com/hbm/world/dungeon/DesertAtom001.java @@ -21,7 +21,7 @@ public class DesertAtom001 extends WorldGenerator { Block Block2 = ModBlocks.yellow_barrel; Block Block3 = ModBlocks.reinforced_sand; - Block Block4 = ModBlocks.nuke_man; + Block Block4 = ModBlocks.crashed_balefire; Block Block5 = ModBlocks.deco_steel; Block Block6 = ModBlocks.brick_light; Block Block7 = ModBlocks.deco_tungsten; diff --git a/src/main/resources/assets/hbm/models/machines/acidizer.obj b/src/main/resources/assets/hbm/models/machines/acidizer.obj index 54e5e7024..52f1e55f4 100644 --- a/src/main/resources/assets/hbm/models/machines/acidizer.obj +++ b/src/main/resources/assets/hbm/models/machines/acidizer.obj @@ -1,5 +1,51 @@ # Blender v2.79 (sub 0) OBJ File: 'acidizer.blend' # www.blender.org +o Fluid +v 1.062500 2.375000 0.375000 +v 1.062500 2.375000 -0.375000 +v 1.062500 4.625000 0.375000 +v 1.062500 4.625000 -0.375000 +v -1.062500 2.375000 -0.374999 +v -1.062500 2.375000 0.375001 +v -1.062500 4.625000 -0.374999 +v -1.062500 4.625000 0.375001 +v 0.374999 2.375000 -1.062500 +v -0.375000 2.375000 -1.062500 +v 0.374999 4.624999 -1.062500 +v -0.375000 4.624999 -1.062500 +v -0.374999 2.375000 1.062500 +v 0.375001 2.375000 1.062500 +v -0.374999 4.624999 1.062500 +v 0.375001 4.624999 1.062500 +vt 0.875000 2.000000 +vt 0.125000 -1.000000 +vt 0.875000 -1.000000 +vt 0.875000 2.000000 +vt 0.125000 -1.000000 +vt 0.875000 -1.000000 +vt 0.875000 2.000000 +vt 0.125000 -1.000000 +vt 0.875000 -1.000000 +vt 0.875000 2.000000 +vt 0.125000 -1.000000 +vt 0.875000 -1.000000 +vt 0.125000 2.000000 +vt 0.125000 2.000000 +vt 0.125000 2.000000 +vt 0.125000 2.000000 +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 +s off +f 4/1/1 1/2/1 2/3/1 +f 8/4/2 5/5/2 6/6/2 +f 12/7/3 9/8/3 10/9/3 +f 16/10/4 13/11/4 14/12/4 +f 4/1/1 3/13/1 1/2/1 +f 8/4/2 7/14/2 5/5/2 +f 12/7/3 11/15/3 9/8/3 +f 16/10/4 15/16/4 13/11/4 o Spinner v 0.000000 6.250000 -0.250000 v -0.176777 6.250000 -0.176777 @@ -129,63 +175,63 @@ vn 0.7071 0.0000 0.7071 vn -0.7071 0.0000 0.7071 vn -0.7071 0.0000 -0.7071 s off -f 13/1/1 15/2/1 9/3/1 -f 23/4/1 21/5/1 22/6/1 -f 20/7/2 23/4/2 18/8/2 -f 17/9/3 21/10/3 19/11/3 -f 19/12/4 24/13/4 20/7/4 -f 18/14/5 22/15/5 17/9/5 -f 47/16/4 44/17/4 43/18/4 -f 46/19/5 41/20/5 42/21/5 -f 48/22/2 42/23/2 44/17/2 -f 45/24/3 43/25/3 41/20/3 -f 9/3/1 10/26/1 11/27/1 -f 11/27/1 12/28/1 13/1/1 -f 13/1/1 14/29/1 15/2/1 -f 15/2/1 16/30/1 9/3/1 -f 9/3/1 11/27/1 13/1/1 -f 23/4/1 24/13/1 21/5/1 -f 20/7/2 24/13/2 23/4/2 -f 17/9/3 22/15/3 21/10/3 -f 19/12/4 21/31/4 24/13/4 -f 18/14/5 23/32/5 22/15/5 -f 47/16/4 48/22/4 44/17/4 -f 46/19/5 45/24/5 41/20/5 -f 48/22/2 46/33/2 42/23/2 -f 45/24/3 47/34/3 43/25/3 +f 29/17/5 31/18/5 25/19/5 +f 39/20/5 37/21/5 38/22/5 +f 36/23/6 39/20/6 34/24/6 +f 33/25/7 37/26/7 35/27/7 +f 35/28/8 40/29/8 36/23/8 +f 34/30/9 38/31/9 33/25/9 +f 63/32/8 60/33/8 59/34/8 +f 62/35/9 57/36/9 58/37/9 +f 64/38/6 58/39/6 60/33/6 +f 61/40/7 59/41/7 57/36/7 +f 25/19/5 26/42/5 27/43/5 +f 27/43/5 28/44/5 29/17/5 +f 29/17/5 30/45/5 31/18/5 +f 31/18/5 32/46/5 25/19/5 +f 25/19/5 27/43/5 29/17/5 +f 39/20/5 40/29/5 37/21/5 +f 36/23/6 40/29/6 39/20/6 +f 33/25/7 38/31/7 37/26/7 +f 35/28/8 37/47/8 40/29/8 +f 34/30/9 39/48/9 38/31/9 +f 63/32/8 64/38/8 60/33/8 +f 62/35/9 61/40/9 57/36/9 +f 64/38/6 62/49/6 58/39/6 +f 61/40/7 63/50/7 59/41/7 s 1 -f 8/35/6 15/36/2 7/37/2 -f 6/38/7 13/39/5 5/40/5 -f 4/41/8 11/42/3 3/43/3 -f 2/44/9 9/45/4 1/46/4 -f 1/46/4 16/47/6 8/35/6 -f 7/37/2 14/48/7 6/38/7 -f 5/40/5 12/49/8 4/41/8 -f 3/50/3 10/51/9 2/44/9 -f 26/52/9 33/53/4 25/54/4 -f 25/55/4 40/56/6 32/57/6 -f 31/58/2 38/59/7 30/60/7 -f 29/61/5 36/62/8 28/63/8 -f 27/64/3 34/65/9 26/52/9 -f 32/57/6 39/66/2 31/58/2 -f 30/60/7 37/67/5 29/61/5 -f 28/63/8 35/68/3 27/64/3 -f 8/35/6 16/47/6 15/36/2 -f 6/38/7 14/48/7 13/39/5 -f 4/41/8 12/49/8 11/42/3 -f 2/44/9 10/51/9 9/45/4 -f 1/46/4 9/45/4 16/47/6 -f 7/37/2 15/36/2 14/48/7 -f 5/40/5 13/39/5 12/49/8 -f 3/50/3 11/69/3 10/51/9 -f 26/52/9 34/65/9 33/53/4 -f 25/55/4 33/70/4 40/56/6 -f 31/58/2 39/66/2 38/59/7 -f 29/61/5 37/67/5 36/62/8 -f 27/64/3 35/68/3 34/65/9 -f 32/57/6 40/56/6 39/66/2 -f 30/60/7 38/59/7 37/67/5 -f 28/63/8 36/62/8 35/68/3 +f 24/51/10 31/52/6 23/53/6 +f 22/54/11 29/55/9 21/56/9 +f 20/57/12 27/58/7 19/59/7 +f 18/60/13 25/61/8 17/62/8 +f 17/62/8 32/63/10 24/51/10 +f 23/53/6 30/64/11 22/54/11 +f 21/56/9 28/65/12 20/57/12 +f 19/66/7 26/67/13 18/60/13 +f 42/68/13 49/69/8 41/70/8 +f 41/71/8 56/72/10 48/73/10 +f 47/74/6 54/75/11 46/76/11 +f 45/77/9 52/78/12 44/79/12 +f 43/80/7 50/81/13 42/68/13 +f 48/73/10 55/82/6 47/74/6 +f 46/76/11 53/83/9 45/77/9 +f 44/79/12 51/84/7 43/80/7 +f 24/51/10 32/63/10 31/52/6 +f 22/54/11 30/64/11 29/55/9 +f 20/57/12 28/65/12 27/58/7 +f 18/60/13 26/67/13 25/61/8 +f 17/62/8 25/61/8 32/63/10 +f 23/53/6 31/52/6 30/64/11 +f 21/56/9 29/55/9 28/65/12 +f 19/66/7 27/85/7 26/67/13 +f 42/68/13 50/81/13 49/69/8 +f 41/71/8 49/86/8 56/72/10 +f 47/74/6 55/82/6 54/75/11 +f 45/77/9 53/83/9 52/78/12 +f 43/80/7 51/84/7 50/81/13 +f 48/73/10 56/72/10 55/82/6 +f 46/76/11 54/75/11 53/83/9 +f 44/79/12 52/78/12 51/84/7 o Body v -1.500000 0.000000 1.500000 v 1.500000 0.000000 1.500000 @@ -1023,14 +1069,15 @@ v -0.574524 4.375000 1.104854 v -1.104854 4.375000 0.574524 v -0.574524 3.625000 1.104854 v -1.104854 3.625000 0.574524 -vt 1.000000 0.000000 -vt 0.000000 1.000000 -vt 0.000000 0.000000 +vt 0.240000 0.089888 +vt 0.000000 0.359551 +vt 0.000000 0.089888 vt -0.000000 0.089888 vt 0.240000 0.359551 vt -0.000000 0.359551 vt 0.240000 -0.000000 vt 0.000000 0.089888 +vt 0.000000 -0.000000 vt 0.240000 0.000000 vt -0.000000 0.000000 vt 0.240000 -0.000000 @@ -1454,7 +1501,7 @@ vt 0.445000 0.932584 vt 0.445000 0.865169 vt 0.485000 0.865169 vt 0.385000 0.820225 -vt 1.000000 1.000000 +vt 0.240000 0.359551 vt 0.240000 0.089888 vt 0.240000 0.089888 vt 0.240000 0.089888 @@ -2414,1346 +2461,1346 @@ vn 0.8620 -0.4617 0.2090 vn 0.8620 -0.4617 0.2091 vn 0.6565 0.0671 0.7514 s off -f 51/71/10 50/72/10 49/73/10 -f 54/74/11 55/75/11 53/76/11 -f 50/77/12 53/78/12 49/73/12 -f 52/79/13 54/74/13 50/80/13 -f 49/81/14 55/82/14 51/83/14 -f 51/84/15 56/85/15 52/86/15 -f 70/87/16 60/88/16 62/89/16 -f 65/90/14 59/91/14 57/92/14 -f 58/93/17 69/94/17 61/95/17 -f 71/96/18 57/92/18 63/97/18 -f 59/98/19 72/99/19 64/100/19 -f 72/99/15 62/89/15 64/100/15 -f 69/94/12 63/97/12 61/95/12 -f 68/101/13 58/93/13 60/88/13 -f 71/96/10 73/102/10 65/90/10 -f 67/103/10 80/104/10 72/99/10 -f 72/99/10 78/105/10 70/87/10 -f 69/94/10 79/106/10 71/96/10 -f 68/101/10 74/107/10 66/108/10 -f 65/90/10 75/109/10 67/110/10 -f 70/87/10 76/111/10 68/101/10 -f 66/108/10 77/112/10 69/94/10 -f 78/105/16 84/113/16 76/111/16 -f 74/107/17 85/114/17 77/112/17 -f 79/106/18 81/115/18 73/102/18 -f 75/116/19 88/117/19 80/104/19 -f 80/104/15 86/118/15 78/105/15 -f 77/112/12 87/119/12 79/106/12 -f 76/111/13 82/120/13 74/107/13 -f 73/102/14 83/121/14 75/109/14 -f 89/122/11 83/121/11 81/115/11 -f 87/119/11 89/122/11 81/115/11 -f 93/123/11 87/119/11 85/114/11 -f 82/120/11 93/123/11 85/114/11 -f 92/124/11 82/120/11 84/113/11 -f 86/118/11 92/124/11 84/113/11 -f 96/125/11 86/118/11 88/117/11 -f 83/126/11 96/125/11 88/117/11 -f 111/127/10 113/128/10 105/129/10 -f 107/130/10 120/131/10 112/132/10 -f 112/132/10 118/133/10 110/134/10 -f 109/135/10 119/136/10 111/127/10 -f 108/137/10 114/138/10 106/139/10 -f 105/129/10 115/140/10 107/141/10 -f 110/134/10 116/142/10 108/137/10 -f 106/139/10 117/143/10 109/135/10 -f 118/133/16 124/144/16 116/142/16 -f 114/138/17 125/145/17 117/143/17 -f 119/136/18 121/146/18 113/128/18 -f 115/147/19 128/148/19 120/131/19 -f 120/131/15 126/149/15 118/133/15 -f 117/143/12 127/150/12 119/136/12 -f 116/142/13 122/151/13 114/138/13 -f 113/128/14 123/152/14 115/140/14 -f 129/153/11 123/152/11 121/146/11 -f 127/150/11 129/153/11 121/146/11 -f 133/154/11 127/150/11 125/145/11 -f 122/151/11 133/154/11 125/145/11 -f 132/155/11 122/151/11 124/144/11 -f 126/149/11 132/155/11 124/144/11 -f 136/156/11 126/149/11 128/148/11 -f 123/157/11 136/156/11 128/148/11 -f 136/156/19 99/158/19 104/159/19 -f 99/160/14 129/153/14 97/161/14 -f 97/161/18 135/162/18 103/163/18 -f 103/163/12 133/154/12 101/164/12 -f 133/154/17 98/165/17 101/164/17 -f 98/165/13 132/155/13 100/166/13 -f 100/166/16 134/167/16 102/168/16 -f 102/168/15 136/156/15 104/159/15 -f 93/123/12 169/169/12 95/170/12 -f 111/127/18 89/122/18 95/170/18 -f 111/127/12 172/171/12 109/135/12 -f 90/172/17 109/135/17 93/123/17 -f 110/134/16 92/124/16 94/173/16 -f 109/135/12 170/174/12 93/123/12 -f 91/175/19 112/132/19 96/125/19 -f 141/176/17 146/177/17 138/178/17 -f 143/179/11 99/160/11 97/161/11 -f 97/161/11 137/180/11 143/181/11 -f 138/182/11 103/163/11 101/164/11 -f 141/183/11 101/164/11 98/165/11 -f 142/184/11 98/165/11 100/166/11 -f 100/166/11 140/185/11 142/186/11 -f 139/187/11 102/168/11 104/159/11 -f 144/188/11 104/159/11 99/158/11 -f 159/189/11 151/190/11 152/191/11 -f 144/192/19 148/193/19 139/194/19 -f 142/195/13 149/196/13 141/176/13 -f 138/178/12 145/197/12 137/198/12 -f 140/199/16 150/200/16 142/195/16 -f 137/198/18 152/191/18 143/201/18 -f 143/201/14 151/190/14 144/202/14 -f 139/194/15 147/203/15 140/199/15 -f 158/204/11 149/196/11 150/200/11 -f 155/205/11 147/203/11 148/193/11 -f 154/206/11 145/197/11 146/177/11 -f 149/196/11 154/207/11 146/177/11 -f 147/203/11 158/208/11 150/200/11 -f 160/209/11 148/193/11 151/210/11 -f 153/211/11 152/191/11 145/197/11 -f 159/189/13 167/212/13 160/213/13 -f 167/214/11 168/215/11 166/216/11 -f 158/204/14 165/217/14 157/218/14 -f 160/209/17 164/219/17 155/220/17 -f 155/205/12 163/221/12 156/222/12 -f 157/223/19 162/224/19 154/207/19 -f 154/206/15 161/225/15 153/226/15 -f 153/211/16 168/227/16 159/228/16 -f 156/229/18 166/230/18 158/208/18 -f 95/170/12 171/231/12 111/127/12 -f 175/232/10 191/233/10 176/234/10 -f 90/172/13 179/235/13 106/139/13 -f 106/139/13 180/236/13 108/137/13 -f 180/236/13 92/124/13 108/137/13 -f 178/237/13 90/172/13 92/124/13 -f 94/173/15 175/238/15 110/134/15 -f 112/132/15 175/238/15 176/239/15 -f 176/239/15 96/125/15 112/132/15 -f 96/125/15 173/240/15 94/173/15 -f 91/241/14 183/242/14 107/141/14 -f 107/141/14 184/243/14 105/129/14 -f 184/243/14 89/122/14 105/129/14 -f 182/244/14 91/241/14 89/122/14 -f 186/245/11 169/246/11 170/247/11 -f 173/248/11 187/249/11 188/250/11 -f 171/251/10 190/252/10 172/253/10 -f 190/254/14 170/174/14 172/171/14 -f 169/169/13 189/255/13 171/231/13 -f 191/256/13 174/257/13 176/239/13 -f 173/240/14 192/258/14 175/238/14 -f 182/259/11 193/260/11 181/261/11 -f 184/243/15 194/262/15 182/244/15 -f 183/263/10 196/264/10 184/265/10 -f 181/266/12 195/267/12 183/242/12 -f 177/268/15 199/269/15 179/235/15 -f 178/270/11 197/271/11 177/272/11 -f 180/236/12 198/273/12 178/237/12 -f 179/274/10 200/275/10 180/276/10 -f 199/277/19 186/245/19 190/252/19 -f 185/278/16 196/264/16 189/279/16 -f 195/280/17 187/249/17 191/233/17 -f 188/250/18 200/275/18 192/281/18 -f 198/282/14 207/283/14 197/271/14 -f 198/282/18 204/284/18 208/285/18 -f 194/286/13 205/287/13 193/260/13 -f 193/288/17 203/289/17 187/249/17 -f 187/249/12 204/284/12 188/250/12 -f 194/286/16 201/290/16 206/291/16 -f 186/245/15 201/290/15 185/278/15 -f 197/271/19 202/292/19 186/245/19 -f 208/293/11 203/289/11 206/294/11 -f 192/281/18 216/295/18 212/296/18 -f 189/279/15 210/297/15 190/252/15 -f 195/298/13 214/299/13 196/264/13 -f 191/233/17 213/300/17 195/280/17 -f 189/279/16 214/299/16 209/301/16 -f 190/252/19 215/302/19 199/277/19 -f 192/281/12 211/303/12 191/233/12 -f 199/277/14 216/295/14 200/275/14 -f 211/303/10 216/304/10 210/305/10 -f 347/306/18 345/307/18 343/308/18 -f 346/309/11 343/308/11 342/310/11 -f 344/311/17 343/308/17 345/307/17 -f 348/312/16 342/310/16 344/311/16 -f 345/307/10 348/313/10 344/311/10 -f 353/314/14 350/315/14 351/316/14 -f 357/317/13 354/318/13 355/319/13 -f 361/320/12 358/321/12 359/322/12 -f 365/323/15 362/324/15 363/325/15 -f 370/326/10 376/327/10 373/328/10 -f 368/329/15 373/330/15 369/331/15 -f 367/332/12 371/333/12 366/334/12 -f 369/331/13 372/335/13 367/332/13 -f 366/334/14 370/336/14 368/337/14 -f 371/333/14 374/338/14 370/336/14 -f 372/335/20 374/339/20 371/333/20 -f 373/330/13 375/340/13 372/335/13 -f 381/341/14 383/342/14 377/343/14 -f 374/339/14 377/344/14 370/345/14 -f 375/346/11 379/347/11 374/339/11 -f 373/328/13 378/348/13 375/346/13 -f 376/327/13 380/349/13 378/348/13 -f 380/350/15 385/351/15 381/341/15 -f 377/352/12 382/353/12 376/354/12 -f 376/354/13 384/355/13 380/350/13 -f 378/348/21 381/341/21 379/347/21 -f 379/347/14 381/356/14 377/344/14 -f 388/357/10 387/358/10 386/359/10 -f 392/360/11 390/361/11 391/362/11 -f 388/363/15 393/364/15 389/365/15 -f 387/358/12 391/362/12 386/359/12 -f 398/366/10 404/367/10 401/368/10 -f 396/369/15 401/370/15 397/371/15 -f 395/372/12 399/373/12 394/374/12 -f 397/371/13 400/375/13 395/372/13 -f 394/374/14 398/376/14 396/377/14 -f 399/373/14 402/378/14 398/376/14 -f 400/375/20 402/379/20 399/373/20 -f 401/370/13 403/380/13 400/375/13 -f 409/381/14 411/382/14 405/383/14 -f 402/379/14 405/384/14 398/385/14 -f 403/386/11 407/387/11 402/379/11 -f 401/368/13 406/388/13 403/386/13 -f 404/367/13 408/389/13 406/388/13 -f 408/390/15 413/391/15 409/381/15 -f 405/392/12 410/393/12 404/394/12 -f 404/394/13 412/395/13 408/390/13 -f 406/388/21 409/381/21 407/387/21 -f 407/387/14 409/396/14 405/384/14 -f 416/397/10 415/398/10 414/399/10 -f 420/400/11 418/401/11 419/402/11 -f 416/403/15 421/404/15 417/405/15 -f 415/398/12 419/402/12 414/399/12 -f 424/406/10 423/407/10 422/408/10 -f 428/409/11 426/410/11 427/411/11 -f 424/412/15 429/413/15 425/414/15 -f 423/407/12 427/411/12 422/408/12 -f 432/415/10 431/416/10 430/417/10 -f 436/418/11 434/419/11 435/420/11 -f 432/421/15 437/422/15 433/423/15 -f 431/416/12 435/420/12 430/417/12 -f 440/424/10 439/425/10 438/426/10 -f 444/427/11 442/428/11 443/429/11 -f 440/430/15 445/431/15 441/432/15 -f 439/425/12 443/429/12 438/426/12 -f 448/433/10 447/434/10 446/435/10 -f 452/436/11 450/437/11 451/438/11 -f 448/439/15 453/440/15 449/441/15 -f 447/434/12 451/438/12 446/435/12 -f 456/442/10 455/443/10 454/444/10 -f 460/445/11 458/446/11 459/447/11 -f 456/448/15 461/449/15 457/450/15 -f 455/443/12 459/447/12 454/444/12 -f 464/451/10 463/452/10 462/453/10 -f 468/454/11 466/455/11 467/456/11 -f 464/457/15 469/458/15 465/459/15 -f 463/452/12 467/456/12 462/453/12 -f 472/460/10 471/461/10 470/462/10 -f 476/463/11 474/464/11 475/465/11 -f 472/466/15 477/467/15 473/468/15 -f 471/461/12 475/465/12 470/462/12 -f 480/469/10 479/470/10 478/471/10 -f 484/472/11 482/473/11 483/474/11 -f 480/475/15 485/476/15 481/477/15 -f 479/470/12 483/474/12 478/471/12 -f 714/478/16 712/479/16 710/480/16 -f 713/481/11 710/480/11 709/482/11 -f 711/483/19 710/480/19 712/479/19 -f 715/484/18 709/482/18 711/483/18 -f 712/479/10 715/485/10 711/483/10 -f 798/486/17 796/487/17 794/488/17 -f 797/489/11 794/488/11 793/490/11 -f 795/491/16 794/488/16 796/487/16 -f 799/492/19 793/490/19 795/491/19 -f 800/493/10 795/491/10 796/487/10 -f 882/494/19 880/495/19 878/496/19 -f 881/497/11 878/496/11 877/498/11 -f 879/499/18 878/496/18 880/495/18 -f 883/500/17 877/498/17 879/499/17 -f 884/501/10 879/499/10 880/495/10 -f 51/71/10 52/502/10 50/72/10 -f 54/74/11 56/503/11 55/75/11 -f 50/77/12 54/504/12 53/78/12 -f 52/79/13 56/503/13 54/74/13 -f 49/81/14 53/505/14 55/82/14 -f 51/84/15 55/506/15 56/85/15 -f 70/87/16 68/101/16 60/88/16 -f 65/90/14 67/110/14 59/91/14 -f 58/93/17 66/108/17 69/94/17 -f 71/96/18 65/90/18 57/92/18 -f 59/98/19 67/103/19 72/99/19 -f 72/99/15 70/87/15 62/89/15 -f 69/94/12 71/96/12 63/97/12 -f 68/101/13 66/108/13 58/93/13 -f 71/96/10 79/106/10 73/102/10 -f 67/103/10 75/116/10 80/104/10 -f 72/99/10 80/104/10 78/105/10 -f 69/94/10 77/112/10 79/106/10 -f 68/101/10 76/111/10 74/107/10 -f 65/90/10 73/102/10 75/109/10 -f 70/87/10 78/105/10 76/111/10 -f 66/108/10 74/107/10 77/112/10 -f 78/105/16 86/118/16 84/113/16 -f 74/107/17 82/120/17 85/114/17 -f 79/106/18 87/119/18 81/115/18 -f 75/116/19 83/126/19 88/117/19 -f 80/104/15 88/117/15 86/118/15 -f 77/112/12 85/114/12 87/119/12 -f 76/111/13 84/113/13 82/120/13 -f 73/102/14 81/115/14 83/121/14 -f 89/122/11 91/241/11 83/121/11 -f 87/119/11 95/170/11 89/122/11 -f 93/123/11 95/170/11 87/119/11 -f 82/120/11 90/172/11 93/123/11 -f 92/124/11 90/172/11 82/120/11 -f 86/118/11 94/173/11 92/124/11 -f 96/125/11 94/173/11 86/118/11 -f 83/126/11 91/175/11 96/125/11 -f 111/127/10 119/136/10 113/128/10 -f 107/130/10 115/147/10 120/131/10 -f 112/132/10 120/131/10 118/133/10 -f 109/135/10 117/143/10 119/136/10 -f 108/137/10 116/142/10 114/138/10 -f 105/129/10 113/128/10 115/140/10 -f 110/134/10 118/133/10 116/142/10 -f 106/139/10 114/138/10 117/143/10 -f 118/133/16 126/149/16 124/144/16 -f 114/138/17 122/151/17 125/145/17 -f 119/136/18 127/150/18 121/146/18 -f 115/147/19 123/157/19 128/148/19 -f 120/131/15 128/148/15 126/149/15 -f 117/143/12 125/145/12 127/150/12 -f 116/142/13 124/144/13 122/151/13 -f 113/128/14 121/146/14 123/152/14 -f 129/153/11 131/507/11 123/152/11 -f 127/150/11 135/162/11 129/153/11 -f 133/154/11 135/162/11 127/150/11 -f 122/151/11 130/508/11 133/154/11 -f 132/155/11 130/508/11 122/151/11 -f 126/149/11 134/167/11 132/155/11 -f 136/156/11 134/167/11 126/149/11 -f 123/157/11 131/509/11 136/156/11 -f 136/156/19 131/509/19 99/158/19 -f 99/160/14 131/507/14 129/153/14 -f 97/161/18 129/153/18 135/162/18 -f 103/163/12 135/162/12 133/154/12 -f 133/154/17 130/508/17 98/165/17 -f 98/165/13 130/508/13 132/155/13 -f 100/166/16 132/155/16 134/167/16 -f 102/168/15 134/167/15 136/156/15 -f 93/123/12 170/174/12 169/169/12 -f 111/127/18 105/129/18 89/122/18 -f 111/127/12 171/231/12 172/171/12 -f 90/172/17 106/139/17 109/135/17 -f 110/134/16 108/137/16 92/124/16 -f 109/135/12 172/171/12 170/174/12 -f 91/175/19 107/130/19 112/132/19 -f 141/176/17 149/196/17 146/177/17 -f 143/179/11 144/510/11 99/160/11 -f 97/161/11 103/163/11 137/180/11 -f 138/182/11 137/511/11 103/163/11 -f 141/183/11 138/512/11 101/164/11 -f 142/184/11 141/513/11 98/165/11 -f 100/166/11 102/168/11 140/185/11 -f 139/187/11 140/514/11 102/168/11 -f 144/188/11 139/515/11 104/159/11 -f 159/189/11 160/213/11 151/190/11 -f 144/192/19 151/210/19 148/193/19 -f 142/195/13 150/200/13 149/196/13 -f 138/178/12 146/177/12 145/197/12 -f 140/199/16 147/203/16 150/200/16 -f 137/198/18 145/197/18 152/191/18 -f 143/201/14 152/191/14 151/190/14 -f 139/194/15 148/193/15 147/203/15 -f 158/204/11 157/218/11 149/196/11 -f 155/205/11 156/222/11 147/203/11 -f 154/206/11 153/226/11 145/197/11 -f 149/196/11 157/223/11 154/207/11 -f 147/203/11 156/229/11 158/208/11 -f 160/209/11 155/220/11 148/193/11 -f 153/211/11 159/228/11 152/191/11 -f 159/189/13 168/516/13 167/212/13 -f 168/215/11 161/517/11 162/518/11 -f 162/518/11 165/519/11 168/215/11 -f 165/519/11 166/216/11 168/215/11 -f 166/216/11 163/520/11 164/521/11 -f 164/521/11 167/214/11 166/216/11 -f 158/204/14 166/522/14 165/217/14 -f 160/209/17 167/523/17 164/219/17 -f 155/205/12 164/524/12 163/221/12 -f 157/223/19 165/525/19 162/224/19 -f 154/206/15 162/526/15 161/225/15 -f 153/211/16 161/527/16 168/227/16 -f 156/229/18 163/528/18 166/230/18 -f 95/170/12 169/169/12 171/231/12 -f 175/232/10 192/281/10 191/233/10 -f 90/172/13 177/268/13 179/235/13 -f 106/139/13 179/235/13 180/236/13 -f 180/236/13 178/237/13 92/124/13 -f 178/237/13 177/268/13 90/172/13 -f 94/173/15 173/240/15 175/238/15 -f 112/132/15 110/134/15 175/238/15 -f 176/239/15 174/257/15 96/125/15 -f 96/125/15 174/257/15 173/240/15 -f 91/241/14 181/266/14 183/242/14 -f 107/141/14 183/242/14 184/243/14 -f 184/243/14 182/244/14 89/122/14 -f 182/244/14 181/266/14 91/241/14 -f 186/245/11 185/278/11 169/246/11 -f 173/248/11 174/529/11 187/249/11 -f 171/251/10 189/279/10 190/252/10 -f 190/254/14 186/530/14 170/174/14 -f 169/169/13 185/531/13 189/255/13 -f 191/256/13 187/532/13 174/257/13 -f 173/240/14 188/533/14 192/258/14 -f 182/259/11 194/286/11 193/260/11 -f 184/243/15 196/534/15 194/262/15 -f 183/263/10 195/298/10 196/264/10 -f 181/266/12 193/535/12 195/267/12 -f 177/268/15 197/536/15 199/269/15 -f 178/270/11 198/282/11 197/271/11 -f 180/236/12 200/537/12 198/273/12 -f 179/274/10 199/277/10 200/275/10 -f 199/277/19 197/271/19 186/245/19 -f 185/278/16 194/286/16 196/264/16 -f 195/280/17 193/288/17 187/249/17 -f 188/250/18 198/282/18 200/275/18 -f 198/282/14 208/285/14 207/283/14 -f 198/282/18 188/250/18 204/284/18 -f 194/286/13 206/291/13 205/287/13 -f 193/288/17 205/538/17 203/289/17 -f 187/249/12 203/289/12 204/284/12 -f 194/286/16 185/278/16 201/290/16 -f 186/245/15 202/292/15 201/290/15 -f 197/271/19 207/283/19 202/292/19 -f 206/294/11 201/539/11 202/540/11 -f 202/540/11 207/541/11 208/293/11 -f 208/293/11 204/284/11 203/289/11 -f 203/289/11 205/542/11 206/294/11 -f 206/294/11 202/540/11 208/293/11 -f 192/281/18 200/275/18 216/295/18 -f 189/279/15 209/301/15 210/297/15 -f 195/298/13 213/543/13 214/299/13 -f 191/233/17 211/303/17 213/300/17 -f 189/279/16 196/264/16 214/299/16 -f 190/252/19 210/297/19 215/302/19 -f 192/281/12 212/296/12 211/303/12 -f 199/277/14 215/302/14 216/295/14 -f 210/305/10 209/544/10 214/545/10 -f 214/545/10 213/546/10 211/303/10 -f 211/303/10 212/296/10 216/304/10 -f 216/304/10 215/547/10 210/305/10 -f 210/305/10 214/545/10 211/303/10 -f 347/306/18 349/548/18 345/307/18 -f 346/309/11 347/549/11 343/308/11 -f 344/311/17 342/310/17 343/308/17 -f 348/312/16 346/550/16 342/310/16 -f 345/307/10 349/551/10 348/313/10 -f 353/314/14 352/552/14 350/315/14 -f 357/317/13 356/553/13 354/318/13 -f 361/320/12 360/554/12 358/321/12 -f 365/323/15 364/555/15 362/324/15 -f 370/326/10 377/556/10 376/327/10 -f 368/329/15 370/557/15 373/330/15 -f 367/332/12 372/335/12 371/333/12 -f 369/331/13 373/330/13 372/335/13 -f 366/334/14 371/333/14 370/336/14 -f 372/335/20 375/346/20 374/339/20 -f 381/341/14 385/351/14 383/342/14 -f 374/339/14 379/347/14 377/344/14 -f 375/346/11 378/348/11 379/347/11 -f 373/328/13 376/327/13 378/348/13 -f 380/350/15 384/355/15 385/351/15 -f 377/352/12 383/558/12 382/353/12 -f 376/354/13 382/353/13 384/355/13 -f 378/348/21 380/350/21 381/341/21 -f 388/357/10 389/559/10 387/358/10 -f 392/360/11 393/364/11 390/361/11 -f 388/363/15 390/361/15 393/364/15 -f 387/358/12 392/360/12 391/362/12 -f 398/366/10 405/560/10 404/367/10 -f 396/369/15 398/561/15 401/370/15 -f 395/372/12 400/375/12 399/373/12 -f 397/371/13 401/370/13 400/375/13 -f 394/374/14 399/373/14 398/376/14 -f 400/375/20 403/386/20 402/379/20 -f 409/381/14 413/391/14 411/382/14 -f 402/379/14 407/387/14 405/384/14 -f 403/386/11 406/388/11 407/387/11 -f 401/368/13 404/367/13 406/388/13 -f 408/390/15 412/395/15 413/391/15 -f 405/392/12 411/562/12 410/393/12 -f 404/394/13 410/393/13 412/395/13 -f 406/388/21 408/390/21 409/381/21 -f 416/397/10 417/563/10 415/398/10 -f 420/400/11 421/404/11 418/401/11 -f 416/403/15 418/401/15 421/404/15 -f 415/398/12 420/400/12 419/402/12 -f 424/406/10 425/564/10 423/407/10 -f 428/409/11 429/413/11 426/410/11 -f 424/412/15 426/410/15 429/413/15 -f 423/407/12 428/409/12 427/411/12 -f 432/415/10 433/565/10 431/416/10 -f 436/418/11 437/422/11 434/419/11 -f 432/421/15 434/419/15 437/422/15 -f 431/416/12 436/418/12 435/420/12 -f 440/424/10 441/566/10 439/425/10 -f 444/427/11 445/431/11 442/428/11 -f 440/430/15 442/428/15 445/431/15 -f 439/425/12 444/427/12 443/429/12 -f 448/433/10 449/567/10 447/434/10 -f 452/436/11 453/440/11 450/437/11 -f 448/439/15 450/437/15 453/440/15 -f 447/434/12 452/436/12 451/438/12 -f 456/442/10 457/568/10 455/443/10 -f 460/445/11 461/449/11 458/446/11 -f 456/448/15 458/446/15 461/449/15 -f 455/443/12 460/445/12 459/447/12 -f 464/451/10 465/569/10 463/452/10 -f 468/454/11 469/458/11 466/455/11 -f 464/457/15 466/455/15 469/458/15 -f 463/452/12 468/454/12 467/456/12 -f 472/460/10 473/570/10 471/461/10 -f 476/463/11 477/467/11 474/464/11 -f 472/466/15 474/464/15 477/467/15 -f 471/461/12 476/463/12 475/465/12 -f 480/469/10 481/571/10 479/470/10 -f 484/472/11 485/476/11 482/473/11 -f 480/475/15 482/473/15 485/476/15 -f 479/470/12 484/472/12 483/474/12 -f 714/478/16 716/572/16 712/479/16 -f 713/481/11 714/573/11 710/480/11 -f 711/483/19 709/482/19 710/480/19 -f 715/484/18 713/574/18 709/482/18 -f 712/479/10 716/575/10 715/485/10 -f 798/486/17 800/576/17 796/487/17 -f 797/489/11 798/577/11 794/488/11 -f 795/491/16 793/490/16 794/488/16 -f 799/492/19 797/578/19 793/490/19 -f 800/493/10 799/579/10 795/491/10 -f 882/494/19 884/580/19 880/495/19 -f 881/497/11 882/581/11 878/496/11 -f 879/499/18 877/498/18 878/496/18 -f 883/500/17 881/582/17 877/498/17 -f 884/501/10 883/583/10 879/499/10 +f 67/87/14 66/88/14 65/89/14 +f 70/90/15 71/91/15 69/92/15 +f 66/93/16 69/94/16 65/95/16 +f 68/96/17 70/90/17 66/97/17 +f 65/98/18 71/99/18 67/100/18 +f 67/101/19 72/102/19 68/103/19 +f 86/104/20 76/105/20 78/106/20 +f 81/107/18 75/108/18 73/109/18 +f 74/110/21 85/111/21 77/112/21 +f 87/113/22 73/109/22 79/114/22 +f 75/115/23 88/116/23 80/117/23 +f 88/116/19 78/106/19 80/117/19 +f 85/111/16 79/114/16 77/112/16 +f 84/118/17 74/110/17 76/105/17 +f 87/113/14 89/119/14 81/107/14 +f 83/120/14 96/121/14 88/116/14 +f 88/116/14 94/122/14 86/104/14 +f 85/111/14 95/123/14 87/113/14 +f 84/118/14 90/124/14 82/125/14 +f 81/107/14 91/126/14 83/127/14 +f 86/104/14 92/128/14 84/118/14 +f 82/125/14 93/129/14 85/111/14 +f 94/122/20 100/130/20 92/128/20 +f 90/124/21 101/131/21 93/129/21 +f 95/123/22 97/132/22 89/119/22 +f 91/133/23 104/134/23 96/121/23 +f 96/121/19 102/135/19 94/122/19 +f 93/129/16 103/136/16 95/123/16 +f 92/128/17 98/137/17 90/124/17 +f 89/119/18 99/138/18 91/126/18 +f 105/139/15 99/138/15 97/132/15 +f 103/136/15 105/139/15 97/132/15 +f 109/140/15 103/136/15 101/131/15 +f 98/137/15 109/140/15 101/131/15 +f 108/141/15 98/137/15 100/130/15 +f 102/135/15 108/141/15 100/130/15 +f 112/142/15 102/135/15 104/134/15 +f 99/143/15 112/142/15 104/134/15 +f 127/144/14 129/145/14 121/146/14 +f 123/147/14 136/148/14 128/149/14 +f 128/149/14 134/150/14 126/151/14 +f 125/152/14 135/153/14 127/144/14 +f 124/154/14 130/155/14 122/156/14 +f 121/146/14 131/157/14 123/158/14 +f 126/151/14 132/159/14 124/154/14 +f 122/156/14 133/160/14 125/152/14 +f 134/150/20 140/161/20 132/159/20 +f 130/155/21 141/162/21 133/160/21 +f 135/153/22 137/163/22 129/145/22 +f 131/164/23 144/165/23 136/148/23 +f 136/148/19 142/166/19 134/150/19 +f 133/160/16 143/167/16 135/153/16 +f 132/159/17 138/168/17 130/155/17 +f 129/145/18 139/169/18 131/157/18 +f 145/170/15 139/169/15 137/163/15 +f 143/167/15 145/170/15 137/163/15 +f 149/171/15 143/167/15 141/162/15 +f 138/168/15 149/171/15 141/162/15 +f 148/172/15 138/168/15 140/161/15 +f 142/166/15 148/172/15 140/161/15 +f 152/173/15 142/166/15 144/165/15 +f 139/174/15 152/173/15 144/165/15 +f 152/173/23 115/175/23 120/176/23 +f 115/177/18 145/170/18 113/178/18 +f 113/178/22 151/179/22 119/180/22 +f 119/180/16 149/171/16 117/181/16 +f 149/171/21 114/182/21 117/181/21 +f 114/182/17 148/172/17 116/183/17 +f 116/183/20 150/184/20 118/185/20 +f 118/185/19 152/173/19 120/176/19 +f 109/140/16 185/186/16 111/187/16 +f 127/144/22 105/139/22 111/187/22 +f 127/144/16 188/188/16 125/152/16 +f 106/189/21 125/152/21 109/140/21 +f 126/151/20 108/141/20 110/190/20 +f 125/152/16 186/191/16 109/140/16 +f 107/192/23 128/149/23 112/142/23 +f 157/193/21 162/194/21 154/195/21 +f 159/196/15 115/177/15 113/178/15 +f 113/178/15 153/197/15 159/198/15 +f 154/199/15 119/180/15 117/181/15 +f 157/200/15 117/181/15 114/182/15 +f 158/201/15 114/182/15 116/183/15 +f 116/183/15 156/202/15 158/203/15 +f 155/204/15 118/185/15 120/176/15 +f 160/205/15 120/176/15 115/175/15 +f 175/206/15 167/207/15 168/208/15 +f 160/209/23 164/210/23 155/211/23 +f 158/212/17 165/213/17 157/193/17 +f 154/195/16 161/214/16 153/215/16 +f 156/216/20 166/217/20 158/212/20 +f 153/215/22 168/208/22 159/218/22 +f 159/218/18 167/207/18 160/219/18 +f 155/211/19 163/220/19 156/216/19 +f 174/221/15 165/213/15 166/217/15 +f 171/222/15 163/220/15 164/210/15 +f 170/223/15 161/214/15 162/194/15 +f 165/213/15 170/224/15 162/194/15 +f 163/220/15 174/225/15 166/217/15 +f 176/226/15 164/210/15 167/227/15 +f 169/228/15 168/208/15 161/214/15 +f 175/206/17 183/229/17 176/230/17 +f 183/231/15 184/232/15 182/233/15 +f 174/221/18 181/234/18 173/235/18 +f 176/226/21 180/236/21 171/237/21 +f 171/222/16 179/238/16 172/239/16 +f 173/240/23 178/241/23 170/224/23 +f 170/223/19 177/242/19 169/243/19 +f 169/228/20 184/244/20 175/245/20 +f 172/246/22 182/247/22 174/225/22 +f 111/187/16 187/248/16 127/144/16 +f 191/249/14 207/250/14 192/251/14 +f 106/189/17 195/252/17 122/156/17 +f 122/156/17 196/253/17 124/154/17 +f 196/253/17 108/141/17 124/154/17 +f 194/254/17 106/189/17 108/141/17 +f 110/190/19 191/255/19 126/151/19 +f 128/149/19 191/255/19 192/256/19 +f 192/256/19 112/142/19 128/149/19 +f 112/142/19 189/257/19 110/190/19 +f 107/258/18 199/259/18 123/158/18 +f 123/158/18 200/260/18 121/146/18 +f 200/260/18 105/139/18 121/146/18 +f 198/261/18 107/258/18 105/139/18 +f 202/262/15 185/263/15 186/264/15 +f 189/265/15 203/266/15 204/267/15 +f 187/268/14 206/269/14 188/270/14 +f 206/271/18 186/191/18 188/188/18 +f 185/186/17 205/272/17 187/248/17 +f 207/273/17 190/274/17 192/256/17 +f 189/257/18 208/275/18 191/255/18 +f 198/276/15 209/277/15 197/278/15 +f 200/260/19 210/279/19 198/261/19 +f 199/280/14 212/281/14 200/282/14 +f 197/283/16 211/284/16 199/259/16 +f 193/285/19 215/286/19 195/252/19 +f 194/287/15 213/288/15 193/289/15 +f 196/253/16 214/290/16 194/254/16 +f 195/291/14 216/292/14 196/293/14 +f 215/294/23 202/262/23 206/269/23 +f 201/295/20 212/281/20 205/296/20 +f 211/297/21 203/266/21 207/250/21 +f 204/267/22 216/292/22 208/298/22 +f 214/299/18 223/300/18 213/288/18 +f 214/299/22 220/301/22 224/302/22 +f 210/303/17 221/304/17 209/277/17 +f 209/305/21 219/306/21 203/266/21 +f 203/266/16 220/301/16 204/267/16 +f 210/303/20 217/307/20 222/308/20 +f 202/262/19 217/307/19 201/295/19 +f 213/288/23 218/309/23 202/262/23 +f 224/310/15 219/306/15 222/311/15 +f 208/298/22 232/312/22 228/313/22 +f 205/296/19 226/314/19 206/269/19 +f 211/315/17 230/316/17 212/281/17 +f 207/250/21 229/317/21 211/297/21 +f 205/296/20 230/316/20 225/318/20 +f 206/269/23 231/319/23 215/294/23 +f 208/298/16 227/320/16 207/250/16 +f 215/294/18 232/312/18 216/292/18 +f 227/320/14 232/321/14 226/322/14 +f 363/323/22 361/324/22 359/325/22 +f 362/326/15 359/325/15 358/327/15 +f 360/328/21 359/325/21 361/324/21 +f 364/329/20 358/327/20 360/328/20 +f 361/324/14 364/330/14 360/328/14 +f 369/331/18 366/332/18 367/333/18 +f 373/334/17 370/335/17 371/336/17 +f 377/337/16 374/338/16 375/339/16 +f 381/340/19 378/341/19 379/342/19 +f 386/343/14 392/344/14 389/345/14 +f 384/346/19 389/347/19 385/348/19 +f 383/349/16 387/350/16 382/351/16 +f 385/348/17 388/352/17 383/349/17 +f 382/351/18 386/353/18 384/354/18 +f 387/350/18 390/355/18 386/353/18 +f 388/352/24 390/356/24 387/350/24 +f 389/347/17 391/357/17 388/352/17 +f 397/358/18 399/359/18 393/360/18 +f 390/356/18 393/361/18 386/362/18 +f 391/363/15 395/364/15 390/356/15 +f 389/345/17 394/365/17 391/363/17 +f 392/344/17 396/366/17 394/365/17 +f 396/367/19 401/368/19 397/358/19 +f 393/369/16 398/370/16 392/371/16 +f 392/371/17 400/372/17 396/367/17 +f 394/365/25 397/358/25 395/364/25 +f 395/364/18 397/373/18 393/361/18 +f 404/374/14 403/375/14 402/376/14 +f 408/377/15 406/378/15 407/379/15 +f 404/380/19 409/381/19 405/382/19 +f 403/375/16 407/379/16 402/376/16 +f 414/383/14 420/384/14 417/385/14 +f 412/386/19 417/387/19 413/388/19 +f 411/389/16 415/390/16 410/391/16 +f 413/388/17 416/392/17 411/389/17 +f 410/391/18 414/393/18 412/394/18 +f 415/390/18 418/395/18 414/393/18 +f 416/392/24 418/396/24 415/390/24 +f 417/387/17 419/397/17 416/392/17 +f 425/398/18 427/399/18 421/400/18 +f 418/396/18 421/401/18 414/402/18 +f 419/403/15 423/404/15 418/396/15 +f 417/385/17 422/405/17 419/403/17 +f 420/384/17 424/406/17 422/405/17 +f 424/407/19 429/408/19 425/398/19 +f 421/409/16 426/410/16 420/411/16 +f 420/411/17 428/412/17 424/407/17 +f 422/405/25 425/398/25 423/404/25 +f 423/404/18 425/413/18 421/401/18 +f 432/414/14 431/415/14 430/416/14 +f 436/417/15 434/418/15 435/419/15 +f 432/420/19 437/421/19 433/422/19 +f 431/415/16 435/419/16 430/416/16 +f 440/423/14 439/424/14 438/425/14 +f 444/426/15 442/427/15 443/428/15 +f 440/429/19 445/430/19 441/431/19 +f 439/424/16 443/428/16 438/425/16 +f 448/432/14 447/433/14 446/434/14 +f 452/435/15 450/436/15 451/437/15 +f 448/438/19 453/439/19 449/440/19 +f 447/433/16 451/437/16 446/434/16 +f 456/441/14 455/442/14 454/443/14 +f 460/444/15 458/445/15 459/446/15 +f 456/447/19 461/448/19 457/449/19 +f 455/442/16 459/446/16 454/443/16 +f 464/450/14 463/451/14 462/452/14 +f 468/453/15 466/454/15 467/455/15 +f 464/456/19 469/457/19 465/458/19 +f 463/451/16 467/455/16 462/452/16 +f 472/459/14 471/460/14 470/461/14 +f 476/462/15 474/463/15 475/464/15 +f 472/465/19 477/466/19 473/467/19 +f 471/460/16 475/464/16 470/461/16 +f 480/468/14 479/469/14 478/470/14 +f 484/471/15 482/472/15 483/473/15 +f 480/474/19 485/475/19 481/476/19 +f 479/469/16 483/473/16 478/470/16 +f 488/477/14 487/478/14 486/479/14 +f 492/480/15 490/481/15 491/482/15 +f 488/483/19 493/484/19 489/485/19 +f 487/478/16 491/482/16 486/479/16 +f 496/486/14 495/487/14 494/488/14 +f 500/489/15 498/490/15 499/491/15 +f 496/492/19 501/493/19 497/494/19 +f 495/487/16 499/491/16 494/488/16 +f 730/495/20 728/496/20 726/497/20 +f 729/498/15 726/497/15 725/499/15 +f 727/500/23 726/497/23 728/496/23 +f 731/501/22 725/499/22 727/500/22 +f 728/496/14 731/502/14 727/500/14 +f 814/503/21 812/504/21 810/505/21 +f 813/506/15 810/505/15 809/507/15 +f 811/508/20 810/505/20 812/504/20 +f 815/509/23 809/507/23 811/508/23 +f 816/510/14 811/508/14 812/504/14 +f 898/511/23 896/512/23 894/513/23 +f 897/514/15 894/513/15 893/515/15 +f 895/516/22 894/513/22 896/512/22 +f 899/517/21 893/515/21 895/516/21 +f 900/518/14 895/516/14 896/512/14 +f 67/87/14 68/519/14 66/88/14 +f 70/90/15 72/520/15 71/91/15 +f 66/93/16 70/521/16 69/94/16 +f 68/96/17 72/520/17 70/90/17 +f 65/98/18 69/522/18 71/99/18 +f 67/101/19 71/523/19 72/102/19 +f 86/104/20 84/118/20 76/105/20 +f 81/107/18 83/127/18 75/108/18 +f 74/110/21 82/125/21 85/111/21 +f 87/113/22 81/107/22 73/109/22 +f 75/115/23 83/120/23 88/116/23 +f 88/116/19 86/104/19 78/106/19 +f 85/111/16 87/113/16 79/114/16 +f 84/118/17 82/125/17 74/110/17 +f 87/113/14 95/123/14 89/119/14 +f 83/120/14 91/133/14 96/121/14 +f 88/116/14 96/121/14 94/122/14 +f 85/111/14 93/129/14 95/123/14 +f 84/118/14 92/128/14 90/124/14 +f 81/107/14 89/119/14 91/126/14 +f 86/104/14 94/122/14 92/128/14 +f 82/125/14 90/124/14 93/129/14 +f 94/122/20 102/135/20 100/130/20 +f 90/124/21 98/137/21 101/131/21 +f 95/123/22 103/136/22 97/132/22 +f 91/133/23 99/143/23 104/134/23 +f 96/121/19 104/134/19 102/135/19 +f 93/129/16 101/131/16 103/136/16 +f 92/128/17 100/130/17 98/137/17 +f 89/119/18 97/132/18 99/138/18 +f 105/139/15 107/258/15 99/138/15 +f 103/136/15 111/187/15 105/139/15 +f 109/140/15 111/187/15 103/136/15 +f 98/137/15 106/189/15 109/140/15 +f 108/141/15 106/189/15 98/137/15 +f 102/135/15 110/190/15 108/141/15 +f 112/142/15 110/190/15 102/135/15 +f 99/143/15 107/192/15 112/142/15 +f 127/144/14 135/153/14 129/145/14 +f 123/147/14 131/164/14 136/148/14 +f 128/149/14 136/148/14 134/150/14 +f 125/152/14 133/160/14 135/153/14 +f 124/154/14 132/159/14 130/155/14 +f 121/146/14 129/145/14 131/157/14 +f 126/151/14 134/150/14 132/159/14 +f 122/156/14 130/155/14 133/160/14 +f 134/150/20 142/166/20 140/161/20 +f 130/155/21 138/168/21 141/162/21 +f 135/153/22 143/167/22 137/163/22 +f 131/164/23 139/174/23 144/165/23 +f 136/148/19 144/165/19 142/166/19 +f 133/160/16 141/162/16 143/167/16 +f 132/159/17 140/161/17 138/168/17 +f 129/145/18 137/163/18 139/169/18 +f 145/170/15 147/524/15 139/169/15 +f 143/167/15 151/179/15 145/170/15 +f 149/171/15 151/179/15 143/167/15 +f 138/168/15 146/525/15 149/171/15 +f 148/172/15 146/525/15 138/168/15 +f 142/166/15 150/184/15 148/172/15 +f 152/173/15 150/184/15 142/166/15 +f 139/174/15 147/526/15 152/173/15 +f 152/173/23 147/526/23 115/175/23 +f 115/177/18 147/524/18 145/170/18 +f 113/178/22 145/170/22 151/179/22 +f 119/180/16 151/179/16 149/171/16 +f 149/171/21 146/525/21 114/182/21 +f 114/182/17 146/525/17 148/172/17 +f 116/183/20 148/172/20 150/184/20 +f 118/185/19 150/184/19 152/173/19 +f 109/140/16 186/191/16 185/186/16 +f 127/144/22 121/146/22 105/139/22 +f 127/144/16 187/248/16 188/188/16 +f 106/189/21 122/156/21 125/152/21 +f 126/151/20 124/154/20 108/141/20 +f 125/152/16 188/188/16 186/191/16 +f 107/192/23 123/147/23 128/149/23 +f 157/193/21 165/213/21 162/194/21 +f 159/196/15 160/527/15 115/177/15 +f 113/178/15 119/180/15 153/197/15 +f 154/199/15 153/528/15 119/180/15 +f 157/200/15 154/529/15 117/181/15 +f 158/201/15 157/530/15 114/182/15 +f 116/183/15 118/185/15 156/202/15 +f 155/204/15 156/531/15 118/185/15 +f 160/205/15 155/532/15 120/176/15 +f 175/206/15 176/230/15 167/207/15 +f 160/209/23 167/227/23 164/210/23 +f 158/212/17 166/217/17 165/213/17 +f 154/195/16 162/194/16 161/214/16 +f 156/216/20 163/220/20 166/217/20 +f 153/215/22 161/214/22 168/208/22 +f 159/218/18 168/208/18 167/207/18 +f 155/211/19 164/210/19 163/220/19 +f 174/221/15 173/235/15 165/213/15 +f 171/222/15 172/239/15 163/220/15 +f 170/223/15 169/243/15 161/214/15 +f 165/213/15 173/240/15 170/224/15 +f 163/220/15 172/246/15 174/225/15 +f 176/226/15 171/237/15 164/210/15 +f 169/228/15 175/245/15 168/208/15 +f 175/206/17 184/533/17 183/229/17 +f 184/232/15 177/534/15 178/535/15 +f 178/535/15 181/536/15 184/232/15 +f 181/536/15 182/233/15 184/232/15 +f 182/233/15 179/537/15 180/538/15 +f 180/538/15 183/231/15 182/233/15 +f 174/221/18 182/539/18 181/234/18 +f 176/226/21 183/540/21 180/236/21 +f 171/222/16 180/541/16 179/238/16 +f 173/240/23 181/542/23 178/241/23 +f 170/223/19 178/543/19 177/242/19 +f 169/228/20 177/544/20 184/244/20 +f 172/246/22 179/545/22 182/247/22 +f 111/187/16 185/186/16 187/248/16 +f 191/249/14 208/298/14 207/250/14 +f 106/189/17 193/285/17 195/252/17 +f 122/156/17 195/252/17 196/253/17 +f 196/253/17 194/254/17 108/141/17 +f 194/254/17 193/285/17 106/189/17 +f 110/190/19 189/257/19 191/255/19 +f 128/149/19 126/151/19 191/255/19 +f 192/256/19 190/274/19 112/142/19 +f 112/142/19 190/274/19 189/257/19 +f 107/258/18 197/283/18 199/259/18 +f 123/158/18 199/259/18 200/260/18 +f 200/260/18 198/261/18 105/139/18 +f 198/261/18 197/283/18 107/258/18 +f 202/262/15 201/295/15 185/263/15 +f 189/265/15 190/546/15 203/266/15 +f 187/268/14 205/296/14 206/269/14 +f 206/271/18 202/547/18 186/191/18 +f 185/186/17 201/548/17 205/272/17 +f 207/273/17 203/549/17 190/274/17 +f 189/257/18 204/550/18 208/275/18 +f 198/276/15 210/303/15 209/277/15 +f 200/260/19 212/551/19 210/279/19 +f 199/280/14 211/315/14 212/281/14 +f 197/283/16 209/552/16 211/284/16 +f 193/285/19 213/553/19 215/286/19 +f 194/287/15 214/299/15 213/288/15 +f 196/253/16 216/554/16 214/290/16 +f 195/291/14 215/294/14 216/292/14 +f 215/294/23 213/288/23 202/262/23 +f 201/295/20 210/303/20 212/281/20 +f 211/297/21 209/305/21 203/266/21 +f 204/267/22 214/299/22 216/292/22 +f 214/299/18 224/302/18 223/300/18 +f 214/299/22 204/267/22 220/301/22 +f 210/303/17 222/308/17 221/304/17 +f 209/305/21 221/555/21 219/306/21 +f 203/266/16 219/306/16 220/301/16 +f 210/303/20 201/295/20 217/307/20 +f 202/262/19 218/309/19 217/307/19 +f 213/288/23 223/300/23 218/309/23 +f 222/311/15 217/556/15 218/557/15 +f 218/557/15 223/558/15 224/310/15 +f 224/310/15 220/301/15 219/306/15 +f 219/306/15 221/559/15 222/311/15 +f 222/311/15 218/557/15 224/310/15 +f 208/298/22 216/292/22 232/312/22 +f 205/296/19 225/318/19 226/314/19 +f 211/315/17 229/560/17 230/316/17 +f 207/250/21 227/320/21 229/317/21 +f 205/296/20 212/281/20 230/316/20 +f 206/269/23 226/314/23 231/319/23 +f 208/298/16 228/313/16 227/320/16 +f 215/294/18 231/319/18 232/312/18 +f 226/322/14 225/561/14 230/562/14 +f 230/562/14 229/563/14 227/320/14 +f 227/320/14 228/313/14 232/321/14 +f 232/321/14 231/564/14 226/322/14 +f 226/322/14 230/562/14 227/320/14 +f 363/323/22 365/565/22 361/324/22 +f 362/326/15 363/566/15 359/325/15 +f 360/328/21 358/327/21 359/325/21 +f 364/329/20 362/567/20 358/327/20 +f 361/324/14 365/568/14 364/330/14 +f 369/331/18 368/569/18 366/332/18 +f 373/334/17 372/570/17 370/335/17 +f 377/337/16 376/571/16 374/338/16 +f 381/340/19 380/572/19 378/341/19 +f 386/343/14 393/573/14 392/344/14 +f 384/346/19 386/574/19 389/347/19 +f 383/349/16 388/352/16 387/350/16 +f 385/348/17 389/347/17 388/352/17 +f 382/351/18 387/350/18 386/353/18 +f 388/352/24 391/363/24 390/356/24 +f 397/358/18 401/368/18 399/359/18 +f 390/356/18 395/364/18 393/361/18 +f 391/363/15 394/365/15 395/364/15 +f 389/345/17 392/344/17 394/365/17 +f 396/367/19 400/372/19 401/368/19 +f 393/369/16 399/575/16 398/370/16 +f 392/371/17 398/370/17 400/372/17 +f 394/365/25 396/367/25 397/358/25 +f 404/374/14 405/576/14 403/375/14 +f 408/377/15 409/381/15 406/378/15 +f 404/380/19 406/378/19 409/381/19 +f 403/375/16 408/377/16 407/379/16 +f 414/383/14 421/577/14 420/384/14 +f 412/386/19 414/578/19 417/387/19 +f 411/389/16 416/392/16 415/390/16 +f 413/388/17 417/387/17 416/392/17 +f 410/391/18 415/390/18 414/393/18 +f 416/392/24 419/403/24 418/396/24 +f 425/398/18 429/408/18 427/399/18 +f 418/396/18 423/404/18 421/401/18 +f 419/403/15 422/405/15 423/404/15 +f 417/385/17 420/384/17 422/405/17 +f 424/407/19 428/412/19 429/408/19 +f 421/409/16 427/579/16 426/410/16 +f 420/411/17 426/410/17 428/412/17 +f 422/405/25 424/407/25 425/398/25 +f 432/414/14 433/580/14 431/415/14 +f 436/417/15 437/421/15 434/418/15 +f 432/420/19 434/418/19 437/421/19 +f 431/415/16 436/417/16 435/419/16 +f 440/423/14 441/581/14 439/424/14 +f 444/426/15 445/430/15 442/427/15 +f 440/429/19 442/427/19 445/430/19 +f 439/424/16 444/426/16 443/428/16 +f 448/432/14 449/582/14 447/433/14 +f 452/435/15 453/439/15 450/436/15 +f 448/438/19 450/436/19 453/439/19 +f 447/433/16 452/435/16 451/437/16 +f 456/441/14 457/583/14 455/442/14 +f 460/444/15 461/448/15 458/445/15 +f 456/447/19 458/445/19 461/448/19 +f 455/442/16 460/444/16 459/446/16 +f 464/450/14 465/584/14 463/451/14 +f 468/453/15 469/457/15 466/454/15 +f 464/456/19 466/454/19 469/457/19 +f 463/451/16 468/453/16 467/455/16 +f 472/459/14 473/585/14 471/460/14 +f 476/462/15 477/466/15 474/463/15 +f 472/465/19 474/463/19 477/466/19 +f 471/460/16 476/462/16 475/464/16 +f 480/468/14 481/586/14 479/469/14 +f 484/471/15 485/475/15 482/472/15 +f 480/474/19 482/472/19 485/475/19 +f 479/469/16 484/471/16 483/473/16 +f 488/477/14 489/587/14 487/478/14 +f 492/480/15 493/484/15 490/481/15 +f 488/483/19 490/481/19 493/484/19 +f 487/478/16 492/480/16 491/482/16 +f 496/486/14 497/588/14 495/487/14 +f 500/489/15 501/493/15 498/490/15 +f 496/492/19 498/490/19 501/493/19 +f 495/487/16 500/489/16 499/491/16 +f 730/495/20 732/589/20 728/496/20 +f 729/498/15 730/590/15 726/497/15 +f 727/500/23 725/499/23 726/497/23 +f 731/501/22 729/591/22 725/499/22 +f 728/496/14 732/592/14 731/502/14 +f 814/503/21 816/593/21 812/504/21 +f 813/506/15 814/594/15 810/505/15 +f 811/508/20 809/507/20 810/505/20 +f 815/509/23 813/595/23 809/507/23 +f 816/510/14 815/596/14 811/508/14 +f 898/511/23 900/597/23 896/512/23 +f 897/514/15 898/598/15 894/513/15 +f 895/516/22 893/515/22 894/513/22 +f 899/517/21 897/599/21 893/515/21 +f 900/518/14 899/600/14 895/516/14 s 1 -f 224/584/13 231/585/22 223/586/17 -f 222/587/12 229/588/23 221/589/18 -f 220/590/14 227/591/24 219/592/19 -f 218/593/15 225/594/25 217/595/16 -f 217/595/16 232/596/26 224/584/13 -f 223/586/17 230/597/27 222/587/12 -f 221/589/18 228/598/28 220/590/14 -f 219/599/19 226/600/29 218/593/15 -f 226/601/29 233/602/30 225/603/25 -f 225/603/25 239/604/31 232/596/26 -f 231/585/22 237/605/32 230/597/27 -f 228/606/28 236/607/33 235/608/34 -f 231/585/22 239/604/31 238/609/35 -f 230/597/27 236/607/33 229/610/23 -f 239/604/31 245/611/36 238/609/35 -f 236/607/33 244/612/37 243/613/38 -f 234/614/39 240/615/40 233/602/30 -f 233/602/30 246/616/41 239/604/31 -f 238/609/35 244/612/37 237/605/32 -f 236/607/33 242/617/42 235/608/34 -f 226/601/29 227/618/24 234/614/39 -f 234/614/39 227/618/24 241/619/43 -f 228/606/28 235/608/34 227/620/24 -f 235/608/34 242/617/42 227/620/24 -f 227/621/24 250/622/44 247/623/10 -f 240/624/40 254/625/45 246/616/41 -f 227/626/24 249/627/46 241/628/43 -f 245/611/36 252/629/47 244/612/37 -f 243/630/38 250/622/44 242/631/42 -f 246/616/41 253/632/11 245/611/36 -f 243/630/38 252/629/47 251/633/18 -f 240/624/40 249/627/46 248/634/16 -f 262/635/13 269/636/22 261/637/17 -f 260/638/12 267/639/23 259/640/18 -f 258/641/14 265/642/24 257/643/19 -f 256/644/15 263/645/25 255/646/16 -f 255/646/16 270/647/26 262/635/13 -f 261/637/17 268/648/27 260/638/12 -f 259/640/18 266/649/28 258/641/14 -f 257/650/19 264/651/29 256/644/15 -f 263/652/25 272/653/39 271/654/30 -f 263/652/25 277/655/31 270/647/26 -f 269/636/22 275/656/32 268/648/27 -f 267/657/23 273/658/34 266/659/28 -f 269/636/22 277/655/31 276/660/35 -f 267/657/23 275/656/32 274/661/48 -f 277/655/31 283/662/36 276/660/35 -f 275/656/32 281/663/38 274/661/48 -f 272/653/39 278/664/40 271/654/30 -f 277/655/31 278/664/40 284/665/41 -f 276/660/35 282/666/37 275/656/32 -f 273/658/34 281/663/38 280/667/42 -f 264/668/29 265/669/24 272/653/39 -f 272/653/39 265/669/24 279/670/43 -f 266/659/28 273/658/34 265/671/24 -f 273/658/34 280/667/42 265/671/24 -f 280/672/42 285/673/10 265/674/24 -f 284/665/41 286/675/16 292/676/45 -f 279/677/43 285/678/10 287/679/46 -f 282/666/37 291/680/11 290/681/47 -f 280/672/42 289/682/18 288/683/44 -f 284/665/41 291/680/11 283/662/36 -f 282/666/37 289/682/18 281/684/38 -f 279/677/43 286/675/16 278/685/40 -f 310/686/49 297/687/50 298/688/51 -f 305/689/52 304/690/53 293/691/15 -f 307/692/54 294/693/55 295/694/56 -f 314/695/57 301/696/58 302/697/13 -f 311/698/59 298/688/51 299/699/12 -f 308/700/60 295/694/56 296/701/14 -f 315/702/61 302/697/13 303/703/62 -f 312/704/63 299/699/12 300/705/64 -f 309/706/65 296/707/14 297/687/50 -f 316/708/66 303/703/62 304/690/53 -f 306/709/67 293/691/15 294/693/55 -f 313/710/68 300/705/64 301/696/58 -f 317/711/69 321/712/11 319/713/70 -f 317/711/69 320/714/71 318/715/72 -f 319/716/70 321/717/11 322/718/73 -f 320/714/71 322/718/73 323/719/74 -f 322/720/73 321/721/11 324/722/75 -f 323/719/74 324/722/75 325/723/76 -f 324/724/75 327/725/77 325/723/76 -f 324/724/75 321/726/11 326/727/78 -f 326/728/78 329/729/79 327/725/77 -f 326/728/78 321/730/11 328/731/80 -f 328/732/80 331/733/81 329/729/79 -f 328/732/80 321/734/11 330/735/82 -f 330/736/82 333/737/83 331/733/81 -f 330/736/82 321/738/11 332/739/84 -f 332/740/84 335/741/85 333/737/83 -f 332/740/84 321/742/11 334/743/86 -f 334/744/86 321/745/11 336/746/87 -f 334/744/86 337/747/88 335/741/85 -f 327/725/77 312/704/63 313/710/68 -f 312/704/63 331/733/81 311/698/59 -f 336/748/87 321/749/11 338/750/89 -f 311/698/59 333/737/83 310/686/49 -f 333/737/83 309/706/65 310/686/49 -f 336/748/87 339/751/90 337/752/88 -f 308/753/60 335/741/85 337/747/88 -f 308/700/60 339/751/90 307/692/54 -f 338/754/89 321/755/11 340/756/91 -f 307/692/54 341/757/92 306/709/67 -f 305/689/52 341/757/92 318/715/72 -f 338/754/89 341/757/92 339/751/90 -f 305/689/52 320/714/71 316/708/66 -f 316/708/66 323/719/74 315/702/61 -f 340/758/91 321/759/11 317/760/69 -f 323/719/74 314/695/57 315/702/61 -f 325/723/76 313/710/68 314/695/57 -f 341/757/92 317/760/69 318/715/72 -f 503/761/49 490/762/50 491/763/51 -f 498/764/52 497/765/53 486/766/15 -f 500/767/54 487/768/55 488/769/56 -f 507/770/57 494/771/58 495/772/13 -f 504/773/59 491/763/51 492/774/12 -f 501/775/60 488/769/56 489/776/14 -f 508/777/61 495/772/13 496/778/62 -f 505/779/63 492/774/12 493/780/64 -f 502/781/65 489/782/14 490/762/50 -f 509/783/66 496/778/62 497/765/53 -f 499/784/67 486/766/15 487/768/55 -f 506/785/68 493/780/64 494/771/58 -f 510/786/69 514/787/11 512/788/70 -f 510/786/69 513/789/71 511/790/72 -f 512/791/70 514/792/11 515/793/73 -f 512/791/70 516/794/74 513/789/71 -f 515/795/73 514/796/11 517/797/75 -f 515/795/73 518/798/76 516/794/74 -f 517/799/75 520/800/77 518/798/76 -f 517/799/75 514/801/11 519/802/78 -f 519/803/78 522/804/79 520/800/77 -f 519/803/78 514/805/11 521/806/80 -f 521/807/80 524/808/81 522/804/79 -f 521/807/80 514/809/11 523/810/82 -f 524/808/81 525/811/84 526/812/83 -f 523/813/82 514/814/11 525/811/84 -f 525/815/84 528/816/85 526/812/83 -f 525/815/84 514/817/11 527/818/93 -f 527/819/93 514/820/11 529/821/87 -f 528/816/85 529/821/87 530/822/88 -f 506/785/68 522/804/79 505/779/63 -f 505/779/63 524/808/81 504/773/59 -f 529/823/87 514/824/11 531/825/89 -f 504/773/59 526/812/83 503/761/49 -f 526/812/83 502/781/65 503/761/49 -f 529/823/87 532/826/90 530/827/88 -f 501/828/60 528/816/85 530/822/88 -f 501/775/60 532/826/90 500/767/54 -f 531/829/89 514/830/11 533/831/91 -f 500/767/54 534/832/92 499/784/67 -f 498/764/52 534/832/92 511/790/72 -f 531/829/89 534/832/92 532/826/90 -f 498/764/52 513/789/71 509/783/66 -f 509/783/66 516/794/74 508/777/61 -f 533/833/91 514/834/11 510/835/69 -f 516/794/74 507/770/57 508/777/61 -f 507/770/57 520/800/77 506/785/68 -f 533/833/91 511/790/72 534/832/92 -f 552/836/49 539/837/50 540/838/51 -f 547/839/52 546/840/53 535/841/15 -f 549/842/54 536/843/55 537/844/56 -f 556/845/57 543/846/58 544/847/13 -f 553/848/59 540/838/51 541/849/12 -f 550/850/60 537/844/56 538/851/14 -f 557/852/61 544/847/13 545/853/62 -f 554/854/63 541/849/12 542/855/64 -f 551/856/65 538/857/14 539/837/50 -f 558/858/66 545/853/62 546/840/53 -f 548/859/67 535/841/15 536/843/55 -f 555/860/68 542/855/64 543/846/58 -f 559/861/69 563/862/11 561/863/70 -f 560/864/72 561/863/70 562/865/71 -f 561/866/70 563/867/11 564/868/94 -f 561/866/70 565/869/74 562/865/71 -f 564/870/94 563/871/11 566/872/75 -f 565/869/74 566/872/75 567/873/76 -f 566/874/75 569/875/77 567/873/76 -f 566/874/75 563/876/11 568/877/78 -f 569/875/77 570/878/95 571/879/79 -f 568/880/78 563/881/11 570/878/95 -f 571/879/79 572/882/82 573/883/81 -f 570/884/95 563/885/11 572/882/82 -f 572/886/82 575/887/83 573/883/81 -f 572/886/82 563/888/11 574/889/84 -f 574/890/84 577/891/85 575/887/83 -f 574/890/84 563/892/11 576/893/93 -f 576/894/93 563/895/11 578/896/87 -f 576/894/93 579/897/88 577/891/85 -f 569/875/77 554/854/63 555/860/68 -f 571/879/79 553/848/59 554/854/63 -f 578/898/87 563/899/11 580/900/96 -f 573/883/81 552/836/49 553/848/59 -f 575/887/83 551/856/65 552/836/49 -f 578/898/87 581/901/90 579/902/88 -f 551/856/65 579/897/88 550/903/60 -f 550/850/60 581/901/90 549/842/54 -f 580/904/96 563/905/11 582/906/91 -f 549/842/54 583/907/92 548/859/67 -f 547/839/52 583/907/92 560/864/72 -f 580/904/96 583/907/92 581/901/90 -f 547/839/52 562/865/71 558/858/66 -f 558/858/66 565/869/74 557/852/61 -f 582/908/91 563/909/11 559/910/69 -f 565/869/74 556/845/57 557/852/61 -f 556/845/57 569/875/77 555/860/68 -f 582/908/91 560/864/72 583/907/92 -f 601/911/49 588/912/50 589/913/51 -f 596/914/52 595/915/53 584/916/15 -f 598/917/54 585/918/55 586/919/56 -f 605/920/57 592/921/58 593/922/13 -f 602/923/59 589/913/51 590/924/12 -f 599/925/60 586/919/56 587/926/14 -f 606/927/61 593/922/13 594/928/62 -f 603/929/63 590/924/12 591/930/64 -f 600/931/65 587/932/14 588/912/50 -f 607/933/66 594/928/62 595/915/53 -f 597/934/67 584/916/15 585/918/55 -f 604/935/68 591/930/64 592/921/58 -f 608/936/69 612/937/11 610/938/70 -f 608/936/69 611/939/71 609/940/72 -f 610/941/70 612/942/11 613/943/94 -f 610/941/70 614/944/74 611/939/71 -f 613/945/94 612/946/11 615/947/75 -f 613/945/94 616/948/76 614/944/74 -f 616/948/76 617/949/78 618/950/77 -f 615/951/75 612/952/11 617/949/78 -f 617/953/78 620/954/79 618/950/77 -f 617/953/78 612/955/11 619/956/80 -f 620/954/79 621/957/82 622/958/81 -f 619/959/80 612/960/11 621/957/82 -f 621/961/82 624/962/83 622/958/81 -f 621/961/82 612/963/11 623/964/84 -f 624/962/83 625/965/93 626/966/85 -f 623/967/84 612/968/11 625/965/93 -f 625/969/93 612/970/11 627/971/87 -f 625/969/93 628/972/88 626/966/85 -f 618/950/77 603/929/63 604/935/68 -f 603/929/63 622/958/81 602/923/59 -f 627/973/87 612/974/11 629/975/96 -f 602/923/59 624/962/83 601/911/49 -f 624/962/83 600/931/65 601/911/49 -f 627/973/87 630/976/90 628/977/88 -f 599/978/60 626/966/85 628/972/88 -f 599/925/60 630/976/90 598/917/54 -f 629/979/96 612/980/11 631/981/91 -f 598/917/54 632/982/92 597/934/67 -f 597/934/67 609/940/72 596/914/52 -f 629/979/96 632/982/92 630/976/90 -f 596/914/52 611/939/71 607/933/66 -f 607/933/66 614/944/74 606/927/61 -f 631/983/91 612/984/11 608/985/69 -f 614/944/74 605/920/57 606/927/61 -f 605/920/57 618/950/77 604/935/68 -f 631/983/91 609/940/72 632/982/92 -f 640/986/14 647/987/97 639/988/19 -f 638/989/15 645/990/98 637/991/16 -f 636/992/13 643/993/99 635/994/17 -f 634/995/12 641/996/100 633/997/18 -f 633/997/18 648/998/101 640/986/14 -f 639/988/19 646/999/102 638/989/15 -f 637/991/16 644/1000/103 636/992/13 -f 635/1001/17 642/1002/104 634/995/12 -f 642/1003/104 649/1004/105 641/1005/100 -f 648/998/101 649/1004/105 655/1006/106 -f 646/999/102 654/1007/107 653/1008/108 -f 645/1009/98 651/1010/109 644/1011/103 -f 648/998/101 654/1007/107 647/987/97 -f 646/999/102 652/1012/110 645/1009/98 -f 655/1006/106 661/1013/111 654/1007/107 -f 652/1012/110 660/1014/112 659/1015/113 -f 649/1004/105 657/1016/114 656/1017/115 -f 649/1004/105 662/1018/116 655/1006/106 -f 654/1007/107 660/1014/112 653/1008/108 -f 652/1012/110 658/1019/117 651/1010/109 -f 642/1003/104 643/1020/99 650/1021/118 -f 650/1021/118 643/1020/99 657/1016/114 -f 644/1011/103 651/1010/109 643/1022/99 -f 651/1010/109 658/1019/117 643/1022/99 -f 643/1023/99 666/1024/46 663/1025/10 -f 656/1026/115 670/1027/47 662/1018/116 -f 643/1028/99 665/1029/44 657/1030/114 -f 661/1013/111 668/1031/45 660/1014/112 -f 659/1032/113 666/1024/46 658/1033/117 -f 661/1013/111 670/1027/47 669/1034/11 -f 659/1032/113 668/1031/45 667/1035/16 -f 656/1026/115 665/1029/44 664/1036/18 -f 678/1037/14 685/1038/97 677/1039/19 -f 676/1040/15 683/1041/98 675/1042/16 -f 674/1043/13 681/1044/99 673/1045/17 -f 672/1046/12 679/1047/100 671/1048/18 -f 671/1048/18 686/1049/101 678/1037/14 -f 677/1039/19 684/1050/102 676/1040/15 -f 675/1042/16 682/1051/103 674/1043/13 -f 673/1052/17 680/1053/104 672/1046/12 -f 679/1054/100 688/1055/118 687/1056/105 -f 679/1054/100 693/1057/106 686/1049/101 -f 685/1038/97 691/1058/108 684/1050/102 -f 683/1059/98 689/1060/109 682/1061/103 -f 685/1038/97 693/1057/106 692/1062/107 -f 684/1050/102 690/1063/110 683/1059/98 -f 693/1057/106 699/1064/111 692/1062/107 -f 691/1058/108 697/1065/113 690/1063/110 -f 688/1055/118 694/1066/115 687/1056/105 -f 693/1057/106 694/1066/115 700/1067/116 -f 692/1062/107 698/1068/112 691/1058/108 -f 689/1060/109 697/1065/113 696/1069/117 -f 680/1070/104 681/1071/99 688/1055/118 -f 688/1055/118 681/1071/99 695/1072/114 -f 682/1061/103 689/1060/109 681/1073/99 -f 689/1060/109 696/1069/117 681/1073/99 -f 696/1074/117 701/1075/10 681/1076/99 -f 700/1067/116 702/1077/18 708/1078/47 -f 695/1079/114 701/1080/10 703/1081/44 -f 699/1064/111 706/1082/45 698/1068/112 -f 697/1083/113 704/1084/46 696/1074/117 -f 700/1067/116 707/1085/11 699/1064/111 -f 698/1068/112 705/1086/16 697/1083/113 -f 695/1079/114 702/1077/18 694/1087/115 -f 724/1088/15 731/1089/119 723/1090/16 -f 722/1091/13 729/1092/120 721/1093/17 -f 720/1094/12 727/1095/44 719/1096/18 -f 718/1097/14 725/1098/121 717/1099/19 -f 717/1099/19 732/1100/122 724/1088/15 -f 723/1090/16 730/1101/123 722/1091/13 -f 721/1093/17 728/1102/124 720/1094/12 -f 719/1103/18 726/1104/125 718/1097/14 -f 726/1105/125 733/1106/126 725/1107/121 -f 732/1100/122 733/1106/126 739/1108/127 -f 730/1101/123 738/1109/45 737/1110/128 -f 728/1111/124 736/1112/129 735/1113/130 -f 731/1089/119 739/1108/127 738/1109/45 -f 730/1101/123 736/1112/129 729/1114/120 -f 738/1109/45 746/1115/131 745/1116/132 -f 736/1112/129 744/1117/133 743/1118/134 -f 734/1119/135 740/1120/136 733/1106/126 -f 733/1106/126 746/1115/131 739/1108/127 -f 738/1109/45 744/1117/133 737/1110/128 -f 736/1112/129 742/1121/137 735/1113/130 -f 726/1105/125 727/1122/44 734/1119/135 -f 734/1119/135 727/1122/44 741/1123/138 -f 728/1111/124 735/1113/130 727/1124/44 -f 735/1113/130 742/1121/137 727/1124/44 -f 727/1125/44 750/1126/99 747/1127/10 -f 740/1128/136 754/1129/107 746/1115/131 -f 727/1130/44 749/1131/24 741/1132/138 -f 745/1116/132 752/1133/35 744/1117/133 -f 743/1134/134 750/1126/99 742/1135/137 -f 746/1115/131 753/1136/11 745/1116/132 -f 743/1134/134 752/1133/35 751/1137/17 -f 740/1128/136 749/1131/24 748/1138/19 -f 762/1139/15 769/1140/119 761/1141/16 -f 760/1142/13 767/1143/120 759/1144/17 -f 758/1145/12 765/1146/44 757/1147/18 -f 756/1148/14 763/1149/121 755/1150/19 -f 755/1150/19 770/1151/122 762/1139/15 -f 761/1141/16 768/1152/123 760/1142/13 -f 759/1144/17 766/1153/124 758/1145/12 -f 757/1154/18 764/1155/125 756/1148/14 -f 763/1156/121 772/1157/139 771/1158/126 -f 763/1156/121 777/1159/127 770/1151/122 -f 768/1152/123 776/1160/45 775/1161/140 -f 767/1162/120 773/1163/130 766/1164/124 -f 769/1140/119 777/1159/127 776/1160/45 -f 768/1152/123 774/1165/129 767/1162/120 -f 777/1159/127 783/1166/132 776/1160/45 -f 775/1161/140 781/1167/134 774/1165/129 -f 772/1157/139 778/1168/136 771/1158/126 -f 771/1158/126 784/1169/131 777/1159/127 -f 776/1160/45 782/1170/133 775/1161/140 -f 773/1163/130 781/1167/134 780/1171/137 -f 764/1172/125 765/1173/44 772/1157/139 -f 772/1157/139 765/1173/44 779/1174/138 -f 766/1164/124 773/1163/130 765/1175/44 -f 773/1163/130 780/1171/137 765/1175/44 -f 780/1176/137 785/1177/10 765/1178/44 -f 784/1169/131 786/1179/19 792/1180/107 -f 779/1181/138 785/1182/10 787/1183/24 -f 782/1170/133 791/1184/11 790/1185/35 -f 780/1176/137 789/1186/17 788/1187/99 -f 783/1166/132 792/1180/107 791/1184/11 -f 782/1170/133 789/1186/17 781/1188/134 -f 779/1181/138 786/1179/19 778/1189/136 -f 808/1190/12 815/1191/141 807/1192/18 -f 806/1193/14 813/1194/142 805/1195/19 -f 804/1196/15 811/1197/46 803/1198/16 -f 802/1199/13 809/1200/143 801/1201/17 -f 801/1201/17 816/1202/144 808/1190/12 -f 807/1192/18 814/1203/145 806/1193/14 -f 805/1195/19 812/1204/146 804/1196/15 -f 803/1205/16 810/1206/147 802/1199/13 -f 810/1207/147 817/1208/148 809/1209/143 -f 816/1202/144 817/1208/148 823/1210/149 -f 814/1203/145 822/1211/47 821/1212/150 -f 812/1213/146 820/1214/151 819/1215/152 -f 815/1191/141 823/1210/149 822/1211/47 -f 814/1203/145 820/1214/151 813/1216/142 -f 823/1210/149 829/1217/153 822/1211/47 -f 820/1214/151 828/1218/154 827/1219/155 -f 817/1208/148 825/1220/156 824/1221/157 -f 817/1208/148 830/1222/158 823/1210/149 -f 822/1211/47 828/1218/154 821/1212/150 -f 820/1214/151 826/1223/159 819/1215/152 -f 810/1207/147 811/1224/46 818/1225/160 -f 818/1225/160 811/1224/46 825/1220/156 -f 812/1213/146 819/1215/152 811/1226/46 -f 819/1215/152 826/1223/159 811/1226/46 -f 811/1227/46 834/1228/24 831/1229/10 -f 824/1230/157 838/1231/35 830/1222/158 -f 811/1232/46 833/1233/99 825/1234/156 -f 828/1218/154 837/1235/11 836/1236/107 -f 827/1237/155 834/1228/24 826/1238/159 -f 829/1217/153 838/1231/35 837/1235/11 -f 828/1218/154 835/1239/19 827/1237/155 -f 824/1230/157 833/1233/99 832/1240/17 -f 846/1241/12 853/1242/141 845/1243/18 -f 844/1244/14 851/1245/142 843/1246/19 -f 842/1247/15 849/1248/46 841/1249/16 -f 840/1250/13 847/1251/143 839/1252/17 -f 839/1252/17 854/1253/144 846/1241/12 -f 845/1243/18 852/1254/145 844/1244/14 -f 843/1246/19 850/1255/146 842/1247/15 -f 841/1256/16 848/1257/147 840/1250/13 -f 847/1258/143 856/1259/161 855/1260/162 -f 847/1258/143 861/1261/149 854/1253/144 -f 853/1242/141 859/1262/150 852/1254/145 -f 851/1263/142 857/1264/152 850/1265/146 -f 853/1242/141 861/1261/149 860/1266/47 -f 852/1254/145 858/1267/151 851/1263/142 -f 861/1261/149 867/1268/153 860/1266/47 -f 859/1262/150 865/1269/155 858/1267/151 -f 856/1259/161 862/1270/157 855/1260/162 -f 855/1260/162 868/1271/158 861/1261/149 -f 860/1266/47 866/1272/154 859/1262/150 -f 857/1264/152 865/1269/155 864/1273/159 -f 848/1274/147 849/1275/46 856/1259/161 -f 856/1259/161 849/1275/46 863/1276/156 -f 850/1265/146 857/1264/152 849/1277/46 -f 857/1264/152 864/1273/159 849/1277/46 -f 864/1278/159 869/1279/10 849/1280/46 -f 868/1271/158 870/1281/17 876/1282/35 -f 863/1283/156 869/1284/10 871/1285/99 -f 867/1268/153 874/1286/107 866/1272/154 -f 864/1278/159 873/1287/19 872/1288/24 -f 868/1271/158 875/1289/11 867/1268/153 -f 866/1272/154 873/1287/19 865/1290/155 -f 863/1283/156 870/1281/17 862/1291/157 -f 224/584/13 232/596/26 231/585/22 -f 222/587/12 230/597/27 229/588/23 -f 220/590/14 228/598/28 227/591/24 -f 218/593/15 226/600/29 225/594/25 -f 217/595/16 225/594/25 232/596/26 -f 223/586/17 231/585/22 230/597/27 -f 221/589/18 229/588/23 228/598/28 -f 219/599/19 227/1292/24 226/600/29 -f 226/601/29 234/614/39 233/602/30 -f 225/603/25 233/602/30 239/604/31 -f 231/585/22 238/609/35 237/605/32 -f 228/606/28 229/610/23 236/607/33 -f 231/585/22 232/596/26 239/604/31 -f 230/597/27 237/605/32 236/607/33 -f 239/604/31 246/616/41 245/611/36 -f 236/607/33 237/605/32 244/612/37 -f 234/614/39 241/619/43 240/615/40 -f 233/602/30 240/615/40 246/616/41 -f 238/609/35 245/611/36 244/612/37 -f 236/607/33 243/613/38 242/617/42 -f 227/621/24 242/631/42 250/622/44 -f 240/624/40 248/634/16 254/625/45 -f 227/626/24 247/1293/10 249/627/46 -f 245/611/36 253/632/11 252/629/47 -f 243/630/38 251/633/18 250/622/44 -f 246/616/41 254/625/45 253/632/11 -f 243/630/38 244/612/37 252/629/47 -f 240/624/40 241/628/43 249/627/46 -f 262/635/13 270/647/26 269/636/22 -f 260/638/12 268/648/27 267/639/23 -f 258/641/14 266/649/28 265/642/24 -f 256/644/15 264/651/29 263/645/25 -f 255/646/16 263/645/25 270/647/26 -f 261/637/17 269/636/22 268/648/27 -f 259/640/18 267/639/23 266/649/28 -f 257/650/19 265/1294/24 264/651/29 -f 263/652/25 264/668/29 272/653/39 -f 263/652/25 271/654/30 277/655/31 -f 269/636/22 276/660/35 275/656/32 -f 267/657/23 274/661/48 273/658/34 -f 269/636/22 270/647/26 277/655/31 -f 267/657/23 268/648/27 275/656/32 -f 277/655/31 284/665/41 283/662/36 -f 275/656/32 282/666/37 281/663/38 -f 272/653/39 279/670/43 278/664/40 -f 277/655/31 271/654/30 278/664/40 -f 276/660/35 283/662/36 282/666/37 -f 273/658/34 274/661/48 281/663/38 -f 280/672/42 288/683/44 285/673/10 -f 284/665/41 278/685/40 286/675/16 -f 279/677/43 265/1295/24 285/678/10 -f 282/666/37 283/662/36 291/680/11 -f 280/672/42 281/684/38 289/682/18 -f 284/665/41 292/676/45 291/680/11 -f 282/666/37 290/681/47 289/682/18 -f 279/677/43 287/679/46 286/675/16 -f 310/686/49 309/706/65 297/687/50 -f 305/689/52 316/708/66 304/690/53 -f 307/692/54 306/709/67 294/693/55 -f 314/695/57 313/710/68 301/696/58 -f 311/698/59 310/686/49 298/688/51 -f 308/700/60 307/692/54 295/694/56 -f 315/702/61 314/695/57 302/697/13 -f 312/704/63 311/698/59 299/699/12 -f 309/706/65 308/753/60 296/707/14 -f 316/708/66 315/702/61 303/703/62 -f 306/709/67 305/689/52 293/691/15 -f 313/710/68 312/704/63 300/705/64 -f 317/711/69 319/713/70 320/714/71 -f 320/714/71 319/716/70 322/718/73 -f 323/719/74 322/720/73 324/722/75 -f 324/724/75 326/727/78 327/725/77 -f 326/728/78 328/731/80 329/729/79 -f 328/732/80 330/735/82 331/733/81 -f 330/736/82 332/739/84 333/737/83 -f 332/740/84 334/743/86 335/741/85 -f 334/744/86 336/746/87 337/747/88 -f 327/725/77 329/729/79 312/704/63 -f 312/704/63 329/729/79 331/733/81 -f 311/698/59 331/733/81 333/737/83 -f 333/737/83 335/741/85 309/706/65 -f 336/748/87 338/750/89 339/751/90 -f 308/753/60 309/706/65 335/741/85 -f 308/700/60 337/752/88 339/751/90 -f 307/692/54 339/751/90 341/757/92 -f 305/689/52 306/709/67 341/757/92 -f 338/754/89 340/756/91 341/757/92 -f 305/689/52 318/715/72 320/714/71 -f 316/708/66 320/714/71 323/719/74 -f 323/719/74 325/723/76 314/695/57 -f 325/723/76 327/725/77 313/710/68 -f 341/757/92 340/758/91 317/760/69 -f 503/761/49 502/781/65 490/762/50 -f 498/764/52 509/783/66 497/765/53 -f 500/767/54 499/784/67 487/768/55 -f 507/770/57 506/785/68 494/771/58 -f 504/773/59 503/761/49 491/763/51 -f 501/775/60 500/767/54 488/769/56 -f 508/777/61 507/770/57 495/772/13 -f 505/779/63 504/773/59 492/774/12 -f 502/781/65 501/828/60 489/782/14 -f 509/783/66 508/777/61 496/778/62 -f 499/784/67 498/764/52 486/766/15 -f 506/785/68 505/779/63 493/780/64 -f 510/786/69 512/788/70 513/789/71 -f 512/791/70 515/793/73 516/794/74 -f 515/795/73 517/797/75 518/798/76 -f 517/799/75 519/802/78 520/800/77 -f 519/803/78 521/806/80 522/804/79 -f 521/807/80 523/810/82 524/808/81 -f 524/808/81 523/813/82 525/811/84 -f 525/815/84 527/818/93 528/816/85 -f 528/816/85 527/819/93 529/821/87 -f 506/785/68 520/800/77 522/804/79 -f 505/779/63 522/804/79 524/808/81 -f 504/773/59 524/808/81 526/812/83 -f 526/812/83 528/816/85 502/781/65 -f 529/823/87 531/825/89 532/826/90 -f 501/828/60 502/781/65 528/816/85 -f 501/775/60 530/827/88 532/826/90 -f 500/767/54 532/826/90 534/832/92 -f 498/764/52 499/784/67 534/832/92 -f 531/829/89 533/831/91 534/832/92 -f 498/764/52 511/790/72 513/789/71 -f 509/783/66 513/789/71 516/794/74 -f 516/794/74 518/798/76 507/770/57 -f 507/770/57 518/798/76 520/800/77 -f 533/833/91 510/835/69 511/790/72 -f 552/836/49 551/856/65 539/837/50 -f 547/839/52 558/858/66 546/840/53 -f 549/842/54 548/859/67 536/843/55 -f 556/845/57 555/860/68 543/846/58 -f 553/848/59 552/836/49 540/838/51 -f 550/850/60 549/842/54 537/844/56 -f 557/852/61 556/845/57 544/847/13 -f 554/854/63 553/848/59 541/849/12 -f 551/856/65 550/903/60 538/857/14 -f 558/858/66 557/852/61 545/853/62 -f 548/859/67 547/839/52 535/841/15 -f 555/860/68 554/854/63 542/855/64 -f 560/864/72 559/861/69 561/863/70 -f 561/866/70 564/868/94 565/869/74 -f 565/869/74 564/870/94 566/872/75 -f 566/874/75 568/877/78 569/875/77 -f 569/875/77 568/880/78 570/878/95 -f 571/879/79 570/884/95 572/882/82 -f 572/886/82 574/889/84 575/887/83 -f 574/890/84 576/893/93 577/891/85 -f 576/894/93 578/896/87 579/897/88 -f 569/875/77 571/879/79 554/854/63 -f 571/879/79 573/883/81 553/848/59 -f 573/883/81 575/887/83 552/836/49 -f 575/887/83 577/891/85 551/856/65 -f 578/898/87 580/900/96 581/901/90 -f 551/856/65 577/891/85 579/897/88 -f 550/850/60 579/902/88 581/901/90 -f 549/842/54 581/901/90 583/907/92 -f 547/839/52 548/859/67 583/907/92 -f 580/904/96 582/906/91 583/907/92 -f 547/839/52 560/864/72 562/865/71 -f 558/858/66 562/865/71 565/869/74 -f 565/869/74 567/873/76 556/845/57 -f 556/845/57 567/873/76 569/875/77 -f 582/908/91 559/910/69 560/864/72 -f 601/911/49 600/931/65 588/912/50 -f 596/914/52 607/933/66 595/915/53 -f 598/917/54 597/934/67 585/918/55 -f 605/920/57 604/935/68 592/921/58 -f 602/923/59 601/911/49 589/913/51 -f 599/925/60 598/917/54 586/919/56 -f 606/927/61 605/920/57 593/922/13 -f 603/929/63 602/923/59 590/924/12 -f 600/931/65 599/978/60 587/932/14 -f 607/933/66 606/927/61 594/928/62 -f 597/934/67 596/914/52 584/916/15 -f 604/935/68 603/929/63 591/930/64 -f 608/936/69 610/938/70 611/939/71 -f 610/941/70 613/943/94 614/944/74 -f 613/945/94 615/947/75 616/948/76 -f 616/948/76 615/951/75 617/949/78 -f 617/953/78 619/956/80 620/954/79 -f 620/954/79 619/959/80 621/957/82 -f 621/961/82 623/964/84 624/962/83 -f 624/962/83 623/967/84 625/965/93 -f 625/969/93 627/971/87 628/972/88 -f 618/950/77 620/954/79 603/929/63 -f 603/929/63 620/954/79 622/958/81 -f 602/923/59 622/958/81 624/962/83 -f 624/962/83 626/966/85 600/931/65 -f 627/973/87 629/975/96 630/976/90 -f 599/978/60 600/931/65 626/966/85 -f 599/925/60 628/977/88 630/976/90 -f 598/917/54 630/976/90 632/982/92 -f 597/934/67 632/982/92 609/940/72 -f 629/979/96 631/981/91 632/982/92 -f 596/914/52 609/940/72 611/939/71 -f 607/933/66 611/939/71 614/944/74 -f 614/944/74 616/948/76 605/920/57 -f 605/920/57 616/948/76 618/950/77 -f 631/983/91 608/985/69 609/940/72 -f 640/986/14 648/998/101 647/987/97 -f 638/989/15 646/999/102 645/990/98 -f 636/992/13 644/1000/103 643/993/99 -f 634/995/12 642/1002/104 641/996/100 -f 633/997/18 641/996/100 648/998/101 -f 639/988/19 647/987/97 646/999/102 -f 637/991/16 645/990/98 644/1000/103 -f 635/1001/17 643/1296/99 642/1002/104 -f 642/1003/104 650/1021/118 649/1004/105 -f 648/998/101 641/1005/100 649/1004/105 -f 646/999/102 647/987/97 654/1007/107 -f 645/1009/98 652/1012/110 651/1010/109 -f 648/998/101 655/1006/106 654/1007/107 -f 646/999/102 653/1008/108 652/1012/110 -f 655/1006/106 662/1018/116 661/1013/111 -f 652/1012/110 653/1008/108 660/1014/112 -f 649/1004/105 650/1021/118 657/1016/114 -f 649/1004/105 656/1017/115 662/1018/116 -f 654/1007/107 661/1013/111 660/1014/112 -f 652/1012/110 659/1015/113 658/1019/117 -f 643/1023/99 658/1033/117 666/1024/46 -f 656/1026/115 664/1036/18 670/1027/47 -f 643/1028/99 663/1297/10 665/1029/44 -f 661/1013/111 669/1034/11 668/1031/45 -f 659/1032/113 667/1035/16 666/1024/46 -f 661/1013/111 662/1018/116 670/1027/47 -f 659/1032/113 660/1014/112 668/1031/45 -f 656/1026/115 657/1030/114 665/1029/44 -f 678/1037/14 686/1049/101 685/1038/97 -f 676/1040/15 684/1050/102 683/1041/98 -f 674/1043/13 682/1051/103 681/1044/99 -f 672/1046/12 680/1053/104 679/1047/100 -f 671/1048/18 679/1047/100 686/1049/101 -f 677/1039/19 685/1038/97 684/1050/102 -f 675/1042/16 683/1041/98 682/1051/103 -f 673/1052/17 681/1298/99 680/1053/104 -f 679/1054/100 680/1070/104 688/1055/118 -f 679/1054/100 687/1056/105 693/1057/106 -f 685/1038/97 692/1062/107 691/1058/108 -f 683/1059/98 690/1063/110 689/1060/109 -f 685/1038/97 686/1049/101 693/1057/106 -f 684/1050/102 691/1058/108 690/1063/110 -f 693/1057/106 700/1067/116 699/1064/111 -f 691/1058/108 698/1068/112 697/1065/113 -f 688/1055/118 695/1072/114 694/1066/115 -f 693/1057/106 687/1056/105 694/1066/115 -f 692/1062/107 699/1064/111 698/1068/112 -f 689/1060/109 690/1063/110 697/1065/113 -f 696/1074/117 704/1084/46 701/1075/10 -f 700/1067/116 694/1087/115 702/1077/18 -f 695/1079/114 681/1299/99 701/1080/10 -f 699/1064/111 707/1085/11 706/1082/45 -f 697/1083/113 705/1086/16 704/1084/46 -f 700/1067/116 708/1078/47 707/1085/11 -f 698/1068/112 706/1082/45 705/1086/16 -f 695/1079/114 703/1081/44 702/1077/18 -f 724/1088/15 732/1100/122 731/1089/119 -f 722/1091/13 730/1101/123 729/1092/120 -f 720/1094/12 728/1102/124 727/1095/44 -f 718/1097/14 726/1104/125 725/1098/121 -f 717/1099/19 725/1098/121 732/1100/122 -f 723/1090/16 731/1089/119 730/1101/123 -f 721/1093/17 729/1092/120 728/1102/124 -f 719/1103/18 727/1300/44 726/1104/125 -f 726/1105/125 734/1119/135 733/1106/126 -f 732/1100/122 725/1107/121 733/1106/126 -f 730/1101/123 731/1089/119 738/1109/45 -f 728/1111/124 729/1114/120 736/1112/129 -f 731/1089/119 732/1100/122 739/1108/127 -f 730/1101/123 737/1110/128 736/1112/129 -f 738/1109/45 739/1108/127 746/1115/131 -f 736/1112/129 737/1110/128 744/1117/133 -f 734/1119/135 741/1123/138 740/1120/136 -f 733/1106/126 740/1120/136 746/1115/131 -f 738/1109/45 745/1116/132 744/1117/133 -f 736/1112/129 743/1118/134 742/1121/137 -f 727/1125/44 742/1135/137 750/1126/99 -f 740/1128/136 748/1138/19 754/1129/107 -f 727/1130/44 747/1301/10 749/1131/24 -f 745/1116/132 753/1136/11 752/1133/35 -f 743/1134/134 751/1137/17 750/1126/99 -f 746/1115/131 754/1129/107 753/1136/11 -f 743/1134/134 744/1117/133 752/1133/35 -f 740/1128/136 741/1132/138 749/1131/24 -f 762/1139/15 770/1151/122 769/1140/119 -f 760/1142/13 768/1152/123 767/1143/120 -f 758/1145/12 766/1153/124 765/1146/44 -f 756/1148/14 764/1155/125 763/1149/121 -f 755/1150/19 763/1149/121 770/1151/122 -f 761/1141/16 769/1140/119 768/1152/123 -f 759/1144/17 767/1143/120 766/1153/124 -f 757/1154/18 765/1302/44 764/1155/125 -f 763/1156/121 764/1172/125 772/1157/139 -f 763/1156/121 771/1158/126 777/1159/127 -f 768/1152/123 769/1140/119 776/1160/45 -f 767/1162/120 774/1165/129 773/1163/130 -f 769/1140/119 770/1151/122 777/1159/127 -f 768/1152/123 775/1161/140 774/1165/129 -f 777/1159/127 784/1169/131 783/1166/132 -f 775/1161/140 782/1170/133 781/1167/134 -f 772/1157/139 779/1174/138 778/1168/136 -f 771/1158/126 778/1168/136 784/1169/131 -f 776/1160/45 783/1166/132 782/1170/133 -f 773/1163/130 774/1165/129 781/1167/134 -f 780/1176/137 788/1187/99 785/1177/10 -f 784/1169/131 778/1189/136 786/1179/19 -f 779/1181/138 765/1303/44 785/1182/10 -f 782/1170/133 783/1166/132 791/1184/11 -f 780/1176/137 781/1188/134 789/1186/17 -f 783/1166/132 784/1169/131 792/1180/107 -f 782/1170/133 790/1185/35 789/1186/17 -f 779/1181/138 787/1183/24 786/1179/19 -f 808/1190/12 816/1202/144 815/1191/141 -f 806/1193/14 814/1203/145 813/1194/142 -f 804/1196/15 812/1204/146 811/1197/46 -f 802/1199/13 810/1206/147 809/1200/143 -f 801/1201/17 809/1200/143 816/1202/144 -f 807/1192/18 815/1191/141 814/1203/145 -f 805/1195/19 813/1194/142 812/1204/146 -f 803/1205/16 811/1304/46 810/1206/147 -f 810/1207/147 818/1225/160 817/1208/148 -f 816/1202/144 809/1209/143 817/1208/148 -f 814/1203/145 815/1191/141 822/1211/47 -f 812/1213/146 813/1216/142 820/1214/151 -f 815/1191/141 816/1202/144 823/1210/149 -f 814/1203/145 821/1212/150 820/1214/151 -f 823/1210/149 830/1222/158 829/1217/153 -f 820/1214/151 821/1212/150 828/1218/154 -f 817/1208/148 818/1225/160 825/1220/156 -f 817/1208/148 824/1221/157 830/1222/158 -f 822/1211/47 829/1217/153 828/1218/154 -f 820/1214/151 827/1219/155 826/1223/159 -f 811/1227/46 826/1238/159 834/1228/24 -f 824/1230/157 832/1240/17 838/1231/35 -f 811/1232/46 831/1305/10 833/1233/99 -f 828/1218/154 829/1217/153 837/1235/11 -f 827/1237/155 835/1239/19 834/1228/24 -f 829/1217/153 830/1222/158 838/1231/35 -f 828/1218/154 836/1236/107 835/1239/19 -f 824/1230/157 825/1234/156 833/1233/99 -f 846/1241/12 854/1253/144 853/1242/141 -f 844/1244/14 852/1254/145 851/1245/142 -f 842/1247/15 850/1255/146 849/1248/46 -f 840/1250/13 848/1257/147 847/1251/143 -f 839/1252/17 847/1251/143 854/1253/144 -f 845/1243/18 853/1242/141 852/1254/145 -f 843/1246/19 851/1245/142 850/1255/146 -f 841/1256/16 849/1306/46 848/1257/147 -f 847/1258/143 848/1274/147 856/1259/161 -f 847/1258/143 855/1260/162 861/1261/149 -f 853/1242/141 860/1266/47 859/1262/150 -f 851/1263/142 858/1267/151 857/1264/152 -f 853/1242/141 854/1253/144 861/1261/149 -f 852/1254/145 859/1262/150 858/1267/151 -f 861/1261/149 868/1271/158 867/1268/153 -f 859/1262/150 866/1272/154 865/1269/155 -f 856/1259/161 863/1276/156 862/1270/157 -f 855/1260/162 862/1270/157 868/1271/158 -f 860/1266/47 867/1268/153 866/1272/154 -f 857/1264/152 858/1267/151 865/1269/155 -f 864/1278/159 872/1288/24 869/1279/10 -f 868/1271/158 862/1291/157 870/1281/17 -f 863/1283/156 849/1307/46 869/1284/10 -f 867/1268/153 875/1289/11 874/1286/107 -f 864/1278/159 865/1290/155 873/1287/19 -f 868/1271/158 876/1282/35 875/1289/11 -f 866/1272/154 874/1286/107 873/1287/19 -f 863/1283/156 871/1285/99 870/1281/17 +f 240/601/17 247/602/26 239/603/21 +f 238/604/16 245/605/27 237/606/22 +f 236/607/18 243/608/28 235/609/23 +f 234/610/19 241/611/29 233/612/20 +f 233/612/20 248/613/30 240/601/17 +f 239/603/21 246/614/31 238/604/16 +f 237/606/22 244/615/32 236/607/18 +f 235/616/23 242/617/33 234/610/19 +f 242/618/33 249/619/34 241/620/29 +f 241/620/29 255/621/35 248/613/30 +f 247/602/26 253/622/36 246/614/31 +f 244/623/32 252/624/37 251/625/38 +f 247/602/26 255/621/35 254/626/39 +f 246/614/31 252/624/37 245/627/27 +f 255/621/35 261/628/40 254/626/39 +f 252/624/37 260/629/41 259/630/42 +f 250/631/43 256/632/44 249/619/34 +f 249/619/34 262/633/45 255/621/35 +f 254/626/39 260/629/41 253/622/36 +f 252/624/37 258/634/46 251/625/38 +f 242/618/33 243/635/28 250/631/43 +f 250/631/43 243/635/28 257/636/47 +f 244/623/32 251/625/38 243/637/28 +f 251/625/38 258/634/46 243/637/28 +f 243/638/28 266/639/48 263/640/14 +f 256/641/44 270/642/49 262/633/45 +f 243/643/28 265/644/50 257/645/47 +f 261/628/40 268/646/51 260/629/41 +f 259/647/42 266/639/48 258/648/46 +f 262/633/45 269/649/15 261/628/40 +f 259/647/42 268/646/51 267/650/22 +f 256/641/44 265/644/50 264/651/20 +f 278/652/17 285/653/26 277/654/21 +f 276/655/16 283/656/27 275/657/22 +f 274/658/18 281/659/28 273/660/23 +f 272/661/19 279/662/29 271/663/20 +f 271/663/20 286/664/30 278/652/17 +f 277/654/21 284/665/31 276/655/16 +f 275/657/22 282/666/32 274/658/18 +f 273/667/23 280/668/33 272/661/19 +f 279/669/29 288/670/43 287/671/34 +f 279/669/29 293/672/35 286/664/30 +f 285/653/26 291/673/36 284/665/31 +f 283/674/27 289/675/38 282/676/32 +f 285/653/26 293/672/35 292/677/39 +f 283/674/27 291/673/36 290/678/52 +f 293/672/35 299/679/40 292/677/39 +f 291/673/36 297/680/42 290/678/52 +f 288/670/43 294/681/44 287/671/34 +f 293/672/35 294/681/44 300/682/45 +f 292/677/39 298/683/41 291/673/36 +f 289/675/38 297/680/42 296/684/46 +f 280/685/33 281/686/28 288/670/43 +f 288/670/43 281/686/28 295/687/47 +f 282/676/32 289/675/38 281/688/28 +f 289/675/38 296/684/46 281/688/28 +f 296/689/46 301/690/14 281/691/28 +f 300/682/45 302/692/20 308/693/49 +f 295/694/47 301/695/14 303/696/50 +f 298/683/41 307/697/15 306/698/51 +f 296/689/46 305/699/22 304/700/48 +f 300/682/45 307/697/15 299/679/40 +f 298/683/41 305/699/22 297/701/42 +f 295/694/47 302/692/20 294/702/44 +f 326/703/53 313/704/54 314/705/55 +f 321/706/56 320/707/57 309/708/19 +f 323/709/58 310/710/59 311/711/60 +f 330/712/61 317/713/62 318/714/17 +f 327/715/63 314/705/55 315/716/16 +f 324/717/64 311/711/60 312/718/18 +f 331/719/65 318/714/17 319/720/66 +f 328/721/67 315/716/16 316/722/68 +f 325/723/69 312/724/18 313/704/54 +f 332/725/70 319/720/66 320/707/57 +f 322/726/71 309/708/19 310/710/59 +f 329/727/72 316/722/68 317/713/62 +f 333/728/73 337/729/15 335/730/74 +f 333/728/73 336/731/75 334/732/76 +f 335/733/74 337/734/15 338/735/77 +f 336/731/75 338/735/77 339/736/78 +f 338/737/77 337/738/15 340/739/79 +f 339/736/78 340/739/79 341/740/80 +f 340/741/79 343/742/81 341/740/80 +f 340/741/79 337/743/15 342/744/82 +f 342/745/82 345/746/83 343/742/81 +f 342/745/82 337/747/15 344/748/84 +f 344/749/84 347/750/85 345/746/83 +f 344/749/84 337/751/15 346/752/86 +f 346/753/86 349/754/87 347/750/85 +f 346/753/86 337/755/15 348/756/88 +f 348/757/88 351/758/89 349/754/87 +f 348/757/88 337/759/15 350/760/90 +f 350/761/90 337/762/15 352/763/91 +f 350/761/90 353/764/92 351/758/89 +f 343/742/81 328/721/67 329/727/72 +f 328/721/67 347/750/85 327/715/63 +f 352/765/91 337/766/15 354/767/93 +f 327/715/63 349/754/87 326/703/53 +f 349/754/87 325/723/69 326/703/53 +f 352/765/91 355/768/94 353/769/92 +f 324/770/64 351/758/89 353/764/92 +f 324/717/64 355/768/94 323/709/58 +f 354/771/93 337/772/15 356/773/95 +f 323/709/58 357/774/96 322/726/71 +f 321/706/56 357/774/96 334/732/76 +f 354/771/93 357/774/96 355/768/94 +f 321/706/56 336/731/75 332/725/70 +f 332/725/70 339/736/78 331/719/65 +f 356/775/95 337/776/15 333/777/73 +f 339/736/78 330/712/61 331/719/65 +f 341/740/80 329/727/72 330/712/61 +f 357/774/96 333/777/73 334/732/76 +f 519/778/53 506/779/54 507/780/55 +f 514/781/56 513/782/57 502/783/19 +f 516/784/58 503/785/59 504/786/60 +f 523/787/61 510/788/62 511/789/17 +f 520/790/63 507/780/55 508/791/16 +f 517/792/64 504/786/60 505/793/18 +f 524/794/65 511/789/17 512/795/66 +f 521/796/67 508/791/16 509/797/68 +f 518/798/69 505/799/18 506/779/54 +f 525/800/70 512/795/66 513/782/57 +f 515/801/71 502/783/19 503/785/59 +f 522/802/72 509/797/68 510/788/62 +f 526/803/73 530/804/15 528/805/74 +f 526/803/73 529/806/75 527/807/76 +f 528/808/74 530/809/15 531/810/77 +f 528/808/74 532/811/78 529/806/75 +f 531/812/77 530/813/15 533/814/79 +f 531/812/77 534/815/80 532/811/78 +f 533/816/79 536/817/81 534/815/80 +f 533/816/79 530/818/15 535/819/82 +f 535/820/82 538/821/83 536/817/81 +f 535/820/82 530/822/15 537/823/84 +f 537/824/84 540/825/85 538/821/83 +f 537/824/84 530/826/15 539/827/86 +f 540/825/85 541/828/88 542/829/87 +f 539/830/86 530/831/15 541/828/88 +f 541/832/88 544/833/89 542/829/87 +f 541/832/88 530/834/15 543/835/97 +f 543/836/97 530/837/15 545/838/91 +f 544/833/89 545/838/91 546/839/92 +f 522/802/72 538/821/83 521/796/67 +f 521/796/67 540/825/85 520/790/63 +f 545/840/91 530/841/15 547/842/93 +f 520/790/63 542/829/87 519/778/53 +f 542/829/87 518/798/69 519/778/53 +f 545/840/91 548/843/94 546/844/92 +f 517/845/64 544/833/89 546/839/92 +f 517/792/64 548/843/94 516/784/58 +f 547/846/93 530/847/15 549/848/95 +f 516/784/58 550/849/96 515/801/71 +f 514/781/56 550/849/96 527/807/76 +f 547/846/93 550/849/96 548/843/94 +f 514/781/56 529/806/75 525/800/70 +f 525/800/70 532/811/78 524/794/65 +f 549/850/95 530/851/15 526/852/73 +f 532/811/78 523/787/61 524/794/65 +f 523/787/61 536/817/81 522/802/72 +f 549/850/95 527/807/76 550/849/96 +f 568/853/53 555/854/54 556/855/55 +f 563/856/56 562/857/57 551/858/19 +f 565/859/58 552/860/59 553/861/60 +f 572/862/61 559/863/62 560/864/17 +f 569/865/63 556/855/55 557/866/16 +f 566/867/64 553/861/60 554/868/18 +f 573/869/65 560/864/17 561/870/66 +f 570/871/67 557/866/16 558/872/68 +f 567/873/69 554/874/18 555/854/54 +f 574/875/70 561/870/66 562/857/57 +f 564/876/71 551/858/19 552/860/59 +f 571/877/72 558/872/68 559/863/62 +f 575/878/73 579/879/15 577/880/74 +f 576/881/76 577/880/74 578/882/75 +f 577/883/74 579/884/15 580/885/98 +f 577/883/74 581/886/78 578/882/75 +f 580/887/98 579/888/15 582/889/79 +f 581/886/78 582/889/79 583/890/80 +f 582/891/79 585/892/81 583/890/80 +f 582/891/79 579/893/15 584/894/82 +f 585/892/81 586/895/99 587/896/83 +f 584/897/82 579/898/15 586/895/99 +f 587/896/83 588/899/86 589/900/85 +f 586/901/99 579/902/15 588/899/86 +f 588/903/86 591/904/87 589/900/85 +f 588/903/86 579/905/15 590/906/88 +f 590/907/88 593/908/89 591/904/87 +f 590/907/88 579/909/15 592/910/97 +f 592/911/97 579/912/15 594/913/91 +f 592/911/97 595/914/92 593/908/89 +f 585/892/81 570/871/67 571/877/72 +f 587/896/83 569/865/63 570/871/67 +f 594/915/91 579/916/15 596/917/100 +f 589/900/85 568/853/53 569/865/63 +f 591/904/87 567/873/69 568/853/53 +f 594/915/91 597/918/94 595/919/92 +f 567/873/69 595/914/92 566/920/64 +f 566/867/64 597/918/94 565/859/58 +f 596/921/100 579/922/15 598/923/95 +f 565/859/58 599/924/96 564/876/71 +f 563/856/56 599/924/96 576/881/76 +f 596/921/100 599/924/96 597/918/94 +f 563/856/56 578/882/75 574/875/70 +f 574/875/70 581/886/78 573/869/65 +f 598/925/95 579/926/15 575/927/73 +f 581/886/78 572/862/61 573/869/65 +f 572/862/61 585/892/81 571/877/72 +f 598/925/95 576/881/76 599/924/96 +f 617/928/53 604/929/54 605/930/55 +f 612/931/56 611/932/57 600/933/19 +f 614/934/58 601/935/59 602/936/60 +f 621/937/61 608/938/62 609/939/17 +f 618/940/63 605/930/55 606/941/16 +f 615/942/64 602/936/60 603/943/18 +f 622/944/65 609/939/17 610/945/66 +f 619/946/67 606/941/16 607/947/68 +f 616/948/69 603/949/18 604/929/54 +f 623/950/70 610/945/66 611/932/57 +f 613/951/71 600/933/19 601/935/59 +f 620/952/72 607/947/68 608/938/62 +f 624/953/73 628/954/15 626/955/74 +f 624/953/73 627/956/75 625/957/76 +f 626/958/74 628/959/15 629/960/98 +f 626/958/74 630/961/78 627/956/75 +f 629/962/98 628/963/15 631/964/79 +f 629/962/98 632/965/80 630/961/78 +f 632/965/80 633/966/82 634/967/81 +f 631/968/79 628/969/15 633/966/82 +f 633/970/82 636/971/83 634/967/81 +f 633/970/82 628/972/15 635/973/84 +f 636/971/83 637/974/86 638/975/85 +f 635/976/84 628/977/15 637/974/86 +f 637/978/86 640/979/87 638/975/85 +f 637/978/86 628/980/15 639/981/88 +f 640/979/87 641/982/97 642/983/89 +f 639/984/88 628/985/15 641/982/97 +f 641/986/97 628/987/15 643/988/91 +f 641/986/97 644/989/92 642/983/89 +f 634/967/81 619/946/67 620/952/72 +f 619/946/67 638/975/85 618/940/63 +f 643/990/91 628/991/15 645/992/100 +f 618/940/63 640/979/87 617/928/53 +f 640/979/87 616/948/69 617/928/53 +f 643/990/91 646/993/94 644/994/92 +f 615/995/64 642/983/89 644/989/92 +f 615/942/64 646/993/94 614/934/58 +f 645/996/100 628/997/15 647/998/95 +f 614/934/58 648/999/96 613/951/71 +f 613/951/71 625/957/76 612/931/56 +f 645/996/100 648/999/96 646/993/94 +f 612/931/56 627/956/75 623/950/70 +f 623/950/70 630/961/78 622/944/65 +f 647/1000/95 628/1001/15 624/1002/73 +f 630/961/78 621/937/61 622/944/65 +f 621/937/61 634/967/81 620/952/72 +f 647/1000/95 625/957/76 648/999/96 +f 656/1003/18 663/1004/101 655/1005/23 +f 654/1006/19 661/1007/102 653/1008/20 +f 652/1009/17 659/1010/103 651/1011/21 +f 650/1012/16 657/1013/104 649/1014/22 +f 649/1014/22 664/1015/105 656/1003/18 +f 655/1005/23 662/1016/106 654/1006/19 +f 653/1008/20 660/1017/107 652/1009/17 +f 651/1018/21 658/1019/108 650/1012/16 +f 658/1020/108 665/1021/109 657/1022/104 +f 664/1015/105 665/1021/109 671/1023/110 +f 662/1016/106 670/1024/111 669/1025/112 +f 661/1026/102 667/1027/113 660/1028/107 +f 664/1015/105 670/1024/111 663/1004/101 +f 662/1016/106 668/1029/114 661/1026/102 +f 671/1023/110 677/1030/115 670/1024/111 +f 668/1029/114 676/1031/116 675/1032/117 +f 665/1021/109 673/1033/118 672/1034/119 +f 665/1021/109 678/1035/120 671/1023/110 +f 670/1024/111 676/1031/116 669/1025/112 +f 668/1029/114 674/1036/121 667/1027/113 +f 658/1020/108 659/1037/103 666/1038/122 +f 666/1038/122 659/1037/103 673/1033/118 +f 660/1028/107 667/1027/113 659/1039/103 +f 667/1027/113 674/1036/121 659/1039/103 +f 659/1040/103 682/1041/50 679/1042/14 +f 672/1043/119 686/1044/51 678/1035/120 +f 659/1045/103 681/1046/48 673/1047/118 +f 677/1030/115 684/1048/49 676/1031/116 +f 675/1049/117 682/1041/50 674/1050/121 +f 677/1030/115 686/1044/51 685/1051/15 +f 675/1049/117 684/1048/49 683/1052/20 +f 672/1043/119 681/1046/48 680/1053/22 +f 694/1054/18 701/1055/101 693/1056/23 +f 692/1057/19 699/1058/102 691/1059/20 +f 690/1060/17 697/1061/103 689/1062/21 +f 688/1063/16 695/1064/104 687/1065/22 +f 687/1065/22 702/1066/105 694/1054/18 +f 693/1056/23 700/1067/106 692/1057/19 +f 691/1059/20 698/1068/107 690/1060/17 +f 689/1069/21 696/1070/108 688/1063/16 +f 695/1071/104 704/1072/122 703/1073/109 +f 695/1071/104 709/1074/110 702/1066/105 +f 701/1055/101 707/1075/112 700/1067/106 +f 699/1076/102 705/1077/113 698/1078/107 +f 701/1055/101 709/1074/110 708/1079/111 +f 700/1067/106 706/1080/114 699/1076/102 +f 709/1074/110 715/1081/115 708/1079/111 +f 707/1075/112 713/1082/117 706/1080/114 +f 704/1072/122 710/1083/119 703/1073/109 +f 709/1074/110 710/1083/119 716/1084/120 +f 708/1079/111 714/1085/116 707/1075/112 +f 705/1077/113 713/1082/117 712/1086/121 +f 696/1087/108 697/1088/103 704/1072/122 +f 704/1072/122 697/1088/103 711/1089/118 +f 698/1078/107 705/1077/113 697/1090/103 +f 705/1077/113 712/1086/121 697/1090/103 +f 712/1091/121 717/1092/14 697/1093/103 +f 716/1084/120 718/1094/22 724/1095/51 +f 711/1096/118 717/1097/14 719/1098/48 +f 715/1081/115 722/1099/49 714/1085/116 +f 713/1100/117 720/1101/50 712/1091/121 +f 716/1084/120 723/1102/15 715/1081/115 +f 714/1085/116 721/1103/20 713/1100/117 +f 711/1096/118 718/1094/22 710/1104/119 +f 740/1105/19 747/1106/123 739/1107/20 +f 738/1108/17 745/1109/124 737/1110/21 +f 736/1111/16 743/1112/48 735/1113/22 +f 734/1114/18 741/1115/125 733/1116/23 +f 733/1116/23 748/1117/126 740/1105/19 +f 739/1107/20 746/1118/127 738/1108/17 +f 737/1110/21 744/1119/128 736/1111/16 +f 735/1120/22 742/1121/129 734/1114/18 +f 742/1122/129 749/1123/130 741/1124/125 +f 748/1117/126 749/1123/130 755/1125/131 +f 746/1118/127 754/1126/49 753/1127/132 +f 744/1128/128 752/1129/133 751/1130/134 +f 747/1106/123 755/1125/131 754/1126/49 +f 746/1118/127 752/1129/133 745/1131/124 +f 754/1126/49 762/1132/135 761/1133/136 +f 752/1129/133 760/1134/137 759/1135/138 +f 750/1136/139 756/1137/140 749/1123/130 +f 749/1123/130 762/1132/135 755/1125/131 +f 754/1126/49 760/1134/137 753/1127/132 +f 752/1129/133 758/1138/141 751/1130/134 +f 742/1122/129 743/1139/48 750/1136/139 +f 750/1136/139 743/1139/48 757/1140/142 +f 744/1128/128 751/1130/134 743/1141/48 +f 751/1130/134 758/1138/141 743/1141/48 +f 743/1142/48 766/1143/103 763/1144/14 +f 756/1145/140 770/1146/111 762/1132/135 +f 743/1147/48 765/1148/28 757/1149/142 +f 761/1133/136 768/1150/39 760/1134/137 +f 759/1151/138 766/1143/103 758/1152/141 +f 762/1132/135 769/1153/15 761/1133/136 +f 759/1151/138 768/1150/39 767/1154/21 +f 756/1145/140 765/1148/28 764/1155/23 +f 778/1156/19 785/1157/123 777/1158/20 +f 776/1159/17 783/1160/124 775/1161/21 +f 774/1162/16 781/1163/48 773/1164/22 +f 772/1165/18 779/1166/125 771/1167/23 +f 771/1167/23 786/1168/126 778/1156/19 +f 777/1158/20 784/1169/127 776/1159/17 +f 775/1161/21 782/1170/128 774/1162/16 +f 773/1171/22 780/1172/129 772/1165/18 +f 779/1173/125 788/1174/143 787/1175/130 +f 779/1173/125 793/1176/131 786/1168/126 +f 784/1169/127 792/1177/49 791/1178/144 +f 783/1179/124 789/1180/134 782/1181/128 +f 785/1157/123 793/1176/131 792/1177/49 +f 784/1169/127 790/1182/133 783/1179/124 +f 793/1176/131 799/1183/136 792/1177/49 +f 791/1178/144 797/1184/138 790/1182/133 +f 788/1174/143 794/1185/140 787/1175/130 +f 787/1175/130 800/1186/135 793/1176/131 +f 792/1177/49 798/1187/137 791/1178/144 +f 789/1180/134 797/1184/138 796/1188/141 +f 780/1189/129 781/1190/48 788/1174/143 +f 788/1174/143 781/1190/48 795/1191/142 +f 782/1181/128 789/1180/134 781/1192/48 +f 789/1180/134 796/1188/141 781/1192/48 +f 796/1193/141 801/1194/14 781/1195/48 +f 800/1186/135 802/1196/23 808/1197/111 +f 795/1198/142 801/1199/14 803/1200/28 +f 798/1187/137 807/1201/15 806/1202/39 +f 796/1193/141 805/1203/21 804/1204/103 +f 799/1183/136 808/1197/111 807/1201/15 +f 798/1187/137 805/1203/21 797/1205/138 +f 795/1198/142 802/1196/23 794/1206/140 +f 824/1207/16 831/1208/145 823/1209/22 +f 822/1210/18 829/1211/146 821/1212/23 +f 820/1213/19 827/1214/50 819/1215/20 +f 818/1216/17 825/1217/147 817/1218/21 +f 817/1218/21 832/1219/148 824/1207/16 +f 823/1209/22 830/1220/149 822/1210/18 +f 821/1212/23 828/1221/150 820/1213/19 +f 819/1222/20 826/1223/151 818/1216/17 +f 826/1224/151 833/1225/152 825/1226/147 +f 832/1219/148 833/1225/152 839/1227/153 +f 830/1220/149 838/1228/51 837/1229/154 +f 828/1230/150 836/1231/155 835/1232/156 +f 831/1208/145 839/1227/153 838/1228/51 +f 830/1220/149 836/1231/155 829/1233/146 +f 839/1227/153 845/1234/157 838/1228/51 +f 836/1231/155 844/1235/158 843/1236/159 +f 833/1225/152 841/1237/160 840/1238/161 +f 833/1225/152 846/1239/162 839/1227/153 +f 838/1228/51 844/1235/158 837/1229/154 +f 836/1231/155 842/1240/163 835/1232/156 +f 826/1224/151 827/1241/50 834/1242/164 +f 834/1242/164 827/1241/50 841/1237/160 +f 828/1230/150 835/1232/156 827/1243/50 +f 835/1232/156 842/1240/163 827/1243/50 +f 827/1244/50 850/1245/28 847/1246/14 +f 840/1247/161 854/1248/39 846/1239/162 +f 827/1249/50 849/1250/103 841/1251/160 +f 844/1235/158 853/1252/15 852/1253/111 +f 843/1254/159 850/1245/28 842/1255/163 +f 845/1234/157 854/1248/39 853/1252/15 +f 844/1235/158 851/1256/23 843/1254/159 +f 840/1247/161 849/1250/103 848/1257/21 +f 862/1258/16 869/1259/145 861/1260/22 +f 860/1261/18 867/1262/146 859/1263/23 +f 858/1264/19 865/1265/50 857/1266/20 +f 856/1267/17 863/1268/147 855/1269/21 +f 855/1269/21 870/1270/148 862/1258/16 +f 861/1260/22 868/1271/149 860/1261/18 +f 859/1263/23 866/1272/150 858/1264/19 +f 857/1273/20 864/1274/151 856/1267/17 +f 863/1275/147 872/1276/165 871/1277/166 +f 863/1275/147 877/1278/153 870/1270/148 +f 869/1259/145 875/1279/154 868/1271/149 +f 867/1280/146 873/1281/156 866/1282/150 +f 869/1259/145 877/1278/153 876/1283/51 +f 868/1271/149 874/1284/155 867/1280/146 +f 877/1278/153 883/1285/157 876/1283/51 +f 875/1279/154 881/1286/159 874/1284/155 +f 872/1276/165 878/1287/161 871/1277/166 +f 871/1277/166 884/1288/162 877/1278/153 +f 876/1283/51 882/1289/158 875/1279/154 +f 873/1281/156 881/1286/159 880/1290/163 +f 864/1291/151 865/1292/50 872/1276/165 +f 872/1276/165 865/1292/50 879/1293/160 +f 866/1282/150 873/1281/156 865/1294/50 +f 873/1281/156 880/1290/163 865/1294/50 +f 880/1295/163 885/1296/14 865/1297/50 +f 884/1288/162 886/1298/21 892/1299/39 +f 879/1300/160 885/1301/14 887/1302/103 +f 883/1285/157 890/1303/111 882/1289/158 +f 880/1295/163 889/1304/23 888/1305/28 +f 884/1288/162 891/1306/15 883/1285/157 +f 882/1289/158 889/1304/23 881/1307/159 +f 879/1300/160 886/1298/21 878/1308/161 +f 240/601/17 248/613/30 247/602/26 +f 238/604/16 246/614/31 245/605/27 +f 236/607/18 244/615/32 243/608/28 +f 234/610/19 242/617/33 241/611/29 +f 233/612/20 241/611/29 248/613/30 +f 239/603/21 247/602/26 246/614/31 +f 237/606/22 245/605/27 244/615/32 +f 235/616/23 243/1309/28 242/617/33 +f 242/618/33 250/631/43 249/619/34 +f 241/620/29 249/619/34 255/621/35 +f 247/602/26 254/626/39 253/622/36 +f 244/623/32 245/627/27 252/624/37 +f 247/602/26 248/613/30 255/621/35 +f 246/614/31 253/622/36 252/624/37 +f 255/621/35 262/633/45 261/628/40 +f 252/624/37 253/622/36 260/629/41 +f 250/631/43 257/636/47 256/632/44 +f 249/619/34 256/632/44 262/633/45 +f 254/626/39 261/628/40 260/629/41 +f 252/624/37 259/630/42 258/634/46 +f 243/638/28 258/648/46 266/639/48 +f 256/641/44 264/651/20 270/642/49 +f 243/643/28 263/1310/14 265/644/50 +f 261/628/40 269/649/15 268/646/51 +f 259/647/42 267/650/22 266/639/48 +f 262/633/45 270/642/49 269/649/15 +f 259/647/42 260/629/41 268/646/51 +f 256/641/44 257/645/47 265/644/50 +f 278/652/17 286/664/30 285/653/26 +f 276/655/16 284/665/31 283/656/27 +f 274/658/18 282/666/32 281/659/28 +f 272/661/19 280/668/33 279/662/29 +f 271/663/20 279/662/29 286/664/30 +f 277/654/21 285/653/26 284/665/31 +f 275/657/22 283/656/27 282/666/32 +f 273/667/23 281/1311/28 280/668/33 +f 279/669/29 280/685/33 288/670/43 +f 279/669/29 287/671/34 293/672/35 +f 285/653/26 292/677/39 291/673/36 +f 283/674/27 290/678/52 289/675/38 +f 285/653/26 286/664/30 293/672/35 +f 283/674/27 284/665/31 291/673/36 +f 293/672/35 300/682/45 299/679/40 +f 291/673/36 298/683/41 297/680/42 +f 288/670/43 295/687/47 294/681/44 +f 293/672/35 287/671/34 294/681/44 +f 292/677/39 299/679/40 298/683/41 +f 289/675/38 290/678/52 297/680/42 +f 296/689/46 304/700/48 301/690/14 +f 300/682/45 294/702/44 302/692/20 +f 295/694/47 281/1312/28 301/695/14 +f 298/683/41 299/679/40 307/697/15 +f 296/689/46 297/701/42 305/699/22 +f 300/682/45 308/693/49 307/697/15 +f 298/683/41 306/698/51 305/699/22 +f 295/694/47 303/696/50 302/692/20 +f 326/703/53 325/723/69 313/704/54 +f 321/706/56 332/725/70 320/707/57 +f 323/709/58 322/726/71 310/710/59 +f 330/712/61 329/727/72 317/713/62 +f 327/715/63 326/703/53 314/705/55 +f 324/717/64 323/709/58 311/711/60 +f 331/719/65 330/712/61 318/714/17 +f 328/721/67 327/715/63 315/716/16 +f 325/723/69 324/770/64 312/724/18 +f 332/725/70 331/719/65 319/720/66 +f 322/726/71 321/706/56 309/708/19 +f 329/727/72 328/721/67 316/722/68 +f 333/728/73 335/730/74 336/731/75 +f 336/731/75 335/733/74 338/735/77 +f 339/736/78 338/737/77 340/739/79 +f 340/741/79 342/744/82 343/742/81 +f 342/745/82 344/748/84 345/746/83 +f 344/749/84 346/752/86 347/750/85 +f 346/753/86 348/756/88 349/754/87 +f 348/757/88 350/760/90 351/758/89 +f 350/761/90 352/763/91 353/764/92 +f 343/742/81 345/746/83 328/721/67 +f 328/721/67 345/746/83 347/750/85 +f 327/715/63 347/750/85 349/754/87 +f 349/754/87 351/758/89 325/723/69 +f 352/765/91 354/767/93 355/768/94 +f 324/770/64 325/723/69 351/758/89 +f 324/717/64 353/769/92 355/768/94 +f 323/709/58 355/768/94 357/774/96 +f 321/706/56 322/726/71 357/774/96 +f 354/771/93 356/773/95 357/774/96 +f 321/706/56 334/732/76 336/731/75 +f 332/725/70 336/731/75 339/736/78 +f 339/736/78 341/740/80 330/712/61 +f 341/740/80 343/742/81 329/727/72 +f 357/774/96 356/775/95 333/777/73 +f 519/778/53 518/798/69 506/779/54 +f 514/781/56 525/800/70 513/782/57 +f 516/784/58 515/801/71 503/785/59 +f 523/787/61 522/802/72 510/788/62 +f 520/790/63 519/778/53 507/780/55 +f 517/792/64 516/784/58 504/786/60 +f 524/794/65 523/787/61 511/789/17 +f 521/796/67 520/790/63 508/791/16 +f 518/798/69 517/845/64 505/799/18 +f 525/800/70 524/794/65 512/795/66 +f 515/801/71 514/781/56 502/783/19 +f 522/802/72 521/796/67 509/797/68 +f 526/803/73 528/805/74 529/806/75 +f 528/808/74 531/810/77 532/811/78 +f 531/812/77 533/814/79 534/815/80 +f 533/816/79 535/819/82 536/817/81 +f 535/820/82 537/823/84 538/821/83 +f 537/824/84 539/827/86 540/825/85 +f 540/825/85 539/830/86 541/828/88 +f 541/832/88 543/835/97 544/833/89 +f 544/833/89 543/836/97 545/838/91 +f 522/802/72 536/817/81 538/821/83 +f 521/796/67 538/821/83 540/825/85 +f 520/790/63 540/825/85 542/829/87 +f 542/829/87 544/833/89 518/798/69 +f 545/840/91 547/842/93 548/843/94 +f 517/845/64 518/798/69 544/833/89 +f 517/792/64 546/844/92 548/843/94 +f 516/784/58 548/843/94 550/849/96 +f 514/781/56 515/801/71 550/849/96 +f 547/846/93 549/848/95 550/849/96 +f 514/781/56 527/807/76 529/806/75 +f 525/800/70 529/806/75 532/811/78 +f 532/811/78 534/815/80 523/787/61 +f 523/787/61 534/815/80 536/817/81 +f 549/850/95 526/852/73 527/807/76 +f 568/853/53 567/873/69 555/854/54 +f 563/856/56 574/875/70 562/857/57 +f 565/859/58 564/876/71 552/860/59 +f 572/862/61 571/877/72 559/863/62 +f 569/865/63 568/853/53 556/855/55 +f 566/867/64 565/859/58 553/861/60 +f 573/869/65 572/862/61 560/864/17 +f 570/871/67 569/865/63 557/866/16 +f 567/873/69 566/920/64 554/874/18 +f 574/875/70 573/869/65 561/870/66 +f 564/876/71 563/856/56 551/858/19 +f 571/877/72 570/871/67 558/872/68 +f 576/881/76 575/878/73 577/880/74 +f 577/883/74 580/885/98 581/886/78 +f 581/886/78 580/887/98 582/889/79 +f 582/891/79 584/894/82 585/892/81 +f 585/892/81 584/897/82 586/895/99 +f 587/896/83 586/901/99 588/899/86 +f 588/903/86 590/906/88 591/904/87 +f 590/907/88 592/910/97 593/908/89 +f 592/911/97 594/913/91 595/914/92 +f 585/892/81 587/896/83 570/871/67 +f 587/896/83 589/900/85 569/865/63 +f 589/900/85 591/904/87 568/853/53 +f 591/904/87 593/908/89 567/873/69 +f 594/915/91 596/917/100 597/918/94 +f 567/873/69 593/908/89 595/914/92 +f 566/867/64 595/919/92 597/918/94 +f 565/859/58 597/918/94 599/924/96 +f 563/856/56 564/876/71 599/924/96 +f 596/921/100 598/923/95 599/924/96 +f 563/856/56 576/881/76 578/882/75 +f 574/875/70 578/882/75 581/886/78 +f 581/886/78 583/890/80 572/862/61 +f 572/862/61 583/890/80 585/892/81 +f 598/925/95 575/927/73 576/881/76 +f 617/928/53 616/948/69 604/929/54 +f 612/931/56 623/950/70 611/932/57 +f 614/934/58 613/951/71 601/935/59 +f 621/937/61 620/952/72 608/938/62 +f 618/940/63 617/928/53 605/930/55 +f 615/942/64 614/934/58 602/936/60 +f 622/944/65 621/937/61 609/939/17 +f 619/946/67 618/940/63 606/941/16 +f 616/948/69 615/995/64 603/949/18 +f 623/950/70 622/944/65 610/945/66 +f 613/951/71 612/931/56 600/933/19 +f 620/952/72 619/946/67 607/947/68 +f 624/953/73 626/955/74 627/956/75 +f 626/958/74 629/960/98 630/961/78 +f 629/962/98 631/964/79 632/965/80 +f 632/965/80 631/968/79 633/966/82 +f 633/970/82 635/973/84 636/971/83 +f 636/971/83 635/976/84 637/974/86 +f 637/978/86 639/981/88 640/979/87 +f 640/979/87 639/984/88 641/982/97 +f 641/986/97 643/988/91 644/989/92 +f 634/967/81 636/971/83 619/946/67 +f 619/946/67 636/971/83 638/975/85 +f 618/940/63 638/975/85 640/979/87 +f 640/979/87 642/983/89 616/948/69 +f 643/990/91 645/992/100 646/993/94 +f 615/995/64 616/948/69 642/983/89 +f 615/942/64 644/994/92 646/993/94 +f 614/934/58 646/993/94 648/999/96 +f 613/951/71 648/999/96 625/957/76 +f 645/996/100 647/998/95 648/999/96 +f 612/931/56 625/957/76 627/956/75 +f 623/950/70 627/956/75 630/961/78 +f 630/961/78 632/965/80 621/937/61 +f 621/937/61 632/965/80 634/967/81 +f 647/1000/95 624/1002/73 625/957/76 +f 656/1003/18 664/1015/105 663/1004/101 +f 654/1006/19 662/1016/106 661/1007/102 +f 652/1009/17 660/1017/107 659/1010/103 +f 650/1012/16 658/1019/108 657/1013/104 +f 649/1014/22 657/1013/104 664/1015/105 +f 655/1005/23 663/1004/101 662/1016/106 +f 653/1008/20 661/1007/102 660/1017/107 +f 651/1018/21 659/1313/103 658/1019/108 +f 658/1020/108 666/1038/122 665/1021/109 +f 664/1015/105 657/1022/104 665/1021/109 +f 662/1016/106 663/1004/101 670/1024/111 +f 661/1026/102 668/1029/114 667/1027/113 +f 664/1015/105 671/1023/110 670/1024/111 +f 662/1016/106 669/1025/112 668/1029/114 +f 671/1023/110 678/1035/120 677/1030/115 +f 668/1029/114 669/1025/112 676/1031/116 +f 665/1021/109 666/1038/122 673/1033/118 +f 665/1021/109 672/1034/119 678/1035/120 +f 670/1024/111 677/1030/115 676/1031/116 +f 668/1029/114 675/1032/117 674/1036/121 +f 659/1040/103 674/1050/121 682/1041/50 +f 672/1043/119 680/1053/22 686/1044/51 +f 659/1045/103 679/1314/14 681/1046/48 +f 677/1030/115 685/1051/15 684/1048/49 +f 675/1049/117 683/1052/20 682/1041/50 +f 677/1030/115 678/1035/120 686/1044/51 +f 675/1049/117 676/1031/116 684/1048/49 +f 672/1043/119 673/1047/118 681/1046/48 +f 694/1054/18 702/1066/105 701/1055/101 +f 692/1057/19 700/1067/106 699/1058/102 +f 690/1060/17 698/1068/107 697/1061/103 +f 688/1063/16 696/1070/108 695/1064/104 +f 687/1065/22 695/1064/104 702/1066/105 +f 693/1056/23 701/1055/101 700/1067/106 +f 691/1059/20 699/1058/102 698/1068/107 +f 689/1069/21 697/1315/103 696/1070/108 +f 695/1071/104 696/1087/108 704/1072/122 +f 695/1071/104 703/1073/109 709/1074/110 +f 701/1055/101 708/1079/111 707/1075/112 +f 699/1076/102 706/1080/114 705/1077/113 +f 701/1055/101 702/1066/105 709/1074/110 +f 700/1067/106 707/1075/112 706/1080/114 +f 709/1074/110 716/1084/120 715/1081/115 +f 707/1075/112 714/1085/116 713/1082/117 +f 704/1072/122 711/1089/118 710/1083/119 +f 709/1074/110 703/1073/109 710/1083/119 +f 708/1079/111 715/1081/115 714/1085/116 +f 705/1077/113 706/1080/114 713/1082/117 +f 712/1091/121 720/1101/50 717/1092/14 +f 716/1084/120 710/1104/119 718/1094/22 +f 711/1096/118 697/1316/103 717/1097/14 +f 715/1081/115 723/1102/15 722/1099/49 +f 713/1100/117 721/1103/20 720/1101/50 +f 716/1084/120 724/1095/51 723/1102/15 +f 714/1085/116 722/1099/49 721/1103/20 +f 711/1096/118 719/1098/48 718/1094/22 +f 740/1105/19 748/1117/126 747/1106/123 +f 738/1108/17 746/1118/127 745/1109/124 +f 736/1111/16 744/1119/128 743/1112/48 +f 734/1114/18 742/1121/129 741/1115/125 +f 733/1116/23 741/1115/125 748/1117/126 +f 739/1107/20 747/1106/123 746/1118/127 +f 737/1110/21 745/1109/124 744/1119/128 +f 735/1120/22 743/1317/48 742/1121/129 +f 742/1122/129 750/1136/139 749/1123/130 +f 748/1117/126 741/1124/125 749/1123/130 +f 746/1118/127 747/1106/123 754/1126/49 +f 744/1128/128 745/1131/124 752/1129/133 +f 747/1106/123 748/1117/126 755/1125/131 +f 746/1118/127 753/1127/132 752/1129/133 +f 754/1126/49 755/1125/131 762/1132/135 +f 752/1129/133 753/1127/132 760/1134/137 +f 750/1136/139 757/1140/142 756/1137/140 +f 749/1123/130 756/1137/140 762/1132/135 +f 754/1126/49 761/1133/136 760/1134/137 +f 752/1129/133 759/1135/138 758/1138/141 +f 743/1142/48 758/1152/141 766/1143/103 +f 756/1145/140 764/1155/23 770/1146/111 +f 743/1147/48 763/1318/14 765/1148/28 +f 761/1133/136 769/1153/15 768/1150/39 +f 759/1151/138 767/1154/21 766/1143/103 +f 762/1132/135 770/1146/111 769/1153/15 +f 759/1151/138 760/1134/137 768/1150/39 +f 756/1145/140 757/1149/142 765/1148/28 +f 778/1156/19 786/1168/126 785/1157/123 +f 776/1159/17 784/1169/127 783/1160/124 +f 774/1162/16 782/1170/128 781/1163/48 +f 772/1165/18 780/1172/129 779/1166/125 +f 771/1167/23 779/1166/125 786/1168/126 +f 777/1158/20 785/1157/123 784/1169/127 +f 775/1161/21 783/1160/124 782/1170/128 +f 773/1171/22 781/1319/48 780/1172/129 +f 779/1173/125 780/1189/129 788/1174/143 +f 779/1173/125 787/1175/130 793/1176/131 +f 784/1169/127 785/1157/123 792/1177/49 +f 783/1179/124 790/1182/133 789/1180/134 +f 785/1157/123 786/1168/126 793/1176/131 +f 784/1169/127 791/1178/144 790/1182/133 +f 793/1176/131 800/1186/135 799/1183/136 +f 791/1178/144 798/1187/137 797/1184/138 +f 788/1174/143 795/1191/142 794/1185/140 +f 787/1175/130 794/1185/140 800/1186/135 +f 792/1177/49 799/1183/136 798/1187/137 +f 789/1180/134 790/1182/133 797/1184/138 +f 796/1193/141 804/1204/103 801/1194/14 +f 800/1186/135 794/1206/140 802/1196/23 +f 795/1198/142 781/1320/48 801/1199/14 +f 798/1187/137 799/1183/136 807/1201/15 +f 796/1193/141 797/1205/138 805/1203/21 +f 799/1183/136 800/1186/135 808/1197/111 +f 798/1187/137 806/1202/39 805/1203/21 +f 795/1198/142 803/1200/28 802/1196/23 +f 824/1207/16 832/1219/148 831/1208/145 +f 822/1210/18 830/1220/149 829/1211/146 +f 820/1213/19 828/1221/150 827/1214/50 +f 818/1216/17 826/1223/151 825/1217/147 +f 817/1218/21 825/1217/147 832/1219/148 +f 823/1209/22 831/1208/145 830/1220/149 +f 821/1212/23 829/1211/146 828/1221/150 +f 819/1222/20 827/1321/50 826/1223/151 +f 826/1224/151 834/1242/164 833/1225/152 +f 832/1219/148 825/1226/147 833/1225/152 +f 830/1220/149 831/1208/145 838/1228/51 +f 828/1230/150 829/1233/146 836/1231/155 +f 831/1208/145 832/1219/148 839/1227/153 +f 830/1220/149 837/1229/154 836/1231/155 +f 839/1227/153 846/1239/162 845/1234/157 +f 836/1231/155 837/1229/154 844/1235/158 +f 833/1225/152 834/1242/164 841/1237/160 +f 833/1225/152 840/1238/161 846/1239/162 +f 838/1228/51 845/1234/157 844/1235/158 +f 836/1231/155 843/1236/159 842/1240/163 +f 827/1244/50 842/1255/163 850/1245/28 +f 840/1247/161 848/1257/21 854/1248/39 +f 827/1249/50 847/1322/14 849/1250/103 +f 844/1235/158 845/1234/157 853/1252/15 +f 843/1254/159 851/1256/23 850/1245/28 +f 845/1234/157 846/1239/162 854/1248/39 +f 844/1235/158 852/1253/111 851/1256/23 +f 840/1247/161 841/1251/160 849/1250/103 +f 862/1258/16 870/1270/148 869/1259/145 +f 860/1261/18 868/1271/149 867/1262/146 +f 858/1264/19 866/1272/150 865/1265/50 +f 856/1267/17 864/1274/151 863/1268/147 +f 855/1269/21 863/1268/147 870/1270/148 +f 861/1260/22 869/1259/145 868/1271/149 +f 859/1263/23 867/1262/146 866/1272/150 +f 857/1273/20 865/1323/50 864/1274/151 +f 863/1275/147 864/1291/151 872/1276/165 +f 863/1275/147 871/1277/166 877/1278/153 +f 869/1259/145 876/1283/51 875/1279/154 +f 867/1280/146 874/1284/155 873/1281/156 +f 869/1259/145 870/1270/148 877/1278/153 +f 868/1271/149 875/1279/154 874/1284/155 +f 877/1278/153 884/1288/162 883/1285/157 +f 875/1279/154 882/1289/158 881/1286/159 +f 872/1276/165 879/1293/160 878/1287/161 +f 871/1277/166 878/1287/161 884/1288/162 +f 876/1283/51 883/1285/157 882/1289/158 +f 873/1281/156 874/1284/155 881/1286/159 +f 880/1295/163 888/1305/28 885/1296/14 +f 884/1288/162 878/1308/161 886/1298/21 +f 879/1300/160 865/1324/50 885/1301/14 +f 883/1285/157 891/1306/15 890/1303/111 +f 880/1295/163 881/1307/159 889/1304/23 +f 884/1288/162 892/1299/39 891/1306/15 +f 882/1289/158 890/1303/111 889/1304/23 +f 879/1300/160 887/1302/103 886/1298/21 diff --git a/src/main/resources/assets/hbm/textures/models/machines/acidizer.png b/src/main/resources/assets/hbm/textures/models/machines/acidizer.png index 9e93b164b2fb997d71ec6bf61bff297bd75fbee7..a82223f45a8a8018e01fa4cecf3bef6e3a7c084b 100644 GIT binary patch literal 9569 zcmZ{KcQ~6-8+VLKY6aC&GqknZnl*|DYPY47qKevWt*TWKf+(pOrE1h@tx`2xYVSRw z)G8W#6A~jK_|o@%zw7$``Ep&!d7hK=oclh%bD#VEo%=j*9~kPgF!C@0000(!JuMSz z*-iacfEcL1z`2my)PmkyQ{NOs{UAV&XaE2L(AUy1ef@DO$TsF`R{*ZGsLsVd-oGCD zPROneg5P`Dyp>SL^iGo?ybf5>xGL!Ou_c9(z|qY7P02*>VHo?}#pl|$BiPw~cRk8XD& z?b*T7c)RUM%N2S6k~Cf#-Gm^pn;6XD&c@F&^og;ef+FWbk%t509e0foX{zG8HJ*)< zo0Rj-D~;q@QZ$k%tuM6mukLgmEbu7>ly$az#&HwL|KlZLQC}j_!``rwSL{B?;Ng;YPNQ+*G{*k$PWb!^P>y+Q5C@UGwab*afW6^TB zsBT$qg3(kr2o)ip9Z3aCn&bf=s{tCg_x^;Z7buSu~@+Ocf`l-l|pM{RH|| zK)BvQR6f~hdsIM%ux$xSkjZS&vpkeu8dqiZ5%waJF`}3YS1hRUEC*3^QOiA-7F;Y z6x^Iom+2YZ_~aLe-W%6|=Sw`I$EKum=wGH^%~mPAb}dW3Q%e0W+O96yY5JFb+pTxT zoiy2|U1fqYv-Xpn35N@GZL!UbYEf9H4g(=Wo|16A8DSwzCkH_BDZg#*Hv1Q^V0Hvf z@MUE`D@vEuOg2CDYLt#j2gT!dmgYE7rTZ5s zhF!Y;fk5x-K@IUY17GWYF6__%nw|ZDKyW_*P*q~n^~uUvdg1tIg)d9B=<^ac+qMK$ zWeD5PiU5{s!Aw*V2k(^1&yyWKctWd=Kd@R*Ekx|mPrsY(b9X91;mw@~tjpj5VMwda zp)#xBM{&w98l)R9FfbkOjy73usTokp?fxeFt4av>r5kZw)wP32YF?EZG<0QHFe70p z#CWe&%(l2bFE=~=-X8`mmjtcqWIR$S;#t&LpVf9BclGU-=F(*-0RCON)NBs9HYpjH=LVAUrglcs|6@wa#$k z8bYe@&O^k=&{ik5|rFS;N|1W!29Dj~-XUlQf z^73+7U0rldP0e@K`%PI2i*a3T_Dpra0Xei6N#gAtP>5(q9Nvl6(z{N%V2K|e1^6Y6 z{N0dRcm6MeI554>-{^OCatP**fBxF9SxrtZ@wuK;>|*O1rqqO7#*ZS7w_fRDJ_Du^ zp0!L1gn+L#Nq<=8m8i&fc!{iDQm>F3_i;#DO3(RxO9xUn?!py~?@>UcW7qDrJ(JKw zu4MRYS;`Bw6*5N4yy9ho6J{jLZq;p zE-^XI@Ms^wSieBUIX-;BmF4MG#c;HI_-xz=4ZPUpb(Fd$d9o-9yZjSLY}{@-3x1s$ zDa|bB@tzEwl<8KAu(PMm+DEmZwB?l*Zy0WR`kqT7VR#ppGd%gxGibx=d2RhIB9S;j z{o}0UVN-*ii?Dy1VktY_lEQ3ko8msV3EHvfA|!7# z3_sCAFOzwBdDl)-VlNM=IFgUb9l97A=~P%pWRexcwzanm7e~!)-KS?JCnvquUgSC? zJqF4Ij)?3*6l@I=_NL)=Kz5p_;d83uTJsD-mY2t&FszpRfbHYQy}nE}ExN|x)Fl`A zG|ADtU*U!jeVhO^jj*6J=;nynA2q*z^33VMn3?yQjzji}>>HDqdQwYpR?l}@Bo!%2 zyi}%$daj0?kmXw3w}!ig$8_|KT1^%W=|$qFO-Dzo7jaTZa-ZW1&56|-KHQ<4SD$&) z(I}J&4I`#vm9oAuG!irLj=^6;xfiEvyj!OaG8LVe7VGW>jO*+Mh%6m>Bt0%l;xGZI zG~})velPj>rK#`%DAcCnLlk;AVurH`)QDgBXQP3G(bv$R!)b3LyWsnuJurBTwuh^9 z0e}b(4wkn@+sSlF2j?@ds^9jtvwvR_LQIRuY}}H%mF8k4KOjZx36}A{IfY{Z_|(mG zj@{<_(=wFd{`Kou`+$Jk(Cw}`(GY}rlwIkS6ht6vJlkt@C2LO`hQ&)GEvsSd|z?K9SddOEhBWZ)!?bzc{r2ilZ%Xr(`@QXTvFl=Yh zSK#fy12+%aJdl;3br+?@63{$0YRz~17LyQtRqePJY3N2cpbGY((jx^f9Z7 z@606+R)P++P&4|A{1uAK>8`G?xq8|)2}LXOLTs@u{<(_QwUiJ|(Y2E+77Br4`?cy`s>lC>$ga-TJhwTjwgk?OUlsupN!n z#s=whZG`UnjKXVZXCCi8m(u(XkH&ZOXqjs*5$+SpdcPX8wp{DrL9|Jdd!ZmrM!h|w zYjdb?K}I4|4=aG?iXBp6YifkFh=!G-Vi9ZF2^(8%ckm=PX9(y>cU}r(>#(PrdKbV- z^V7n@JF;kp-0m01AmZsPfdyRdu(a=fCFU%Kyy31*2waW7 z${u1!h+6axEe`C+($)vyhir)No2nY) ztc)_-$Nuox1W6AJ4g;2UQjA@GIr#(4v~IY60+hwX;4K7nbd>thQmO85722(o>@H*uZY_12 z41oRQN2{E^MtDqf{27pqe~BK-nz8>7WrUNBb>@a?;hs*Y|CB6_U8&tkKD9e^h(`ww zcrrDTQLpeWxbPY7eqJvM9HCNz>5gL)s%S{L-0uyS50?Uj>rZAFiZ0Ag96nXBxZo#+ zyVP`(^u)N4=2*9XgNESod$()Be|+4FW-M~l@h9h7r=3RnWXLOCMGi7*f9H6M*z5~E2bz_!t1WyyBvA8>oy(~Id zso@=DVeTo|Y&T~1qhAoHrB#eeFtK-W0cNh`b$xpkM0$^A(`FB6+ffB)80wM&9`(NO zd-ywO{b5#-X^-OH*H_wB5Z)fn#T25?+=%H}*2xTxW|jAxB0_*>0ziUxUHzD>n*<5i z5?Onn5D$<}-|NmtDEShLy=(g`oBEGk6Jf0LN``__SM%DZr=Ki)u`SajDt&8c-dM?~ zwcBnU;1vK1s9F?-nU~t!$EB;)1`PE3f20&NoEk~qaC|gaJwDEUhgTCcvpUeBE;j}^ zk^%A#Twr2){^$C}MheV}c6>0aD?S$A=I7~lEq6P`oHq)o}C)g-suHDU-Cd~RmT*X7)eSZe&r+ptI(cuKb11Q z{xp39Yl=Er1_m_PWf}!-{rNHc{yW(j|I|iqw|?;m9? z?tLivsfiZ+jING(D{5D{cl4@AxeMx^c?56KZQ(TBcxfH~^bBs%v*)E}b8pUlglOubeK?Tk^k`cDLMt0ZSh`zKx z>j}jdiFUBtW#A+uH$dNftM*cS>-X_9q%g1fbaZfzqRThL z-U7>C!`AVMJY}DG`mqbBS&^T~^@Ap3Gq-p{17_UBmVbZUD%qA79Exr1_wVg=1kSke z*>UGTY^>jI>AX!PrG@F=Pq{%!{X(xkTE0{R9D1YAOOCbYSv0r<>Li>P@K}b1^CG&$mqVxH~G|zc1^OB_Xx1`kA>GIuf zp}c!^KG~k?s#|@&bnn>PH_4mL&nAv5%E$pw4}Pv^e>TpvDp)m#tj0<+VOf*P_HhC- zKGLj?hflp!IWDaEvJIQeY#%8vQyuKVAD&=GAD#eLUG;`TjLw%I_ch;51dv0l+eoXLq)bD*KZ9>dhQ9uP&NAV(NjU53svkY1}9?Jm~ z9ayaNIwUQMoPaO4C;@vzwomGrXF+?X#j>Jf={drRrXIijrhkkhbSxKU5w|;Mo3lzQ zcOhgClDLKHLWl1=KhN%qZoO&$$38{(Ps|>tPR2x7Z`1nmxWXr6jR57RLBzu1+3$_&*rn_%f> z9a}%xQON&x3go)#M^f<T=P+03%>EU!F3x;2!hFjPBSJ47!xaL zB{npQT9?zy!vfr=%|@P=HjSWukDy{0{|t29+YvhlS+Lw$W!E-_-zr>-GaEyhzFAwJ zAQN3jB-w1UB92s`dQfQhm+T-vzpAP;8%wasML(>&q7w1wCwYqUyy(o2u)YTw*w9F8 zwt!>2o*sWj{9m7I2$sDK)w{rb7c9#fu}kbNO~adx3sP&v|66NvP63xWC}*AQHIwwb zgsRp(L+~(t=P=4t!=_BZ&F}M?O)$?oeh-p3g1Qyj`>*#Er(g}=Y82JnuK@~xsWAe% z=ary(ef$1!%qvRO>>lLiIBrd&cXukx^C;i|@f}Ju?ut|-2b_w0u)H{8a~6-`KOeGb zDj5%1J_6NQ76a!_EQ*0L3zr7*A^T98$+efnx`n{`PGtjZx%q!Oyhf<*dr@&}2sVks zUHT}H>v$TIzd_Y$bPp03+lvJjM%7w+8LGTT3uT#p4WLx<&Y8-Va+BieWx%f1OP-pTJF!k0y)NcR9ZPyG; zG>50=zc?Lvf-C^moZp8msH!y|Xp_@Y@&B=-41quz#p#%J*R<|BRf1Zr|%=?l;phyMp&cyN)PQhWfB&=~3tlulH|p6$ zVDwNyymqVwS6A(z}3<&pZ`e*nu}th*EOf(3T(5$nVgm+SPff1y$+Y(Y8pbO|QHQJ-m$$cY2iz+AUz z7_%?SVtf`dv;UU_;~kLroc{T>0906^orR5!NL@wFse*MJHIw&B=Ux2Q&T<&7rNe_& ztVycO`62N1K#+xktvbGo7NeGk6<8w$aYxX}-EE$2tg0g2X=;k9lXSzFq%`e6;;+8u zu?pnnJ%K0n{L8TZ9BwO~X6+<3y!Bogyx*^9^Lp-0Xh}pwhl)j5itDp0;w)KWJ5_W`&0tZ_ULUwd&aflb5EY*2bGo zeV@he$I8>$|=!Q7ET5Uhomgi}U@hDlfXV$RMT~EZRD2z-!8%Z8%*dMc^1=#2L z@X@O4ee;N6&U4uAi8^=$Xk>Nd{gGP5ifgfZ5>vRl_K4hUm>`aj!VAeg?Sx68a`wNrFNvAcSiDb?+q8a!2gU| ztlqi8z{9N(A^)mUBfavG-%%~a>*Z`SjVfiQt)@~?q2Gr>cl&gY&~!Y5XUtYQC~GP2 z<{JDcl<-=0_*t~=6H6hJ7t##k7ec^RpyIYtrpzVo9}uT}Z%TSJmL=06#%^{3^{Mz; zRDYqo$uibHHj01qXWQR!1=h38$w~+CmFw59`%v?6mx9X`{QUf6tuFH+mC4j(OsT}K zTmRXZr`_q$rx?AB-cAOLTN~C|jPH`w;#TkXk(fUJm)t;K2TWU!PYD}sFPqn{s|Uu0 zGbA0qMHkt%q@omqs%4lb2mg5l#p!ZK6gK9+q^9^3N(6Fm;95ROqz$2V3gb)+=ru5F z&EDf01m|=@RT)?=tOx;&^!n9qbHku2`HSN(4EnppO=e<2K&1S0Tps!MWA9JR94(W;IfD#kUq-O%PV>atztPNiRF5^;!7)lQ zDJC0``x_b}HLUhb?h$!ZkWjGa(C&~X2gW?^fSfyj9|Ln3o3{N9sb@QB%ilQSY~yYH z`4@*gDGVMk1h?$%G7V5@?6;dIi!-Xw?i%kEtxVP+4mc*?^vy`w)bCx-(|oe>LB&=v;I+>0eNE;%lNrR^E49kj`7(-g~iIvy}#CqaKYIw1C6r()LD2 z&C2WR?bPj$#!UGisc3L&w@baaMhD;OP_%t2a5&=h(PMNi~Xnqg3 z_7=AWW;CV%NVCWJa;-98tGOWySuW7t!N;1Yx#f$Yg`&@-koa5Td2G5e;hYnbHLO_T z(0N)PF%#t4a!u7d~y>jW^~${X#I3yja?(JY7#!&t6UO%|0ZT z6TJ_Sc!XZyjsk`5y?pAyYMh((tq7exzepa1wCg`sdnWXVvBF7BdWOk54p$=5@Bqxw zRh~)QhqfEXNJp8xl452jsoCf45jny`_I{Xm##XwkWy=pNWb5DmalI*nAX);Pv%41O zgWc3GjO3w#T>9Bq7j0OO=q#2S5<>MUn%VAZ4tzcNZ)?+@nFp&Z8QFk^F$Y5-zbdc4 zF%%8KAMd;qLeKC?op+p9(qSWgBV7I_IP4z|A@sxT<@>Qv@kAwjcE$j`URU7b{&cD%lb{! z5WBt9ey9r06deJxU9gY(b)NPKZf5jhNd`cR9!K2kPh^9L?I_;foQ|+&^0xdR6NC^Mr_j2Z2kR?neHm+2L{)5&(Wo<`D7;z zV=E1ddlx?GiqmI6+&{V#`41G=dGtOBv?rP<>IrLk75giM`IOzb25(>siMv>W-=1%t z=4+J>Tj}{d@H`z~hLrJwqUYN@=Yc`<+D zq{ZpZ9zVZ0k}VGaoMZm?E&yuLGM@@YxLvq(%#Z>Vf}8_oy##@)Q4U+!XhY>3ddSRC zOM^eBHYf*FDJOU2T?&Iv{}(DaCiODZf%7YOh9PEMCY%iv=D6ZkJWIBL?^u;&=3Jv{ zt24vxXuGPxcOXS2#o<&Q{*mg2sLto5xp=|#;hR4Rhxt@)C0+at!gZLWlzg(&|r#9M55Xjvw6eywi^-|eCbQtv;I@hMY6yAPY+7>L_Z2R##5gjIbQ&rq=TZ{_FAdht!wCr4~qm< z)ciA6sxU@4#&x`e*k9#7qoH#>M~ zduR&&w=SuaUmvPxeOC29^|QVUXnj20(tW$nZ6MAT0-2N+%T?z)%-WEL&?#373!ex$G+Xr zP$RvhGcc~5LHTzZ2z}DS>l#Nv@|Lp1!`SpLZT?xvI@-(m(FloL)0y$bXhOShR!_f^ ztUWKTZeUcW34zuR7|GJSTNUVDz5QpAZlqyoiL{kDU{wsHk%fL2J|}jvejNPj^QUk& z08NkN<5yFUo`igdgn%2ndi!Fgif}+37JLq;9*G39y3bY(X>^smJ1X{pQyv!^ENtcE2WJzXVnlFBpj; z=izLBy~Em_goOWTLG7VA5Z~}&nRt4P7q!xy0DTv@5)YQyIk62B(> zcbTF&PsAU_Ek`soVJ{YF@l!Ao!aY7t)V)N$W|M5<6j945*>vI=| z7Q^8`j0B|YX&LYaT5D^*l&nVFE z&edK;GwdyjYh=M!0|e$BJtl}0pS~J(*~n?xEMxPBTcnYmte*mlaVpy(q76Q_iFkds zwF}HN&^@rge<5T3F!-=qJjy}K7;QN8%j159RWdev z{aOh-Oimhv2)9ehv>p{fl0%WoqgL1Wnyl|1y#)%kyAz2$gzy7Bg+zFQ$w(=1PO6BN t4+$sVU)4~X{zH4Y{1wlgyKm3H5iV)XulC+sP~VvX=xZBlm1sT<`#(8_0}ucJ literal 9447 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 From c6458899985607ab925c5e7425b6512282689b7a Mon Sep 17 00:00:00 2001 From: Boblet Date: Mon, 10 Jun 2024 16:32:58 +0200 Subject: [PATCH 35/69] flixes --- changelog | 6 ++++++ src/main/java/com/hbm/blocks/machine/Watz.java | 2 +- .../radiation/ChunkRadiationHandlerPRISM.java | 18 +++++++++++++++++- .../inventory/recipes/AssemblerRecipes.java | 10 +++++----- .../TileEntityMachineArcFurnaceLarge.java | 5 ++++- 5 files changed, 33 insertions(+), 8 deletions(-) diff --git a/changelog b/changelog index e69de29bb..853a298c4 100644 --- a/changelog +++ b/changelog @@ -0,0 +1,6 @@ +## Changed +* Centrifuges and refineries now use analog circuits + +## Fixed +* Fixed hopper IO ignoring the stack limit on arc furnaces under certain circumstances +* Fixed the watz powerplant not dropping as many HSS bolts as it should diff --git a/src/main/java/com/hbm/blocks/machine/Watz.java b/src/main/java/com/hbm/blocks/machine/Watz.java index 48dfd23e2..41f6767ed 100644 --- a/src/main/java/com/hbm/blocks/machine/Watz.java +++ b/src/main/java/com/hbm/blocks/machine/Watz.java @@ -94,7 +94,7 @@ public class Watz extends BlockDummyable { if(i >= 12 && drop) { world.spawnEntityInWorld(new EntityItem(world, x + 0.5, y + 0.5, z + 0.5, new ItemStack(ModBlocks.watz_end, 48))); - for(int j = 0; j < 3; j++) world.spawnEntityInWorld(new EntityItem(world, x + 0.5, y + 0.5, z + 0.5, Mats.MAT_DURA.make(ModItems.bolt))); + for(int j = 0; j < 3; j++) world.spawnEntityInWorld(new EntityItem(world, x + 0.5, y + 0.5, z + 0.5, Mats.MAT_DURA.make(ModItems.bolt, 64))); world.spawnEntityInWorld(new EntityItem(world, x + 0.5, y + 0.5, z + 0.5, new ItemStack(ModBlocks.watz_element, 36))); world.spawnEntityInWorld(new EntityItem(world, x + 0.5, y + 0.5, z + 0.5, new ItemStack(ModBlocks.watz_cooler, 26))); world.spawnEntityInWorld(new EntityItem(world, x + 0.5, y + 0.5, z + 0.5, new ItemStack(ModBlocks.struct_watz_core, 1))); diff --git a/src/main/java/com/hbm/handler/radiation/ChunkRadiationHandlerPRISM.java b/src/main/java/com/hbm/handler/radiation/ChunkRadiationHandlerPRISM.java index 1016869ae..4bb894e3b 100644 --- a/src/main/java/com/hbm/handler/radiation/ChunkRadiationHandlerPRISM.java +++ b/src/main/java/com/hbm/handler/radiation/ChunkRadiationHandlerPRISM.java @@ -3,6 +3,8 @@ package com.hbm.handler.radiation; import java.util.HashMap; import java.util.Map.Entry; +import com.hbm.lib.Library; + import net.minecraft.block.Block; import net.minecraft.util.MathHelper; import net.minecraft.world.ChunkCoordIntPair; @@ -215,8 +217,22 @@ public class ChunkRadiationHandlerPRISM extends ChunkRadiationHandler { } public float getResistanceValue(ForgeDirection movement) { - //TODO + if(movement == Library.POS_X) return getResistanceFromArray(xResist, false); + if(movement == Library.NEG_X) return getResistanceFromArray(xResist, true); + if(movement == Library.POS_Y) return getResistanceFromArray(yResist, false); + if(movement == Library.NEG_Y) return getResistanceFromArray(yResist, true); + if(movement == Library.POS_Z) return getResistanceFromArray(zResist, false); + if(movement == Library.NEG_Z) return getResistanceFromArray(zResist, true); return 0; } + + private float getResistanceFromArray(float[] resist, boolean reverse) { + float res = 0F; + for(int i = 0; i < 15; i++) { + int index = reverse ? 15 - i : i; + res += resist[index] / 15F * i; + } + return res; + } } } diff --git a/src/main/java/com/hbm/inventory/recipes/AssemblerRecipes.java b/src/main/java/com/hbm/inventory/recipes/AssemblerRecipes.java index 0a5a176b0..599cd0f0d 100644 --- a/src/main/java/com/hbm/inventory/recipes/AssemblerRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/AssemblerRecipes.java @@ -130,7 +130,7 @@ public class AssemblerRecipes extends SerializableRecipe { makeRecipe(new ComparableStack(ModBlocks.cmb_brick_reinforced, 8), new AStack[] {new ComparableStack(ModBlocks.block_magnetized_tungsten, 4), new ComparableStack(ModBlocks.brick_concrete, 4), new ComparableStack(ModBlocks.cmb_brick, 1), new OreDictStack(STEEL.plate(), 4), },200); makeRecipe(new ComparableStack(ModBlocks.seal_frame, 1), new AStack[] {new OreDictStack(STEEL.ingot(), 3), new OreDictStack(AL.wireFine(), 4), new OreDictStack(REDSTONE.dust(), 2), new ComparableStack(ModBlocks.steel_roof, 5), },50); makeRecipe(new ComparableStack(ModBlocks.seal_controller, 1), new AStack[] {new OreDictStack(STEEL.ingot(), 3), new OreDictStack(ANY_PLASTIC.ingot(), 4), new OreDictStack(MINGRADE.ingot(), 1), new OreDictStack(REDSTONE.dust(), 4), new ComparableStack(ModBlocks.steel_roof, 5), },100); - makeRecipe(new ComparableStack(ModBlocks.machine_centrifuge, 1), new AStack[] {new ComparableStack(ModItems.centrifuge_element, 1), new OreDictStack(ANY_PLASTIC.ingot(), 2), new OreDictStack(STEEL.plate528(), 8), new OreDictStack(CU.plate(), 8), new ComparableStack(ModItems.circuit, 4, EnumCircuitType.VACUUM_TUBE.ordinal()), }, 200); + makeRecipe(new ComparableStack(ModBlocks.machine_centrifuge, 1), new AStack[] {new ComparableStack(ModItems.centrifuge_element, 1), new OreDictStack(ANY_PLASTIC.ingot(), 2), new OreDictStack(STEEL.plate528(), 8), new OreDictStack(CU.plate(), 8), new ComparableStack(ModItems.circuit, 1, EnumCircuitType.ANALOG), }, 200); makeRecipe(new ComparableStack(ModBlocks.machine_gascent, 1), new AStack[] {new ComparableStack(ModItems.centrifuge_element, 4), new OreDictStack(ANY_PLASTIC.ingot(), 4), new OreDictStack(DESH.ingot(), 2), new OreDictStack(STEEL.plate528(), 8), new ComparableStack(ModItems.coil_tungsten, 4), new ComparableStack(ModItems.circuit, 1, EnumCircuitType.ADVANCED.ordinal()) }, 300); makeRecipe(new ComparableStack(ModBlocks.machine_rtg_furnace_off, 1), new AStack[] {new ComparableStack(Blocks.furnace, 1), new ComparableStack(ModItems.rtg_unit, 3), new OreDictStack(PB.plate528(), 6), new OreDictStack(OreDictManager.getReflector(), 4), new OreDictStack(CU.plate(), 2), },150); makeRecipe(new ComparableStack(ModBlocks.machine_diesel, 1), new AStack[] {new OreDictStack(STEEL.shell(), 1), new ComparableStack(ModItems.piston_selenium, 1), new OreDictStack(STEEL.plateCast(), 1), new ComparableStack(ModItems.coil_copper, 4), }, 60); @@ -144,10 +144,10 @@ public class AssemblerRecipes extends SerializableRecipe { makeRecipe(new ComparableStack(ModBlocks.machine_pumpjack, 1), new AStack[] {new ComparableStack(ModBlocks.steel_scaffold, 8), new OreDictStack(STEEL.plateWelded(), 8), new ComparableStack(ModItems.pipes_steel, 4), new ComparableStack(ModItems.tank_steel, 4), new OreDictStack(STEEL.plate(), 32), new ComparableStack(ModItems.drill_titanium, 1), new ComparableStack(ModItems.motor_desh) }, 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 OreDictStack(STEEL.pipe(), 8), new OreDictStack(STEEL.shell(), 4), new ComparableStack(ModItems.thermo_element, 3), },200); makeRecipe(new ComparableStack(ModBlocks.machine_coker, 1), new AStack[] {!exp ? new OreDictStack(STEEL.plateWelded(), 3) : new OreDictStack(STEEL.heavyComp(), 2), new OreDictStack(IRON.ingot(), 16), 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[] {!exp ? new OreDictStack(STEEL.plateWelded(), 3) : new OreDictStack(STEEL.heavyComp(), 1), new OreDictStack(CU.plate528(), 16), new OreDictStack(STEEL.shell(), 6), new OreDictStack(STEEL.pipe(), 12), new ComparableStack(ModItems.plate_polymer, 8), new ComparableStack(ModItems.circuit, 16, EnumCircuitType.VACUUM_TUBE.ordinal()) },350); - makeRecipe(new ComparableStack(ModBlocks.machine_epress, 1), new AStack[] {new OreDictStack(STEEL.plate(), 8), new OreDictStack(ANY_RUBBER.ingot(), 4), new ComparableStack(ModItems.part_generic, 2, EnumPartType.PISTON_HYDRAULIC.ordinal()), new ComparableStack(ModItems.circuit, 1, EnumCircuitType.BASIC.ordinal()) }, 100); - makeRecipe(new ComparableStack(ModBlocks.machine_chemplant, 1), new AStack[] {new OreDictStack(STEEL.ingot(), 12), new OreDictStack(CU.plate528(), 6), new ComparableStack(ModItems.tank_steel, 4), new ComparableStack(ModItems.coil_tungsten, 3), new ComparableStack(ModItems.circuit, 1, EnumCircuitType.ANALOG.ordinal()), new ComparableStack(ModItems.plate_polymer, 8), },200); - makeRecipe(new ComparableStack(ModBlocks.machine_crystallizer, 1), new AStack[] {new OreDictStack(STEEL.plateWelded(), 2), new OreDictStack(TI.shell(), 3), new OreDictStack(DESH.ingot(), 4), new ComparableStack(ModItems.motor, 1), new ComparableStack(ModItems.circuit, 2, EnumCircuitType.BASIC.ordinal()), },200); + makeRecipe(new ComparableStack(ModBlocks.machine_refinery, 1), new AStack[] {!exp ? new OreDictStack(STEEL.plateWelded(), 3) : new OreDictStack(STEEL.heavyComp(), 1), new OreDictStack(CU.plate528(), 16), new OreDictStack(STEEL.shell(), 6), new OreDictStack(STEEL.pipe(), 12), new ComparableStack(ModItems.plate_polymer, 8), new ComparableStack(ModItems.circuit, 3, EnumCircuitType.ANALOG) },350); + makeRecipe(new ComparableStack(ModBlocks.machine_epress, 1), new AStack[] {new OreDictStack(STEEL.plate(), 8), new OreDictStack(ANY_RUBBER.ingot(), 4), new ComparableStack(ModItems.part_generic, 2, EnumPartType.PISTON_HYDRAULIC.ordinal()), new ComparableStack(ModItems.circuit, 1, EnumCircuitType.BASIC) }, 100); + makeRecipe(new ComparableStack(ModBlocks.machine_chemplant, 1), new AStack[] {new OreDictStack(STEEL.ingot(), 12), new OreDictStack(CU.plate528(), 6), new ComparableStack(ModItems.tank_steel, 4), new ComparableStack(ModItems.coil_tungsten, 3), new ComparableStack(ModItems.circuit, 1, EnumCircuitType.ANALOG), new ComparableStack(ModItems.plate_polymer, 8), },200); + makeRecipe(new ComparableStack(ModBlocks.machine_crystallizer, 1), new AStack[] {new OreDictStack(STEEL.plateWelded(), 2), new OreDictStack(TI.shell(), 3), new OreDictStack(DESH.ingot(), 4), new ComparableStack(ModItems.motor, 1), new ComparableStack(ModItems.circuit, 2, EnumCircuitType.BASIC), },200); makeRecipe(new ComparableStack(ModBlocks.machine_fluidtank, 1), new AStack[] {new OreDictStack(STEEL.ingot(), 2), new OreDictStack(STEEL.plate528(), 6), new OreDictStack(STEEL.shell(), 4), new OreDictStack(ANY_TAR.any(), 4), },150); makeRecipe(new ComparableStack(ModBlocks.machine_bat9000, 1), new AStack[] {new OreDictStack(STEEL.plate528(), 16), new OreDictStack(ANY_RESISTANTALLOY.plateWelded(), 2), new ComparableStack(ModBlocks.steel_scaffold, 16), new OreDictStack(ANY_TAR.any(), 16), },150); makeRecipe(new ComparableStack(ModBlocks.machine_orbus, 1), new AStack[] {new OreDictStack(STEEL.ingot(), 12), new OreDictStack(ANY_RESISTANTALLOY.plateWelded(), 8), new OreDictStack(BIGMT.plate(), 12), new ComparableStack(ModItems.coil_advanced_alloy, 12), new ComparableStack(ModItems.battery_sc_polonium, 1) }, 200); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineArcFurnaceLarge.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineArcFurnaceLarge.java index 6a6752b79..15a73a357 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineArcFurnaceLarge.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineArcFurnaceLarge.java @@ -349,7 +349,10 @@ public class TileEntityMachineArcFurnaceLarge extends TileEntityMachineBase impl ArcFurnaceRecipe recipe = ArcFurnaceRecipes.getOutput(stack, this.liquidMode); if(recipe == null) return false; if(liquidMode) { - return recipe.fluidOutput != null; + if(recipe.fluidOutput == null) return false; + int sta = slots[slot] != null ? slots[slot].stackSize : 0; + sta += stack.stackSize; + return sta <= getMaxInputSize(); } else { if(recipe.solidOutput == null) return false; int sta = slots[slot] != null ? slots[slot].stackSize : 0; From 5010f8812b9685f55e920feaef52d04ec44a119b Mon Sep 17 00:00:00 2001 From: Bob Date: Mon, 10 Jun 2024 22:08:40 +0200 Subject: [PATCH 36/69] PRISM pt. 2 --- .../radiation/ChunkRadiationHandlerPRISM.java | 142 ++++++++++++++++-- .../radiation/ChunkRadiationManager.java | 2 +- 2 files changed, 133 insertions(+), 11 deletions(-) diff --git a/src/main/java/com/hbm/handler/radiation/ChunkRadiationHandlerPRISM.java b/src/main/java/com/hbm/handler/radiation/ChunkRadiationHandlerPRISM.java index 4bb894e3b..96a1bc9fa 100644 --- a/src/main/java/com/hbm/handler/radiation/ChunkRadiationHandlerPRISM.java +++ b/src/main/java/com/hbm/handler/radiation/ChunkRadiationHandlerPRISM.java @@ -1,17 +1,22 @@ package com.hbm.handler.radiation; import java.util.HashMap; +import java.util.Iterator; import java.util.Map.Entry; import com.hbm.lib.Library; import net.minecraft.block.Block; +import net.minecraft.block.material.Material; import net.minecraft.util.MathHelper; import net.minecraft.world.ChunkCoordIntPair; import net.minecraft.world.World; import net.minecraft.world.chunk.Chunk; import net.minecraft.world.chunk.storage.ExtendedBlockStorage; import net.minecraftforge.common.util.ForgeDirection; +import net.minecraftforge.event.world.ChunkDataEvent; +import net.minecraftforge.event.world.ChunkEvent; +import net.minecraftforge.event.world.WorldEvent; /** * The PRISM system aims to make a semi-realistic containment system with simplified and variable resistance values. @@ -25,6 +30,12 @@ import net.minecraftforge.common.util.ForgeDirection; * The system's name stems from the "gradient"-like handling of the resistance values per axis, multiple color * gradients make a rainbow, and rainbows come from prisms. Just like a prism, sub-chunks too handle the radiation * going through them differently depending on the angle of approach. + * ___ + * /\ \ + * / \ \ + * / \ \ + * / \ \ + * /________\__\ * * @author hbm * @@ -34,6 +45,9 @@ public class ChunkRadiationHandlerPRISM extends ChunkRadiationHandler { private HashMap perWorld = new HashMap(); public static final float MAX_RADIATION = 1_000_000; + private static final String NBT_KEY_CHUNK_RADIATION = "hfr_prism_radiation_"; + private static final String NBT_KEY_CHUNK_RESISTANCE = "hfr_prism_resistance_"; + private static final String NBT_KEY_CHUNK_EXISTS = "hfr_prism_exists_"; @Override public float getRadiation(World world, int x, int y, int z) { @@ -56,12 +70,18 @@ public class ChunkRadiationHandlerPRISM extends ChunkRadiationHandler { @Override public void setRadiation(World world, int x, int y, int z, float rad) { + if(Float.isNaN(rad)) rad = 0; + RadPerWorld system = perWorld.get(world); if(system != null) { ChunkCoordIntPair coords = new ChunkCoordIntPair(x >> 4, z >> 4); int yReg = MathHelper.clamp_int(y >> 4, 0, 15); SubChunk[] subChunks = system.radiation.get(coords); + if(subChunks == null) { + subChunks = new SubChunk[16]; + system.radiation.put(coords, subChunks); + } if(subChunks[yReg] == null) subChunks[yReg] = new SubChunk().rebuild(world, x, y, z); subChunks[yReg].radiation = MathHelper.clamp_float(rad, 0, MAX_RADIATION); world.getChunkFromBlockCoords(x, z).isModified = true; @@ -78,10 +98,79 @@ public class ChunkRadiationHandlerPRISM extends ChunkRadiationHandler { setRadiation(world, x, y, z, getRadiation(world, x, y, z) - rad); } + @Override + public void receiveWorldLoad(WorldEvent.Load event) { + if(!event.world.isRemote) perWorld.put(event.world, new RadPerWorld()); + } + + @Override + public void receiveWorldUnload(WorldEvent.Unload event) { + if(!event.world.isRemote) perWorld.remove(event.world); + } + + @Override + public void receiveChunkLoad(ChunkDataEvent.Load event) { + + if(!event.world.isRemote) { + RadPerWorld radWorld = perWorld.get(event.world); + + if(radWorld != null) { + SubChunk[] chunk = new SubChunk[16]; + + for(int i = 0; i < 16; i++) { + if(!event.getData().getBoolean(NBT_KEY_CHUNK_EXISTS + i)) { + chunk[i] = new SubChunk().rebuild(event.world, event.getChunk().xPosition << 4, i << 4, event.getChunk().zPosition << 4); + continue; + } + SubChunk sub = new SubChunk(); + chunk[i] = sub; + sub.radiation = event.getData().getFloat(NBT_KEY_CHUNK_RADIATION + i); + for(int j = 0; j < 16; j++) sub.xResist[j] = event.getData().getFloat(NBT_KEY_CHUNK_RESISTANCE + "x_" + j + "_" + i); + for(int j = 0; j < 16; j++) sub.yResist[j] = event.getData().getFloat(NBT_KEY_CHUNK_RESISTANCE + "y_" + j + "_" + i); + for(int j = 0; j < 16; j++) sub.zResist[j] = event.getData().getFloat(NBT_KEY_CHUNK_RESISTANCE + "z_" + j + "_" + i); + } + + radWorld.radiation.put(event.getChunk().getChunkCoordIntPair(), chunk); + } + } + } + + @Override + public void receiveChunkSave(ChunkDataEvent.Save event) { + if(!event.world.isRemote) { + RadPerWorld radWorld = perWorld.get(event.world); + if(radWorld != null) { + SubChunk[] chunk = radWorld.radiation.get(event.getChunk().getChunkCoordIntPair()); + for(int i = 0; i < 16; i++) { + SubChunk sub = chunk[i]; + if(sub != null) { + float rad = sub.radiation; + event.getData().setFloat(NBT_KEY_CHUNK_RADIATION + i, rad); + for(int j = 0; j < 16; j++) event.getData().setFloat(NBT_KEY_CHUNK_RESISTANCE + "x_" + j + "_" + i, sub.xResist[j]); + for(int j = 0; j < 16; j++) event.getData().setFloat(NBT_KEY_CHUNK_RESISTANCE + "y_" + j + "_" + i, sub.yResist[j]); + for(int j = 0; j < 16; j++) event.getData().setFloat(NBT_KEY_CHUNK_RESISTANCE + "z_" + j + "_" + i, sub.zResist[j]); + event.getData().setBoolean(NBT_KEY_CHUNK_EXISTS + i, true); + } + } + } + } + } + + @Override + public void receiveChunkUnload(ChunkEvent.Unload event) { + if(!event.world.isRemote) { + RadPerWorld radWorld = perWorld.get(event.world); + if(radWorld != null) { + radWorld.radiation.remove(event.getChunk()); + } + } + } + @Override public void updateSystem() { for(Entry entries : perWorld.entrySet()) { + World world = entries.getKey(); RadPerWorld system = entries.getValue(); //it would be way to expensive to replace the sub-chunks entirely like with the old system @@ -91,15 +180,20 @@ public class ChunkRadiationHandlerPRISM extends ChunkRadiationHandler { sub.radiation = 0; } - for(Entry chunk : system.radiation.entrySet()) { + //has to support additions while iterating + Iterator> it = system.radiation.entrySet().iterator(); + while(it.hasNext()) { + Entry chunk = it.next(); + if(this.getPrevChunkRadiation(chunk.getValue()) <= 0) continue; for(int i = 0; i < 16; i++) { SubChunk sub = chunk.getValue()[i]; if(sub != null) { + if(sub.prevRadiation <= 0 || Float.isNaN(sub.prevRadiation)) continue; float radSpread = 0; - for(ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) radSpread += spreadRadiation(sub, i, chunk.getKey(), system.radiation, dir); - sub.radiation += (sub.prevRadiation - radSpread) * 0.9F; + for(ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) radSpread += spreadRadiation(world, sub, i, chunk.getKey(), chunk.getValue(), system.radiation, dir); + sub.radiation += (sub.prevRadiation - radSpread) * 0.95F; } } } @@ -111,19 +205,45 @@ public class ChunkRadiationHandlerPRISM extends ChunkRadiationHandler { } } - private static float spreadRadiation(SubChunk source, int y, ChunkCoordIntPair origin, HashMap map, ForgeDirection dir) { + /** Returns the amount of radiation spread */ + private static float spreadRadiation(World world, SubChunk source, int y, ChunkCoordIntPair origin, SubChunk[] chunk, HashMap map, ForgeDirection dir) { - //TODO + float spread = 0.1F; + float amount = source.prevRadiation * spread; - return 0F; + if(amount <= 1F) return 0; + + if(dir.offsetY != 0) { + if(dir == Library.POS_Y && y == 15) return amount; // out of world + if(dir == Library.NEG_Y && y == 0) return amount; // out of world + if(chunk[y + dir.offsetY] == null) chunk[y + dir.offsetY] = new SubChunk().rebuild(world, origin.chunkXPos << 4, (y + dir.offsetY) << 4, origin.chunkZPos << 4); + SubChunk to = chunk[y + dir.offsetY]; + return spreadRadiationTo(source, to, amount, dir); + } else { + ChunkCoordIntPair newPos = new ChunkCoordIntPair(origin.chunkXPos + dir.offsetX, origin.chunkZPos + dir.offsetZ); + if(!world.getChunkProvider().chunkExists(newPos.chunkXPos, newPos.chunkZPos)) return amount; + SubChunk[] newChunk = map.get(newPos); + if(newChunk == null) { + newChunk = new SubChunk[16]; + map.put(newPos, newChunk); + } + if(newChunk[y] == null) newChunk[y] = new SubChunk().rebuild(world, newPos.chunkXPos << 4, y << 4, newPos.chunkZPos << 4); + SubChunk to = newChunk[y]; + return spreadRadiationTo(source, to, amount, dir); + } } - public static float getTotalChunkRadiation(SubChunk[] chunk) { - float rad = 0; - for(SubChunk sub : chunk) if(sub != null) rad += sub.radiation; - return rad; + private static float spreadRadiationTo(SubChunk from, SubChunk to, float amount, ForgeDirection movement) { + float resistance = from.getResistanceValue(movement.getOpposite()) + to.getResistanceValue(movement); + resistance /= 1_000F; + float toMove = Math.min(amount / Math.max(resistance, 1F), amount); + to.radiation += toMove; + return toMove; } + //private static float getTotalChunkRadiation(SubChunk[] chunk) { float rad = 0; for(SubChunk sub : chunk) if(sub != null) rad += sub.radiation; return rad; } + private static float getPrevChunkRadiation(SubChunk[] chunk) { float rad = 0; for(SubChunk sub : chunk) if(sub != null) rad += sub.prevRadiation; return rad; } + @Override public void clearSystem(World world) { RadPerWorld system = perWorld.get(world); @@ -171,6 +291,7 @@ public class ChunkRadiationHandlerPRISM extends ChunkRadiationHandler { if(iX == sX || iY == sY || iZ == sZ) { //only redo the three affected slices by this position change Block b = subChunk.getBlockByExtId(iX, iY, iZ); + if(b.getMaterial() == Material.air) continue; float resistance = b.getExplosionResistance(null, world, tX + iX, tY + iY, tZ + iZ, x, y, z); if(iX == sX) xResist[iX] += resistance; if(iY == sY) yResist[iY] += resistance; @@ -204,6 +325,7 @@ public class ChunkRadiationHandlerPRISM extends ChunkRadiationHandler { for(int iZ = 0; iZ < 16; iZ ++) { Block b = subChunk.getBlockByExtId(iX, iY, iZ); + if(b.getMaterial() == Material.air) continue; float resistance = b.getExplosionResistance(null, world, tX + iX, tY + iY, tZ + iZ, x, y, z); xResist[iX] += resistance; yResist[iY] += resistance; diff --git a/src/main/java/com/hbm/handler/radiation/ChunkRadiationManager.java b/src/main/java/com/hbm/handler/radiation/ChunkRadiationManager.java index f1063672a..1c5c8121c 100644 --- a/src/main/java/com/hbm/handler/radiation/ChunkRadiationManager.java +++ b/src/main/java/com/hbm/handler/radiation/ChunkRadiationManager.java @@ -12,7 +12,7 @@ import net.minecraftforge.event.world.WorldEvent; public class ChunkRadiationManager { - public static ChunkRadiationHandler proxy = /*new ChunkRadiationHandlerNT();*/ new ChunkRadiationHandlerSimple(); + public static ChunkRadiationHandler proxy = /*new ChunkRadiationHandlerNT();*/ new ChunkRadiationHandlerSimple(); /*new ChunkRadiationHandlerPRISM();*/ @SubscribeEvent public void onWorldLoad(WorldEvent.Load event) { From 6ce3ff1a5c57da63ee764e87d24a406088239cf0 Mon Sep 17 00:00:00 2001 From: George Paton Date: Tue, 11 Jun 2024 11:24:57 +1000 Subject: [PATCH 37/69] guraeto daze --- src/main/java/com/hbm/blocks/generic/BlockGrate.java | 8 ++++---- src/main/java/com/hbm/blocks/machine/FoundryBasin.java | 6 ++++++ src/main/java/com/hbm/blocks/machine/FoundryChannel.java | 6 ++++++ src/main/java/com/hbm/blocks/machine/FoundryMold.java | 5 +++++ src/main/java/com/hbm/blocks/machine/FoundryOutlet.java | 6 ++++++ src/main/java/com/hbm/blocks/network/FluidDuctBox.java | 6 ++++++ .../java/com/hbm/blocks/network/FluidDuctStandard.java | 6 ++++++ 7 files changed, 39 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/hbm/blocks/generic/BlockGrate.java b/src/main/java/com/hbm/blocks/generic/BlockGrate.java index e7240b485..892f9f929 100644 --- a/src/main/java/com/hbm/blocks/generic/BlockGrate.java +++ b/src/main/java/com/hbm/blocks/generic/BlockGrate.java @@ -110,13 +110,13 @@ public class BlockGrate extends Block implements ITooltipProvider { if(meta == 0) { // Check that the block below can fit a grate above it Block block = world.getBlock(x, y - 1, z); - AxisAlignedBB otherBB = block.getSelectedBoundingBoxFromPool(world, x, y - 1, z); + AxisAlignedBB otherBB = block.getCollisionBoundingBoxFromPool(world, x, y - 1, z); if(!block.isAir(world, x, y + 1, z) && (otherBB == null || otherBB.maxY - (double)y < -0.05)) { world.setBlockMetadataWithNotify(x, y, z, 9, 3); } } else if(meta == 7) { Block block = world.getBlock(x, y + 1, z); - AxisAlignedBB otherBB = block.getSelectedBoundingBoxFromPool(world, x, y + 1, z); + AxisAlignedBB otherBB = block.getCollisionBoundingBoxFromPool(world, x, y + 1, z); if(!block.isAir(world, x, y + 1, z) && (otherBB == null || otherBB.minY - (double)(y + 1) > 0.05)) { world.setBlockMetadataWithNotify(x, y, z, 8, 3); } @@ -133,10 +133,10 @@ public class BlockGrate extends Block implements ITooltipProvider { boolean breakIt = false; if(meta == 9) { - AxisAlignedBB otherBB = world.getBlock(x, y - 1, z).getSelectedBoundingBoxFromPool(world, x, y - 1, z); + AxisAlignedBB otherBB = world.getBlock(x, y - 1, z).getCollisionBoundingBoxFromPool(world, x, y - 1, z); breakIt = !(otherBB == null || otherBB.maxY - (double)y < -0.05); } else if(meta == 8) { - AxisAlignedBB otherBB = world.getBlock(x, y + 1, z).getSelectedBoundingBoxFromPool(world, x, y + 1, z); + AxisAlignedBB otherBB = world.getBlock(x, y + 1, z).getCollisionBoundingBoxFromPool(world, x, y + 1, z); breakIt = !(otherBB == null || otherBB.minY - (double)(y + 1) > 0.05); } diff --git a/src/main/java/com/hbm/blocks/machine/FoundryBasin.java b/src/main/java/com/hbm/blocks/machine/FoundryBasin.java index 59014be8e..d3d014d45 100644 --- a/src/main/java/com/hbm/blocks/machine/FoundryBasin.java +++ b/src/main/java/com/hbm/blocks/machine/FoundryBasin.java @@ -67,6 +67,12 @@ public class FoundryBasin extends FoundryCastingBase { this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 0.999F, 1.0F); //for some fucking reason setting maxY to something that isn't 1 magically fixes item collisions } + @Override + public AxisAlignedBB getCollisionBoundingBoxFromPool(World world, int x, int y, int z) { + setBlockBoundsBasedOnState(world, x, y, z); + return AxisAlignedBB.getBoundingBox(x + this.minX, y + this.minY, z + this.minZ, x + this.maxX, y + this.maxY, z + this.maxZ); + } + @Override @SideOnly(Side.CLIENT) public AxisAlignedBB getSelectedBoundingBoxFromPool(World world, int x, int y, int z) { diff --git a/src/main/java/com/hbm/blocks/machine/FoundryChannel.java b/src/main/java/com/hbm/blocks/machine/FoundryChannel.java index ae43ea2d9..8866bfd0f 100644 --- a/src/main/java/com/hbm/blocks/machine/FoundryChannel.java +++ b/src/main/java/com/hbm/blocks/machine/FoundryChannel.java @@ -82,6 +82,12 @@ public class FoundryChannel extends BlockContainer implements ICrucibleAcceptor } } + @Override + public AxisAlignedBB getCollisionBoundingBoxFromPool(World world, int x, int y, int z) { + setBlockBoundsBasedOnState(world, x, y, z); + return AxisAlignedBB.getBoundingBox(x + this.minX, y + this.minY, z + this.minZ, x + this.maxX, y + this.maxY, z + this.maxZ); + } + @Override @SideOnly(Side.CLIENT) public AxisAlignedBB getSelectedBoundingBoxFromPool(World world, int x, int y, int z) { diff --git a/src/main/java/com/hbm/blocks/machine/FoundryMold.java b/src/main/java/com/hbm/blocks/machine/FoundryMold.java index 1c3182d49..03712d0a2 100644 --- a/src/main/java/com/hbm/blocks/machine/FoundryMold.java +++ b/src/main/java/com/hbm/blocks/machine/FoundryMold.java @@ -66,6 +66,11 @@ public class FoundryMold extends FoundryCastingBase { this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 0.5F, 1.0F); } + @Override + public AxisAlignedBB getCollisionBoundingBoxFromPool(World world, int x, int y, int z) { + return AxisAlignedBB.getBoundingBox(x, y, z, x + 1D, y + 0.5D, z + 1D); + } + @Override @SideOnly(Side.CLIENT) public AxisAlignedBB getSelectedBoundingBoxFromPool(World world, int x, int y, int z) { diff --git a/src/main/java/com/hbm/blocks/machine/FoundryOutlet.java b/src/main/java/com/hbm/blocks/machine/FoundryOutlet.java index d62f01cb0..dfa51cf3b 100644 --- a/src/main/java/com/hbm/blocks/machine/FoundryOutlet.java +++ b/src/main/java/com/hbm/blocks/machine/FoundryOutlet.java @@ -96,6 +96,12 @@ public class FoundryOutlet extends BlockContainer implements ICrucibleAcceptor, } } + @Override + public AxisAlignedBB getCollisionBoundingBoxFromPool(World world, int x, int y, int z) { + setBlockBoundsBasedOnState(world, x, y, z); + return AxisAlignedBB.getBoundingBox(x + this.minX, y + this.minY, z + this.minZ, x + this.maxX, y + this.maxY, z + this.maxZ); + } + @Override @SideOnly(Side.CLIENT) public AxisAlignedBB getSelectedBoundingBoxFromPool(World world, int x, int y, int z) { diff --git a/src/main/java/com/hbm/blocks/network/FluidDuctBox.java b/src/main/java/com/hbm/blocks/network/FluidDuctBox.java index f05d3733a..ab63cb957 100644 --- a/src/main/java/com/hbm/blocks/network/FluidDuctBox.java +++ b/src/main/java/com/hbm/blocks/network/FluidDuctBox.java @@ -220,6 +220,12 @@ public class FluidDuctBox extends FluidDuctBase implements IBlockMulti, ILookOve } } + @Override + public AxisAlignedBB getCollisionBoundingBoxFromPool(World world, int x, int y, int z) { + setBlockBoundsBasedOnState(world, x, y, z); + return AxisAlignedBB.getBoundingBox(x + this.minX, y + this.minY, z + this.minZ, x + this.maxX, y + this.maxY, z + this.maxZ); + } + @Override @SideOnly(Side.CLIENT) public AxisAlignedBB getSelectedBoundingBoxFromPool(World world, int x, int y, int z) { diff --git a/src/main/java/com/hbm/blocks/network/FluidDuctStandard.java b/src/main/java/com/hbm/blocks/network/FluidDuctStandard.java index 8bf891a05..e482398c9 100644 --- a/src/main/java/com/hbm/blocks/network/FluidDuctStandard.java +++ b/src/main/java/com/hbm/blocks/network/FluidDuctStandard.java @@ -183,6 +183,12 @@ public class FluidDuctStandard extends FluidDuctBase implements IBlockMulti, ILo } } + @Override + public AxisAlignedBB getCollisionBoundingBoxFromPool(World world, int x, int y, int z) { + setBlockBoundsBasedOnState(world, x, y, z); + return AxisAlignedBB.getBoundingBox(x + this.minX, y + this.minY, z + this.minZ, x + this.maxX, y + this.maxY, z + this.maxZ); + } + @Override @SideOnly(Side.CLIENT) public AxisAlignedBB getSelectedBoundingBoxFromPool(World world, int x, int y, int z) { From f2ed1e897dc0c7d55cca4524d816f8a0a29a2130 Mon Sep 17 00:00:00 2001 From: BallOfEnergy <66693744+BallOfEnergy1@users.noreply.github.com> Date: Mon, 10 Jun 2024 20:46:39 -0500 Subject: [PATCH 38/69] welcome to the age of OC controlled turrets and artillery --- .../tileentity/machine/TileEntityChungus.java | 2 +- .../machine/TileEntityMachineTurbine.java | 2 +- .../turret/TileEntityTurretArty.java | 11 ++ .../turret/TileEntityTurretBaseArtillery.java | 15 +++ .../turret/TileEntityTurretBaseNT.java | 115 +++++++++++++++++- .../turret/TileEntityTurretHIMARS.java | 11 ++ 6 files changed, 153 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityChungus.java b/src/main/java/com/hbm/tileentity/machine/TileEntityChungus.java index 5ae5bc423..0b763ac40 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityChungus.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityChungus.java @@ -345,7 +345,7 @@ public class TileEntityChungus extends TileEntityLoadedBase implements IFluidAcc @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getFluid(Context context, Arguments args) { - return new Object[] {tanks[0].getFill(), tanks[1].getFill(), tanks[1].getFill(), tanks[1].getMaxFill()}; + return new Object[] {tanks[0].getFill(), tanks[0].getMaxFill(), tanks[1].getFill(), tanks[1].getMaxFill()}; } @Callback(direct = true) diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineTurbine.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineTurbine.java index 9221bcb5d..6cc3bd5ad 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineTurbine.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineTurbine.java @@ -347,7 +347,7 @@ public class TileEntityMachineTurbine extends TileEntityLoadedBase implements IS @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getFluid(Context context, Arguments args) { - return new Object[] {tanks[0].getFill(), tanks[1].getFill(), tanks[1].getFill(), tanks[1].getMaxFill()}; + return new Object[] {tanks[0].getFill(), tanks[0].getMaxFill(), tanks[1].getFill(), tanks[1].getMaxFill()}; } @Callback(direct = true) diff --git a/src/main/java/com/hbm/tileentity/turret/TileEntityTurretArty.java b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretArty.java index 2e0775a00..869255de8 100644 --- a/src/main/java/com/hbm/tileentity/turret/TileEntityTurretArty.java +++ b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretArty.java @@ -15,9 +15,13 @@ import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.PacketDispatcher; import com.hbm.tileentity.IGUIProvider; +import cpw.mods.fml.common.Optional; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import li.cil.oc.api.machine.Arguments; +import li.cil.oc.api.machine.Callback; +import li.cil.oc.api.machine.Context; import net.minecraft.client.gui.GuiScreen; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Container; @@ -464,4 +468,11 @@ public class TileEntityTurretArty extends TileEntityTurretBaseArtillery implemen public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GUITurretArty(player.inventory, this); } + @Callback + @Optional.Method(modid = "OpenComputers") + public Object[] addCoords(Context context, Arguments args) { + this.mode = MODE_MANUAL; + targetQueue.add(Vec3.createVectorHelper(args.checkDouble(0), args.checkDouble(1), args.checkDouble(2))); + return new Object[] {}; + } } diff --git a/src/main/java/com/hbm/tileentity/turret/TileEntityTurretBaseArtillery.java b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretBaseArtillery.java index f4866fe7a..e499c6d0a 100644 --- a/src/main/java/com/hbm/tileentity/turret/TileEntityTurretBaseArtillery.java +++ b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretBaseArtillery.java @@ -6,7 +6,12 @@ import java.util.List; import com.hbm.blocks.BlockDummyable; import com.hbm.tileentity.IRadarCommandReceiver; +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 net.minecraft.entity.Entity; +import net.minecraft.util.MathHelper; import net.minecraft.util.Vec3; import net.minecraftforge.common.util.ForgeDirection; @@ -69,4 +74,14 @@ public abstract class TileEntityTurretBaseArtillery extends TileEntityTurretBase } } } + + @Override + public String getComponentName() { + return "ntm_artillery"; + } + @Callback(direct = true) + @Optional.Method(modid = "OpenComputers") + public Object[] getCurrentTarget(Context context, Arguments args) { + return new Object[] {targetQueue.get(0).xCoord, targetQueue.get(0).yCoord, targetQueue.get(0).zCoord}; + } } diff --git a/src/main/java/com/hbm/tileentity/turret/TileEntityTurretBaseNT.java b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretBaseNT.java index 6006a5767..227bb9d3f 100644 --- a/src/main/java/com/hbm/tileentity/turret/TileEntityTurretBaseNT.java +++ b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretBaseNT.java @@ -29,9 +29,14 @@ import com.hbm.util.CompatExternal; import api.hbm.energymk2.IEnergyReceiverMK2; import api.hbm.entity.IRadarDetectableNT; +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.entity.Entity; import net.minecraft.entity.EntityLiving; import net.minecraft.entity.EntityLivingBase; @@ -48,6 +53,7 @@ import net.minecraft.nbt.NBTTagCompound; import net.minecraft.potion.Potion; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.AxisAlignedBB; +import net.minecraft.util.MathHelper; import net.minecraft.util.Vec3; import net.minecraft.world.World; import net.minecraftforge.common.util.FakePlayer; @@ -58,7 +64,8 @@ import net.minecraftforge.common.util.ForgeDirection; * @author hbm * */ -public abstract class TileEntityTurretBaseNT extends TileEntityMachineBase implements IEnergyReceiverMK2, IControlReceiver, IGUIProvider { +@Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "OpenComputers")}) +public abstract class TileEntityTurretBaseNT extends TileEntityMachineBase implements IEnergyReceiverMK2, IControlReceiver, IGUIProvider, SimpleComponent { @Override public boolean hasPermission(EntityPlayer player) { @@ -899,4 +906,110 @@ public abstract class TileEntityTurretBaseNT extends TileEntityMachineBase imple public Container provideContainer(int ID, EntityPlayer player, World world, int x, int y, int z) { return new ContainerTurretBase(player.inventory, this); } + + // OC stuff + // This is a large compat, so I have to leave comments to know what I'm doing + + @Override + public String getComponentName() { + return "ntm_turret"; + } + + // On/Off + @Callback(direct = true, limit = 4) + @Optional.Method(modid = "OpenComputers") + public Object[] setActive(Context context, Arguments args) { + this.isOn = args.checkBoolean(0); + return new Object[] {}; + } + + @Callback(direct = true) + @Optional.Method(modid = "OpenComputers") + public Object[] isActive(Context context, Arguments args) { + return new Object[] {this.isOn}; + } + + // Energy information + @Callback(direct = true) + @Optional.Method(modid = "OpenComputers") + public Object[] getEnergyInfo(Context context, Arguments args) { + return new Object[] {this.getPower(), this.getMaxPower()}; + } + + /////////////////////// + // Whitelist Control // + /////////////////////// + @Callback(direct = true) + @Optional.Method(modid = "OpenComputers") + public Object[] getWhitelisted(Context context, Arguments args) { + if(slots[0] != null && slots[0].getItem() == ModItems.turret_chip) { + String[] array = ItemTurretBiometry.getNames(slots[0]); + return new Object[] {array}; + } + return new Object[] {}; + } + + @Callback(direct = true) + @Optional.Method(modid = "OpenComputers") + public Object[] addWhitelist(Context context, Arguments args) { + if(this.getWhitelist() != null) { + List names = this.getWhitelist(); + if (names.contains(args.checkString(0))) + return new Object[]{false}; + } + this.addName(args.checkString(0)); + return new Object[]{true}; + } + + @Callback(direct = true) + @Optional.Method(modid = "OpenComputers") + public Object[] removeWhitelist(Context context, Arguments args) { + List names = this.getWhitelist(); + if(!names.contains(args.checkString(0))) + return new Object[] {false}; + this.removeName(names.indexOf(args.checkString(0))); + return new Object[] {true}; + } + + /////////////////////// + // Targeting Control // + /////////////////////// + @Callback(direct = true, limit = 4) + @Optional.Method(modid = "OpenComputers") + public Object[] setTargeting(Context context, Arguments args) { + Object[] oldTargeting = new Object[] {this.targetPlayers, this.targetAnimals, this.targetMobs, this.targetMachines}; + this.targetPlayers = args.checkBoolean(0); + this.targetAnimals = args.checkBoolean(1); + this.targetMobs = args.checkBoolean(2); + this.targetMachines = args.checkBoolean(3); + return oldTargeting; + } + + @Callback(direct = true) + @Optional.Method(modid = "OpenComputers") + public Object[] getTargeting(Context context, Arguments args) { + return new Object[] {this.targetPlayers, this.targetAnimals, this.targetMobs, this.targetMachines}; + } + + @Callback(direct = true) + @Optional.Method(modid = "OpenComputers") + public Object[] hasTarget(Context context, Arguments args) { + return new Object[] {this.target != null}; + } + + /////////////////// + // Angle Control // + /////////////////// + + @Callback(direct = true) + @Optional.Method(modid = "OpenComputers") + public Object[] getAngle(Context context, Arguments args) { + return new Object[] {Math.toDegrees(this.rotationPitch), Math.toDegrees(this.rotationYaw)}; + } + + @Callback(direct = true) + @Optional.Method(modid = "OpenComputers") + public Object[] isAligned(Context context, Arguments args) { + return new Object[] {this.aligned}; + } } diff --git a/src/main/java/com/hbm/tileentity/turret/TileEntityTurretHIMARS.java b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretHIMARS.java index 4cd07246e..149dc136c 100644 --- a/src/main/java/com/hbm/tileentity/turret/TileEntityTurretHIMARS.java +++ b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretHIMARS.java @@ -14,8 +14,12 @@ import com.hbm.lib.Library; import com.hbm.main.MainRegistry; import com.hbm.tileentity.IGUIProvider; +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 net.minecraft.client.gui.GuiScreen; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Container; @@ -373,4 +377,11 @@ public class TileEntityTurretHIMARS extends TileEntityTurretBaseArtillery implem public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GUITurretHIMARS(player.inventory, this); } + @Callback + @Optional.Method(modid = "OpenComputers") + public Object[] addCoords(Context context, Arguments args) { + this.mode = MODE_MANUAL; + targetQueue.add(Vec3.createVectorHelper(args.checkDouble(0), args.checkDouble(1), args.checkDouble(2))); + return new Object[] {}; + } } From f1ed151f6bbfeee8567d8d64787c309926195c1e Mon Sep 17 00:00:00 2001 From: BallOfEnergy <66693744+BallOfEnergy1@users.noreply.github.com> Date: Mon, 10 Jun 2024 22:35:23 -0500 Subject: [PATCH 39/69] add distance check and begin work on radar OC compat!!!! --- .../machine/TileEntityMachineRadarNT.java | 14 +++++++++++++- .../tileentity/turret/TileEntityTurretArty.java | 4 +++- .../turret/TileEntityTurretBaseArtillery.java | 7 +++++++ 3 files changed, 23 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadarNT.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadarNT.java index e4f255b8a..5fa8497be 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadarNT.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadarNT.java @@ -37,11 +37,13 @@ import api.hbm.entity.IRadarDetectable; import api.hbm.entity.IRadarDetectableNT; import api.hbm.entity.IRadarDetectableNT.RadarScanParams; import api.hbm.entity.RadarEntry; +import cpw.mods.fml.common.Optional; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import cpw.mods.fml.common.network.internal.FMLNetworkHandler; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import io.netty.buffer.ByteBuf; +import li.cil.oc.api.network.SimpleComponent; import net.minecraft.client.gui.GuiScreen; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLivingBase; @@ -60,7 +62,8 @@ import net.minecraft.world.WorldServer; * Now with SmЯt™ lag-free entity detection! (patent pending) * @author hbm */ -public class TileEntityMachineRadarNT extends TileEntityMachineBase implements IEnergyReceiverMK2, IGUIProvider, IConfigurableMachine, IControlReceiver { +@Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "OpenComputers")}) +public class TileEntityMachineRadarNT extends TileEntityMachineBase implements IEnergyReceiverMK2, IGUIProvider, IConfigurableMachine, IControlReceiver, SimpleComponent { public boolean scanMissiles = true; public boolean scanShells = true; @@ -592,4 +595,13 @@ public class TileEntityMachineRadarNT extends TileEntityMachineBase implements I return null; }); } + + //OC compat! + + @Override + public String getComponentName() { + return "ntm_radar"; + } + + //soon :tm: } diff --git a/src/main/java/com/hbm/tileentity/turret/TileEntityTurretArty.java b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretArty.java index 869255de8..fcea913b7 100644 --- a/src/main/java/com/hbm/tileentity/turret/TileEntityTurretArty.java +++ b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretArty.java @@ -472,7 +472,9 @@ public class TileEntityTurretArty extends TileEntityTurretBaseArtillery implemen @Optional.Method(modid = "OpenComputers") public Object[] addCoords(Context context, Arguments args) { this.mode = MODE_MANUAL; + if(Math.sqrt(Math.pow(xCoord - args.checkDouble(0), 2)+Math.pow(yCoord - args.checkDouble(1), 2)+Math.pow(zCoord - args.checkDouble(2), 2)) >= this.getDecetorRange()) // check distance against range + return new Object[] {false}; targetQueue.add(Vec3.createVectorHelper(args.checkDouble(0), args.checkDouble(1), args.checkDouble(2))); - return new Object[] {}; + return new Object[] {true}; } } diff --git a/src/main/java/com/hbm/tileentity/turret/TileEntityTurretBaseArtillery.java b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretBaseArtillery.java index e499c6d0a..b4e4f1155 100644 --- a/src/main/java/com/hbm/tileentity/turret/TileEntityTurretBaseArtillery.java +++ b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretBaseArtillery.java @@ -79,9 +79,16 @@ public abstract class TileEntityTurretBaseArtillery extends TileEntityTurretBase public String getComponentName() { return "ntm_artillery"; } + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getCurrentTarget(Context context, Arguments args) { return new Object[] {targetQueue.get(0).xCoord, targetQueue.get(0).yCoord, targetQueue.get(0).zCoord}; } + + @Callback(direct = true) + @Optional.Method(modid = "OpenComputers") + public Object[] getTargetDistance(Context context, Arguments args) { + return new Object[] {Math.sqrt(Math.pow(xCoord - args.checkDouble(0), 2)+Math.pow(yCoord - args.checkDouble(1), 2)+Math.pow(zCoord - args.checkDouble(2), 2))}; + } } From bc45b66052ad39420d2548ed4d7b72b94333e401 Mon Sep 17 00:00:00 2001 From: BallOfEnergy <66693744+BallOfEnergy1@users.noreply.github.com> Date: Tue, 11 Jun 2024 16:28:59 -0500 Subject: [PATCH 40/69] Force PWR to use doubles as control rod values, round to 100s place when displaying to prevent floating-point errors looking terrible. also add cable gauge and radar compat telex is next --- .../hbm/blocks/network/BlockCableGauge.java | 25 ++++++- .../java/com/hbm/inventory/gui/GUIPWR.java | 2 +- .../machine/TileEntityMachineRadarNT.java | 72 ++++++++++++++++++- .../machine/TileEntityPWRController.java | 23 +++--- 4 files changed, 108 insertions(+), 14 deletions(-) diff --git a/src/main/java/com/hbm/blocks/network/BlockCableGauge.java b/src/main/java/com/hbm/blocks/network/BlockCableGauge.java index 980bdfb32..0983c9be6 100644 --- a/src/main/java/com/hbm/blocks/network/BlockCableGauge.java +++ b/src/main/java/com/hbm/blocks/network/BlockCableGauge.java @@ -14,8 +14,13 @@ import com.hbm.util.BobMathUtil; import com.hbm.util.I18nUtil; import api.hbm.energymk2.PowerNetMK2; +import cpw.mods.fml.common.Optional; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import 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.BlockContainer; import net.minecraft.block.BlockPistonBase; import net.minecraft.block.material.Material; @@ -98,7 +103,8 @@ public class BlockCableGauge extends BlockContainer implements IBlockMultiPass, return IBlockMultiPass.getRenderType(); } - public static class TileEntityCableGauge extends TileEntityCableBaseNT implements INBTPacketReceiver { + @Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "OpenComputers")}) + public static class TileEntityCableGauge extends TileEntityCableBaseNT implements INBTPacketReceiver, SimpleComponent { private long deltaTick = 0; private long deltaSecond = 0; @@ -134,5 +140,22 @@ public class BlockCableGauge extends BlockContainer implements IBlockMultiPass, this.deltaTick = Math.max(nbt.getLong("deltaT"), 0); this.deltaLastSecond = Math.max(nbt.getLong("deltaS"), 0); } + + @Override + public String getComponentName() { + return "ntm_power_gauge"; + } + + @Callback(direct = true) + @Optional.Method(modid = "OpenComputers") + public Object[] getTransfer(Context context, Arguments args) { + return new Object[] {deltaTick, deltaSecond}; + } + + @Callback(direct = true) + @Optional.Method(modid = "OpenComputers") + public Object[] getInfo(Context context, Arguments args) { + return new Object[] {deltaTick, deltaSecond, xCoord, yCoord, zCoord}; + } } } diff --git a/src/main/java/com/hbm/inventory/gui/GUIPWR.java b/src/main/java/com/hbm/inventory/gui/GUIPWR.java index d60c3bece..db21f4194 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIPWR.java +++ b/src/main/java/com/hbm/inventory/gui/GUIPWR.java @@ -65,7 +65,7 @@ public class GUIPWR extends GuiInfoContainer { this.drawCustomInfoStat(x, y, guiLeft + 151, guiTop + 31, 18, 18, x, y, new String[] { "Hull: " + String.format(Locale.US, "%,d", controller.hullHeat) + " / " + String.format(Locale.US, "%,d", controller.hullHeatCapacityBase) + " TU" }); this.drawCustomInfoStat(x, y, guiLeft + 52, guiTop + 31, 36, 18, x, y, new String[] { ((int) (controller.progress * 100 / controller.processTime)) + "%" }); - this.drawCustomInfoStat(x, y, guiLeft + 52, guiTop + 53, 54, 4, x, y, "Control rod level: " + (100 - controller.rodLevel) + "%"); + this.drawCustomInfoStat(x, y, guiLeft + 52, guiTop + 53, 54, 4, x, y, "Control rod level: " + (100 - (Math.round(controller.rodLevel * 100)/100)) + "%"); if(controller.typeLoaded != -1 && controller.amountLoaded > 0) { ItemStack display = new ItemStack(ModItems.pwr_fuel, 1, controller.typeLoaded); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadarNT.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadarNT.java index 5fa8497be..630628f4b 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadarNT.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadarNT.java @@ -43,6 +43,9 @@ import cpw.mods.fml.common.network.internal.FMLNetworkHandler; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import io.netty.buffer.ByteBuf; +import 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; @@ -603,5 +606,72 @@ public class TileEntityMachineRadarNT extends TileEntityMachineBase implements I return "ntm_radar"; } - //soon :tm: + @Callback(direct = true) + @Optional.Method(modid = "OpenComputers") + public Object[] getSettings(Context context, Arguments args) { + return new Object[] {scanMissiles, scanShells, scanPlayers, smartMode}; + } + + @Callback(direct = true) + @Optional.Method(modid = "OpenComputers") + public Object[] getRange(Context context, Arguments args) { + return new Object[] {this.getRange()}; + } + + @Callback(direct = true, limit = 4) + @Optional.Method(modid = "OpenComputers") + public Object[] setSettings(Context context, Arguments args) { + this.scanMissiles = args.checkBoolean(0); + this.scanShells = args.checkBoolean(1); + this.scanPlayers = args.checkBoolean(2); + this.smartMode = args.checkBoolean(3); + return new Object[] {}; + } + + @Callback(direct = true) + @Optional.Method(modid = "OpenComputers") + public Object[] getEnergyInfo(Context context, Arguments args) { + return new Object[] {getPower(), getMaxPower()}; + } + + @Callback(direct = true) + @Optional.Method(modid = "OpenComputers") + public Object[] isJammed(Context context, Arguments args) { + return new Object[] {this.jammed}; + } + + @Callback(direct = true) + @Optional.Method(modid = "OpenComputers") + public Object[] getAmount(Context context, Arguments args) { + return new Object[] {entries.size()}; + } + + @Callback(direct = true) + @Optional.Method(modid = "OpenComputers") + public Object[] isIndexPlayer(Context context, Arguments args) { + int index = args.checkInteger(0); + RadarEntry e = entries.get(0); + return new Object[] {e.blipLevel == IRadarDetectableNT.PLAYER}; + } + + @Callback(direct = true) + @Optional.Method(modid = "OpenComputers") + public Object[] getIndexType(Context context, Arguments args) { + int index = args.checkInteger(0); + RadarEntry e = entries.get(0); + return new Object[] {e.blipLevel}; + } + + @Callback(direct = true) + @Optional.Method(modid = "OpenComputers") + public Object[] getEntityAtIndex(Context context, Arguments args) { + int index = args.checkInteger(0); + RadarEntry e = entries.get(0); + boolean isPlayer = (boolean)this.isIndexPlayer(context, args)[0]; + int type = (int)this.getIndexType(context, args)[0]; + if(isPlayer) { + return new Object[]{true, e.posX, e.posY, e.posZ, type, e.unlocalizedName}; + } + return new Object[]{false, e.posX, e.posY, e.posZ, type}; + } } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityPWRController.java b/src/main/java/com/hbm/tileentity/machine/TileEntityPWRController.java index ffebeb03c..d89808249 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityPWRController.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityPWRController.java @@ -53,8 +53,8 @@ public class TileEntityPWRController extends TileEntityMachineBase implements IG public static final int hullHeatCapacityBase = 10_000_000; public double flux; - public int rodLevel = 100; - public int rodTarget = 100; + public double rodLevel = 100; + public double rodTarget = 100; public int typeLoaded; public int amountLoaded; @@ -202,7 +202,8 @@ public class TileEntityPWRController extends TileEntityMachineBase implements IG this.decrStackSize(0, 1); this.markChanged(); } - + double diff = this.rodLevel - this.rodTarget; + if(diff < 1 && diff > -1) this.rodLevel = this.rodTarget; if(this.rodTarget > this.rodLevel) this.rodLevel++; if(this.rodTarget < this.rodLevel) this.rodLevel--; @@ -280,8 +281,8 @@ public class TileEntityPWRController extends TileEntityMachineBase implements IG data.setDouble("progress", progress); data.setInteger("typeLoaded", typeLoaded); data.setInteger("amountLoaded", amountLoaded); - data.setInteger("rodLevel", rodLevel); - data.setInteger("rodTarget", rodTarget); + data.setDouble("rodLevel", rodLevel); + data.setDouble("rodTarget", rodTarget); data.setInteger("coreHeatCapacity", coreHeatCapacity); this.networkPack(data, 150); } else { @@ -395,7 +396,7 @@ public class TileEntityPWRController extends TileEntityMachineBase implements IG progress = nbt.getDouble("progress"); typeLoaded = nbt.getInteger("typeLoaded"); amountLoaded = nbt.getInteger("amountLoaded"); - rodLevel = nbt.getInteger("rodLevel"); + rodLevel = nbt.getDouble("rodLevel"); rodTarget = nbt.getInteger("rodTarget"); coreHeatCapacity = nbt.getInteger("coreHeatCapacity"); } @@ -454,8 +455,8 @@ public class TileEntityPWRController extends TileEntityMachineBase implements IG this.coreHeat = nbt.getInteger("coreHeat"); this.hullHeat = nbt.getInteger("hullHeat"); this.flux = nbt.getDouble("flux"); - this.rodLevel = nbt.getInteger("rodLevel"); - this.rodTarget = nbt.getInteger("rodTarget"); + this.rodLevel = nbt.getDouble("rodLevel"); + this.rodTarget = nbt.getDouble("rodTarget"); this.typeLoaded = nbt.getInteger("typeLoaded"); this.amountLoaded = nbt.getInteger("amountLoaded"); this.progress = nbt.getDouble("progress"); @@ -499,8 +500,8 @@ public class TileEntityPWRController extends TileEntityMachineBase implements IG nbt.setInteger("coreHeat", coreHeat); nbt.setInteger("hullHeat", hullHeat); nbt.setDouble("flux", flux); - nbt.setInteger("rodLevel", rodLevel); - nbt.setInteger("rodTarget", rodTarget); + nbt.setDouble("rodLevel", rodLevel); + nbt.setDouble("rodTarget", rodTarget); nbt.setInteger("typeLoaded", typeLoaded); nbt.setInteger("amountLoaded", amountLoaded); nbt.setDouble("progress", progress); @@ -588,7 +589,7 @@ public class TileEntityPWRController extends TileEntityMachineBase implements IG @Callback(direct = true, limit = 4) @Optional.Method(modid = "OpenComputers") public Object[] setLevel(Context context, Arguments args) { - rodTarget = MathHelper.clamp_int(args.checkInteger(0), 0, 100); + rodTarget = MathHelper.clamp_double(args.checkDouble(0), 0, 100); this.markChanged(); return new Object[] {true}; } From a8d3d7e5bdcc983310216cf7698141410e0d83f2 Mon Sep 17 00:00:00 2001 From: BallOfEnergy <66693744+BallOfEnergy1@users.noreply.github.com> Date: Tue, 11 Jun 2024 18:03:26 -0500 Subject: [PATCH 41/69] this pisses me off bad TELEX compatibility yes it can do multiple lines yes it limits the amount of characters yes you have to do the control bytes yourself (Bell, Print, etc.) --- .../network/TileEntityRadioTelex.java | 87 ++++++++++++++++++- 1 file changed, 86 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/hbm/tileentity/network/TileEntityRadioTelex.java b/src/main/java/com/hbm/tileentity/network/TileEntityRadioTelex.java index 5f2e68975..1e6553f24 100644 --- a/src/main/java/com/hbm/tileentity/network/TileEntityRadioTelex.java +++ b/src/main/java/com/hbm/tileentity/network/TileEntityRadioTelex.java @@ -2,6 +2,7 @@ package com.hbm.tileentity.network; import java.util.ArrayList; import java.util.List; +import java.util.Objects; import com.hbm.interfaces.IControlReceiver; import com.hbm.inventory.gui.GuiScreenRadioTelex; @@ -10,8 +11,13 @@ import com.hbm.tileentity.INBTPacketReceiver; import com.hbm.tileentity.network.RTTYSystem.RTTYChannel; import com.hbm.util.ItemStackUtil; +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.item.EntityItem; import net.minecraft.entity.player.EntityPlayer; @@ -23,7 +29,8 @@ import net.minecraft.tileentity.TileEntity; import net.minecraft.util.AxisAlignedBB; import net.minecraft.world.World; -public class TileEntityRadioTelex extends TileEntity implements INBTPacketReceiver, IControlReceiver, IGUIProvider { +@Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "OpenComputers")}) +public class TileEntityRadioTelex extends TileEntity implements INBTPacketReceiver, IControlReceiver, IGUIProvider, SimpleComponent { public static final int lineWidth = 33; public String txChannel = ""; @@ -250,4 +257,82 @@ public class TileEntityRadioTelex extends TileEntity implements INBTPacketReceiv public double getMaxRenderDistanceSquared() { return 65536.0D; } + + @Override + public String getComponentName() { + return "ntm_telex"; + } + + @Callback(direct = true) + @Optional.Method(modid = "OpenComputers") + public Object[] getChannels(Context context, Arguments args) { + return new Object[] {this.txChannel, this.rxChannel}; + } + + @Callback + @Optional.Method(modid = "OpenComputers") + public Object[] setChannels(Context context, Arguments args) { + String[] old = {this.txChannel, this.rxChannel}; + this.rxChannel = args.checkString(0); + this.txChannel = args.checkString(1); + return new Object[] {old[0], old[1]}; + } + + @Callback(direct = true) + @Optional.Method(modid = "OpenComputers") + public Object[] getSendingTexts(Context context, Arguments args) { + return new Object[] {this.txBuffer[0], this.txBuffer[1], this.txBuffer[2], this.txBuffer[3], this.txBuffer[4]}; + } + + @Callback(direct = true) + @Optional.Method(modid = "OpenComputers") + public Object[] getReceivingText(Context context, Arguments args) { + return new Object[] {this.rxBuffer[0], this.rxBuffer[1], this.rxBuffer[2], this.rxBuffer[3], this.rxBuffer[4]}; + } + + @Callback + @Optional.Method(modid = "OpenComputers") + public Object[] setSendingText(Context context, Arguments args) { // this function nearly killed me + for(int i = 0; i < 5; i++) { + // check if it was never given or if it's an empty string + // if it was never given then just assign it as an empty string + // this also checks if it's even a string at all + if(args.checkAny(i) == null || Objects.equals(args.checkString(i), "")) + this.txBuffer[i] = ""; + if(!Objects.equals(args.checkString(i), "")) { // if it isn't an empty string + if(args.checkString(i).length() > TileEntityRadioTelex.lineWidth) { // line longer than allowed + this.txBuffer[i] = args.checkString(i).substring(0, TileEntityRadioTelex.lineWidth); // truncate it + } else + this.txBuffer[i] = args.checkString(i); // else just set it directly + } + } + return new Object[] {true}; + } + + @Callback //you don't get to run this more than once per tick, that would be very very bad + @Optional.Method(modid = "OpenComputers") + public Object[] printMessage(Context context, Arguments args) { + this.print(); + return new Object[] {}; + } + + @Callback(direct = true) + @Optional.Method(modid = "OpenComputers") + public Object[] clearAll(Context context, Arguments args) { + for(int i = 0; i < 5; i++) this.rxBuffer[i] = ""; + this.writingLine = 0; + return new Object[] {}; + } + + @Callback + @Optional.Method(modid = "OpenComputers") + public Object[] sendMessage(Context context, Arguments args) { + if(!this.isSending) { + this.isSending = true; + this.sendingLine = 0; + this.sendingIndex = 0; + return new Object[] {true}; + } + return new Object[] {false}; + } } From 7f652931a049b40bafcb05590cfae283fc5a5a89 Mon Sep 17 00:00:00 2001 From: BallOfEnergy <66693744+BallOfEnergy1@users.noreply.github.com> Date: Tue, 11 Jun 2024 22:10:31 -0500 Subject: [PATCH 42/69] begin work on launch pad compat (again) --- .../com/hbm/tileentity/bomb/TileEntityLaunchTable.java | 7 ------- 1 file changed, 7 deletions(-) diff --git a/src/main/java/com/hbm/tileentity/bomb/TileEntityLaunchTable.java b/src/main/java/com/hbm/tileentity/bomb/TileEntityLaunchTable.java index 9123d3aa0..0c4d1422e 100644 --- a/src/main/java/com/hbm/tileentity/bomb/TileEntityLaunchTable.java +++ b/src/main/java/com/hbm/tileentity/bomb/TileEntityLaunchTable.java @@ -682,13 +682,6 @@ public class TileEntityLaunchTable extends TileEntityLoadedBase implements ISide } else return new Object[] {false}; - // Not sure if i should have this - /* - if(xCoord2 == xCoord && zCoord2 == zCoord) { - xCoord2 += 1; - } - */ - return new Object[] {xCoord2, zCoord2}; } return new Object[] {false, "Designator not found"}; From 634804fa2e8c71391f5d04dd2b0e1714612a96cc Mon Sep 17 00:00:00 2001 From: BallOfEnergy <66693744+BallOfEnergy1@users.noreply.github.com> Date: Tue, 11 Jun 2024 22:14:22 -0500 Subject: [PATCH 43/69] stupid --- .../com/hbm/tileentity/network/TileEntityRadioTelex.java | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/hbm/tileentity/network/TileEntityRadioTelex.java b/src/main/java/com/hbm/tileentity/network/TileEntityRadioTelex.java index 1e6553f24..b2ad7b4d0 100644 --- a/src/main/java/com/hbm/tileentity/network/TileEntityRadioTelex.java +++ b/src/main/java/com/hbm/tileentity/network/TileEntityRadioTelex.java @@ -2,7 +2,6 @@ package com.hbm.tileentity.network; import java.util.ArrayList; import java.util.List; -import java.util.Objects; import com.hbm.interfaces.IControlReceiver; import com.hbm.inventory.gui.GuiScreenRadioTelex; @@ -297,9 +296,9 @@ public class TileEntityRadioTelex extends TileEntity implements INBTPacketReceiv // check if it was never given or if it's an empty string // if it was never given then just assign it as an empty string // this also checks if it's even a string at all - if(args.checkAny(i) == null || Objects.equals(args.checkString(i), "")) + if(args.checkAny(i) == null || args.checkString(i).equals("")) this.txBuffer[i] = ""; - if(!Objects.equals(args.checkString(i), "")) { // if it isn't an empty string + if(args.checkString(i).equals("")) { // if it isn't an empty string if(args.checkString(i).length() > TileEntityRadioTelex.lineWidth) { // line longer than allowed this.txBuffer[i] = args.checkString(i).substring(0, TileEntityRadioTelex.lineWidth); // truncate it } else From 45cdf2c823cd57fab4d5855a9685cd8d39e84c33 Mon Sep 17 00:00:00 2001 From: BallOfEnergy <66693744+BallOfEnergy1@users.noreply.github.com> Date: Wed, 12 Jun 2024 16:18:25 -0500 Subject: [PATCH 44/69] launch pad compat!! ITER compat and ICF compat next probably --- .../bomb/TileEntityLaunchPadBase.java | 63 ++++++++++++++++++- .../bomb/TileEntityLaunchTable.java | 2 +- 2 files changed, 63 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/hbm/tileentity/bomb/TileEntityLaunchPadBase.java b/src/main/java/com/hbm/tileentity/bomb/TileEntityLaunchPadBase.java index 3d36b7ff1..b9e87115c 100644 --- a/src/main/java/com/hbm/tileentity/bomb/TileEntityLaunchPadBase.java +++ b/src/main/java/com/hbm/tileentity/bomb/TileEntityLaunchPadBase.java @@ -4,6 +4,11 @@ import java.util.HashMap; import java.util.HashSet; import java.util.Set; +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 org.apache.logging.log4j.Level; import com.hbm.config.GeneralConfig; @@ -49,7 +54,8 @@ import net.minecraft.util.Vec3; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; -public abstract class TileEntityLaunchPadBase extends TileEntityMachineBase implements IEnergyReceiverMK2, IFluidStandardReceiver, IGUIProvider, IRadarCommandReceiver { +@Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "OpenComputers")}) +public abstract class TileEntityLaunchPadBase extends TileEntityMachineBase implements IEnergyReceiverMK2, IFluidStandardReceiver, IGUIProvider, IRadarCommandReceiver, SimpleComponent { /** Automatic instantiation of generic missiles, i.e. everything that both extends EntityMissileBaseNT and needs a designator */ public static final HashMap> missiles = new HashMap(); @@ -462,4 +468,59 @@ public abstract class TileEntityLaunchPadBase extends TileEntityMachineBase impl /** Any extra conditions for launching in addition to the missile being valid and fueled */ public abstract boolean isReadyForLaunch(); public abstract double getLaunchOffset(); + + // do some opencomputer stuff + @Override + public String getComponentName() { + return "ntm_launch_pad"; + } + + @Callback(direct = true) + @Optional.Method(modid = "OpenComputers") + public Object[] getEnergyInfo(Context context, Arguments args) { + return new Object[] {getPower(), getMaxPower()}; + } + + @Callback(direct = true) + @Optional.Method(modid = "OpenComputers") + public Object[] getFluid(Context context, Arguments args) { + return new Object[] { + this.tanks[0].getFill(), this.tanks[0].getMaxFill(), this.tanks[0].getTankType().getUnlocalizedName(), + this.tanks[1].getFill(), this.tanks[1].getMaxFill(), this.tanks[1].getTankType().getUnlocalizedName() + }; + } + + @Callback(direct = true) + @Optional.Method(modid = "OpenComputers") + public Object[] canLaunch(Context context, Arguments args) { + return new Object[] {canLaunch()}; + } + + @Callback(direct = true) + @Optional.Method(modid = "OpenComputers") + public Object[] getTier(Context context, Arguments args) { + if(!isMissileValid()) + return new Object[] {}; + ItemMissile missile = (ItemMissile) slots[0].getItem(); + if(missile.tier == ItemMissile.MissileTier.TIER0) + return new Object[] {0}; + if(missile.tier == ItemMissile.MissileTier.TIER1) + return new Object[] {1}; + if(missile.tier == ItemMissile.MissileTier.TIER2) + return new Object[] {2}; + if(missile.tier == ItemMissile.MissileTier.TIER3) + return new Object[] {3}; + if(missile.tier == ItemMissile.MissileTier.TIER4) + return new Object[] {4}; + return new Object[] {5}; // unknown tier + } + + @Callback + @Optional.Method(modid = "OpenComputers") + public Object[] launch(Context context, Arguments args) { + if(canLaunch()) { + return new Object[] {sendCommandPosition(args.checkInteger(0), -1 /*unused anyway*/, args.checkInteger(1))}; + } + return new Object[] {false}; + } } diff --git a/src/main/java/com/hbm/tileentity/bomb/TileEntityLaunchTable.java b/src/main/java/com/hbm/tileentity/bomb/TileEntityLaunchTable.java index 0c4d1422e..db8c0d05b 100644 --- a/src/main/java/com/hbm/tileentity/bomb/TileEntityLaunchTable.java +++ b/src/main/java/com/hbm/tileentity/bomb/TileEntityLaunchTable.java @@ -649,7 +649,7 @@ public class TileEntityLaunchTable extends TileEntityLoadedBase implements ISide // do some opencomputer stuff @Override public String getComponentName() { - return "large_launch_pad"; + return "ntm_custom_launch_pad"; } @Callback From b6125ac24f572305d41a40455107aa4044b0f048 Mon Sep 17 00:00:00 2001 From: BallOfEnergy <66693744+BallOfEnergy1@users.noreply.github.com> Date: Wed, 12 Jun 2024 16:30:29 -0500 Subject: [PATCH 45/69] ITER/fusion compat done blankets, fluid, energy, everything! --- .../bomb/TileEntityLaunchTable.java | 6 +- .../tileentity/machine/TileEntityITER.java | 65 ++++++++++++++++++- 2 files changed, 69 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/hbm/tileentity/bomb/TileEntityLaunchTable.java b/src/main/java/com/hbm/tileentity/bomb/TileEntityLaunchTable.java index db8c0d05b..ff9841e1f 100644 --- a/src/main/java/com/hbm/tileentity/bomb/TileEntityLaunchTable.java +++ b/src/main/java/com/hbm/tileentity/bomb/TileEntityLaunchTable.java @@ -661,7 +661,11 @@ public class TileEntityLaunchTable extends TileEntityLoadedBase implements ISide @Callback @Optional.Method(modid = "OpenComputers") public Object[] getContents(Context context, Arguments args) { - return new Object[] {tanks[0].getFill(), tanks[0].getMaxFill(), tanks[0].getTankType().getName(), tanks[1].getFill(), tanks[1].getMaxFill(), tanks[1].getTankType().getName(), solid, maxSolid}; + return new Object[] { + tanks[0].getFill(), tanks[0].getMaxFill(), tanks[0].getTankType().getUnlocalizedName(), + tanks[1].getFill(), tanks[1].getMaxFill(), tanks[1].getTankType().getUnlocalizedName(), + solid, maxSolid + }; } @Callback diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityITER.java b/src/main/java/com/hbm/tileentity/machine/TileEntityITER.java index 22fb2665d..e7af16727 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityITER.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityITER.java @@ -33,9 +33,14 @@ import com.hbm.util.fauxpointtwelve.DirPos; import api.hbm.energymk2.IEnergyReceiverMK2; import api.hbm.fluid.IFluidStandardTransceiver; import api.hbm.tile.IInfoProviderEC; +import cpw.mods.fml.common.Optional; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import 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; @@ -46,7 +51,8 @@ import net.minecraft.util.Vec3; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityITER extends TileEntityMachineBase implements IEnergyReceiverMK2, IFluidAcceptor, IFluidSource, IFluidStandardTransceiver, IGUIProvider, IInfoProviderEC { +@Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "OpenComputers")}) +public class TileEntityITER extends TileEntityMachineBase implements IEnergyReceiverMK2, IFluidAcceptor, IFluidSource, IFluidStandardTransceiver, IGUIProvider, IInfoProviderEC, SimpleComponent { public long power; public static final long maxPower = 10000000; @@ -659,4 +665,61 @@ public class TileEntityITER extends TileEntityMachineBase implements IEnergyRece data.setDouble("consumption", output * 10); data.setDouble("outputmb", output); } + + + @Override + public String getComponentName() { + return "ntm_fusion"; + } + + @Callback(direct = true) + @Optional.Method(modid = "OpenComputers") + public Object[] getEnergyInfo(Context context, Arguments args) { + return new Object[] {getPower(), getMaxPower()}; + } + + @Callback(direct = true) + @Optional.Method(modid = "OpenComputers") + public Object[] isActive(Context context, Arguments args) { + return new Object[] {isOn}; + } + + @Callback(direct = true, limit = 4) + @Optional.Method(modid = "OpenComputers") + public Object[] setActive(Context context, Arguments args) { + isOn = args.checkBoolean(0); + return new Object[] {}; + } + + @Callback(direct = true) + @Optional.Method(modid = "OpenComputers") + public Object[] getFluid(Context context, Arguments args) { + return new Object[] { + tanks[0].getFill(), tanks[0].getMaxFill(), + tanks[1].getFill(), tanks[1].getMaxFill(), + plasma.getFill(), plasma.getMaxFill(), plasma.getTankType().getUnlocalizedName() + }; + } + + @Callback(direct = true) + @Optional.Method(modid = "OpenComputers") + public Object[] getPlasmaTemp(Context context, Arguments args) { + return new Object[] {plasma.getTankType().temperature}; + } + + @Callback(direct = true) + @Optional.Method(modid = "OpenComputers") + public Object[] getMaxTemp(Context context, Arguments args) { + if (slots[3] != null && (slots[3].getItem() instanceof ItemFusionShield)) + return new Object[] {((ItemFusionShield) slots[3].getItem()).maxTemp}; + return new Object[] {"N/A"}; + } + + @Callback(direct = true) + @Optional.Method(modid = "OpenComputers") + public Object[] getBlanketDamage(Context context, Arguments args) { + if (slots[3] != null && (slots[3].getItem() instanceof ItemFusionShield)) + return new Object[]{ItemFusionShield.getShieldDamage(slots[3]), ((ItemFusionShield)slots[3].getItem()).maxDamage}; + return new Object[] {"N/A", "N/A"}; + } } From 872f2beb55e5e64592e6b76cce9c0e4ad8b891a4 Mon Sep 17 00:00:00 2001 From: Vaern Date: Wed, 12 Jun 2024 15:43:19 -0700 Subject: [PATCH 46/69] mass byte bufferization --- .../machine/TileEntityCrucible.java | 58 ++++++++------- .../hbm/tileentity/machine/TileEntityFEL.java | 37 +++++----- .../machine/TileEntityFireboxBase.java | 44 ++++++------ .../machine/TileEntityFurnaceCombination.java | 36 +++++----- .../machine/TileEntityHeaterOilburner.java | 32 +++++---- .../machine/TileEntityMachineArcWelder.java | 71 +++++++++++-------- .../machine/TileEntityMachineAssembler.java | 40 +++++++---- .../machine/TileEntityMachineAssemfac.java | 40 ++++++++--- .../machine/TileEntityMachineAutocrafter.java | 43 ++++++----- .../machine/TileEntityMachineCentrifuge.java | 28 ++++---- .../machine/TileEntityMachineChemfac.java | 59 ++++++++------- .../TileEntityMachineCrystallizer.java | 35 +++++---- .../TileEntityMachineElectricFurnace.java | 36 +++++----- .../machine/TileEntityMachineExcavator.java | 55 +++++++------- .../machine/TileEntityMachineGasCent.java | 56 +++++++++------ .../machine/TileEntityMachineMixer.java | 27 ++++++- .../machine/TileEntityMachineWoodBurner.java | 52 ++++++++------ .../tileentity/machine/TileEntitySILEX.java | 58 ++++++++------- 18 files changed, 476 insertions(+), 331 deletions(-) diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityCrucible.java b/src/main/java/com/hbm/tileentity/machine/TileEntityCrucible.java index 23cdbd0ab..1fb87fc69 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityCrucible.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityCrucible.java @@ -30,6 +30,7 @@ import api.hbm.tile.IHeatSource; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; import net.minecraft.client.gui.GuiScreen; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.item.EntityItem; @@ -220,38 +221,47 @@ public class TileEntityCrucible extends TileEntityMachineBase implements IGUIPro this.wasteStack.removeIf(x -> x.amount <= 0); /* sync */ - NBTTagCompound data = new NBTTagCompound(); - int[] rec = new int[recipeStack.size() * 2]; - int[] was = new int[wasteStack.size() * 2]; - for(int i = 0; i < recipeStack.size(); i++) { MaterialStack sta = recipeStack.get(i); rec[i * 2] = sta.material.id; rec[i * 2 + 1] = sta.amount; } - for(int i = 0; i < wasteStack.size(); i++) { MaterialStack sta = wasteStack.get(i); was[i * 2] = sta.material.id; was[i * 2 + 1] = sta.amount; } - data.setIntArray("rec", rec); - data.setIntArray("was", was); - data.setInteger("progress", progress); - data.setInteger("heat", heat); - this.networkPack(data, 25); + this.networkPackNT(25); } } - + @Override - public void networkUnpack(NBTTagCompound nbt) { - super.networkUnpack(nbt); - - this.recipeStack.clear(); - this.wasteStack.clear(); + public void serialize(ByteBuf buf) { + super.serialize(buf); + buf.writeInt(progress); + buf.writeInt(heat); - int[] rec = nbt.getIntArray("rec"); - for(int i = 0; i < rec.length / 2; i++) { - recipeStack.add(new MaterialStack(Mats.matById.get(rec[i * 2]), rec[i * 2 + 1])); + buf.writeShort(recipeStack.size()); + for(MaterialStack sta : recipeStack) { + buf.writeInt(sta.material.id); + buf.writeInt(sta.amount); } - int[] was = nbt.getIntArray("was"); - for(int i = 0; i < was.length / 2; i++) { - wasteStack.add(new MaterialStack(Mats.matById.get(was[i * 2]), was[i * 2 + 1])); + buf.writeShort(wasteStack.size()); + for(MaterialStack sta : wasteStack) { + buf.writeInt(sta.material.id); + buf.writeInt(sta.amount); + } + } + + @Override + public void deserialize(ByteBuf buf) { + super.deserialize(buf); + progress = buf.readInt(); + heat = buf.readInt(); + + recipeStack.clear(); + wasteStack.clear(); + + int mats = buf.readShort(); + for(int i = 0; i < mats; i++) { + recipeStack.add(new MaterialStack(Mats.matById.get(buf.readInt()), buf.readInt())); } - this.progress = nbt.getInteger("progress"); - this.heat = nbt.getInteger("heat"); + mats = buf.readShort(); + for(int i = 0; i < mats; i++) { + wasteStack.add(new MaterialStack(Mats.matById.get(buf.readInt()), buf.readInt())); + } } @Override diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityFEL.java b/src/main/java/com/hbm/tileentity/machine/TileEntityFEL.java index e48dfd33a..5867f36d2 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityFEL.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityFEL.java @@ -16,6 +16,7 @@ import com.hbm.main.MainRegistry; import com.hbm.sound.AudioWrapper; import com.hbm.tileentity.IGUIProvider; import com.hbm.tileentity.TileEntityMachineBase; +import com.hbm.util.BufferUtil; import com.hbm.util.ContaminationUtil; import com.hbm.util.ContaminationUtil.ContaminationType; import com.hbm.util.ContaminationUtil.HazardType; @@ -23,6 +24,7 @@ import com.hbm.util.ContaminationUtil.HazardType; import api.hbm.energymk2.IEnergyReceiverMK2; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; import net.minecraft.block.Block; import net.minecraft.client.gui.GuiScreen; import net.minecraft.entity.EntityLivingBase; @@ -176,13 +178,7 @@ public class TileEntityFEL extends TileEntityMachineBase implements IEnergyRecei } } - NBTTagCompound data = new NBTTagCompound(); - data.setLong("power", power); - data.setString("mode", mode.toString()); - data.setBoolean("isOn", isOn); - data.setBoolean("valid", missingValidSilex); - data.setInteger("distance", distance); - this.networkPack(data, 250); + this.networkPackNT(250); } else { if(power > powerReq * Math.pow(2, mode.ordinal()) && isOn && !(mode == EnumWavelengths.NULL) && distance - 3 > 0) { @@ -224,16 +220,25 @@ public class TileEntityFEL extends TileEntityMachineBase implements IEnergyRecei return false; } - + @Override - public void networkUnpack(NBTTagCompound nbt) { - super.networkUnpack(nbt); - - this.power = nbt.getLong("power"); - this.mode = EnumWavelengths.valueOf(nbt.getString("mode")); - this.isOn = nbt.getBoolean("isOn"); - this.distance = nbt.getInteger("distance"); - this.missingValidSilex = nbt.getBoolean("valid"); + public void serialize(ByteBuf buf) { + super.serialize(buf); + buf.writeLong(power); + BufferUtil.writeString(buf, mode.toString()); + buf.writeBoolean(isOn); + buf.writeBoolean(missingValidSilex); + buf.writeInt(distance); + } + + @Override + public void deserialize(ByteBuf buf) { + super.deserialize(buf); + power = buf.readLong(); + mode = EnumWavelengths.valueOf(BufferUtil.readString(buf)); + isOn = buf.readBoolean(); + missingValidSilex = buf.readBoolean(); + distance = buf.readInt(); } @Override diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityFireboxBase.java b/src/main/java/com/hbm/tileentity/machine/TileEntityFireboxBase.java index c52d0270d..9f49f439e 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityFireboxBase.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityFireboxBase.java @@ -17,6 +17,7 @@ import api.hbm.fluid.IFluidStandardSender; import api.hbm.tile.IHeatSource; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; @@ -121,14 +122,7 @@ public abstract class TileEntityFireboxBase extends TileEntityMachinePolluting i this.burnHeat = 0; } - NBTTagCompound data = new NBTTagCompound(); - data.setInteger("maxBurnTime", this.maxBurnTime); - data.setInteger("burnTime", this.burnTime); - data.setInteger("burnHeat", this.burnHeat); - data.setInteger("heatEnergy", this.heatEnergy); - data.setInteger("playersUsing", this.playersUsing); - data.setBoolean("wasOn", this.wasOn); - this.networkPack(data, 50); + this.networkPackNT(50); } else { this.prevDoorAngle = this.doorAngle; float swingSpeed = (doorAngle / 10F) + 3; @@ -151,6 +145,28 @@ public abstract class TileEntityFireboxBase extends TileEntityMachinePolluting i } } + @Override + public void serialize(ByteBuf buf) { + super.serialize(buf); + buf.writeInt(maxBurnTime); + buf.writeInt(burnTime); + buf.writeInt(burnHeat); + buf.writeInt(heatEnergy); + buf.writeInt(playersUsing); + buf.writeBoolean(wasOn); + } + + @Override + public void deserialize(ByteBuf buf) { + super.deserialize(buf); + maxBurnTime = buf.readInt(); + burnTime = buf.readInt(); + burnHeat = buf.readInt(); + heatEnergy = buf.readInt(); + playersUsing = buf.readInt(); + wasOn = buf.readBoolean(); + } + public static EnumAshType getAshFromFuel(ItemStack stack) { List names = ItemStackUtil.getOreDictNames(stack); @@ -181,18 +197,6 @@ public abstract class TileEntityFireboxBase extends TileEntityMachinePolluting i public boolean isItemValidForSlot(int i, ItemStack itemStack) { return getModule().getBurnTime(itemStack) > 0; } - - @Override - public void networkUnpack(NBTTagCompound nbt) { - super.networkUnpack(nbt); - - this.maxBurnTime = nbt.getInteger("maxBurnTime"); - this.burnTime = nbt.getInteger("burnTime"); - this.burnHeat = nbt.getInteger("burnHeat"); - this.heatEnergy = nbt.getInteger("heatEnergy"); - this.playersUsing = nbt.getInteger("playersUsing"); - this.wasOn = nbt.getBoolean("wasOn"); - } @Override public void readFromNBT(NBTTagCompound nbt) { diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityFurnaceCombination.java b/src/main/java/com/hbm/tileentity/machine/TileEntityFurnaceCombination.java index 81fb4c1c3..2ef8e189e 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityFurnaceCombination.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityFurnaceCombination.java @@ -18,6 +18,7 @@ import api.hbm.fluid.IFluidStandardSender; import api.hbm.tile.IHeatSource; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; import net.minecraft.client.gui.GuiScreen; import net.minecraft.entity.Entity; import net.minecraft.entity.player.EntityPlayer; @@ -128,12 +129,7 @@ public class TileEntityFurnaceCombination extends TileEntityMachinePolluting imp this.progress = 0; } - NBTTagCompound data = new NBTTagCompound(); - data.setBoolean("wasOn", this.wasOn); - data.setInteger("heat", this.heat); - data.setInteger("progress", this.progress); - tank.writeToNBT(data, "t"); - this.networkPack(data, 50); + this.networkPackNT(50); } else { if(this.wasOn && worldObj.rand.nextInt(15) == 0) { @@ -142,6 +138,24 @@ public class TileEntityFurnaceCombination extends TileEntityMachinePolluting imp } } + @Override + public void serialize(ByteBuf buf) { + super.serialize(buf); + buf.writeBoolean(wasOn); + buf.writeInt(heat); + buf.writeInt(progress); + tank.serialize(buf); + } + + @Override + public void deserialize(ByteBuf buf) { + super.deserialize(buf); + wasOn = buf.readBoolean(); + heat = buf.readInt(); + progress = buf.readInt(); + tank.deserialize(buf); + } + public boolean canSmelt() { if(slots[0] == null) return false; Pair pair = CombinationRecipes.getOutput(slots[0]); @@ -165,16 +179,6 @@ public class TileEntityFurnaceCombination extends TileEntityMachinePolluting imp return true; } - - @Override - public void networkUnpack(NBTTagCompound nbt) { - super.networkUnpack(nbt); - - this.wasOn = nbt.getBoolean("wasOn"); - this.heat = nbt.getInteger("heat"); - this.progress = nbt.getInteger("progress"); - this.tank.readFromNBT(nbt, "t"); - } protected void tryPullHeat() { diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityHeaterOilburner.java b/src/main/java/com/hbm/tileentity/machine/TileEntityHeaterOilburner.java index c68190025..0d19a14bc 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityHeaterOilburner.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityHeaterOilburner.java @@ -16,6 +16,7 @@ import api.hbm.fluid.IFluidStandardTransceiver; import api.hbm.tile.IHeatSource; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; import net.minecraft.client.gui.GuiScreen; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Container; @@ -94,23 +95,28 @@ public class TileEntityHeaterOilburner extends TileEntityMachinePolluting implem if(shouldCool) this.heatEnergy = Math.max(this.heatEnergy - Math.max(this.heatEnergy / 1000, 1), 0); - NBTTagCompound data = new NBTTagCompound(); - tank.writeToNBT(data, "tank"); - data.setBoolean("isOn", isOn); - data.setInteger("h", heatEnergy); - data.setByte("s", (byte) this.setting); - this.networkPack(data, 25); + this.networkPackNT(25); } } - + @Override - public void networkUnpack(NBTTagCompound nbt) { - super.networkUnpack(nbt); + public void serialize(ByteBuf buf) { + super.serialize(buf); + tank.serialize(buf); - tank.readFromNBT(nbt, "tank"); - isOn = nbt.getBoolean("isOn"); - heatEnergy = nbt.getInteger("h"); - setting = nbt.getByte("s"); + buf.writeBoolean(isOn); + buf.writeInt(heatEnergy); + buf.writeByte((byte) this.setting); + } + + @Override + public void deserialize(ByteBuf buf) { + super.deserialize(buf); + tank.deserialize(buf); + + isOn = buf.readBoolean(); + heatEnergy = buf.readInt(); + setting = buf.readByte(); } @Override diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineArcWelder.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineArcWelder.java index 1f899b27c..6a3132006 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineArcWelder.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineArcWelder.java @@ -29,6 +29,7 @@ import api.hbm.fluid.IFluidStandardReceiver; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; import net.minecraft.client.gui.GuiScreen; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Container; @@ -135,21 +136,48 @@ public class TileEntityMachineArcWelder extends TileEntityMachineBase implements this.maxPower = Math.max(intendedMaxPower, power); - NBTTagCompound data = new NBTTagCompound(); - data.setLong("power", power); - data.setLong("maxPower", maxPower); - data.setLong("consumption", consumption); - data.setInteger("progress", progress); - data.setInteger("processTime", processTime); - if(recipe != null) { - data.setInteger("display", Item.getIdFromItem(recipe.output.getItem())); - data.setInteger("displayMeta", recipe.output.getItemDamage()); - } - this.tank.writeToNBT(data, "t"); - this.networkPack(data, 25); + this.networkPackNT(25); } } + @Override + public void serialize(ByteBuf buf) { + super.serialize(buf); + buf.writeLong(power); + buf.writeLong(maxPower); + buf.writeLong(consumption); + buf.writeInt(progress); + buf.writeInt(processTime); + + tank.serialize(buf); + + ArcWelderRecipe recipe = ArcWelderRecipes.getRecipe(slots[0], slots[1], slots[2]); + + if(recipe != null) { + buf.writeBoolean(true); + buf.writeInt(Item.getIdFromItem(recipe.output.getItem())); + buf.writeInt(recipe.output.getItemDamage()); + } else + buf.writeBoolean(false); + } + + @Override + public void deserialize(ByteBuf buf) { + super.deserialize(buf); + power = buf.readLong(); + maxPower = buf.readLong(); + consumption = buf.readLong(); + progress = buf.readInt(); + processTime = buf.readInt(); + + tank.deserialize(buf); + + if(buf.readBoolean()) { + this.display = new ItemStack(Item.getItemById(buf.readInt()), 1, buf.readInt()); + } else + this.display = null; + } + public boolean canProcess(ArcWelderRecipe recipe) { if(this.power < this.consumption) return false; @@ -204,25 +232,6 @@ public class TileEntityMachineArcWelder extends TileEntityMachineBase implements new DirPos(xCoord - dir.offsetX - rot.offsetX * 2, yCoord, zCoord - dir.offsetZ - rot.offsetZ * 2, rot.getOpposite()) }; } - - @Override - public void networkUnpack(NBTTagCompound nbt) { - super.networkUnpack(nbt); - - this.power = nbt.getLong("power"); - this.maxPower = nbt.getLong("maxPower"); - this.consumption = nbt.getLong("consumption"); - this.progress = nbt.getInteger("progress"); - this.processTime = nbt.getInteger("processTime"); - - if(nbt.hasKey("display")) { - this.display = new ItemStack(Item.getItemById(nbt.getInteger("display")), 1, nbt.getInteger("displayMeta")); - } else { - this.display = null; - } - - this.tank.readFromNBT(nbt, "t"); - } @Override public void readFromNBT(NBTTagCompound nbt) { diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineAssembler.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineAssembler.java index 89a674740..b83c19787 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineAssembler.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineAssembler.java @@ -23,6 +23,7 @@ import com.hbm.util.fauxpointtwelve.DirPos; import api.hbm.energymk2.IBatteryItem; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; import net.minecraft.client.gui.GuiScreen; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Container; @@ -111,13 +112,7 @@ public class TileEntityMachineAssembler extends TileEntityMachineAssemblerBase i rec = AssemblerRecipes.recipeList.indexOf(comp); } - NBTTagCompound data = new NBTTagCompound(); - data.setLong("power", power); - data.setIntArray("progress", this.progress); - data.setIntArray("maxProgress", this.maxProgress); - data.setBoolean("isProgressing", isProgressing); - data.setInteger("recipe", rec); - this.networkPack(data, 150); + this.networkPackNT(150); } else { float volume = this.getVolume(2F); @@ -142,16 +137,31 @@ public class TileEntityMachineAssembler extends TileEntityMachineAssemblerBase i } } } - + @Override - public void networkUnpack(NBTTagCompound nbt) { - super.networkUnpack(nbt); + public void serialize(ByteBuf buf) { + super.serialize(buf); + buf.writeLong(power); + for(int i = 0; i < getRecipeCount(); i++) { + buf.writeInt(progress[i]); + buf.writeInt(maxProgress[i]); + } - this.power = nbt.getLong("power"); - this.progress = nbt.getIntArray("progress"); - this.maxProgress = nbt.getIntArray("maxProgress"); - this.isProgressing = nbt.getBoolean("isProgressing"); - this.recipe = nbt.getInteger("recipe"); + buf.writeBoolean(isProgressing); + buf.writeInt(recipe); + } + + @Override + public void deserialize(ByteBuf buf) { + super.deserialize(buf); + power = buf.readLong(); + for(int i = 0; i < getRecipeCount(); i++) { + progress[i] = buf.readInt(); + maxProgress[i] = buf.readInt(); + } + + isProgressing = buf.readBoolean(); + recipe = buf.readInt(); } @Override diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineAssemfac.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineAssemfac.java index a44f0e996..948022a43 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineAssemfac.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineAssemfac.java @@ -20,6 +20,7 @@ import com.hbm.util.fauxpointtwelve.DirPos; import api.hbm.fluid.IFluidStandardTransceiver; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; import net.minecraft.client.gui.GuiScreen; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Container; @@ -93,16 +94,7 @@ public class TileEntityMachineAssemfac extends TileEntityMachineAssemblerBase im this.sendFluid(steam, worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); } - NBTTagCompound data = new NBTTagCompound(); - data.setLong("power", this.power); - data.setIntArray("progress", this.progress); - data.setIntArray("maxProgress", this.maxProgress); - data.setBoolean("isProgressing", isProgressing); - - water.writeToNBT(data, "w"); - steam.writeToNBT(data, "s"); - - this.networkPack(data, 150); + this.networkPackNT(150); } else { @@ -114,7 +106,33 @@ public class TileEntityMachineAssemfac extends TileEntityMachineAssemblerBase im } } } - + + @Override + public void serialize(ByteBuf buf) { + super.serialize(buf); + buf.writeLong(power); + for(int i = 0; i < getRecipeCount(); i++) { + buf.writeInt(progress[i]); + buf.writeInt(maxProgress[i]); + } + buf.writeBoolean(isProgressing); + water.serialize(buf); + steam.serialize(buf); + } + + @Override + public void deserialize(ByteBuf buf) { + super.deserialize(buf); + power = buf.readLong(); + for(int i = 0; i < getRecipeCount(); i++) { + progress[i] = buf.readInt(); + maxProgress[i] = buf.readInt(); + } + isProgressing = buf.readBoolean(); + water.deserialize(buf); + steam.deserialize(buf); + } + @Override public void networkUnpack(NBTTagCompound nbt) { super.networkUnpack(nbt); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineAutocrafter.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineAutocrafter.java index 9f1834c63..a15e82e8c 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineAutocrafter.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineAutocrafter.java @@ -8,11 +8,13 @@ import com.hbm.inventory.gui.GUIAutocrafter; import com.hbm.lib.Library; import com.hbm.tileentity.IGUIProvider; import com.hbm.tileentity.TileEntityMachineBase; +import com.hbm.util.BufferUtil; import com.hbm.util.ItemStackUtil; import api.hbm.energymk2.IEnergyReceiverMK2; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; import net.minecraft.client.gui.GuiScreen; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Container; @@ -193,33 +195,38 @@ public class TileEntityMachineAutocrafter extends TileEntityMachineBase implemen } } - NBTTagCompound data = new NBTTagCompound(); - data.setLong("power", power); - for(int i = 0; i < 9; i++) { - if(modes[i] != null) { - data.setString("mode" + i, modes[i]); - } - } - data.setInteger("count", this.recipeCount); - data.setInteger("rec", this.recipeIndex); - this.networkPack(data, 15); + this.networkPackNT(15); } } @Override - public void networkUnpack(NBTTagCompound data) { - super.networkUnpack(data); + public void serialize(ByteBuf buf) { + super.serialize(buf); + buf.writeLong(power); + for(int i = 0; i < 9; i++) { + if(modes[i] != null) { + buf.writeBoolean(true); + BufferUtil.writeString(buf, modes[i]); + } else + buf.writeBoolean(false); + } - this.power = data.getLong("power"); + buf.writeInt(recipeCount); + buf.writeInt(recipeIndex); + } + + @Override + public void deserialize(ByteBuf buf) { + super.deserialize(buf); + power = buf.readLong(); modes = new String[9]; for(int i = 0; i < 9; i++) { - if(data.hasKey("mode" + i)) { - modes[i] = data.getString("mode" + i); - } + if(buf.readBoolean()) modes[i] = BufferUtil.readString(buf); } - this.recipeCount = data.getInteger("count"); - this.recipeIndex = data.getInteger("rec"); + + recipeCount = buf.readInt(); + recipeIndex = buf.readInt(); } public void updateTemplateGrid() { diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCentrifuge.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCentrifuge.java index a8e271bf5..ed7993281 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCentrifuge.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCentrifuge.java @@ -22,6 +22,7 @@ import api.hbm.energymk2.IEnergyReceiverMK2; import api.hbm.tile.IInfoProviderEC; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; import net.minecraft.client.gui.GuiScreen; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Container; @@ -198,11 +199,7 @@ public class TileEntityMachineCentrifuge extends TileEntityMachineBase implement progress = 0; } - NBTTagCompound data = new NBTTagCompound(); - data.setLong("power", power); - data.setInteger("progress", progress); - data.setBoolean("isProgressing", isProgressing); - this.networkPack(data, 50); + this.networkPackNT(50); } else { if(isProgressing) { @@ -234,14 +231,21 @@ public class TileEntityMachineCentrifuge extends TileEntityMachineBase implement } } } - + @Override - public void networkUnpack(NBTTagCompound data) { - super.networkUnpack(data); - - this.power = data.getLong("power"); - this.progress = data.getInteger("progress"); - this.isProgressing = data.getBoolean("isProgressing"); + public void serialize(ByteBuf buf) { + super.serialize(buf); + buf.writeLong(power); + buf.writeInt(progress); + buf.writeBoolean(isProgressing); + } + + @Override + public void deserialize(ByteBuf buf) { + super.deserialize(buf); + power = buf.readLong(); + progress = buf.readInt(); + isProgressing = buf.readBoolean(); } @Override diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineChemfac.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineChemfac.java index 4fbfdfab9..53c90a9c0 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineChemfac.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineChemfac.java @@ -21,6 +21,7 @@ import com.hbm.util.fauxpointtwelve.DirPos; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; import net.minecraft.client.gui.GuiScreen; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Container; @@ -101,19 +102,7 @@ public class TileEntityMachineChemfac extends TileEntityMachineChemplantBase imp this.speed = 1; } - NBTTagCompound data = new NBTTagCompound(); - data.setLong("power", this.power); - data.setIntArray("progress", this.progress); - data.setIntArray("maxProgress", this.maxProgress); - data.setBoolean("isProgressing", isProgressing); - - for(int i = 0; i < tanks.length; i++) { - tanks[i].writeToNBT(data, "t" + i); - } - water.writeToNBT(data, "w"); - steam.writeToNBT(data, "s"); - - this.networkPack(data, 150); + this.networkPackNT(150); } else { float maxSpeed = 30F; @@ -156,21 +145,39 @@ public class TileEntityMachineChemfac extends TileEntityMachineChemplantBase imp } } } - + @Override - public void networkUnpack(NBTTagCompound nbt) { - super.networkUnpack(nbt); - - this.power = nbt.getLong("power"); - this.progress = nbt.getIntArray("progress"); - this.maxProgress = nbt.getIntArray("maxProgress"); - this.isProgressing = nbt.getBoolean("isProgressing"); - - for(int i = 0; i < tanks.length; i++) { - tanks[i].readFromNBT(nbt, "t" + i); + public void serialize(ByteBuf buf) { + super.serialize(buf); + buf.writeLong(power); + for(int i = 0; i < getRecipeCount(); i++) { + buf.writeInt(progress[i]); + buf.writeInt(maxProgress[i]); } - water.readFromNBT(nbt, "w"); - steam.readFromNBT(nbt, "s"); + + buf.writeBoolean(isProgressing); + + for(int i = 0; i < tanks.length; i++) tanks[i].serialize(buf); + + water.serialize(buf); + steam.serialize(buf); + } + + @Override + public void deserialize(ByteBuf buf) { + super.deserialize(buf); + power = buf.readLong(); + for(int i = 0; i < getRecipeCount(); i++) { + progress[i] = buf.readInt(); + maxProgress[i] = buf.readInt(); + } + + isProgressing = buf.readBoolean(); + + for(int i = 0; i < tanks.length; i++) tanks[i].deserialize(buf); + + water.deserialize(buf); + steam.deserialize(buf); } private int getWaterRequired() { diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCrystallizer.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCrystallizer.java index 0f1197c2b..1482376ba 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCrystallizer.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCrystallizer.java @@ -27,6 +27,7 @@ import api.hbm.energymk2.IEnergyReceiverMK2; import api.hbm.fluid.IFluidStandardReceiver; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; import net.minecraft.client.gui.GuiScreen; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Container; @@ -97,13 +98,7 @@ public class TileEntityMachineCrystallizer extends TileEntityMachineBase impleme } } - NBTTagCompound data = new NBTTagCompound(); - data.setShort("progress", progress); - data.setShort("duration", getDuration()); - data.setLong("power", power); - data.setBoolean("isOn", isOn); - tank.writeToNBT(data, "t"); - this.networkPack(data, 25); + this.networkPackNT(25); } else { prevAngle = angle; @@ -154,14 +149,24 @@ public class TileEntityMachineCrystallizer extends TileEntityMachineBase impleme }; } - public void networkUnpack(NBTTagCompound data) { - super.networkUnpack(data); - - this.power = data.getLong("power"); - this.progress = data.getShort("progress"); - this.duration = data.getShort("duration"); - this.isOn = data.getBoolean("isOn"); - this.tank.readFromNBT(data, "t"); + @Override + public void serialize(ByteBuf buf) { + super.serialize(buf); + buf.writeShort(progress); + buf.writeShort(getDuration()); + buf.writeLong(power); + buf.writeBoolean(isOn); + tank.serialize(buf); + } + + @Override + public void deserialize(ByteBuf buf) { + super.deserialize(buf); + progress = buf.readShort(); + duration = buf.readShort(); + power = buf.readLong(); + isOn = buf.readBoolean(); + tank.deserialize(buf); } private void processItem() { diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineElectricFurnace.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineElectricFurnace.java index 87b0a777f..26c2630f7 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineElectricFurnace.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineElectricFurnace.java @@ -20,6 +20,7 @@ import api.hbm.energymk2.IBatteryItem; import api.hbm.energymk2.IEnergyReceiverMK2; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; import net.minecraft.client.gui.GuiScreen; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Container; @@ -219,12 +220,8 @@ public class TileEntityMachineElectricFurnace extends TileEntityMachineBase impl markDirty = true; MachineElectricFurnace.updateBlockState(this.progress > 0, this.worldObj, this.xCoord, this.yCoord, this.zCoord); } - - NBTTagCompound data = new NBTTagCompound(); - data.setLong("power", this.power); - data.setInteger("MaxProgress", this.maxProgress); - data.setInteger("progress", this.progress); - this.networkPack(data, 50); + + this.networkPackNT(50); if(markDirty) { @@ -232,22 +229,29 @@ public class TileEntityMachineElectricFurnace extends TileEntityMachineBase impl } } } - + + @Override + public void serialize(ByteBuf buf) { + super.serialize(buf); + buf.writeLong(power); + buf.writeInt(maxProgress); + buf.writeInt(progress); + } + + @Override + public void deserialize(ByteBuf buf) { + super.deserialize(buf); + power = buf.readLong(); + maxProgress = buf.readInt(); + progress = buf.readInt(); + } + private void updateConnections() { for(ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) this.trySubscribe(worldObj, xCoord + dir.offsetX, yCoord + dir.offsetY, zCoord + dir.offsetZ, dir); } - public void networkUnpack(NBTTagCompound nbt) { - super.networkUnpack(nbt); - - this.power = nbt.getLong("power"); - this.maxProgress = nbt.getInteger("MaxProgress"); - this.progress = nbt.getInteger("progress"); - - } - @Override public void setPower(long i) { power = i; diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineExcavator.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineExcavator.java index 2dbbcb63b..b1768c1ee 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineExcavator.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineExcavator.java @@ -40,6 +40,7 @@ import api.hbm.fluid.IFluidStandardReceiver; import cpw.mods.fml.relauncher.ReflectionHelper; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; import net.minecraft.block.Block; import net.minecraft.client.gui.GuiScreen; import net.minecraft.entity.item.EntityItem; @@ -150,18 +151,7 @@ public class TileEntityMachineExcavator extends TileEntityMachineBase implements this.targetDepth = 0; } - NBTTagCompound data = new NBTTagCompound(); - data.setBoolean("d", enableDrill); - data.setBoolean("c", enableCrusher); - data.setBoolean("w", enableWalling); - data.setBoolean("v", enableVeinMiner); - data.setBoolean("s", enableSilkTouch); - data.setBoolean("o", operational); - data.setInteger("t", targetDepth); - data.setInteger("g", chuteTimer); - data.setLong("p", power); - tank.writeToNBT(data, "tank"); - this.networkPack(data, 150); + this.networkPackNT(150); } else { @@ -214,19 +204,34 @@ public class TileEntityMachineExcavator extends TileEntityMachineBase implements }; } - public void networkUnpack(NBTTagCompound nbt) { - super.networkUnpack(nbt); - - this.enableDrill = nbt.getBoolean("d"); - this.enableCrusher = nbt.getBoolean("c"); - this.enableWalling = nbt.getBoolean("w"); - this.enableVeinMiner = nbt.getBoolean("v"); - this.enableSilkTouch = nbt.getBoolean("s"); - this.operational = nbt.getBoolean("o"); - this.targetDepth = nbt.getInteger("t"); - this.chuteTimer = nbt.getInteger("g"); - this.power = nbt.getLong("p"); - this.tank.readFromNBT(nbt, "tank"); + @Override + public void serialize(ByteBuf buf) { + super.serialize(buf); + buf.writeBoolean(enableDrill); + buf.writeBoolean(enableCrusher); + buf.writeBoolean(enableWalling); + buf.writeBoolean(enableVeinMiner); + buf.writeBoolean(enableSilkTouch); + buf.writeBoolean(operational); + buf.writeInt(targetDepth); + buf.writeInt(chuteTimer); + buf.writeLong(power); + tank.serialize(buf); + } + + @Override + public void deserialize(ByteBuf buf) { + super.deserialize(buf); + enableDrill = buf.readBoolean(); + enableCrusher = buf.readBoolean(); + enableWalling = buf.readBoolean(); + enableVeinMiner = buf.readBoolean(); + enableSilkTouch = buf.readBoolean(); + operational = buf.readBoolean(); + targetDepth = buf.readInt(); + chuteTimer = buf.readInt(); + power = buf.readLong(); + tank.deserialize(buf); } protected int getY() { diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineGasCent.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineGasCent.java index cf0ad2b1c..b3179241c 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineGasCent.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineGasCent.java @@ -15,6 +15,7 @@ import com.hbm.packet.LoopedSoundPacket; import com.hbm.packet.PacketDispatcher; import com.hbm.tileentity.IGUIProvider; import com.hbm.tileentity.TileEntityMachineBase; +import com.hbm.util.BufferUtil; import com.hbm.util.CompatEnergyControl; import com.hbm.util.InventoryUtil; import com.hbm.util.fauxpointtwelve.DirPos; @@ -25,6 +26,7 @@ import api.hbm.tile.IInfoProviderEC; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; import net.minecraft.client.gui.GuiScreen; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Container; @@ -168,19 +170,6 @@ public class TileEntityMachineGasCent extends TileEntityMachineBase implements I return false; } - public void networkUnpack(NBTTagCompound data) { - super.networkUnpack(data); - - this.power = data.getLong("power"); - this.progress = data.getInteger("progress"); - this.isProgressing = data.getBoolean("isProgressing"); - this.inputTank.setTankType(PseudoFluidType.types.get(data.getString("inputType"))); - this.outputTank.setTankType(PseudoFluidType.types.get(data.getString("outputType"))); - this.inputTank.setFill(data.getInteger("inputFill")); - this.outputTank.setFill(data.getInteger("outputFill")); - this.tank.readFromNBT(data, "t"); - } - @Override public void updateEntity() { @@ -234,21 +223,42 @@ public class TileEntityMachineGasCent extends TileEntityMachineBase implements I } } - NBTTagCompound data = new NBTTagCompound(); - data.setLong("power", power); - data.setInteger("progress", progress); - data.setBoolean("isProgressing", isProgressing); - data.setInteger("inputFill", inputTank.getFill()); - data.setInteger("outputFill", outputTank.getFill()); - data.setString("inputType", inputTank.getTankType().name); - data.setString("outputType", outputTank.getTankType().name); - tank.writeToNBT(data, "t"); - this.networkPack(data, 50); + this.networkPackNT(50); PacketDispatcher.wrapper.sendToAllAround(new LoopedSoundPacket(xCoord, yCoord, zCoord), new TargetPoint(worldObj.provider.dimensionId, xCoord, yCoord, zCoord, 50)); } } + @Override + public void serialize(ByteBuf buf) { + super.serialize(buf); + buf.writeLong(power); + buf.writeInt(progress); + buf.writeBoolean(isProgressing); + //pseudofluids can be refactored another day + buf.writeInt(inputTank.getFill()); + buf.writeInt(outputTank.getFill()); + BufferUtil.writeString(buf, inputTank.getTankType().name); //cough cough + BufferUtil.writeString(buf, outputTank.getTankType().name); + + tank.serialize(buf); + } + + @Override + public void deserialize(ByteBuf buf) { + super.deserialize(buf); + power = buf.readLong(); + progress = buf.readInt(); + isProgressing = buf.readBoolean(); + + inputTank.setFill(buf.readInt()); + outputTank.setFill(buf.readInt()); + inputTank.setTankType(PseudoFluidType.types.get(BufferUtil.readString(buf))); + outputTank.setTankType(PseudoFluidType.types.get(BufferUtil.readString(buf))); + + tank.deserialize(buf); + } + private void updateConnections() { for(DirPos pos : getConPos()) { this.trySubscribe(worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineMixer.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineMixer.java index 34e2b1498..e9751c820 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineMixer.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineMixer.java @@ -25,6 +25,7 @@ import api.hbm.energymk2.IEnergyReceiverMK2; import api.hbm.fluid.IFluidStandardTransceiver; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; import net.minecraft.client.gui.GuiScreen; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Container; @@ -121,7 +122,7 @@ public class TileEntityMachineMixer extends TileEntityMachineBase implements INB for(int i = 0; i < 3; i++) { tanks[i].writeToNBT(data, i + ""); } - this.networkPack(data, 50); + this.networkPackNT(50); } else { @@ -137,6 +138,30 @@ public class TileEntityMachineMixer extends TileEntityMachineBase implements INB } } } + + @Override + public void serialize(ByteBuf buf) { + super.serialize(buf); + buf.writeLong(power); + buf.writeInt(processTime); + buf.writeInt(progress); + buf.writeInt(recipeIndex); + buf.writeBoolean(wasOn); + + for(int i = 0; i < tanks.length; i++) tanks[i].serialize(buf); + } + + @Override + public void deserialize(ByteBuf buf) { + super.deserialize(buf); + power = buf.readLong(); + processTime = buf.readInt(); + progress = buf.readInt(); + recipeIndex = buf.readInt(); + wasOn = buf.readBoolean(); + + for(int i = 0; i < tanks.length; i++) tanks[i].deserialize(buf); + } @Override public void networkUnpack(NBTTagCompound nbt) { diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineWoodBurner.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineWoodBurner.java index 72306abf9..46de4e4e1 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineWoodBurner.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineWoodBurner.java @@ -24,6 +24,7 @@ import api.hbm.fluid.IFluidStandardReceiver; import api.hbm.tile.IInfoProviderEC; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; import net.minecraft.client.gui.GuiScreen; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Container; @@ -126,15 +127,7 @@ public class TileEntityMachineWoodBurner extends TileEntityMachineBase implement this.power += this.powerGen; if(this.power > this.maxPower) this.power = this.maxPower; - NBTTagCompound data = new NBTTagCompound(); - data.setLong("power", power); - data.setInteger("burnTime", burnTime); - data.setInteger("powerGen", powerGen); - data.setInteger("maxBurnTime", maxBurnTime); - data.setBoolean("isOn", isOn); - data.setBoolean("liquidBurn", liquidBurn); - tank.writeToNBT(data, "t"); - this.networkPack(data, 25); + this.networkPackNT(25); } else { if(powerGen > 0) { @@ -145,6 +138,32 @@ public class TileEntityMachineWoodBurner extends TileEntityMachineBase implement } } + @Override + public void serialize(ByteBuf buf) { + super.serialize(buf); + buf.writeLong(power); + buf.writeInt(burnTime); + buf.writeInt(powerGen); + buf.writeInt(maxBurnTime); + buf.writeBoolean(isOn); + buf.writeBoolean(liquidBurn); + + tank.serialize(buf); + } + + @Override + public void deserialize(ByteBuf buf) { + super.deserialize(buf); + power = buf.readLong(); + burnTime = buf.readInt(); + powerGen = buf.readInt(); + maxBurnTime = buf.readInt(); + isOn = buf.readBoolean(); + liquidBurn = buf.readBoolean(); + + tank.deserialize(buf); + } + private DirPos[] getConPos() { ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata() - 10); ForgeDirection rot = dir.getRotation(ForgeDirection.UP); @@ -153,20 +172,7 @@ public class TileEntityMachineWoodBurner extends TileEntityMachineBase implement new DirPos(xCoord - dir.offsetX * 2 + rot.offsetX, yCoord, zCoord - dir.offsetZ * 2 + rot.offsetZ, dir.getOpposite()) }; } - - @Override - public void networkUnpack(NBTTagCompound nbt) { - super.networkUnpack(nbt); - - this.power = nbt.getLong("power"); - this.powerGen = nbt.getInteger("powerGen"); - this.burnTime = nbt.getInteger("burnTime"); - this.maxBurnTime = nbt.getInteger("maxBurnTime"); - this.isOn = nbt.getBoolean("isOn"); - this.liquidBurn = nbt.getBoolean("liquidBurn"); - tank.readFromNBT(nbt, "t"); - } - + @Override public void readFromNBT(NBTTagCompound nbt) { super.readFromNBT(nbt); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntitySILEX.java b/src/main/java/com/hbm/tileentity/machine/TileEntitySILEX.java index 3be37d486..21acbc542 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntitySILEX.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntitySILEX.java @@ -15,6 +15,7 @@ import com.hbm.items.ModItems; import com.hbm.items.machine.ItemFELCrystal.EnumWavelengths; import com.hbm.tileentity.IGUIProvider; import com.hbm.tileentity.TileEntityMachineBase; +import com.hbm.util.BufferUtil; import com.hbm.util.CompatEnergyControl; import com.hbm.util.InventoryUtil; import com.hbm.util.WeightedRandomObject; @@ -23,6 +24,7 @@ import api.hbm.fluid.IFluidStandardReceiver; import api.hbm.tile.IInfoProviderEC; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; import net.minecraft.client.gui.GuiScreen; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Container; @@ -84,38 +86,42 @@ public class TileEntitySILEX extends TileEntityMachineBase implements IFluidAcce if(currentFill <= 0) { current = null; } - - NBTTagCompound data = new NBTTagCompound(); - data.setInteger("fill", currentFill); - data.setInteger("progress", progress); - data.setString("mode", mode.toString()); - - if(this.current != null) { - data.setInteger("item", Item.getIdFromItem(this.current.item)); - data.setInteger("meta", this.current.meta); - } - - tank.updateTank(xCoord, yCoord, zCoord, worldObj.provider.dimensionId); - this.networkPack(data, 50); + + this.networkPackNT(50); this.mode = EnumWavelengths.NULL; } } - - public void networkUnpack(NBTTagCompound nbt) { - super.networkUnpack(nbt); - - this.currentFill = nbt.getInteger("fill"); - this.progress = nbt.getInteger("progress"); - this.mode = EnumWavelengths.valueOf(nbt.getString("mode")); - - if(this.currentFill > 0) { - this.current = new ComparableStack(Item.getItemById(nbt.getInteger("item")), 1, nbt.getInteger("meta")); - - } else { - this.current = null; + + @Override + public void serialize(ByteBuf buf) { + super.serialize(buf); + buf.writeInt(currentFill); + buf.writeInt(progress); + BufferUtil.writeString(buf, mode.toString()); + + tank.serialize(buf); + + if(this.current != null) { + buf.writeInt(Item.getIdFromItem(this.current.item)); + buf.writeInt(this.current.meta); } } + + @Override + public void deserialize(ByteBuf buf) { + super.deserialize(buf); + currentFill = buf.readInt(); + progress = buf.readInt(); + mode = EnumWavelengths.valueOf(BufferUtil.readString(buf)); + + tank.deserialize(buf); + + if(currentFill > 0) { + current = new ComparableStack(Item.getItemById(buf.readInt()), 1, buf.readInt()); + } else + current = null; + } public void handleButtonPacket(int value, int meta) { From 9d1e20df0f54a3cccb8abe363b77b5e47266005b Mon Sep 17 00:00:00 2001 From: BallOfEnergy <66693744+BallOfEnergy1@users.noreply.github.com> Date: Wed, 12 Jun 2024 17:47:30 -0500 Subject: [PATCH 47/69] ICF reactor compat done pellet compat too probably gonna make a base OC machine class just to fill the name field --- .../hbm/tileentity/machine/TileEntityICF.java | 62 ++++++++++++++++++- .../machine/TileEntityMicrowave.java | 14 +++++ 2 files changed, 75 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityICF.java b/src/main/java/com/hbm/tileentity/machine/TileEntityICF.java index c4e930c6d..b1508d53b 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityICF.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityICF.java @@ -19,10 +19,15 @@ import com.hbm.util.fauxpointtwelve.DirPos; import api.hbm.fluid.IFluidStandardTransceiver; import api.hbm.tile.IInfoProviderEC; +import cpw.mods.fml.common.Optional; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import io.netty.buffer.ByteBuf; +import li.cil.oc.api.machine.Arguments; +import li.cil.oc.api.machine.Callback; +import li.cil.oc.api.machine.Context; +import li.cil.oc.api.network.SimpleComponent; import net.minecraft.client.gui.GuiScreen; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Container; @@ -32,7 +37,8 @@ import net.minecraft.util.AxisAlignedBB; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityICF extends TileEntityMachineBase implements IGUIProvider, IFluidStandardTransceiver, IInfoProviderEC { +@Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "OpenComputers")}) +public class TileEntityICF extends TileEntityMachineBase implements IGUIProvider, IFluidStandardTransceiver, IInfoProviderEC, SimpleComponent { public long laser; public long maxLaser; @@ -284,4 +290,58 @@ public class TileEntityICF extends TileEntityMachineBase implements IGUIProvider data.setDouble(CompatEnergyControl.D_CONSUMPTION_MB, this.consumption); data.setDouble(CompatEnergyControl.D_OUTPUT_MB, this.output); } + + //OC stuff + + @Override + public String getComponentName() { + return "ntm_icf_reactor"; + } + + @Callback(direct = true) + @Optional.Method(modid = "OpenComputers") + public Object[] getHeat(Context context, Arguments args) { + return new Object[] {this.heat}; + } + + @Callback(direct = true) + @Optional.Method(modid = "OpenComputers") + public Object[] getHeatingRate(Context context, Arguments args) { + return new Object[] {this.heatup}; + } + + @Callback(direct = true) + @Optional.Method(modid = "OpenComputers") + public Object[] getMaxHeat(Context context, Arguments args) { + return new Object[] {maxHeat}; + } + + @Callback(direct = true) + @Optional.Method(modid = "OpenComputers") + public Object[] getPower(Context context, Arguments args) { + return new Object[] {this.laser}; + } + + @Callback(direct = true) + @Optional.Method(modid = "OpenComputers") + public Object[] getFluid(Context context, Arguments args) { + return new Object[] { + tanks[0].getFill(), tanks[0].getMaxFill(), tanks[0].getTankType().getUnlocalizedName(), + tanks[1].getFill(), tanks[1].getMaxFill(), tanks[1].getTankType().getUnlocalizedName(), + tanks[2].getFill(), tanks[2].getMaxFill() + }; + } + + @Callback(direct = true) + @Optional.Method(modid = "OpenComputers") + public Object[] getPelletStats(Context context, Arguments args) { + return new Object[] { + ItemICFPellet.getDepletion(slots[5]), + ItemICFPellet.getMaxDepletion(slots[5]), + ItemICFPellet.getFusingDifficulty(slots[5]), + ItemICFPellet.getType(slots[5], true).name(), + ItemICFPellet.getType(slots[5], false).name() + }; + } + } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMicrowave.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMicrowave.java index d6bf0e065..759274b54 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMicrowave.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMicrowave.java @@ -23,6 +23,7 @@ import net.minecraft.item.crafting.FurnaceRecipes; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.AxisAlignedBB; +import net.minecraft.util.MathHelper; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; @@ -228,6 +229,19 @@ public class TileEntityMicrowave extends TileEntityMachineBase implements IEnerg return new Object[] {"This is a testing device for everything OC."}; } + @Callback(direct = true, getter = true) + @Optional.Method(modid = "OpenComputers") + public Object[] variableget(Context context, Arguments args) { + return new Object[] {speed, "test of the `getter` callback function"}; + } + + @Callback(direct = true, setter = true) + @Optional.Method(modid = "OpenComputers") + public Object[] variableset(Context context, Arguments args) { + speed = MathHelper.clamp_int(args.checkInteger(0), 0, 5); + return new Object[] {"test of the `setter` callback function"}; + } + @Override public Container provideContainer(int ID, EntityPlayer player, World world, int x, int y, int z) { return new ContainerMicrowave(player.inventory, this); From 6e5b689ed2a5da35f40384e58d3ea21ea197d6d3 Mon Sep 17 00:00:00 2001 From: BallOfEnergy <66693744+BallOfEnergy1@users.noreply.github.com> Date: Thu, 13 Jun 2024 20:01:10 -0500 Subject: [PATCH 48/69] New OC Compatibility system! --- .../hbm/blocks/network/BlockCableGauge.java | 3 +- .../hbm/blocks/network/FluidDuctGauge.java | 3 +- .../java/com/hbm/handler/CompatHandler.java | 94 ++++++++++++++++++- .../hbm/tileentity/TileEntityProxyCombo.java | 46 ++++++++- .../bomb/TileEntityLaunchPadBase.java | 31 +++++- .../bomb/TileEntityLaunchTable.java | 32 ++++++- .../tileentity/machine/TileEntityChungus.java | 27 +++++- .../machine/TileEntityCoreEmitter.java | 3 +- .../machine/TileEntityCoreInjector.java | 3 +- .../machine/TileEntityCoreReceiver.java | 3 +- .../machine/TileEntityCoreStabilizer.java | 3 +- .../tileentity/machine/TileEntityGeiger.java | 3 +- .../hbm/tileentity/machine/TileEntityICF.java | 31 +++++- .../tileentity/machine/TileEntityITER.java | 35 ++++++- .../TileEntityMachineLargeTurbine.java | 27 +++++- .../machine/TileEntityMachineRadarNT.java | 42 ++++++++- .../TileEntityMachineReactorBreeding.java | 3 +- .../machine/TileEntityMachineTurbine.java | 2 +- .../machine/TileEntityMachineTurbineGas.java | 70 ++++++++++++-- .../machine/TileEntityMicrowave.java | 3 +- .../machine/TileEntityPWRController.java | 3 +- .../machine/TileEntityReactorControl.java | 3 +- .../machine/TileEntityReactorResearch.java | 29 +++++- .../machine/TileEntityReactorZirnox.java | 38 +++++++- .../machine/rbmk/TileEntityCraneConsole.java | 3 +- .../machine/rbmk/TileEntityRBMKBoiler.java | 8 +- .../machine/rbmk/TileEntityRBMKConsole.java | 3 +- .../machine/rbmk/TileEntityRBMKControl.java | 9 +- .../machine/rbmk/TileEntityRBMKCooler.java | 9 +- .../machine/rbmk/TileEntityRBMKHeater.java | 9 +- .../machine/rbmk/TileEntityRBMKOutgasser.java | 9 +- .../machine/rbmk/TileEntityRBMKRod.java | 8 +- .../machine/storage/TileEntityBarrel.java | 23 ++++- .../storage/TileEntityMachineBattery.java | 3 +- .../storage/TileEntityMachineFluidTank.java | 23 ++++- .../network/TileEntityRadioTelex.java | 3 +- .../turret/TileEntityTurretBaseNT.java | 54 ++++++++++- src/main/resources/assets/hbm/lang/en_US.lang | 8 ++ 38 files changed, 664 insertions(+), 45 deletions(-) diff --git a/src/main/java/com/hbm/blocks/network/BlockCableGauge.java b/src/main/java/com/hbm/blocks/network/BlockCableGauge.java index 0983c9be6..67da0e324 100644 --- a/src/main/java/com/hbm/blocks/network/BlockCableGauge.java +++ b/src/main/java/com/hbm/blocks/network/BlockCableGauge.java @@ -6,6 +6,7 @@ import java.util.List; import com.hbm.blocks.IBlockMultiPass; import com.hbm.blocks.ILookOverlay; import com.hbm.blocks.ITooltipProvider; +import com.hbm.handler.CompatHandler; import com.hbm.lib.RefStrings; import com.hbm.render.block.RenderBlockMultipass; import com.hbm.tileentity.INBTPacketReceiver; @@ -104,7 +105,7 @@ public class BlockCableGauge extends BlockContainer implements IBlockMultiPass, } @Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "OpenComputers")}) - public static class TileEntityCableGauge extends TileEntityCableBaseNT implements INBTPacketReceiver, SimpleComponent { + public static class TileEntityCableGauge extends TileEntityCableBaseNT implements INBTPacketReceiver, SimpleComponent, CompatHandler.OCComponent { private long deltaTick = 0; private long deltaSecond = 0; diff --git a/src/main/java/com/hbm/blocks/network/FluidDuctGauge.java b/src/main/java/com/hbm/blocks/network/FluidDuctGauge.java index 9c17a38c0..613337412 100644 --- a/src/main/java/com/hbm/blocks/network/FluidDuctGauge.java +++ b/src/main/java/com/hbm/blocks/network/FluidDuctGauge.java @@ -8,6 +8,7 @@ import java.util.Locale; import com.hbm.blocks.IBlockMultiPass; import com.hbm.blocks.ILookOverlay; import com.hbm.blocks.ITooltipProvider; +import com.hbm.handler.CompatHandler; import com.hbm.inventory.fluid.Fluids; import com.hbm.lib.RefStrings; import com.hbm.render.block.RenderBlockMultipass; @@ -108,7 +109,7 @@ public class FluidDuctGauge extends FluidDuctBase implements IBlockMultiPass, IL } @Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "OpenComputers")}) - public static class TileEntityPipeGauge extends TileEntityPipeBaseNT implements INBTPacketReceiver, SimpleComponent { + public static class TileEntityPipeGauge extends TileEntityPipeBaseNT implements INBTPacketReceiver, SimpleComponent, CompatHandler.OCComponent { private BigInteger lastMeasurement = BigInteger.valueOf(10); private long deltaTick = 0; diff --git a/src/main/java/com/hbm/handler/CompatHandler.java b/src/main/java/com/hbm/handler/CompatHandler.java index 07d7fd20a..c4acf60ca 100644 --- a/src/main/java/com/hbm/handler/CompatHandler.java +++ b/src/main/java/com/hbm/handler/CompatHandler.java @@ -2,20 +2,32 @@ package com.hbm.handler; import com.hbm.inventory.fluid.FluidType; import com.hbm.inventory.fluid.Fluids; +import com.hbm.tileentity.TileEntityProxyCombo; +import cpw.mods.fml.common.Optional; +import li.cil.oc.api.machine.Arguments; +import li.cil.oc.api.machine.Context; +import li.cil.oc.api.network.*; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.ChatComponentTranslation; +import net.minecraft.util.ChatStyle; +import net.minecraft.util.EnumChatFormatting; +import net.minecraftforge.common.util.ForgeDirection; /** * General handler for OpenComputers compatibility. - *

- * Mostly just functions used across many TEs. + * @author BallOfEnergy (Microwave) */ public class CompatHandler { + public static Object[] steamTypeToInt(FluidType type) { if(type == Fluids.STEAM) {return new Object[] {0};} else if(type == Fluids.HOTSTEAM) {return new Object[] {1};} else if(type == Fluids.SUPERHOTSTEAM) {return new Object[] {2};} return new Object[] {3}; } + public static FluidType intToSteamType(int arg) { switch(arg) { default: @@ -28,4 +40,82 @@ public class CompatHandler { return Fluids.ULTRAHOTSTEAM; } } + + /** + * This is an interface made specifically for adding OC compatibility to NTM machines. The {@link li.cil.oc.api.network.SimpleComponent} interface must also be implemented in the TE. + *
+ * This interface is not required to be defined as an optional interface, though the {@link li.cil.oc.api.network.SimpleComponent} interface must be declared as an optional interface. + *
+ * Pseudo multiblocks will automatically receive compatibility with their ports by proxying their `methods()` and `invoke()` functions. This is the only time they need to be defined. + * + **/ + @Optional.InterfaceList({ + @Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "OpenComputers"), + @Optional.Interface(iface = "li.cil.oc.api.network.SidedComponent", modid = "OpenComputers"), + @Optional.Interface(iface = "li.cil.oc.api.network.Analyzable", modid = "OpenComputers"), + @Optional.Interface(iface = "li.cil.oc.api.network.ManagedPeripheral", modid = "OpenComputers"), + }) + @SimpleComponent.SkipInjection + public interface OCComponent extends SimpleComponent, SidedComponent, Analyzable, ManagedPeripheral { + + /** + * Must be overridden in the implemented TE, or it will default to "ntm_null". + *
+ * Dictates the component name exposed to the computer. + * @return String + */ + @Override + default String getComponentName() { + return "ntm_null"; + } + + /** + * Tells OC which sides of the block cables should connect to. + * @param side Side to check + * @return If the side should be able to connect. + */ + @Override + default boolean canConnectNode(ForgeDirection side) { + return true; + } + + /** + * Function to give more information when analyzing the block. Multiple entries in the array will be sent to the user in the order of the array. + * @return Additional text to add in the form of lang entries (ex: "analyze.basic2"). + */ + default String[] getExtraInfo() {return new String[] {"analyze.noInfo"};} + + @Override + default Node[] onAnalyze(EntityPlayer player, int side, float hitX, float hitY, float hitZ) { + player.addChatComponentMessage(new ChatComponentTranslation("analyze.basic1").setChatStyle(new ChatStyle().setColor(EnumChatFormatting.GOLD))); + player.addChatComponentMessage(new ChatComponentTranslation("analyze.basic2").setChatStyle(new ChatStyle().setColor(EnumChatFormatting.YELLOW))); + player.addChatComponentMessage(new ChatComponentTranslation("analyze.basic3").setChatStyle(new ChatStyle().setColor(EnumChatFormatting.GOLD))); + player.addChatComponentMessage(new ChatComponentTranslation("analyze.name", this.getComponentName()).setChatStyle(new ChatStyle().setColor(EnumChatFormatting.GOLD))); + String[] extraInfo = getExtraInfo(); + for (String info : extraInfo) { + if(!info.equals("")) + player.addChatComponentMessage(new ChatComponentTranslation(info).setChatStyle(new ChatStyle().setColor(EnumChatFormatting.YELLOW))); + } + TileEntity te = player.worldObj.getTileEntity((int) hitX, (int) hitY, (int) hitZ); + OCComponent component = (OCComponent) te; + if((component.methods() == null && te instanceof TileEntityProxyCombo) || component.getComponentName().equals("ntm_null")) { + player.addChatComponentMessage(new ChatComponentTranslation("analyze.error").setChatStyle(new ChatStyle().setColor(EnumChatFormatting.RED))); + } + return null; + } + + /** + * Standard methods array from {@link li.cil.oc.api.network.ManagedPeripheral} extending {@link li.cil.oc.api.network.SimpleComponent}. + * @return Array of methods to expose to the computer. + */ + @Override + default String[] methods() {return null;} + + /** + * Standard invoke function from {@link li.cil.oc.api.network.ManagedPeripheral} extending {@link li.cil.oc.api.network.SimpleComponent}. + * @return Data to the computer as a return from the function. + */ + @Override + default Object[] invoke(String method, Context context, Arguments args) throws Exception {return null;} + } } diff --git a/src/main/java/com/hbm/tileentity/TileEntityProxyCombo.java b/src/main/java/com/hbm/tileentity/TileEntityProxyCombo.java index 7fe9db0f3..f550af4b8 100644 --- a/src/main/java/com/hbm/tileentity/TileEntityProxyCombo.java +++ b/src/main/java/com/hbm/tileentity/TileEntityProxyCombo.java @@ -2,6 +2,7 @@ package com.hbm.tileentity; import api.hbm.block.ICrucibleAcceptor; +import com.hbm.handler.CompatHandler.OCComponent; import com.hbm.interfaces.IFluidAcceptor; import com.hbm.interfaces.IFluidContainer; import com.hbm.inventory.fluid.FluidType; @@ -10,6 +11,10 @@ import api.hbm.energymk2.IEnergyReceiverMK2; import api.hbm.fluid.IFluidConnector; import api.hbm.tile.IHeatSource; import com.hbm.inventory.material.Mats; +import cpw.mods.fml.common.Optional; +import li.cil.oc.api.machine.Arguments; +import li.cil.oc.api.machine.Context; +import li.cil.oc.api.network.SimpleComponent; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.ISidedInventory; import net.minecraft.item.ItemStack; @@ -18,7 +23,11 @@ import net.minecraft.tileentity.TileEntity; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityProxyCombo extends TileEntityProxyBase implements IEnergyReceiverMK2, IFluidAcceptor, ISidedInventory, IFluidConnector, IHeatSource, ICrucibleAcceptor { +@Optional.InterfaceList({ + @Optional.Interface(iface = "com.hbm.handler.CompatHandler.OCComponent", modid = "opencomputers"), + @Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "opencomputers") +}) +public class TileEntityProxyCombo extends TileEntityProxyBase implements IEnergyReceiverMK2, IFluidAcceptor, ISidedInventory, IFluidConnector, IHeatSource, ICrucibleAcceptor, SimpleComponent, OCComponent { TileEntity tile; boolean inventory; @@ -537,4 +546,39 @@ public class TileEntityProxyCombo extends TileEntityProxyBase implements IEnergy } return null; } + + @Override // please work + public String getComponentName() { + if(this.getTile() instanceof OCComponent) + return ((OCComponent) this.getTile()).getComponentName(); + return OCComponent.super.getComponentName(); + } + + @Override + public boolean canConnectNode(ForgeDirection side) { //thank you vaer + if(this.getTile() instanceof OCComponent) + return (this.getTile().getBlockMetadata() & 6) == 6 && ((OCComponent) this.getTile()).canConnectNode(side); + return OCComponent.super.canConnectNode(null); + } + + @Override + public String[] getExtraInfo() { + if(this.getTile() instanceof OCComponent) + return new String[] {"analyze.dummy"}; + return OCComponent.super.getExtraInfo(); + } + + @Override + public String[] methods() { + if(this.getTile() instanceof OCComponent) + return ((OCComponent) this.getTile()).methods(); + return OCComponent.super.methods(); + } + + @Override + public Object[] invoke(String method, Context context, Arguments args) throws Exception { + if(this.getTile() instanceof OCComponent) + return ((OCComponent) this.getTile()).invoke(method, context, args); + return OCComponent.super.invoke(null, null, null); + } } diff --git a/src/main/java/com/hbm/tileentity/bomb/TileEntityLaunchPadBase.java b/src/main/java/com/hbm/tileentity/bomb/TileEntityLaunchPadBase.java index b9e87115c..7624b53d5 100644 --- a/src/main/java/com/hbm/tileentity/bomb/TileEntityLaunchPadBase.java +++ b/src/main/java/com/hbm/tileentity/bomb/TileEntityLaunchPadBase.java @@ -4,6 +4,7 @@ import java.util.HashMap; import java.util.HashSet; import java.util.Set; +import com.hbm.handler.CompatHandler; import cpw.mods.fml.common.Optional; import li.cil.oc.api.machine.Arguments; import li.cil.oc.api.machine.Callback; @@ -55,7 +56,7 @@ import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; @Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "OpenComputers")}) -public abstract class TileEntityLaunchPadBase extends TileEntityMachineBase implements IEnergyReceiverMK2, IFluidStandardReceiver, IGUIProvider, IRadarCommandReceiver, SimpleComponent { +public abstract class TileEntityLaunchPadBase extends TileEntityMachineBase implements IEnergyReceiverMK2, IFluidStandardReceiver, IGUIProvider, IRadarCommandReceiver, SimpleComponent, CompatHandler.OCComponent { /** Automatic instantiation of generic missiles, i.e. everything that both extends EntityMissileBaseNT and needs a designator */ public static final HashMap> missiles = new HashMap(); @@ -523,4 +524,32 @@ public abstract class TileEntityLaunchPadBase extends TileEntityMachineBase impl } return new Object[] {false}; } + + @Override + public String[] methods() { + return new String[] { + "getEnergyInfo", + "getFluid", + "canLaunch", + "getTier", + "launch" + }; + } + + public Object[] invoke(String method, Context context, Arguments args) throws Exception { + switch(method) { + case ("getEnergyInfo"): + return getEnergyInfo(context, args); + case ("getFluid"): + return getFluid(context, args); + case ("canLaunch"): + return canLaunch(context, args); + case ("getTier"): + return getTier(context, args); + case ("launch"): + return launch(context, args); + } + throw new NoSuchMethodException(); +} + } diff --git a/src/main/java/com/hbm/tileentity/bomb/TileEntityLaunchTable.java b/src/main/java/com/hbm/tileentity/bomb/TileEntityLaunchTable.java index ff9841e1f..b193f0cb1 100644 --- a/src/main/java/com/hbm/tileentity/bomb/TileEntityLaunchTable.java +++ b/src/main/java/com/hbm/tileentity/bomb/TileEntityLaunchTable.java @@ -3,6 +3,7 @@ package com.hbm.tileentity.bomb; import java.util.List; import com.hbm.entity.missile.EntityMissileCustom; +import com.hbm.handler.CompatHandler; import com.hbm.handler.MissileStruct; import com.hbm.interfaces.IFluidAcceptor; import com.hbm.interfaces.IFluidContainer; @@ -53,7 +54,7 @@ import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; @Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "OpenComputers")}) -public class TileEntityLaunchTable extends TileEntityLoadedBase implements ISidedInventory, IEnergyReceiverMK2, IFluidContainer, IFluidAcceptor, IFluidStandardReceiver, IGUIProvider, SimpleComponent, IRadarCommandReceiver { +public class TileEntityLaunchTable extends TileEntityLoadedBase implements ISidedInventory, IEnergyReceiverMK2, IFluidContainer, IFluidAcceptor, IFluidStandardReceiver, IGUIProvider, SimpleComponent, IRadarCommandReceiver, CompatHandler.OCComponent { private ItemStack slots[]; @@ -713,6 +714,35 @@ public class TileEntityLaunchTable extends TileEntityLoadedBase implements ISide return new Object[] {false}; } + public String[] methods() { + return new String[] { + "getEnergyInfo", + "getContents", + "getLaunchInfo", + "getCoords", + "setCoords", + "launch" + }; + } + + public Object[] invoke(String method, Context context, Arguments args) throws Exception { + switch(method) { + case ("getEnergyInfo"): + return getEnergyInfo(context, args); + case ("getContents"): + return getContents(context, args); + case ("getLaunchInfo"): + return getLaunchInfo(context, args); + case ("getCoords"): + return getCoords(context, args); + case ("setCoords"): + return setCoords(context, args); + case ("launch"): + return launch(context, args); + } + throw new NoSuchMethodException(); +} + @Override public Container provideContainer(int ID, EntityPlayer player, World world, int x, int y, int z) { return new ContainerLaunchTable(player.inventory, this); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityChungus.java b/src/main/java/com/hbm/tileentity/machine/TileEntityChungus.java index 0b763ac40..874064a5c 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityChungus.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityChungus.java @@ -41,7 +41,7 @@ import net.minecraft.util.AxisAlignedBB; import net.minecraftforge.common.util.ForgeDirection; @Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "OpenComputers")}) -public class TileEntityChungus extends TileEntityLoadedBase implements IFluidAcceptor, IFluidSource, IEnergyProviderMK2, INBTPacketReceiver, IFluidStandardTransceiver, SimpleComponent, IInfoProviderEC { +public class TileEntityChungus extends TileEntityLoadedBase implements IFluidAcceptor, IFluidSource, IEnergyProviderMK2, INBTPacketReceiver, IFluidStandardTransceiver, SimpleComponent, IInfoProviderEC, CompatHandler.OCComponent { public long power; public static final long maxPower = 100000000000L; @@ -358,7 +358,7 @@ public class TileEntityChungus extends TileEntityLoadedBase implements IFluidAcc @Optional.Method(modid = "OpenComputers") public Object[] setType(Context context, Arguments args) { tanks[0].setTankType(CompatHandler.intToSteamType(args.checkInteger(0))); - return new Object[] {true}; + return new Object[] {}; } @Callback(direct = true) @@ -367,6 +367,29 @@ public class TileEntityChungus extends TileEntityLoadedBase implements IFluidAcc return new Object[] {tanks[0].getFill(), tanks[0].getMaxFill(), tanks[1].getFill(), tanks[1].getMaxFill(), CompatHandler.steamTypeToInt(tanks[0].getTankType())}; } + public String[] methods() { + return new String[] { + "getFluid", + "getType", + "setType", + "getInfo" + }; + } + + public Object[] invoke(String method, Context context, Arguments args) throws Exception { + switch(method) { + case ("getFluid"): + return getFluid(context, args); + case ("getType"): + return getType(context, args); + case ("setType"): + return setType(context, args); + case ("getInfo"): + return getInfo(context, args); + } + throw new NoSuchMethodException(); + } + @Override public FluidTank[] getSendingTanks() { return new FluidTank[] {tanks[1]}; diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityCoreEmitter.java b/src/main/java/com/hbm/tileentity/machine/TileEntityCoreEmitter.java index ff1278e52..1bab38cd8 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityCoreEmitter.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityCoreEmitter.java @@ -5,6 +5,7 @@ import api.hbm.energymk2.IEnergyReceiverMK2; import api.hbm.fluid.IFluidStandardReceiver; import api.hbm.tile.IInfoProviderEC; +import com.hbm.handler.CompatHandler; import com.hbm.inventory.container.ContainerCoreEmitter; import com.hbm.inventory.fluid.Fluids; import com.hbm.inventory.fluid.tank.FluidTank; @@ -37,7 +38,7 @@ 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 IEnergyReceiverMK2, ILaserable, IFluidStandardReceiver, SimpleComponent, IGUIProvider, IInfoProviderEC { +public class TileEntityCoreEmitter extends TileEntityMachineBase implements IEnergyReceiverMK2, ILaserable, IFluidStandardReceiver, SimpleComponent, IGUIProvider, IInfoProviderEC, CompatHandler.OCComponent { public long power; public static final long maxPower = 1000000000L; diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityCoreInjector.java b/src/main/java/com/hbm/tileentity/machine/TileEntityCoreInjector.java index e5862e2ab..20891cbe3 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityCoreInjector.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityCoreInjector.java @@ -1,5 +1,6 @@ package com.hbm.tileentity.machine; +import com.hbm.handler.CompatHandler; import com.hbm.interfaces.IFluidAcceptor; import com.hbm.inventory.container.ContainerCoreInjector; import com.hbm.inventory.fluid.FluidType; @@ -27,7 +28,7 @@ import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; @Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "OpenComputers")}) -public class TileEntityCoreInjector extends TileEntityMachineBase implements IFluidAcceptor, IFluidStandardReceiver, SimpleComponent, IGUIProvider { +public class TileEntityCoreInjector extends TileEntityMachineBase implements IFluidAcceptor, IFluidStandardReceiver, SimpleComponent, IGUIProvider, CompatHandler.OCComponent { public FluidTank[] tanks; public static final int range = 15; diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityCoreReceiver.java b/src/main/java/com/hbm/tileentity/machine/TileEntityCoreReceiver.java index 54ca9de4c..b2fe65851 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityCoreReceiver.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityCoreReceiver.java @@ -1,5 +1,6 @@ package com.hbm.tileentity.machine; +import com.hbm.handler.CompatHandler; import com.hbm.interfaces.IFluidAcceptor; import com.hbm.inventory.container.ContainerCoreReceiver; import com.hbm.inventory.fluid.FluidType; @@ -32,7 +33,7 @@ import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; @Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "OpenComputers")}) -public class TileEntityCoreReceiver extends TileEntityMachineBase implements IEnergyProviderMK2, IFluidAcceptor, ILaserable, IFluidStandardReceiver, SimpleComponent, IGUIProvider, IInfoProviderEC { +public class TileEntityCoreReceiver extends TileEntityMachineBase implements IEnergyProviderMK2, IFluidAcceptor, ILaserable, IFluidStandardReceiver, SimpleComponent, IGUIProvider, IInfoProviderEC, CompatHandler.OCComponent { public long power; public long joules; diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityCoreStabilizer.java b/src/main/java/com/hbm/tileentity/machine/TileEntityCoreStabilizer.java index 50564fb48..a21677995 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityCoreStabilizer.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityCoreStabilizer.java @@ -1,5 +1,6 @@ package com.hbm.tileentity.machine; +import com.hbm.handler.CompatHandler; import com.hbm.inventory.container.ContainerCoreStabilizer; import com.hbm.inventory.gui.GUICoreStabilizer; import com.hbm.items.ModItems; @@ -28,7 +29,7 @@ import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; @Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "OpenComputers")}) -public class TileEntityCoreStabilizer extends TileEntityMachineBase implements IEnergyReceiverMK2, SimpleComponent, IGUIProvider, IInfoProviderEC { +public class TileEntityCoreStabilizer extends TileEntityMachineBase implements IEnergyReceiverMK2, SimpleComponent, IGUIProvider, IInfoProviderEC, CompatHandler.OCComponent { public long power; public static final long maxPower = 2500000000L; diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityGeiger.java b/src/main/java/com/hbm/tileentity/machine/TileEntityGeiger.java index a53e7614d..314e91614 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityGeiger.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityGeiger.java @@ -3,6 +3,7 @@ package com.hbm.tileentity.machine; import java.util.ArrayList; import java.util.List; +import com.hbm.handler.CompatHandler; import com.hbm.handler.radiation.ChunkRadiationManager; import com.hbm.util.CompatEnergyControl; import com.hbm.util.ContaminationUtil; @@ -17,7 +18,7 @@ import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; @Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "OpenComputers")}) -public class TileEntityGeiger extends TileEntity implements SimpleComponent, IInfoProviderEC { +public class TileEntityGeiger extends TileEntity implements SimpleComponent, IInfoProviderEC, CompatHandler.OCComponent { int timer = 0; int ticker = 0; diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityICF.java b/src/main/java/com/hbm/tileentity/machine/TileEntityICF.java index b1508d53b..524671911 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityICF.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityICF.java @@ -1,5 +1,6 @@ package com.hbm.tileentity.machine; +import com.hbm.handler.CompatHandler; import com.hbm.inventory.container.ContainerICF; import com.hbm.inventory.fluid.Fluids; import com.hbm.inventory.fluid.tank.FluidTank; @@ -38,7 +39,7 @@ import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; @Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "OpenComputers")}) -public class TileEntityICF extends TileEntityMachineBase implements IGUIProvider, IFluidStandardTransceiver, IInfoProviderEC, SimpleComponent { +public class TileEntityICF extends TileEntityMachineBase implements IGUIProvider, IFluidStandardTransceiver, IInfoProviderEC, SimpleComponent, CompatHandler.OCComponent { public long laser; public long maxLaser; @@ -344,4 +345,32 @@ public class TileEntityICF extends TileEntityMachineBase implements IGUIProvider }; } + public String[] methods() { + return new String[] { + "getHeat", + "getHeatingRate", + "getMaxHeat", + "getPower", + "getFluid", + "getPelletStats" + }; + } + + public Object[] invoke(String method, Context context, Arguments args) throws Exception { + switch (method) { + case ("getHeat"): + return getHeat(context, args); + case ("getHeatingRate"): + return getHeatingRate(context, args); + case ("getMaxHeat"): + return getMaxHeat(context, args); + case ("getPower"): + return getPower(context, args); + case ("getFluid"): + return getFluid(context, args); + case ("getPelletStats"): + return getPelletStats(context, args); + } + throw new NoSuchMethodException(); + } } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityITER.java b/src/main/java/com/hbm/tileentity/machine/TileEntityITER.java index e7af16727..90ac75709 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityITER.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityITER.java @@ -8,6 +8,7 @@ import com.hbm.blocks.machine.MachineITER; import com.hbm.explosion.ExplosionLarge; import com.hbm.explosion.ExplosionNT; import com.hbm.explosion.ExplosionNT.ExAttrib; +import com.hbm.handler.CompatHandler; import com.hbm.interfaces.IFluidAcceptor; import com.hbm.interfaces.IFluidSource; import com.hbm.inventory.container.ContainerITER; @@ -52,7 +53,7 @@ import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; @Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "OpenComputers")}) -public class TileEntityITER extends TileEntityMachineBase implements IEnergyReceiverMK2, IFluidAcceptor, IFluidSource, IFluidStandardTransceiver, IGUIProvider, IInfoProviderEC, SimpleComponent { +public class TileEntityITER extends TileEntityMachineBase implements IEnergyReceiverMK2, IFluidAcceptor, IFluidSource, IFluidStandardTransceiver, IGUIProvider, IInfoProviderEC, SimpleComponent, CompatHandler.OCComponent { public long power; public static final long maxPower = 10000000; @@ -722,4 +723,36 @@ public class TileEntityITER extends TileEntityMachineBase implements IEnergyRece return new Object[]{ItemFusionShield.getShieldDamage(slots[3]), ((ItemFusionShield)slots[3].getItem()).maxDamage}; return new Object[] {"N/A", "N/A"}; } + + public String[] methods() { + return new String[] { + "getEnergyInfo", + "isActive", + "setActive", + "getFluid", + "getPlasmaTemp", + "getMaxTemp", + "getBlanketDamage" + }; + } + + public Object[] invoke(String method, Context context, Arguments args) throws Exception { + switch (method) { + case ("getEnergyInfo"): + return getEnergyInfo(context, args); + case ("isActive"): + return isActive(context, args); + case ("setActive"): + return setActive(context, args); + case ("getFluid"): + return getFluid(context, args); + case ("getPlasmaTemp"): + return getPlasmaTemp(context, args); + case ("getMaxTemp"): + return getMaxTemp(context, args); + case ("getBlanketDamage"): + return getBlanketDamage(context, args); + } + throw new NoSuchMethodException(); + } } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineLargeTurbine.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineLargeTurbine.java index 508e4d3a0..81c97679d 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineLargeTurbine.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineLargeTurbine.java @@ -44,7 +44,7 @@ import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; @Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "OpenComputers")}) -public class TileEntityMachineLargeTurbine extends TileEntityMachineBase implements IFluidContainer, IFluidAcceptor, IFluidSource, IEnergyProviderMK2, IFluidStandardTransceiver, IGUIProvider, SimpleComponent, IInfoProviderEC { +public class TileEntityMachineLargeTurbine extends TileEntityMachineBase implements IFluidContainer, IFluidAcceptor, IFluidSource, IEnergyProviderMK2, IFluidStandardTransceiver, IGUIProvider, SimpleComponent, IInfoProviderEC, CompatHandler.OCComponent { public long power; public static final long maxPower = 100000000; @@ -365,7 +365,7 @@ public class TileEntityMachineLargeTurbine extends TileEntityMachineBase impleme @Optional.Method(modid = "OpenComputers") public Object[] setType(Context context, Arguments args) { tanks[0].setTankType(CompatHandler.intToSteamType(args.checkInteger(0))); - return new Object[] {true}; + return new Object[] {}; } @Callback(direct = true) @@ -374,6 +374,29 @@ public class TileEntityMachineLargeTurbine extends TileEntityMachineBase impleme return new Object[] {tanks[0].getFill(), tanks[0].getMaxFill(), tanks[1].getFill(), tanks[1].getMaxFill(), CompatHandler.steamTypeToInt(tanks[0].getTankType())}; } + public String[] methods() { + return new String[] { + "getFluid", + "getType", + "setType", + "getInfo" + }; + } + + public Object[] invoke(String method, Context context, Arguments args) throws Exception { + switch(method) { + case ("getFluid"): + return getFluid(context, args); + case ("getType"): + return getType(context, args); + case ("setType"): + return setType(context, args); + case ("getInfo"): + return getInfo(context, args); + } + throw new NoSuchMethodException(); + } + @Override public Container provideContainer(int ID, EntityPlayer player, World world, int x, int y, int z) { return new ContainerMachineLargeTurbine(player.inventory, this); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadarNT.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadarNT.java index 630628f4b..9a4419d02 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadarNT.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadarNT.java @@ -8,6 +8,7 @@ import java.util.function.Function; import com.google.gson.JsonObject; import com.google.gson.stream.JsonWriter; import com.hbm.extprop.HbmLivingProps; +import com.hbm.handler.CompatHandler; import com.hbm.interfaces.IControlReceiver; import com.hbm.inventory.container.ContainerMachineRadarNT; import com.hbm.inventory.gui.GUIMachineRadarNT; @@ -66,7 +67,7 @@ import net.minecraft.world.WorldServer; * @author hbm */ @Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "OpenComputers")}) -public class TileEntityMachineRadarNT extends TileEntityMachineBase implements IEnergyReceiverMK2, IGUIProvider, IConfigurableMachine, IControlReceiver, SimpleComponent { +public class TileEntityMachineRadarNT extends TileEntityMachineBase implements IEnergyReceiverMK2, IGUIProvider, IConfigurableMachine, IControlReceiver, SimpleComponent, CompatHandler.OCComponent { public boolean scanMissiles = true; public boolean scanShells = true; @@ -674,4 +675,43 @@ public class TileEntityMachineRadarNT extends TileEntityMachineBase implements I } return new Object[]{false, e.posX, e.posY, e.posZ, type}; } + + public String[] methods() { + return new String[] { + "getSettings", + "getRange", + "setSettings", + "getEnergyInfo", + "isJammed", + "getAmount", + "isIndexPlayer", + "getIndexType", + "getEntityAtIndex" + }; + } + + public Object[] invoke(String method, Context context, Arguments args) throws Exception { + switch(method) { + case ("getSettings"): + return getSettings(context, args); + case ("getRange"): + return getRange(context, args); + case ("setSettings"): + return setSettings(context, args); + case ("getEnergyInfo"): + return getEnergyInfo(context, args); + case ("isJammed"): + return isJammed(context, args); + case ("getAmount"): + return getAmount(context, args); + case ("isIndexPlayer"): + return isIndexPlayer(context, args); + case ("getIndexType"): + return getIndexType(context, args); + case ("getEntityAtIndex"): + return getEntityAtIndex(context, args); + } + throw new NoSuchMethodException(); + } + } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineReactorBreeding.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineReactorBreeding.java index 4c42a1ce5..c216f9da9 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineReactorBreeding.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineReactorBreeding.java @@ -2,6 +2,7 @@ package com.hbm.tileentity.machine; import com.hbm.blocks.ModBlocks; import com.hbm.blocks.machine.ReactorResearch; +import com.hbm.handler.CompatHandler; import com.hbm.inventory.container.ContainerMachineReactorBreeding; import com.hbm.inventory.gui.GUIMachineReactorBreeding; import com.hbm.inventory.recipes.BreederRecipes; @@ -30,7 +31,7 @@ import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; @Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "OpenComputers")}) -public class TileEntityMachineReactorBreeding extends TileEntityMachineBase implements SimpleComponent, IGUIProvider, IInfoProviderEC { +public class TileEntityMachineReactorBreeding extends TileEntityMachineBase implements SimpleComponent, IGUIProvider, IInfoProviderEC, CompatHandler.OCComponent { public int flux; public float progress; diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineTurbine.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineTurbine.java index 6cc3bd5ad..a5e337448 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineTurbine.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineTurbine.java @@ -39,7 +39,7 @@ import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; @Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "OpenComputers")}) -public class TileEntityMachineTurbine extends TileEntityLoadedBase implements ISidedInventory, IFluidContainer, IEnergyProviderMK2, IFluidStandardTransceiver, IGUIProvider, SimpleComponent, IInfoProviderEC { +public class TileEntityMachineTurbine extends TileEntityLoadedBase implements ISidedInventory, IFluidContainer, IEnergyProviderMK2, IFluidStandardTransceiver, IGUIProvider, SimpleComponent, IInfoProviderEC, CompatHandler.OCComponent { private ItemStack slots[]; diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineTurbineGas.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineTurbineGas.java index 66d850a4c..71c7266ae 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineTurbineGas.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineTurbineGas.java @@ -3,6 +3,7 @@ package com.hbm.tileentity.machine; import java.util.HashMap; import com.hbm.blocks.BlockDummyable; +import com.hbm.handler.CompatHandler; import com.hbm.handler.pollution.PollutionHandler; import com.hbm.handler.pollution.PollutionHandler.PollutionType; import com.hbm.interfaces.IControlReceiver; @@ -41,7 +42,7 @@ import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; @Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "OpenComputers")}) -public class TileEntityMachineTurbineGas extends TileEntityMachineBase implements IFluidStandardTransceiver, IEnergyProviderMK2, IControlReceiver, IGUIProvider, SimpleComponent, IInfoProviderEC { +public class TileEntityMachineTurbineGas extends TileEntityMachineBase implements IFluidStandardTransceiver, IEnergyProviderMK2, IControlReceiver, IGUIProvider, SimpleComponent, IInfoProviderEC, CompatHandler.OCComponent { public long power; public static final long maxPower = 1000000L; @@ -605,14 +606,14 @@ public class TileEntityMachineTurbineGas extends TileEntityMachineBase implement @Optional.Method(modid = "OpenComputers") public Object[] setThrottle(Context context, Arguments args) { throttle = args.checkInteger(0); - return new Object[] {true}; + return new Object[] {}; } @Callback(direct = true, limit = 4) @Optional.Method(modid = "OpenComputers") public Object[] setAuto(Context context, Arguments args) { autoMode = args.checkBoolean(0); - return new Object[] {true}; + return new Object[] {}; } @Callback(direct = true, limit = 4) @@ -620,20 +621,19 @@ public class TileEntityMachineTurbineGas extends TileEntityMachineBase implement public Object[] start(Context context, Arguments args) { stopIfNotReady(); startup(); - return new Object[] {true}; + return new Object[] {}; } @Callback(direct = true, limit = 4) @Optional.Method(modid = "OpenComputers") public Object[] stop(Context context, Arguments args) { shutdown(); - return new Object[] {true}; + return new Object[] {}; } @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getInfo(Context context, Arguments args) { - return new Object[] {throttle, state, tanks[0].getFill(), tanks[0].getMaxFill(), tanks[1].getFill(), tanks[1].getMaxFill(), @@ -641,6 +641,64 @@ public class TileEntityMachineTurbineGas extends TileEntityMachineBase implement tanks[3].getFill(), tanks[3].getMaxFill()}; } + public String[] methods() { + return new String[] { + "getFluid", + "getType", + "getPower", + "getThrottle", + "getState", + "getAuto", + "setThrottle", + "setAuto", + "start", + "stop", + "getInfo" + }; + } + + public Object[] invoke(String method, Context context, Arguments args) throws Exception { + switch(method) { + case ("getFluid"): + return new Object[] { + tanks[0].getFill(), tanks[0].getMaxFill(), + tanks[1].getFill(), tanks[1].getMaxFill(), + tanks[2].getFill(), tanks[2].getMaxFill(), + tanks[3].getFill(), tanks[3].getMaxFill() + }; + case ("getType"): + return new Object[] {tanks[0].getTankType().getName()}; + case ("getPower"): + return new Object[] {power}; + case ("getThrottle"): + return new Object[] {throttle}; + case ("getState"): + return new Object[] {state}; + case ("getAuto"): + return new Object[] {autoMode}; + case ("setThrottle"): + throttle = args.checkInteger(0); + return new Object[] {}; + case ("setAuto"): + autoMode = args.checkBoolean(0); + return new Object[] {}; + case ("start"): + stopIfNotReady(); + startup(); + return new Object[] {}; + case ("stop"): + shutdown(); + return new Object[] {}; + case ("getInfo"): + return new Object[] {throttle, state, + tanks[0].getFill(), tanks[0].getMaxFill(), + tanks[1].getFill(), tanks[1].getMaxFill(), + tanks[2].getFill(), tanks[2].getMaxFill(), + tanks[3].getFill(), tanks[3].getMaxFill()}; + } + throw new NoSuchMethodException(); + } + @Override public Container provideContainer(int ID, EntityPlayer player, World world, int x, int y, int z) { return new ContainerMachineTurbineGas(player.inventory, this); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMicrowave.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMicrowave.java index 759274b54..b00c2e1d8 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMicrowave.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMicrowave.java @@ -1,5 +1,6 @@ package com.hbm.tileentity.machine; +import com.hbm.handler.CompatHandler; import com.hbm.inventory.container.ContainerMicrowave; import com.hbm.inventory.gui.GUIMicrowave; import com.hbm.lib.Library; @@ -28,7 +29,7 @@ import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; @Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "OpenComputers")}) -public class TileEntityMicrowave extends TileEntityMachineBase implements IEnergyReceiverMK2, IGUIProvider, SimpleComponent { +public class TileEntityMicrowave extends TileEntityMachineBase implements IEnergyReceiverMK2, IGUIProvider, SimpleComponent, CompatHandler.OCComponent { public long power; public static final long maxPower = 50000; diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityPWRController.java b/src/main/java/com/hbm/tileentity/machine/TileEntityPWRController.java index d89808249..ac2e162c3 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityPWRController.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityPWRController.java @@ -6,6 +6,7 @@ import java.util.List; import java.util.Map.Entry; import com.hbm.blocks.ModBlocks; +import com.hbm.handler.CompatHandler; import com.hbm.interfaces.IControlReceiver; import com.hbm.inventory.container.ContainerPWR; import com.hbm.inventory.fluid.Fluids; @@ -43,7 +44,7 @@ import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; @Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "OpenComputers")}) -public class TileEntityPWRController extends TileEntityMachineBase implements IGUIProvider, IControlReceiver, SimpleComponent, IFluidStandardTransceiver { +public class TileEntityPWRController extends TileEntityMachineBase implements IGUIProvider, IControlReceiver, SimpleComponent, IFluidStandardTransceiver, CompatHandler.OCComponent { public FluidTank[] tanks; public int coreHeat; diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityReactorControl.java b/src/main/java/com/hbm/tileentity/machine/TileEntityReactorControl.java index 7169ce7f4..51b1229fb 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityReactorControl.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityReactorControl.java @@ -2,6 +2,7 @@ package com.hbm.tileentity.machine; import com.hbm.blocks.ModBlocks; import com.hbm.blocks.machine.ReactorResearch; +import com.hbm.handler.CompatHandler; import com.hbm.interfaces.IControlReceiver; import com.hbm.inventory.container.ContainerReactorControl; import com.hbm.inventory.gui.GUIReactorControl; @@ -29,7 +30,7 @@ import net.minecraft.util.Vec3; import net.minecraft.world.World; @Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "OpenComputers")}) -public class TileEntityReactorControl extends TileEntityMachineBase implements IControlReceiver, IGUIProvider, SimpleComponent { +public class TileEntityReactorControl extends TileEntityMachineBase implements IControlReceiver, IGUIProvider, SimpleComponent, CompatHandler.OCComponent { public TileEntityReactorControl() { super(1); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityReactorResearch.java b/src/main/java/com/hbm/tileentity/machine/TileEntityReactorResearch.java index fb5b31782..6eb557ec7 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityReactorResearch.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityReactorResearch.java @@ -5,6 +5,7 @@ import java.util.List; import com.hbm.blocks.ModBlocks; import com.hbm.config.MobConfig; +import com.hbm.handler.CompatHandler; import com.hbm.handler.radiation.ChunkRadiationManager; import com.hbm.interfaces.IControlReceiver; import com.hbm.inventory.RecipesCommon.ComparableStack; @@ -41,7 +42,7 @@ import net.minecraftforge.common.util.ForgeDirection; @Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "OpenComputers")}) //TODO: fix reactor control; -public class TileEntityReactorResearch extends TileEntityMachineBase implements IControlReceiver, SimpleComponent, IGUIProvider, IInfoProviderEC { +public class TileEntityReactorResearch extends TileEntityMachineBase implements IControlReceiver, SimpleComponent, IGUIProvider, IInfoProviderEC, CompatHandler.OCComponent { @SideOnly(Side.CLIENT) public double lastLevel; @@ -430,6 +431,32 @@ public class TileEntityReactorResearch extends TileEntityMachineBase implements return new Object[] {heat, level, targetLevel, totalFlux}; } + public String[] methods() { + return new String[] { + "getTemp", + "getLevel", + "getTargetLevel", + "getFlux", + "getInfo" + }; + } + + public Object[] invoke(String method, Context context, Arguments args) throws Exception { + switch(method) { + case ("getTemp"): + return getTemp(context, args); + case ("getLevel"): + return getLevel(context, args); + case ("getTargetLevel"): + return getTargetLevel(context, args); + case ("getFlux"): + return getFlux(context, args); + case ("getInfo"): + return getInfo(context, args); + } + throw new NoSuchMethodException(); + } + @Callback(direct = true, limit = 4) @Optional.Method(modid = "OpenComputers") public Object[] setLevel(Context context, Arguments args) { diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityReactorZirnox.java b/src/main/java/com/hbm/tileentity/machine/TileEntityReactorZirnox.java index 91286049a..f753be765 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityReactorZirnox.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityReactorZirnox.java @@ -10,6 +10,7 @@ import com.hbm.config.MobConfig; import com.hbm.entity.projectile.EntityZirnoxDebris; import com.hbm.entity.projectile.EntityZirnoxDebris.DebrisType; import com.hbm.explosion.ExplosionNukeGeneric; +import com.hbm.handler.CompatHandler; import com.hbm.handler.MultiblockHandlerXR; import com.hbm.interfaces.IControlReceiver; import com.hbm.interfaces.IFluidAcceptor; @@ -52,7 +53,7 @@ import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; @Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "OpenComputers")}) -public class TileEntityReactorZirnox extends TileEntityMachineBase implements IFluidContainer, IFluidAcceptor, IFluidSource, IControlReceiver, IFluidStandardTransceiver, SimpleComponent, IGUIProvider, IInfoProviderEC { +public class TileEntityReactorZirnox extends TileEntityMachineBase implements IFluidContainer, IFluidAcceptor, IFluidSource, IControlReceiver, IFluidStandardTransceiver, SimpleComponent, IGUIProvider, IInfoProviderEC, CompatHandler.OCComponent { public int heat; public static final int maxHeat = 100000; @@ -600,6 +601,41 @@ public class TileEntityReactorZirnox extends TileEntityMachineBase implements IF return new Object[] {}; } + public String[] methods() { + return new String[] { + "getTemp", + "getPressure", + "getWater", + "getSteam", + "getCarbonDioxide", + "isActive", + "getInfo", + "setActive" + }; + } + + public Object[] invoke(String method, Context context, Arguments args) throws Exception { + switch(method) { + case ("getTemp"): + return getTemp(context, args); + case ("getPressure"): + return getPressure(context, args); + case ("getWater"): + return getWater(context, args); + case ("getSteam"): + return getSteam(context, args); + case ("getCarbonDioxide"): + return getCarbonDioxide(context, args); + case ("isActive"): + return isActive(context, args); + case ("getInfo"): + return getInfo(context, args); + case ("setActive"): + return setActive(context, args); + } + throw new NoSuchMethodException(); + } + @Override public Container provideContainer(int ID, EntityPlayer player, World world, int x, int y, int z) { return new ContainerReactorZirnox(player.inventory, this); 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 37e97639f..3f0beb44b 100644 --- a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityCraneConsole.java +++ b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityCraneConsole.java @@ -3,6 +3,7 @@ package com.hbm.tileentity.machine.rbmk; import com.hbm.blocks.BlockDummyable; import com.hbm.blocks.machine.rbmk.RBMKBase; import com.hbm.extprop.HbmPlayerProps; +import com.hbm.handler.CompatHandler; import com.hbm.handler.HbmKeybinds.EnumKeybind; import com.hbm.items.machine.ItemRBMKRod; import com.hbm.packet.NBTPacket; @@ -28,7 +29,7 @@ import net.minecraftforge.common.util.ForgeDirection; import java.util.List; @Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "OpenComputers")}) -public class TileEntityCraneConsole extends TileEntity implements INBTPacketReceiver, SimpleComponent { +public class TileEntityCraneConsole extends TileEntity implements INBTPacketReceiver, SimpleComponent, CompatHandler.OCComponent { public int centerX; public int centerY; 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 164ce4192..87a195ef4 100644 --- a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKBoiler.java +++ b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKBoiler.java @@ -33,12 +33,13 @@ import net.minecraft.inventory.Container; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.Vec3; import net.minecraft.world.World; +import net.minecraftforge.common.util.ForgeDirection; 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, IInfoProviderEC { +public class TileEntityRBMKBoiler extends TileEntityRBMKSlottedBase implements IFluidAcceptor, IFluidSource, IControlReceiver, IFluidStandardTransceiver, SimpleComponent, IInfoProviderEC, CompatHandler.OCComponent { public FluidTank feed; public FluidTank steam; @@ -403,6 +404,11 @@ public class TileEntityRBMKBoiler extends TileEntityRBMKSlottedBase implements I return new Object[] {true}; } + @Override + public boolean canConnectNode(ForgeDirection side) { + return side == ForgeDirection.DOWN; + } + @Override public Container provideContainer(int ID, EntityPlayer player, World world, int x, int y, int z) { return new ContainerRBMKGeneric(player.inventory); diff --git a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKConsole.java b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKConsole.java index 158f30152..b83799464 100644 --- a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKConsole.java +++ b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKConsole.java @@ -7,6 +7,7 @@ import java.util.Locale; import java.util.Set; import java.util.LinkedHashMap; +import com.hbm.handler.CompatHandler; import com.hbm.interfaces.IControlReceiver; import com.hbm.inventory.fluid.Fluids; import com.hbm.inventory.gui.GUIRBMKConsole; @@ -36,7 +37,7 @@ import li.cil.oc.api.machine.Context; import li.cil.oc.api.network.SimpleComponent; @Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "OpenComputers")}) -public class TileEntityRBMKConsole extends TileEntityMachineBase implements IControlReceiver, IGUIProvider, SimpleComponent { +public class TileEntityRBMKConsole extends TileEntityMachineBase implements IControlReceiver, IGUIProvider, SimpleComponent, CompatHandler.OCComponent { private int targetX; private int targetY; 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 e06d7ff1a..2b4bd386a 100644 --- a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKControl.java +++ b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKControl.java @@ -1,6 +1,7 @@ package com.hbm.tileentity.machine.rbmk; import com.hbm.entity.projectile.EntityRBMKDebris.DebrisType; +import com.hbm.handler.CompatHandler; import cpw.mods.fml.common.Optional; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -10,9 +11,10 @@ import li.cil.oc.api.machine.Context; import li.cil.oc.api.network.SimpleComponent; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.MathHelper; +import net.minecraftforge.common.util.ForgeDirection; @Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "OpenComputers")}) -public abstract class TileEntityRBMKControl extends TileEntityRBMKSlottedBase implements SimpleComponent { +public abstract class TileEntityRBMKControl extends TileEntityRBMKSlottedBase implements SimpleComponent, CompatHandler.OCComponent { @SideOnly(Side.CLIENT) public double lastLevel; @@ -164,4 +166,9 @@ public abstract class TileEntityRBMKControl extends TileEntityRBMKSlottedBase im targetLevel = MathHelper.clamp_double(newLevel, 0, 1); return new Object[] {}; } + + @Override + public boolean canConnectNode(ForgeDirection side) { + return side == ForgeDirection.DOWN; + } } 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 715eba42f..7dd7de507 100644 --- a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKCooler.java +++ b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKCooler.java @@ -1,6 +1,7 @@ package com.hbm.tileentity.machine.rbmk; import api.hbm.fluid.IFluidStandardReceiver; +import com.hbm.handler.CompatHandler; import com.hbm.interfaces.IFluidAcceptor; import com.hbm.inventory.fluid.FluidType; import com.hbm.inventory.fluid.Fluids; @@ -16,11 +17,12 @@ import net.minecraft.entity.Entity; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.AxisAlignedBB; import net.minecraft.util.DamageSource; +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 TileEntityRBMKCooler extends TileEntityRBMKBase implements IFluidAcceptor, IFluidStandardReceiver, SimpleComponent { +public class TileEntityRBMKCooler extends TileEntityRBMKBase implements IFluidAcceptor, IFluidStandardReceiver, SimpleComponent, CompatHandler.OCComponent { private FluidTank tank; private int lastCooled; @@ -178,4 +180,9 @@ public class TileEntityRBMKCooler extends TileEntityRBMKBase implements IFluidAc public Object[] getInfo(Context context, Arguments args) { return new Object[]{heat, tank.getFill(), tank.getMaxFill(), xCoord, yCoord, zCoord}; } + + @Override + public boolean canConnectNode(ForgeDirection side) { + return side == ForgeDirection.DOWN; + } } 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 f74401c8c..f9428bec4 100644 --- a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKHeater.java +++ b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKHeater.java @@ -3,6 +3,7 @@ package com.hbm.tileentity.machine.rbmk; import api.hbm.fluid.IFluidStandardTransceiver; import com.hbm.blocks.ModBlocks; import com.hbm.entity.projectile.EntityRBMKDebris.DebrisType; +import com.hbm.handler.CompatHandler; import com.hbm.interfaces.IFluidAcceptor; import com.hbm.interfaces.IFluidSource; import com.hbm.inventory.container.ContainerRBMKHeater; @@ -28,12 +29,13 @@ import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Container; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.world.World; +import net.minecraftforge.common.util.ForgeDirection; 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 { +public class TileEntityRBMKHeater extends TileEntityRBMKSlottedBase implements IFluidAcceptor, IFluidSource, IFluidStandardTransceiver, SimpleComponent, CompatHandler.OCComponent { public FluidTank feed; public FluidTank steam; @@ -334,6 +336,11 @@ public class TileEntityRBMKHeater extends TileEntityRBMKSlottedBase implements I return new Object[] {xCoord, yCoord, zCoord}; } + @Override + public boolean canConnectNode(ForgeDirection side) { + return side == ForgeDirection.DOWN; + } + @Override public Container provideContainer(int ID, EntityPlayer player, World world, int x, int y, int z) { return new ContainerRBMKHeater(player.inventory, this); 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 9d08657b7..bf63d5935 100644 --- a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKOutgasser.java +++ b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKOutgasser.java @@ -3,6 +3,7 @@ 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.handler.CompatHandler; import com.hbm.inventory.FluidStack; import com.hbm.inventory.container.ContainerRBMKOutgasser; import com.hbm.inventory.fluid.Fluids; @@ -26,9 +27,10 @@ import net.minecraft.inventory.Container; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.world.World; +import net.minecraftforge.common.util.ForgeDirection; @Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "OpenComputers")}) -public class TileEntityRBMKOutgasser extends TileEntityRBMKSlottedBase implements IRBMKFluxReceiver, IFluidStandardSender, SimpleComponent { +public class TileEntityRBMKOutgasser extends TileEntityRBMKSlottedBase implements IRBMKFluxReceiver, IFluidStandardSender, SimpleComponent, CompatHandler.OCComponent { public FluidTank gas; public double progress; @@ -262,6 +264,11 @@ public class TileEntityRBMKOutgasser extends TileEntityRBMKSlottedBase implement return new Object[] {gas.getFill(), gas.getMaxFill(), progress, gas.getTankType().getID(), xCoord, yCoord, zCoord}; } + @Override + public boolean canConnectNode(ForgeDirection side) { + return side == ForgeDirection.DOWN; + } + @Override public Container provideContainer(int ID, EntityPlayer player, World world, int x, int y, int z) { return new ContainerRBMKOutgasser(player.inventory, this); 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 2b6d0c9b5..d8166871c 100644 --- a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKRod.java +++ b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKRod.java @@ -4,6 +4,7 @@ import com.hbm.blocks.ModBlocks; import com.hbm.blocks.machine.rbmk.RBMKBase; import com.hbm.blocks.machine.rbmk.RBMKRod; import com.hbm.entity.projectile.EntityRBMKDebris.DebrisType; +import com.hbm.handler.CompatHandler; import com.hbm.handler.radiation.ChunkRadiationManager; import com.hbm.inventory.container.ContainerRBMKRod; import com.hbm.inventory.gui.GUIRBMKRod; @@ -33,7 +34,7 @@ import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; @Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "OpenComputers")}) -public class TileEntityRBMKRod extends TileEntityRBMKSlottedBase implements IRBMKFluxReceiver, IRBMKLoadable, SimpleComponent, IInfoProviderEC { +public class TileEntityRBMKRod extends TileEntityRBMKSlottedBase implements IRBMKFluxReceiver, IRBMKLoadable, SimpleComponent, IInfoProviderEC, CompatHandler.OCComponent { //amount of "neutron energy" buffered for the next tick to use for the reaction public double fluxFast; @@ -495,6 +496,11 @@ public class TileEntityRBMKRod extends TileEntityRBMKSlottedBase implements IRBM return new Object[] {xCoord, yCoord, zCoord}; } + @Override + public boolean canConnectNode(ForgeDirection side) { + return side == ForgeDirection.DOWN; + } + @Override public Container provideContainer(int ID, EntityPlayer player, World world, int x, int y, int z) { return new ContainerRBMKRod(player.inventory, this); diff --git a/src/main/java/com/hbm/tileentity/machine/storage/TileEntityBarrel.java b/src/main/java/com/hbm/tileentity/machine/storage/TileEntityBarrel.java index c82acdf0f..dc7e5ec20 100644 --- a/src/main/java/com/hbm/tileentity/machine/storage/TileEntityBarrel.java +++ b/src/main/java/com/hbm/tileentity/machine/storage/TileEntityBarrel.java @@ -2,6 +2,7 @@ package com.hbm.tileentity.machine.storage; import api.hbm.fluid.*; import com.hbm.blocks.ModBlocks; +import com.hbm.handler.CompatHandler; import com.hbm.interfaces.IFluidAcceptor; import com.hbm.interfaces.IFluidSource; import com.hbm.inventory.FluidContainerRegistry; @@ -44,7 +45,7 @@ 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 class TileEntityBarrel extends TileEntityMachineBase implements IFluidAcceptor, IFluidSource, SimpleComponent, IFluidStandardTransceiver, IPersistentNBT, IGUIProvider, CompatHandler.OCComponent { public FluidTank tank; public short mode = 0; @@ -427,4 +428,24 @@ public class TileEntityBarrel extends TileEntityMachineBase implements IFluidAcc public Object[] getInfo(Context context, Arguments args) { return new Object[]{tank.getFill(), tank.getMaxFill(), tank.getTankType().getName()}; } + + @Override + public String[] methods() { + return new String[] {"getFluidStored", "getMaxStored", "getTypeStored", "getInfo"}; + } + + @Override + public Object[] invoke(String method, Context context, Arguments args) throws Exception { + switch (method) { + case "getFluidStored": + return getFluidStored(context, args); + case "getMaxStored": + return getMaxStored(context, args); + case "getTypeStored": + return getTypeStored(context, args); + case "getInfo": + return getInfo(context, args); + } + throw new NoSuchMethodException(); + } } 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 95c4c7191..64ea7037d 100644 --- a/src/main/java/com/hbm/tileentity/machine/storage/TileEntityMachineBattery.java +++ b/src/main/java/com/hbm/tileentity/machine/storage/TileEntityMachineBattery.java @@ -9,6 +9,7 @@ import api.hbm.energymk2.Nodespace.PowerNode; import api.hbm.tile.IInfoProviderEC; import com.hbm.blocks.machine.MachineBattery; +import com.hbm.handler.CompatHandler; import com.hbm.inventory.container.ContainerMachineBattery; import com.hbm.inventory.gui.GUIMachineBattery; import com.hbm.lib.Library; @@ -34,7 +35,7 @@ import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; @Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "opencomputers")}) -public class TileEntityMachineBattery extends TileEntityMachineBase implements IEnergyConductorMK2, IEnergyProviderMK2, IEnergyReceiverMK2, IPersistentNBT, SimpleComponent, IGUIProvider, IInfoProviderEC { +public class TileEntityMachineBattery extends TileEntityMachineBase implements IEnergyConductorMK2, IEnergyProviderMK2, IEnergyReceiverMK2, IPersistentNBT, SimpleComponent, IGUIProvider, IInfoProviderEC, CompatHandler.OCComponent { public long[] log = new long[20]; public long delta = 0; 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 c71ba716c..f963cb359 100644 --- a/src/main/java/com/hbm/tileentity/machine/storage/TileEntityMachineFluidTank.java +++ b/src/main/java/com/hbm/tileentity/machine/storage/TileEntityMachineFluidTank.java @@ -5,6 +5,7 @@ import com.hbm.blocks.BlockDummyable; import com.hbm.blocks.ModBlocks; import com.hbm.explosion.vanillant.ExplosionVNT; import com.hbm.extprop.HbmPlayerProps; +import com.hbm.handler.CompatHandler.OCComponent; import com.hbm.handler.MultiblockHandlerXR; import com.hbm.interfaces.IFluidAcceptor; import com.hbm.interfaces.IFluidContainer; @@ -55,7 +56,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, SimpleComponent, IFluidSource, IFluidAcceptor, IFluidStandardTransceiver, IPersistentNBT, IOverpressurable, IGUIProvider, IRepairable { +public class TileEntityMachineFluidTank extends TileEntityMachineBase implements IFluidContainer, SimpleComponent, OCComponent, IFluidSource, IFluidAcceptor, IFluidStandardTransceiver, IPersistentNBT, IOverpressurable, IGUIProvider, IRepairable { public FluidTank tank; public short mode = 0; @@ -514,4 +515,24 @@ public class TileEntityMachineFluidTank extends TileEntityMachineBase implements public Object[] getInfo(Context context, Arguments args) { return new Object[]{tank.getFill(), tank.getMaxFill(), tank.getTankType().getName()}; } + + @Override + public String[] methods() { + return new String[] {"getFluidStored", "getMaxStored", "getTypeStored", "getInfo"}; + } + + @Override + public Object[] invoke(String method, Context context, Arguments args) throws Exception { + switch (method) { + case "getFluidStored": + return getFluidStored(context, args); + case "getMaxStored": + return getMaxStored(context, args); + case "getTypeStored": + return getTypeStored(context, args); + case "getInfo": + return getInfo(context, args); + } + throw new NoSuchMethodException(); + } } \ No newline at end of file diff --git a/src/main/java/com/hbm/tileentity/network/TileEntityRadioTelex.java b/src/main/java/com/hbm/tileentity/network/TileEntityRadioTelex.java index b2ad7b4d0..20d7fe6f6 100644 --- a/src/main/java/com/hbm/tileentity/network/TileEntityRadioTelex.java +++ b/src/main/java/com/hbm/tileentity/network/TileEntityRadioTelex.java @@ -3,6 +3,7 @@ package com.hbm.tileentity.network; import java.util.ArrayList; import java.util.List; +import com.hbm.handler.CompatHandler; import com.hbm.interfaces.IControlReceiver; import com.hbm.inventory.gui.GuiScreenRadioTelex; import com.hbm.tileentity.IGUIProvider; @@ -29,7 +30,7 @@ import net.minecraft.util.AxisAlignedBB; import net.minecraft.world.World; @Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "OpenComputers")}) -public class TileEntityRadioTelex extends TileEntity implements INBTPacketReceiver, IControlReceiver, IGUIProvider, SimpleComponent { +public class TileEntityRadioTelex extends TileEntity implements INBTPacketReceiver, IControlReceiver, IGUIProvider, SimpleComponent, CompatHandler.OCComponent { public static final int lineWidth = 33; public String txChannel = ""; diff --git a/src/main/java/com/hbm/tileentity/turret/TileEntityTurretBaseNT.java b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretBaseNT.java index 227bb9d3f..f8f08cede 100644 --- a/src/main/java/com/hbm/tileentity/turret/TileEntityTurretBaseNT.java +++ b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretBaseNT.java @@ -14,6 +14,7 @@ import com.hbm.entity.train.EntityRailCarBase; import com.hbm.handler.BulletConfigSyncingUtil; import com.hbm.handler.BulletConfiguration; import com.hbm.handler.CasingEjector; +import com.hbm.handler.CompatHandler; import com.hbm.interfaces.IControlReceiver; import com.hbm.inventory.RecipesCommon.ComparableStack; import com.hbm.inventory.container.ContainerTurretBase; @@ -65,7 +66,7 @@ import net.minecraftforge.common.util.ForgeDirection; * */ @Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "OpenComputers")}) -public abstract class TileEntityTurretBaseNT extends TileEntityMachineBase implements IEnergyReceiverMK2, IControlReceiver, IGUIProvider, SimpleComponent { +public abstract class TileEntityTurretBaseNT extends TileEntityMachineBase implements IEnergyReceiverMK2, IControlReceiver, IGUIProvider, SimpleComponent, CompatHandler.OCComponent { @Override public boolean hasPermission(EntityPlayer player) { @@ -1012,4 +1013,55 @@ public abstract class TileEntityTurretBaseNT extends TileEntityMachineBase imple public Object[] isAligned(Context context, Arguments args) { return new Object[] {this.aligned}; } + + @Override + public boolean canConnectNode(ForgeDirection side) { + return side == ForgeDirection.DOWN; + } + + @Override + public String[] methods() { + return new String[] { + "setActive", + "isActive", + "getEnergyInfo", + "getWhitelisted", + "addWhitelist", + "removeWhitelist", + "setTargeting", + "getTargeting", + "hasTarget", + "getAngle", + "isAligned" + }; + } + + @Override + public Object[] invoke(String method, Context context, Arguments args) throws Exception { + switch (method) { + case "setActive": + return setActive(context, args); + case "isActive": + return isActive(context, args); + case "getEnergyInfo": + return getEnergyInfo(context, args); + case "getWhitelisted": + return getWhitelisted(context, args); + case "addWhitelist": + return addWhitelist(context, args); + case "removeWhitelist": + return removeWhitelist(context, args); + case "setTargeting": + return setTargeting(context, args); + case "getTargeting": + return getTargeting(context, args); + case "hasTarget": + return hasTarget(context, args); + case "getAngle": + return getAngle(context, args); + case "isAligned": + return isAligned(context, args); + } + throw new NoSuchMethodException(); + } } diff --git a/src/main/resources/assets/hbm/lang/en_US.lang b/src/main/resources/assets/hbm/lang/en_US.lang index f4e888f9e..5cb3100bd 100644 --- a/src/main/resources/assets/hbm/lang/en_US.lang +++ b/src/main/resources/assets/hbm/lang/en_US.lang @@ -131,6 +131,14 @@ achievement.witchtaunter=Witch Taunter achievement.ZIRNOXBoom.desc=cope, seethe, mald achievement.ZIRNOXBoom=CIRNOX +analyze.basic1======NTM Component===== +analyze.basic2=More documentation can be found on the wiki. +analyze.basic3====Extra Information=== +analyze.dummy=Type: Dummy Block +analyze.error=This block's compatibility has not been set properly, this should be reported as a bug! +analyze.name=Name: %s +analyze.noInfo=No additional information. + armor.blastProtection=Damage modifier of %s against explosions armor.cap=Hard damage cap of %s armor.damageModifier=Damage modifier of %s against %s From 7cc50e8ce3b5b039824d201799f44efda2136ac7 Mon Sep 17 00:00:00 2001 From: George Paton Date: Sat, 15 Jun 2024 13:54:16 +1000 Subject: [PATCH 49/69] Deglobalize the NodeWorld nodes, dimensions were all sharing the same nodespace! --- src/main/java/api/hbm/energymk2/Nodespace.java | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/main/java/api/hbm/energymk2/Nodespace.java b/src/main/java/api/hbm/energymk2/Nodespace.java index 3f0888859..cdc618f51 100644 --- a/src/main/java/api/hbm/energymk2/Nodespace.java +++ b/src/main/java/api/hbm/energymk2/Nodespace.java @@ -19,8 +19,8 @@ import net.minecraft.world.World; public class Nodespace { /** Contains all "NodeWorld" instances, i.e. lists of nodes existing per world */ - public static HashMap worlds = new HashMap(); - public static Set activePowerNets = new HashSet(); + public static HashMap worlds = new HashMap<>(); + public static Set activePowerNets = new HashSet<>(); public static PowerNode getNode(World world, int x, int y, int z) { NodeWorld nodeWorld = worlds.get(world); @@ -49,6 +49,9 @@ public class Nodespace { for(World world : MinecraftServer.getServer().worldServers) { NodeWorld nodes = worlds.get(world); + + if(nodes == null) + continue; for(Entry entry : nodes.nodes.entrySet()) { PowerNode node = entry.getValue(); @@ -120,7 +123,7 @@ public class Nodespace { /** Contains a map showing where each node is, a node is every spot that a cable exists at. * Instead of the old proxy system, things like substation now create multiple nodes at their connection points */ - public static HashMap nodes = new HashMap(); + public HashMap nodes = new HashMap<>(); /** Adds a node at all its positions to the nodespace */ public void pushNode(PowerNode node) { From b1b0ba0a93acdc422104061e93d6fa111acdb669 Mon Sep 17 00:00:00 2001 From: Vaern Date: Sat, 15 Jun 2024 21:35:25 -0700 Subject: [PATCH 50/69] flixes --- .../handler/nei/CyclotronRecipeHandler.java | 2 +- .../container/ContainerMachineCyclotron.java | 48 +-- .../hbm/inventory/fluid/tank/FluidTank.java | 6 +- .../inventory/gui/GUIMachineCyclotron.java | 55 ++- .../hbm/tileentity/IUpgradeInfoProvider.java | 1 - .../machine/TileEntityMachineCyclotron.java | 351 +++++------------- .../textures/gui/machine/gui_cyclotron.png | Bin 5276 -> 3417 bytes 7 files changed, 127 insertions(+), 336 deletions(-) diff --git a/src/main/java/com/hbm/handler/nei/CyclotronRecipeHandler.java b/src/main/java/com/hbm/handler/nei/CyclotronRecipeHandler.java index 51b0a6b6f..bdc9a3954 100644 --- a/src/main/java/com/hbm/handler/nei/CyclotronRecipeHandler.java +++ b/src/main/java/com/hbm/handler/nei/CyclotronRecipeHandler.java @@ -120,7 +120,7 @@ public class CyclotronRecipeHandler extends TemplateRecipeHandler implements ICo guiGui = new LinkedList>(); transferRects.add(new RecipeTransferRect(new Rectangle(83 - 3 + 16 - 52, 5 + 18 + 1, 24, 18), "cyclotronProcessing")); - transferRectsGui.add(new RecipeTransferRect(new Rectangle(47, 15, 36, 36), "cyclotronProcessing")); + transferRectsGui.add(new RecipeTransferRect(new Rectangle(48 - 5, 27 - 11, 34, 34), "cyclotronProcessing")); guiGui.add(GUIMachineCyclotron.class); RecipeTransferRectHandler.registerRectsToGuis(getRecipeTransferRectGuis(), transferRects); RecipeTransferRectHandler.registerRectsToGuis(guiGui, transferRectsGui); diff --git a/src/main/java/com/hbm/inventory/container/ContainerMachineCyclotron.java b/src/main/java/com/hbm/inventory/container/ContainerMachineCyclotron.java index 7251c9623..cc720bc10 100644 --- a/src/main/java/com/hbm/inventory/container/ContainerMachineCyclotron.java +++ b/src/main/java/com/hbm/inventory/container/ContainerMachineCyclotron.java @@ -25,42 +25,34 @@ public class ContainerMachineCyclotron extends Container { cyclotron = tile; //Input - this.addSlotToContainer(new Slot(tile, 0, 17, 18)); - this.addSlotToContainer(new Slot(tile, 1, 17, 36)); - this.addSlotToContainer(new Slot(tile, 2, 17, 54)); + this.addSlotToContainer(new Slot(tile, 0, 11, 18)); + this.addSlotToContainer(new Slot(tile, 1, 11, 36)); + this.addSlotToContainer(new Slot(tile, 2, 11, 54)); //Targets - this.addSlotToContainer(new Slot(tile, 3, 107, 18)); - this.addSlotToContainer(new Slot(tile, 4, 107, 36)); - this.addSlotToContainer(new Slot(tile, 5, 107, 54)); + this.addSlotToContainer(new Slot(tile, 3, 101, 18)); + this.addSlotToContainer(new Slot(tile, 4, 101, 36)); + this.addSlotToContainer(new Slot(tile, 5, 101, 54)); //Output - this.addSlotToContainer(new SlotCraftingOutput(invPlayer.player, tile, 6, 143, 18)); - this.addSlotToContainer(new SlotCraftingOutput(invPlayer.player, tile, 7, 143, 36)); - this.addSlotToContainer(new SlotCraftingOutput(invPlayer.player, tile, 8, 143, 54)); - //AMAT In - this.addSlotToContainer(new Slot(tile, 9, 143, 90)); - //AMAT Out - this.addSlotToContainer(new SlotTakeOnly(tile, 10, 143, 108)); - //Coolant In - this.addSlotToContainer(new Slot(tile, 11, 62, 72)); - //Coolant Out - this.addSlotToContainer(new SlotTakeOnly(tile, 12, 62, 90)); + this.addSlotToContainer(new SlotCraftingOutput(invPlayer.player, tile, 6, 131, 18)); + this.addSlotToContainer(new SlotCraftingOutput(invPlayer.player, tile, 7, 131, 36)); + this.addSlotToContainer(new SlotCraftingOutput(invPlayer.player, tile, 8, 131, 54)); //Battery - this.addSlotToContainer(new Slot(tile, 13, 62, 108)); + this.addSlotToContainer(new Slot(tile, 9, 168, 83)); //Upgrades - this.addSlotToContainer(new SlotUpgrade(tile, 14, 17, 90)); - this.addSlotToContainer(new SlotUpgrade(tile, 15, 17, 108)); + this.addSlotToContainer(new SlotUpgrade(tile, 10, 60, 81)); + this.addSlotToContainer(new SlotUpgrade(tile, 11, 78, 81)); for(int i = 0; i < 3; i++) { for(int j = 0; j < 9; j++) { - this.addSlotToContainer(new Slot(invPlayer, j + i * 9 + 9, 8 + j * 18, 84 + i * 18 + 56)); + this.addSlotToContainer(new Slot(invPlayer, j + i * 9 + 9, 15 + j * 18, 133 + i * 18)); } } for(int i = 0; i < 9; i++) { - this.addSlotToContainer(new Slot(invPlayer, i, 8 + i * 18, 142 + 56)); + this.addSlotToContainer(new Slot(invPlayer, i, 15 + i * 18, 191)); } } @@ -82,20 +74,12 @@ public class ContainerMachineCyclotron extends Container { } else { if(stack.getItem() instanceof IBatteryItem || stack.getItem() == ModItems.battery_creative) { - if(!this.mergeItemStack(stack, 13, 14, true)) - return null; - - } else if(FluidContainerRegistry.getFluidContent(stack, Fluids.COOLANT) > 0) { - if(!this.mergeItemStack(stack, 11, 12, true)) - return null; - - } else if(FluidContainerRegistry.getFullContainer(stack, Fluids.AMAT) != null) { if(!this.mergeItemStack(stack, 9, 10, true)) return null; } else if(stack.getItem() instanceof ItemMachineUpgrade) { - if(!this.mergeItemStack(stack, 14, 15, true)) - if(!this.mergeItemStack(stack, 15, 16, true)) + if(!this.mergeItemStack(stack, 10, 11, true)) + if(!this.mergeItemStack(stack, 11, 12, true)) return null; } else { diff --git a/src/main/java/com/hbm/inventory/fluid/tank/FluidTank.java b/src/main/java/com/hbm/inventory/fluid/tank/FluidTank.java index d30374713..641769b1c 100644 --- a/src/main/java/com/hbm/inventory/fluid/tank/FluidTank.java +++ b/src/main/java/com/hbm/inventory/fluid/tank/FluidTank.java @@ -250,10 +250,10 @@ public class FluidTank { maxX += i; maxY += height; - minV = 0; + minV = 0D; maxV = height / 16D; - minU = 0D; - maxU = width / 16D; + minU = 1D; + maxU = 1D - i / 16D; } Tessellator tessellator = Tessellator.instance; diff --git a/src/main/java/com/hbm/inventory/gui/GUIMachineCyclotron.java b/src/main/java/com/hbm/inventory/gui/GUIMachineCyclotron.java index c0ad1c777..57d35ef3b 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIMachineCyclotron.java +++ b/src/main/java/com/hbm/inventory/gui/GUIMachineCyclotron.java @@ -24,25 +24,26 @@ public class GUIMachineCyclotron extends GuiInfoContainer { super(new ContainerMachineCyclotron(invPlayer, tile)); cyclotron = tile; - this.xSize = 176; - this.ySize = 222; + this.xSize = 190; + this.ySize = 215; } @Override public void drawScreen(int mouseX, int mouseY, float f) { super.drawScreen(mouseX, mouseY, f); - this.drawElectricityInfo(this, mouseX, mouseY, guiLeft + 80, guiTop + 72, 7, 52, cyclotron.power, cyclotron.maxPower); + this.drawElectricityInfo(this, mouseX, mouseY, guiLeft + 168, guiTop + 18, 16, 63, cyclotron.power, cyclotron.maxPower); - cyclotron.coolant.renderTankInfo(this, mouseX, mouseY, guiLeft + 53, guiTop + 72, 7, 52); - cyclotron.amat.renderTankInfo(this, mouseX, mouseY, guiLeft + 134, guiTop + 90, 7, 34); + cyclotron.tanks[0].renderTankInfo(this, mouseX, mouseY, guiLeft + 11, guiTop + 81, 34, 7); + cyclotron.tanks[1].renderTankInfo(this, mouseX, mouseY, guiLeft + 11, guiTop + 90, 34, 7); + cyclotron.tanks[2].renderTankInfo(this, mouseX, mouseY, guiLeft + 107, guiTop + 81, 34, 16); String[] upgradeText = new String[4]; upgradeText[0] = I18nUtil.resolveKey("desc.gui.upgrade"); upgradeText[1] = I18nUtil.resolveKey("desc.gui.upgrade.speed"); upgradeText[2] = I18nUtil.resolveKey("desc.gui.upgrade.effectiveness"); upgradeText[3] = I18nUtil.resolveKey("desc.gui.upgrade.power"); - this.drawCustomInfoStat(mouseX, mouseY, guiLeft + 21, guiTop + 75, 8, 8, mouseX, mouseY, upgradeText); + this.drawCustomInfoStat(mouseX, mouseY, guiLeft + 49, guiTop + 85, 8, 8, mouseX, mouseY, upgradeText); } @Override @@ -50,38 +51,28 @@ public class GUIMachineCyclotron extends GuiInfoContainer { String name = this.cyclotron.hasCustomInventoryName() ? this.cyclotron.getInventoryName() : I18n.format(this.cyclotron.getInventoryName()); this.fontRendererObj.drawString(name, this.xSize / 2 - this.fontRendererObj.getStringWidth(name) / 2, 6, 4210752); - this.fontRendererObj.drawString(I18n.format("container.inventory"), 8, this.ySize - 96 + 2, 4210752); + this.fontRendererObj.drawString(I18n.format("container.inventory"), 15, this.ySize - 96 + 2, 4210752); } @Override - protected void mouseClicked(int x, int y, int i) { - super.mouseClicked(x, y, i); - - if(guiLeft + 97 <= x && guiLeft + 97 + 18 > x && guiTop + 107 < y && guiTop + 107 + 18 >= y) { - - mc.getSoundHandler().playSound(PositionedSoundRecord.func_147674_a(new ResourceLocation("gui.button.press"), 1.0F)); - PacketDispatcher.wrapper.sendToServer(new AuxButtonPacket(cyclotron.xCoord, cyclotron.yCoord, cyclotron.zCoord, 0, 0)); - } - } - - @Override - protected void drawGuiContainerBackgroundLayer(float p_146976_1_, int p_146976_2_, int p_146976_3_) { + protected void drawGuiContainerBackgroundLayer(float interp, int x, int y) { GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); Minecraft.getMinecraft().getTextureManager().bindTexture(texture); drawTexturedModalRect(guiLeft, guiTop, 0, 0, xSize, ySize); - int k = (int) cyclotron.getPowerScaled(52); - drawTexturedModalRect(guiLeft + 80, guiTop + 124 - k, 212, 52 - k, 7, k); - - int l = cyclotron.getProgressScaled(36); - drawTexturedModalRect(guiLeft + 52, guiTop + 26, 176, 0, l, 36); - - if(cyclotron.isOn) - drawTexturedModalRect(guiLeft + 97, guiTop + 107, 219, 0, 18, 18); - - this.drawInfoPanel(guiLeft + 21, guiTop + 75, 8, 8, 8); - - cyclotron.coolant.renderTank(guiLeft + 53, guiTop + 124, this.zLevel, 7, 52); - cyclotron.amat.renderTank(guiLeft + 134, guiTop + 124, this.zLevel, 7, 34); + int k = (int) cyclotron.getPowerScaled(63); + drawTexturedModalRect(guiLeft + 168, guiTop + 80 - k, 190, 62 - k, 16, k); + + int l = cyclotron.getProgressScaled(34); + drawTexturedModalRect(guiLeft + 48, guiTop + 27, 206, 0, l, 34); + + if(l > 0) + drawTexturedModalRect(guiLeft + 172, guiTop + 4, 190, 63, 9, 12); + + this.drawInfoPanel(guiLeft + 49, guiTop + 85, 8, 8, 8); + + cyclotron.tanks[0].renderTank(guiLeft + 11, guiTop + 88, this.zLevel, 34, 7, 1); + cyclotron.tanks[1].renderTank(guiLeft + 11, guiTop + 97, this.zLevel, 34, 7, 1); + cyclotron.tanks[2].renderTank(guiLeft + 107, guiTop + 97, this.zLevel, 34, 16, 1); } } diff --git a/src/main/java/com/hbm/tileentity/IUpgradeInfoProvider.java b/src/main/java/com/hbm/tileentity/IUpgradeInfoProvider.java index 90a348e1c..0fd4f7dab 100644 --- a/src/main/java/com/hbm/tileentity/IUpgradeInfoProvider.java +++ b/src/main/java/com/hbm/tileentity/IUpgradeInfoProvider.java @@ -26,6 +26,5 @@ public interface IUpgradeInfoProvider { public static final String KEY_DELAY = "upgrade.delay"; public static final String KEY_EFFICIENCY = "upgrade.efficiency"; public static final String KEY_FORTUNE = "upgrade.fortune"; - public static final String KEY_OVERHEAT_CHANCE = "upgrade.overheatChance"; public static final String KEY_RANGE = "upgrade.range"; } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCyclotron.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCyclotron.java index 87660cb63..e43f45631 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCyclotron.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCyclotron.java @@ -4,14 +4,11 @@ import java.util.List; import java.util.Map.Entry; import com.hbm.blocks.ModBlocks; -import com.hbm.config.BombConfig; -import com.hbm.entity.effect.EntityBlackHole; -import com.hbm.entity.logic.EntityBalefire; -import com.hbm.entity.logic.EntityNukeExplosionMK5; import com.hbm.explosion.ExplosionLarge; import com.hbm.explosion.ExplosionThermo; import com.hbm.interfaces.IFluidAcceptor; import com.hbm.interfaces.IFluidSource; +import com.hbm.inventory.UpgradeManager; import com.hbm.inventory.RecipesCommon.AStack; import com.hbm.inventory.RecipesCommon.ComparableStack; import com.hbm.inventory.container.ContainerMachineCyclotron; @@ -24,8 +21,6 @@ import com.hbm.items.ModItems; import com.hbm.items.machine.ItemMachineUpgrade; import com.hbm.items.machine.ItemMachineUpgrade.UpgradeType; import com.hbm.lib.Library; -import com.hbm.packet.AuxParticlePacketNT; -import com.hbm.packet.PacketDispatcher; import com.hbm.tileentity.IConditionalInvAccess; import com.hbm.tileentity.IGUIProvider; import com.hbm.tileentity.IUpgradeInfoProvider; @@ -38,9 +33,9 @@ import com.hbm.util.fauxpointtwelve.DirPos; import api.hbm.energymk2.IEnergyReceiverMK2; import api.hbm.fluid.IFluidStandardTransceiver; import api.hbm.tile.IInfoProviderEC; -import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; import net.minecraft.client.gui.GuiScreen; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Container; @@ -52,30 +47,26 @@ import net.minecraft.util.EnumChatFormatting; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityMachineCyclotron extends TileEntityMachineBase implements IFluidSource, IFluidAcceptor, IEnergyReceiverMK2, IFluidStandardTransceiver, IGUIProvider, IConditionalInvAccess, IUpgradeInfoProvider, IInfoProviderEC { +public class TileEntityMachineCyclotron extends TileEntityMachineBase implements IEnergyReceiverMK2, IFluidStandardTransceiver, IGUIProvider, IConditionalInvAccess, IUpgradeInfoProvider, IInfoProviderEC { public long power; public static final long maxPower = 100000000; - public int consumption = 1_000_000; - - public boolean isOn; - - private int age; - private int countdown; + public static int consumption = 1_000_000; private byte plugs; public int progress; public static final int duration = 690; - public FluidTank coolant; - public FluidTank amat; + public FluidTank[] tanks; public TileEntityMachineCyclotron() { - super(16); - - coolant = new FluidTank(Fluids.COOLANT, 32000, 0); - amat = new FluidTank(Fluids.AMAT, 8000, 1); + super(12); + + this.tanks = new FluidTank[3]; + this.tanks[0] = new FluidTank(Fluids.WATER, 32000); + this.tanks[1] = new FluidTank(Fluids.SPENTSTEAM, 32000); + this.tanks[2] = new FluidTank(Fluids.AMAT, 8000); } @Override @@ -90,72 +81,22 @@ public class TileEntityMachineCyclotron extends TileEntityMachineBase implements this.updateConnections(); - age++; - if(age >= 20) - { - age = 0; - } + this.power = Library.chargeTEFromItems(slots, 9, power, maxPower); - if(age == 9 || age == 19) - fillFluidInit(amat.getTankType()); - - this.power = Library.chargeTEFromItems(slots, 13, power, maxPower); - this.coolant.loadTank(11, 12, slots); - this.amat.unloadTank(9, 10, slots); + UpgradeManager.eval(slots, 10, 11); - if(isOn) { + if(canProcess()) { + progress += getSpeed(); + power -= getConsumption(); - int defConsumption = consumption - 100_000 * getConsumption(); + int convert = getCoolantConsumption(); + tanks[0].setFill(tanks[0].getFill() - convert); + tanks[1].setFill(tanks[1].getFill() + convert); - if(canProcess() && power >= defConsumption) { - - progress += this.getSpeed(); - power -= defConsumption; - - if(progress >= duration) { - process(); - progress = 0; - this.markDirty(); - } - - int safety = this.getSafety(); - - if(coolant.getFill() > 0) { - - countdown = 0; - - if(worldObj.rand.nextInt(3 * safety) == 0) - coolant.setFill(coolant.getFill() - 1); - - } else if(worldObj.rand.nextInt(safety) == 0) { - - countdown++; - - int chance = 7 - Math.min((int) Math.ceil(countdown / 200D), 6); - - if(worldObj.rand.nextInt(chance) == 0) - ExplosionLarge.spawnTracers(worldObj, xCoord + 0.5, yCoord + 3.25, zCoord + 0.5, 1); - - if(countdown > 1000) { - ExplosionThermo.setEntitiesOnFire(worldObj, xCoord + 0.5, yCoord + 1.5, zCoord + 0.5, 25); - ExplosionThermo.scorchLight(worldObj, xCoord, yCoord, zCoord, 7); - - if(countdown % 4 == 0) - ExplosionLarge.spawnBurst(worldObj, xCoord + 0.5, yCoord + 3.25, zCoord + 0.5, 18, 1); - - } else if(countdown > 600) { - ExplosionThermo.setEntitiesOnFire(worldObj, xCoord + 0.5, yCoord + 1.5, zCoord + 0.5, 10); - } - - if(countdown == 1140) - worldObj.playSoundEffect(xCoord + 0.5, yCoord + 1.5, zCoord + 0.5, "hbm:block.shutdown", 10.0F, 1.0F); - - if(countdown > 1200) - explode(); - } - - } else { + if(progress >= duration) { + process(); progress = 0; + this.markDirty(); } } else { @@ -163,29 +104,46 @@ public class TileEntityMachineCyclotron extends TileEntityMachineBase implements } this.sendFluid(); - - NBTTagCompound data = new NBTTagCompound(); - data.setLong("power", power); - data.setInteger("progress", progress); - data.setBoolean("isOn", isOn); - data.setByte("plugs", plugs); - this.networkPack(data, 25); - - coolant.updateTank(xCoord, yCoord, zCoord, worldObj.provider.dimensionId); - amat.updateTank(xCoord, yCoord, zCoord, worldObj.provider.dimensionId); + this.networkPackNT(25); } } + @Override + public void serialize(ByteBuf buf) { + super.serialize(buf); + buf.writeLong(power); + buf.writeInt(progress); + buf.writeByte(plugs); + + for(int i = 0; i < 3; i++) + tanks[i].serialize(buf); + } + + @Override + public void deserialize(ByteBuf buf) { + super.deserialize(buf); + power = buf.readLong(); + progress = buf.readInt(); + plugs = buf.readByte(); + + for(int i = 0; i < 3; i++) + tanks[i].deserialize(buf); + } + private void updateConnections() { for(DirPos pos : getConPos()) { this.trySubscribe(worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); - this.trySubscribe(coolant.getTankType(), worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); + this.trySubscribe(tanks[0].getTankType(), worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); } } private void sendFluid() { - for(DirPos pos : getConPos()) { - this.sendFluid(amat, worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); + for(int i = 1; i < 3; i++) { + if(tanks[i].getFill() > 0) { + for(DirPos pos : getConPos()) { + this.sendFluid(tanks[i], worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); + } + } } } @@ -202,62 +160,19 @@ public class TileEntityMachineCyclotron extends TileEntityMachineBase implements }; } - public void networkUnpack(NBTTagCompound data) { - super.networkUnpack(data); - - this.isOn = data.getBoolean("isOn"); - this.power = data.getLong("power"); - this.progress = data.getInteger("progress"); - this.plugs = data.getByte("plugs"); - } - - public void handleButtonPacket(int value, int meta) { - - this.isOn = !this.isOn; - } - - private void explode() { - - ExplosionLarge.explodeFire(worldObj, xCoord + 0.5, yCoord + 1.5, zCoord + 0.5, 25, true, false, true); - - int rand = worldObj.rand.nextInt(10); - - if(rand < 2) { - - worldObj.spawnEntityInWorld(EntityNukeExplosionMK5.statFac(worldObj, (int)(BombConfig.fatmanRadius * 1.5), xCoord + 0.5, yCoord + 1.5, zCoord + 0.5)); - - NBTTagCompound data = new NBTTagCompound(); - data.setString("type", "muke"); - PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(data, xCoord + 0.5, yCoord + 0.5, zCoord + 0.5), new TargetPoint(worldObj.provider.dimensionId, xCoord + 0.5, yCoord + 0.5, zCoord + 0.5, 250)); - worldObj.playSoundEffect(xCoord + 0.5, yCoord + 0.5, zCoord + 0.5, "hbm:weapon.mukeExplosion", 15.0F, 1.0F); - - } else if(rand < 4) { - - EntityBalefire bf = new EntityBalefire(worldObj); - bf.posX = xCoord + 0.5; - bf.posY = yCoord + 1.5; - bf.posZ = zCoord + 0.5; - bf.destructionRange = (int)(BombConfig.fatmanRadius * 1.5); - worldObj.spawnEntityInWorld(bf); - - NBTTagCompound data = new NBTTagCompound(); - data.setString("type", "muke"); - data.setBoolean("balefire", true); - PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(data, xCoord + 0.5, yCoord + 0.5, zCoord + 0.5), new TargetPoint(worldObj.provider.dimensionId, xCoord + 0.5, yCoord + 0.5, zCoord + 0.5, 250)); - worldObj.playSoundEffect(xCoord + 0.5, yCoord + 0.5, zCoord + 0.5, "hbm:weapon.mukeExplosion", 15.0F, 1.0F); - - } else if(rand < 5) { - - EntityBlackHole bl = new EntityBlackHole(worldObj, 1.5F + worldObj.rand.nextFloat()); - bl.posX = xCoord + 0.5F; - bl.posY = yCoord + 1.5F; - bl.posZ = zCoord + 0.5F; - worldObj.spawnEntityInWorld(bl); - } - } - public boolean canProcess() { + if(power < getConsumption()) + return false; + + int convert = getCoolantConsumption(); + + if(tanks[0].getFill() < convert) + return false; + + if(tanks[1].getFill() + convert > tanks[1].getMaxFill()) + return false; + for(int i = 0; i < 3; i++) { Object[] res = CyclotronRecipes.getOutput(slots[i + 3], slots[i]); @@ -300,7 +215,7 @@ public class TileEntityMachineCyclotron extends TileEntityMachineBase implements this.decrStackSize(i + 3, 1); slots[i + 6] = out; - this.amat.setFill(this.amat.getFill() + (Integer)res[1]); + this.tanks[2].setFill(this.tanks[2].getFill() + (Integer)res[1]); continue; } @@ -311,72 +226,28 @@ public class TileEntityMachineCyclotron extends TileEntityMachineBase implements this.decrStackSize(i + 3, 1); slots[i + 6].stackSize++; - this.amat.setFill(this.amat.getFill() + (Integer)res[1]); + this.tanks[2].setFill(this.tanks[2].getFill() + (Integer)res[1]); } } - if(this.amat.getFill() > this.amat.getMaxFill()) - this.amat.setFill(this.amat.getMaxFill()); + if(this.tanks[2].getFill() > this.tanks[2].getMaxFill()) + this.tanks[2].setFill(this.tanks[2].getMaxFill()); } public int getSpeed() { - - int speed = 1; - - for(int i = 14; i < 16; i++) { - - if(slots[i] != null) { - - if(slots[i].getItem() == ModItems.upgrade_speed_1) - speed += 1; - else if(slots[i].getItem() == ModItems.upgrade_speed_2) - speed += 2; - else if(slots[i].getItem() == ModItems.upgrade_speed_3) - speed += 3; - } - } - - return Math.min(speed, 4); + return Math.min(UpgradeManager.getLevel(UpgradeType.SPEED), 3) + 1; } public int getConsumption() { + int efficiency = Math.min(UpgradeManager.getLevel(UpgradeType.POWER), 3); - int speed = 0; - - for(int i = 14; i < 16; i++) { - - if(slots[i] != null) { - - if(slots[i].getItem() == ModItems.upgrade_power_1) - speed += 1; - else if(slots[i].getItem() == ModItems.upgrade_power_2) - speed += 2; - else if(slots[i].getItem() == ModItems.upgrade_power_3) - speed += 3; - } - } - - return Math.min(speed, 3); + return consumption - 100_000 * efficiency; } - public int getSafety() { - - int speed = 1; - - for(int i = 14; i < 16; i++) { - - if(slots[i] != null) { - - if(slots[i].getItem() == ModItems.upgrade_effect_1) - speed += 1; - else if(slots[i].getItem() == ModItems.upgrade_effect_2) - speed += 2; - else if(slots[i].getItem() == ModItems.upgrade_effect_3) - speed += 3; - } - } - - return Math.min(speed, 4); + public int getCoolantConsumption() { + int efficiency = Math.min(UpgradeManager.getLevel(UpgradeType.EFFECT), 3); + //half a small tower's worth + return 500 / (efficiency + 1) * getSpeed(); } public long getPowerScaled(long i) { @@ -386,56 +257,6 @@ public class TileEntityMachineCyclotron extends TileEntityMachineBase implements public int getProgressScaled(int i) { return (progress * i) / duration; } - - @Override - public void setFillForSync(int fill, int index) { - - if(index == 0) - coolant.setFill(fill); - else if(index == 1) - amat.setFill(fill); - } - - @Override - public void setFluidFill(int fill, FluidType type) { - if(type == Fluids.COOLANT) - coolant.setFill(fill); - else if(type == Fluids.AMAT) - amat.setFill(fill); - } - - @Override - public void setTypeForSync(FluidType type, int index) { - if(index == 0) - coolant.setTankType(type); - else if(index == 1) - amat.setTankType(type); - } - - @Override - public int getFluidFill(FluidType type) { - if(type == Fluids.COOLANT) - return coolant.getFill(); - else if(type == Fluids.AMAT) - return amat.getFill(); - - return 0; - } - - @Override public void fillFluidInit(FluidType type) { } - @Override public void fillFluid(int x, int y, int z, boolean newTact, FluidType type) { } - @Override public boolean getTact() { return false; } - @Override public List getFluidList(FluidType type) { return null; } - @Override public void clearFluidList(FluidType type) { } - - @Override - public int getMaxFluidFill(FluidType type) { - - if(type == Fluids.COOLANT) - return coolant.getMaxFill(); - - return 0; - } @Override public AxisAlignedBB getRenderBoundingBox() { @@ -452,11 +273,9 @@ public class TileEntityMachineCyclotron extends TileEntityMachineBase implements public void readFromNBT(NBTTagCompound nbt) { super.readFromNBT(nbt); - coolant.readFromNBT(nbt, "coolant"); - amat.readFromNBT(nbt, "amat"); + for(int i = 0; i < 3; i++) + tanks[i].readFromNBT(nbt, "t" + i); - this.isOn = nbt.getBoolean("isOn"); - this.countdown = nbt.getInteger("countdown"); this.progress = nbt.getInteger("progress"); this.power = nbt.getLong("power"); this.plugs = nbt.getByte("plugs"); @@ -466,11 +285,9 @@ public class TileEntityMachineCyclotron extends TileEntityMachineBase implements public void writeToNBT(NBTTagCompound nbt) { super.writeToNBT(nbt); - coolant.writeToNBT(nbt, "coolant"); - amat.writeToNBT(nbt, "amat"); + for(int i = 0; i < 3; i++) + tanks[i].writeToNBT(nbt, "t" + i); - nbt.setBoolean("isOn", isOn); - nbt.setInteger("countdown", countdown); nbt.setInteger("progress", progress); nbt.setLong("power", power); nbt.setByte("plugs", plugs); @@ -522,17 +339,17 @@ public class TileEntityMachineCyclotron extends TileEntityMachineBase implements @Override public FluidTank[] getSendingTanks() { - return new FluidTank[] { amat }; + return new FluidTank[] { tanks[1], tanks[2] }; } @Override public FluidTank[] getReceivingTanks() { - return new FluidTank[] { coolant }; + return new FluidTank[] { tanks[0] }; } @Override public FluidTank[] getAllTanks() { - return new FluidTank[] { amat, coolant }; + return tanks; } @Override @@ -598,13 +415,13 @@ public class TileEntityMachineCyclotron extends TileEntityMachineBase implements info.add(IUpgradeInfoProvider.getStandardLabel(ModBlocks.machine_cyclotron)); if(type == UpgradeType.SPEED) { info.add(EnumChatFormatting.GREEN + I18nUtil.resolveKey(this.KEY_DELAY, "-" + (100 - 100 / (level + 1)) + "%")); + info.add(EnumChatFormatting.RED + I18nUtil.resolveKey(this.KEY_COOLANT_CONSUMPTION, "+" + (level * 100) + "%")); } if(type == UpgradeType.POWER) { info.add(EnumChatFormatting.GREEN + I18nUtil.resolveKey(this.KEY_CONSUMPTION, "-" + (level * 10) + "%")); } if(type == UpgradeType.EFFECT) { info.add(EnumChatFormatting.GREEN + I18nUtil.resolveKey(this.KEY_COOLANT_CONSUMPTION, "-" + (100 - 100 / (level + 1)) + "%")); - info.add(EnumChatFormatting.GREEN + I18nUtil.resolveKey(this.KEY_OVERHEAT_CHANCE, "-" + (100 - 100 / (level + 1)) + "%")); } } @@ -618,7 +435,7 @@ public class TileEntityMachineCyclotron extends TileEntityMachineBase implements @Override public void provideExtraInfo(NBTTagCompound data) { - data.setBoolean(CompatEnergyControl.B_ACTIVE, this.isOn && this.progress > 0); - data.setDouble(CompatEnergyControl.D_CONSUMPTION_HE, this.progress > 0 ? consumption - 100_000 * getConsumption() : 0); + data.setBoolean(CompatEnergyControl.B_ACTIVE, this.progress > 0); + data.setDouble(CompatEnergyControl.D_CONSUMPTION_HE, this.progress > 0 ? getConsumption() : 0); } } diff --git a/src/main/resources/assets/hbm/textures/gui/machine/gui_cyclotron.png b/src/main/resources/assets/hbm/textures/gui/machine/gui_cyclotron.png index 13a5d33bbfbdfcd374da643dd003c563e74334de..9da387278a9f2911f526dbe8981a4acace6736a0 100644 GIT binary patch literal 3417 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 YyD>B5QVOQ%^lwg6V@sp*Gj6y42aB}2LI3~& From 10002e0c41ee3521512500da3a19203cd9abfdd0 Mon Sep 17 00:00:00 2001 From: Bob Date: Sun, 16 Jun 2024 19:39:59 +0200 Subject: [PATCH 51/69] PRISM complete --- changelog | 15 ++++ .../java/com/hbm/config/RadiationConfig.java | 6 ++ .../radiation/ChunkRadiationHandlerPRISM.java | 78 ++++++++++++++---- .../radiation/ChunkRadiationManager.java | 2 +- .../ContainerMachineSolderingStation.java | 3 +- .../java/com/hbm/main/ModEventHandler.java | 45 ++++++++++ .../{tank_HOTBLOOD.png => tank_BLOOD_HOT.png} | Bin 7 files changed, 131 insertions(+), 18 deletions(-) rename src/main/resources/assets/hbm/textures/models/tank/{tank_HOTBLOOD.png => tank_BLOOD_HOT.png} (100%) diff --git a/changelog b/changelog index 853a298c4..6eceec130 100644 --- a/changelog +++ b/changelog @@ -1,6 +1,21 @@ +## Added +* PRISM + * A new 3D radiation system which makes use of block explosion resistance to determine spreading + * Unlike the 1.12.2 "pocket" system, radiation isn't perfectly sealed, blocks in a 16x16x16 area are simply summed up and used as a divisor + * Using enough high-resistance blocks (or a ton of lesser resistant blocks), radiation can still be effectively blocked (either thick concrete walls or a mountain) + * Radiation is still (sub) chunk based, so the radiation on both sides of a wall in the middle of a chunk will still be the same, the wall will however affect spreading to neighboring chunks + * For TPT players: radiation can be compared to pressure, where pressure also uses 4x4 pixel regions and is affected by pixels within those regions + ## Changed * Centrifuges and refineries now use analog circuits +* Updated the cyclotron, the GUI is now much cleaner and it uses water as coolant (produces LPS) instead of regular coolant +* Due to some people's inability to put a square peg into a square hole rather than a round one, it is now impossible to manually click soldering station ingredients into the wrong slot (you could have just shift-clicked, you know?) ## Fixed * Fixed hopper IO ignoring the stack limit on arc furnaces under certain circumstances * Fixed the watz powerplant not dropping as many HSS bolts as it should +* Fixed grates crashing servers when placed using shift click onto blocks +* Many machines now use the much more efficient byte buffer for sending information to the client which heavily reduces lag (NBT packing is a major contributor to TPS lg) +* Fixed issue where the power system would constantly disconnect when multiple dimensions are loaded +* Fixed the rare sideways-rendering tank not using the correct UV +* Fixed incorrect resource path for the hot blood tank, causing a missing texture diff --git a/src/main/java/com/hbm/config/RadiationConfig.java b/src/main/java/com/hbm/config/RadiationConfig.java index 83cf7a10d..0129c534f 100644 --- a/src/main/java/com/hbm/config/RadiationConfig.java +++ b/src/main/java/com/hbm/config/RadiationConfig.java @@ -1,5 +1,8 @@ package com.hbm.config; +import com.hbm.handler.radiation.ChunkRadiationHandlerPRISM; +import com.hbm.handler.radiation.ChunkRadiationManager; + import net.minecraftforge.common.config.Configuration; public class RadiationConfig { @@ -14,6 +17,7 @@ public class RadiationConfig { public static boolean enableContamination = true; public static boolean enableChunkRads = true; + public static boolean enablePRISM = false; public static boolean disableAsbestos = false; public static boolean disableCoal = false; @@ -47,6 +51,8 @@ public class RadiationConfig { enableContamination = CommonConfig.createConfigBool(config, CATEGORY_NUKE, "RADIATION_00_enableContamination", "Toggles player contamination (and negative effects from radiation poisoning)", true); enableChunkRads = CommonConfig.createConfigBool(config, CATEGORY_NUKE, "RADIATION_01_enableChunkRads", "Toggles the world radiation system (chunk radiation only, some blocks use an AoE!)", true); + enablePRISM = CommonConfig.createConfigBool(config, CATEGORY_NUKE, "RADIATION_99_enablePRISM", "Enables the new 3D resistance-aware PRISM radiation system", false); + if(enablePRISM) ChunkRadiationManager.proxy = new ChunkRadiationHandlerPRISM(); fogCh = CommonConfig.setDef(fogCh, 20); diff --git a/src/main/java/com/hbm/handler/radiation/ChunkRadiationHandlerPRISM.java b/src/main/java/com/hbm/handler/radiation/ChunkRadiationHandlerPRISM.java index 96a1bc9fa..9f6910472 100644 --- a/src/main/java/com/hbm/handler/radiation/ChunkRadiationHandlerPRISM.java +++ b/src/main/java/com/hbm/handler/radiation/ChunkRadiationHandlerPRISM.java @@ -42,7 +42,8 @@ import net.minecraftforge.event.world.WorldEvent; */ public class ChunkRadiationHandlerPRISM extends ChunkRadiationHandler { - private HashMap perWorld = new HashMap(); + public HashMap perWorld = new HashMap(); + public static int cycles = 0; public static final float MAX_RADIATION = 1_000_000; private static final String NBT_KEY_CHUNK_RADIATION = "hfr_prism_radiation_"; @@ -169,15 +170,53 @@ public class ChunkRadiationHandlerPRISM extends ChunkRadiationHandler { @Override public void updateSystem() { + cycles++; + for(Entry entries : perWorld.entrySet()) { World world = entries.getKey(); RadPerWorld system = entries.getValue(); + int rebuildAllowance = 25; + //it would be way to expensive to replace the sub-chunks entirely like with the old system //(that only used floats anyway...) so instead we shift the radiation into the prev value - for(Entry chunk : system.radiation.entrySet()) for(SubChunk sub : chunk.getValue()) if(sub != null) { - sub.prevRadiation = sub.radiation; - sub.radiation = 0; + for(Entry chunk : system.radiation.entrySet()) { + for(int i = 0; i < 16; i++) { + + SubChunk sub = chunk.getValue()[i]; + + boolean hasTriedRebuild = false; + + if(sub != null) { + sub.prevRadiation = sub.radiation; + sub.radiation = 0; + + //process some chunks that need extra rebuilding + if(rebuildAllowance > 0 && sub.needsRebuild) { + sub.rebuild(world, chunk.getKey().chunkXPos << 4, i << 4, chunk.getKey().chunkZPos << 4); + if(!sub.needsRebuild) { + rebuildAllowance--; + hasTriedRebuild = true; + } + } + + if(!hasTriedRebuild && Math.abs(chunk.getKey().chunkXPos * chunk.getKey().chunkZPos) % 5 == cycles % 5 && world.getChunkProvider().chunkExists(chunk.getKey().chunkXPos, chunk.getKey().chunkZPos)) { + + Chunk c = world.getChunkFromChunkCoords(chunk.getKey().chunkXPos, chunk.getKey().chunkZPos); + ExtendedBlockStorage[] xbs = c.getBlockStorageArray(); + ExtendedBlockStorage subChunk = xbs[i]; + int checksum = 0; + + if(subChunk != null) { + for(int iX = 0; iX < 16; iX++) for(int iY = 0; iY < 16; iY ++) for(int iZ = 0; iZ < 16; iZ ++) checksum += subChunk.getBlockLSBArray()[MathHelper.clamp_int(iY << 8 | iZ << 4 | iX, 0, 4095)]; + } + + if(checksum != sub.checksum) { + sub.rebuild(world, chunk.getKey().chunkXPos << 4, i << 4, chunk.getKey().chunkZPos << 4); + } + } + } + } } //has to support additions while iterating @@ -190,10 +229,12 @@ public class ChunkRadiationHandlerPRISM extends ChunkRadiationHandler { SubChunk sub = chunk.getValue()[i]; if(sub != null) { - if(sub.prevRadiation <= 0 || Float.isNaN(sub.prevRadiation)) continue; + if(sub.prevRadiation <= 0 || Float.isNaN(sub.prevRadiation) || Float.isInfinite(sub.prevRadiation)) continue; float radSpread = 0; for(ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) radSpread += spreadRadiation(world, sub, i, chunk.getKey(), chunk.getValue(), system.radiation, dir); sub.radiation += (sub.prevRadiation - radSpread) * 0.95F; + sub.radiation -= 1F; + sub.radiation = MathHelper.clamp_float(sub.radiation, 0, MAX_RADIATION); } } } @@ -262,8 +303,9 @@ public class ChunkRadiationHandlerPRISM extends ChunkRadiationHandler { public float[] yResist = new float[16]; public float[] zResist = new float[16]; public boolean needsRebuild = false; + public int checksum = 0; - public void updateBlock(World world, int x, int y, int z) { + @Deprecated public void updateBlock(World world, int x, int y, int z) { int cX = x >> 4; int cY = MathHelper.clamp_int(y >> 4, 0, 15); int cZ = z >> 4; @@ -319,17 +361,21 @@ public class ChunkRadiationHandlerPRISM extends ChunkRadiationHandler { Chunk chunk = world.getChunkFromChunkCoords(cX, cZ); ExtendedBlockStorage[] xbs = chunk.getBlockStorageArray(); ExtendedBlockStorage subChunk = xbs[cY]; + checksum = 0; - for(int iX = 0; iX < 16; iX++) { - for(int iY = 0; iY < 16; iY ++) { - for(int iZ = 0; iZ < 16; iZ ++) { - - Block b = subChunk.getBlockByExtId(iX, iY, iZ); - if(b.getMaterial() == Material.air) continue; - float resistance = b.getExplosionResistance(null, world, tX + iX, tY + iY, tZ + iZ, x, y, z); - xResist[iX] += resistance; - yResist[iY] += resistance; - zResist[iZ] += resistance; + if(subChunk != null) { + for(int iX = 0; iX < 16; iX++) { + for(int iY = 0; iY < 16; iY ++) { + for(int iZ = 0; iZ < 16; iZ ++) { + + Block b = subChunk.getBlockByExtId(iX, iY, iZ); + if(b.getMaterial() == Material.air) continue; + float resistance = b.getExplosionResistance(null, world, tX + iX, tY + iY, tZ + iZ, x, y, z); + xResist[iX] += resistance; + yResist[iY] += resistance; + zResist[iZ] += resistance; + checksum += subChunk.getBlockLSBArray()[MathHelper.clamp_int(iY << 8 | iZ << 4 | iX, 0, 4095)]; // the "good enough" approach + } } } } diff --git a/src/main/java/com/hbm/handler/radiation/ChunkRadiationManager.java b/src/main/java/com/hbm/handler/radiation/ChunkRadiationManager.java index 1c5c8121c..9cc989370 100644 --- a/src/main/java/com/hbm/handler/radiation/ChunkRadiationManager.java +++ b/src/main/java/com/hbm/handler/radiation/ChunkRadiationManager.java @@ -12,7 +12,7 @@ import net.minecraftforge.event.world.WorldEvent; public class ChunkRadiationManager { - public static ChunkRadiationHandler proxy = /*new ChunkRadiationHandlerNT();*/ new ChunkRadiationHandlerSimple(); /*new ChunkRadiationHandlerPRISM();*/ + public static ChunkRadiationHandler proxy = new ChunkRadiationHandlerSimple(); @SubscribeEvent public void onWorldLoad(WorldEvent.Load event) { diff --git a/src/main/java/com/hbm/inventory/container/ContainerMachineSolderingStation.java b/src/main/java/com/hbm/inventory/container/ContainerMachineSolderingStation.java index abb9cba02..d1ce587b2 100644 --- a/src/main/java/com/hbm/inventory/container/ContainerMachineSolderingStation.java +++ b/src/main/java/com/hbm/inventory/container/ContainerMachineSolderingStation.java @@ -2,6 +2,7 @@ package com.hbm.inventory.container; import com.hbm.inventory.RecipesCommon.AStack; import com.hbm.inventory.SlotCraftingOutput; +import com.hbm.inventory.SlotNonRetarded; import com.hbm.inventory.SlotUpgrade; import com.hbm.inventory.recipes.SolderingRecipes; import com.hbm.items.ModItems; @@ -24,7 +25,7 @@ public class ContainerMachineSolderingStation extends Container { solderer = tile; //Inputs - for(int i = 0; i < 2; i++) for(int j = 0; j < 3; j++) this.addSlotToContainer(new Slot(tile, i * 3 + j, 17 + j * 18, 18 + i * 18)); + for(int i = 0; i < 2; i++) for(int j = 0; j < 3; j++) this.addSlotToContainer(new SlotNonRetarded(tile, i * 3 + j, 17 + j * 18, 18 + i * 18)); //Output this.addSlotToContainer(new SlotCraftingOutput(playerInv.player, tile, 6, 107, 27)); //Battery diff --git a/src/main/java/com/hbm/main/ModEventHandler.java b/src/main/java/com/hbm/main/ModEventHandler.java index 1ceb0ada5..572aeb47d 100644 --- a/src/main/java/com/hbm/main/ModEventHandler.java +++ b/src/main/java/com/hbm/main/ModEventHandler.java @@ -6,6 +6,7 @@ import java.util.Iterator; import java.util.List; import java.util.Locale; import java.util.Map; +import java.util.Map.Entry; import java.util.Random; import org.apache.commons.lang3.math.NumberUtils; @@ -40,6 +41,10 @@ import com.hbm.handler.HTTPHandler; import com.hbm.handler.HbmKeybinds.EnumKeybind; import com.hbm.handler.pollution.PollutionHandler; import com.hbm.handler.pollution.PollutionHandler.PollutionType; +import com.hbm.handler.radiation.ChunkRadiationHandlerPRISM; +import com.hbm.handler.radiation.ChunkRadiationHandlerPRISM.RadPerWorld; +import com.hbm.handler.radiation.ChunkRadiationHandlerPRISM.SubChunk; +import com.hbm.handler.radiation.ChunkRadiationManager; import com.hbm.items.IEquipReceiver; import com.hbm.items.ModItems; import com.hbm.items.armor.ArmorFSB; @@ -118,6 +123,7 @@ import net.minecraft.util.EnumChatFormatting; import net.minecraft.util.FoodStats; import net.minecraft.util.MathHelper; import net.minecraft.util.Vec3; +import net.minecraft.world.ChunkCoordIntPair; import net.minecraft.world.World; import net.minecraftforge.common.util.FakePlayer; import net.minecraftforge.common.util.ForgeDirection; @@ -1088,6 +1094,45 @@ public class ModEventHandler { player.worldObj.spawnParticle("townaura", player.posX + vec.xCoord, player.posY + 1 + vec.yCoord, player.posZ + vec.zCoord, 0.0, 0.0, 0.0); } } + + // PRISMDBG + /*if(!event.player.worldObj.isRemote) { + ChunkRadiationHandlerPRISM prism = (ChunkRadiationHandlerPRISM) ChunkRadiationManager.proxy; + + RadPerWorld perWorld = prism.perWorld.get(player.worldObj); + + if(perWorld != null) { + SubChunk[] chunk = perWorld.radiation.get(new ChunkCoordIntPair(((int) Math.floor(player.posX)) >> 4, ((int) Math.floor(player.posZ)) >> 4)); + + if(chunk != null) { + + int y = ((int) Math.floor(player.posY)) >> 4; + + if(y >= 0 && y <= 15) { + SubChunk sub = chunk[y]; + + if(sub != null) { + float xSum = 0, ySum = 0, zSum = 0; + for(int i = 0; i < 16; i++) { + xSum += sub.xResist[i]; ySum += sub.yResist[i]; zSum += sub.zResist[i]; + } + PacketDispatcher.wrapper.sendTo(new PlayerInformPacket(EnumChatFormatting.RED + "FREE SPACE", 1), (EntityPlayerMP) player); + PacketDispatcher.wrapper.sendTo(new PlayerInformPacket(EnumChatFormatting.RED + "FREE SPACE", 2), (EntityPlayerMP) player); + PacketDispatcher.wrapper.sendTo(new PlayerInformPacket(EnumChatFormatting.GREEN + "" + sub.checksum + " - " + ((int) sub.radiation) + "RAD/s - " + sub.needsRebuild + + " - " + (int) xSum+ " - " + (int) ySum + " - " + (int) zSum, 3), (EntityPlayerMP) player); + } else { + PacketDispatcher.wrapper.sendTo(new PlayerInformPacket(EnumChatFormatting.RED + "SUB IS NULL", 1), (EntityPlayerMP) player); + } + } else { + PacketDispatcher.wrapper.sendTo(new PlayerInformPacket(EnumChatFormatting.RED + "OUTSIDE OF WORLD", 1), (EntityPlayerMP) player); + } + } else { + PacketDispatcher.wrapper.sendTo(new PlayerInformPacket(EnumChatFormatting.RED + "CHUNK IS NULL", 1), (EntityPlayerMP) player); + } + } else { + PacketDispatcher.wrapper.sendTo(new PlayerInformPacket(EnumChatFormatting.RED + "PERWORLD IS NULL", 1), (EntityPlayerMP) player); + } + }*/ } @SubscribeEvent diff --git a/src/main/resources/assets/hbm/textures/models/tank/tank_HOTBLOOD.png b/src/main/resources/assets/hbm/textures/models/tank/tank_BLOOD_HOT.png similarity index 100% rename from src/main/resources/assets/hbm/textures/models/tank/tank_HOTBLOOD.png rename to src/main/resources/assets/hbm/textures/models/tank/tank_BLOOD_HOT.png From dda1025fe261a480dbc7835b6085c305cf0dfa0a Mon Sep 17 00:00:00 2001 From: Bob Date: Sun, 16 Jun 2024 23:37:10 +0200 Subject: [PATCH 52/69] fixes and tweaks --- changelog | 3 +++ gradle.properties | 2 +- .../com/hbm/inventory/recipes/ArcWelderRecipes.java | 2 ++ .../com/hbm/inventory/recipes/AssemblerRecipes.java | 12 +++++------- .../hbm/inventory/recipes/anvil/AnvilRecipes.java | 5 ++--- src/main/java/com/hbm/lib/RefStrings.java | 2 +- src/main/java/com/hbm/main/CraftingManager.java | 1 - .../hbm/tileentity/machine/TileEntityICFPress.java | 5 +++++ 8 files changed, 19 insertions(+), 13 deletions(-) diff --git a/changelog b/changelog index 6eceec130..a2b553919 100644 --- a/changelog +++ b/changelog @@ -10,6 +10,7 @@ * Centrifuges and refineries now use analog circuits * Updated the cyclotron, the GUI is now much cleaner and it uses water as coolant (produces LPS) instead of regular coolant * Due to some people's inability to put a square peg into a square hole rather than a round one, it is now impossible to manually click soldering station ingredients into the wrong slot (you could have just shift-clicked, you know?) +* Slightly simplified a few crafting recipes, steel tanks and steel shells take the same role so the steel tanks were dropped from a few recipes ## Fixed * Fixed hopper IO ignoring the stack limit on arc furnaces under certain circumstances @@ -19,3 +20,5 @@ * Fixed issue where the power system would constantly disconnect when multiple dimensions are loaded * Fixed the rare sideways-rendering tank not using the correct UV * Fixed incorrect resource path for the hot blood tank, causing a missing texture +* Fixed welded CMB plates being unobtainable +* Fixed the ICF pellet maker not being able to eject the output diff --git a/gradle.properties b/gradle.properties index aeb2affff..62c5bcf75 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=4991 +mod_build_number=4998 credits=HbMinecraft,\ \ rodolphito (explosion algorithms),\ diff --git a/src/main/java/com/hbm/inventory/recipes/ArcWelderRecipes.java b/src/main/java/com/hbm/inventory/recipes/ArcWelderRecipes.java index 611997149..c4aa555c5 100644 --- a/src/main/java/com/hbm/inventory/recipes/ArcWelderRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/ArcWelderRecipes.java @@ -68,6 +68,8 @@ public class ArcWelderRecipes extends SerializableRecipe { new OreDictStack(CDALLOY.plateCast(), 2))); recipes.add(new ArcWelderRecipe(new ItemStack(ModItems.plate_welded, 1, Mats.MAT_TUNGSTEN.id), 1_200, 250_000L, new FluidStack(Fluids.OXYGEN, 1_000), new OreDictStack(W.plateCast(), 2))); + recipes.add(new ArcWelderRecipe(new ItemStack(ModItems.plate_welded, 1, Mats.MAT_CMB.id), 1_200, 10_000_000L, new FluidStack(Fluids.REFORMGAS, 1_000), + new OreDictStack(CMB.plateCast(), 2))); //pre-DFC recipes.add(new ArcWelderRecipe(new ItemStack(ModItems.plate_welded, 1, Mats.MAT_OSMIRIDIUM.id), 6_000, 20_000_000L, new FluidStack(Fluids.REFORMGAS, 16_000), new OreDictStack(OSMIRIDIUM.plateCast(), 2))); diff --git a/src/main/java/com/hbm/inventory/recipes/AssemblerRecipes.java b/src/main/java/com/hbm/inventory/recipes/AssemblerRecipes.java index 599cd0f0d..05eaf87f3 100644 --- a/src/main/java/com/hbm/inventory/recipes/AssemblerRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/AssemblerRecipes.java @@ -140,7 +140,7 @@ public class AssemblerRecipes extends SerializableRecipe { makeRecipe(new ComparableStack(ModBlocks.machine_schrabidium_battery, 1), new AStack[] {new OreDictStack(DESH.ingot(), 4), new OreDictStack(NP237.dust(), 12), new OreDictStack(SA326.dust(), 12), new OreDictStack(SA326.ingot(), 2), new OreDictStack(SA326.wireFine(), 4), },800); makeRecipe(new ComparableStack(ModBlocks.machine_dineutronium_battery, 1), new AStack[] {new OreDictStack(DNT.ingot(), 24), new ComparableStack(ModItems.powder_spark_mix, 12), new ComparableStack(ModItems.battery_spark_cell_1000, 1), new OreDictStack(CMB.ingot(), 32), new ComparableStack(ModItems.coil_magnetized_tungsten, 8), },1600); makeRecipe(new ComparableStack(ModBlocks.machine_shredder, 1), new AStack[] {new OreDictStack(STEEL.plate528(), 8), new ComparableStack(ModItems.motor, 2), new ComparableStack(ModBlocks.steel_beam, 2), new ComparableStack(Blocks.iron_bars, 2) },200); - 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, 1), new ComparableStack(ModItems.drill_titanium, 1), new OreDictStack(MINGRADE.wireFine(), 6), },250); + makeRecipe(new ComparableStack(ModBlocks.machine_well, 1), new AStack[] {new ComparableStack(ModBlocks.steel_scaffold, 20), new ComparableStack(ModItems.tank_steel, 2), new ComparableStack(ModItems.motor, 1), new ComparableStack(ModItems.pipes_steel, 1), new ComparableStack(ModItems.drill_titanium, 1), new OreDictStack(MINGRADE.wireFine(), 6), },250); makeRecipe(new ComparableStack(ModBlocks.machine_pumpjack, 1), new AStack[] {new ComparableStack(ModBlocks.steel_scaffold, 8), new OreDictStack(STEEL.plateWelded(), 8), new ComparableStack(ModItems.pipes_steel, 4), new ComparableStack(ModItems.tank_steel, 4), new OreDictStack(STEEL.plate(), 32), new ComparableStack(ModItems.drill_titanium, 1), new ComparableStack(ModItems.motor_desh) }, 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 OreDictStack(STEEL.pipe(), 8), new OreDictStack(STEEL.shell(), 4), new ComparableStack(ModItems.thermo_element, 3), },200); makeRecipe(new ComparableStack(ModBlocks.machine_coker, 1), new AStack[] {!exp ? new OreDictStack(STEEL.plateWelded(), 3) : new OreDictStack(STEEL.heavyComp(), 2), new OreDictStack(IRON.ingot(), 16), new OreDictStack(CU.plate528(), 8), new OreDictStack(RUBBER.ingot(), 4), new ComparableStack(ModItems.tank_steel, 2), new ComparableStack(ModBlocks.steel_grate, 4) },200); @@ -1121,8 +1121,7 @@ public class AssemblerRecipes extends SerializableRecipe { makeRecipe(new ComparableStack(ModBlocks.machine_catalytic_cracker), new AStack[] { new ComparableStack(ModBlocks.steel_scaffold, 16), - !exp ? new OreDictStack(STEEL.shell(), 4) : new OreDictStack(STEEL.heavyComp()), - new ComparableStack(ModItems.tank_steel, 3), + !exp ? new OreDictStack(STEEL.shell(), 6) : new OreDictStack(STEEL.heavyComp()), new OreDictStack(ANY_PLASTIC.ingot(), 4), new OreDictStack(NB.ingot(), 2), new ComparableStack(ModItems.catalyst_clay, 12), @@ -1132,10 +1131,10 @@ public class AssemblerRecipes extends SerializableRecipe { new OreDictStack(STEEL.ingot(), 8), new OreDictStack(CU.plate528(), 12), new OreDictStack(ANY_TAR.any(), 8), + new OreDictStack(STEEL.shell(), 3), new ComparableStack(ModItems.circuit, 12, EnumCircuitType.CAPACITOR), new ComparableStack(ModItems.catalyst_clay, 4), - new ComparableStack(ModItems.coil_tungsten, 8), - new ComparableStack(ModItems.tank_steel, 2) + new ComparableStack(ModItems.coil_tungsten, 8) }, 200); makeRecipe(new ComparableStack(ModBlocks.machine_solidifier), new AStack[] { @@ -1145,8 +1144,7 @@ public class AssemblerRecipes extends SerializableRecipe { new OreDictStack(STEEL.shell(), 3), new ComparableStack(ModItems.circuit, 12, EnumCircuitType.CAPACITOR), new ComparableStack(ModItems.catalyst_clay, 4), - new ComparableStack(ModItems.coil_copper, 4), - new ComparableStack(ModItems.tank_steel, 2) + new ComparableStack(ModItems.coil_copper, 4) }, 200); makeRecipe(new ComparableStack(ModBlocks.machine_radiolysis), new AStack[] { diff --git a/src/main/java/com/hbm/inventory/recipes/anvil/AnvilRecipes.java b/src/main/java/com/hbm/inventory/recipes/anvil/AnvilRecipes.java index 0c1815206..a556e80a4 100644 --- a/src/main/java/com/hbm/inventory/recipes/anvil/AnvilRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/anvil/AnvilRecipes.java @@ -439,10 +439,9 @@ public class AnvilRecipes { new AStack[] { new ComparableStack(ModItems.deuterium_filter, 2), new OreDictStack(STEEL.shell(), 5), - new ComparableStack(ModBlocks.concrete_smooth, 8), - new ComparableStack(ModBlocks.concrete_asbestos, 4), - new ComparableStack(ModBlocks.steel_scaffold, 16), new OreDictStack(STEEL.pipe(), 12), + new ComparableStack(ModBlocks.concrete_asbestos, 8), + new ComparableStack(ModBlocks.steel_scaffold, 16), new OreDictStack(Fluids.SOURGAS.getDict(1_000), 8), }, new AnvilOutput(new ItemStack(ModBlocks.machine_deuterium_tower))).setTier(4)); diff --git a/src/main/java/com/hbm/lib/RefStrings.java b/src/main/java/com/hbm/lib/RefStrings.java index 17155d5a6..e5d3168f4 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 (4991)"; + public static final String VERSION = "1.0.27 BETA (4998)"; //HBM's Beta Naming Convention: //V T (X) //V -> next release version diff --git a/src/main/java/com/hbm/main/CraftingManager.java b/src/main/java/com/hbm/main/CraftingManager.java index 553cc2b58..545f798ce 100644 --- a/src/main/java/com/hbm/main/CraftingManager.java +++ b/src/main/java/com/hbm/main/CraftingManager.java @@ -1008,7 +1008,6 @@ public class CraftingManager { addRecipeAuto(new ItemStack(ModBlocks.drone_waypoint, 4), new Object[] { "G", "T", "C", 'G', KEY_GREEN, 'T', Blocks.redstone_torch, 'C', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.BASIC) }); addRecipeAuto(new ItemStack(ModBlocks.drone_crate), new Object[] { "T", "C", 'T', ModBlocks.drone_waypoint, 'C', ModBlocks.crate_steel }); addRecipeAuto(new ItemStack(ModBlocks.drone_waypoint_request, 4), new Object[] { "G", "T", "C", 'G', KEY_BLUE, 'T', Blocks.redstone_torch, 'C', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.BASIC) }); - addRecipeAuto(new ItemStack(ModBlocks.drone_crate), new Object[] { "T", "C", "B", 'T', ModBlocks.drone_waypoint_request, 'C', ModBlocks.crate_steel, 'B', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.BASIC) }); addRecipeAuto(new ItemStack(ModBlocks.drone_crate_requester), new Object[] { "T", "C", "B", 'T', ModBlocks.drone_waypoint_request, 'C', ModBlocks.crate_steel, 'B', KEY_YELLOW }); addRecipeAuto(new ItemStack(ModBlocks.drone_crate_provider), new Object[] { "T", "C", "B", 'T', ModBlocks.drone_waypoint_request, 'C', ModBlocks.crate_steel, 'B', KEY_ORANGE }); addRecipeAuto(new ItemStack(ModBlocks.drone_dock), new Object[] { "T", "C", "B", 'T', ModBlocks.drone_waypoint_request, 'C', ModBlocks.crate_steel, 'B', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.ADVANCED) }); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityICFPress.java b/src/main/java/com/hbm/tileentity/machine/TileEntityICFPress.java index 60df455b8..9c6eef7ad 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityICFPress.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityICFPress.java @@ -153,6 +153,11 @@ public class TileEntityICFPress extends TileEntityMachineBase implements IFluidS public int[] getAccessibleSlotsFromSide(int side) { return side == 0 || side == 1 ? topBottom : sides; } + + @Override + public boolean canExtractItem(int slot, ItemStack itemStack, int side) { + return slot == 1; + } @Override public void readFromNBT(NBTTagCompound nbt) { From a016dd906acd8bc82c5674e2bf637c60f5697677 Mon Sep 17 00:00:00 2001 From: Bob Date: Tue, 18 Jun 2024 20:45:16 +0200 Subject: [PATCH 53/69] fixes --- changelog | 28 +++------- gradle.properties | 2 +- src/main/java/com/hbm/blocks/ModBlocks.java | 15 ------ .../hbm/blocks/generic/BlockSpeedyStairs.java | 38 +++++++------- .../radiation/ChunkRadiationHandlerPRISM.java | 51 +++++++++++-------- .../com/hbm/inventory/OreDictManager.java | 10 ++-- .../container/ContainerMachineCyclotron.java | 3 -- .../inventory/gui/GUIMachineCyclotron.java | 3 -- .../inventory/recipes/AssemblerRecipes.java | 22 ++++---- .../com/hbm/items/special/ItemOreBlock.java | 30 ----------- src/main/java/com/hbm/lib/RefStrings.java | 2 +- src/main/java/com/hbm/main/MainRegistry.java | 5 ++ .../machine/TileEntityMachineAssembler.java | 7 +-- .../machine/TileEntityMachineCyclotron.java | 5 -- 14 files changed, 77 insertions(+), 144 deletions(-) diff --git a/changelog b/changelog index a2b553919..cdd12bb6a 100644 --- a/changelog +++ b/changelog @@ -1,24 +1,10 @@ -## Added -* PRISM - * A new 3D radiation system which makes use of block explosion resistance to determine spreading - * Unlike the 1.12.2 "pocket" system, radiation isn't perfectly sealed, blocks in a 16x16x16 area are simply summed up and used as a divisor - * Using enough high-resistance blocks (or a ton of lesser resistant blocks), radiation can still be effectively blocked (either thick concrete walls or a mountain) - * Radiation is still (sub) chunk based, so the radiation on both sides of a wall in the middle of a chunk will still be the same, the wall will however affect spreading to neighboring chunks - * For TPT players: radiation can be compared to pressure, where pressure also uses 4x4 pixel regions and is affected by pixels within those regions - ## Changed -* Centrifuges and refineries now use analog circuits -* Updated the cyclotron, the GUI is now much cleaner and it uses water as coolant (produces LPS) instead of regular coolant -* Due to some people's inability to put a square peg into a square hole rather than a round one, it is now impossible to manually click soldering station ingredients into the wrong slot (you could have just shift-clicked, you know?) -* Slightly simplified a few crafting recipes, steel tanks and steel shells take the same role so the steel tanks were dropped from a few recipes +* Changed PRISM's resistance function to work more like armor resistance instead of a straight divider +* Capped PRISM's resistance value per block to 100 (bit over concrete) +* Removed the unused rare metal ores, freeing up 5 block IDs +* Changed the .75 bolt recipes ## Fixed -* Fixed hopper IO ignoring the stack limit on arc furnaces under certain circumstances -* Fixed the watz powerplant not dropping as many HSS bolts as it should -* Fixed grates crashing servers when placed using shift click onto blocks -* Many machines now use the much more efficient byte buffer for sending information to the client which heavily reduces lag (NBT packing is a major contributor to TPS lg) -* Fixed issue where the power system would constantly disconnect when multiple dimensions are loaded -* Fixed the rare sideways-rendering tank not using the correct UV -* Fixed incorrect resource path for the hot blood tank, causing a missing texture -* Fixed welded CMB plates being unobtainable -* Fixed the ICF pellet maker not being able to eject the output +* Fixed PRISM crashing instantly +* Fixed PRISM's resistance check being on backwards +* Fixed PRISM's resistance check omitting the wrong layers \ No newline at end of file diff --git a/gradle.properties b/gradle.properties index 62c5bcf75..0219489fa 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=4998 +mod_build_number=5000 credits=HbMinecraft,\ \ rodolphito (explosion algorithms),\ diff --git a/src/main/java/com/hbm/blocks/ModBlocks.java b/src/main/java/com/hbm/blocks/ModBlocks.java index 88e2f7e82..4d4cf4afa 100644 --- a/src/main/java/com/hbm/blocks/ModBlocks.java +++ b/src/main/java/com/hbm/blocks/ModBlocks.java @@ -61,11 +61,6 @@ public class ModBlocks { public static Block ore_schrabidium; public static Block ore_beryllium; public static Block ore_australium; - public static Block ore_weidanium; - public static Block ore_reiium; - public static Block ore_unobtainium; - public static Block ore_daffergon; - public static Block ore_verticium; public static Block ore_rare; public static Block ore_cobalt; public static Block ore_cinnebar; @@ -1327,11 +1322,6 @@ public class ModBlocks { basalt_tiles = new BlockGeneric(Material.rock).setBlockName("basalt_tiles").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":basalt_tiles"); ore_australium = new BlockGeneric(Material.rock).setBlockName("ore_australium").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":ore_australium"); - ore_weidanium = new BlockGeneric(Material.rock).setBlockName("ore_weidanium").setCreativeTab(null).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":ore_weidanium"); - ore_reiium = new BlockGeneric(Material.rock).setBlockName("ore_reiium").setCreativeTab(null).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":ore_reiium"); - ore_unobtainium = new BlockGeneric(Material.rock).setBlockName("ore_unobtainium").setCreativeTab(null).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":ore_unobtainium"); - ore_daffergon = new BlockGeneric(Material.rock).setBlockName("ore_daffergon").setCreativeTab(null).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":ore_daffergon"); - ore_verticium = new BlockGeneric(Material.rock).setBlockName("ore_verticium").setCreativeTab(null).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":ore_verticium"); ore_rare = new BlockOre(Material.rock).setBlockName("ore_rare").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":ore_rare"); ore_cobalt = new BlockOre(Material.rock).setBlockName("ore_cobalt").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":ore_cobalt"); ore_cinnebar = new BlockOre(Material.rock).setBlockName("ore_cinnebar").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":ore_cinnebar"); @@ -2394,11 +2384,6 @@ public class ModBlocks { //Rare Minerals GameRegistry.registerBlock(ore_australium, ItemOreBlock.class, ore_australium.getUnlocalizedName()); - GameRegistry.registerBlock(ore_weidanium, ItemOreBlock.class, ore_weidanium.getUnlocalizedName()); - GameRegistry.registerBlock(ore_reiium, ItemOreBlock.class, ore_reiium.getUnlocalizedName()); - GameRegistry.registerBlock(ore_unobtainium, ItemOreBlock.class, ore_unobtainium.getUnlocalizedName()); - GameRegistry.registerBlock(ore_daffergon, ItemOreBlock.class, ore_daffergon.getUnlocalizedName()); - GameRegistry.registerBlock(ore_verticium, ItemOreBlock.class, ore_verticium.getUnlocalizedName()); GameRegistry.registerBlock(ore_rare, ItemOreBlock.class, ore_rare.getUnlocalizedName()); GameRegistry.registerBlock(ore_cobalt, ore_cobalt.getUnlocalizedName()); GameRegistry.registerBlock(ore_cinnebar, ore_cinnebar.getUnlocalizedName()); diff --git a/src/main/java/com/hbm/blocks/generic/BlockSpeedyStairs.java b/src/main/java/com/hbm/blocks/generic/BlockSpeedyStairs.java index 609c66d5b..2a9bfb8d8 100644 --- a/src/main/java/com/hbm/blocks/generic/BlockSpeedyStairs.java +++ b/src/main/java/com/hbm/blocks/generic/BlockSpeedyStairs.java @@ -3,7 +3,6 @@ package com.hbm.blocks.generic; import com.hbm.blocks.IStepTickReceiver; import com.hbm.blocks.ITooltipProvider; import net.minecraft.block.Block; -import net.minecraft.block.material.Material; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; import net.minecraft.util.EnumChatFormatting; @@ -14,28 +13,27 @@ import java.util.List; public class BlockSpeedyStairs extends BlockGenericStairs implements IStepTickReceiver, ITooltipProvider { - double speed; + double speed; - public BlockSpeedyStairs(Block block, int meta, double speed) { - super(block, meta); - this.speed = speed; - } + public BlockSpeedyStairs(Block block, int meta, double speed) { + super(block, meta); + this.speed = speed; + } - @Override - public void onPlayerStep(World world, int x, int y, int z, EntityPlayer player) { + @Override + public void onPlayerStep(World world, int x, int y, int z, EntityPlayer player) { - if(!world.isRemote) - return; + if(!world.isRemote) + return; - if(player.moveForward != 0 || player.moveStrafing != 0) { - player.motionX *= speed; - player.motionZ *= speed; - } - } + if(player.moveForward != 0 || player.moveStrafing != 0) { + player.motionX *= speed; + player.motionZ *= speed; + } + } - @Override - public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean ext) { - list.add(EnumChatFormatting.BLUE + "Increases speed by " + (MathHelper.floor_double((speed - 1) * 100)) + "%"); - } + @Override + public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean ext) { + list.add(EnumChatFormatting.BLUE + "Increases speed by " + (MathHelper.floor_double((speed - 1) * 100)) + "%"); + } } - diff --git a/src/main/java/com/hbm/handler/radiation/ChunkRadiationHandlerPRISM.java b/src/main/java/com/hbm/handler/radiation/ChunkRadiationHandlerPRISM.java index 9f6910472..87a1f6cd7 100644 --- a/src/main/java/com/hbm/handler/radiation/ChunkRadiationHandlerPRISM.java +++ b/src/main/java/com/hbm/handler/radiation/ChunkRadiationHandlerPRISM.java @@ -142,15 +142,17 @@ public class ChunkRadiationHandlerPRISM extends ChunkRadiationHandler { RadPerWorld radWorld = perWorld.get(event.world); if(radWorld != null) { SubChunk[] chunk = radWorld.radiation.get(event.getChunk().getChunkCoordIntPair()); - for(int i = 0; i < 16; i++) { - SubChunk sub = chunk[i]; - if(sub != null) { - float rad = sub.radiation; - event.getData().setFloat(NBT_KEY_CHUNK_RADIATION + i, rad); - for(int j = 0; j < 16; j++) event.getData().setFloat(NBT_KEY_CHUNK_RESISTANCE + "x_" + j + "_" + i, sub.xResist[j]); - for(int j = 0; j < 16; j++) event.getData().setFloat(NBT_KEY_CHUNK_RESISTANCE + "y_" + j + "_" + i, sub.yResist[j]); - for(int j = 0; j < 16; j++) event.getData().setFloat(NBT_KEY_CHUNK_RESISTANCE + "z_" + j + "_" + i, sub.zResist[j]); - event.getData().setBoolean(NBT_KEY_CHUNK_EXISTS + i, true); + if(chunk != null) { + for(int i = 0; i < 16; i++) { + SubChunk sub = chunk[i]; + if(sub != null) { + float rad = sub.radiation; + event.getData().setFloat(NBT_KEY_CHUNK_RADIATION + i, rad); + for(int j = 0; j < 16; j++) event.getData().setFloat(NBT_KEY_CHUNK_RESISTANCE + "x_" + j + "_" + i, sub.xResist[j]); + for(int j = 0; j < 16; j++) event.getData().setFloat(NBT_KEY_CHUNK_RESISTANCE + "y_" + j + "_" + i, sub.yResist[j]); + for(int j = 0; j < 16; j++) event.getData().setFloat(NBT_KEY_CHUNK_RESISTANCE + "z_" + j + "_" + i, sub.zResist[j]); + event.getData().setBoolean(NBT_KEY_CHUNK_EXISTS + i, true); + } } } } @@ -162,10 +164,12 @@ public class ChunkRadiationHandlerPRISM extends ChunkRadiationHandler { if(!event.world.isRemote) { RadPerWorld radWorld = perWorld.get(event.world); if(radWorld != null) { - radWorld.radiation.remove(event.getChunk()); + radWorld.radiation.remove(event.getChunk().getChunkCoordIntPair()); } } } + + public static final HashMap newAdditions = new HashMap(); @Override public void updateSystem() { @@ -239,6 +243,9 @@ public class ChunkRadiationHandlerPRISM extends ChunkRadiationHandler { } } + system.radiation.putAll(newAdditions); + newAdditions.clear(); + /* //reap chunks with no radiation at all system.radiation.entrySet().removeIf(x -> getTotalChunkRadiation(x.getValue()) <= 0F); @@ -266,7 +273,7 @@ public class ChunkRadiationHandlerPRISM extends ChunkRadiationHandler { SubChunk[] newChunk = map.get(newPos); if(newChunk == null) { newChunk = new SubChunk[16]; - map.put(newPos, newChunk); + newAdditions.put(newPos, newChunk); } if(newChunk[y] == null) newChunk[y] = new SubChunk().rebuild(world, newPos.chunkXPos << 4, y << 4, newPos.chunkZPos << 4); SubChunk to = newChunk[y]; @@ -276,8 +283,8 @@ public class ChunkRadiationHandlerPRISM extends ChunkRadiationHandler { private static float spreadRadiationTo(SubChunk from, SubChunk to, float amount, ForgeDirection movement) { float resistance = from.getResistanceValue(movement.getOpposite()) + to.getResistanceValue(movement); - resistance /= 1_000F; - float toMove = Math.min(amount / Math.max(resistance, 1F), amount); + double fun = Math.pow(Math.E, -resistance / 10_000D); + float toMove = (float) Math.min(amount * fun, amount); to.radiation += toMove; return toMove; } @@ -334,7 +341,7 @@ public class ChunkRadiationHandlerPRISM extends ChunkRadiationHandler { Block b = subChunk.getBlockByExtId(iX, iY, iZ); if(b.getMaterial() == Material.air) continue; - float resistance = b.getExplosionResistance(null, world, tX + iX, tY + iY, tZ + iZ, x, y, z); + float resistance = Math.min(b.getExplosionResistance(null, world, tX + iX, tY + iY, tZ + iZ, x, y, z), 100); if(iX == sX) xResist[iX] += resistance; if(iY == sY) yResist[iY] += resistance; if(iZ == sZ) zResist[iZ] += resistance; @@ -370,7 +377,7 @@ public class ChunkRadiationHandlerPRISM extends ChunkRadiationHandler { Block b = subChunk.getBlockByExtId(iX, iY, iZ); if(b.getMaterial() == Material.air) continue; - float resistance = b.getExplosionResistance(null, world, tX + iX, tY + iY, tZ + iZ, x, y, z); + float resistance = Math.min(b.getExplosionResistance(null, world, tX + iX, tY + iY, tZ + iZ, x, y, z), 100); xResist[iX] += resistance; yResist[iY] += resistance; zResist[iZ] += resistance; @@ -385,18 +392,18 @@ public class ChunkRadiationHandlerPRISM extends ChunkRadiationHandler { } public float getResistanceValue(ForgeDirection movement) { - if(movement == Library.POS_X) return getResistanceFromArray(xResist, false); - if(movement == Library.NEG_X) return getResistanceFromArray(xResist, true); - if(movement == Library.POS_Y) return getResistanceFromArray(yResist, false); - if(movement == Library.NEG_Y) return getResistanceFromArray(yResist, true); - if(movement == Library.POS_Z) return getResistanceFromArray(zResist, false); - if(movement == Library.NEG_Z) return getResistanceFromArray(zResist, true); + if(movement == Library.POS_X) return getResistanceFromArray(xResist, true); + if(movement == Library.NEG_X) return getResistanceFromArray(xResist, false); + if(movement == Library.POS_Y) return getResistanceFromArray(yResist, true); + if(movement == Library.NEG_Y) return getResistanceFromArray(yResist, false); + if(movement == Library.POS_Z) return getResistanceFromArray(zResist, true); + if(movement == Library.NEG_Z) return getResistanceFromArray(zResist, false); return 0; } private float getResistanceFromArray(float[] resist, boolean reverse) { float res = 0F; - for(int i = 0; i < 15; i++) { + for(int i = 1; i < 16; i++) { int index = reverse ? 15 - i : i; res += resist[index] / 15F * i; } diff --git a/src/main/java/com/hbm/inventory/OreDictManager.java b/src/main/java/com/hbm/inventory/OreDictManager.java index edae916e5..c4035c989 100644 --- a/src/main/java/com/hbm/inventory/OreDictManager.java +++ b/src/main/java/com/hbm/inventory/OreDictManager.java @@ -445,11 +445,11 @@ public class OreDictManager { * RARE METALS */ AUSTRALIUM .nugget(nugget_australium) .billet(billet_australium) .ingot(ingot_australium) .dust(powder_australium) .block(block_australium) .ore(ore_australium); - REIIUM .nugget(nugget_reiium) .ingot(ingot_reiium) .dust(powder_reiium) .block(block_reiium) .ore(ore_reiium); - WEIDANIUM .nugget(nugget_weidanium) .ingot(ingot_weidanium) .dust(powder_weidanium) .block(block_weidanium) .ore(ore_weidanium); - UNOBTAINIUM .nugget(nugget_unobtainium) .ingot(ingot_unobtainium) .dust(powder_unobtainium) .block(block_unobtainium) .ore(ore_unobtainium); - VERTICIUM .nugget(nugget_verticium) .ingot(ingot_verticium) .dust(powder_verticium) .block(block_verticium) .ore(ore_verticium); - DAFFERGON .nugget(nugget_daffergon) .ingot(ingot_daffergon) .dust(powder_daffergon) .block(block_daffergon) .ore(ore_daffergon); + REIIUM .nugget(nugget_reiium) .ingot(ingot_reiium) .dust(powder_reiium) .block(block_reiium); + WEIDANIUM .nugget(nugget_weidanium) .ingot(ingot_weidanium) .dust(powder_weidanium) .block(block_weidanium); + UNOBTAINIUM .nugget(nugget_unobtainium) .ingot(ingot_unobtainium) .dust(powder_unobtainium) .block(block_unobtainium); + VERTICIUM .nugget(nugget_verticium) .ingot(ingot_verticium) .dust(powder_verticium) .block(block_verticium); + DAFFERGON .nugget(nugget_daffergon) .ingot(ingot_daffergon) .dust(powder_daffergon) .block(block_daffergon); /* * RARE EARTHS diff --git a/src/main/java/com/hbm/inventory/container/ContainerMachineCyclotron.java b/src/main/java/com/hbm/inventory/container/ContainerMachineCyclotron.java index cc720bc10..784f5275e 100644 --- a/src/main/java/com/hbm/inventory/container/ContainerMachineCyclotron.java +++ b/src/main/java/com/hbm/inventory/container/ContainerMachineCyclotron.java @@ -1,10 +1,7 @@ package com.hbm.inventory.container; -import com.hbm.inventory.FluidContainerRegistry; import com.hbm.inventory.SlotCraftingOutput; -import com.hbm.inventory.SlotTakeOnly; import com.hbm.inventory.SlotUpgrade; -import com.hbm.inventory.fluid.Fluids; import com.hbm.items.ModItems; import com.hbm.items.machine.ItemMachineUpgrade; import com.hbm.tileentity.machine.TileEntityMachineCyclotron; diff --git a/src/main/java/com/hbm/inventory/gui/GUIMachineCyclotron.java b/src/main/java/com/hbm/inventory/gui/GUIMachineCyclotron.java index 57d35ef3b..5f5cfc339 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIMachineCyclotron.java +++ b/src/main/java/com/hbm/inventory/gui/GUIMachineCyclotron.java @@ -4,13 +4,10 @@ import org.lwjgl.opengl.GL11; import com.hbm.inventory.container.ContainerMachineCyclotron; import com.hbm.lib.RefStrings; -import com.hbm.packet.AuxButtonPacket; -import com.hbm.packet.PacketDispatcher; import com.hbm.tileentity.machine.TileEntityMachineCyclotron; import com.hbm.util.I18nUtil; import net.minecraft.client.Minecraft; -import net.minecraft.client.audio.PositionedSoundRecord; import net.minecraft.client.resources.I18n; import net.minecraft.entity.player.InventoryPlayer; import net.minecraft.util.ResourceLocation; diff --git a/src/main/java/com/hbm/inventory/recipes/AssemblerRecipes.java b/src/main/java/com/hbm/inventory/recipes/AssemblerRecipes.java index 05eaf87f3..7da831ef7 100644 --- a/src/main/java/com/hbm/inventory/recipes/AssemblerRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/AssemblerRecipes.java @@ -510,30 +510,26 @@ public class AssemblerRecipes extends SerializableRecipe { }, 200); makeRecipe(new ComparableStack(ModItems.ammo_75bolt, 2, ItemAmmoEnums.Ammo75Bolt.STOCK.ordinal()), new AStack[] { - new OreDictStack(STEEL.plate(), 2), - new OreDictStack(CU.plate(), 1), - new ComparableStack(ModItems.casing_50, 5), + new OreDictStack(STEEL.plate(), 4), new OreDictStack(ANY_PLASTICEXPLOSIVE.ingot(), 2), + new OreDictStack(ANY_HARDPLASTIC.ingot(), 2), new ComparableStack(ModItems.cordite, 3), new OreDictStack(U238.ingot(), 1) }, 60); makeRecipe(new ComparableStack(ModItems.ammo_75bolt, 2, ItemAmmoEnums.Ammo75Bolt.INCENDIARY.ordinal()), new AStack[] { - new OreDictStack(STEEL.plate(), 2), - new OreDictStack(CU.plate(), 1), - new ComparableStack(ModItems.casing_50, 5), - new OreDictStack(ANY_PLASTICEXPLOSIVE.ingot(), 3), + new OreDictStack(STEEL.plate(), 4), + new OreDictStack(ANY_PLASTICEXPLOSIVE.ingot(), 2), + new OreDictStack(ANY_HARDPLASTIC.ingot(), 2), new ComparableStack(ModItems.cordite, 3), new OreDictStack(P_WHITE.ingot(), 3) }, 60); makeRecipe(new ComparableStack(ModItems.ammo_75bolt, 2, ItemAmmoEnums.Ammo75Bolt.HE.ordinal()), new AStack[] { - new OreDictStack(STEEL.plate(), 2), - new OreDictStack(CU.plate(), 1), - new ComparableStack(ModItems.casing_50, 5), - new OreDictStack(ANY_HIGHEXPLOSIVE.ingot(), 5), - new ComparableStack(ModItems.cordite, 5), - new OreDictStack(REDSTONE.dust(), 3) + new OreDictStack(STEEL.plate(), 4), + new OreDictStack(ANY_PLASTICEXPLOSIVE.ingot(), 2), + new OreDictStack(ANY_HARDPLASTIC.ingot(), 5), + new ComparableStack(ModItems.cordite, 5) }, 60); makeRecipe(new ComparableStack(ModItems.spawn_worm, 1), new AStack[] { diff --git a/src/main/java/com/hbm/items/special/ItemOreBlock.java b/src/main/java/com/hbm/items/special/ItemOreBlock.java index 9b0596fa4..b58585514 100644 --- a/src/main/java/com/hbm/items/special/ItemOreBlock.java +++ b/src/main/java/com/hbm/items/special/ItemOreBlock.java @@ -30,36 +30,6 @@ public class ItemOreBlock extends ItemBlock { list.add("Deposit location: X:-400; Z:-400"); list.add("Estimated quantity: 490"); } - - if(this.field_150939_a == ModBlocks.ore_weidanium) { - list.add("Weidanium ore"); - list.add("Deposit location: X:0; Z:300"); - list.add("Estimated quantity: 2800"); - } - - if(this.field_150939_a == ModBlocks.ore_reiium) { - list.add("Reiium ore"); - list.add("Deposit location: X:0; Z:0"); - list.add("Estimated quantity: 2800"); - } - - if(this.field_150939_a == ModBlocks.ore_unobtainium) { - list.add("Unobtainium ore"); - list.add("Deposit location: X:200; Z:200"); - list.add("Estimated quantity: 12480"); - } - - if(this.field_150939_a == ModBlocks.ore_daffergon) { - list.add("Daffergon ore"); - list.add("Deposit location: X:400; Z:-200"); - list.add("Estimated quantity: 14980"); - } - - if(this.field_150939_a == ModBlocks.ore_verticium) { - list.add("Verticium ore"); - list.add("Deposit location: X:-300; Z:200"); - list.add("Estimated quantity: 4680"); - } } } diff --git a/src/main/java/com/hbm/lib/RefStrings.java b/src/main/java/com/hbm/lib/RefStrings.java index e5d3168f4..1a5c1bf6d 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 (4998)"; + public static final String VERSION = "1.0.27 BETA (5000)"; //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 23a24261c..8043c2b04 100644 --- a/src/main/java/com/hbm/main/MainRegistry.java +++ b/src/main/java/com/hbm/main/MainRegistry.java @@ -1332,6 +1332,11 @@ public class MainRegistry { ignoreMappings.add("hbm:item.arc_electrode_desh"); ignoreMappings.add("hbm:tile.sand_gold"); ignoreMappings.add("hbm:tile.sand_gold198"); + ignoreMappings.add("hbm:tile.ore_weidanium"); + ignoreMappings.add("hbm:tile.ore_reiium"); + ignoreMappings.add("hbm:tile.ore_unobtainium"); + ignoreMappings.add("hbm:tile.ore_daffergon"); + ignoreMappings.add("hbm:tile.ore_verticium"); /// REMAP /// remapItems.put("hbm:item.gadget_explosive8", ModItems.early_explosive_lenses); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineAssembler.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineAssembler.java index b83c19787..c16320387 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineAssembler.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineAssembler.java @@ -6,12 +6,9 @@ import java.util.Random; import com.hbm.blocks.BlockDummyable; import com.hbm.blocks.ModBlocks; import com.hbm.handler.MultiblockHandlerXR; -import com.hbm.inventory.RecipesCommon.ComparableStack; import com.hbm.inventory.UpgradeManager; import com.hbm.inventory.container.ContainerMachineAssembler; import com.hbm.inventory.gui.GUIMachineAssembler; -import com.hbm.inventory.recipes.AssemblerRecipes; -import com.hbm.items.machine.ItemAssemblyTemplate; import com.hbm.items.machine.ItemMachineUpgrade.UpgradeType; import com.hbm.main.MainRegistry; import com.hbm.sound.AudioWrapper; @@ -106,11 +103,11 @@ public class TileEntityMachineAssembler extends TileEntityMachineAssemblerBase i speed /= (overLevel + 1); consumption *= (overLevel + 1); - int rec = -1; + /*int rec = -1; if(AssemblerRecipes.getOutputFromTempate(slots[4]) != null) { ComparableStack comp = ItemAssemblyTemplate.readType(slots[4]); rec = AssemblerRecipes.recipeList.indexOf(comp); - } + }*/ this.networkPackNT(150); } else { diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCyclotron.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCyclotron.java index e43f45631..effd7bf2e 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCyclotron.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCyclotron.java @@ -4,15 +4,10 @@ import java.util.List; import java.util.Map.Entry; import com.hbm.blocks.ModBlocks; -import com.hbm.explosion.ExplosionLarge; -import com.hbm.explosion.ExplosionThermo; -import com.hbm.interfaces.IFluidAcceptor; -import com.hbm.interfaces.IFluidSource; import com.hbm.inventory.UpgradeManager; import com.hbm.inventory.RecipesCommon.AStack; import com.hbm.inventory.RecipesCommon.ComparableStack; import com.hbm.inventory.container.ContainerMachineCyclotron; -import com.hbm.inventory.fluid.FluidType; import com.hbm.inventory.fluid.Fluids; import com.hbm.inventory.fluid.tank.FluidTank; import com.hbm.inventory.gui.GUIMachineCyclotron; From 79cfe0b6c4a72058d7963806f5b68708e6852d94 Mon Sep 17 00:00:00 2001 From: Boblet Date: Wed, 19 Jun 2024 15:58:12 +0200 Subject: [PATCH 54/69] yippie --- changelog | 14 ++++++-------- .../com/hbm/blocks/network/FluidDuctBox.java | 13 +++++++------ .../blocks/network/FluidDuctBoxExhaust.java | 4 ++-- .../radiation/ChunkRadiationHandlerPRISM.java | 9 ++++++--- .../hbm/textures/blocks/boxduct_copper.png | Bin 1672 -> 2534 bytes .../blocks/boxduct_copper_curve_bl.png | Bin 462 -> 389 bytes .../blocks/boxduct_copper_curve_br.png | Bin 438 -> 376 bytes .../blocks/boxduct_copper_curve_tl.png | Bin 414 -> 317 bytes .../blocks/boxduct_copper_curve_tr.png | Bin 480 -> 388 bytes .../textures/blocks/boxduct_copper_end.png | Bin 615 -> 535 bytes .../blocks/boxduct_copper_junction.png | Bin 347 -> 0 bytes .../blocks/boxduct_copper_junction_0.png | Bin 0 -> 511 bytes .../blocks/boxduct_copper_junction_1.png | Bin 0 -> 621 bytes .../blocks/boxduct_copper_junction_2.png | Bin 0 -> 618 bytes .../blocks/boxduct_copper_junction_3.png | Bin 0 -> 509 bytes .../blocks/boxduct_copper_junction_4.png | Bin 0 -> 412 bytes .../blocks/boxduct_copper_straight.png | Bin 350 -> 208 bytes .../hbm/textures/blocks/boxduct_exhaust.png | Bin 1426 -> 4010 bytes .../blocks/boxduct_exhaust_curve_bl.png | Bin 395 -> 459 bytes .../blocks/boxduct_exhaust_curve_br.png | Bin 389 -> 431 bytes .../blocks/boxduct_exhaust_curve_tl.png | Bin 362 -> 442 bytes .../blocks/boxduct_exhaust_curve_tr.png | Bin 423 -> 446 bytes .../textures/blocks/boxduct_exhaust_end.png | Bin 517 -> 689 bytes .../blocks/boxduct_exhaust_junction_0.png | Bin 0 -> 598 bytes .../blocks/boxduct_exhaust_junction_1.png | Bin 0 -> 697 bytes .../blocks/boxduct_exhaust_junction_2.png | Bin 0 -> 673 bytes .../blocks/boxduct_exhaust_junction_3.png | Bin 0 -> 553 bytes .../blocks/boxduct_exhaust_junction_4.png | Bin 0 -> 463 bytes .../blocks/boxduct_exhaust_straight.png | Bin 309 -> 279 bytes .../hbm/textures/blocks/boxduct_silver.png | Bin 1394 -> 2189 bytes .../blocks/boxduct_silver_curve_bl.png | Bin 380 -> 311 bytes .../blocks/boxduct_silver_curve_br.png | Bin 372 -> 314 bytes .../blocks/boxduct_silver_curve_tl.png | Bin 355 -> 282 bytes .../blocks/boxduct_silver_curve_tr.png | Bin 395 -> 331 bytes .../textures/blocks/boxduct_silver_end.png | Bin 495 -> 452 bytes .../blocks/boxduct_silver_junction.png | Bin 280 -> 0 bytes .../blocks/boxduct_silver_junction_0.png | Bin 0 -> 401 bytes .../blocks/boxduct_silver_junction_1.png | Bin 0 -> 502 bytes .../blocks/boxduct_silver_junction_2.png | Bin 0 -> 520 bytes .../blocks/boxduct_silver_junction_3.png | Bin 0 -> 436 bytes .../blocks/boxduct_silver_junction_4.png | Bin 0 -> 354 bytes .../blocks/boxduct_silver_straight.png | Bin 293 -> 189 bytes .../hbm/textures/blocks/boxduct_white.png | Bin 0 -> 2224 bytes .../blocks/boxduct_white_curve_bl.png | Bin 377 -> 314 bytes .../blocks/boxduct_white_curve_br.png | Bin 364 -> 312 bytes .../blocks/boxduct_white_curve_tl.png | Bin 347 -> 285 bytes .../blocks/boxduct_white_curve_tr.png | Bin 395 -> 329 bytes .../hbm/textures/blocks/boxduct_white_end.png | Bin 489 -> 466 bytes .../blocks/boxduct_white_junction.png | Bin 274 -> 0 bytes .../blocks/boxduct_white_junction_0.png | Bin 0 -> 406 bytes .../blocks/boxduct_white_junction_1.png | Bin 0 -> 507 bytes .../blocks/boxduct_white_junction_2.png | Bin 0 -> 539 bytes .../blocks/boxduct_white_junction_3.png | Bin 0 -> 432 bytes .../blocks/boxduct_white_junction_4.png | Bin 0 -> 338 bytes .../blocks/boxduct_white_straight.png | Bin 294 -> 191 bytes 55 files changed, 21 insertions(+), 19 deletions(-) delete mode 100644 src/main/resources/assets/hbm/textures/blocks/boxduct_copper_junction.png create mode 100644 src/main/resources/assets/hbm/textures/blocks/boxduct_copper_junction_0.png create mode 100644 src/main/resources/assets/hbm/textures/blocks/boxduct_copper_junction_1.png create mode 100644 src/main/resources/assets/hbm/textures/blocks/boxduct_copper_junction_2.png create mode 100644 src/main/resources/assets/hbm/textures/blocks/boxduct_copper_junction_3.png create mode 100644 src/main/resources/assets/hbm/textures/blocks/boxduct_copper_junction_4.png create mode 100644 src/main/resources/assets/hbm/textures/blocks/boxduct_exhaust_junction_0.png create mode 100644 src/main/resources/assets/hbm/textures/blocks/boxduct_exhaust_junction_1.png create mode 100644 src/main/resources/assets/hbm/textures/blocks/boxduct_exhaust_junction_2.png create mode 100644 src/main/resources/assets/hbm/textures/blocks/boxduct_exhaust_junction_3.png create mode 100644 src/main/resources/assets/hbm/textures/blocks/boxduct_exhaust_junction_4.png delete mode 100644 src/main/resources/assets/hbm/textures/blocks/boxduct_silver_junction.png create mode 100644 src/main/resources/assets/hbm/textures/blocks/boxduct_silver_junction_0.png create mode 100644 src/main/resources/assets/hbm/textures/blocks/boxduct_silver_junction_1.png create mode 100644 src/main/resources/assets/hbm/textures/blocks/boxduct_silver_junction_2.png create mode 100644 src/main/resources/assets/hbm/textures/blocks/boxduct_silver_junction_3.png create mode 100644 src/main/resources/assets/hbm/textures/blocks/boxduct_silver_junction_4.png create mode 100644 src/main/resources/assets/hbm/textures/blocks/boxduct_white.png delete mode 100644 src/main/resources/assets/hbm/textures/blocks/boxduct_white_junction.png create mode 100644 src/main/resources/assets/hbm/textures/blocks/boxduct_white_junction_0.png create mode 100644 src/main/resources/assets/hbm/textures/blocks/boxduct_white_junction_1.png create mode 100644 src/main/resources/assets/hbm/textures/blocks/boxduct_white_junction_2.png create mode 100644 src/main/resources/assets/hbm/textures/blocks/boxduct_white_junction_3.png create mode 100644 src/main/resources/assets/hbm/textures/blocks/boxduct_white_junction_4.png diff --git a/changelog b/changelog index cdd12bb6a..c4aad0278 100644 --- a/changelog +++ b/changelog @@ -1,10 +1,8 @@ ## Changed -* Changed PRISM's resistance function to work more like armor resistance instead of a straight divider -* Capped PRISM's resistance value per block to 100 (bit over concrete) -* Removed the unused rare metal ores, freeing up 5 block IDs -* Changed the .75 bolt recipes +* Updated boxducts + * All boxducts are now way cleaner, only having bolts on intersections, with straight parts only having very light seams + * Intersections now have unique textures for each size + * Copper boxducts now have a much nicer color gradient + * Exhaust pipes now have a more rusted appearance -## Fixed -* Fixed PRISM crashing instantly -* Fixed PRISM's resistance check being on backwards -* Fixed PRISM's resistance check omitting the wrong layers \ No newline at end of file +## Fixed crash caused by PRISM updating unloaded worlds \ No newline at end of file diff --git a/src/main/java/com/hbm/blocks/network/FluidDuctBox.java b/src/main/java/com/hbm/blocks/network/FluidDuctBox.java index ab63cb957..fb759fb93 100644 --- a/src/main/java/com/hbm/blocks/network/FluidDuctBox.java +++ b/src/main/java/com/hbm/blocks/network/FluidDuctBox.java @@ -35,7 +35,7 @@ public class FluidDuctBox extends FluidDuctBase implements IBlockMulti, ILookOve @SideOnly(Side.CLIENT) public IIcon[] iconCurveTR; @SideOnly(Side.CLIENT) public IIcon[] iconCurveBL; @SideOnly(Side.CLIENT) public IIcon[] iconCurveBR; - @SideOnly(Side.CLIENT) public IIcon[] iconJunction; + @SideOnly(Side.CLIENT) public IIcon[][] iconJunction; private static final String[] materials = new String[] { "silver", "copper", "white" }; @@ -55,7 +55,7 @@ public class FluidDuctBox extends FluidDuctBase implements IBlockMulti, ILookOve iconCurveTR = new IIcon[count]; iconCurveBL = new IIcon[count]; iconCurveBR = new IIcon[count]; - iconJunction = new IIcon[count]; + iconJunction = new IIcon[count][5]; for(int i = 0; i < count; i++) { iconStraight[i] = iconRegister.registerIcon(RefStrings.MODID + ":boxduct_" + materials[i] + "_straight"); @@ -64,7 +64,7 @@ public class FluidDuctBox extends FluidDuctBase implements IBlockMulti, ILookOve iconCurveTR[i] = iconRegister.registerIcon(RefStrings.MODID + ":boxduct_" + materials[i] + "_curve_tr"); iconCurveBL[i] = iconRegister.registerIcon(RefStrings.MODID + ":boxduct_" + materials[i] + "_curve_bl"); iconCurveBR[i] = iconRegister.registerIcon(RefStrings.MODID + ":boxduct_" + materials[i] + "_curve_br"); - iconJunction[i] = iconRegister.registerIcon(RefStrings.MODID + ":boxduct_" + materials[i] + "_junction"); + for(int j = 0; j < 5; j++) iconJunction[i][j] = iconRegister.registerIcon(RefStrings.MODID + ":boxduct_" + materials[i] + "_junction_" + j); } } @@ -83,7 +83,8 @@ public class FluidDuctBox extends FluidDuctBase implements IBlockMulti, ILookOve int mask = 0 + (pX ? 32 : 0) + (nX ? 16 : 0) + (pY ? 8 : 0) + (nY ? 4 : 0) + (pZ ? 2 : 0) + (nZ ? 1 : 0); int count = 0 + (pX ? 1 : 0) + (nX ? 1 : 0) + (pY ? 1 : 0) + (nY ? 1 : 0) + (pZ ? 1 : 0) + (nZ ? 1 : 0); - int m = rectify(world.getBlockMetadata(x, y, z)); + int meta = world.getBlockMetadata(x, y, z); + int m = rectify(meta); if((mask & 0b001111) == 0 && mask > 0) { return (side == 4 || side == 5) ? iconEnd[m] : iconStraight[m]; @@ -112,10 +113,10 @@ public class FluidDuctBox extends FluidDuctBase implements IBlockMulti, ILookOve if(nX && nZ) return side == 0 ? iconCurveTL[m] : iconCurveTL[m]; if(nX && pZ) return side == 0 ? iconCurveBL[m] : iconCurveBL[m]; - return iconJunction[m]; + return iconJunction[m][meta / 3]; } - return iconJunction[m]; + return iconJunction[m][meta / 3]; } @SideOnly(Side.CLIENT) diff --git a/src/main/java/com/hbm/blocks/network/FluidDuctBoxExhaust.java b/src/main/java/com/hbm/blocks/network/FluidDuctBoxExhaust.java index 42a24fe85..41a081993 100644 --- a/src/main/java/com/hbm/blocks/network/FluidDuctBoxExhaust.java +++ b/src/main/java/com/hbm/blocks/network/FluidDuctBoxExhaust.java @@ -46,7 +46,7 @@ public class FluidDuctBoxExhaust extends FluidDuctBox { iconCurveTR = new IIcon[1]; iconCurveBL = new IIcon[1]; iconCurveBR = new IIcon[1]; - iconJunction = new IIcon[1]; + iconJunction = new IIcon[1][5]; iconStraight[0] = iconRegister.registerIcon(RefStrings.MODID + ":boxduct_exhaust_straight"); iconEnd[0] = iconRegister.registerIcon(RefStrings.MODID + ":boxduct_exhaust_end"); @@ -54,7 +54,7 @@ public class FluidDuctBoxExhaust extends FluidDuctBox { iconCurveTR[0] = iconRegister.registerIcon(RefStrings.MODID + ":boxduct_exhaust_curve_tr"); iconCurveBL[0] = iconRegister.registerIcon(RefStrings.MODID + ":boxduct_exhaust_curve_bl"); iconCurveBR[0] = iconRegister.registerIcon(RefStrings.MODID + ":boxduct_exhaust_curve_br"); - iconJunction[0] = iconRegister.registerIcon(RefStrings.MODID + ":boxduct_exhaust_junction"); + for(int i = 0; i < 5; i++) iconJunction[0][i] = iconRegister.registerIcon(RefStrings.MODID + ":boxduct_exhaust_junction_" + i); } public boolean canConnectTo(IBlockAccess world, int x, int y, int z, ForgeDirection dir, TileEntity tile) { diff --git a/src/main/java/com/hbm/handler/radiation/ChunkRadiationHandlerPRISM.java b/src/main/java/com/hbm/handler/radiation/ChunkRadiationHandlerPRISM.java index 87a1f6cd7..bed495862 100644 --- a/src/main/java/com/hbm/handler/radiation/ChunkRadiationHandlerPRISM.java +++ b/src/main/java/com/hbm/handler/radiation/ChunkRadiationHandlerPRISM.java @@ -11,8 +11,10 @@ import net.minecraft.block.material.Material; import net.minecraft.util.MathHelper; import net.minecraft.world.ChunkCoordIntPair; import net.minecraft.world.World; +import net.minecraft.world.WorldServer; import net.minecraft.world.chunk.Chunk; import net.minecraft.world.chunk.storage.ExtendedBlockStorage; +import net.minecraftforge.common.DimensionManager; import net.minecraftforge.common.util.ForgeDirection; import net.minecraftforge.event.world.ChunkDataEvent; import net.minecraftforge.event.world.ChunkEvent; @@ -176,9 +178,10 @@ public class ChunkRadiationHandlerPRISM extends ChunkRadiationHandler { cycles++; - for(Entry entries : perWorld.entrySet()) { - World world = entries.getKey(); - RadPerWorld system = entries.getValue(); + for(WorldServer world : DimensionManager.getWorlds()) { //only updates loaded worlds + + RadPerWorld system = perWorld.get(world); + if(system == null) continue; int rebuildAllowance = 25; diff --git a/src/main/resources/assets/hbm/textures/blocks/boxduct_copper.png b/src/main/resources/assets/hbm/textures/blocks/boxduct_copper.png index 258a60867593a8bb5b8286f8cb9f639e68fd43d1..7c5cd06f89ec19d51b905a68f9ed55a84ed180f2 100644 GIT binary patch literal 2534 zcmV;Keo!j%kP@0ouv8&PyhN2kKvh&B z0Y!o;FHsaxXdm)Y0a{9*C=#Fm4}C!jqKFECswi0yY91B|DnVCWMIb0dZD^G2G@BjY z?E2q3=HdE!?Xf-f>`am#X*3?&=bq2U_nz;&_f7+`Eu4Kk(hMD%-iBrvP;~>E(S~Jq zVN(;9X~LpiSSE!{O?>fJ|7jp)+x2hq2Ewq1Fz6u&LIi&N@%*jhAVe7S5QaT$hCTG# zcKsU*XCIHkum?qxbBzwN!1EEt4GBUML=tQJ+U6P>M1>$UA!vq16bWI06^1q2&4%?)7uDw5F2+sU>A(3dH@^;K@b7}2oXROr8>B|mK>|P z4nhP7nqeUDw*UZu)~*H-NEQM=1|SL`sx~-ycP;Z<(+v<&fS~F|(op7xicI)~WB`cT zWO;CNEq6}k05qeG!1D_o2W5f~A@L)U2ytRZaqwj5H(AhHaiC?Ki^ zQJaJ~v4f>F2tYg!#B)F-2l~tm7S0+`zaFUTPecJ1PtQd;Jy6H^P}{B^NZKjW0|T8> zMP@sCAZ-KnKwk)YSu}?bgu)Wm*8Jrw0aE zr5-5K0BNhz164Lq4-9(p1i%12P{&I3K-H5c07~>gT`SZBoa<`=D9{7LSWXW_LH(%} zfSev6qA-*{*8>TsUpze*X}S(o*P-e0>{i!dQ8t^ks0o`=Sd_w{X2R#A`af_sOpaQu zCYr4l`v?MB0zr!qv;=~tASBmXttMK{Mh?Kpf}|-3ETAZ&B}!;XGFpPF3P;O4+1A!En@<8`e) z&4${b;4c5T;5uXs8DPB5ii}(t+>b{A*CAu+156J{sd3IaTIjjSJ5Pc;E_}~JZ!^GH zDk0}}QI=uRy9hilo`$>0kW0?FEO_9#@GT#k;{d>UeL=sJSuNLhP8Y70_cjCgmY-iO z?}Z^Yg8-Ypk4@jhrsrbQbJ(}A$&g%;K^6s%8P`GtN}3{zxL$=kwZ;ZASeZuI&o>;qEt;cV9d-W=T^Qd zN3$pAGePU>fwVO)o}P;wYC_gj5Lt#ONwq0;`Hep%PyV}SJ{}P%_U{AF{rEXimchX{ zuADm-nICkZXe#FBFQL=vz+ZT=kXV{W&Y;ujVEVtW!Cv3M^{dOtlhf7iPs@E>#3vj zHZ>t>3Uu?IIH+_>DRm~ifx~SV&iY+=whd8cPbOT@r1J*7a1AL z%geZY`Et&mpHJ%no6@)sq@0(Qmhj9WukgwF^~YjLwP;*|Q+nXhjYS;X?_%RlRu4?x z`U#E}=>dnDmCiiv&CB0o!Ce<&{Ncp1a{LR?FnZw0SN_3DF#xQ*J|D50>p6$6n`1Qq zSbX7$sLt;BiJ$*1%Z9Tj=NtVC492e6k_852o;+=J^+1L}`2lCOH(z=x>Tfu0gLwbg z%U2ozaP|DD!Z!HzwB?pMs`$K)mH8K0?rhb1e=Ptd{*?g!`0Qt*)%S0J-d@d#3C(y2 z#;!eBdHqv4B{YgP-hAn)h_CmrzJCMigjy*k%+AeZrS#L^{(T0_pTG0@sE!g!09-wP zD&p(?H{W>&>V$@mocb9$oeuPWy;`V*(1>zt#eBcu_Vw#fCnie42R<9Z++X1Hdr_NA z(!Ny@iaLaU7Z|(t44ftN3~>L(m2<};zVEm9;G@v=9f@)&nqu1P#E9_Wrz5H}kM@)oT!?%c1(-wDeutXzCCO4I3qul@M` wmg4(m4;(-#7x>nChR^Snm1dxy&+nD}AFYqz_xv2M?EnA(07*qoM6N<$g1rp1a{vGU delta 1668 zcmV-~27CGD6Nn9v7k@wq1^@s6dyaLk00004b3#c}2nYxWd=hRZ6D^3q?I%y zYfM9F4-C?1?z!K&-`sn@Gou0#)=!<-Uu!hj-rS&9sUfTiMx}~$+9=mSI&F>}zmM(B z4R+tZ##evyw*mv0m9NJgwAx)>dF>5^X(5!2-VHFiKGJpZyDrLgdF8b?P#qW5@i>TC z`GxgUC-z(IE`Rqf9~$X24K2GvtK9{lUNx!Dm8a%P$7cJcPrYiQHy(b3-=6y!07i9g zst!K=&8Kj#G!x#*Gtc5&X>$3Gzt0ZdwgC`ji<4)bMSttUI>NMo0Dw{@TSV*9dA2t< zB3}P|VWF1F^Bg<*E=-HorSs^$N)4fG==CpVW#Z$#J%17&aQWRGmR66Za^jIE0xXNm z@9v-rtAgGQz#VR2WMo2ky^sgdjGx?II`+tKx@jS-3c69LVsw3QM~S7BOc-7`%R{l% ziEX|1Xm9|-vM?%Dbm_E_?wIHq9SriMspFNjTN;3LU8Jd_E7!sAP8JXb8x=9gQ?7N_c=21*8}VKE-lYu8R}}iff<$0xBZ|F+9h{b8PPY z%45Vl)pco{ev-Q%Xbdg0OaT#3f9t|Js^h{!X)2;@+sV3DoltmuUKYmm0y-|OOXtxZ zT%CW~cDpPen&FGa=Bm?!TnN+oZ{P|D)6qwiY& z)aCIDZx8u_S^1xQHT-`D;xBJL`nmmEspp?Pcd-zUyk0fg{pcn|VNld{wD?muD2o1h zQ8&<{^I+#4TJ7$zCA*b+9z&EZ)*20p!eHs}9Lu!@mJi>-O6?FUiwoSfSYu`JFn87O zWc5gm)ulRtlAJtq7E!kPw_sKX(|=-nb0ZpgiIv(ySO0mPK>0XV znh4X%Z%Tz_(W}(LK)Of`?n{qADSEz)=E-fyKwQ`3d!HISazj1eC-xz^1;lk-(+xC3 zqz9KCJ*5bgB=#Y>1;lkdobBns10@NRM^E{QpU5pBuIrjGC<>7tTzUjj5r6nH@e{cP zBz1jY4onW-p98U<$h`_w*X7vp`=U)oqz3n;N8pEZpmF+1)NRQ?#|^!Jc_&)3&ch(# zgp1OyWE9+^=ZE`%>KqUdzX84W_Fu;ai?46|{P`gPyYFAayk~_Ec3T9>r{{-h4n_C` zgXg|aPf1>V;TcrN8+bgoJAa9@=~Ze7uZQ6UL(lj1==zOze>;w=+WM(V|NTJqzv%ry z?l}v*sWF}#7C%hd3KJj97+aAwn#lHdV@bq=XZ(~yc O00008MLXsiB}wgAg6F4U{J9L+1DpE!GQH;q_tj;i5%EID2t!9JEAAc9T+5YAM2p4dj=Ires zB146=2_o;~=RJ(p^m2{Wn!Wu)Y)4}|UB~b?UoYR*;*eUU%(!K;gx2pKwKzn`vSRJy z7qagsoF42vj?)AH=Y$Lu*I##OH5*J%S4ZM*mJG(u38@sPXKkL(%#PK05KuTFLRFl2 z6}moUM^-3}wR1mK*o zT4SV#k^kWlon1LMVRKFW{Rie&>UXZ`(SX7U+tGt}P?rAq0fj5QnyY@gX`eF{1}v?A zCYr2}TwPG|1B4&YH-^47^o?Qh-3HHIyyWNc5tqMGZXMd^crNkDe&b*4Z{hzzE#Nx< O0000xT?l^&%E+DUz0*Z8v`i>Qfx>e(#F8+ z+xrCIX#}ViR0<-B>q35#{^y0|4h2_W`zBL=@w^NAd{(;Og5DnI!iqwFc=kCWYp#gHfs3oOh7E1_x~nR{;Pi{Dnw+=s^krk?VkSPL98jVuMP#P#91wrL_;i?wFxcAJLt ft~(CczfI#0OqLKgD;uw|00000NkvXXu0mjfmdu#6 delta 396 zcmV;70dxNN0=5H?G=FVLL_t(Ijm49(N<%Rig}+L2Tkox)bn+ck1gDOLZZ7T$I_W4l z`vN|IPvBHXp#>K=2c^(DxO5VsAk{%gZf@>PTOHa6YHfA$K$hfuCkOH;$5^$!%3HZw zrPFRQj7rEbB8ZA)vBsI0EY_^8uhMBZd3x-!bAFox5I&%%Eq{&6D`X)=I)$(U0^27u zhQ2j8V`yAn;Sz&OQjd|V?N#1-+Oo2|#9!1?2|aC@tL`2k=R*L3;=-?1`RD}CiB`Ra zEQG)SfPAzt`}XS#I_)O15F&M z2%;i^?SuJl%70I35~QP75?QRt%mjL@RI7>mo)gZ*^zF|9BlGtV&xz5b87NH6Ap6q9 zb93d*E!>O-UTLgIW5vq$A)XVhdJUHtSj_(_B-83+4qRdoPmkU4Y%j5~e@y&vPxtO- qBJ9tbXQw>t6qlsr{Nca-#&_bC_`}XmB8C6}002ovP6b4+LSTaJO1-uK diff --git a/src/main/resources/assets/hbm/textures/blocks/boxduct_copper_curve_tl.png b/src/main/resources/assets/hbm/textures/blocks/boxduct_copper_curve_tl.png index 9ce5b34667712fba6b56f244a82145e6d104f073..2424e7f1547203299aabf8d32d35cb2c5f6afd54 100644 GIT binary patch delta 275 zcmV+u0qp*s1HA%}Gk*Z|Nkl-*;f0Imy2 z2a1CTA^w(^eVlT^(pmU76wmXJ6n4obCN8#gjFu@^+s*uUUUv7g58pmt~@kFh! zAwlQ3SvmxDNYFWEOYId(8BEYPZf30y%08H&am;3Doj4}w9Cu4N(?L9k1f4teg@5~v ZA3Yy!%@UyrgA4!w002ovPDHLkV1jnjeOmwk delta 372 zcmV-)0gL{<0-ghqGk*b9NklAcdC6UxyFx)c96D6|0FF{z-5gx} zB#tg_jv{pMV+eu>#lgj`LKO<-94t5~;$Us;q~0Kis)TWs>|=->4Y40XlExZox5M=9 zmGpf=5-WtP==sV0_8GO>GQZ7J?;bzPm;%lTsWdM)=cL`vpZMoEC#2T&A0An)Hx|YK z&IzG(@nF?b0d3BSKx=|1CXCAkI47(zSS83pzf^#8;=3e1He4zd;GD>f!AcJ+OL?3V z`Pj@G)^DFJ9#A-uf0}s@{485Mpm5&t&c-Z>LRR9i)D?Qq?<7%(=QjTBH+}(#2fi1s SyBI?0AwT+w%L~Xl&0o=;7{q@4RQ_JarKU`&Cr1=bpDc^LEZYi>h-s^%oEZpX5|OK)Z|gUwFAIaHPZEylSf%=kgmt1(44FwHLoYZeR>-z z*v9Z9AcfOr08-f=dXPdu)KDJPo&q*r#DnT;F&_8UI|wIa$hcpZlP00000NkvXXu0mjfdL^VJ delta 438 zcmV;n0ZIOZ1KtdUwHVvW)oZwxbQ2*wbsAymI=fAA#&5P!8nH;uXb^d;r-n9m>I zBXxpGQhY23W)m+XcAq?>JRbA*^@|!K>OZ`FJ}oReSFdp6<}D_pA>C`+s3fD6X1F59 zmpQ)3>26~H2^2$Lpq%;nshQgq%9S_{pZx2I2iPiu?FUi zV69e?0WkgahJVRuh>SI2k!&GD4vTy(tkUdv|Kse8niEnd2s;PUY@m{CWhUJMVdn^y zq$oQB(-1pdg#nbCqwEaf%K~ryPP?KxRn3WDN@jM|z?bXaq~?S#3xY8aFTrazFDD4b zu+h77kFb=$mHDN$v-g;q69AHMDYn$rN022l-4394PIYtL&Xh-wgNxPOujV|RCZ^CZ$Rg%Q`jmAHEpL+y037rk!M5Nz9;wx%wQ>b zLH5?7lra4oQN6|thYIVSwqM`RzJGuJMotN159C}BV+T|#_#Z#dfBpwNPZK#sa*UW^ zAkPKauLJ72|9=C=i8)4cir5#|b%3$9s(ljdB0N!2WR4Lt9LQ-#g7>RsRj^BNjuZ1# zcM#mM?qKu|)e5aXseK7vHAsokyE-6vhf;z$Tvw|u!SPg);9PZK^d3Bj2AAM@ zbs_j;y$8X2M4EcTHlM3dCB^N`8$3nklvo~fy@``|TxUr`t2MztkW(VBR-G){da=Se zMdmQ`SQd7tP<(p#`pFCyV-J{NP2+GNxMNMDa|C}RxSGy4@4x(=#!?naUdXwS=e5#& kUgtu|3#BYPmSs!hA7E>4``Kjeq5uE@07*qoM6N<$f_J&31m^^hGk*deNklIHCf8Ze zP+HjAS!zLNNsJW!4cdz#F~r)O$ys1=jYMNa8WX)8cIU^Q#qNO=-XxRBOWtSZ&G)@; zi)QWb^rvz`BNL6(8j)y})>vckg~1tvD-7GO(YeO5X7@nC?a_oM?w)darp9? zvq?cD7c~9BfJiD-pV5DD;d3&CDyykY~0M)SnU#=WqbDpazP_x zq8X2d&C6|i*?%HJwTYD?R&8S0oJt{7n{PjU5}YSLIYuU$NNP=$W_6;Fb75~wf^$^f zHacm9NHkKX7k{4%TT5`3%6p_v5k){Ktx;)*SSVs8=fk$7a*p6ED(#>OkFdsI6Va$W z9}dnETuJ3THlJXPLDWMM*R7IrK5R>Zbp&s5CdU^B;eU+5%GMPP{tsVjVDkyi7$R2~ zZf|WiLn7zG-j)PkYcP296jvC8J2#9+L*ita_@d8sQY~0hwzCafQu%rg+_|B(cmK|` zo3=@A-EBnjRK6~=zQhy$jlHLGmaH9fmY1|P zWQteCXNpg&*}HuT00MyR^|g`)I=_1kf?=;)zJ4T}#1|y9DQAPzxu*UoCYen+JUV7| zc?s(}0wlcOU-R<#z>3(pfchPP>j>6G0>Jokvd|20HM!wUiwY14#)3b7>s{e3I_0sg5KLIa0jV+5%{FVR!002ovPDHLkV1l7SlQjSU diff --git a/src/main/resources/assets/hbm/textures/blocks/boxduct_copper_junction_0.png b/src/main/resources/assets/hbm/textures/blocks/boxduct_copper_junction_0.png new file mode 100644 index 0000000000000000000000000000000000000000..ec1fc103ccc09a631828e966418c0bd7424f5a39 GIT binary patch literal 511 zcmVL5I3GbHLGaGhU`N1&XGGu;pXIS zPT?Gt2(^?{Qc{ahiO@*N>E(3<5CN>ujyr&vF(jEG%`y^W`pB~WY{-pgsWB{`tfJ`Z zeAzWpVv3x^46rq%nISQ@hpl1u*Cna7RPvMU#}CX3=LlX&jA6NY$8NWyegCS5jU~0i zZY=T11-spj2Vd6&?;AZh?FT8mEn)LBY zLZh_aQ;Q553==l_yr=S*Z@njYr4k`ppB;A(pFX2-_a}i`)!wQ>?Wygda!^I9n&~rr zd%Nmd?UfCx(_wuScnKVDO04eP{Awg1g+Eq!|iDHc4lY2vzWcRoJtlRJ3RQjdGmeW*W<)@ zu(LJo8$)gi`lcW^hRRyTwxqHpV{56b<<8Uhy&037EFffplmeM{k)?~X6bP9h#1g{1 z(yRMdrZQ8cS%y?9MwTHnMXD4sTjWxuSiig11Lz&>Y)yqsus=rhbB)xBG*d{WBditT zM3Gc$D*KZ!gLkxHg6JEAl!E%#7^xMP9zJI{93tL4Ce<3LG^x@g8`}(rL)JdMAb3x1 zRtcdc$xT6C6i5|s9t;NT@9!_cQt5d!KyeP;`f#{neilk!O=RUvW!r5gw)tc+| z2d-WA93MG?cbGG4gr-I0#zeJeg6V(ZrmhLDrg1f`cQnqC7pnx{AS!FSkww8ygM+JS z>exY5j$#L6TOw0Is%C1R2G>yo?-|>Y(6l6#Evd?KKJR2>o3HD){()C+?$T~PAh?>~ z990?JnM8YzI+HA>@b}HLeA7*#vLnXUMh%2WqQkW2>hU2L&pVEfTokN(^UAkJY4e-6#nj*H#@VFWcOB!fLKR@X>5X)LC{XpS}1ncSlUX8 zbask=!NN|EfK5tC6^xaFof2G(mmSUA&g@%q7JIjs%Q`U3o5y_L``(-PdbqR>cDE-c zNf9S0Op?G^i?J=>Y=N=0*m|+wyZF9;nSe-uO9r4=yO zU}jJVpip)Q7UX<*dS^mPfs_J85hzlSN`a!ePb!7g2RkjUcd)xXArc_1aq|5K;-wg* zbOY83;sS}(8qWSfkspK063jJ(Nzx|A*uefe0V$2^PhKO>bHrcXKq`&?<`8+Fn>5887ADhi1ES`761SM07*qoM6N<$ Ef@xzKasU7T literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/blocks/boxduct_copper_junction_3.png b/src/main/resources/assets/hbm/textures/blocks/boxduct_copper_junction_3.png new file mode 100644 index 0000000000000000000000000000000000000000..02c08f0fc9f1c1e5f48c8fba65441fefa3ab2243 GIT binary patch literal 509 zcmV>lX$rj`%jr25se)GL~^9JXCNl&Mrv+iN&2?ZJ1cpCDRwc#Jycs%6$zo&pqJo2x|7q7 z4=z@-43k;%@dJ#_5SwALjK3E%Gz5zMF#u7dGbqXuNeyPW2Y|8b zn=^Kvz2Wz4#=-PE8a(R#wSh>2hDhS-8Zil~ZMU$-wi%PtQznxMuMY#!do+05<-8+s zR~^Bku2u%x8EoYIwE4;7!$9;6ZSX|zan*eL4P0Fzl3dq$^zdLK=k8D&Jh9m((56AP zy<5iV*W+b}8_*T@8ec=;#m8^kW$gPLzdpZP7Nar6{up;T$5nIO<(wyPKmA`X+(*5= zpbJM7K_uy3d*RTg={4vj(Aah(#G80k=G*!Q3mo9^a1^;q00000NkvXXu0mjfJsjbQ literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/blocks/boxduct_copper_junction_4.png b/src/main/resources/assets/hbm/textures/blocks/boxduct_copper_junction_4.png new file mode 100644 index 0000000000000000000000000000000000000000..6d74263eceedabc92162a31da9f695473454d291 GIT binary patch literal 412 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 QWB>pF07*qoM6N<$g5|652LJ#7 delta 1421 zcmV;81#Lnk>%LG2r0-0Ua7BB^^Bkv}MkeAtXx&hivUqn!g|&I%nu$L6>YH zoeoUEV@U`EYbl8@woaD89s0fZNwR*~%18M4z6S&nzUS_F-+$BH`2&bw)vJk4({Ouxi%zEl0I1b!SX^Ap z%@so6;^G3eT7M19vMhZ3_z?i`^y$-F9W)vZIF6%uJ3BjY90xys{K(|?dOZMuuIt#@ z*#Wa{8@jHm2Bv9dcG7OQ!8unvdVcZZMJi7Sq3(5EN4wnyt5&PHzP=7M%*urC`v~%G zZf;Po*HbwZIl(Xt+}zxNRVo!|nl?em%EVwWP&|6$lYbD5oS+7*QTO5QC5JKS1n>QeyloFO@ zVQp*uHXRF~{)?EG5P#LJzYO1Pn&SO((Sr#0}!SV4iTCG;7 zqgnYOKk)M9OK{Fnuh-S~+UxZogg~#?!}9VnIDhA0jK%taynNSnl^>Y1EK8Nu%gf8u zl6rZ0iKV3_Y;A3UcvROnHa2qc8T*s;L_d%Q+Fob%13{$vfj9)W*IE2P6q$Y?h`7Qs zjUR|ZEhb4-< zR;z(?4gi>+p9fY z6nlGn*xlVl{)L+WUDv@m$Nc;}G)=?G%8D8=_)gIM)zuYz--qKk&~?4IDK!iO)oK-t zu~4*emy{Bo=fU@VaL!>EM)3?#T`!l*69R&f2Umda`yd}uSOC@asDS9;!DZ*aDecFv>G(>p+Z;=wXN0x0^p!Gi)GECW(Xtgf!A zWf+|E=-|OAuq+Ew%Hl7flu~&CP1A67bp_A!LIXyx;cy7YaV7!044u|l4AHMHnG=Ca}?uWx60O0ueI4t1y_EtHYYPE{NV1U735Gp40 z``z8063}Y3O08B4&1Q4__U+q$-}iyS?*QTCa@84${G$dei zb8~!ue~+(Uzrt}GeE9Gom2h-)1jli(zrT+sPoB&iIf3cAj{E!j+@IR09e;q_$NEeG z0Py9@mt5cZzJ2?KU%!4mn1H#olW`V`aFu{*&vZc);VJ=-o`GqOWKk61Dgjyl6{MjE zR|$CZ3{3N>K8hmT2?0k(N7&xp&LkWh9N_)?_YWq3ML#moCXXD)-xHq)c zNGaLvc1ZP*kyI6BS>7eC>l%QMk2%TIA{V*hL8-d{#{9LOWhG_dk*du3P$n!^t2f0> z)4cjG)0kzJBa0$uk)%{rbyKXhzRDG4#W+pKSSG|t%Ib!L|2tm*dCoKq$ityyjPu#T zTTp;u>@n6MoqunM|5?sUyfqSlHJZ*jWamBU&nH3%vz^7E0mKzx>yK=oe<7WBES4$# z*@aT-RbdE$sIyl9V+|DGV}91dkz=^dYpv1ymZ)nzPqo9H(pf+dg6R~^ zI_P|h{QB*?fIrtLr9=op6rBaWX6!vv-_mP~^#jg1yc+lKca6URU~c6~9y&_u00000 LNkvXXu0mjfqRGXJ delta 352 zcmV-m0iXWM1B(NYG=D-#L_t(Ijm48OiUKhdhCi1;5+$Nmc9y~nUcu6K3c*`=1kd1Y z<_cN`rm?gUL|Y${Oyw548D!PPt@f`%lJEat9xpAvwOXxi)9DoNJ;ULUPN#!&4iVvc zy&@uv$78(roK7d!>vao2C4=2=$9})Z7{lRkKx>V)mJkAUU4IioV6)i}V8Dprb3hzCm(dbuL zM4ENtl(m-Q@yKK{c`G?7aY}35bo`yshxa0VJ-eKx_S0^3MuBVvH;n3-UaF+N@VfoQg3vb1)bT{$x;9)mH^& yS)!DpC<^jCe+d;u!E82b49c>kl@9;yH+}-v($;i@{IH||0000)L0M{B zQYFQfReK-mWLw*q40c}xr+Z$#;_f1*D9duZ%NN`%Q;H%Z&oiqia~C(^8- z4}oT{|0*hq;=DppQ2+Qw9|9sx5<>9sMqti~ZyxazCw$+bv^o1&(=_jLgE1UAp_Sxd z&I@htutO8uTdtu@2o5mHLpXUFYj z?WeA5;B^w)XE!;p?o_ZC9MK_$nKnu(vDPwJhd6FkdH*nGSAi#=QoM{r@%K})QVOj# iT5F6kSZn{^HvR%GSOA2uV)NSo00000e$L|>34$BG<@E;rx~6d-W{Iy#P$GjI~x zT!GFKjZ2y|p#!YMjwsk-*GMdgu+@&_#(!q~itmIUm1TLG&1M*5D2jqC%g|cmoTF`9 zoO4Vj6O1u5O~YohNdQDFu-0-o97xlYx~`E@qLjjWPv7@=?|<3tc7zZJA;cI-S(Z0z zEz{|gzvy&2VXbAfTCGUa6o5R>KRWC6nwS$+Rox2!wAO>K@ArF*G2aD6QBc?QgCWoJ zw*}Yhm6#J*mLa8lG7XV*U5Atsp|wUS_0sf?r0Y7AQV8c9-h0O5@k`_7a(Q_lbE0iq z`o4dQ>zsSKi&MEf!H|BF#N22;pFeEY5Q%e+#bQCsiK?nTE{G&?4?+ltrfKd4%jJ^e s@%XeCQE|TAZaJUNgb+yL@ZWyp7Y%si|Nbzgng9R*07*qoM6N<$f@HO*;s5{u diff --git a/src/main/resources/assets/hbm/textures/blocks/boxduct_exhaust_curve_tl.png b/src/main/resources/assets/hbm/textures/blocks/boxduct_exhaust_curve_tl.png index 6a7379597d9b302c5f402eef52eb910710d8fc38..f309e8de54da7dda2d0a8b03fefe915250710ce9 100644 GIT binary patch delta 400 zcmV;B0dM~50=ff`G=FhPL_t(Ijm4AAZks?9g+Igqh5=^4R@zNp$X#{YXY97iK1`%; z+5|k9nc>I8bkQVIqPlTcJ-d6a&Zl#wdjlTz`P0W$W|Bf?$RZ~!cI+}iZym$n@y=mw zj~_?8vwZpbEdUTtfH1GwXicURN^6u-Xst<%!QX#p6Gu#8%73~V=5c+p5$yN-b-Ue? z=Q(veQ%++kX2U!JQ3Z|BCPXdav+fP z@5yYg0(4!+U@c;Bj;@WE!tCn!0LB>Ze%>Rjvz(HGvg_V^)-e4l@TxxxVdsoxpjX@AJQX<1eMsz(HoU`s@Gz00{s|MNUMnLSTZpT*%%4 delta 319 zcmV-F0l@yc1L^{hG=CvUL_t(Ijm48eio+lng};EHrq~v8fb50zGJ)QrSL!X&Gh`)% zT%fB$wvnJ&wTq4}24-kxGY{Md-}CwVEcjB}woj!LN-4C~NGZ`;6GC8JS3(HH81w47 zt^g3pz*@`Ya$%Y#oOA4UJB%@S?^%`w?>*=9nQ5B1Uaxdr2Y*1(w(Zke%kg;RbUNXj zqiGt9G3@ty=6S|@&pgjmRfTho5CY>kVy#6erSi#r-&5B$Kk0tIBg8v&;)GI)VHj}E z{R)3q;)K?k$KyfMG#|qNi4#)FJg_ZFoX}e5fo)A-j6sAD@ZM9F-DaU#Z;dyq=0G=FtTL_t(Ijm48oa+^RDMGv^ad;~PeRd!Vd+K=|2)oLS2Mu{cF zr$54&pbR8zISS>>a%X+3&h7i^bvs zz#lB)F%2oZi0%q_70HKyyE~T`Hz3Ob0Q^A{a^^&M?-52ZUC*orKPC6Cot$68SHdVp zEKm4D_m98Os9J$PBcx! zQQrpCbv-*0z{H8VuGu~Bag+Bs=Wl*j+qUeU_vZ%V*fVXuX_`;rDPSD?bAwJ<9x~ou y*}q6@O{eUofw7;?{HKgDjK<bzX2KI)9sekv<=k&0000U9VRXWw%-msqto3Jyz2ar zV6j+`W!cNl0L$eP=NwsGk*eTNklxeui$&% z6lgE%q9~d;aTD!|`k^RNyPFH!Lfi~6IN-%Mn1kU-c&goQcP@&8qA1vGHf%N<%Cf{- z%V{{^hJn8CaNhIx$2~VUHwl1v9&*kO$86(;4 zcIWMO%XD}^sFXBSXeALB7f6*7WR6k_r4(tJlBOwHmT`M~OI_E9pD#74s<30j4{zU+ zDTz{&AU33Fiq;yX6k6-$eRp?9RaL0jA+o$=Q!KpgGeQbQ_3l@)-~U=XE^EJegE5Bv$A1a?nh*oY*m8;! zuipK_JO@_Zk2Fp5J^anuC#eY`5W+;9BXOQ-ng-kUh<|=?m@gleQ~lqwbBSjcAU55~YEX#QR=WoOi@IDY?r0WNc#}i>b!ZGr>pOzukTDq=7 zJg2HG%kvVV*RT1hEUDy)Ca$p7K3?ict+iZVU%yOaUDw1Ik)bDc2N)~n+|Um_ZPT*f kx9rDA+qQIFx1{ka+ly>J9|fz>00000NkvXXt^-0~f>>8Q+yDRo delta 476 zcmV<20VDpg1%(8VGk*cRNklM!9yUOvNNj-(P)1@G6o{HN zumg6HmX^+C3JRo%hSXLRJ4WIb?bgd2O&rH0NrEwkrfD$7uzy~!sq32K@kmh=00eoS zKeH@DYYo6;G9e5@q9`JYqL+G%AP6YSl2A&?a=Aon&0?`Y2=ReFT7N&CPV9C&w%hF= z0j)KY$pj$;v)ODQjC<18RaN1=r><+Hl>8{Am`a$YX)w1=d>9G#$n`&iqauM_8}dSZfKb zwP>w}9#mC@bMA%kj;`yd>l$kpHym!+l(LT?fE?KId|| z5cJEm-|wIOm!3|iUzaIOQ?%CH?{^M|!|OJdWy$q=MM}x-cKf={=ks}p)}LRmc5sLx S1#`*(0000)Q diff --git a/src/main/resources/assets/hbm/textures/blocks/boxduct_exhaust_junction_0.png b/src/main/resources/assets/hbm/textures/blocks/boxduct_exhaust_junction_0.png new file mode 100644 index 0000000000000000000000000000000000000000..62714bdbba21e231d03061c2232a712c6b00b148 GIT binary patch literal 598 zcmV-c0;&CpP)rrGa|Xi#O4NiNVsAn0=YqG1>J{vsP#!1H)LPT;_Zg4JeEs~9#d1Nft?^aVt}mRPo^pJAd@FqOyp%0$ zu_SJW`0Y5VpL}+9#?H>pt*}yxZnw++{yxSS<_>fi;WwNA1n$bLl)_qzF$QA{&N-ZO z#O*eI&=9rT>%c`()N3n_@vSxgxxFrIt>xD|#ZR-GuJYH0t+iNdan51V6yIbSJ|04d zwcu4;6b0w!7x-zGqC<%;4gG$fD2ncc4-O94+uN%J%F?m%@X52Ir(2J>*Xi*6=LN&z zknQd5TQes~!f-gmTFY!UBVSZBk|d$wZy=Op;pV)2@to;&dR^lU!-}F{GMUubS6}G? zynFkmT9!-FG$S_-s*Hq)$07*qoM6N<$f+7(b*8l(j literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/blocks/boxduct_exhaust_junction_1.png b/src/main/resources/assets/hbm/textures/blocks/boxduct_exhaust_junction_1.png new file mode 100644 index 0000000000000000000000000000000000000000..718ff2d9ec1078794eb40202524f2fafab3d00fe GIT binary patch literal 697 zcmV;q0!ICbP)loD z8Vm-E$78OquW`5HO{pqRWUaw_*P!RHF^01AJU*6`RY_S@_|lQjmjugV#k>leQ9Xx^F}P4+ ztzosYIPaOQ9+?%Mz!U{pmNj@V7?7qZ)>>?K^8-7_-rgQ>{(6gZ9;jK|T(i8L5KQKl zJkOgY`Sshz80=4MjA`nb17|G{Zq0h_iRSY;aU9d{_fbk=jA1w&a`*KgidBgVBAj!K zMkAC`IOq8HyJ0)Xm}TboDjy#o*VbB`a|CvdFUuc6sw1qmc<*t}HTV4dytR=9fWyPX zT5HV<6{2;Q?yEn^vWz^>G56oF&M>-PaB_0;d>W_IDY0Kt$~NnDh4+?avE(N6n1?&O fTQSSbMjHPE`A1vbK8y{J00000NkvXXu0mjf&kahZ literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/blocks/boxduct_exhaust_junction_2.png b/src/main/resources/assets/hbm/textures/blocks/boxduct_exhaust_junction_2.png new file mode 100644 index 0000000000000000000000000000000000000000..5422296f6648bd20de405bf520d70f8f977f0314 GIT binary patch literal 673 zcmV;S0$%-zP)8n|5QRTd{9934k}<3pxb{1+2w>bgg=;^7JJo5^q;uoO zPhr5F-@>JZClp=H{9OdIzRfo=K+hwf+S6O5rT*%)3{}$DxShQhm-ob{nr2~B}tMnPgAli zqby7I!3;Sm8HVAPfS=YmKR+MBFeC^9q9`H^L*%3EB5Q03-;uq{a9x+D%@^F+EdCCsDf488^!MD~-*akY^x!S%fWf7g;_8D1a|Vv3_n&d$ydLJ&m}2L}hd{`VDHYxaFlmSxQ1n7Nd= zU8k|uP=5T6z@OlI9^&Ai5$?JUtu;G;iY8$Hw5Kdf?9NcD2DfRqXsxNNLlF7|Q9z#O z#Bn^rd7g7}a)Q>HZQD^*6<@b|bkpGKw&io%QCbpK0actMQhE`(GgwOVXdXEYm`#d{qXZ6U0+`hUDsiZ z!5D+J7HciWm=QL{aCdj-{Pq(8uCA_zEXzpK6xTGgTa9si%Ce-cYc4M@|6C@e6t3$6 zkor&TOiOJXlu{_A{$8e{DA;XE&?$X9rD+>fr6@ML-v)dG*uEb@-W1#`^9{khVd~i{23g8@JjNJxW#oBImSr3tA8+9woy4b9>tE1X|6Nqq6pI3FI}}Cn rbb>TZ!DOt$E@f3xA$S{u%dHml-&((BcY%Huh=rWrCd$5VWum3kxlR zF3c^EQWCS_h#ht4IR!_~2@tANcC~x^K>>g-Pj8*K z7W4A?vu3-6Sa|qBNFo!ONHH7^Z}6S>Z(cR(;UlD!`@{Ks&e=(V2m{2O2yqY=W3| z9YC4_AcQ~&!E82TI-Syc`j~a?k^Y$j3B05F+M8l@CznxeI4Fc`G52j9V= z+$zXc=l?IzTC>|;6_@=}^51cOrsZ2RY-8Z2PS7pWcxDj0@9Pfx{^!0>At@)gn)Rn4x*tYE~ zDdhtIyhD(tDeAh0)*4DF1VI4KIgBw_*A>PXR8u zBnDKWA|a{{T`Ja&44v~2utzFF>Vm}3iYg6lmBe;pyVT#1?>)};*}44S>-S1l*+P;rl*Z*M;YKnJaCh`YY?}>v5~q!otErrqLqveIKn>3jk0qmoYm# zEA2~BD3{C7Y}>~9`8fc2%m<(==gO7Bt6k5Cj2wy&n5gCK9Dm2|*CB=LZ3xk@El?$LUAF z_x%I_KrRx#?*jnK_&noB&I7P4tDghD@8jg;B=gXqNDu(qwsW6NkDQD^Ym||Bme&C9 zm$w3n2H?6bW@l%i(K;-P1kkAaST9y8GD`wUDx|LAPWHa6A9n<830Yw@cZ}gp$eJj zdC)XXE(g-q>2%QTcA1~5sza4x0-&lYG-9Ro_4Qa)RVa#rQmK^a%ynHh=f3Zw+wBV3 za2WqjpFaIR*szpo=|46WfpWPFk)W8JorUYVFbt!gwVEbevZMMZ^nl|ytgO=CcDs#E zr<3>#i1mQ1f36;oFH)G`Jy2wPkr_n~qygmW0gYu1fWn4@RnCzW%WQF zfPs1dC?*yeJ&%8o3BSS`Wwq5bA+JBj+0s z>49MYWb}Z{$jL-{U|0YNJs>-Bva}u;1%RrmV4S|Xx*D6N3I4JyE0<1*&&Tz@bT(uF zG)=?Q)Kucqbv^SxP1B%hS_Z(Vf`qlC>pFB@hhZ2n3Oq6mgzAPhqW zYT^+X)mB$m<8rx-X0wS_tCffx4T_>ysZ>y{R-x-UNQaCKfOx&tYO%)C(VUu^Vi7P5 z0|y5OARRIh0G4I35!2N1*UZce``m0c5r!d1hfD;3<2Y>8A^>#tdOd_;h%gLMsZ zP18`VR$&+hTj!MRK@hO8(-lP#NQX=WfU2s{bsYx>2Z>IiC`#P(e#?LVO%ttFOL~K1b8}N!TU(P-ro5Wc0O0xa z=dtH`2*VJb=Lsp*G)+`06?T9B{{47mWhEiYu3Whyr3ZLZR##VJ&+~BY+BH_qWGS^? zuVZs_QvraNFJHzyXptV^+a>VI+S*!tc6NsO`FT8h_6&_i1NC~HbX|igzx3`CSy^dSAZe=>>zh7EfLKuc@Q-Wv1 z$B!SQ(P-fN_wTvjc|A}vO_MqQ{P{DtbHgxDE|+ol?p;=7NPhErU~g{^wOUOGzE-QT zmE<@MOw;TGNQX?+IW0x%oCm;1z;#_LEiDZMZ&?;h)9i0hkh4tZw9YAv01|pY7Ch4f zL?pv>&QmIYgdUIuPZd$4x71-fkD@5CKR`=u81SCwp+tp8)|oHKR2AFpHuGOxT*S=G zOy>FJsLY#93368*Smxs;Bz3)nL4B*!t*^5%kJ)OJd7TA`}S?W6q9pW zu@pHI9jEsQwzjrnnbULXoU!4`%8HWSU?5SEregq!k@I$Tb|$3<5^R`mWMg9^F52OE z_wHTBCvDr?+p)<1_3PIe-;5-io0}`-a~YeTpBMUzECYaczSG;U7Z(@OTXA{*0|C5w z^CsTk-_I2jrfFh#cQ>Pi#xZ4MVzys6uEA< zn@~at0Q7#Jb}kYV{K*%PJTKt=)7(P70Fruu8WJH7f`Hv09UUdagy_70mv?CyMkGW& zjErc%KaUmZ{_54M2*Z%ob;h@qETv zh7~`2_)u7gYPDJ{Iyp^u4x}pK%F2rJ`Sa(vTCL_Dy*_>VbYfL70|4mHP0{(kjPXgy z`%3{hJv}Yta~W$kn?iq)<%V--XD8`W>P)0A3I90C-j;O6AX&NBIq!$b|Ek$BM6B zy_$Ry=6&(y%a@pE!v_x@{FPFC>2=`J0pxN4CETR4eP{s3$Hxgi|6BGCvRA<29oB{* P00000NkvXXu0mjf7^?*1 delta 1388 zcmV-y1(W)X5%LO<7k@wq1^@s6dyaLk00004b3#c}2nYxWd}7=9|DX>+W#6>2J4aS#Woe}aNT9lLdN7QqgJi-Y3kBsw_PL05;n6a-hnDbQJm zT2UGlYa7xZQRp4K@A=Z0q_OdG`M&QyaA?}*Ip=+!oO9kMCx3un*xA|XE-o%YQ549s z48|BDkq9(RgRbk)G!1ieb5Ilo)oK-ohlc@}FeqQ34r;X;E-x=3NfMr(o}lYGZ_Q>C zx~}8$@{)hIVo-iyXJ@BdtJN?wGxMoaH@v>SqE@Q`0AjHiMn^|Ib2UxF^Yb%eu^5D0 zE{C(TGXTKI$bX2Z4zk%SR8{4?d_E6VRdIcN-Iv>FGynjMG34`k2*qL%k|gmPB9Tbn zPD-T`6h+}Y`aV59?aI?MjbBTWgi@&lL6&7aJw5f@*iVVKw>Ox1kB^T?r_-(+%ACL$ z!{g&41jZP2T}P|c>baqx5;U=>Gq?NAnG+;Q0%Ht9B!3dI4FGUg!W=*(5^=oOnmK`j z7HFM1!Kni?Pt&xXdE_Ml+8YE~mw`aQ@n$;-&Fh&uGsEj6AS16DK| z4ZiM)M}Obr@wn%HbX`ZORKifTTIC94vsui~&pVQ`*(@@d46d%OK)hzNiDIz`K@dFi z0dO9ldH>sLIMnZ1{cdmtVzC&nYKo$Kk}wnsVSRlas;Z(;D17Q@P=1deSXfwqq9{nG z(|mhvG#bz}4UI+vV`F1b6a|7H*!lsl{8p>Q{eQqvE|&vi3;<9rmt9M0xm-p(9>?nH zDu_pQJ(J0J;tRru=#GBC4Ya)u>Ickl^#gV=Z?A*+0W13Y0W<6h%UAq>9X$B~z`3w^ z^#e}uMw8?l?pj0X$u(`R}t=H>FrBa^B08p>jQLonl0MTd^(P;Eb{7R*QXf*nd zAK2K~=rYFm`lL^DIW>P43Wc6oJ1GCpSHr&w(8a;QLH8^5d~a_rK$*v4F+4mx002Z$ zL@*fq)aZBmyuH0etyb%`WM8T01jZN^7k?K40Et8bi9`b9mBuP*d1)?ZI6h$PHNrXb7o)!*=`Sso19Xg#3R8@r} zN&ZbKV+^t^b9t?Un_IixMyJz(VHkX#_zr+(yIla`aF}P`Znt^sbUJ*c_m?cx$jee&IUwL_Z%P`A0IoP^SK}Z04pmi-9g9~7Z(E!+7rOW#zyz%<_4#yr%+WD`}_N@grlP) zsH%#stu4&X&JLV8L7=k%uSack9{_%?;41)nr#m@0@pR7jTaCrcK6`(ARj*hUlw$_)hySt0+?QH?yLWW}00000 diff --git a/src/main/resources/assets/hbm/textures/blocks/boxduct_silver_curve_bl.png b/src/main/resources/assets/hbm/textures/blocks/boxduct_silver_curve_bl.png index cbfc0f89779f381ef29dd409f6b202002c9f0ab4..3f9efab8e592bb716b9fb417ea68ee7d294356b2 100644 GIT binary patch delta 269 zcmV+o0rLL*0=EK?Gk*Z?NklYZ!(zgaBqnj1kO?5CZ0ThKL~N3=w(H$8qccfD|xI6Si%`x~^E3 z1+`YxS|K7Rr96hJ>-+vpDdF{cp;g*NN(tn>M+gDl`zCYF8GitvKJwm!nZe9W$tv}c z_x^ooEy;I4jPa*~5JFS(qXRX^7@Lw+>LU^PcmtoH0H8i9r9ea;3x3-Y0H}{jDR9o= zIF6>|JHR=20j#w+&$B7{4zSi<03yP^?@h^f01;gPW6YnPvI2}T=(O-}zwrx#%D!eN Th1hZc0000VG0{jAyGk*ayNklJdDH zx9O?}a24n!iejN)NVd+xNhvdvjkOl% z9M)Pkn+?VoE|&|Z(m~gQBu5A8DGhSS*+- zYb{;Zk)|m^DaGM%;Cj7sKA%6D@Ao?Z!6&4YG);pshV^>=F*zvsgi?yOZP{+Olahmi zPe>_;8=sOqCQwQ}3AEPC=krO)V*;%;BD}Gb^4F$UMS-C=M0n$$nD34R480+ob0kSZ z9LJNA#{@}|FiZ2^QxpYRmi>8I?+A*bcoKv@ST2{73k2WHdrwtW2qDPxoGi;;n({nn kzuyl8RaFs%#ee&aU(r$AswS?o2><{907*qoM6N<$g8O!!>Hq)$ diff --git a/src/main/resources/assets/hbm/textures/blocks/boxduct_silver_curve_br.png b/src/main/resources/assets/hbm/textures/blocks/boxduct_silver_curve_br.png index a18dd32fce395c6c5f0aad1b6a093601924356a6..ecb91be52e86ae5daab36cc8cbbd61eb956da387 100644 GIT binary patch delta 272 zcmV+r0q_3w0=fc_Gk*Z_Nkl&2^<>ZI;fxodqNa-QPO5!$k zP8|secG=OVT~PRz_x>g#u-3vk2Wu@v1SuutoDpM0&iObm%c20l41*8?dhckhq1FnL zAc>qaN-3u`q`ddH5CZ0T#wQ|)5CV*dp!W^{aL!#e&|0JS4u4~$;vU{6#_%X3X_B#Tb8#k2*8v{7xyQ zQ*6|k7$Zt4&|1GWc_ldv#^y@rA4$fGG%2Oa29G2pp9wxuN(tMxp_BqOg8%j#zW_I! W`b)yHGQt1=00{s|MNUMnLSTZN4tgB` delta 330 zcmV-Q0k!_R0`vlqGk*aqNklk44ge}wPaHwTB`g4BtDQA?Hlq5T3RaJ zuoB7>Xh0MTv78hsa>bpIq9ft1x{+M0?HP@1ufjK+bB`>`;JrtZB#5F2)>;q|m>EQb z!{Gq$J^H@K>2y*6phX~rfTn3+jKMgLVCE&R*DIJAP17uIfq!z&Jwgab(-eQfG))L0 zK%LL$M_HDL;~4w>{#WGV@rYp@MYstWTwf6Y#c c|MnX{0WOgTClB6iNdN!<07*qoM6N<$f>S1!>i_@% diff --git a/src/main/resources/assets/hbm/textures/blocks/boxduct_silver_curve_tl.png b/src/main/resources/assets/hbm/textures/blocks/boxduct_silver_curve_tl.png index 304d273edacb2239ba07b4a853c3ab4b8362491c..9136999aa2550eeb2e41c19936e342fe67f0413b 100644 GIT binary patch delta 239 zcmV1pw7)GB#U?U+bA_vF`oI_udvSEh?o%j1jGM)&Sv@lq1HNH9$BeB`M1?+n}nd-9Q>P zj$@WV+qS!b^fEw7@~*)&O%#{Q<>{QmIhS>X+wF#PjzTv6?Ki#vo3X;bA7%_Y00000 LNkvXXu0mjf&zzB5 diff --git a/src/main/resources/assets/hbm/textures/blocks/boxduct_silver_curve_tr.png b/src/main/resources/assets/hbm/textures/blocks/boxduct_silver_curve_tr.png index 2db7357582442b8c68ebf2766d0fac8e38fe0fa3..704acd60ca54374d1820054c6a2c7f1529cfc02f 100644 GIT binary patch delta 288 zcmV+*0pI?M1Iq%CG=Bm~L_t(Ijm48ej)O1^MIR+9Qi;R5_v8jWL{G^AlDGvSbrv1Z z6oD9a^Q6d8WdH9(PQf>A+rH|$=5u-PNhy(YUakB6UH~`~XqpBQ!Fx{#0q;E`!sT)y zr9@R#oX=;RbChLiWfZsD?bY`^*XxxK0wS`A!!QtITtom>rGM{xoQN>bGe-#_08o}C z^E~6c_e|4ts8~dPTQ3TxX~KmN7{`(4^LfbGIGs+6av5Q m&c@^MAm>bB2O0nN8@~WlILuqv;U^RT00000eyMqiK%WXF+!h7NH6xB?P~pyL2Ya0ITB zW8?<3mbgJmB8mh@HU&s*v1>NVf484xjb;1IjAq6WKUyxA7o`+ZN}AR=hxh)@rfC`h zh~S{p>9AU@D2f7O3`!}q*3@;4bB=bq&0?{jC<@Xv4H(gSy??%xWyx?jWIP^YjA1ky zp|vJS60EhrWHP~f|L5Y}nog$#PGnhzbB^=*{8421 yodf3_Vz=Ajy?@!pTWvNQ4u`{c?ZV-|{l+hmR1C8forypI0000bl0IWVbAR0LcPOR6+O~z15=toy z!?3#~gn$qNbzNr#LI_OL1Suu9ZF>O_QD!(EkH6w{I_2{`&j=xah!8?}0d!rLS>FMq zaLyrwfDi)C=QF(b|0^h&opW%`!F!JwBZvsrTCmjZ^uE7}ACCu|bBHk_#t13p3qWg) zrfGHn@0d#kA%6s{>k6$kK8!KYT4$?%zPV&C0n!I!#+aQ|iTz!1YGRBL%d)^2^R1wC zAr<~CE?w9uV2oiH1_&Xt&#Bwq`z$*}j1lX)egjlh17l~UNYEz7so!dm<1IH&aq+!M=jB=Q4oK>z>%07*qoM6N<$ Ef`v-Hn*aa+ delta 453 zcmV;$0XqJ~1MdTnG=HW^L_t(IjdfE&&ayBNeHcQa4GUagG0K)(a18HY0!Q!+-hh*E zhMvHUCMGm4Sdb#^#&7Ze?T6^sH-c0Asc=&&+s(LZTKqYxqG=jSgI876D}PB6-0yb)03ifH5PZOX zxAAhhpznLE7-J~Q5&)2X0rk399foOyWL{9+hM=oBhPc>c@AR?>beGF3_hh4 zLI@B-KnOvWWeCIY4N(-i=j-(ftu>^Spp^crfOGE3TaxFPrU_bW7-L+YR<_&U1fnQ% z*{5l8&{{jEe1F^RrNF%GX`1kSKAnIu25}riDTS3%3d1nG2`tIW?8X>p@5&BG5CmWE zyv%L|>_GW;NS4{Zk^iiqC<IhXMEf8ImO#M64pK~Jth%&HNJS38gl}}tYte-Uf7m<%;NdG&o+_MS_POMTkJEf ze9x(Pp;WdsHn@v};dtSO_tv4IdwD&|8I+td*Rm$ed)}YcP#U{)9XCU^uB+0Ci5&qd zO)|CZ3dd&13M4NHxcY`6^shh5z3N-r{$@zEHST*~&vD9Sg48sxPt)UOuUHjdv24qe aeV>`dV|v1$Uv38Zox#)9&t;ucLK6T_V{fJa diff --git a/src/main/resources/assets/hbm/textures/blocks/boxduct_silver_junction_0.png b/src/main/resources/assets/hbm/textures/blocks/boxduct_silver_junction_0.png new file mode 100644 index 0000000000000000000000000000000000000000..b519a48da1497327baf679e020a433b2261df794 GIT binary patch literal 401 zcmV;C0dD?@P)?N!{Mqtk%2m#Ba z*qLH~;ZNLM{|7%mFieIw@8yL_48B)g*S)nC!*I?a#)y>CTQp5$0Kfpi`F!pHpsFem z(Ob^@VNFCh9*@SIX*4c>dqt+fyl5D`wN6G8~^ z-WTGKwApMBLO=)sA_8kIX4cx$(6%kE*XxhuAub|gfqb|7{f_l|{Ue!~v0N^(-|x|N z9aMGfVA?#byRIvtsxJZOTygLTSwu>9&S4f~{4+W4V~m)klt$zGl&q>qDLn=9Bl(1! zYY`a>82+Ty6VoA=WyjAyn*xrF2r-V_8#ut zDM&>qw39-UMZd*I@><{Hy}&R@$nQUsOvb}#lw~;xAz)2P31)^;YGQ}O!Ly7%7D&?+ zQc5IA0x2cpI7SpjU}g{z!Z3vIPY^hz-EKF8VTd3IF!pvnUWZ|b&1T~PfLE5~kftdf zj|Z|Wn;aq{5D|hPa2XI0?)N)huNUgNhHvj`BW$-@R8@uB?KXk(JV#YksHzHDYe*@f zwZ=>cfh0*>)a&(%%jGhGiOB71t)aC>k|Yp9{1+H!z|1I$VgeHp7K;Ve>oxkmhcO0H zN(dp~+t(fgpK#yz&WtfI#vqPkbX^CZnGr>igMNdx*3P$W3ueYlDFtSBrTPoDbNj(& zN+~o=8@%jFVUYZznDG|iU)Gk>eXXXMW+*bIE76nx)DmSryOqA2iw zzhR7VLeJ+DMC3AP+ZIZxudjSQp9iaM4;f=7>#;wbPTr&!0N{8$4xi0rU%P1JeP^0v@8PUZIERva5n8>7wf%qu{Cs z=t?LqG!c@3eyhyiTKEToc{1;1=4BFK5p`Y9LI?;UAf<#-3R-Jg=kq!E%#W4=d7dN7 zGDs;bb1=r1>AwO}N+M@jM*pX2!aUDE0$=5vPN$hMhB%JF7=zz`V#XK_ zhXe6~x~}Iu&mpD6^Z7(k6kv>ja}Lfq;y9-AIp=u2UI@bwN-1<*he!xPJ^PdP`#svW zMccOEoTDsD!q!@Bw_Ai^2xAOF?{=D|bV}1SxZm$og~!%fSZk4{DWsGTLLmAy%nJlT zfU2rUV7*?Wsw%wSZ#d`3+;JQcDW#Ak2>_5`p2#_eF@~0N4$e9BeUD)npp-(WwT4m( z!!QuJEK96bDeUr^*U!+ zMmOUP^WWp~`2WYGltLJWguP+D=Vkl|bX^By490Q9IF3Khc^Q9;1t^)r^Tav;0000< KMNUMnLSTZY8Ri%O literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/blocks/boxduct_silver_junction_3.png b/src/main/resources/assets/hbm/textures/blocks/boxduct_silver_junction_3.png new file mode 100644 index 0000000000000000000000000000000000000000..7916c63a64acfb454e032530cda7ceb53c514c6b GIT binary patch literal 436 zcmV;l0ZaagP)Y-5JiulP72y?6~Tcka1XA-fh%$3&@J>X9J>rba0iYg zv+g9)X|Vs`lkoc4@Ob=!3{u>CQ+2B{VI-=m>Zj8wMNwd_#W{y_j>F+F`Hs!T1XimR zMNv?eC3&7>twlt}pyL9OJe$o@?)`p`3j7(({vtklI-O3v)*7ufN-305#Jkp--EKGF zOscBtW6uEh`LPXG7BO*K=4;G6B0M=TJF=Wy0vMd1-c)466BIy`o2q7dK zfcKv4yJ4|x5n;30@O(aby<;>9M;+-5X}-1=JWZ0+;tsI(WHB+WUJW6zP?wk;uqR6!K@7~}bT z?qk0pg!FQ}ACJf37{`|5a=G-;*t)K1nufZr+3)us`2XI-(ZBH3)adrt+>Zjr7`*p* e?+4#`EdBz>chW@1m#L%x0000&7ss)7&#LI@aR9#D_tK&Z7w6h$8guJSz3n5GG3S;82DZQDK? zXsr?M`~G-mSNl9qlx2zYJYlVcQtI}&1$%`!48vuNfg5WrthMO6?g{ZN0072uywWtq zwrx;Kp|0y!@Bc57_b)hLj`ptuq?9<007*qoM6N<$f=+3Y A0ssI2 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/blocks/boxduct_silver_straight.png b/src/main/resources/assets/hbm/textures/blocks/boxduct_silver_straight.png index d8a5699bffe768d019e13de63bf108aff606fcc3..d051e9354cc8aa1d3c691e2a5d3f222029663a49 100644 GIT binary patch delta 145 zcmV;C0B--K0=)r{G=FqSL_t(IjqQ^$4g(MCiTmZr#i|x8Mb`%RK|JZNoqS015yANkvXXu0mjf-ts?v delta 249 zcmVKonHye=;S`lpHvmWuK~+_lrU}kD z7-PUWhY$ip1n)hvEWj4==q(lm|rq9~%^ zjt{K0XqpCBSZk3a$ye@v(fc!h!C!C^NGZ{_?Par+5`Eu)<>Fp$+ZK1du4{x45JHH@ zL`1Q^@B3M>t}C?GV2oi|7I^RDJI+{Z9sdVUTJL+U!@`og00000NkvXXu0mjfk)m*< diff --git a/src/main/resources/assets/hbm/textures/blocks/boxduct_white.png b/src/main/resources/assets/hbm/textures/blocks/boxduct_white.png new file mode 100644 index 0000000000000000000000000000000000000000..391bc0a0df61a58ffc6c588eff585966feeddb9e GIT binary patch literal 2224 zcmV;h2v7HkP)4G}IP^nTob*MU2mDs!W zKkCwnr4s{8Oblfz5~vbV2NsINj{-{KGqDZ$JMew)bGFZp6VgvVuVjT_zjx2Q_ul(F zzDouFx3#sk*l`@#whh;HVcRww$3eH-h39$bbUN@nPkjII;X?(I4eM`E1MPMjS65dE z!w^9b!1sOlz7Nmyz&X!cX&ctRvbMGsx7%&Z%*x z+pulBuTQtz6@N3vVB0nf*L4vD0eZcjxLGC=nx-KL0`Yu505ozLfa|)q5%7IK0RSi$ z3E%etKxBNL$s?Bm*tUI}1HSL$?CdP_P`|_?0FLA2K1qo z&qK9Zg+c4I$W$Se{Zs?!H-(&Yc%BEN)9HY74qev^9nwi81F$R$H#axpUYR83oWruL zeE)Kw1A>Jy6DIsST?K$a3{Sk;z477(I{%kgEq&mM$`b>H!siLOmc`UU@C62l4>) z)dN5=rIyhHc~(jf4AP$s0Y&A-w!}q50nL<)C2uSE;pdk z1A_p_=z%gLCsXNxK>;N6K-rO#rS-rt0CZi4;PjQ1m6$OG`Lb<0mrjY#@9O{8*-!v5 z3EJ834ly648=rnlMchmSw@RER2tj!!QhtkB=jYB3PD%FboB# zkw;)yTUl9&Yqc6qPfyWqw-b@0K~ePT^*Wl(CQQ==>5w}EAYN~`+oJJwG{?rqL-EIwWdKy5?i>N)by{i@6BD_e_j)~qVTdS-Kssb(5ujBd z&w09Y0x0pnvkA+x#5$*J4}w61ovtW~Kssb30CZi4X_`1VI7oC7MN#6r{5i4+ z5Ulqd>gsAK zWh$#F0{}jM{v3185r!c+=SoUtjGR$Mp2H zsAgp;b$fdo%gf6Z0QmCdODuy{=>fT20&g(JgwlEb{5g(~j{!h*EO*K|$Kl~29zJ}C zFbu&M!|Lj4JUKauU%!40qz5)PH{*+o3uufnabss^2kYzW%FgBcl#H_ar4c@U{1}We zOifK;YHA9NMg!B+)6g^xhlhtEnQhw!W9$|HIX`&t0Po(tQ+BTFI$pkfiBF$Ci6TP) zWIZ4cq6oa}x?qgmPC+_ks?M*kuf=ktB2%x|0U!~9xw$#a&(ABtFD)(M_wV0HJs>-m z>73R%g%LnP50nKj^Z*gbAf3yU3Lv2e%7UkgXwX~gpq)oil-M7jr8Wq7&N(zHJY}8b zl1x>x)9DC*&N=q>_A>sOrlHg6Wc2_6C~~I1De2@0r1b!0d)hy}3IrR{6qu%o@87>; zdwUzLR!ceZot+(QZ*Sx2)2E5OMOhClEG%GteqLld`8tk+#l^*}9*}b&&zVqHDizT= zWit`W{{DVEh#q+J=1m0vgmYT46gd+er}qdpH#g%lr{~nUV8d3cRY`9!kf=!0F@VI# zWs~Jtkse5}VY-oxjg7cyhvV(rw;7+bZEbDED*sonUS)hUlC05a6!Li)yLa!N(qCm6 z0JQU+-hREgxhcIBm*?LXz}K%|*lA^yE~BLX<<;UiPNEG`LetaJn4Fvx1&y8~e?v|f zxgsttE#-;{N-ouTflO?ibL{W$!|net#Y-5(~b5{Tg8yin^{kFQ92u zy(N=x1_15%GscvxI6FIwsi~<9m8wc}KUSQZn@c>OaW2D(@87>KEJQ~~N3rVUG~GFn zs)VgptMc>b&$!ua<{rH+EG&$y3T6NRw{uf;{$IxAq?G+j0XRQDFXZzwc6xfM^jBGK zICpn+c-;$C5000003aOYoMDW? zzVFv$2;mhLfidP3XsvM^M^*A&ptU{)M1*bIs*>*lB02?1sXtw15h$h5$iTn-jbFDI WzVP+E4T=B&00{s|MNUMnLSTZK*?NNj delta 335 zcmV-V0kHnM0{H@vGk*avNkl#N7_45Yqg4lD;Cobv~c(`~4nc40)cTltOEbwHD_b z)>?|9z!<|gjx2$iMY074^VX3UO zTrL;VG({+-I3AAx^nL%)e7oHM2tFaDWE@9~F>JTnkI6y7CzMhQ!@zF0Ta+9Wd_qb& z-}sW`X9A_vgFtJ|dc9th{7j&=Muaz(QvTZXswgn`h6r!`6Z74XfVnq>bB-iQh~s!s z@-sn_B&@vm)JSzrS(blZ);of_t{()U53(#GvRg`7<(o|Iyhr?ke hXxo-3EdJYX`~pv*+362U>hk~q002ovPDHLkV1lmFpK$;H diff --git a/src/main/resources/assets/hbm/textures/blocks/boxduct_white_curve_br.png b/src/main/resources/assets/hbm/textures/blocks/boxduct_white_curve_br.png index 1883702b0b8a79a4f87a1036b1a4e3102a7b7579..b2c75f8531a4d6140b8c5b148a7914373b034086 100644 GIT binary patch delta 270 zcmV+p0rCFq0=NQ@Gk*Z@Nklp)2-aFS=U}Y`5rLVJQbLRoDW&tguB!q7(*Yp_wAN5-MJWX$ z0uez<2|4G>>QdhOM+gDSvfvwu2to)jM1^*7_C_WBd&0n~}-CI_WRcF!M0r)rp9_JNQP-jD6pcbB5}{fBTI;fX4da UpM8p<00000Ne4wvM6N<$f-^sSEC2ui delta 322 zcmV-I0logX0_*~iGk*aiNklBy_OcRX380*q+hIb`-u*Rn<}y1)Ot8k_1r{!CDI<0yBe%kYyR1 zbMW5d@pvcz&>|2*K-;!3#-Q(eF!LJIG=Z7Xw(a^BsH&=#5Pt&FG{s*q3(GzFvdV9NrJxbHw|Y_UauE~r=utW zGh?3TP1BhZ8LYO}?h2eaSp{UzM|eJ;yLsVh*{f3OP=ttn{AQ#qk-7Z<`bzNf|$FJE*@!x*qCzezH UWo?~Bv;Y7A07*qoM6N<$f*WFzRR910 diff --git a/src/main/resources/assets/hbm/textures/blocks/boxduct_white_curve_tl.png b/src/main/resources/assets/hbm/textures/blocks/boxduct_white_curve_tl.png index e79b0a583991ecddc6bba42fe02b7b4ac78968a4..2684f86772dfa5de97059004bcc34ab3651d431d 100644 GIT binary patch delta 242 zcmV3`JkCu)&t>Q|4+pU`C!@k}guWQ@ZkO z=7SIz-a`_2;XB*5U8NLWOI2}qdhh>gUDpLbhM={EnW3uGT2WQZjGQy>PD+UwBO*cw zVPGuVwq30?a?aFRF|(hZbLRPc@_0Ph_x(?IcUo&mDFrj5lxxCF1}9@zRh<^7>Ma;M z&kAa-zZ00*dlS4~dnSVucb|p<1}D9D+1pw7)GB#5FsHa!UxC+?89itL2?>TIY!Rl zNoUApJb1E@Jtl+um(tP_P5l;u;Qe|MpDI4m_x;mai!p|;YtET$L(ihobz2|f~(RCd$Mt|D2#W_b^*DT9IN{MAz zXqtu?Bipty&okb8l(qKr%pU?c3$K!!gyR>l17{fG8#2EjCzehM_tz{fX+O~Zg z7K3pdcLRB_k_e{+uIswkz&VG?Ig?Vt7*jMrI3?vsDHRP6PDx1)heNS})_OOPh7H3| zWDr8w4WtKBk}7u%rfJ#@?)N*#rv{=e`zvgLHxx<*MKg(g|xVy!WT&u-4v+PX=_MDgTvB&`OJO9Cw2!$wUa@+`-di kVwxs+@4@Kd-xq%48^$EZz0;{Wg#Z8m07*qoM6N<$g4$+-f&c&j delta 352 zcmV-m0iXWK0*eEXG=D-#L_t(Ijm48Oj>0eyMW0tLkc}e&5~7PZ0Mwj-15o53oQ8@j z4Hw`Bv_3=1NE87_4h2Y|V9iEAfNozimgPTx>=_GwS*=#J)*7W0&FH2z2u767c*>mWmHHk-OA3V+7qG1KW3Yb}$>1Y-C@@-(YZx~|hSWjGwR-uIE&Yz9D@rnfop-gCKJzH)}Y yIq=>i^E{`js<&-?WVhRKJRWav7dHRxH(mizGw847L;_g=0000i&|1S7^XBLC`2YYc0rY(jr4*!;=(-M4 zN+_k!G!3-Y5JG@+4#pUYqDW~tjN|z1`yRL34V-h7Ww|@keSaHs&T+k7G0!tt+qO_j zVV-9U!?1fKgn$qNWm#qgLI_OL1f>*Wj4uEwWoD?V>douAMpac{jNyL2gNPud1QERe zx~|Ktp8!&Fj1fcxBEs=_g!lgc3bxEKMmXo-y+;TEQc75B!BV$VeczHFj|ZG{2q7SZ z0HxFmKx>VrX@7PApO}+-??FUZ*A-f8{4vHrYn?~+yJqKHX5Rv&55|l!yHVA3{WaM+ z2O>fU0n4($81thbO<`N}@8ksVrhqYqVHhBU$a7BJ_TFdN$wLTO*YyXWC<<`SF-_C% zQ3zodZ_lLQke1?dxja8DQ|k7zEYMo#_;fn$w{f25{2|l4_psK&TKjdKll=uV7;(l< Smv`|10000~HkM_5K!4Zq za=Fm9Elc0`$@3h5D2j-ph|Ok09LFR{!gjl5x7)Gb?@7~?G)+-TQ4|Hf@3Zne4wg+oLcE_&wmA`We>x^^Z7IaN-2UMKuXC{N=essZvu1jJiAiL*t^ujVOiGKJI}Lg z0XjiJk(IQ*+X2*G;2#s~3%Y7v!>&5I@%Irc~3XL_LD;nK08rV8cyqUuNF6`H(>xGwIv72|Mo;0pH zXz^jO#N)NAIylx}K2z|0`^{~+3>*xx*YBoe%zG}7)bqVi#^*B20gJx=Wr-3DFMiM4 zwN5iswBfVO&F^zpt&(HDB-^kmsEdQ)^{#)JY&W*`zTU+kAlT(HK{<4(2aDw|p2nG} z>@y@=cc-)O_-(JCA?%oSW0Ow*vSpbK@6~2WrYd>xdaM5QUGH1+o!=%ns_6bt?wk4T V@6>r6Y*7FJ diff --git a/src/main/resources/assets/hbm/textures/blocks/boxduct_white_junction_0.png b/src/main/resources/assets/hbm/textures/blocks/boxduct_white_junction_0.png new file mode 100644 index 0000000000000000000000000000000000000000..35019f1d85fb640c96c1ac202e3b00b8c01d284c GIT binary patch literal 406 zcmV;H0crk;P)CP&3J(r%&x@BMA;VIi*v3s%d!*z0${yfw*W;^Af@cs zxXyhkC9~N~h^neu=N#kl7%3%6si!2R6iO+IqDV2N6sOaP-EPM~YmN6FDJ84birei5 zkiZ;r&T+Y1m`dRlYfJorXhqt2;p%AV@$f;cVO>*vc?#C*4jVAac!-o=bU?L-@9-K z0q5MKKzt4<#x^d^m z53mTuG$}Me`c~;{^?d|}nS}giCNmiet(B%}9RvZ4P)Z?$fRwT$i^ak+jMH`y$1y0S zV2puMiZBe}`#yvaAcVm4JUC7VLE~w)TGgKC!F64~!uvJ8%?b{qH&uBr-JYiO+zh9Szbgd>E2@B0n(7p#Oa`n=7ZT%N^s5_SW1cG@%RDTwhhiXlv2=IgLD4vKnU^Ch4;wsT`(C~>-D;h zq6pLJ6r<6o18J>0j*MhkhA4{gd_KRw^67M{+m}qW+xxa&E|*qk764$o-PZ5JWU9?M xhY$iqQD8ow|2&O(o;T^2Wr?yZe;nub`U1cEafK4fLB9Y1002ovPDHLkV1fl;;y?fZ literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/blocks/boxduct_white_junction_2.png b/src/main/resources/assets/hbm/textures/blocks/boxduct_white_junction_2.png new file mode 100644 index 0000000000000000000000000000000000000000..2ac37ec44b867715005c577be13ad33b9ceae1be GIT binary patch literal 539 zcmV+$0_6RPP)*AI9X4l*z^yEoYz;G^<9XQdRBQqWq%7y}{-XT4qzUiqU>gEUQ%BnhzJ9j>pCVPzFx03to*=!1k+hrS){QEq!7%` zLN?%Dact1Pf#bN>&G6paoj1EPCQwyXSS%Lgd5*OfRYg@f91gRe+;qxdy9TP?qI~W>!^Ih%*CR zuU9sk4I)C8WrzsI7(|5o{myc^1i)HL+qR@J?V>0EM)GR4LPQV|k|g2rc;LMsc>vBi z(w~9FYl{e~N?q4%w_CjTc<(=gbBm(Ny2`=XSdsp;$ax*x^B!sRsR@>$hha2L7X{?`@Y9}&-3~GF!)+yUDqMb z>%AXOj`i_){L*}(X_}y_A%qZAH8f2VZns;Q;{Nwbocs&#p~ke|dw(@(+ZN{>&bg28 aJcZv5-Q0kF`PTse0000UtP)^qKEOr?`rt z4Iafz(-atEV2putepTDHH$GQNg(xgWDTTVOA%pk1+Yko+rHb&{|(iT(C!p%d&)ct8)(CdwB0L48tS;7$OQGgg``L-}jK>{(q5@e<2Es kwtwB=I1X5AFWaen03F$(Wbr5SFaQ7m07*qoM6N<$f|KiuRR910 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/blocks/boxduct_white_straight.png b/src/main/resources/assets/hbm/textures/blocks/boxduct_white_straight.png index 636913932e460ee4c37a8e5e3a141b981a1f4f52..a76af87a18d6af737b34718e8d583149f9efbe7a 100644 GIT binary patch delta 147 zcmV;E0BrxJ0>1%}G=FwUL_t(IjqQ^$4g(s&TI&|P05xkmA#a6|E(`zw002ovPDHLkV1n4p BJ&XVV delta 250 zcmV{(O$Z@a*A;86Kj#`x)8y|bUo}E`mRW~5H~;_u07*qoM6N<$f{0Xe AA^-pY From 6c96d88541299480cf85c131b0ab98831f8520c1 Mon Sep 17 00:00:00 2001 From: Boblet Date: Fri, 21 Jun 2024 10:57:44 +0200 Subject: [PATCH 55/69] mh yes --- changelog | 11 +- .../inventory/recipes/ArcWelderRecipes.java | 11 ++ .../inventory/recipes/AssemblerRecipes.java | 110 ++++++++++++++++-- .../recipes/CrystallizerRecipes.java | 2 +- .../java/com/hbm/items/ItemGenericPart.java | 3 +- .../java/com/hbm/main/CraftingManager.java | 12 +- src/main/resources/assets/hbm/lang/de_DE.lang | 1 + src/main/resources/assets/hbm/lang/en_US.lang | 1 + .../textures/items/low_density_element.png | Bin 0 -> 268 bytes 9 files changed, 126 insertions(+), 25 deletions(-) create mode 100644 src/main/resources/assets/hbm/textures/items/low_density_element.png diff --git a/changelog b/changelog index c4aad0278..773ee6c81 100644 --- a/changelog +++ b/changelog @@ -4,5 +4,14 @@ * Intersections now have unique textures for each size * Copper boxducts now have a much nicer color gradient * Exhaust pipes now have a more rusted appearance +* Added an alternate recipe for blank upgrades using integrated circuits and polymer instead of analog circuits +* Update the soyuz and orbital module recipes + * Simplified the recipes, fewer microcrafting parts + * Both now use low-density elements which are made from aluminium/titanium, fiberglass and hard plastic + * Both now make use of more advanced electronics, although in smaller numbers +* Removed the recipes for the satellite deco blocks, those will be phased out soon. Existing deco blocks can still be crafted back into functional satellites +* Moved the satellite recipes to the welder, the attachment is now welded onto the common satellite body +* Simplified the satellite recipes, adjusted cost based on utility (depth scanner, death ray and resonator are more expensive than the mapper/radar) -## Fixed crash caused by PRISM updating unloaded worlds \ No newline at end of file +## Fixed +* Crash caused by PRISM updating unloaded worlds \ No newline at end of file diff --git a/src/main/java/com/hbm/inventory/recipes/ArcWelderRecipes.java b/src/main/java/com/hbm/inventory/recipes/ArcWelderRecipes.java index c4aa555c5..7bc108bfa 100644 --- a/src/main/java/com/hbm/inventory/recipes/ArcWelderRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/ArcWelderRecipes.java @@ -20,6 +20,7 @@ import com.hbm.inventory.RecipesCommon.OreDictStack; import com.hbm.inventory.fluid.Fluids; import com.hbm.inventory.material.Mats; import com.hbm.inventory.recipes.loader.SerializableRecipe; +import com.hbm.items.ItemGenericPart.EnumPartType; import com.hbm.items.ModItems; import com.hbm.items.machine.ItemFluidIcon; @@ -37,6 +38,10 @@ public class ArcWelderRecipes extends SerializableRecipe { new OreDictStack(IRON.plate(), 2), new ComparableStack(ModItems.coil_copper), new ComparableStack(ModItems.coil_copper_torus))); recipes.add(new ArcWelderRecipe(new ItemStack(ModItems.motor, 2), 100, 400L, new OreDictStack(STEEL.plate(), 1), new ComparableStack(ModItems.coil_copper), new ComparableStack(ModItems.coil_copper_torus))); + recipes.add(new ArcWelderRecipe(DictFrame.fromOne(ModItems.part_generic, EnumPartType.LDE), 200, 5_000L, + new OreDictStack(AL.plate(), 4), new OreDictStack(FIBER.ingot(), 4), new OreDictStack(ANY_HARDPLASTIC.ingot()))); + recipes.add(new ArcWelderRecipe(DictFrame.fromOne(ModItems.part_generic, EnumPartType.LDE), 200, 10_000L, + new OreDictStack(TI.plate(), 2), new OreDictStack(FIBER.ingot(), 4), new OreDictStack(ANY_HARDPLASTIC.ingot()))); //Dense Wires recipes.add(new ArcWelderRecipe(new ItemStack(ModItems.wire_dense, 1, Mats.MAT_ALLOY.id), 100, 10_000L, @@ -105,6 +110,12 @@ public class ArcWelderRecipes extends SerializableRecipe { recipes.add(new ArcWelderRecipe(new ItemStack(ModItems.missile_nuclear), 600, 50_000L, new ComparableStack(ModItems.warhead_nuclear), new ComparableStack(ModItems.fuel_tank_large), new ComparableStack(ModItems.thruster_large, 3))); recipes.add(new ArcWelderRecipe(new ItemStack(ModItems.missile_nuclear_cluster), 600, 50_000L, new ComparableStack(ModItems.warhead_mirv), new ComparableStack(ModItems.fuel_tank_large), new ComparableStack(ModItems.thruster_large, 3))); recipes.add(new ArcWelderRecipe(new ItemStack(ModItems.missile_volcano), 600, 50_000L, new ComparableStack(ModItems.warhead_volcano), new ComparableStack(ModItems.fuel_tank_large), new ComparableStack(ModItems.thruster_large, 3))); + + recipes.add(new ArcWelderRecipe(new ItemStack(ModItems.sat_mapper), 600, 10_000L, new ComparableStack(ModItems.sat_base), new ComparableStack(ModItems.sat_head_mapper))); + recipes.add(new ArcWelderRecipe(new ItemStack(ModItems.sat_scanner), 600, 10_000L, new ComparableStack(ModItems.sat_base), new ComparableStack(ModItems.sat_head_scanner))); + recipes.add(new ArcWelderRecipe(new ItemStack(ModItems.sat_radar), 600, 10_000L, new ComparableStack(ModItems.sat_base), new ComparableStack(ModItems.sat_head_radar))); + recipes.add(new ArcWelderRecipe(new ItemStack(ModItems.sat_laser), 600, 50_000L, new ComparableStack(ModItems.sat_base), new ComparableStack(ModItems.sat_head_laser))); + recipes.add(new ArcWelderRecipe(new ItemStack(ModItems.sat_resonator), 600, 50_000L, new ComparableStack(ModItems.sat_base), new ComparableStack(ModItems.sat_head_resonator))); } public static HashMap getRecipes() { diff --git a/src/main/java/com/hbm/inventory/recipes/AssemblerRecipes.java b/src/main/java/com/hbm/inventory/recipes/AssemblerRecipes.java index 7da831ef7..a1d19543e 100644 --- a/src/main/java/com/hbm/inventory/recipes/AssemblerRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/AssemblerRecipes.java @@ -98,15 +98,6 @@ public class AssemblerRecipes extends SerializableRecipe { makeRecipe(new ComparableStack(ModItems.warhead_volcano, 1), new AStack[] {new OreDictStack(TI.plate(), 24), new OreDictStack(STEEL.plate(), 16), new ComparableStack(ModBlocks.det_nuke, 3), new OreDictStack(U238.block(), 24), new ComparableStack(ModItems.circuit, 5, EnumCircuitType.CAPACITOR_BOARD.ordinal()) }, 600); makeRecipe(new ComparableStack(ModItems.missile_stealth, 1), new AStack[] { new OreDictStack(TI.plate(), 20), new OreDictStack(AL.plate(), 20), new OreDictStack(CU.plate(), 10), new OreDictStack(KEY_BLACK, 16), new OreDictStack(ANY_HARDPLASTIC.ingot(), 16), new OreDictStack(ANY_HIGHEXPLOSIVE.ingot(), 4), new ComparableStack(ModItems.circuit, 4, EnumCircuitType.ADVANCED.ordinal()), new OreDictStack(STEEL.bolt(), 32) },1200); makeRecipe(new ComparableStack(ModItems.thruster_nuclear, 1), new AStack[] {new OreDictStack(DURA.ingot(), 32), new OreDictStack(B.ingot(), 8), new OreDictStack(PB.plate(), 16), new ComparableStack(ModItems.pipes_steel) },600); - makeRecipe(new ComparableStack(ModItems.sat_base, 1), new AStack[] {new ComparableStack(ModItems.thruster_large, 1), new OreDictStack(STEEL.plate(), 6), new ComparableStack(ModItems.plate_desh, 4), new OreDictStack(TI.shell(), 3), new ComparableStack(ModItems.fluid_barrel_full, 1, Fluids.KEROSENE.getID()), new ComparableStack(ModItems.photo_panel, 24), new OreDictStack(CU.plateCast(), 12), new ComparableStack(ModItems.circuit, 12, EnumCircuitType.BASIC.ordinal()), new ComparableStack(ModItems.battery_lithium_cell_6, 1), },500); - makeRecipe(new ComparableStack(ModItems.sat_head_mapper, 1), new AStack[] {new OreDictStack(STEEL.ingot(), 4), new OreDictStack(STEEL.plate(), 6), new OreDictStack(STEEL.shell(), 3), new ComparableStack(ModItems.plate_desh, 2), new ComparableStack(ModItems.circuit, 4, EnumCircuitType.ADVANCED.ordinal()), new OreDictStack(RUBBER.ingot(), 12), new OreDictStack(REDSTONE.dust(), 6), new ComparableStack(Items.diamond, 1), new ComparableStack(Blocks.glass_pane, 6), },400); - makeRecipe(new ComparableStack(ModItems.sat_head_scanner, 1), new AStack[] {new OreDictStack(STEEL.ingot(), 6), new OreDictStack(TI.plate(), 32), new ComparableStack(ModItems.plate_desh, 6), new ComparableStack(ModItems.magnetron, 6), new ComparableStack(ModItems.coil_advanced_torus, 2), new ComparableStack(ModItems.circuit, 4, EnumCircuitType.ADVANCED.ordinal()), new OreDictStack(RUBBER.ingot(), 6), new ComparableStack(Items.diamond, 1), },400); - makeRecipe(new ComparableStack(ModItems.sat_head_radar, 1), new AStack[] {new OreDictStack(STEEL.ingot(), 4), new OreDictStack(TI.plate(), 32), new ComparableStack(ModItems.magnetron, 12), new OreDictStack(RUBBER.ingot(), 16), new OreDictStack(MINGRADE.wireFine(), 16), new ComparableStack(ModItems.coil_gold, 3), new ComparableStack(ModItems.circuit, 4, EnumCircuitType.ADVANCED.ordinal()), new ComparableStack(Items.diamond, 1), },400); - makeRecipe(new ComparableStack(ModItems.sat_head_laser, 1), new AStack[] {new OreDictStack(STEEL.ingot(), 12), new OreDictStack(W.ingot(), 16), new OreDictStack(ANY_PLASTIC.ingot(), 6), new OreDictStack(RUBBER.ingot(), 16), new OreDictStack(CU.plateCast(), 24), new ComparableStack(ModItems.circuit, 16, EnumCircuitType.ADVANCED), new OreDictStack(REDSTONE.dust(), 16), new ComparableStack(Items.diamond, 5), new ComparableStack(Blocks.glass_pane, 16), },450); - makeRecipe(new ComparableStack(ModItems.sat_head_resonator, 1), new AStack[] {new OreDictStack(STEEL.ingot(), 32), new OreDictStack(ANY_PLASTIC.ingot(), 48), new OreDictStack(RUBBER.ingot(), 8), new ComparableStack(ModItems.crystal_xen, 1), new OreDictStack(STAR.ingot(), 7), new ComparableStack(ModItems.circuit, 16, EnumCircuitType.ADVANCED) },1000); - makeRecipe(new ComparableStack(ModItems.sat_foeq, 1), new AStack[] {new OreDictStack(STEEL.plate(), 8), new OreDictStack(TI.plate(), 12), new ComparableStack(ModItems.plate_desh, 8), new OreDictStack(TI.shell(), 3), new ComparableStack(ModItems.fluid_barrel_full, 1, Fluids.HYDROGEN.getID()), new ComparableStack(ModItems.photo_panel, 16), new ComparableStack(ModItems.thruster_nuclear, 1), new ComparableStack(ModItems.ingot_uranium_fuel, 6), new ComparableStack(ModItems.circuit, 24, EnumCircuitType.BASIC), new ComparableStack(ModItems.magnetron, 3), new ComparableStack(ModItems.battery_lithium_cell_6, 1), },1200); - makeRecipe(new ComparableStack(ModItems.sat_miner, 1), new AStack[] {new OreDictStack(BIGMT.plate(), 24), new ComparableStack(ModItems.plate_desh, 8), new ComparableStack(ModItems.motor, 2), new ComparableStack(ModItems.drill_titanium, 2), new ComparableStack(ModItems.circuit, 12, EnumCircuitType.ADVANCED), new ComparableStack(ModItems.fluid_barrel_full, 1, Fluids.KEROSENE.getID()), new ComparableStack(ModItems.thruster_small, 1), new ComparableStack(ModItems.photo_panel, 12), new ComparableStack(ModItems.centrifuge_element, 4), new ComparableStack(ModItems.magnetron, 3), new OreDictStack(RUBBER.ingot(), 12), new ComparableStack(ModItems.battery_lithium_cell_6, 1), },600); - makeRecipe(new ComparableStack(ModItems.sat_lunar_miner, 1), new AStack[] {new ComparableStack(ModItems.ingot_meteorite, 4), new ComparableStack(ModItems.plate_desh, 4), new ComparableStack(ModItems.motor_desh, 2), new ComparableStack(ModItems.drill_titanium, 2), new ComparableStack(ModItems.circuit, 8, EnumCircuitType.ADVANCED), new ComparableStack(ModItems.fluid_barrel_full, 1, Fluids.KEROSENE.getID()), new ComparableStack(ModItems.thruster_small, 1), new ComparableStack(ModItems.photo_panel, 12), new ComparableStack(ModItems.magnetron, 3), new OreDictStack(RUBBER.ingot(), 12), new ComparableStack(ModItems.battery_lithium_cell_6, 1), },600); makeRecipe(new ComparableStack(ModItems.chopper_head, 1), new AStack[] {new ComparableStack(ModBlocks.reinforced_glass, 2), new OreDictStack(CMB.ingot(), 22), new OreDictStack(MAGTUNG.wireFine(), 4), },300); makeRecipe(new ComparableStack(ModItems.chopper_gun, 1), new AStack[] {new OreDictStack(CMB.plate(), 4), new OreDictStack(CMB.ingot(), 2), new OreDictStack(W.wireFine(), 6), new ComparableStack(ModItems.coil_magnetized_tungsten, 1), new ComparableStack(ModItems.motor, 1), },150); makeRecipe(new ComparableStack(ModItems.chopper_torso, 1), new AStack[] {new OreDictStack(CMB.ingot(), 26), new OreDictStack(MAGTUNG.wireFine(), 4), new ComparableStack(ModItems.motor, 2), new ComparableStack(ModItems.chopper_blades, 2), },350); @@ -264,12 +255,109 @@ public class AssemblerRecipes extends SerializableRecipe { makeRecipe(new ComparableStack(ModItems.mp_warhead_15_nuclear, 1), new AStack[] {new ComparableStack(ModItems.seg_15, 1), new OreDictStack(STEEL.plate(), 24), new OreDictStack(TI.plate(), 12), new OreDictStack(PU239.ingot(), 3), new ComparableStack(ModBlocks.det_charge, 6), new ComparableStack(ModItems.circuit, 5, EnumCircuitType.ADVANCED), },500); makeRecipe(new ComparableStack(ModItems.mp_warhead_15_n2, 1), new AStack[] {new ComparableStack(ModItems.seg_15, 1), new OreDictStack(STEEL.plate(), 8), new OreDictStack(TI.plate(), 20), new ComparableStack(ModBlocks.det_charge, 24), new ComparableStack(Blocks.redstone_block, 12), new OreDictStack(MAGTUNG.dust(), 6), new ComparableStack(ModItems.circuit, 4, EnumCircuitType.ADVANCED), },400); makeRecipe(new ComparableStack(ModItems.mp_warhead_15_balefire, 1), new AStack[] {new ComparableStack(ModItems.seg_15, 1), new OreDictStack(OreDictManager.getReflector(), 16), new ComparableStack(ModItems.powder_magic, 6), new ComparableStack(ModItems.egg_balefire_shard, 4), new OreDictStack(ANY_HIGHEXPLOSIVE.ingot(), 8), new ComparableStack(ModItems.circuit, 8, EnumCircuitType.ADVANCED), }, 60, ModItems.journal_bj); - makeRecipe(new ComparableStack(ModItems.missile_soyuz, 1), new AStack[] {new ComparableStack(ModItems.rocket_fuel, 40), new ComparableStack(ModBlocks.det_cord, 20), new ComparableStack(ModItems.thruster_medium, 12), new ComparableStack(ModItems.thruster_small, 12), new ComparableStack(ModItems.tank_steel, 10), new ComparableStack(ModItems.circuit, 32, EnumCircuitType.ADVANCED), new OreDictStack(RUBBER.ingot(), 64), new ComparableStack(ModItems.fins_small_steel, 4), new OreDictStack(TI.shell(), 32), new OreDictStack(STEEL.shell(), 18), new OreDictStack(FIBER.ingot(), 64), },600); - makeRecipe(new ComparableStack(ModItems.missile_soyuz_lander, 1), new AStack[] {new ComparableStack(ModItems.rocket_fuel, 10), new ComparableStack(ModItems.thruster_small, 3), new ComparableStack(ModItems.tank_steel, 2), new ComparableStack(ModItems.circuit, 16, EnumCircuitType.BASIC), new OreDictStack(ANY_RUBBER.ingot(), 32), new OreDictStack(AL.shell(), 2), new ComparableStack(ModItems.sphere_steel, 1), new OreDictStack(FIBER.ingot(), 12), },600, ModItems.journal_bj); 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.missile_soyuz, 1), new AStack[] { + new OreDictStack(TI.shell(), 32), + new OreDictStack(RUBBER.ingot(), 64), + new ComparableStack(ModItems.rocket_fuel, 64), + new ComparableStack(ModItems.thruster_small, 12), + new ComparableStack(ModItems.thruster_medium, 12), + new ComparableStack(ModItems.circuit, 4, EnumCircuitType.CONTROLLER), + new ComparableStack(ModItems.part_generic, 32, EnumPartType.LDE) + },600); + makeRecipe(new ComparableStack(ModItems.missile_soyuz_lander, 1), new AStack[] { + new OreDictStack(AL.shell(), 4), + new OreDictStack(RUBBER.ingot(), 16), + new ComparableStack(ModItems.rocket_fuel, 16), + new ComparableStack(ModItems.thruster_small, 3), + new ComparableStack(ModItems.circuit, 3, EnumCircuitType.CONTROLLER_ADVANCED), + new ComparableStack(ModItems.part_generic, 12, EnumPartType.LDE) + },600, ModItems.journal_bj); + + makeRecipe(new ComparableStack(ModItems.sat_base, 1), new AStack[] { + new OreDictStack(RUBBER.ingot(), 12), + new OreDictStack(TI.shell(), 3), + new ComparableStack(ModItems.thruster_large, 1), + new ComparableStack(ModItems.part_generic, 8, EnumPartType.LDE), + new ComparableStack(ModItems.plate_desh, 4), + new ComparableStack(ModItems.fluid_barrel_full, 1, Fluids.KEROSENE.getID()), + new ComparableStack(ModItems.photo_panel, 24), + new ComparableStack(ModItems.circuit, 12, EnumCircuitType.BASIC), + new ComparableStack(ModBlocks.machine_lithium_battery, 1) + },500); + makeRecipe(new ComparableStack(ModItems.sat_head_mapper, 1), new AStack[] { + new OreDictStack(STEEL.shell(), 3), + new ComparableStack(ModItems.plate_desh, 4), + new ComparableStack(ModItems.circuit, 4, EnumCircuitType.ADVANCED), + new ComparableStack(ModBlocks.glass_quartz, 8), + },400); + makeRecipe(new ComparableStack(ModItems.sat_head_scanner, 1), new AStack[] { + new OreDictStack(STEEL.shell(), 3), + new OreDictStack(TI.plateCast(), 8), + new ComparableStack(ModItems.plate_desh, 4), + new ComparableStack(ModItems.magnetron, 8), + new ComparableStack(ModItems.circuit, 8, EnumCircuitType.ADVANCED.ordinal()) + },400); + makeRecipe(new ComparableStack(ModItems.sat_head_radar, 1), new AStack[] { + new OreDictStack(STEEL.shell(), 3), + new OreDictStack(TI.plateCast(), 12), + new ComparableStack(ModItems.magnetron, 12), + new ComparableStack(ModItems.coil_gold, 16), + new ComparableStack(ModItems.circuit, 4, EnumCircuitType.ADVANCED.ordinal()) + },400); + makeRecipe(new ComparableStack(ModItems.sat_head_laser, 1), new AStack[] { + new OreDictStack(STEEL.shell(), 6), + new OreDictStack(CU.plateCast(), 24), + new OreDictStack(ANY_HARDPLASTIC.ingot(), 16), + new ComparableStack(ModItems.circuit, 8, EnumCircuitType.CONTROLLER_ADVANCED), + new ComparableStack(ModItems.circuit, 16, EnumCircuitType.CAPACITOR_BOARD), + new ComparableStack(ModItems.crystal_diamond, 8), + new ComparableStack(ModBlocks.glass_quartz, 8) + },450); + makeRecipe(new ComparableStack(ModItems.sat_head_resonator, 1), new AStack[] { + new OreDictStack(STEEL.plateCast(), 6), + new OreDictStack(STAR.ingot(), 12), + new OreDictStack(ANY_PLASTIC.ingot(), 48), + new ComparableStack(ModItems.crystal_xen, 1), + new ComparableStack(ModItems.circuit, 16, EnumCircuitType.ADVANCED) + },1000); + makeRecipe(new ComparableStack(ModItems.sat_foeq, 1), new AStack[] { + new OreDictStack(TI.shell(), 3), + new ComparableStack(ModItems.plate_desh, 8), + new ComparableStack(ModItems.fluid_barrel_full, 1, Fluids.HYDROGEN.getID()), + new ComparableStack(ModItems.photo_panel, 16), + new ComparableStack(ModItems.thruster_nuclear, 1), + new ComparableStack(ModItems.ingot_uranium_fuel, 6), + new ComparableStack(ModItems.circuit, 24, EnumCircuitType.BASIC), + new ComparableStack(ModItems.magnetron, 3), + new ComparableStack(ModBlocks.machine_lithium_battery, 1) + },1200); + makeRecipe(new ComparableStack(ModItems.sat_miner, 1), new AStack[] { + new OreDictStack(BIGMT.plate(), 24), + new ComparableStack(ModItems.motor_desh, 2), + new ComparableStack(ModItems.drill_titanium, 2), + new ComparableStack(ModItems.circuit, 12, EnumCircuitType.ADVANCED), + new ComparableStack(ModItems.fluid_barrel_full, 1, Fluids.KEROSENE.getID()), + new ComparableStack(ModItems.thruster_small, 1), + new ComparableStack(ModItems.photo_panel, 12), + new ComparableStack(ModItems.centrifuge_element, 4), + new ComparableStack(ModBlocks.machine_lithium_battery, 1) + },600); + makeRecipe(new ComparableStack(ModItems.sat_lunar_miner, 1), new AStack[] { + new ComparableStack(ModItems.ingot_meteorite, 4), + new ComparableStack(ModItems.plate_desh, 4), + new ComparableStack(ModItems.motor, 2), + new ComparableStack(ModItems.drill_titanium, 2), + new ComparableStack(ModItems.circuit, 8, EnumCircuitType.ADVANCED), + new ComparableStack(ModItems.fluid_barrel_full, 1, Fluids.KEROSENE.getID()), + new ComparableStack(ModItems.thruster_small, 1), + new ComparableStack(ModItems.photo_panel, 12), + new ComparableStack(ModBlocks.machine_lithium_battery, 1) + },600); makeRecipe(new ComparableStack(ModItems.upgrade_overdrive_1, 1), new AStack[] { new ComparableStack(ModItems.upgrade_speed_3, 1), diff --git a/src/main/java/com/hbm/inventory/recipes/CrystallizerRecipes.java b/src/main/java/com/hbm/inventory/recipes/CrystallizerRecipes.java index e4095c351..c18e36ace 100644 --- a/src/main/java/com/hbm/inventory/recipes/CrystallizerRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/CrystallizerRecipes.java @@ -83,7 +83,7 @@ public class CrystallizerRecipes extends SerializableRecipe { registerRecipe(new ComparableStack(ModBlocks.gravel_diamond), new CrystallizerRecipe(ModItems.crystal_diamond, baseTime)); registerRecipe(SRN.ingot(), new CrystallizerRecipe(ModItems.crystal_schraranium, baseTime)); - registerRecipe("sand", new CrystallizerRecipe(ModItems.ingot_fiberglass, utilityTime)); + registerRecipe(KEY_SAND, new CrystallizerRecipe(ModItems.ingot_fiberglass, utilityTime)); registerRecipe(SI.ingot(), new CrystallizerRecipe(new ItemStack(Items.quartz, 2), utilityTime), new FluidStack(Fluids.OXYGEN, 250)); registerRecipe(REDSTONE.block(), new CrystallizerRecipe(ModItems.ingot_mercury, baseTime)); registerRecipe(CINNABAR.crystal(), new CrystallizerRecipe(new ItemStack(ModItems.ingot_mercury, 3), baseTime)); diff --git a/src/main/java/com/hbm/items/ItemGenericPart.java b/src/main/java/com/hbm/items/ItemGenericPart.java index 67e129cfd..f77155547 100644 --- a/src/main/java/com/hbm/items/ItemGenericPart.java +++ b/src/main/java/com/hbm/items/ItemGenericPart.java @@ -12,7 +12,8 @@ public class ItemGenericPart extends ItemEnumMulti { public static enum EnumPartType { PISTON_PNEUMATIC("piston_pneumatic"), PISTON_HYDRAULIC("piston_hydraulic"), - PISTON_ELECTRIC("piston_electric"); + PISTON_ELECTRIC("piston_electric"), + LDE("low_density_element"); private String texName; diff --git a/src/main/java/com/hbm/main/CraftingManager.java b/src/main/java/com/hbm/main/CraftingManager.java index 545f798ce..5e7868f28 100644 --- a/src/main/java/com/hbm/main/CraftingManager.java +++ b/src/main/java/com/hbm/main/CraftingManager.java @@ -309,6 +309,7 @@ public class CraftingManager { addRecipeAuto(new ItemStack(ModItems.upgrade_muffler, 16), new Object[] { "III", "IWI", "III", 'I', ANY_RUBBER.ingot(), 'W', Blocks.wool }); addRecipeAuto(new ItemStack(ModItems.upgrade_template, 1), new Object[] { "WIW", "PCP", "WIW", 'W', CU.wireFine(), 'I', IRON.plate(), 'C', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.ANALOG), 'P', ModItems.plate_polymer }); + addRecipeAuto(new ItemStack(ModItems.upgrade_template, 1), new Object[] { "WIW", "PCP", "WIW", 'W', CU.wireFine(), 'I', ANY_PLASTIC.ingot(), 'C', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.BASIC), 'P', ModItems.plate_polymer }); addRecipeAuto(new ItemStack(Item.getItemFromBlock(ModBlocks.factory_titanium_hull), 8), new Object[] { "PIP", "I I", "PIP", 'P', TI.plate(), 'I', TI.ingot() }); addRecipeAuto(new ItemStack(Item.getItemFromBlock(ModBlocks.factory_advanced_hull), 8), new Object[] { "PIP", "I I", "PIP", 'P', ALLOY.plate(), 'I', ALLOY.ingot() }); @@ -655,11 +656,6 @@ public class CraftingManager { addRecipeAuto(new ItemStack(ModBlocks.machine_satlinker), new Object[] { "PSP", "SCS", "PSP", 'P', STEEL.plate(), 'S', STAR.ingot(), 'C', ModItems.sat_chip }); addRecipeAuto(new ItemStack(ModBlocks.machine_keyforge), new Object[] { "PCP", "WSW", "WSW", 'P', STEEL.plate(), 'S', W.ingot(), 'C', ModItems.padlock, 'W', KEY_PLANKS }); addRecipeAuto(new ItemStack(ModItems.sat_chip), new Object[] { "WWW", "CIC", "WWW", 'W', MINGRADE.wireFine(), 'C', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.ADVANCED), 'I', ANY_PLASTIC.ingot() }); - addRecipeAuto(new ItemStack(ModItems.sat_mapper), new Object[] { "H", "B", 'H', ModItems.sat_head_mapper, 'B', ModItems.sat_base }); - addRecipeAuto(new ItemStack(ModItems.sat_scanner), new Object[] { "H", "B", 'H', ModItems.sat_head_scanner, 'B', ModItems.sat_base }); - addRecipeAuto(new ItemStack(ModItems.sat_radar), new Object[] { "H", "B", 'H', ModItems.sat_head_radar, 'B', ModItems.sat_base }); - addRecipeAuto(new ItemStack(ModItems.sat_laser), new Object[] { "H", "B", 'H', ModItems.sat_head_laser, 'B', ModItems.sat_base }); - addRecipeAuto(new ItemStack(ModItems.sat_resonator), new Object[] { "H", "B", 'H', ModItems.sat_head_resonator, 'B', ModItems.sat_base }); addShapelessAuto(new ItemStack(ModItems.sat_mapper), new Object[] { ModBlocks.sat_mapper }); addShapelessAuto(new ItemStack(ModItems.sat_scanner), new Object[] { ModBlocks.sat_scanner }); addShapelessAuto(new ItemStack(ModItems.sat_radar), new Object[] { ModBlocks.sat_radar }); @@ -667,12 +663,6 @@ public class CraftingManager { addShapelessAuto(new ItemStack(ModItems.sat_resonator), new Object[] { ModBlocks.sat_resonator }); addShapelessAuto(new ItemStack(ModItems.sat_foeq), new Object[] { ModBlocks.sat_foeq }); addShapelessAuto(new ItemStack(ModItems.geiger_counter), new Object[] { ModBlocks.geiger }); - addShapelessAuto(new ItemStack(ModBlocks.sat_mapper), new Object[] { ModItems.sat_mapper }); - addShapelessAuto(new ItemStack(ModBlocks.sat_scanner), new Object[] { ModItems.sat_scanner }); - addShapelessAuto(new ItemStack(ModBlocks.sat_radar), new Object[] { ModItems.sat_radar }); - addShapelessAuto(new ItemStack(ModBlocks.sat_laser), new Object[] { ModItems.sat_laser }); - addShapelessAuto(new ItemStack(ModBlocks.sat_resonator), new Object[] { ModItems.sat_resonator }); - addShapelessAuto(new ItemStack(ModBlocks.sat_foeq), new Object[] { ModItems.sat_foeq }); addRecipeAuto(new ItemStack(ModItems.sat_interface), new Object[] { "ISI", "PCP", "PAP", 'I', STEEL.ingot(), 'S', STAR.ingot(), 'P', ModItems.plate_polymer, 'C', ModItems.sat_chip, 'A', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.ADVANCED) }); addRecipeAuto(new ItemStack(ModItems.sat_coord), new Object[] { "SII", "SCA", "SPP", 'I', STEEL.ingot(), 'S', STAR.ingot(), 'P', ModItems.plate_polymer, 'C', ModItems.sat_chip, 'A', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.ADVANCED) }); addRecipeAuto(new ItemStack(ModBlocks.machine_transformer), new Object[] { "SCS", "MDM", "SCS", 'S', IRON.ingot(), 'D', MINGRADE.ingot(), 'M',ModItems.coil_advanced_alloy, 'C', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.CAPACITOR) }); diff --git a/src/main/resources/assets/hbm/lang/de_DE.lang b/src/main/resources/assets/hbm/lang/de_DE.lang index 0bef59215..cf2fcd61d 100644 --- a/src/main/resources/assets/hbm/lang/de_DE.lang +++ b/src/main/resources/assets/hbm/lang/de_DE.lang @@ -2713,6 +2713,7 @@ item.part_copper.name=Kupferstaubkiste item.part_generic.piston_electric.name=Electrischer Kolben item.part_generic.piston_hydraulic.name=Hydraulischer Kolben item.part_generic.piston_pneumatic.name=Pneumatischer Kolben +item.part_generic.lde.name=Leichtbauteil item.part_lithium.name=Lithiumstaubkiste item.part_plutonium.name=Plutoniumstaubkiste item.particle_aelectron.name=Positronenkapsel diff --git a/src/main/resources/assets/hbm/lang/en_US.lang b/src/main/resources/assets/hbm/lang/en_US.lang index f4e888f9e..31de7f94a 100644 --- a/src/main/resources/assets/hbm/lang/en_US.lang +++ b/src/main/resources/assets/hbm/lang/en_US.lang @@ -3532,6 +3532,7 @@ item.part_copper.name=Box of Copper Dust item.part_generic.piston_electric.name=Electric Piston item.part_generic.piston_hydraulic.name=Hydraulic Piston item.part_generic.piston_pneumatic.name=Pneumatic Piston +item.part_generic.lde.name=Low-Density Element item.part_lithium.name=Box of Lithium Dust item.part_plutonium.name=Box of Plutonium Dust item.particle_aelectron.name=Positron Capsule diff --git a/src/main/resources/assets/hbm/textures/items/low_density_element.png b/src/main/resources/assets/hbm/textures/items/low_density_element.png new file mode 100644 index 0000000000000000000000000000000000000000..5894636f01dfb7a5596e5f81033bd43eee5bd2fd GIT binary patch literal 268 zcmV+n0rUQeP)ST5JewRiWKfnspt@502WAWWxdJ_>%SIv;Y4->tJsrTCr{0@0KvjvIO9uiH$K)%@{K-fV!^7vx6q~-bdmA z-g~UIk@<1@>`*-2TWb*!oO5%7zVDSzV~EJC7PTO!H?QYiWq_{h)(rrzm$S-ChzxFz z4@I7;{8tN0=>vzKry4A!7kN6~an4ayRiYZKr4I4% S<*bST0000 Date: Fri, 21 Jun 2024 14:36:37 +0200 Subject: [PATCH 56/69] *deletes half the mod* --- .../java/com/hbm/entity/EntityMappings.java | 2 - .../com/hbm/entity/missile/EntityBooster.java | 100 - .../com/hbm/entity/missile/EntityCarrier.java | 178 - src/main/java/com/hbm/items/ModItems.java | 3 - src/main/java/com/hbm/main/ClientProxy.java | 2 - src/main/java/com/hbm/main/MainRegistry.java | 1 + .../java/com/hbm/main/ResourceManager.java | 11 - .../entity/rocket/RenderBoosterMissile.java | 39 - .../entity/rocket/RenderCarrierMissile.java | 50 - .../render/item/ItemRenderMissileGeneric.java | 18 - .../render/tileentity/RendererObjTester.java | 2 - .../com/hbm/render/util/ErrorPronter.java | 24 - .../resources/assets/hbm/models/LaunchPad.obj | 302 -- .../resources/assets/hbm/models/cwis_base.obj | 44 - .../resources/assets/hbm/models/cwis_gun.obj | 438 --- .../resources/assets/hbm/models/cwis_head.obj | 613 ---- .../assets/hbm/models/cwis_rotor.obj | 202 -- .../resources/assets/hbm/models/cyclotron.obj | 2212 ------------- .../resources/assets/hbm/models/error.obj | 2909 ----------------- .../assets/hbm/models/missileBooster.obj | 416 --- .../assets/hbm/models/missileCarrier.obj | 1148 ------- .../assets/hbm/models/radar_head.obj | 404 --- .../assets/hbm/models/weapons/pch.obj | 245 -- .../assets/hbm/shaders/test_shader.frag | 25 - .../assets/hbm/shaders/test_shader.vert | 26 - src/main/resources/assets/hbm/sounds/clap.ogg | Bin 9290 -> 0 bytes src/main/resources/assets/hbm/sounds/jeff.ogg | Bin 11082 -> 0 bytes src/main/resources/assets/hbm/sounds/mug.ogg | Bin 9970 -> 0 bytes .../resources/assets/hbm/sounds/sample.ogg | Bin 119976 -> 0 bytes .../textures/items/neutron_reflector_old.png | Bin 311 -> 0 bytes .../assets/hbm/textures/items/oil_canola.png | Bin 220 -> 0 bytes .../assets/hbm/textures/items/oil_crude.png | Bin 191 -> 0 bytes .../hbm/textures/items/oilcan_bitumen.png | Bin 238 -> 0 bytes .../hbm/textures/items/oilcan_diesel.png | Bin 204 -> 0 bytes .../hbm/textures/items/oilcan_heatingoil.png | Bin 234 -> 0 bytes .../hbm/textures/items/oilcan_heavyoil.png | Bin 235 -> 0 bytes .../hbm/textures/items/oilcan_kerosene.png | Bin 230 -> 0 bytes .../hbm/textures/items/oilcan_lightoil.png | Bin 237 -> 0 bytes .../hbm/textures/items/oilcan_lubricant.png | Bin 221 -> 0 bytes .../hbm/textures/items/oilcan_naphtha.png | Bin 236 -> 0 bytes .../assets/hbm/textures/items/oilcan_oil.png | Bin 208 -> 0 bytes .../hbm/textures/items/oilcan_petroil.png | Bin 246 -> 0 bytes .../hbm/textures/items/oilcan_reclaimed.png | Bin 238 -> 0 bytes .../hbm/textures/items/oilcan_smear.png | Bin 228 -> 0 bytes .../hbm/textures/items/powder_template.png | Bin 256 -> 0 bytes .../hbm/textures/items/rubber_gloves.png | Bin 422 -> 0 bytes .../hbm/textures/items/turret_cwis_ammo.png | Bin 179 -> 0 bytes .../hbm/textures/items/turret_flamer_ammo.png | Bin 241 -> 0 bytes .../hbm/textures/items/turret_heavy_ammo.png | Bin 197 -> 0 bytes .../hbm/textures/items/turret_light_ammo.png | Bin 291 -> 0 bytes .../hbm/textures/items/turret_rocket_ammo.png | Bin 335 -> 0 bytes .../textures/items/turret_spitfire_ammo.png | Bin 203 -> 0 bytes .../hbm/textures/items/turret_tau_ammo.png | Bin 456 -> 0 bytes .../hbm/textures/items/warhead_mirv_alt.png | Bin 187 -> 0 bytes .../hbm/textures/items/warhead_mirvlet.png | Bin 233 -> 0 bytes .../items/warhead_thermo_endo_alt.png | Bin 231 -> 0 bytes .../textures/items/warhead_thermo_exo_alt.png | Bin 231 -> 0 bytes .../assets/hbm/textures/models/At4New.png | Bin 643 -> 0 bytes .../assets/hbm/textures/models/LilBoy2.png | Bin 16756 -> 0 bytes .../assets/hbm/textures/models/TestObj.png | Bin 1148 -> 0 bytes .../hbm/textures/models/mining_drill.png | Bin 14089 -> 0 bytes .../hbm/textures/models/press_body_2.png | Bin 560 -> 0 bytes .../hbm/textures/models/press_body_alt.png | Bin 3068 -> 0 bytes .../hbm/textures/models/press_head_2.png | Bin 237 -> 0 bytes .../hbm/textures/models/press_head_new.png | Bin 229 -> 0 bytes .../assets/hbm/textures/models/radar_base.png | Bin 4992 -> 0 bytes .../assets/hbm/textures/models/radar_head.png | Bin 4658 -> 0 bytes .../hbm/textures/models/textureIGenRotor.png | Bin 229 -> 0 bytes 68 files changed, 1 insertion(+), 9413 deletions(-) delete mode 100644 src/main/java/com/hbm/entity/missile/EntityBooster.java delete mode 100644 src/main/java/com/hbm/entity/missile/EntityCarrier.java delete mode 100644 src/main/java/com/hbm/render/entity/rocket/RenderBoosterMissile.java delete mode 100644 src/main/java/com/hbm/render/entity/rocket/RenderCarrierMissile.java delete mode 100644 src/main/java/com/hbm/render/util/ErrorPronter.java delete mode 100644 src/main/resources/assets/hbm/models/LaunchPad.obj delete mode 100644 src/main/resources/assets/hbm/models/cwis_base.obj delete mode 100644 src/main/resources/assets/hbm/models/cwis_gun.obj delete mode 100644 src/main/resources/assets/hbm/models/cwis_head.obj delete mode 100644 src/main/resources/assets/hbm/models/cwis_rotor.obj delete mode 100644 src/main/resources/assets/hbm/models/cyclotron.obj delete mode 100644 src/main/resources/assets/hbm/models/error.obj delete mode 100644 src/main/resources/assets/hbm/models/missileBooster.obj delete mode 100644 src/main/resources/assets/hbm/models/missileCarrier.obj delete mode 100644 src/main/resources/assets/hbm/models/radar_head.obj delete mode 100644 src/main/resources/assets/hbm/models/weapons/pch.obj delete mode 100644 src/main/resources/assets/hbm/shaders/test_shader.frag delete mode 100644 src/main/resources/assets/hbm/shaders/test_shader.vert delete mode 100644 src/main/resources/assets/hbm/sounds/clap.ogg delete mode 100644 src/main/resources/assets/hbm/sounds/jeff.ogg delete mode 100644 src/main/resources/assets/hbm/sounds/mug.ogg delete mode 100644 src/main/resources/assets/hbm/sounds/sample.ogg delete mode 100644 src/main/resources/assets/hbm/textures/items/neutron_reflector_old.png delete mode 100644 src/main/resources/assets/hbm/textures/items/oil_canola.png delete mode 100644 src/main/resources/assets/hbm/textures/items/oil_crude.png delete mode 100644 src/main/resources/assets/hbm/textures/items/oilcan_bitumen.png delete mode 100644 src/main/resources/assets/hbm/textures/items/oilcan_diesel.png delete mode 100644 src/main/resources/assets/hbm/textures/items/oilcan_heatingoil.png delete mode 100644 src/main/resources/assets/hbm/textures/items/oilcan_heavyoil.png delete mode 100644 src/main/resources/assets/hbm/textures/items/oilcan_kerosene.png delete mode 100644 src/main/resources/assets/hbm/textures/items/oilcan_lightoil.png delete mode 100644 src/main/resources/assets/hbm/textures/items/oilcan_lubricant.png delete mode 100644 src/main/resources/assets/hbm/textures/items/oilcan_naphtha.png delete mode 100644 src/main/resources/assets/hbm/textures/items/oilcan_oil.png delete mode 100644 src/main/resources/assets/hbm/textures/items/oilcan_petroil.png delete mode 100644 src/main/resources/assets/hbm/textures/items/oilcan_reclaimed.png delete mode 100644 src/main/resources/assets/hbm/textures/items/oilcan_smear.png delete mode 100644 src/main/resources/assets/hbm/textures/items/powder_template.png delete mode 100644 src/main/resources/assets/hbm/textures/items/rubber_gloves.png delete mode 100644 src/main/resources/assets/hbm/textures/items/turret_cwis_ammo.png delete mode 100644 src/main/resources/assets/hbm/textures/items/turret_flamer_ammo.png delete mode 100644 src/main/resources/assets/hbm/textures/items/turret_heavy_ammo.png delete mode 100644 src/main/resources/assets/hbm/textures/items/turret_light_ammo.png delete mode 100644 src/main/resources/assets/hbm/textures/items/turret_rocket_ammo.png delete mode 100644 src/main/resources/assets/hbm/textures/items/turret_spitfire_ammo.png delete mode 100644 src/main/resources/assets/hbm/textures/items/turret_tau_ammo.png delete mode 100644 src/main/resources/assets/hbm/textures/items/warhead_mirv_alt.png delete mode 100644 src/main/resources/assets/hbm/textures/items/warhead_mirvlet.png delete mode 100644 src/main/resources/assets/hbm/textures/items/warhead_thermo_endo_alt.png delete mode 100644 src/main/resources/assets/hbm/textures/items/warhead_thermo_exo_alt.png delete mode 100644 src/main/resources/assets/hbm/textures/models/At4New.png delete mode 100644 src/main/resources/assets/hbm/textures/models/LilBoy2.png delete mode 100644 src/main/resources/assets/hbm/textures/models/TestObj.png delete mode 100755 src/main/resources/assets/hbm/textures/models/mining_drill.png delete mode 100644 src/main/resources/assets/hbm/textures/models/press_body_2.png delete mode 100644 src/main/resources/assets/hbm/textures/models/press_body_alt.png delete mode 100644 src/main/resources/assets/hbm/textures/models/press_head_2.png delete mode 100644 src/main/resources/assets/hbm/textures/models/press_head_new.png delete mode 100644 src/main/resources/assets/hbm/textures/models/radar_base.png delete mode 100644 src/main/resources/assets/hbm/textures/models/radar_head.png delete mode 100644 src/main/resources/assets/hbm/textures/models/textureIGenRotor.png diff --git a/src/main/java/com/hbm/entity/EntityMappings.java b/src/main/java/com/hbm/entity/EntityMappings.java index 28832b449..6654eb051 100644 --- a/src/main/java/com/hbm/entity/EntityMappings.java +++ b/src/main/java/com/hbm/entity/EntityMappings.java @@ -126,8 +126,6 @@ public class EntityMappings { addEntity(EntityMissileMicro.class, "entity_missile_micronuclear", 1000); addEntity(EntityCloudSolinium.class, "entity_cloud_rainbow", 1000); addEntity(EntityRagingVortex.class, "entity_raging_vortex", 250); - addEntity(EntityCarrier.class, "entity_missile_carrier", 1000); - addEntity(EntityBooster.class, "entity_missile_booster", 1000); addEntity(EntityModBeam.class, "entity_beam_bang", 1000); addEntity(EntityMissileBHole.class, "entity_missile_blackhole", 1000); addEntity(EntityMissileSchrabidium.class, "entity_missile_schrabidium", 1000); diff --git a/src/main/java/com/hbm/entity/missile/EntityBooster.java b/src/main/java/com/hbm/entity/missile/EntityBooster.java deleted file mode 100644 index 5ddb30ae8..000000000 --- a/src/main/java/com/hbm/entity/missile/EntityBooster.java +++ /dev/null @@ -1,100 +0,0 @@ -package com.hbm.entity.missile; - -import com.hbm.entity.particle.EntityTSmokeFX; -import com.hbm.explosion.ExplosionLarge; - -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; -import net.minecraft.entity.projectile.EntityThrowable; -import net.minecraft.init.Blocks; -import net.minecraft.util.MathHelper; -import net.minecraft.util.MovingObjectPosition; -import net.minecraft.world.World; - -public class EntityBooster extends EntityThrowable { - - public EntityBooster(World p_i1582_1_) { - super(p_i1582_1_); - this.ignoreFrustumCheck = true; - } - - @Override - public void onUpdate() { - this.prevPosX = this.posX; - this.prevPosY = this.posY; - this.prevPosZ = this.posZ; - - this.posX += this.motionX; - this.posY += this.motionY; - this.posZ += this.motionZ; - - this.motionY -= 0.015; - - if(motionY < -1.5F) - motionY = -1.5F; - - this.rotation(); - - if(this.worldObj.getBlock((int)this.posX, (int)this.posY, (int)this.posZ) != Blocks.air) - { - if(!this.worldObj.isRemote) - { - ExplosionLarge.explodeFire(worldObj, posX, posY, posZ, 10F, true, false, true); - } - this.setDead(); - } - - if(!worldObj.isRemote) { - for(int i = 0; i < 2; i++) { - EntityTSmokeFX fx1 = new EntityTSmokeFX(worldObj); - fx1.posY = posY - 0.25D; - fx1.posX = posX + rand.nextGaussian() * 0.25D; - fx1.posZ = posZ + rand.nextGaussian() * 0.25D; - fx1.motionY = -0.2D; - - worldObj.spawnEntityInWorld(fx1); - } - } - - this.motionX *= 0.995; - this.motionZ *= 0.995; - } - - protected void rotation() { - float f2 = MathHelper.sqrt_double(this.motionX * this.motionX + this.motionZ * this.motionZ); - this.rotationYaw = (float)(Math.atan2(this.motionX, this.motionZ) * 180.0D / Math.PI); - - for (this.rotationPitch = (float)(Math.atan2(this.motionY, f2) * 180.0D / Math.PI) - 90; this.rotationPitch - this.prevRotationPitch < -180.0F; this.prevRotationPitch -= 360.0F) - { - ; - } - - while (this.rotationPitch - this.prevRotationPitch >= 180.0F) - { - this.prevRotationPitch += 360.0F; - } - - while (this.rotationYaw - this.prevRotationYaw < -180.0F) - { - this.prevRotationYaw -= 360.0F; - } - - while (this.rotationYaw - this.prevRotationYaw >= 180.0F) - { - this.prevRotationYaw += 360.0F; - } - } - - @Override - protected void onImpact(MovingObjectPosition p_70184_1_) { - - } - - @Override - @SideOnly(Side.CLIENT) - public boolean isInRangeToRenderDist(double distance) - { - return distance < 500000; - } - -} diff --git a/src/main/java/com/hbm/entity/missile/EntityCarrier.java b/src/main/java/com/hbm/entity/missile/EntityCarrier.java deleted file mode 100644 index 89ec901d8..000000000 --- a/src/main/java/com/hbm/entity/missile/EntityCarrier.java +++ /dev/null @@ -1,178 +0,0 @@ -package com.hbm.entity.missile; - -import com.hbm.explosion.ExplosionLarge; -import com.hbm.items.ISatChip; -import com.hbm.items.ModItems; -import com.hbm.main.MainRegistry; -import com.hbm.packet.AuxParticlePacketNT; -import com.hbm.packet.PacketDispatcher; -import com.hbm.saveddata.satellites.Satellite; - -import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.entity.projectile.EntityThrowable; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.util.MovingObjectPosition; -import net.minecraft.world.World; - -public class EntityCarrier extends EntityThrowable { - - double acceleration = 0.00D; - - private ItemStack payload; - - public EntityCarrier(World p_i1582_1_) { - super(p_i1582_1_); - this.ignoreFrustumCheck = true; - this.setSize(3.0F, 26.0F); - } - - @Override - public void onUpdate() { - - //this.setDead(); - - if(motionY < 3.0D) { - acceleration += 0.0005D; - motionY += acceleration; - } - - this.setLocationAndAngles(posX + this.motionX, posY + this.motionY, posZ + this.motionZ, 0, 0); - - if(!worldObj.isRemote) { - for(int i = 0; i < 10; i++) { - NBTTagCompound data = new NBTTagCompound(); - data.setString("type", "gasfire"); - data.setDouble("mY", -0.2D); - PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(data, posX + rand.nextGaussian() * 0.75D, posY - 0.25D, posZ + rand.nextGaussian() * 0.75D), new TargetPoint(worldObj.provider.dimensionId, posX, posY, posZ, 200)); - } - - if(this.dataWatcher.getWatchableObjectInt(8) == 1) - for(int i = 0; i < 2; i++) { - NBTTagCompound d1 = new NBTTagCompound(); - d1.setString("type", "gasfire"); - d1.setDouble("mY", -0.2D); - PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(d1, posX + rand.nextGaussian() * 0.75D + 2.5, posY - 0.25D, posZ + rand.nextGaussian() * 0.75D), new TargetPoint(worldObj.provider.dimensionId, posX, posY, posZ, 200)); - - NBTTagCompound d2 = new NBTTagCompound(); - d2.setString("type", "gasfire"); - d2.setDouble("mY", -0.2D); - PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(d2, posX + rand.nextGaussian() * 0.75D - 2.5, posY - 0.25D, posZ + rand.nextGaussian() * 0.75D), new TargetPoint(worldObj.provider.dimensionId, posX, posY, posZ, 200)); - - NBTTagCompound d3 = new NBTTagCompound(); - d3.setString("type", "gasfire"); - d3.setDouble("mY", -0.2D); - PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(d3, posX + rand.nextGaussian() * 0.75D, posY - 0.25D, posZ + rand.nextGaussian() * 0.75D + 2.5), new TargetPoint(worldObj.provider.dimensionId, posX, posY, posZ, 200)); - - NBTTagCompound d4 = new NBTTagCompound(); - d4.setString("type", "gasfire"); - d4.setDouble("mY", -0.2D); - PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(d4, posX + rand.nextGaussian() * 0.75D, posY - 0.25D, posZ + rand.nextGaussian() * 0.75D - 2.5), new TargetPoint(worldObj.provider.dimensionId, posX, posY, posZ, 200)); - } - - - if(this.ticksExisted < 20) { - ExplosionLarge.spawnShock(worldObj, posX, posY, posZ, 13 + rand.nextInt(3), 4 + rand.nextGaussian() * 2); - } - } - - if(this.posY > 300 && this.dataWatcher.getWatchableObjectInt(8) == 1) - this.disengageBoosters(); - //this.setDead(); - - if(this.posY > 600) { - deployPayload(); - } - } - - private void deployPayload() { - - if(payload != null) { - - if(payload.getItem() == ModItems.flame_pony) { - ExplosionLarge.spawnTracers(worldObj, posX, posY, posZ, 25); - for(Object p : worldObj.playerEntities) - ((EntityPlayer)p).triggerAchievement(MainRegistry.achSpace); - } - - if(payload.getItem() == ModItems.sat_foeq) { - for(Object p : worldObj.playerEntities) - ((EntityPlayer)p).triggerAchievement(MainRegistry.achFOEQ); - } - - if(payload.getItem() instanceof ISatChip) { - - int freq = ISatChip.getFreqS(payload); - - Satellite.orbit(worldObj, Satellite.getIDFromItem(payload.getItem()), freq, posX, posY, posZ); - } - } - - this.setDead(); - } - - @Override - protected void entityInit() { - this.dataWatcher.addObject(8, 1); - } - - public void setPayload(ItemStack stack) { - this.payload = stack.copy(); - } - - private void disengageBoosters() { - this.dataWatcher.updateObject(8, 0); - - if(!worldObj.isRemote) { - EntityBooster boost1 = new EntityBooster(worldObj); - boost1.posX = posX + 1.5D; - boost1.posY = posY; - boost1.posZ = posZ; - boost1.motionX = 0.45D + rand.nextDouble() * 0.2D; - boost1.motionY = motionY; - boost1.motionZ = rand.nextGaussian() * 0.1D; - worldObj.spawnEntityInWorld(boost1); - - EntityBooster boost2 = new EntityBooster(worldObj); - boost2.posX = posX - 1.5D; - boost2.posY = posY; - boost2.posZ = posZ; - boost2.motionX = -0.45D - rand.nextDouble() * 0.2D; - boost2.motionY = motionY; - boost2.motionZ = rand.nextGaussian() * 0.1D; - worldObj.spawnEntityInWorld(boost2); - - EntityBooster boost3 = new EntityBooster(worldObj); - boost3.posX = posX; - boost3.posY = posY; - boost3.posZ = posZ + 1.5D; - boost3.motionZ = 0.45D + rand.nextDouble() * 0.2D; - boost3.motionY = motionY; - boost3.motionX = rand.nextGaussian() * 0.1D; - worldObj.spawnEntityInWorld(boost3); - - EntityBooster boost4 = new EntityBooster(worldObj); - boost4.posX = posX; - boost4.posY = posY; - boost4.posZ = posZ - 1.5D; - boost4.motionZ = -0.45D - rand.nextDouble() * 0.2D; - boost4.motionY = motionY; - boost4.motionX = rand.nextGaussian() * 0.1D; - worldObj.spawnEntityInWorld(boost4); - } - } - - @Override - protected void onImpact(MovingObjectPosition p_70184_1_) { - } - - @Override - @SideOnly(Side.CLIENT) - public boolean isInRangeToRenderDist(double distance) - { - return distance < 500000; - } -} diff --git a/src/main/java/com/hbm/items/ModItems.java b/src/main/java/com/hbm/items/ModItems.java index 1c501b89d..aaa4508e1 100644 --- a/src/main/java/com/hbm/items/ModItems.java +++ b/src/main/java/com/hbm/items/ModItems.java @@ -702,7 +702,6 @@ public class ModItems { public static Item warhead_buster_medium; public static Item warhead_buster_large; public static Item warhead_nuclear; - public static Item warhead_mirvlet; public static Item warhead_mirv; public static Item warhead_volcano; @@ -3051,7 +3050,6 @@ public class ModItems { warhead_buster_medium = new Item().setUnlocalizedName("warhead_buster_medium").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":warhead_buster_medium"); warhead_buster_large = new Item().setUnlocalizedName("warhead_buster_large").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":warhead_buster_large"); warhead_nuclear = new Item().setUnlocalizedName("warhead_nuclear").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":warhead_nuclear"); - warhead_mirvlet = new Item().setUnlocalizedName("warhead_mirvlet").setCreativeTab(null).setTextureName(RefStrings.MODID + ":warhead_mirvlet"); warhead_mirv = new Item().setUnlocalizedName("warhead_mirv").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":warhead_mirv"); warhead_volcano = new Item().setUnlocalizedName("warhead_volcano").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":warhead_volcano"); @@ -6200,7 +6198,6 @@ public class ModItems { GameRegistry.registerItem(warhead_buster_medium, warhead_buster_medium.getUnlocalizedName()); GameRegistry.registerItem(warhead_buster_large, warhead_buster_large.getUnlocalizedName()); GameRegistry.registerItem(warhead_nuclear, warhead_nuclear.getUnlocalizedName()); - GameRegistry.registerItem(warhead_mirvlet, warhead_mirvlet.getUnlocalizedName()); GameRegistry.registerItem(warhead_mirv, warhead_mirv.getUnlocalizedName()); GameRegistry.registerItem(warhead_volcano, warhead_volcano.getUnlocalizedName()); GameRegistry.registerItem(fuel_tank_small, fuel_tank_small.getUnlocalizedName()); diff --git a/src/main/java/com/hbm/main/ClientProxy.java b/src/main/java/com/hbm/main/ClientProxy.java index 4718a6332..4b0bea738 100644 --- a/src/main/java/com/hbm/main/ClientProxy.java +++ b/src/main/java/com/hbm/main/ClientProxy.java @@ -734,8 +734,6 @@ public class ClientProxy extends ServerProxy { RenderingRegistry.registerEntityRenderingHandler(EntityMIRV.class, new RenderMirv()); RenderingRegistry.registerEntityRenderingHandler(EntityMissileDoomsday.class, new RenderMissileNuclear()); RenderingRegistry.registerEntityRenderingHandler(EntityMissileDoomsdayRusted.class, new RenderMissileNuclear()); - RenderingRegistry.registerEntityRenderingHandler(EntityCarrier.class, new RenderCarrierMissile()); - RenderingRegistry.registerEntityRenderingHandler(EntityBooster.class, new RenderBoosterMissile()); RenderingRegistry.registerEntityRenderingHandler(EntitySoyuz.class, new RenderSoyuz()); RenderingRegistry.registerEntityRenderingHandler(EntitySoyuzCapsule.class, new RenderSoyuzCapsule()); RenderingRegistry.registerEntityRenderingHandler(EntityMissileTaint.class, new RenderMissileTaint()); diff --git a/src/main/java/com/hbm/main/MainRegistry.java b/src/main/java/com/hbm/main/MainRegistry.java index 8043c2b04..5d21de386 100644 --- a/src/main/java/com/hbm/main/MainRegistry.java +++ b/src/main/java/com/hbm/main/MainRegistry.java @@ -1337,6 +1337,7 @@ public class MainRegistry { ignoreMappings.add("hbm:tile.ore_unobtainium"); ignoreMappings.add("hbm:tile.ore_daffergon"); ignoreMappings.add("hbm:tile.ore_verticium"); + ignoreMappings.add("hbm:item.warhead_mirvlet"); /// REMAP /// remapItems.put("hbm:item.gadget_explosive8", ModItems.early_explosive_lenses); diff --git a/src/main/java/com/hbm/main/ResourceManager.java b/src/main/java/com/hbm/main/ResourceManager.java index b1f7f9d0b..ad553a3cd 100644 --- a/src/main/java/com/hbm/main/ResourceManager.java +++ b/src/main/java/com/hbm/main/ResourceManager.java @@ -17,11 +17,6 @@ import net.minecraftforge.client.model.IModelCustom; public class ResourceManager { - //public static final Shader test_shader = ShaderManager.loadShader(new ResourceLocation(RefStrings.MODID, "shaders/test_shader")); - - //God - public static final IModelCustom error = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/error.obj")); - ////Obj TEs //Turrets @@ -246,7 +241,6 @@ public class ResourceManager { //Radar public static final IModelCustom radar_body = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/radar_base.obj"), false).asVBO(); - public static final IModelCustom radar_head = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/radar_head.obj"), false).asVBO(); public static final IModelCustom radar = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/radar.obj"), false).asVBO(); public static final IModelCustom radar_large = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/radar_large.obj"), false).asVBO(); public static final IModelCustom radar_screen = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/radar_screen.obj"), false).asVBO(); @@ -581,8 +575,6 @@ public class ResourceManager { public static final ResourceLocation autosaw_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/autosaw.png"); //Mining Drill - public static final ResourceLocation drill_body_tex = new ResourceLocation(RefStrings.MODID, "textures/models/mining_drill.png"); - public static final ResourceLocation drill_bolt_tex = new ResourceLocation(RefStrings.MODID, "textures/models/textureIGenRotor.png"); public static final ResourceLocation mining_drill_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/mining_drill.png"); //Laser Miner @@ -796,7 +788,6 @@ public class ResourceManager { public static final IModelCustom shimmer_sledge = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/shimmer_sledge.obj")); public static final IModelCustom shimmer_axe = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/shimmer_axe.obj")); public static final IModelCustom stopsign = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/weapons/stopsign.obj")); - public static final IModelCustom pch = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/weapons/pch.obj")); public static final IModelCustom gavel = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/weapons/gavel.obj")); public static final IModelCustom crucible = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/weapons/crucible.obj")); public static final IModelCustom chainsaw = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/weapons/chainsaw.obj"), false); @@ -1074,8 +1065,6 @@ public class ResourceManager { public static final IModelCustom missileNuclear = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/missile_atlas.obj")).asVBO(); public static final IModelCustom missileMicro = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/missile_micro.obj")).asVBO(); public static final IModelCustom missileShuttle = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/missileShuttle.obj")); - public static final IModelCustom missileCarrier = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/missileCarrier.obj")); - public static final IModelCustom missileBooster = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/missileBooster.obj")); public static final IModelCustom minerRocket = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/minerRocket.obj")); public static final IModelCustom soyuz = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/soyuz.obj")).asVBO(); public static final IModelCustom soyuz_lander = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/soyuz_lander.obj")).asVBO(); diff --git a/src/main/java/com/hbm/render/entity/rocket/RenderBoosterMissile.java b/src/main/java/com/hbm/render/entity/rocket/RenderBoosterMissile.java deleted file mode 100644 index c586ec6d5..000000000 --- a/src/main/java/com/hbm/render/entity/rocket/RenderBoosterMissile.java +++ /dev/null @@ -1,39 +0,0 @@ -package com.hbm.render.entity.rocket; - -import org.lwjgl.opengl.GL11; - -import com.hbm.main.ResourceManager; - -import net.minecraft.client.renderer.entity.Render; -import net.minecraft.entity.Entity; -import net.minecraft.util.ResourceLocation; - -public class RenderBoosterMissile extends Render { - - public RenderBoosterMissile() { } - - @Override - public void doRender(Entity p_76986_1_, double p_76986_2_, double p_76986_4_, double p_76986_6_, float p_76986_8_, float p_76986_9_) { - - GL11.glPushMatrix(); - GL11.glTranslatef((float)p_76986_2_, (float)p_76986_4_, (float)p_76986_6_); - GL11.glRotatef(p_76986_1_.prevRotationYaw + (p_76986_1_.rotationYaw - p_76986_1_.prevRotationYaw) * p_76986_9_ - 90.0F, 0.0F, 1.0F, 0.0F); - GL11.glRotatef(p_76986_1_.prevRotationPitch + (p_76986_1_.rotationPitch - p_76986_1_.prevRotationPitch) * p_76986_9_, 0.0F, 0.0F, 1.0F); - - GL11.glEnable(GL11.GL_LIGHTING); - GL11.glDisable(GL11.GL_CULL_FACE); - GL11.glScalef(2F, 2F, 2F); - - bindTexture(ResourceManager.missileBooster_tex); - ResourceManager.missileBooster.renderAll(); - - GL11.glEnable(GL11.GL_CULL_FACE); - - GL11.glPopMatrix(); - } - - @Override - protected ResourceLocation getEntityTexture(Entity p_110775_1_) { - return ResourceManager.missileBooster_tex; - } -} diff --git a/src/main/java/com/hbm/render/entity/rocket/RenderCarrierMissile.java b/src/main/java/com/hbm/render/entity/rocket/RenderCarrierMissile.java deleted file mode 100644 index ad6391fe6..000000000 --- a/src/main/java/com/hbm/render/entity/rocket/RenderCarrierMissile.java +++ /dev/null @@ -1,50 +0,0 @@ -package com.hbm.render.entity.rocket; - -import org.lwjgl.opengl.GL11; - -import com.hbm.main.ResourceManager; -import net.minecraft.client.renderer.entity.Render; -import net.minecraft.entity.Entity; -import net.minecraft.util.ResourceLocation; - -public class RenderCarrierMissile extends Render { - - public RenderCarrierMissile() { } - - @Override - public void doRender(Entity rocket, double p_76986_2_, double p_76986_4_, double p_76986_6_, float p_76986_8_, - float p_76986_9_) { - GL11.glPushMatrix(); - GL11.glTranslatef((float) p_76986_2_, (float) p_76986_4_, (float) p_76986_6_); - GL11.glScalef(1.0F, 1.0F, 1.0F); - - GL11.glEnable(GL11.GL_LIGHTING); - GL11.glDisable(GL11.GL_CULL_FACE); - GL11.glScalef(2F, 2F, 2F); - bindTexture(ResourceManager.missileCarrier_tex); - ResourceManager.missileCarrier.renderAll(); - - if(rocket.getDataWatcher().getWatchableObjectInt(8) == 1) { - GL11.glTranslated(0.0D, 0.5D, 0.0D); - GL11.glTranslated(1.25D, 0.0D, 0.0D); - bindTexture(ResourceManager.missileBooster_tex); - ResourceManager.missileBooster.renderAll(); - GL11.glTranslated(-2.5D, 0.0D, 0.0D); - ResourceManager.missileBooster.renderAll(); - GL11.glTranslated(1.25D, 0.0D, 0.0D); - GL11.glTranslated(0.0D, 0.0D, 1.25D); - ResourceManager.missileBooster.renderAll(); - GL11.glTranslated(0.0D, 0.0D, -2.5D); - ResourceManager.missileBooster.renderAll(); - GL11.glTranslated(0.0D, 0.0D, 1.25D); - } - - GL11.glEnable(GL11.GL_CULL_FACE); - GL11.glPopMatrix(); - } - - @Override - protected ResourceLocation getEntityTexture(Entity p_110775_1_) { - return ResourceManager.missileCarrier_tex; - } -} diff --git a/src/main/java/com/hbm/render/item/ItemRenderMissileGeneric.java b/src/main/java/com/hbm/render/item/ItemRenderMissileGeneric.java index 08bbe24d0..9985a4c4c 100644 --- a/src/main/java/com/hbm/render/item/ItemRenderMissileGeneric.java +++ b/src/main/java/com/hbm/render/item/ItemRenderMissileGeneric.java @@ -167,24 +167,6 @@ public class ItemRenderMissileGeneric implements IItemRenderer { renderers.put(new ComparableStack(ModItems.missile_doomsday), generateStandard(ResourceManager.missileDoomsday_tex, ResourceManager.missileNuclear)); renderers.put(new ComparableStack(ModItems.missile_doomsday_rusted), generateStandard(ResourceManager.missileDoomsdayRusted_tex, ResourceManager.missileNuclear)); - renderers.put(new ComparableStack(ModItems.missile_carrier), x -> { - GL11.glScalef(2F, 2F, 2F); - x.bindTexture(ResourceManager.missileCarrier_tex); - ResourceManager.missileCarrier.renderAll(); - GL11.glTranslated(0.0D, 0.5D, 0.0D); - GL11.glTranslated(1.25D, 0.0D, 0.0D); - x.bindTexture(ResourceManager.missileBooster_tex); - ResourceManager.missileBooster.renderAll(); - GL11.glTranslated(-2.5D, 0.0D, 0.0D); - ResourceManager.missileBooster.renderAll(); - GL11.glTranslated(1.25D, 0.0D, 0.0D); - GL11.glTranslated(0.0D, 0.0D, 1.25D); - ResourceManager.missileBooster.renderAll(); - GL11.glTranslated(0.0D, 0.0D, -2.5D); - ResourceManager.missileBooster.renderAll(); - GL11.glTranslated(0.0D, 0.0D, 1.25D); - }); - renderers.put(new ComparableStack(ModItems.missile_shuttle), generateStandard(ResourceManager.missileShuttle_tex, ResourceManager.missileShuttle)); } } diff --git a/src/main/java/com/hbm/render/tileentity/RendererObjTester.java b/src/main/java/com/hbm/render/tileentity/RendererObjTester.java index d6311b241..e6bcf7f06 100644 --- a/src/main/java/com/hbm/render/tileentity/RendererObjTester.java +++ b/src/main/java/com/hbm/render/tileentity/RendererObjTester.java @@ -23,8 +23,6 @@ import net.minecraft.util.ResourceLocation; public class RendererObjTester extends TileEntitySpecialRenderer { - //private static final ResourceLocation objTesterModelRL = new ResourceLocation(/*"/assets/" + */RefStrings.MODID, "models/TestObj.obj"); - private static ResourceLocation extra = new ResourceLocation(RefStrings.MODID, "textures/models/horse/dyx.png"); @Override diff --git a/src/main/java/com/hbm/render/util/ErrorPronter.java b/src/main/java/com/hbm/render/util/ErrorPronter.java deleted file mode 100644 index 421e83c08..000000000 --- a/src/main/java/com/hbm/render/util/ErrorPronter.java +++ /dev/null @@ -1,24 +0,0 @@ -package com.hbm.render.util; - -import org.lwjgl.opengl.GL11; - -import com.hbm.main.ResourceManager; - -import net.minecraft.client.Minecraft; - -public class ErrorPronter { - - public static void prontError() { - - GL11.glDisable(GL11.GL_CULL_FACE); - - GL11.glScaled(2, 2, 2); - - GL11.glColor3d(Math.sin(System.currentTimeMillis() % 1000 / 1000D * Math.PI) * 0.5 + 0.5, 0.0, 0.0); - Minecraft.getMinecraft().getTextureManager().bindTexture(ResourceManager.universal_bright); - ResourceManager.error.renderAll(); - - GL11.glEnable(GL11.GL_CULL_FACE); - } - -} diff --git a/src/main/resources/assets/hbm/models/LaunchPad.obj b/src/main/resources/assets/hbm/models/LaunchPad.obj deleted file mode 100644 index 4beabf648..000000000 --- a/src/main/resources/assets/hbm/models/LaunchPad.obj +++ /dev/null @@ -1,302 +0,0 @@ -# Blender v2.76 (sub 0) OBJ File: 'launchpad.blend' -# www.blender.org -o Cylinder -v 1.060660 0.250000 -1.060660 -v 0.000000 0.500000 -1.000000 -v 1.500000 0.250000 0.000000 -v 0.707107 0.500000 -0.707107 -v 1.060660 0.250000 1.060660 -v 1.000000 0.500000 0.000000 -v -0.000000 0.250000 1.500000 -v 0.707107 0.500000 0.707107 -v -1.060660 0.250000 1.060660 -v -0.000000 0.500000 1.000000 -v 0.000000 0.250000 -1.500000 -v -0.707107 0.500000 0.707107 -v -1.060660 0.250000 -1.060660 -v -1.000000 0.500000 -0.000000 -v -1.500000 0.250000 -0.000000 -v -0.707107 0.500000 -0.707107 -v 0.000000 0.250000 -1.000000 -v 0.707107 0.250000 -0.707107 -v 1.000000 0.250000 0.000000 -v 0.707107 0.250000 0.707107 -v -0.000000 0.250000 1.000000 -v -0.707107 0.250000 0.707107 -v -1.000000 0.250000 -0.000000 -v -0.707107 0.250000 -0.707107 -v 0.000000 0.000000 -1.500000 -v 1.060660 0.000000 -1.060660 -v 1.500000 0.000000 0.000000 -v 1.060660 0.000000 1.060660 -v -0.000000 0.000000 1.500000 -v -1.060660 0.000000 1.060660 -v -1.500000 0.000000 -0.000000 -v -1.060660 0.000000 -1.060660 -v -0.500000 0.000000 2.000000 -v 0.500000 0.000000 2.000000 -v -0.500000 0.000000 -2.000000 -v 0.500000 0.000000 -2.000000 -v -0.500000 0.125000 -2.000000 -v 0.500000 0.125000 -2.000000 -v -0.500000 0.475000 -0.750000 -v 0.500000 0.475000 -0.750000 -v -0.500000 0.475000 0.750000 -v 0.500000 0.475000 0.750000 -v 0.500000 0.125000 2.000000 -v -0.500000 0.125000 2.000000 -v -0.500000 0.100000 0.750000 -v 0.500000 0.100000 0.750000 -v -0.500000 0.100000 -0.750000 -v 0.500000 0.100000 -0.750000 -v 2.000000 0.000000 0.500000 -v 2.000000 0.000000 -0.500000 -v -2.000000 0.000000 0.500000 -v -2.000000 0.000000 -0.500000 -v -2.000000 0.125000 0.500000 -v -2.000000 0.125000 -0.500000 -v -0.750000 0.475000 0.500000 -v -0.750000 0.475000 -0.500000 -v 0.750000 0.475000 0.500000 -v 0.750000 0.475000 -0.500000 -v 2.000000 0.125000 -0.500000 -v 2.000000 0.125000 0.500000 -v 0.750000 0.100000 0.500000 -v 0.750000 0.100000 -0.500000 -v -0.750000 0.100000 0.500000 -v -0.750000 0.100000 -0.500000 -vt 0.679427 0.603288 -vt 0.736986 0.545729 -vt 0.755787 0.564530 -vt 0.736986 0.464329 -vt 0.763575 0.464329 -vt 0.679428 0.406770 -vt 0.698229 0.387969 -vt 0.598027 0.406770 -vt 0.598027 0.380181 -vt 0.540468 0.464329 -vt 0.521667 0.445528 -vt 0.540468 0.545729 -vt 0.513879 0.545729 -vt 0.598027 0.603288 -vt 0.679427 0.629877 -vt 0.579226 0.622089 -vt 0.371403 0.064091 -vt 0.370621 0.122777 -vt 0.246818 0.069553 -vt 0.028468 0.292851 -vt 0.071192 0.251063 -vt 0.122297 0.378412 -vt 0.289175 0.473320 -vt 0.246967 0.432446 -vt 0.370760 0.378824 -vt 0.456943 0.213084 -vt 0.412191 0.251217 -vt 0.204262 0.028468 -vt 0.122271 0.123726 -vt 0.028468 0.209288 -vt 0.062521 0.124396 -vt 0.121333 0.437581 -vt 0.143605 0.355918 -vt 0.245661 0.401664 -vt 0.429011 0.374227 -vt 0.552285 0.820181 -vt 0.552285 0.686813 -vt 0.658640 0.686813 -vt 0.346906 0.359230 -vt 0.145516 0.144219 -vt 0.102263 0.249691 -vt 0.382068 0.252292 -vt 0.248398 0.100332 -vt 0.348830 0.144590 -vt 0.898743 0.686813 -vt 0.898743 0.820181 -vt 0.792388 0.820181 -vt 0.658640 0.971532 -vt 0.552285 0.971532 -vt 0.552285 0.833475 -vt 0.898743 0.833475 -vt 0.792388 0.833475 -vt 0.898743 0.971532 -vt 0.658640 0.833475 -vt 0.792388 0.971532 -vt 0.753982 0.960778 -vt 0.937149 0.960778 -vt 0.513879 0.960778 -vt 0.539483 0.829891 -vt 0.671442 0.829891 -vt 0.697046 0.960778 -vt 0.413332 0.663908 -vt 0.306977 0.663908 -vt 0.306977 0.530539 -vt 0.066874 0.530539 -vt 0.173229 0.530539 -vt 0.173229 0.663908 -vt 0.413332 0.815259 -vt 0.306977 0.815259 -vt 0.306977 0.677202 -vt 0.066874 0.663908 -vt 0.173229 0.677202 -vt 0.066874 0.815259 -vt 0.066874 0.677202 -vt 0.413332 0.677202 -vt 0.028468 0.804505 -vt 0.211635 0.804505 -vt 0.173229 0.815259 -vt 0.268571 0.804505 -vt 0.294175 0.673617 -vt 0.426134 0.673617 -vt 0.451738 0.804505 -vt 0.722318 0.323245 -vt 0.513879 0.236907 -vt 0.600218 0.028468 -vt 0.698228 0.622089 -vt 0.763575 0.545729 -vt 0.755787 0.445528 -vt 0.679428 0.380181 -vt 0.579226 0.387969 -vt 0.513880 0.464329 -vt 0.598027 0.629877 -vt 0.521667 0.564530 -vt 0.288867 0.028609 -vt 0.062538 0.377750 -vt 0.371704 0.437572 -vt 0.429230 0.127457 -vt 0.121231 0.064583 -vt 0.204447 0.473603 -vt 0.456631 0.289155 -vt 0.658640 0.820181 -vt 0.792388 0.686813 -vt 0.779586 0.829891 -vt 0.911545 0.829891 -vt 0.413332 0.530539 -vt 0.054072 0.673618 -vt 0.186031 0.673618 -vt 0.722318 0.028468 -vt 0.808657 0.114806 -vt 0.808657 0.236907 -vt 0.600218 0.323245 -vt 0.513879 0.114806 -vn 0.382700 0.000000 -0.923900 -vn 0.923900 0.000000 -0.382700 -vn 0.923900 0.000000 0.382700 -vn 0.382700 0.000000 0.923900 -vn -0.382700 0.000000 0.923900 -vn -0.923900 0.000000 0.382700 -vn 0.000000 1.000000 -0.000000 -vn -0.382700 0.000000 -0.923900 -vn -0.923900 0.000000 -0.382700 -vn 0.000000 -0.996800 0.079700 -vn 0.000000 -0.996800 -0.079700 -vn 0.000000 0.963000 -0.269600 -vn 0.000000 0.000000 1.000000 -vn 0.000000 0.963000 0.269600 -vn 0.000000 0.000000 -1.000000 -vn -1.000000 0.000000 0.000000 -vn 1.000000 0.000000 0.000000 -vn 0.079700 -0.996800 0.000000 -vn -0.079700 -0.996800 -0.000000 -vn -0.269600 0.963000 -0.000000 -vn 0.269600 0.963000 0.000000 -vn 0.000000 -1.000000 0.000000 -s off -f 2/1/1 4/2/1 18/3/1 -f 4/2/2 6/4/2 19/5/2 -f 6/4/3 8/6/3 20/7/3 -f 8/6/4 10/8/4 21/9/4 -f 10/8/5 12/10/5 22/11/5 -f 12/10/6 14/12/6 23/13/6 -f 14/12/7 8/6/7 6/4/7 -f 16/14/8 2/1/8 17/15/8 -f 14/12/9 16/14/9 24/16/9 -f 17/17/7 11/18/7 13/19/7 -f 22/20/7 9/21/7 7/22/7 -f 20/23/7 5/24/7 3/25/7 -f 18/26/7 1/27/7 11/18/7 -f 24/28/7 13/19/7 15/29/7 -f 22/30/7 23/31/7 15/29/7 -f 21/32/7 7/22/7 5/24/7 -f 7/22/4 29/33/4 28/34/4 -f 19/35/7 3/25/7 1/27/7 -f 36/36/10 48/37/10 47/38/10 -f 5/24/3 28/34/3 27/39/3 -f 15/29/6 31/40/6 30/41/6 -f 9/21/5 30/41/5 29/33/5 -f 3/25/2 27/39/2 26/42/2 -f 13/19/9 32/43/9 31/40/9 -f 1/27/1 26/42/1 25/44/1 -f 11/18/8 25/44/8 32/43/8 -f 46/45/11 34/46/11 33/47/11 -f 39/48/12 40/49/12 38/50/12 -f 33/47/13 34/46/13 43/51/13 -f 44/52/14 43/51/14 42/53/14 -f 37/54/15 38/50/15 36/36/15 -f 44/52/16 41/55/16 45/56/16 -f 46/57/17 42/53/17 43/51/17 -f 48/58/17 36/59/17 38/50/17 -f 37/54/16 35/60/16 47/61/16 -f 51/62/18 52/63/18 64/64/18 -f 61/65/19 62/66/19 50/67/19 -f 55/68/20 56/69/20 54/70/20 -f 49/71/17 50/67/17 59/72/17 -f 57/73/21 60/74/21 59/72/21 -f 53/75/16 54/70/16 52/63/16 -f 60/74/13 57/73/13 61/76/13 -f 62/77/15 58/78/15 59/72/15 -f 64/79/15 52/80/15 54/70/15 -f 53/75/13 51/81/13 63/82/13 -f 28/83/22 30/84/22 32/85/22 -f 17/86/1 2/1/1 18/3/1 -f 18/87/2 4/2/2 19/5/2 -f 19/88/3 6/4/3 20/7/3 -f 20/89/4 8/6/4 21/9/4 -f 21/90/5 10/8/5 22/11/5 -f 22/91/6 12/10/6 23/13/6 -f 6/4/7 4/2/7 2/1/7 -f 2/1/7 16/14/7 6/4/7 -f 14/12/7 12/10/7 10/8/7 -f 10/8/7 8/6/7 14/12/7 -f 6/4/7 16/14/7 14/12/7 -f 24/92/8 16/14/8 17/15/8 -f 23/93/9 14/12/9 24/16/9 -f 24/94/7 17/17/7 13/19/7 -f 21/95/7 22/20/7 7/22/7 -f 19/96/7 20/23/7 3/25/7 -f 17/97/7 18/26/7 11/18/7 -f 23/98/7 24/28/7 15/29/7 -f 9/21/7 22/30/7 15/29/7 -f 20/99/7 21/32/7 5/24/7 -f 5/24/4 7/22/4 28/34/4 -f 18/100/7 19/35/7 1/27/7 -f 35/101/10 36/36/10 47/38/10 -f 3/25/3 5/24/3 27/39/3 -f 9/21/6 15/29/6 30/41/6 -f 7/22/5 9/21/5 29/33/5 -f 1/27/2 3/25/2 26/42/2 -f 15/29/9 13/19/9 31/40/9 -f 11/18/1 1/27/1 25/44/1 -f 13/19/8 11/18/8 32/43/8 -f 45/102/11 46/45/11 33/47/11 -f 37/54/12 39/48/12 38/50/12 -f 44/52/13 33/47/13 43/51/13 -f 41/55/14 44/52/14 42/53/14 -f 35/101/15 37/54/15 36/36/15 -f 33/103/16 44/52/16 45/56/16 -f 34/104/17 46/57/17 43/51/17 -f 40/49/17 48/58/17 38/50/17 -f 39/48/16 37/54/16 47/61/16 -f 63/105/18 51/62/18 64/64/18 -f 49/71/19 61/65/19 50/67/19 -f 53/75/20 55/68/20 54/70/20 -f 60/74/17 49/71/17 59/72/17 -f 58/78/21 57/73/21 59/72/21 -f 51/62/16 53/75/16 52/63/16 -f 49/106/13 60/74/13 61/76/13 -f 50/107/15 62/77/15 59/72/15 -f 56/69/15 64/79/15 54/70/15 -f 55/68/13 53/75/13 63/82/13 -f 32/85/22 25/108/22 26/109/22 -f 26/109/22 27/110/22 28/83/22 -f 28/83/22 29/111/22 30/84/22 -f 30/84/22 31/112/22 32/85/22 -f 32/85/22 26/109/22 28/83/22 diff --git a/src/main/resources/assets/hbm/models/cwis_base.obj b/src/main/resources/assets/hbm/models/cwis_base.obj deleted file mode 100644 index 47dc23c11..000000000 --- a/src/main/resources/assets/hbm/models/cwis_base.obj +++ /dev/null @@ -1,44 +0,0 @@ -# Blender v2.76 (sub 0) OBJ File: 'cwis_base.blend' -# www.blender.org -o Cube_Cube.001 -v -1.000000 0.000000 1.000000 -v -1.000000 0.250000 1.000000 -v -1.000000 0.000000 -1.000000 -v -1.000000 0.250000 -1.000000 -v 1.000000 0.000000 1.000000 -v 1.000000 0.250000 1.000000 -v 1.000000 0.000000 -1.000000 -v 1.000000 0.250000 -1.000000 -vt 0.444444 0.444444 -vt 0.444444 0.500000 -vt 0.000000 0.500000 -vt 0.888889 0.444444 -vt 0.888889 0.500000 -vt 0.444444 1.000000 -vt 0.444444 0.944444 -vt 0.888888 0.944444 -vt 0.000000 1.000000 -vt 0.000000 0.944444 -vt 0.444444 0.000000 -vt 0.000000 0.444444 -vt 0.888888 1.000000 -vt 0.000000 0.000000 -vn -1.000000 0.000000 0.000000 -vn 0.000000 0.000000 -1.000000 -vn 1.000000 0.000000 0.000000 -vn 0.000000 0.000000 1.000000 -vn 0.000000 -1.000000 0.000000 -vn 0.000000 1.000000 0.000000 -s off -f 4/1/1 3/2/1 1/3/1 -f 8/4/2 7/5/2 3/2/2 -f 6/6/3 5/7/3 7/8/3 -f 2/9/4 1/10/4 5/7/4 -f 3/2/5 7/7/5 5/10/5 -f 8/11/6 4/1/6 2/12/6 -f 2/12/1 4/1/1 1/3/1 -f 4/1/2 8/4/2 3/2/2 -f 8/13/3 6/6/3 7/8/3 -f 6/6/4 2/9/4 5/7/4 -f 1/3/5 3/2/5 5/10/5 -f 6/14/6 8/11/6 2/12/6 diff --git a/src/main/resources/assets/hbm/models/cwis_gun.obj b/src/main/resources/assets/hbm/models/cwis_gun.obj deleted file mode 100644 index b0a3f9bfc..000000000 --- a/src/main/resources/assets/hbm/models/cwis_gun.obj +++ /dev/null @@ -1,438 +0,0 @@ -# Blender v2.76 (sub 0) OBJ File: 'cwis_gun.blend' -# www.blender.org -o Cylinder -v -0.000000 0.125000 0.950000 -v -0.000000 0.125000 1.050000 -v 0.088388 0.088388 0.950000 -v 0.088388 0.088388 1.050000 -v 0.125000 -0.000000 0.950000 -v 0.125000 -0.000000 1.050000 -v 0.088388 -0.088388 0.950000 -v 0.088388 -0.088388 1.050000 -v -0.000000 -0.125000 0.950000 -v -0.000000 -0.125000 1.050000 -v -0.088388 -0.088388 0.950000 -v -0.088388 -0.088388 1.050000 -v -0.125000 0.000000 0.950000 -v -0.125000 0.000000 1.050000 -v -0.088388 0.088388 0.950000 -v -0.088388 0.088388 1.050000 -v -0.000000 0.125000 0.450000 -v -0.000000 0.125000 0.550000 -v 0.088388 0.088388 0.450000 -v 0.088388 0.088388 0.550000 -v 0.125000 -0.000000 0.450000 -v 0.125000 -0.000000 0.550000 -v 0.088388 -0.088388 0.450000 -v 0.088388 -0.088388 0.550000 -v -0.000000 -0.125000 0.450000 -v -0.000000 -0.125000 0.550000 -v -0.088388 -0.088388 0.450000 -v -0.088388 -0.088388 0.550000 -v -0.125000 0.000000 0.450000 -v -0.125000 0.000000 0.550000 -v -0.088388 0.088388 0.450000 -v -0.088388 0.088388 0.550000 -v -0.000000 0.125000 1.450000 -v -0.000000 0.125000 1.950000 -v 0.088388 0.088388 1.450000 -v 0.088388 0.088388 1.950000 -v 0.125000 -0.000000 1.450000 -v 0.125000 -0.000000 1.950000 -v 0.088388 -0.088388 1.450000 -v 0.088388 -0.088388 1.950000 -v -0.000000 -0.125000 1.450000 -v -0.000000 -0.125000 1.950000 -v -0.088388 -0.088388 1.450000 -v -0.088388 -0.088388 1.950000 -v -0.125000 0.000000 1.450000 -v -0.125000 0.000000 1.950000 -v -0.088388 0.088388 1.450000 -v -0.088388 0.088388 1.950000 -v -0.025000 0.050000 2.000000 -v -0.025000 0.100000 2.000000 -v -0.025000 0.050000 0.550000 -v -0.025000 0.100000 0.550000 -v 0.025000 0.050000 2.000000 -v 0.025000 0.100000 2.000000 -v 0.025000 0.050000 0.550000 -v 0.025000 0.100000 0.550000 -v -0.025000 -0.100000 2.000000 -v -0.025000 -0.050000 2.000000 -v -0.025000 -0.100000 0.550000 -v -0.025000 -0.050000 0.550000 -v 0.025000 -0.100000 2.000000 -v 0.025000 -0.050000 2.000000 -v 0.025000 -0.100000 0.550000 -v 0.025000 -0.050000 0.550000 -v 0.030801 0.046651 2.000000 -v 0.074103 0.071651 2.000000 -v 0.030801 0.046651 0.550000 -v 0.074103 0.071651 0.550000 -v 0.055801 0.003349 2.000000 -v 0.099103 0.028349 2.000000 -v 0.055801 0.003349 0.550000 -v 0.099103 0.028349 0.550000 -v -0.099103 -0.028349 2.000000 -v -0.055801 -0.003349 2.000000 -v -0.099103 -0.028349 0.550000 -v -0.055801 -0.003349 0.550000 -v -0.074103 -0.071651 2.000000 -v -0.030801 -0.046651 2.000000 -v -0.074103 -0.071651 0.550000 -v -0.030801 -0.046651 0.550000 -v 0.055801 -0.003349 2.000000 -v 0.099103 -0.028349 2.000000 -v 0.055801 -0.003349 0.550000 -v 0.099103 -0.028349 0.550000 -v 0.030801 -0.046651 2.000000 -v 0.074103 -0.071651 2.000000 -v 0.030801 -0.046651 0.550000 -v 0.074103 -0.071651 0.550000 -v -0.074103 0.071651 2.000000 -v -0.030801 0.046651 2.000000 -v -0.074103 0.071651 0.550000 -v -0.030801 0.046651 0.550000 -v -0.099103 0.028349 2.000000 -v -0.055801 0.003349 2.000000 -v -0.099103 0.028349 0.550000 -v -0.055801 0.003349 0.550000 -vt 0.550118 0.760811 -vt 0.591204 0.760811 -vt 0.591204 0.803757 -vt 0.632291 0.760811 -vt 0.673377 0.760811 -vt 0.673377 0.803757 -vt 0.714463 0.760811 -vt 0.714463 0.803757 -vt 0.385773 0.760811 -vt 0.426859 0.760811 -vt 0.426859 0.803757 -vt 0.467946 0.760811 -vt 0.781571 0.779002 -vt 0.752518 0.708863 -vt 0.822657 0.679811 -vt 0.509032 0.760811 -vt 0.550118 0.803757 -vt 0.509032 0.803757 -vt 0.781571 0.916248 -vt 0.752519 0.846109 -vt 0.822657 0.817057 -vt 0.550118 0.679811 -vt 0.550118 0.722756 -vt 0.509032 0.722756 -vt 0.467946 0.722756 -vt 0.467946 0.679811 -vt 0.426859 0.722756 -vt 0.426859 0.679811 -vt 0.385773 0.722756 -vt 0.385773 0.679811 -vt 0.714463 0.722756 -vt 0.673377 0.722756 -vt 0.673377 0.679811 -vt 0.632291 0.722756 -vt 0.951920 0.118219 -vt 0.881781 0.089166 -vt 0.910834 0.019028 -vt 0.591204 0.722756 -vt 0.632291 0.679811 -vt 0.183373 0.233755 -vt 0.142286 0.233755 -vt 0.142286 0.019028 -vt 0.101200 0.233755 -vt 0.101200 0.019028 -vt 0.060114 0.233755 -vt 0.060114 0.019028 -vt 0.019028 0.233755 -vt 0.019028 0.019028 -vt 0.347718 0.233755 -vt 0.306632 0.233755 -vt 0.306632 0.019028 -vt 0.265545 0.233755 -vt 0.265545 0.019028 -vt 0.414825 0.941003 -vt 0.414825 0.841812 -vt 0.455912 0.841812 -vt 0.224459 0.019028 -vt 0.224459 0.233755 -vt 0.552072 0.941003 -vt 0.552072 0.841812 -vt 0.593158 0.841812 -vt 0.676830 0.019028 -vt 0.698302 0.019028 -vt 0.698303 0.641726 -vt 0.509936 0.019028 -vt 0.531409 0.019028 -vt 0.531408 0.641726 -vt 0.655356 0.641726 -vt 0.633883 0.641726 -vt 0.633884 0.019028 -vt 0.266926 0.293283 -vt 0.266926 0.271810 -vt 0.288398 0.271810 -vt 0.719775 0.019028 -vt 0.719777 0.641726 -vt 0.655357 0.019028 -vt 0.676830 0.641726 -vt 0.574354 0.641726 -vt 0.552882 0.641726 -vt 0.552881 0.019028 -vt 0.266926 0.352811 -vt 0.266926 0.331338 -vt 0.288398 0.331338 -vt 0.574355 0.019028 -vt 0.595827 0.019028 -vt 0.595828 0.641726 -vt 0.061974 0.271810 -vt 0.083446 0.271810 -vt 0.083448 0.894508 -vt 0.757834 0.019028 -vt 0.779306 0.019028 -vt 0.779306 0.641726 -vt 0.040500 0.894508 -vt 0.019028 0.894508 -vt 0.019028 0.271810 -vt 0.288398 0.590923 -vt 0.266926 0.590923 -vt 0.266926 0.569450 -vt 0.104919 0.271810 -vt 0.104921 0.894508 -vt 0.040501 0.271810 -vt 0.061974 0.894508 -vt 0.822252 0.641725 -vt 0.800780 0.641726 -vt 0.800779 0.019028 -vt 0.288398 0.531395 -vt 0.266926 0.531395 -vt 0.266926 0.509922 -vt 0.822253 0.019028 -vt 0.843725 0.019028 -vt 0.843726 0.641726 -vt 0.428934 0.019043 -vt 0.450407 0.019050 -vt 0.450193 0.641748 -vt 0.142978 0.271810 -vt 0.164451 0.271810 -vt 0.164450 0.894508 -vt 0.407245 0.641733 -vt 0.385773 0.641726 -vt 0.385988 0.019028 -vt 0.266926 0.450394 -vt 0.288398 0.450394 -vt 0.288398 0.471867 -vt 0.471879 0.019057 -vt 0.471667 0.641755 -vt 0.407462 0.019035 -vt 0.428719 0.641741 -vt 0.207397 0.894508 -vt 0.185924 0.894508 -vt 0.185923 0.271810 -vt 0.288398 0.390866 -vt 0.288398 0.412339 -vt 0.266926 0.412339 -vt 0.207397 0.271810 -vt 0.228869 0.271810 -vt 0.228870 0.894508 -vt 0.632291 0.803757 -vt 0.385773 0.803757 -vt 0.467946 0.803757 -vt 0.851710 0.708863 -vt 0.851710 0.749949 -vt 0.822657 0.779002 -vt 0.752519 0.749949 -vt 0.781571 0.679811 -vt 0.851710 0.846109 -vt 0.851710 0.887195 -vt 0.822657 0.916248 -vt 0.752518 0.887195 -vt 0.781571 0.817057 -vt 0.509032 0.679811 -vt 0.714463 0.679811 -vt 0.951920 0.019028 -vt 0.980972 0.048080 -vt 0.980972 0.089166 -vt 0.910834 0.118219 -vt 0.881781 0.048080 -vt 0.591204 0.679811 -vt 0.183373 0.019028 -vt 0.347718 0.019028 -vt 0.484964 0.870865 -vt 0.484964 0.911951 -vt 0.455912 0.941003 -vt 0.385773 0.911951 -vt 0.385773 0.870865 -vt 0.622210 0.870864 -vt 0.622210 0.911951 -vt 0.593158 0.941003 -vt 0.523019 0.911951 -vt 0.523019 0.870864 -vt 0.509934 0.641726 -vt 0.288398 0.293283 -vt 0.288398 0.352811 -vt 0.757832 0.641725 -vt 0.288398 0.569450 -vt 0.288398 0.509922 -vt 0.142977 0.894508 -vt 0.266926 0.471867 -vt 0.266926 0.390866 -vn 0.382700 0.923900 0.000000 -vn 0.923900 0.382700 -0.000000 -vn 0.923900 -0.382700 0.000000 -vn 0.382700 -0.923900 0.000000 -vn -0.382700 -0.923900 0.000000 -vn -0.923900 -0.382700 0.000000 -vn 0.000000 0.000000 1.000000 -vn -0.382700 0.923900 0.000000 -vn -0.923900 0.382700 -0.000000 -vn -0.000000 -0.000000 -1.000000 -vn -1.000000 0.000000 0.000000 -vn 1.000000 0.000000 0.000000 -vn 0.000000 -1.000000 -0.000000 -vn 0.000000 1.000000 0.000000 -vn -0.500000 0.866000 -0.000000 -vn 0.500000 -0.866000 0.000000 -vn -0.866000 -0.500000 -0.000000 -vn 0.866000 0.500000 0.000000 -vn 0.500000 0.866000 -0.000000 -vn -0.500000 -0.866000 0.000000 -vn -0.866000 0.500000 -0.000000 -vn 0.866000 -0.500000 0.000000 -s off -f 2/1/1 4/2/1 3/3/1 -f 3/3/2 4/2/2 6/4/2 -f 6/4/3 8/5/3 7/6/3 -f 8/5/4 10/7/4 9/8/4 -f 10/9/5 12/10/5 11/11/5 -f 11/11/6 12/10/6 14/12/6 -f 14/13/7 10/14/7 6/15/7 -f 16/16/8 2/1/8 1/17/8 -f 14/12/9 16/16/9 15/18/9 -f 7/19/10 11/20/10 15/21/10 -f 17/22/1 18/23/1 20/24/1 -f 20/24/2 22/25/2 21/26/2 -f 22/25/3 24/27/3 23/28/3 -f 24/27/4 26/29/4 25/30/4 -f 26/31/5 28/32/5 27/33/5 -f 27/33/6 28/32/6 30/34/6 -f 30/35/7 26/36/7 22/37/7 -f 32/38/8 18/23/8 17/22/8 -f 29/39/9 30/34/9 32/38/9 -f 34/40/1 36/41/1 35/42/1 -f 36/41/2 38/43/2 37/44/2 -f 38/43/3 40/45/3 39/46/3 -f 40/45/4 42/47/4 41/48/4 -f 42/49/5 44/50/5 43/51/5 -f 44/50/6 46/52/6 45/53/6 -f 46/54/7 40/55/7 38/56/7 -f 47/57/8 48/58/8 34/40/8 -f 46/52/9 48/58/9 47/57/9 -f 39/59/10 45/60/10 47/61/10 -f 52/62/11 51/63/11 49/64/11 -f 60/65/11 59/66/11 57/67/11 -f 54/68/12 53/69/12 55/70/12 -f 50/71/7 49/72/7 53/73/7 -f 51/63/13 55/74/13 53/75/13 -f 56/76/14 52/62/14 50/77/14 -f 62/78/12 61/79/12 63/80/12 -f 58/81/7 57/82/7 61/83/7 -f 59/66/13 63/80/13 61/79/13 -f 64/84/14 60/85/14 58/86/14 -f 68/87/15 67/88/15 65/89/15 -f 76/90/15 75/91/15 73/92/15 -f 70/93/16 69/94/16 71/95/16 -f 66/96/7 65/97/7 69/98/7 -f 67/88/17 71/99/17 69/100/17 -f 72/101/18 68/87/18 66/102/18 -f 78/103/16 77/104/16 79/105/16 -f 74/106/7 73/107/7 77/108/7 -f 75/91/17 79/105/17 77/104/17 -f 80/109/18 76/110/18 74/111/18 -f 84/112/19 83/113/19 81/114/19 -f 92/115/19 91/116/19 89/117/19 -f 86/118/20 85/119/20 87/120/20 -f 82/121/7 81/122/7 85/123/7 -f 83/113/21 87/124/21 85/125/21 -f 88/126/22 84/112/22 82/127/22 -f 94/128/20 93/129/20 95/130/20 -f 94/131/7 90/132/7 89/133/7 -f 91/116/21 95/130/21 93/129/21 -f 96/134/22 92/135/22 90/136/22 -f 1/17/1 2/1/1 3/3/1 -f 5/137/2 3/3/2 6/4/2 -f 5/137/3 6/4/3 7/6/3 -f 7/6/4 8/5/4 9/8/4 -f 9/138/5 10/9/5 11/11/5 -f 13/139/6 11/11/6 14/12/6 -f 6/15/7 4/140/7 2/141/7 -f 2/141/7 16/142/7 14/13/7 -f 14/13/7 12/143/7 10/14/7 -f 10/14/7 8/144/7 6/15/7 -f 6/15/7 2/141/7 14/13/7 -f 15/18/8 16/16/8 1/17/8 -f 13/139/9 14/12/9 15/18/9 -f 15/21/10 1/145/10 3/146/10 -f 3/146/10 5/147/10 15/21/10 -f 7/19/10 9/148/10 11/20/10 -f 11/20/10 13/149/10 15/21/10 -f 15/21/10 5/147/10 7/19/10 -f 19/150/1 17/22/1 20/24/1 -f 19/150/2 20/24/2 21/26/2 -f 21/26/3 22/25/3 23/28/3 -f 23/28/4 24/27/4 25/30/4 -f 25/151/5 26/31/5 27/33/5 -f 29/39/6 27/33/6 30/34/6 -f 22/37/7 20/152/7 18/153/7 -f 18/153/7 32/154/7 30/35/7 -f 30/35/7 28/155/7 26/36/7 -f 26/36/7 24/156/7 22/37/7 -f 22/37/7 18/153/7 30/35/7 -f 31/157/8 32/38/8 17/22/8 -f 31/157/9 29/39/9 32/38/9 -f 33/158/1 34/40/1 35/42/1 -f 35/42/2 36/41/2 37/44/2 -f 37/44/3 38/43/3 39/46/3 -f 39/46/4 40/45/4 41/48/4 -f 41/159/5 42/49/5 43/51/5 -f 43/51/6 44/50/6 45/53/6 -f 38/56/7 36/160/7 34/161/7 -f 34/161/7 48/162/7 46/54/7 -f 46/54/7 44/163/7 42/164/7 -f 42/164/7 40/55/7 46/54/7 -f 38/56/7 34/161/7 46/54/7 -f 33/158/8 47/57/8 34/40/8 -f 45/53/9 46/52/9 47/57/9 -f 47/61/10 33/165/10 35/166/10 -f 35/166/10 37/167/10 47/61/10 -f 39/59/10 41/168/10 43/169/10 -f 43/169/10 45/60/10 39/59/10 -f 47/61/10 37/167/10 39/59/10 -f 50/77/11 52/62/11 49/64/11 -f 58/170/11 60/65/11 57/67/11 -f 56/76/12 54/68/12 55/70/12 -f 54/171/7 50/71/7 53/73/7 -f 49/64/13 51/63/13 53/75/13 -f 54/68/14 56/76/14 50/77/14 -f 64/84/12 62/78/12 63/80/12 -f 62/172/7 58/81/7 61/83/7 -f 57/67/13 59/66/13 61/79/13 -f 62/78/14 64/84/14 58/86/14 -f 66/102/15 68/87/15 65/89/15 -f 74/173/15 76/90/15 73/92/15 -f 72/101/16 70/93/16 71/95/16 -f 70/174/7 66/96/7 69/98/7 -f 65/89/17 67/88/17 69/100/17 -f 70/93/18 72/101/18 66/102/18 -f 80/109/16 78/103/16 79/105/16 -f 78/175/7 74/106/7 77/108/7 -f 73/92/17 75/91/17 77/104/17 -f 78/103/18 80/109/18 74/111/18 -f 82/127/19 84/112/19 81/114/19 -f 90/176/19 92/115/19 89/117/19 -f 88/126/20 86/118/20 87/120/20 -f 86/177/7 82/121/7 85/123/7 -f 81/114/21 83/113/21 85/125/21 -f 86/118/22 88/126/22 82/127/22 -f 96/134/20 94/128/20 95/130/20 -f 93/178/7 94/131/7 89/133/7 -f 89/117/21 91/116/21 93/129/21 -f 94/128/22 96/134/22 90/136/22 diff --git a/src/main/resources/assets/hbm/models/cwis_head.obj b/src/main/resources/assets/hbm/models/cwis_head.obj deleted file mode 100644 index fe093b5d8..000000000 --- a/src/main/resources/assets/hbm/models/cwis_head.obj +++ /dev/null @@ -1,613 +0,0 @@ -# Blender v2.76 (sub 0) OBJ File: 'cwis_head.blend' -# www.blender.org -o Cube.001_Cube.002 -v -0.500000 -0.250000 0.500000 -v -0.500000 0.250000 0.500000 -v -0.500000 -0.250000 -0.500000 -v -0.500000 0.250000 -0.500000 -v 0.500000 -0.250000 0.500000 -v 0.500000 0.250000 0.500000 -v 0.500000 -0.250000 -0.500000 -v 0.500000 0.250000 -0.500000 -v -0.187500 -0.187500 1.000000 -v -0.187500 0.187500 1.000000 -v 0.187500 -0.187500 1.000000 -v 0.187500 0.187500 1.000000 -v 0.250000 2.183013 0.000000 -v 0.000000 2.250000 0.000000 -v 0.000000 0.250000 -0.500000 -v 0.250000 0.250000 -0.433013 -v 0.433013 0.250000 -0.250000 -v 0.500000 0.250000 0.000000 -v 0.433013 0.250000 0.250000 -v 0.250000 0.250000 0.433013 -v 0.000000 0.250000 0.500000 -v -0.250000 0.250000 0.433013 -v -0.433013 0.250000 0.250000 -v -0.500000 0.250000 0.000000 -v -0.433013 0.250000 -0.250000 -v -0.250000 0.250000 -0.433013 -v 0.433013 2.000000 0.000000 -v 0.500000 1.750000 0.000000 -v -0.433013 1.750000 0.250000 -v 0.433013 1.750000 -0.250000 -v 0.375000 2.000000 -0.216506 -v 0.216506 2.183013 -0.125000 -v -0.500000 1.750000 0.000000 -v -0.433013 2.000000 0.000000 -v -0.250000 2.183012 0.000000 -v -0.375000 2.000000 0.216506 -v -0.216507 2.183012 0.125000 -v -0.250000 1.750000 0.433013 -v 0.250000 1.750000 -0.433013 -v 0.216506 2.000000 -0.375000 -v 0.125000 2.183013 -0.216506 -v -0.216506 2.000000 0.375000 -v -0.125000 2.183012 0.216507 -v 0.000000 1.750000 0.500000 -v -0.000000 1.750000 -0.500000 -v -0.000000 2.000000 -0.433013 -v -0.000000 2.183013 -0.250000 -v 0.000000 2.000000 0.433013 -v 0.000000 2.183012 0.250000 -v 0.250000 1.750000 0.433013 -v -0.250000 1.750000 -0.433013 -v -0.216507 2.000000 -0.375000 -v -0.125000 2.183013 -0.216506 -v 0.216507 2.000000 0.375000 -v 0.125000 2.183012 0.216507 -v 0.433013 1.750000 0.250000 -v -0.433013 1.750000 -0.250000 -v -0.375000 2.000000 -0.216506 -v -0.216507 2.183013 -0.125000 -v 0.375000 2.000000 0.216506 -v 0.216507 2.183012 0.125000 -v 0.000000 -0.250000 -0.650000 -v 0.000000 -0.250000 0.500000 -v 0.125000 -0.283494 -0.650000 -v 0.125000 -0.283494 0.500000 -v 0.216506 -0.375000 -0.650000 -v 0.216506 -0.375000 0.500000 -v 0.250000 -0.500000 -0.650000 -v 0.250000 -0.500000 0.500000 -v 0.216506 -0.625000 -0.650000 -v 0.216506 -0.625000 0.500000 -v 0.125000 -0.716506 -0.650000 -v 0.125000 -0.716506 0.500000 -v 0.000000 -0.750000 -0.650000 -v 0.000000 -0.750000 0.500000 -v -0.125000 -0.716506 -0.650000 -v -0.125000 -0.716506 0.500000 -v -0.216506 -0.625000 -0.650000 -v -0.216506 -0.625000 0.500000 -v -0.250000 -0.500000 -0.650000 -v -0.250000 -0.500000 0.500000 -v -0.216506 -0.375000 -0.650000 -v -0.216506 -0.375000 0.500000 -v -0.125000 -0.283494 -0.650000 -v -0.125000 -0.283494 0.500000 -v 0.106250 -0.315970 0.650000 -v -0.000000 -0.287500 0.650000 -v 0.184030 -0.393750 0.650000 -v 0.212500 -0.500000 0.650000 -v 0.184030 -0.606250 0.650000 -v 0.106250 -0.684030 0.650000 -v 0.000000 -0.712500 0.650000 -v -0.106250 -0.684030 0.650000 -v -0.184030 -0.606250 0.650000 -v -0.212500 -0.500000 0.650000 -v -0.184030 -0.393750 0.650000 -v -0.106250 -0.315970 0.650000 -v -0.300000 -0.500000 0.300000 -v -0.400000 -0.250000 0.400000 -v -0.300000 -0.500000 0.250000 -v -0.400000 -0.250000 0.150000 -v 0.300000 -0.500000 0.300000 -v 0.400000 -0.250000 0.400000 -v 0.300000 -0.500000 0.250000 -v 0.400000 -0.250000 0.150000 -v -0.300000 -0.500000 -0.250000 -v -0.400000 -0.250000 -0.150000 -v -0.300000 -0.500000 -0.300000 -v -0.400000 -0.250000 -0.400000 -v 0.300000 -0.500000 -0.250000 -v 0.400000 -0.250000 -0.150000 -v 0.300000 -0.500000 -0.300000 -v 0.400000 -0.250000 -0.400000 -vt 0.192029 0.192029 -vt 0.192029 0.280351 -vt 0.015385 0.280351 -vt 0.368673 0.192029 -vt 0.368673 0.280351 -vt 0.545317 0.192029 -vt 0.545317 0.280351 -vt 0.807971 0.378738 -vt 0.807971 0.290416 -vt 0.984615 0.290416 -vt 0.368673 0.456995 -vt 0.192029 0.015385 -vt 0.680241 0.170636 -vt 0.680241 0.104395 -vt 0.746483 0.104395 -vt 0.801684 0.259645 -vt 0.625040 0.259645 -vt 0.625040 0.015385 -vt 0.801684 0.015385 -vt 0.576088 0.181676 -vt 0.564012 0.487768 -vt 0.564011 0.752734 -vt 0.518292 0.752734 -vt 0.472573 0.752733 -vt 0.472575 0.487768 -vt 0.426855 0.752733 -vt 0.426856 0.487767 -vt 0.381136 0.752733 -vt 0.381137 0.487767 -vt 0.335417 0.752733 -vt 0.278268 0.843295 -vt 0.266839 0.887562 -vt 0.255409 0.843295 -vt 0.247042 0.798349 -vt 0.286636 0.798349 -vt 0.243980 0.752733 -vt 0.323987 0.843296 -vt 0.312557 0.887563 -vt 0.301128 0.843296 -vt 0.292761 0.798349 -vt 0.332355 0.798349 -vt 0.289698 0.752733 -vt 0.369706 0.843296 -vt 0.358276 0.887563 -vt 0.346847 0.843296 -vt 0.403995 0.887563 -vt 0.392565 0.843296 -vt 0.415425 0.843296 -vt 0.449713 0.887563 -vt 0.438284 0.843296 -vt 0.461143 0.843296 -vt 0.484003 0.843296 -vt 0.506862 0.843296 -vt 0.495432 0.887563 -vt 0.529722 0.843296 -vt 0.552581 0.843296 -vt 0.541151 0.887563 -vt 0.049674 0.843295 -vt 0.038244 0.887562 -vt 0.026815 0.843295 -vt 0.095393 0.843295 -vt 0.083963 0.887562 -vt 0.072534 0.843295 -vt 0.141112 0.843295 -vt 0.129682 0.887562 -vt 0.118253 0.843295 -vt 0.163971 0.843295 -vt 0.186831 0.843295 -vt 0.175401 0.887562 -vt 0.232550 0.843295 -vt 0.221120 0.887563 -vt 0.209690 0.843295 -vt 0.201323 0.798349 -vt 0.198261 0.752732 -vt 0.240917 0.798349 -vt 0.195198 0.798348 -vt 0.155604 0.798348 -vt 0.109886 0.798348 -vt 0.106823 0.752732 -vt 0.152542 0.752732 -vt 0.149479 0.798348 -vt 0.064167 0.798348 -vt 0.103760 0.798348 -vt 0.061104 0.752732 -vt 0.018448 0.798348 -vt 0.058041 0.798348 -vt 0.015385 0.752732 -vt 0.521355 0.798350 -vt 0.560948 0.798350 -vt 0.475636 0.798350 -vt 0.515230 0.798350 -vt 0.429917 0.798349 -vt 0.469511 0.798349 -vt 0.423792 0.798349 -vt 0.338480 0.798349 -vt 0.378073 0.798349 -vt 0.384198 0.798349 -vt 0.015386 0.487766 -vt 0.061105 0.487766 -vt 0.289699 0.487767 -vt 0.198262 0.487767 -vt 0.152543 0.487766 -vt 0.746483 0.170636 -vt 0.850636 0.093354 -vt 0.622041 0.762079 -vt 0.622041 0.739219 -vt 0.825182 0.739220 -vt 0.622041 0.716360 -vt 0.825182 0.716360 -vt 0.622041 0.693501 -vt 0.825182 0.693501 -vt 0.622041 0.670641 -vt 0.825182 0.670642 -vt 0.622041 0.647782 -vt 0.825182 0.647782 -vt 0.622041 0.624922 -vt 0.825182 0.624923 -vt 0.622042 0.602063 -vt 0.825182 0.602064 -vt 0.622042 0.579204 -vt 0.825182 0.579204 -vt 0.622042 0.556344 -vt 0.825182 0.556345 -vt 0.622042 0.533485 -vt 0.825182 0.533486 -vt 0.594783 0.691786 -vt 0.594783 0.672356 -vt 0.622042 0.510625 -vt 0.622042 0.487766 -vt 0.825183 0.487767 -vt 0.825182 0.510626 -vt 0.911978 0.846936 -vt 0.838096 0.866733 -vt 0.857892 0.792850 -vt 0.855953 0.514308 -vt 0.882496 0.487766 -vt 0.928469 0.533739 -vt 0.594784 0.508911 -vt 0.594783 0.760364 -vt 0.594783 0.740934 -vt 0.594783 0.714646 -vt 0.594783 0.695215 -vt 0.594784 0.531770 -vt 0.594784 0.512340 -vt 0.594783 0.737505 -vt 0.594784 0.554630 -vt 0.594784 0.535199 -vt 0.594783 0.577489 -vt 0.594784 0.558059 -vt 0.594783 0.600348 -vt 0.594783 0.623208 -vt 0.594783 0.603777 -vt 0.594783 0.646067 -vt 0.594783 0.626637 -vt 0.594783 0.668927 -vt 0.594783 0.649496 -vt 0.576088 0.320315 -vt 0.623651 0.337979 -vt 0.623651 0.346811 -vt 0.747302 0.290416 -vt 0.729637 0.337979 -vt 0.777200 0.364476 -vt 0.729637 0.346811 -vt 0.605986 0.394374 -vt 0.594783 0.822748 -vt 0.642346 0.840413 -vt 0.642346 0.849245 -vt 0.765997 0.792850 -vt 0.748332 0.840413 -vt 0.795895 0.866909 -vt 0.748332 0.849245 -vt 0.624682 0.896808 -vt 0.015385 0.192029 -vt 0.984615 0.378738 -vt 0.192029 0.456995 -vt 0.368673 0.015385 -vt 0.576088 0.093354 -vt 0.518293 0.487768 -vt 0.335418 0.487767 -vt 0.106824 0.487766 -vt 0.243980 0.487767 -vt 0.850636 0.181676 -vt 0.825182 0.762079 -vt 0.880752 0.792850 -vt 0.900549 0.804280 -vt 0.911978 0.824077 -vt 0.900549 0.866733 -vt 0.880752 0.878162 -vt 0.857892 0.878162 -vt 0.826666 0.846936 -vt 0.826666 0.824076 -vt 0.838096 0.804280 -vt 0.918754 0.550566 -vt 0.865668 0.550566 -vt 0.901926 0.560282 -vt 0.882496 0.560281 -vt 0.855953 0.533739 -vt 0.865669 0.497481 -vt 0.901926 0.487766 -vt 0.918754 0.497481 -vt 0.928469 0.514309 -vt 0.594784 0.489480 -vt 0.594783 0.718075 -vt 0.594783 0.580918 -vt 0.576088 0.364476 -vt 0.605986 0.290416 -vt 0.777200 0.320315 -vt 0.747302 0.394374 -vt 0.594783 0.866909 -vt 0.624682 0.792850 -vt 0.795895 0.822748 -vt 0.765997 0.896808 -vn -1.000000 0.000000 0.000000 -vn 0.000000 0.000000 -1.000000 -vn 1.000000 0.000000 0.000000 -vn 0.000000 0.000000 1.000000 -vn 0.000000 -1.000000 0.000000 -vn 0.000000 1.000000 0.000000 -vn 0.000000 0.992300 0.124000 -vn 0.000000 -0.992300 0.124000 -vn -0.848000 0.000000 0.530000 -vn 0.258800 0.000000 -0.965900 -vn 0.707100 0.000000 -0.707100 -vn 0.965900 0.000000 -0.258800 -vn 0.965900 0.000000 0.258800 -vn 0.707100 0.000000 0.707100 -vn -0.069200 0.963600 0.258200 -vn -0.186200 0.694700 0.694700 -vn -0.250600 0.250600 0.935100 -vn 0.069200 0.963600 0.258200 -vn 0.186200 0.694700 0.694700 -vn 0.250600 0.250600 0.935100 -vn 0.189000 0.963600 0.189000 -vn 0.258200 0.963600 0.069200 -vn 0.258200 0.963600 -0.069200 -vn 0.189000 0.963600 -0.189000 -vn 0.069200 0.963600 -0.258200 -vn -0.069200 0.963600 -0.258200 -vn -0.189000 0.963600 -0.189000 -vn -0.258200 0.963600 -0.069200 -vn -0.258200 0.963600 0.069200 -vn -0.189000 0.963600 0.189000 -vn -0.508600 0.694700 0.508600 -vn -0.684600 0.250600 0.684600 -vn -0.694700 0.694700 0.186200 -vn -0.935100 0.250600 0.250600 -vn -0.694700 0.694700 -0.186200 -vn -0.935100 0.250600 -0.250600 -vn -0.508600 0.694700 -0.508600 -vn -0.684600 0.250600 -0.684500 -vn -0.186200 0.694700 -0.694700 -vn -0.250600 0.250600 -0.935100 -vn 0.186200 0.694700 -0.694700 -vn 0.250600 0.250600 -0.935100 -vn 0.508600 0.694700 -0.508600 -vn 0.684600 0.250600 -0.684500 -vn 0.694700 0.694700 -0.186200 -vn 0.935100 0.250600 -0.250600 -vn 0.694700 0.694700 0.186200 -vn 0.508600 0.694700 0.508600 -vn 0.684600 0.250600 0.684500 -vn 0.935100 0.250600 0.250600 -vn -0.258800 0.000000 -0.965900 -vn -0.707100 0.000000 -0.707100 -vn 0.258800 -0.000000 0.965900 -vn -0.258800 0.000000 0.965900 -vn -0.707100 -0.000000 0.707100 -vn -0.965900 -0.000000 0.258800 -vn -0.965900 -0.000000 -0.258800 -vn 0.848000 0.000000 0.530000 -vn 0.258800 0.965900 -0.000000 -vn 0.707100 0.707100 -0.000000 -vn 0.965900 0.258800 -0.000000 -vn 0.965900 -0.258800 0.000000 -vn 0.707100 -0.707100 0.000000 -vn 0.258800 -0.965900 0.000000 -vn -0.258800 -0.965900 0.000000 -vn -0.707100 -0.707100 0.000000 -vn -0.965900 -0.258800 0.000000 -vn -0.965900 0.258800 -0.000000 -vn 0.938900 -0.251600 0.234700 -vn -0.258800 0.965900 -0.000000 -vn -0.707100 0.707100 -0.000000 -vn -0.251600 0.938900 0.234700 -vn 0.251600 0.938900 0.234700 -vn 0.938900 0.251600 0.234700 -vn -0.687400 0.687300 0.234700 -vn 0.687400 0.687300 0.234700 -vn -0.938900 0.251600 0.234700 -vn -0.938900 -0.251600 0.234700 -vn -0.687300 -0.687400 0.234700 -vn -0.251600 -0.938900 0.234700 -vn 0.251600 -0.938900 0.234700 -vn 0.687300 -0.687300 0.234700 -vn -0.928500 -0.371400 0.000000 -vn 0.000000 -0.371400 -0.928500 -vn 0.928500 -0.371400 0.000000 -vn 0.000000 -0.371400 0.928500 -vn 0.684600 0.250600 -0.684600 -vn 0.684600 0.250600 0.684600 -vn 0.687300 0.687400 0.234700 -vn 0.687300 -0.687400 0.234700 -s off -f 4/1/1 3/2/1 1/3/1 -f 8/4/2 7/5/2 3/2/2 -f 6/6/3 5/7/3 7/5/3 -f 2/8/4 1/9/4 5/10/4 -f 3/2/5 7/5/5 5/11/5 -f 8/4/6 4/1/6 2/12/6 -f 10/13/4 9/14/4 11/15/4 -f 6/16/7 2/17/7 10/13/7 -f 1/18/8 5/19/8 11/15/8 -f 9/14/9 10/13/9 2/20/9 -f 15/21/10 45/22/10 39/23/10 -f 39/23/11 30/24/11 17/25/11 -f 17/25/12 30/24/12 28/26/12 -f 18/27/13 28/26/13 56/28/13 -f 19/29/14 56/28/14 50/30/14 -f 49/31/15 14/32/15 43/33/15 -f 49/31/16 43/33/16 42/34/16 -f 48/35/17 42/34/17 38/36/17 -f 55/37/18 14/38/18 49/39/18 -f 48/40/19 54/41/19 55/37/19 -f 44/42/20 50/30/20 54/41/20 -f 61/43/21 14/44/21 55/45/21 -f 14/46/22 61/47/22 13/48/22 -f 14/49/23 13/50/23 32/51/23 -f 32/52/24 41/53/24 14/54/24 -f 41/55/25 47/56/25 14/57/25 -f 53/58/26 14/59/26 47/60/26 -f 59/61/27 14/62/27 53/63/27 -f 35/64/28 14/65/28 59/66/28 -f 35/67/29 37/68/29 14/69/29 -f 43/70/30 14/71/30 37/72/30 -f 43/70/31 37/72/31 36/73/31 -f 29/74/32 38/36/32 42/75/32 -f 36/76/33 37/68/33 35/67/33 -f 29/74/34 36/76/34 34/77/34 -f 35/64/35 59/66/35 58/78/35 -f 57/79/36 33/80/36 34/81/36 -f 53/63/37 52/82/37 58/83/37 -f 52/82/38 51/84/38 57/79/38 -f 47/60/39 46/85/39 52/86/39 -f 46/85/40 45/87/40 51/84/40 -f 41/55/41 40/88/41 46/89/41 -f 40/88/42 39/23/42 45/22/42 -f 32/52/43 31/90/43 40/91/43 -f 31/90/44 30/24/44 39/23/44 -f 32/51/45 13/50/45 27/92/45 -f 28/26/46 30/24/46 31/93/46 -f 27/94/47 13/48/47 61/47/47 -f 54/95/48 60/96/48 61/43/48 -f 50/30/49 56/28/49 60/96/49 -f 28/26/50 27/94/50 60/97/50 -f 45/87/51 15/98/51 26/99/51 -f 57/79/52 51/84/52 26/99/52 -f 50/30/53 44/42/53 21/100/53 -f 21/100/54 44/42/54 38/36/54 -f 38/36/55 29/74/55 23/101/55 -f 29/74/56 33/80/56 24/102/56 -f 24/102/57 33/80/57 57/79/57 -f 12/103/58 11/15/58 5/104/58 -f 63/105/59 65/106/59 64/107/59 -f 65/106/60 67/108/60 66/109/60 -f 67/108/61 69/110/61 68/111/61 -f 69/110/62 71/112/62 70/113/62 -f 71/112/63 73/114/63 72/115/63 -f 73/114/64 75/116/64 74/117/64 -f 75/116/65 77/118/65 76/119/65 -f 77/118/66 79/120/66 78/121/66 -f 79/120/67 81/122/67 80/123/67 -f 81/122/68 83/124/68 82/125/68 -f 69/110/69 89/126/69 90/127/69 -f 85/128/70 63/129/70 62/130/70 -f 83/124/71 85/128/71 84/131/71 -f 68/132/2 76/133/2 84/134/2 -f 94/135/4 92/136/4 88/137/4 -f 63/129/72 85/128/72 97/138/72 -f 63/105/73 87/139/73 86/140/73 -f 67/108/74 88/141/74 89/142/74 -f 83/124/75 96/143/75 97/144/75 -f 67/108/76 65/106/76 86/145/76 -f 81/122/77 95/146/77 96/147/77 -f 79/120/78 94/148/78 95/149/78 -f 79/120/79 77/118/79 93/150/79 -f 75/116/80 92/151/80 93/152/80 -f 73/114/81 91/153/81 92/154/81 -f 71/112/82 90/155/82 91/156/82 -f 101/157/83 100/158/83 98/159/83 -f 105/160/84 104/161/84 100/158/84 -f 103/162/85 102/163/85 104/161/85 -f 99/164/86 98/159/86 102/163/86 -f 100/158/5 104/161/5 102/163/5 -f 109/165/83 108/166/83 106/167/83 -f 113/168/84 112/169/84 108/166/84 -f 111/170/85 110/171/85 112/169/85 -f 107/172/86 106/167/86 110/171/86 -f 108/166/5 112/169/5 110/171/5 -f 2/173/1 4/1/1 1/3/1 -f 4/1/2 8/4/2 3/2/2 -f 8/4/3 6/6/3 7/5/3 -f 6/174/4 2/8/4 5/10/4 -f 1/175/5 3/2/5 5/11/5 -f 6/176/6 8/4/6 2/12/6 -f 12/103/4 10/13/4 11/15/4 -f 12/103/7 6/16/7 10/13/7 -f 9/14/8 1/18/8 11/15/8 -f 1/177/9 9/14/9 2/20/9 -f 16/178/10 15/21/10 39/23/10 -f 16/178/11 39/23/11 17/25/11 -f 18/27/12 17/25/12 28/26/12 -f 19/29/13 18/27/13 56/28/13 -f 20/179/14 19/29/14 50/30/14 -f 48/35/16 49/31/16 42/34/16 -f 44/42/17 48/35/17 38/36/17 -f 49/39/19 48/40/19 55/37/19 -f 48/40/20 44/42/20 54/41/20 -f 42/75/31 43/70/31 36/73/31 -f 36/73/32 29/74/32 42/75/32 -f 34/77/33 36/76/33 35/67/33 -f 33/80/34 29/74/34 34/77/34 -f 34/81/35 35/64/35 58/78/35 -f 58/78/36 57/79/36 34/81/36 -f 59/61/37 53/63/37 58/83/37 -f 58/83/38 52/82/38 57/79/38 -f 53/58/39 47/60/39 52/86/39 -f 52/86/40 46/85/40 51/84/40 -f 47/56/41 41/55/41 46/89/41 -f 46/89/42 40/88/42 45/22/42 -f 41/53/43 32/52/43 40/91/43 -f 40/91/87 31/90/87 39/23/87 -f 31/93/45 32/51/45 27/92/45 -f 27/92/46 28/26/46 31/93/46 -f 60/97/47 27/94/47 61/47/47 -f 55/45/48 54/95/48 61/43/48 -f 54/95/88 50/30/88 60/96/88 -f 56/28/50 28/26/50 60/97/50 -f 51/84/51 45/87/51 26/99/51 -f 25/180/52 57/79/52 26/99/52 -f 20/179/53 50/30/53 21/100/53 -f 22/181/54 21/100/54 38/36/54 -f 22/181/55 38/36/55 23/101/55 -f 23/101/56 29/74/56 24/102/56 -f 25/180/57 24/102/57 57/79/57 -f 6/182/58 12/103/58 5/104/58 -f 62/183/59 63/105/59 64/107/59 -f 64/107/60 65/106/60 66/109/60 -f 66/109/61 67/108/61 68/111/61 -f 68/111/62 69/110/62 70/113/62 -f 70/113/63 71/112/63 72/115/63 -f 72/115/64 73/114/64 74/117/64 -f 74/117/65 75/116/65 76/119/65 -f 76/119/66 77/118/66 78/121/66 -f 78/121/67 79/120/67 80/123/67 -f 80/123/68 81/122/68 82/125/68 -f 71/112/69 69/110/69 90/127/69 -f 84/131/70 85/128/70 62/130/70 -f 82/125/71 83/124/71 84/131/71 -f 84/134/2 62/184/2 64/185/2 -f 64/185/2 66/186/2 84/134/2 -f 68/132/2 70/187/2 72/188/2 -f 72/188/2 74/189/2 68/132/2 -f 76/133/2 78/190/2 80/191/2 -f 80/191/2 82/192/2 84/134/2 -f 84/134/2 66/186/2 68/132/2 -f 68/132/2 74/189/2 76/133/2 -f 76/133/2 80/191/2 84/134/2 -f 88/137/4 86/193/4 96/194/4 -f 87/195/4 97/196/4 96/194/4 -f 96/194/4 95/197/4 94/135/4 -f 94/135/4 93/198/4 92/136/4 -f 92/136/4 91/199/4 88/137/4 -f 90/200/4 89/201/4 88/137/4 -f 86/193/4 87/195/4 96/194/4 -f 96/194/4 94/135/4 88/137/4 -f 91/199/4 90/200/4 88/137/4 -f 87/202/72 63/129/72 97/138/72 -f 65/106/73 63/105/73 86/140/73 -f 69/110/74 67/108/74 89/142/74 -f 85/128/75 83/124/75 97/144/75 -f 88/203/89 67/108/89 86/145/89 -f 83/124/77 81/122/77 96/147/77 -f 81/122/78 79/120/78 95/149/78 -f 94/204/79 79/120/79 93/150/79 -f 77/118/80 75/116/80 93/152/80 -f 75/116/81 73/114/81 92/154/81 -f 73/114/90 71/112/90 91/156/90 -f 99/205/83 101/157/83 98/159/83 -f 101/206/84 105/160/84 100/158/84 -f 105/207/85 103/162/85 104/161/85 -f 103/208/86 99/164/86 102/163/86 -f 98/159/5 100/158/5 102/163/5 -f 107/209/83 109/165/83 106/167/83 -f 109/210/84 113/168/84 108/166/84 -f 113/211/85 111/170/85 112/169/85 -f 111/212/86 107/172/86 110/171/86 -f 106/167/5 108/166/5 110/171/5 diff --git a/src/main/resources/assets/hbm/models/cwis_rotor.obj b/src/main/resources/assets/hbm/models/cwis_rotor.obj deleted file mode 100644 index 07d783822..000000000 --- a/src/main/resources/assets/hbm/models/cwis_rotor.obj +++ /dev/null @@ -1,202 +0,0 @@ -# Blender v2.76 (sub 0) OBJ File: 'cwis_rotor.blend' -# www.blender.org -o Cylinder.001 -v 0.000000 0.250000 -1.000000 -v 0.000000 0.375000 -1.000000 -v 0.500000 0.250000 -0.866025 -v 0.500000 0.375000 -0.866025 -v 0.866025 0.250000 -0.500000 -v 0.866025 0.375000 -0.500000 -v 1.000000 0.250000 0.000000 -v 1.000000 0.375000 0.000000 -v 0.866025 0.250000 0.500000 -v 0.866025 0.375000 0.500000 -v 0.500000 0.250000 0.866025 -v 0.500000 0.375000 0.866025 -v 0.000000 0.250000 1.000000 -v 0.000000 0.375000 1.000000 -v -0.500000 0.250000 0.866026 -v -0.500000 0.375000 0.866026 -v -0.866025 0.250000 0.500000 -v -0.866025 0.375000 0.500000 -v -1.000000 0.250000 0.000000 -v -1.000000 0.375000 0.000000 -v -0.866026 0.250000 -0.499999 -v -0.866026 0.375000 -0.499999 -v -0.500001 0.250000 -0.866025 -v -0.500001 0.375000 -0.866025 -v 0.500000 0.375000 0.500000 -v 0.850000 0.375000 0.500000 -v 0.500000 0.375000 -0.500000 -v 0.850000 0.375000 -0.500000 -v 0.500000 1.875000 -0.325000 -v 0.500000 1.875000 0.325000 -v 0.850000 1.875000 0.325000 -v 0.850000 1.875000 -0.325000 -v -0.850000 0.375000 0.500000 -v -0.500000 0.375000 0.500000 -v -0.850000 0.375000 -0.500000 -v -0.500000 0.375000 -0.500000 -v -0.850000 1.875000 -0.325000 -v -0.850000 1.875000 0.325000 -v -0.500000 1.875000 0.325000 -v -0.500000 1.875000 -0.325000 -vt 0.447419 0.884668 -vt 0.375998 0.884668 -vt 0.375998 0.867421 -vt 0.304576 0.884668 -vt 0.304576 0.867421 -vt 0.233155 0.884668 -vt 0.233155 0.867421 -vt 0.161734 0.884668 -vt 0.161734 0.867421 -vt 0.090312 0.884668 -vt 0.090312 0.867421 -vt 0.018891 0.884668 -vt 0.018891 0.867421 -vt 0.485201 0.867421 -vt 0.556623 0.867421 -vt 0.556623 0.884668 -vt 0.628044 0.867421 -vt 0.628044 0.884668 -vt 0.699465 0.867421 -vt 0.699465 0.884668 -vt 0.770886 0.867421 -vt 0.770886 0.884668 -vt 0.054602 0.793928 -vt 0.116454 0.563091 -vt 0.285439 0.732075 -vt 0.842308 0.867421 -vt 0.913729 0.867421 -vt 0.913729 0.884668 -vt 0.842308 0.884668 -vt 0.589769 0.732075 -vt 0.323221 0.660654 -vt 0.420785 0.563091 -vt 0.274146 0.227258 -vt 0.274146 0.316942 -vt 0.225854 0.316942 -vt 0.774146 0.227258 -vt 0.774146 0.316942 -vt 0.725854 0.316942 -vt 0.518891 0.203112 -vt 0.725854 0.227258 -vt 0.725854 0.525308 -vt 0.774146 0.018891 -vt 0.981109 0.341087 -vt 0.018891 0.203112 -vt 0.225854 0.227258 -vt 0.225854 0.525308 -vt 0.274146 0.018891 -vt 0.481109 0.341087 -vt 0.447419 0.867421 -vt 0.485201 0.884668 -vt 0.249728 0.793928 -vt 0.187876 0.829639 -vt 0.116454 0.829638 -vt 0.018891 0.732075 -vt 0.018891 0.660654 -vt 0.054602 0.598801 -vt 0.187876 0.563091 -vt 0.249728 0.598801 -vt 0.285439 0.660654 -vt 0.492206 0.563091 -vt 0.554059 0.598801 -vt 0.589769 0.660654 -vt 0.554059 0.793928 -vt 0.492206 0.829638 -vt 0.420785 0.829638 -vt 0.358932 0.793928 -vt 0.323221 0.732075 -vt 0.358932 0.598801 -vt 0.518891 0.341087 -vt 0.774145 0.525308 -vt 0.725854 0.018891 -vt 0.981109 0.203112 -vt 0.018891 0.341087 -vt 0.274145 0.525308 -vt 0.225854 0.018891 -vt 0.481109 0.203112 -vn 0.258800 0.000000 -0.965900 -vn 0.707100 0.000000 -0.707100 -vn 0.965900 0.000000 -0.258800 -vn 0.965900 0.000000 0.258800 -vn 0.707100 0.000000 0.707100 -vn 0.258800 0.000000 0.965900 -vn -0.258800 0.000000 0.965900 -vn -0.707100 0.000000 0.707100 -vn -0.965900 0.000000 0.258800 -vn -0.965900 0.000000 -0.258800 -vn 0.000000 1.000000 0.000000 -vn -0.258800 0.000000 -0.965900 -vn -0.707100 0.000000 -0.707100 -vn 0.000000 -1.000000 0.000000 -vn -1.000000 0.000000 0.000000 -vn 0.000000 0.115900 -0.993300 -vn 0.000000 0.115900 0.993300 -vn 1.000000 0.000000 0.000000 -s off -f 2/1/1 4/2/1 3/3/1 -f 4/2/2 6/4/2 5/5/2 -f 6/4/3 8/6/3 7/7/3 -f 8/6/4 10/8/4 9/9/4 -f 10/8/5 12/10/5 11/11/5 -f 12/10/6 14/12/6 13/13/6 -f 14/14/7 16/15/7 15/16/7 -f 16/15/8 18/17/8 17/18/8 -f 18/17/9 20/19/9 19/20/9 -f 20/19/10 22/21/10 21/22/10 -f 22/23/11 14/24/11 6/25/11 -f 24/26/12 2/27/12 1/28/12 -f 22/21/13 24/26/13 23/29/13 -f 7/30/14 19/31/14 23/32/14 -f 39/33/11 40/34/11 37/35/11 -f 31/36/11 32/37/11 29/38/11 -f 25/39/15 30/40/15 29/38/15 -f 27/41/16 29/38/16 32/37/16 -f 26/42/17 31/36/17 30/40/17 -f 28/43/18 32/37/18 31/36/18 -f 33/44/15 38/45/15 37/35/15 -f 35/46/16 37/35/16 40/34/16 -f 34/47/17 39/33/17 38/45/17 -f 36/48/18 40/34/18 39/33/18 -f 1/49/1 2/1/1 3/3/1 -f 3/3/2 4/2/2 5/5/2 -f 5/5/3 6/4/3 7/7/3 -f 7/7/4 8/6/4 9/9/4 -f 9/9/5 10/8/5 11/11/5 -f 11/11/6 12/10/6 13/13/6 -f 13/50/7 14/14/7 15/16/7 -f 15/16/8 16/15/8 17/18/8 -f 17/18/9 18/17/9 19/20/9 -f 19/20/10 20/19/10 21/22/10 -f 6/25/11 4/51/11 2/52/11 -f 2/52/11 24/53/11 22/23/11 -f 22/23/11 20/54/11 18/55/11 -f 18/55/11 16/56/11 14/24/11 -f 14/24/11 12/57/11 10/58/11 -f 10/58/11 8/59/11 6/25/11 -f 6/25/11 2/52/11 22/23/11 -f 22/23/11 18/55/11 14/24/11 -f 14/24/11 10/58/11 6/25/11 -f 23/29/12 24/26/12 1/28/12 -f 21/22/13 22/21/13 23/29/13 -f 23/32/14 1/60/14 3/61/14 -f 3/61/14 5/62/14 7/30/14 -f 7/30/14 9/63/14 11/64/14 -f 11/64/14 13/65/14 15/66/14 -f 15/66/14 17/67/14 19/31/14 -f 19/31/14 21/68/14 23/32/14 -f 23/32/14 3/61/14 7/30/14 -f 7/30/14 11/64/14 15/66/14 -f 15/66/14 19/31/14 7/30/14 -f 38/45/11 39/33/11 37/35/11 -f 30/40/11 31/36/11 29/38/11 -f 27/69/15 25/39/15 29/38/15 -f 28/70/16 27/41/16 32/37/16 -f 25/71/17 26/42/17 30/40/17 -f 26/72/18 28/43/18 31/36/18 -f 35/73/15 33/44/15 37/35/15 -f 36/74/16 35/46/16 40/34/16 -f 33/75/17 34/47/17 38/45/17 -f 34/76/18 36/48/18 39/33/18 diff --git a/src/main/resources/assets/hbm/models/cyclotron.obj b/src/main/resources/assets/hbm/models/cyclotron.obj deleted file mode 100644 index f645eb5bf..000000000 --- a/src/main/resources/assets/hbm/models/cyclotron.obj +++ /dev/null @@ -1,2212 +0,0 @@ -# Blender v2.76 (sub 0) OBJ File: 'zyclotron.blend' -# www.blender.org -o Cube -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.500001 2.000000 -1.499999 -v 1.499999 2.000000 1.500001 -v -1.500000 2.000000 1.500000 -v -1.500000 2.000000 -1.500000 -v 0.000000 2.000000 -1.375000 -v -0.526190 2.000000 -1.270334 -v -0.972272 2.000000 -0.972272 -v -1.270334 2.000000 -0.526190 -v -1.375000 2.000000 0.000000 -v -1.270334 2.000000 0.526190 -v -0.972272 2.000000 0.972272 -v -0.526190 2.000000 1.270334 -v -0.000000 2.000000 1.375000 -v 0.526190 2.000000 1.270335 -v 0.972272 2.000000 0.972272 -v 1.270334 2.000000 0.526190 -v 1.375000 2.000000 -0.000000 -v 1.270334 2.000000 -0.526190 -v 0.972272 2.000000 -0.972272 -v 0.526189 2.000000 -1.270335 -v -0.526190 6.000000 -1.270334 -v -0.000000 6.000000 -1.375000 -v -0.972272 6.000000 -0.972272 -v -1.270335 6.000000 -0.526190 -v -1.375000 6.000000 0.000000 -v -1.270335 6.000000 0.526190 -v -0.972272 6.000000 0.972272 -v -0.526190 6.000000 1.270334 -v -0.000000 6.000000 1.375000 -v 0.526189 6.000000 1.270335 -v 0.972272 6.000000 0.972272 -v 1.270334 6.000000 0.526190 -v 1.375000 6.000000 -0.000000 -v 1.270334 6.000000 -0.526190 -v 0.972271 6.000000 -0.972272 -v 0.526189 6.000000 -1.270335 -v 0.000000 2.000000 -1.500000 -v -0.750000 2.000000 -1.500000 -v 0.750001 2.000000 -1.500000 -v -1.500000 2.000000 -0.000000 -v -1.500000 2.000000 -0.750000 -v -1.500000 2.000000 0.750000 -v -0.000001 2.000000 1.500000 -v -0.750001 2.000000 1.500000 -v 0.749999 2.000000 1.500000 -v 1.500000 2.000000 0.000001 -v 1.500000 2.000000 0.750001 -v 1.500000 2.000000 -0.749999 -v -0.358766 6.000000 -0.866137 -v -0.000000 6.000000 -0.937500 -v -0.662913 6.000000 -0.662913 -v -0.866137 6.000000 -0.358766 -v -0.937500 6.000000 0.000000 -v -0.866137 6.000000 0.358766 -v -0.662913 6.000000 0.662913 -v -0.358766 6.000000 0.866137 -v -0.000000 6.000000 0.937500 -v 0.358765 6.000000 0.866137 -v 0.662912 6.000000 0.662913 -v 0.866137 6.000000 0.358766 -v 0.937500 6.000000 -0.000000 -v 0.866137 6.000000 -0.358766 -v 0.662912 6.000000 -0.662913 -v 0.358765 6.000000 -0.866137 -v -0.358766 5.850000 -0.866137 -v -0.000000 5.850000 -0.937500 -v -0.662913 5.850000 -0.662913 -v -0.866137 5.850000 -0.358766 -v -0.937500 5.850000 0.000000 -v -0.866137 5.850000 0.358766 -v -0.662913 5.850000 0.662913 -v -0.358766 5.850000 0.866137 -v -0.000000 5.850000 0.937500 -v 0.358765 5.850000 0.866137 -v 0.662912 5.850000 0.662913 -v 0.866137 5.850000 0.358766 -v 0.937500 5.850000 -0.000000 -v 0.866137 5.850000 -0.358766 -v 0.662912 5.850000 -0.662913 -v 0.358765 5.850000 -0.866137 -v 0.866137 5.925000 0.358766 -v 0.662912 5.925000 0.662913 -v -0.866137 5.925000 -0.358766 -v -0.662913 5.925000 -0.662913 -v -1.500000 1.750000 1.500000 -v -1.500000 0.250000 1.500000 -v 1.499999 1.750000 1.500001 -v 1.500000 0.250000 1.500000 -v 1.500000 1.750000 -1.499999 -v 1.500000 0.250000 -1.500000 -v 1.500000 1.750000 1.250001 -v 1.500000 1.750000 -1.249999 -v 1.500000 0.250000 -1.250000 -v 1.500000 0.250000 1.250000 -v 1.500000 0.250000 0.500000 -v 1.500000 1.000000 0.500000 -v 1.500000 0.000000 0.500000 -v 1.500000 1.000000 -0.500000 -v 1.500000 0.000000 -0.500000 -v 1.500000 0.250000 -0.500000 -v 1.350000 1.750000 -1.249999 -v 1.350000 1.750000 1.250001 -v 1.350000 0.250000 -1.250000 -v 1.350000 0.250000 1.250000 -v 1.350000 1.000000 -0.500000 -v 1.350000 1.000000 0.500000 -v 1.350000 0.250000 0.500000 -v 1.350000 0.250000 -0.500000 -v 0.500000 0.000000 -1.500000 -v -1.250000 0.250000 -1.500000 -v 1.250000 0.250000 -1.500000 -v -1.250000 1.750000 -1.500000 -v 1.250000 1.750000 -1.500000 -v 0.500000 0.250000 -1.500000 -v -0.500000 0.000000 -1.500000 -v -0.500000 0.250000 -1.500000 -v 0.500000 1.000000 -1.500000 -v -0.500000 1.000000 -1.500000 -v 1.250000 1.750000 -1.350000 -v -1.250000 1.750000 -1.350000 -v 1.250000 0.250000 -1.350000 -v -1.250000 0.250000 -1.350000 -v -0.500000 0.250000 -1.350000 -v 0.500000 1.000000 -1.350000 -v -0.500000 1.000000 -1.350000 -v 0.500000 0.250000 -1.350000 -v -1.500000 1.750000 -1.250000 -v -1.500000 1.750000 1.250000 -v -1.500000 0.250000 -1.250000 -v -1.500000 0.250000 1.250000 -v -1.500000 0.000000 -0.500000 -v -1.500000 0.250000 -0.500000 -v -1.500000 0.000000 0.500000 -v -1.500000 0.250000 0.500000 -v -1.500000 1.000000 -0.500000 -v -1.500000 1.000000 0.500000 -v -1.350000 1.750000 1.250000 -v -1.350000 1.750000 -1.250000 -v -1.350000 0.250000 -1.250000 -v -1.350000 0.250000 1.250000 -v -1.349999 1.000000 0.500000 -v -1.349999 1.000000 -0.500000 -v -1.350000 0.250000 -0.500000 -v -1.350000 0.250000 0.500000 -v -0.500000 0.000000 1.500000 -v 1.250000 0.250000 1.500000 -v -1.250000 0.250000 1.500000 -v -1.250000 1.750000 1.500000 -v 1.249999 1.750000 1.500000 -v -0.500000 0.250000 1.500000 -v 0.500000 0.000000 1.500000 -v 0.500000 0.250000 1.500000 -v -0.500000 1.000000 1.500000 -v 0.500000 1.000000 1.500000 -v 1.249999 1.750000 1.350000 -v 0.500000 1.000000 1.350000 -v -1.250000 1.750000 1.350000 -v -1.250000 0.250000 1.350000 -v 1.250000 0.250000 1.350000 -v -0.500000 1.000000 1.350000 -v -0.500000 0.250000 1.350000 -v 0.500000 0.250000 1.350000 -v -0.883884 5.750000 0.883884 -v -1.154850 5.750000 0.478354 -v 0.883883 5.750000 -0.883884 -v 1.154849 5.750000 -0.478355 -v -0.478354 5.750000 1.154849 -v 0.478354 5.750000 -1.154850 -v -0.000000 5.750000 1.250000 -v -0.478354 5.750000 -1.154849 -v -0.000000 5.750000 -1.250000 -v 0.478354 5.750000 1.154850 -v -0.883884 5.750000 -0.883884 -v 0.883883 5.750000 0.883884 -v -1.154850 5.750000 -0.478354 -v 1.154849 5.750000 0.478354 -v -1.250000 5.750000 0.000000 -v 1.250000 5.750000 -0.000000 -v -0.526190 5.750000 -1.270334 -v -0.000000 5.750000 -1.375000 -v -0.972272 5.750000 -0.972272 -v -1.270335 5.750000 -0.526190 -v -1.375000 5.750000 0.000000 -v -1.270335 5.750000 0.526190 -v -0.972272 5.750000 0.972272 -v -0.526190 5.750000 1.270334 -v -0.000000 5.750000 1.375000 -v 0.526189 5.750000 1.270335 -v 0.972272 5.750000 0.972272 -v 1.270334 5.750000 0.526190 -v 1.375000 5.750000 -0.000000 -v 1.270334 5.750000 -0.526190 -v 0.972271 5.750000 -0.972272 -v 0.526189 5.750000 -1.270335 -v 1.100000 5.750000 1.000000 -v 1.100000 2.000000 1.000000 -v 1.100000 2.000000 -1.200000 -v 1.100000 5.750000 -1.200000 -v 1.170711 2.000000 -1.170711 -v 1.170711 5.750000 -1.170711 -v 1.200000 2.000000 -1.100000 -v 1.200000 5.750000 -1.100000 -v 1.170711 2.000000 -1.029289 -v 1.170711 5.750000 -1.029289 -v 1.100000 2.000000 -1.000000 -v 1.100000 5.750000 -1.000000 -v 1.029289 2.000000 -1.029289 -v 1.029289 5.750000 -1.029289 -v 1.000000 2.000000 -1.100000 -v 1.000000 5.750000 -1.100000 -v 1.029289 2.000000 -1.170711 -v 1.029289 5.750000 -1.170711 -v 1.170711 2.000000 1.029289 -v 1.170711 5.750000 1.029289 -v 1.200000 2.000000 1.100000 -v 1.200000 5.750000 1.100000 -v 1.170711 2.000000 1.170711 -v 1.170711 5.750000 1.170711 -v 1.100000 2.000000 1.200000 -v 1.100000 5.750000 1.200000 -v 1.029289 2.000000 1.170711 -v 1.029289 5.750000 1.170711 -v 1.000000 2.000000 1.100000 -v 1.000000 5.750000 1.100000 -v 1.029289 2.000000 1.029289 -v 1.029289 5.750000 1.029289 -v -1.100000 5.750000 1.000000 -v -1.100000 2.000000 1.000000 -v -1.029289 2.000000 1.029289 -v -1.029289 5.750000 1.029289 -v -1.000000 2.000000 1.100000 -v -1.000000 5.750000 1.100000 -v -1.029289 2.000000 1.170711 -v -1.029289 5.750000 1.170711 -v -1.100000 2.000000 1.200000 -v -1.100000 5.750000 1.200000 -v -1.170711 2.000000 1.170711 -v -1.170711 5.750000 1.170711 -v -1.200000 2.000000 1.100000 -v -1.200000 5.750000 1.100000 -v -1.170711 2.000000 1.029289 -v -1.170711 5.750000 1.029289 -v -1.100000 5.750000 -1.200000 -v -1.100000 2.000000 -1.200000 -v -1.029289 2.000000 -1.170711 -v -1.029289 5.750000 -1.170711 -v -1.000000 2.000000 -1.100000 -v -1.000000 5.750000 -1.100000 -v -1.029289 2.000000 -1.029289 -v -1.029289 5.750000 -1.029289 -v -1.100000 2.000000 -1.000000 -v -1.100000 5.750000 -1.000000 -v -1.170711 2.000000 -1.029289 -v -1.170711 5.750000 -1.029289 -v -1.200000 2.000000 -1.100000 -v -1.200000 5.750000 -1.100000 -v -1.170711 2.000000 -1.170711 -v -1.170711 5.750000 -1.170711 -v 1.000000 5.975001 -1.000000 -v 0.950000 5.945711 -1.050000 -v 0.929289 5.875000 -1.070711 -v 0.950000 5.804290 -1.050000 -v 1.000000 5.775001 -1.000000 -v 1.050000 5.804290 -0.950000 -v 1.070711 5.875000 -0.929289 -v 1.050000 5.945711 -0.950000 -v 0.879289 5.945711 -0.979289 -v 0.929289 5.975001 -0.929289 -v 0.858579 5.875000 -1.000000 -v 0.879289 5.804290 -0.979289 -v 0.929289 5.775001 -0.929289 -v 0.979289 5.804290 -0.879289 -v 1.000000 5.875000 -0.858578 -v 0.979289 5.945711 -0.879289 -v 1.070711 5.875000 0.929289 -v 1.050000 5.804289 0.950000 -v 1.000000 5.775000 1.000000 -v 0.950000 5.804289 1.050000 -v 0.929289 5.875000 1.070711 -v 0.950000 5.945711 1.050000 -v 1.000000 5.975000 1.000000 -v 1.050000 5.945711 0.950000 -v 0.879289 5.945711 0.979289 -v 0.858578 5.875000 1.000000 -v 0.929289 5.775000 0.929289 -v 0.979289 5.804289 0.879289 -v 0.879289 5.804289 0.979289 -v 1.000000 5.875000 0.858579 -v 0.929289 5.975000 0.929289 -v 0.979289 5.945711 0.879289 -v -0.929289 5.875000 -1.070711 -v -0.950000 5.804289 -1.050000 -v -1.000000 5.775000 -1.000000 -v -1.050000 5.804289 -0.950000 -v -1.070710 5.875000 -0.929289 -v -1.050000 5.945711 -0.950000 -v -1.000000 5.975000 -1.000000 -v -0.950000 5.945711 -1.050000 -v -0.979289 5.945711 -0.879289 -v -1.000000 5.875000 -0.858579 -v -0.929289 5.775000 -0.929289 -v -0.879289 5.804289 -0.979289 -v -0.979289 5.804289 -0.879289 -v -0.858578 5.875000 -1.000000 -v -0.929289 5.975000 -0.929289 -v -0.879289 5.945711 -0.979289 -v -1.000000 5.975000 1.000000 -v -0.950000 5.945711 1.050000 -v -0.929289 5.875000 1.070711 -v -0.950000 5.804289 1.050000 -v -1.000000 5.775000 1.000000 -v -1.050000 5.804289 0.950000 -v -1.070711 5.875000 0.929289 -v -1.050000 5.945711 0.950000 -v -0.979289 5.804289 0.879289 -v -0.929289 5.775000 0.929289 -v -0.858579 5.875000 1.000000 -v -0.879289 5.945711 0.979289 -v -0.879289 5.804289 0.979289 -v -0.929289 5.975000 0.929289 -v -1.000000 5.875000 0.858579 -v -0.979289 5.945711 0.879289 -v -0.883884 2.250000 0.883884 -v -1.154850 2.250000 0.478354 -v 0.883883 2.250000 -0.883884 -v 1.154849 2.250000 -0.478355 -v -0.478354 2.250000 1.154849 -v 0.478354 2.250000 -1.154850 -v -0.000000 2.250000 1.250000 -v -0.478354 2.250000 -1.154849 -v -0.000000 2.250000 -1.250000 -v 0.478354 2.250000 1.154850 -v -0.883884 2.250000 -0.883884 -v 0.883883 2.250000 0.883884 -v -1.154850 2.250000 -0.478354 -v 1.154849 2.250000 0.478354 -v -1.250000 2.250000 0.000000 -v 1.250000 2.250000 -0.000000 -v -0.526190 2.250000 -1.270334 -v 0.000000 2.250000 -1.375000 -v -0.972272 2.250000 -0.972272 -v -1.270334 2.250000 -0.526190 -v -1.375000 2.250000 0.000000 -v -1.270334 2.250000 0.526190 -v -0.972272 2.250000 0.972272 -v -0.526190 2.250000 1.270334 -v -0.000000 2.250000 1.375000 -v 0.526190 2.250000 1.270335 -v 0.972272 2.250000 0.972272 -v 1.270334 2.250000 0.526190 -v 1.375000 2.250000 -0.000000 -v 1.270334 2.250000 -0.526190 -v 0.972272 2.250000 -0.972272 -v 0.526189 2.250000 -1.270335 -v 1.500000 0.656250 -0.156250 -v 1.500000 0.250000 -0.250000 -v 1.500000 0.750000 -0.250000 -v 1.500000 0.250000 0.250000 -v 0.250000 0.750000 1.450000 -v 0.156250 0.656250 1.450000 -v -0.156250 0.343750 1.500000 -v 0.156250 0.343750 1.500000 -v 1.500000 0.750000 0.250000 -v 1.500000 0.343750 -0.156250 -v -0.250000 0.750000 1.450000 -v -0.250000 0.250000 1.450000 -v 0.250000 0.250000 1.450000 -v -0.156250 0.656250 1.450000 -v 0.250000 0.750000 1.500000 -v -0.250000 0.750000 1.500000 -v -0.156250 0.656250 1.500000 -v 0.250000 0.250000 1.500000 -v -0.156250 0.343750 1.450000 -v 0.156250 0.343750 1.450000 -v 0.156250 0.656250 1.500000 -v -0.250000 0.250000 1.500000 -v 1.500000 0.343750 0.156250 -v 1.500000 0.656250 0.156250 -v 1.450000 0.656250 -0.156250 -v 1.450000 0.656250 0.156250 -v 1.450000 0.343750 -0.156250 -v 1.450000 0.343750 0.156250 -v 1.450000 0.250000 -0.250000 -v 1.450000 0.250000 0.250000 -v 1.450000 0.750000 -0.250000 -v 1.450000 0.750000 0.250000 -v 0.250000 0.250000 -1.500000 -v -0.156250 0.343750 -1.500000 -v -0.250000 0.250000 -1.500000 -v 0.156250 0.343750 -1.500000 -v 0.250000 0.750000 -1.500000 -v -0.250000 0.750000 -1.500000 -v 0.156250 0.656250 -1.500000 -v -0.156250 0.656250 -1.500000 -v 0.156250 0.656250 -1.450000 -v -0.156250 0.656250 -1.450000 -v 0.156250 0.343750 -1.450000 -v -0.156250 0.343750 -1.450000 -v 0.250000 0.250000 -1.450000 -v -0.250000 0.250000 -1.450000 -v 0.250000 0.750000 -1.450000 -v -0.250000 0.750000 -1.450000 -v -1.500000 0.250000 -0.250001 -v -1.500000 0.343750 0.156250 -v -1.500000 0.250000 0.250000 -v -1.500000 0.343750 -0.156251 -v -1.500000 0.750000 -0.250001 -v -1.500000 0.750000 0.250000 -v -1.500000 0.656250 -0.156251 -v -1.500000 0.656250 0.156250 -v -1.449999 0.656250 0.156250 -v -1.449999 0.343750 0.156250 -v -1.449999 0.656250 -0.156251 -v -1.449999 0.750000 -0.250001 -v -1.449999 0.750000 0.250000 -v -1.449999 0.250000 0.250000 -v -1.449999 0.250000 -0.250001 -v -1.449999 0.343750 -0.156251 -vt 0.000461 0.950818 -vt 0.000470 0.922808 -vt 0.040543 0.922822 -vt 0.361111 0.875563 -vt 0.321038 0.875563 -vt 0.327413 0.843513 -vt 0.080605 0.903573 -vt 0.040533 0.903573 -vt 0.040533 0.875564 -vt 0.120677 0.903573 -vt 0.080605 0.875564 -vt 0.160749 0.903573 -vt 0.120677 0.875563 -vt 0.200821 0.903573 -vt 0.160749 0.875563 -vt 0.240894 0.903573 -vt 0.200821 0.875563 -vt 0.280966 0.903573 -vt 0.240894 0.875563 -vt 0.321038 0.903572 -vt 0.280966 0.875563 -vt 0.361111 0.903572 -vt 0.401183 0.903572 -vt 0.441256 0.903572 -vt 0.401183 0.875563 -vt 0.481328 0.903572 -vt 0.441255 0.875563 -vt 0.521400 0.903572 -vt 0.481328 0.875563 -vt 0.561472 0.903572 -vt 0.521400 0.875562 -vt 0.601545 0.903572 -vt 0.561472 0.875562 -vt 0.641617 0.903572 -vt 0.601544 0.875562 -vt 0.255335 0.430863 -vt 0.242613 0.466253 -vt 0.250054 0.428675 -vt 0.449535 0.505555 -vt 0.440199 0.505555 -vt 0.432381 0.466253 -vt 0.432381 0.544857 -vt 0.449535 0.393517 -vt 0.449535 0.449536 -vt 0.427127 0.423394 -vt 0.424940 0.418112 -vt 0.419658 0.415924 -vt 0.337497 0.617593 -vt 0.337497 0.608257 -vt 0.376799 0.600439 -vt 0.298195 0.600439 -vt 0.260617 0.418112 -vt 0.298194 0.410671 -vt 0.262805 0.423394 -vt 0.264876 0.432934 -vt 0.225458 0.505555 -vt 0.234795 0.505555 -vt 0.242613 0.544857 -vt 0.225458 0.449536 -vt 0.281478 0.393517 -vt 0.337497 0.393517 -vt 0.337497 0.402853 -vt 0.376799 0.410671 -vt 0.797881 0.890085 -vt 0.787427 0.915324 -vt 0.779665 0.912108 -vt 0.607920 0.843512 -vt 0.635242 0.843512 -vt 0.287341 0.843513 -vt 0.567847 0.843512 -vt 0.595169 0.843512 -vt 0.247269 0.843513 -vt 0.527775 0.843513 -vt 0.555097 0.843513 -vt 0.207196 0.843513 -vt 0.234518 0.843513 -vt 0.487703 0.843513 -vt 0.127052 0.843513 -vt 0.154374 0.843513 -vt 0.167124 0.843513 -vt 0.194446 0.843513 -vt 0.447631 0.843513 -vt 0.086980 0.843514 -vt 0.114302 0.843514 -vt 0.407558 0.843513 -vt 0.434880 0.843513 -vt 0.046908 0.843514 -vt 0.074230 0.843514 -vt 0.367486 0.843513 -vt 0.000461 0.875564 -vt 0.006836 0.843514 -vt 0.034157 0.843514 -vt 0.869755 0.860314 -vt 0.914311 0.890085 -vt 0.557352 0.796015 -vt 0.567806 0.770776 -vt 0.575568 0.773991 -vt 0.805316 0.858886 -vt 0.817198 0.870768 -vt 0.549917 0.827213 -vt 0.538035 0.815332 -vt 0.836006 0.844789 -vt 0.842437 0.860314 -vt 0.519226 0.841310 -vt 0.512796 0.825786 -vt 0.869755 0.843510 -vt 0.485478 0.842589 -vt 0.485478 0.825786 -vt 0.901424 0.855244 -vt 0.894994 0.870768 -vt 0.429040 0.807896 -vt 0.440922 0.796015 -vt 0.460239 0.815332 -vt 0.453809 0.830856 -vt 0.926192 0.878203 -vt 0.430354 0.770506 -vt 0.430468 0.770776 -vt 0.924879 0.915593 -vt 0.924765 0.915323 -vt 0.371218 0.823282 -vt 0.371218 0.795960 -vt 0.379621 0.795960 -vt 0.225458 0.795960 -vt 0.233861 0.795960 -vt 0.233861 0.823282 -vt 0.233861 0.787557 -vt 0.371218 0.787557 -vt 0.233861 0.831685 -vt 0.205864 0.421526 -vt 0.224537 0.421526 -vt 0.224537 0.589584 -vt 0.075153 0.987414 -vt 0.075153 0.976210 -vt 0.159182 0.976210 -vt 0.584251 0.645601 -vt 0.584251 0.477544 -vt 0.602924 0.477544 -vt 0.019134 0.589584 -vt 0.000461 0.589584 -vt 0.000461 0.421526 -vt 0.019134 0.421526 -vt 0.000461 0.393517 -vt 0.224537 0.393517 -vt 0.569989 0.999539 -vt 0.383259 0.999539 -vt 0.383259 0.988335 -vt 0.159182 0.999539 -vt 0.159182 0.988336 -vt 0.215201 0.988336 -vt 0.738046 0.999539 -vt 0.738046 0.988335 -vt 0.794065 0.988335 -vt 0.809250 0.000461 -vt 0.865269 0.000461 -vt 0.865269 0.084489 -vt 0.995980 0.000461 -vt 0.995980 0.168518 -vt 0.939961 0.084489 -vt 0.794065 0.999539 -vt 0.878094 0.988335 -vt 0.569989 0.988335 -vt 0.112499 0.617593 -vt 0.056480 0.617593 -vt 0.000461 0.999539 -vt 0.000461 0.988336 -vt 0.075153 0.988336 -vt 0.075153 0.999539 -vt 0.215201 0.999539 -vt 0.721511 0.878976 -vt 0.721511 0.902318 -vt 0.686499 0.902318 -vt 0.084490 0.951960 -vt 0.140510 0.951960 -vt 0.140510 0.963164 -vt 0.663356 0.951960 -vt 0.663356 0.963164 -vt 0.495300 0.963164 -vt 0.958633 0.842589 -vt 0.902614 0.842589 -vt 0.902614 0.758560 -vt 0.827922 0.758560 -vt 0.827922 0.842589 -vt 0.771903 0.842589 -vt 0.771903 0.674532 -vt 0.958633 0.674532 -vt 0.308568 0.951960 -vt 0.308568 0.963164 -vt 0.719375 0.951960 -vt 0.719375 0.963164 -vt 0.803403 0.951960 -vt 0.803403 0.963163 -vt 0.878094 0.951960 -vt 0.878094 0.963163 -vt 0.084490 0.963164 -vt 0.000461 0.963164 -vt 0.696290 0.149845 -vt 0.612261 0.149845 -vt 0.668281 0.131172 -vt 0.668281 0.093826 -vt 0.696290 0.075153 -vt 0.308565 0.964085 -vt 0.495295 0.964085 -vt 0.495295 0.975289 -vt 0.878094 0.964085 -vt 0.878094 0.975289 -vt 0.803401 0.975289 -vt 0.084489 0.964085 -vt 0.140508 0.964085 -vt 0.140508 0.975289 -vt 0.612261 0.131172 -vt 0.584252 0.149845 -vt 0.584252 0.075153 -vt 0.612262 0.075153 -vt 0.770982 0.674532 -vt 0.714963 0.758560 -vt 0.640270 0.758560 -vt 0.770982 0.842589 -vt 0.714963 0.842589 -vt 0.640270 0.842589 -vt 0.584251 0.842589 -vt 0.084489 0.975289 -vt 0.000461 0.975289 -vt 0.663353 0.964085 -vt 0.663353 0.975289 -vt 0.719372 0.964085 -vt 0.719372 0.975289 -vt 0.612261 0.205864 -vt 0.780319 0.205864 -vt 0.808328 0.224537 -vt 0.308565 0.975289 -vt 0.803401 0.964085 -vt 0.789655 0.477544 -vt 0.808328 0.477544 -vt 0.808328 0.645601 -vt 0.569989 0.987414 -vt 0.569989 0.976210 -vt 0.738046 0.976210 -vt 0.658943 0.449534 -vt 0.658943 0.477544 -vt 0.733636 0.449534 -vt 0.808328 0.449534 -vt 0.225516 0.618514 -vt 0.281536 0.618534 -vt 0.281507 0.702563 -vt 0.356199 0.702588 -vt 0.356228 0.618560 -vt 0.412247 0.618579 -vt 0.738046 0.987414 -vt 0.794065 0.976210 -vt 0.000461 0.987414 -vt 0.000461 0.976210 -vt 0.215201 0.987414 -vt 0.215201 0.976210 -vt 0.383259 0.976210 -vt 0.794065 0.987414 -vt 0.878094 0.976210 -vt 0.640270 0.673611 -vt 0.584251 0.673611 -vt 0.602924 0.645601 -vt 0.159182 0.987414 -vt 0.075153 0.618515 -vt 0.224537 0.767899 -vt 0.149845 0.842591 -vt 0.361111 0.950942 -vt 0.361121 0.922932 -vt 0.401193 0.922946 -vt 0.040533 0.950831 -vt 0.080615 0.922836 -vt 0.401183 0.950956 -vt 0.441265 0.922960 -vt 0.080605 0.950845 -vt 0.120687 0.922849 -vt 0.441256 0.950970 -vt 0.481338 0.922974 -vt 0.160750 0.950873 -vt 0.160759 0.922863 -vt 0.200832 0.922877 -vt 0.120677 0.950859 -vt 0.481328 0.950983 -vt 0.521410 0.922988 -vt 0.200822 0.950887 -vt 0.240904 0.922891 -vt 0.521400 0.950997 -vt 0.561482 0.923001 -vt 0.240894 0.950900 -vt 0.280976 0.922905 -vt 0.561472 0.951011 -vt 0.601554 0.923015 -vt 0.280967 0.950914 -vt 0.321049 0.922919 -vt 0.601545 0.951025 -vt 0.641626 0.923029 -vt 0.321039 0.950928 -vt 0.483162 0.913817 -vt 0.000461 0.903573 -vt 0.639795 0.912729 -vt 0.603366 0.912729 -vt 0.599723 0.912729 -vt 0.563294 0.912729 -vt 0.559651 0.912729 -vt 0.523222 0.912729 -vt 0.519579 0.912729 -vt 0.483149 0.912729 -vt 0.479506 0.912729 -vt 0.443077 0.912730 -vt 0.439434 0.912729 -vt 0.403005 0.912730 -vt 0.399362 0.912730 -vt 0.362932 0.912730 -vt 0.359289 0.912730 -vt 0.322860 0.912730 -vt 0.319217 0.912730 -vt 0.282788 0.912730 -vt 0.279145 0.912730 -vt 0.242715 0.912730 -vt 0.239072 0.912730 -vt 0.202643 0.912730 -vt 0.199000 0.912730 -vt 0.162571 0.912730 -vt 0.158928 0.912730 -vt 0.122499 0.912730 -vt 0.118856 0.912730 -vt 0.082426 0.912730 -vt 0.078783 0.912730 -vt 0.042354 0.912730 -vt 0.038711 0.912730 -vt 0.002282 0.912730 -vt 0.854572 0.540418 -vt 0.848098 0.540441 -vt 0.848098 0.169483 -vt 0.255335 0.415924 -vt 0.482830 0.764540 -vt 0.476355 0.764562 -vt 0.476367 0.393604 -vt 0.828674 0.540507 -vt 0.822199 0.540529 -vt 0.822199 0.169572 -vt 0.516136 0.764607 -vt 0.509662 0.764629 -vt 0.509662 0.393672 -vt 0.469880 0.764584 -vt 0.469893 0.393626 -vt 0.841623 0.540463 -vt 0.835148 0.540485 -vt 0.835148 0.169528 -vt 0.522611 0.764584 -vt 0.516136 0.393649 -vt 0.463406 0.764605 -vt 0.463418 0.393648 -vt 0.828674 0.169550 -vt 0.529086 0.764562 -vt 0.522611 0.393627 -vt 0.456931 0.764627 -vt 0.456943 0.393670 -vt 0.225458 0.393517 -vt 0.535561 0.764540 -vt 0.529086 0.393605 -vt 0.450456 0.764649 -vt 0.450468 0.393692 -vt 0.503187 0.764651 -vt 0.503187 0.393694 -vt 0.542035 0.764518 -vt 0.535561 0.393583 -vt 0.502254 0.764474 -vt 0.495779 0.764496 -vt 0.495791 0.393539 -vt 0.247866 0.423394 -vt 0.489304 0.764518 -vt 0.482842 0.393582 -vt 0.489317 0.393560 -vt 0.841623 0.169505 -vt 0.554985 0.764474 -vt 0.548510 0.764496 -vt 0.548510 0.393539 -vt 0.542035 0.393561 -vt 0.861047 0.540396 -vt 0.854572 0.169461 -vt 0.815724 0.540551 -vt 0.815724 0.169594 -vt 0.809250 0.540573 -vt 0.809250 0.169616 -vt 0.868443 0.540551 -vt 0.861968 0.540573 -vt 0.861968 0.169616 -vt 0.894342 0.540463 -vt 0.887867 0.540485 -vt 0.887867 0.169528 -vt 0.907291 0.540418 -vt 0.900816 0.540440 -vt 0.900816 0.169483 -vt 0.894342 0.169505 -vt 0.250054 0.418112 -vt 0.913766 0.540396 -vt 0.907291 0.169461 -vt 0.874918 0.540529 -vt 0.868443 0.169594 -vt 0.881392 0.540507 -vt 0.881392 0.169550 -vt 0.874918 0.169572 -vt 0.414377 0.418112 -vt 0.393516 0.393517 -vt 0.424940 0.428675 -vt 0.419658 0.430863 -vt 0.410118 0.432934 -vt 0.412189 0.423394 -vt 0.225459 0.617593 -vt 0.250054 0.592998 -vt 0.255335 0.595186 -vt 0.225459 0.561574 -vt 0.247866 0.587717 -vt 0.250054 0.582435 -vt 0.260617 0.592998 -vt 0.281478 0.617593 -vt 0.255335 0.580247 -vt 0.262805 0.587717 -vt 0.264876 0.578176 -vt 0.449535 0.617593 -vt 0.424940 0.592998 -vt 0.427127 0.587717 -vt 0.393516 0.617593 -vt 0.419658 0.595186 -vt 0.414377 0.592998 -vt 0.424940 0.582435 -vt 0.449535 0.561574 -vt 0.419658 0.580247 -vt 0.410118 0.578176 -vt 0.412189 0.587717 -vt 0.438110 0.746694 -vt 0.434057 0.747689 -vt 0.430486 0.742598 -vt 0.438378 0.740984 -vt 0.423490 0.738286 -vt 0.440859 0.735833 -vt 0.416492 0.733975 -vt 0.443344 0.730685 -vt 0.413168 0.728720 -vt 0.433106 0.705319 -vt 0.434728 0.710801 -vt 0.426679 0.711114 -vt 0.438365 0.715211 -vt 0.420912 0.716970 -vt 0.442006 0.719619 -vt 0.415143 0.722824 -vt 0.443938 0.724999 -vt 0.563375 0.466621 -vt 0.563375 0.474840 -vt 0.555906 0.474840 -vt 0.873658 0.639627 -vt 0.879140 0.638005 -vt 0.879453 0.646055 -vt 0.563375 0.458403 -vt 0.555906 0.458403 -vt 0.555906 0.452185 -vt 0.563375 0.503714 -vt 0.555906 0.503714 -vt 0.555906 0.495495 -vt 0.563375 0.481058 -vt 0.563375 0.487276 -vt 0.555906 0.487276 -vt 0.555906 0.481058 -vt 0.555906 0.466621 -vt 0.563375 0.509932 -vt 0.555906 0.509932 -vt 0.563375 0.495495 -vt 0.915033 0.634623 -vt 0.916028 0.638677 -vt 0.910938 0.642247 -vt 0.909323 0.634355 -vt 0.906625 0.649244 -vt 0.904173 0.631874 -vt 0.902315 0.656241 -vt 0.899024 0.629390 -vt 0.897060 0.659565 -vt 0.883551 0.634368 -vt 0.885309 0.651822 -vt 0.887958 0.630728 -vt 0.891164 0.657590 -vt 0.893339 0.628795 -vt 0.563375 0.525290 -vt 0.563375 0.533508 -vt 0.555906 0.533508 -vt 0.563375 0.545944 -vt 0.563375 0.554163 -vt 0.555906 0.554163 -vt 0.563375 0.539726 -vt 0.555906 0.539726 -vt 0.563375 0.562382 -vt 0.555906 0.562382 -vt 0.563375 0.568600 -vt 0.555906 0.568600 -vt 0.555906 0.545944 -vt 0.563375 0.517071 -vt 0.555906 0.517071 -vt 0.555906 0.510853 -vt 0.555906 0.525290 -vt 0.767541 0.913748 -vt 0.768536 0.917801 -vt 0.763446 0.921372 -vt 0.731961 0.925179 -vt 0.726166 0.922925 -vt 0.726166 0.918751 -vt 0.737817 0.930946 -vt 0.731648 0.917130 -vt 0.743672 0.936714 -vt 0.736059 0.913493 -vt 0.761831 0.913480 -vt 0.759133 0.928368 -vt 0.756681 0.910999 -vt 0.754822 0.935366 -vt 0.751532 0.908514 -vt 0.749568 0.938690 -vt 0.740466 0.909852 -vt 0.564296 0.451264 -vt 0.564296 0.445046 -vt 0.571765 0.445046 -vt 0.682764 0.917805 -vt 0.688246 0.916183 -vt 0.688559 0.924233 -vt 0.564296 0.428608 -vt 0.564296 0.422390 -vt 0.571765 0.422390 -vt 0.564296 0.393517 -vt 0.571765 0.393517 -vt 0.571765 0.399735 -vt 0.564296 0.407953 -vt 0.564296 0.399735 -vt 0.571765 0.407953 -vt 0.571765 0.416172 -vt 0.571765 0.428608 -vt 0.571765 0.436827 -vt 0.564296 0.416172 -vt 0.564296 0.436827 -vt 0.724139 0.912802 -vt 0.725134 0.916855 -vt 0.720043 0.920425 -vt 0.718429 0.912533 -vt 0.715731 0.927422 -vt 0.713278 0.910053 -vt 0.711420 0.934420 -vt 0.692657 0.912546 -vt 0.694415 0.930000 -vt 0.697064 0.908906 -vt 0.700270 0.935768 -vt 0.702444 0.906973 -vt 0.706165 0.937743 -vt 0.708130 0.907568 -vt 0.555906 0.393517 -vt 0.563375 0.393517 -vt 0.563375 0.399735 -vt 0.555906 0.445046 -vt 0.563375 0.445046 -vt 0.563375 0.451264 -vt 0.555906 0.428608 -vt 0.555906 0.422390 -vt 0.563375 0.422390 -vt 0.555906 0.436827 -vt 0.563375 0.436827 -vt 0.555906 0.416172 -vt 0.563375 0.416172 -vt 0.555906 0.407953 -vt 0.563375 0.407953 -vt 0.563375 0.428608 -vt 0.555906 0.399735 -vt 0.443090 0.913804 -vt 0.439447 0.913802 -vt 0.362945 0.913776 -vt 0.322873 0.913762 -vt 0.282801 0.913748 -vt 0.279158 0.913747 -vt 0.239086 0.913733 -vt 0.199013 0.913719 -vt 0.158941 0.913705 -vt 0.082439 0.913679 -vt 0.078797 0.913678 -vt 0.002295 0.913651 -vt 0.603379 0.913859 -vt 0.523234 0.913831 -vt 0.563307 0.913845 -vt 0.583330 0.000461 -vt 0.583330 0.392595 -vt 0.546901 0.392595 -vt 0.036890 0.000461 -vt 0.036891 0.392595 -vt 0.000462 0.392596 -vt 0.073319 0.000461 -vt 0.073320 0.392595 -vt 0.109749 0.000461 -vt 0.109749 0.392595 -vt 0.146178 0.000461 -vt 0.146178 0.392595 -vt 0.182607 0.000461 -vt 0.182607 0.392595 -vt 0.219037 0.000461 -vt 0.219036 0.392595 -vt 0.255466 0.000461 -vt 0.255466 0.392595 -vt 0.291895 0.000461 -vt 0.291896 0.392595 -vt 0.328325 0.000461 -vt 0.328325 0.392595 -vt 0.364754 0.000461 -vt 0.364755 0.392595 -vt 0.401183 0.000461 -vt 0.401184 0.392595 -vt 0.437613 0.000461 -vt 0.437613 0.392595 -vt 0.474042 0.000461 -vt 0.474043 0.392595 -vt 0.510471 0.000461 -vt 0.510472 0.392595 -vt 0.546901 0.000461 -vt 0.416903 0.700663 -vt 0.413168 0.700663 -vt 0.413168 0.665651 -vt 0.896067 0.541495 -vt 0.896067 0.545229 -vt 0.858721 0.545229 -vt 0.416903 0.622249 -vt 0.416903 0.618514 -vt 0.440244 0.618514 -vt 0.440244 0.622249 -vt 0.443979 0.622249 -vt 0.443979 0.657261 -vt 0.858721 0.604983 -vt 0.858721 0.601248 -vt 0.896067 0.601248 -vt 0.889064 0.590745 -vt 0.889064 0.555733 -vt 0.865723 0.555733 -vt 0.865723 0.590745 -vt 0.677616 0.533563 -vt 0.714963 0.533563 -vt 0.733636 0.561572 -vt 0.733636 0.477544 -vt 0.714963 0.477544 -vt 0.677616 0.477544 -vt 0.658943 0.561572 -vt 0.416903 0.657261 -vt 0.413168 0.657261 -vt 0.413168 0.622249 -vt 0.899801 0.601248 -vt 0.440244 0.657261 -vt 0.440244 0.660996 -vt 0.416903 0.660996 -vt 0.854986 0.545229 -vt 0.721511 0.870586 -vt 0.686499 0.870586 -vt 0.686499 0.847245 -vt 0.440244 0.665651 -vt 0.440244 0.700663 -vt 0.854065 0.601248 -vt 0.850330 0.601248 -vt 0.850330 0.545229 -vt 0.440244 0.704398 -vt 0.416903 0.704398 -vt 0.850330 0.541495 -vt 0.812984 0.545229 -vt 0.093826 0.477545 -vt 0.075153 0.505555 -vt 0.075153 0.421526 -vt 0.149845 0.393517 -vt 0.131172 0.421526 -vt 0.093826 0.421526 -vt 0.149845 0.421526 -vt 0.131172 0.477545 -vt 0.149845 0.505555 -vt 0.819987 0.555733 -vt 0.819987 0.590745 -vt 0.843328 0.555733 -vt 0.843328 0.590745 -vt 0.812984 0.601248 -vt 0.812984 0.604983 -vt 0.416903 0.665651 -vt 0.416903 0.661917 -vt 0.440244 0.661917 -vt 0.443979 0.665651 -vt 0.443979 0.700663 -vt 0.809250 0.545229 -vt 0.725245 0.878976 -vt 0.725245 0.902318 -vt 0.872737 0.669876 -vt 0.869003 0.669876 -vt 0.869003 0.632530 -vt 0.812984 0.673611 -vt 0.812984 0.669876 -vt 0.686499 0.878976 -vt 0.686499 0.875242 -vt 0.721511 0.875242 -vt 0.858499 0.639532 -vt 0.823487 0.639532 -vt 0.812984 0.632530 -vt 0.823487 0.662874 -vt 0.858499 0.662874 -vt 0.721511 0.906052 -vt 0.686499 0.906052 -vt 0.869003 0.628795 -vt 0.809249 0.632530 -vt 0.682764 0.902318 -vt 0.682764 0.878976 -vt 0.721511 0.847245 -vt 0.725245 0.847245 -vt 0.725245 0.870586 -vt 0.770982 0.903264 -vt 0.767247 0.903264 -vt 0.767247 0.847245 -vt 0.767247 0.843510 -vt 0.729901 0.847245 -vt 0.682764 0.870586 -vt 0.682764 0.847245 -vt 0.584252 0.000461 -vt 0.612262 0.019134 -vt 0.612262 0.000461 -vt 0.780319 0.019134 -vt 0.808328 0.056480 -vt 0.808328 0.112499 -vt 0.736903 0.857749 -vt 0.736903 0.892760 -vt 0.760245 0.857748 -vt 0.760245 0.892760 -vt 0.729901 0.903264 -vt 0.721511 0.874321 -vt 0.686499 0.874321 -vt 0.726166 0.847245 -vt 0.729901 0.906999 -vt 0.686499 0.843510 -vt 0.721511 0.843510 -vt 0.495300 0.951960 -vt 0.412189 0.786636 -vt 0.225458 0.786572 -vt 0.383259 0.987414 -vt 0.612261 0.317903 -vt 0.612261 0.355249 -vt 0.584251 0.373922 -vt 0.696290 0.373922 -vt 0.668280 0.355249 -vt 0.668280 0.317903 -vt 0.612261 0.373922 -vt 0.584251 0.299230 -vt 0.612261 0.299230 -vt 0.584251 0.224537 -vt 0.612261 0.243210 -vt 0.612262 0.429940 -vt 0.612262 0.448613 -vt 0.780319 0.429940 -vt 0.808328 0.336575 -vt 0.780319 0.243210 -vt 0.354735 0.843513 -vt 0.641617 0.875562 -vt 0.260617 0.428675 -vt 0.771903 0.908893 -vt 0.782357 0.883655 -vt 0.314663 0.843513 -vt 0.274591 0.843513 -vt 0.515025 0.843513 -vt 0.474953 0.843513 -vt 0.394808 0.843513 -vt 0.583330 0.777207 -vt 0.572876 0.802445 -vt 0.785999 0.878203 -vt 0.569233 0.807897 -vt 0.810768 0.855244 -vt 0.544465 0.830856 -vt 0.842437 0.843510 -vt 0.512796 0.842589 -vt 0.876185 0.844789 -vt 0.448357 0.827213 -vt 0.479047 0.841310 -vt 0.906875 0.858886 -vt 0.425398 0.802445 -vt 0.414944 0.777206 -vt 0.929835 0.883654 -vt 0.940289 0.908893 -vt 0.379621 0.823282 -vt 0.225458 0.823282 -vt 0.371218 0.831685 -vt 0.205864 0.589584 -vt 0.075153 0.393517 -vt 0.809250 0.168518 -vt 0.939961 0.000461 -vt 0.878094 0.999539 -vt 0.224537 0.617593 -vt 0.168518 0.617593 -vt 0.000461 0.617593 -vt 0.000461 0.951960 -vt 0.612262 0.093826 -vt 0.584251 0.674532 -vt 0.000461 0.964085 -vt 0.789655 0.645601 -vt 0.584251 0.449534 -vt 0.878094 0.987414 -vt 0.808328 0.673611 -vt 0.752309 0.673611 -vt 0.696290 0.673611 -vt 0.075153 0.842591 -vt 0.000461 0.842591 -vt 0.000461 0.767899 -vt 0.000461 0.693207 -vt 0.149845 0.618515 -vt 0.224537 0.693207 -vt 0.000461 0.618514 -vt 0.224537 0.842591 -vt 0.224537 0.618515 -vt 0.641617 0.951039 -vt 0.519591 0.913830 -vt 0.502266 0.393517 -vt 0.554985 0.393517 -vt 0.861047 0.169439 -vt 0.913766 0.169439 -vt 0.414377 0.428675 -vt 0.260617 0.582435 -vt 0.414377 0.582435 -vt 0.428933 0.705319 -vt 0.873658 0.643801 -vt 0.563375 0.452185 -vt 0.563375 0.510853 -vt 0.745847 0.907920 -vt 0.571765 0.451264 -vt 0.682764 0.921979 -vt 0.555906 0.451264 -vt 0.479519 0.913816 -vt 0.403018 0.913790 -vt 0.399375 0.913788 -vt 0.359303 0.913775 -vt 0.319230 0.913761 -vt 0.242729 0.913734 -vt 0.202656 0.913721 -vt 0.162584 0.913707 -vt 0.122512 0.913693 -vt 0.118869 0.913692 -vt 0.042367 0.913665 -vt 0.038724 0.913664 -vt 0.639808 0.913871 -vt 0.559664 0.913844 -vt 0.599736 0.913857 -vt 0.000461 0.000461 -vt 0.858721 0.541495 -vt 0.896067 0.604983 -vt 0.899801 0.545229 -vt 0.854986 0.601248 -vt 0.854065 0.545229 -vt 0.812984 0.541495 -vt 0.850330 0.604983 -vt 0.809250 0.601248 -vt 0.872737 0.632530 -vt 0.869003 0.673611 -vt 0.812984 0.628795 -vt 0.809249 0.669876 -vt 0.770982 0.847245 -vt 0.729901 0.843510 -vt 0.780319 0.000461 -vt 0.808328 0.000461 -vt 0.808328 0.168518 -vt 0.726166 0.903264 -vt 0.767247 0.906999 -vt 0.696290 0.299230 -vt 0.584253 0.448613 -vt 0.808329 0.448613 -vt 0.780319 0.448613 -vt 0.808328 0.280556 -vt 0.808328 0.392594 -vn -0.980800 0.000000 -0.195100 -vn 0.000000 1.000000 0.000000 -vn -0.831500 0.000000 -0.555600 -vn -0.555600 0.000000 -0.831500 -vn -0.195100 0.000000 -0.980800 -vn 0.195100 0.000000 -0.980800 -vn 0.555600 0.000000 -0.831500 -vn 0.831500 0.000000 -0.555600 -vn 0.980800 0.000000 -0.195100 -vn 0.980800 0.000000 0.195100 -vn 0.831500 0.000000 0.555600 -vn 0.555600 0.000000 0.831500 -vn 0.195100 0.000000 0.980800 -vn -0.195100 0.000000 0.980800 -vn -0.555600 0.000000 0.831500 -vn -0.831500 0.000000 0.555600 -vn -0.980800 0.000000 0.195100 -vn 1.000000 -0.000000 0.000000 -vn -1.000000 0.000000 0.000000 -vn -0.000000 0.000000 1.000000 -vn 0.000000 -1.000000 0.000000 -vn 0.000000 -0.000000 -1.000000 -vn 0.923900 0.000000 0.382700 -vn 0.382700 0.000000 -0.923900 -vn -0.923900 0.000000 -0.382700 -vn -0.923900 0.000000 0.382700 -vn 0.923900 0.000000 -0.382700 -vn -0.382700 0.000000 0.923900 -vn 0.382700 0.000000 0.923900 -vn -0.382700 0.000000 -0.923900 -vn -0.580700 -0.806900 0.108000 -vn -0.826100 -0.367200 -0.427500 -vn -0.392300 0.362500 -0.845400 -vn 0.252800 0.703100 -0.664600 -vn -0.244600 -0.769100 0.590500 -vn 0.351200 -0.397300 0.847800 -vn 0.853400 0.383100 0.353500 -vn 0.656100 0.704000 -0.271800 -vn 0.653300 0.382700 0.653300 -vn -0.590500 -0.769100 -0.244600 -vn 0.270600 -0.923900 0.270600 -vn -0.653300 -0.382700 -0.653300 -vn -0.270600 0.923900 -0.270600 -vn 0.270600 0.923900 0.270600 -vn 0.653300 -0.382700 0.653300 -vn -0.270600 -0.923900 -0.270600 -vn -0.653300 0.382700 -0.653300 -vn -0.108000 -0.806900 -0.580700 -vn 0.427500 -0.367200 -0.826100 -vn 0.845400 0.362500 -0.392300 -vn 0.664600 0.703100 0.252800 -vn -0.847800 -0.397300 0.351200 -vn -0.353500 0.383100 0.853400 -vn 0.271800 0.704000 0.656100 -vn -0.653300 0.382700 0.653300 -vn 0.653300 0.382700 -0.653300 -vn -0.270600 0.923900 0.270600 -vn 0.653300 -0.382700 -0.653300 -vn 0.270600 -0.923900 -0.270600 -vn 0.270600 0.923900 -0.270600 -vn -0.270600 -0.923900 0.270600 -vn -0.653300 -0.382700 0.653300 -vn 0.108000 -0.806900 0.580700 -vn 0.580700 -0.806900 0.108000 -vn 0.826100 -0.367200 -0.427500 -vn 0.392300 0.362500 -0.845400 -vn -0.427500 -0.367200 0.826100 -vn -0.845400 0.362500 0.392300 -vn -0.664600 0.703100 -0.252700 -vn -0.252800 0.703100 -0.664600 -vn 0.244600 -0.769100 -0.590500 -vn 0.580700 -0.806900 -0.108000 -vn 0.826100 -0.367200 0.427500 -vn 0.392300 0.362500 0.845400 -vn -0.351200 -0.397300 -0.847800 -vn -0.853400 0.383100 -0.353500 -vn -0.656100 0.704000 0.271800 -vn -0.252800 0.703100 0.664600 -vn -0.590500 -0.769100 0.244600 -vn -0.847800 -0.397300 -0.351200 -vn -0.353500 0.383100 -0.853400 -vn 0.271800 0.704000 -0.656100 -vn -0.108000 -0.806900 0.580700 -vn 0.427500 -0.367200 0.826100 -vn 0.845400 0.362500 0.392300 -vn 0.664600 0.703100 -0.252800 -vn -0.580700 -0.806900 -0.108000 -vn -0.244600 -0.769100 -0.590500 -vn 0.351200 -0.397300 -0.847800 -vn 0.853400 0.383100 -0.353500 -vn 0.656100 0.704000 0.271800 -vn -0.826100 -0.367200 0.427500 -vn -0.392300 0.362500 0.845400 -vn 0.252800 0.703100 0.664600 -vn 0.244600 -0.769100 0.590500 -vn 0.590500 -0.769100 0.244600 -vn 0.847800 -0.397300 -0.351200 -vn 0.353500 0.383100 -0.853400 -vn -0.351200 -0.397300 0.847800 -vn -0.853400 0.383100 0.353500 -vn -0.656100 0.704000 -0.271800 -vn -0.271800 0.704000 -0.656100 -vn 0.108000 -0.806900 -0.580700 -vn 0.590500 -0.769100 -0.244600 -vn 0.847800 -0.397300 0.351200 -vn 0.353500 0.383100 0.853400 -vn -0.427500 -0.367200 -0.826100 -vn -0.845400 0.362500 -0.392300 -vn -0.664600 0.703100 0.252800 -vn -0.271800 0.704000 0.656100 -s off -f 13/1/1 347/2/1 346/3/1 -f 36/4/2 37/5/2 65/6/2 -f 185/7/3 186/8/3 28/9/3 -f 183/10/4 185/7/4 27/11/4 -f 184/12/5 183/10/5 25/13/5 -f 198/14/6 184/12/6 26/15/6 -f 197/16/7 198/14/7 40/17/7 -f 196/18/8 197/16/8 39/19/8 -f 195/20/9 196/18/9 38/21/9 -f 194/22/10 195/20/10 37/5/10 -f 193/23/11 194/22/11 36/4/11 -f 192/24/12 193/23/12 35/25/12 -f 191/26/13 192/24/13 34/27/13 -f 190/28/14 191/26/14 33/29/14 -f 189/30/15 190/28/15 32/31/15 -f 188/32/16 189/30/16 31/33/16 -f 187/34/17 188/32/17 30/35/17 -f 232/36/2 14/37/2 245/38/2 -f 50/39/2 21/40/2 20/41/2 -f 22/42/2 21/40/2 50/39/2 -f 6/43/2 51/44/2 219/45/2 -f 6/43/2 221/46/2 223/47/2 -f 41/48/2 9/49/2 24/50/2 -f 10/51/2 9/49/2 41/48/2 -f 237/52/2 16/53/2 235/54/2 -f 235/54/2 16/53/2 15/55/2 -f 44/56/2 13/57/2 12/58/2 -f 14/37/2 13/57/2 44/56/2 -f 46/59/2 245/38/2 14/37/2 -f 16/53/2 237/52/2 48/60/2 -f 47/61/2 17/62/2 16/53/2 -f 18/63/2 17/62/2 47/61/2 -f 15/55/2 14/37/2 232/36/2 -f 73/64/10 72/65/10 87/66/10 -f 30/35/2 58/67/2 57/68/2 -f 37/5/2 38/21/2 66/69/2 -f 31/33/2 59/70/2 58/71/2 -f 38/21/2 39/19/2 67/72/2 -f 32/31/2 60/73/2 59/74/2 -f 40/17/2 68/75/2 67/76/2 -f 32/31/2 33/29/2 61/77/2 -f 25/13/2 53/78/2 54/79/2 -f 26/15/2 54/80/2 68/81/2 -f 33/29/2 34/27/2 62/82/2 -f 27/11/2 55/83/2 53/84/2 -f 35/25/2 63/85/2 62/86/2 -f 28/9/2 56/87/2 55/88/2 -f 35/25/2 36/4/2 64/89/2 -f 29/90/2 57/91/2 56/92/2 -f 76/93/2 78/94/2 72/65/2 -f 81/95/1 80/96/1 85/97/1 -f 58/98/9 74/99/9 73/64/9 -f 66/100/17 82/101/17 81/95/17 -f 59/102/8 75/103/8 74/99/8 -f 67/104/16 83/105/16 82/101/16 -f 60/106/7 76/93/7 75/103/7 -f 68/107/15 84/108/15 83/105/15 -f 61/109/6 77/110/6 76/93/6 -f 53/111/13 69/112/13 70/113/13 -f 54/114/14 70/113/14 84/108/14 -f 62/115/5 78/94/5 77/110/5 -f 88/116/12 71/117/12 69/112/12 -f 86/118/4 79/119/4 78/94/4 -f 85/120/3 86/121/3 63/122/3 -f 56/123/11 87/124/11 88/125/11 -f 81/95/2 83/105/2 70/113/2 -f 88/125/2 87/124/2 86/121/2 -f 87/124/15 72/126/15 79/127/15 -f 71/128/7 88/125/7 85/120/7 -f 97/129/18 94/130/18 93/131/18 -f 157/132/19 164/133/19 165/134/19 -f 89/135/20 90/136/20 151/137/20 -f 95/138/18 91/139/18 92/140/18 -f 98/141/18 92/140/18 2/142/18 -f 94/130/18 97/129/18 1/143/18 -f 96/144/21 95/145/21 106/146/21 -f 99/147/2 111/148/2 108/149/2 -f 97/150/2 107/151/2 112/152/2 -f 108/153/18 111/154/18 110/155/18 -f 107/156/18 105/157/18 109/158/18 -f 110/155/18 109/158/18 105/157/18 -f 104/159/22 112/152/22 109/160/22 -f 96/144/20 105/161/20 107/151/20 -f 50/162/18 51/163/18 95/138/18 -f 102/164/2 109/165/2 110/166/2 -f 100/167/20 110/166/20 111/148/20 -f 98/168/22 108/149/22 106/146/22 -f 398/169/22 397/170/22 394/171/22 -f 120/172/2 114/173/2 126/174/2 -f 115/175/19 125/176/19 123/177/19 -f 125/178/22 130/179/22 128/180/22 -f 129/181/22 127/182/22 126/183/22 -f 124/184/22 123/185/22 128/180/22 -f 116/186/18 124/187/18 126/174/18 -f 118/188/2 130/189/2 125/176/2 -f 121/190/18 128/191/18 130/189/18 -f 122/192/2 129/193/2 128/191/2 -f 120/172/19 127/194/19 129/195/19 -f 139/196/19 136/197/19 411/198/19 -f 411/198/19 412/199/19 140/200/19 -f 132/201/21 131/202/21 142/203/21 -f 140/204/2 145/205/2 146/206/2 -f 138/207/2 134/208/2 144/209/2 -f 407/210/19 135/211/19 137/212/19 -f 138/213/19 140/200/19 412/199/19 -f 142/214/19 146/215/19 145/216/19 -f 143/217/19 147/218/19 146/215/19 -f 145/216/19 148/219/19 144/220/19 -f 138/207/20 148/221/20 145/222/20 -f 133/223/20 143/224/20 142/203/20 -f 136/225/2 147/226/2 143/224/2 -f 133/227/19 131/228/19 8/229/19 -f 132/201/22 141/230/22 144/209/22 -f 139/231/22 146/206/22 147/226/22 -f 150/232/20 92/233/20 91/234/20 -f 153/235/19 159/236/19 163/237/19 -f 149/238/20 154/239/20 151/137/20 -f 150/232/20 155/240/20 2/241/20 -f 162/242/20 165/243/20 164/244/20 -f 160/245/20 166/246/20 163/247/20 -f 150/248/2 163/237/2 166/249/2 -f 158/250/2 160/251/2 164/133/2 -f 151/252/18 162/253/18 161/254/18 -f 156/255/18 166/249/18 160/256/18 -f 48/257/20 7/258/20 152/259/20 -f 154/260/2 165/134/2 162/253/2 -f 137/261/21 113/262/21 103/263/21 -f 20/264/11 354/265/11 353/266/11 -f 12/267/3 346/3/3 345/268/3 -f 19/269/12 353/266/12 352/270/12 -f 11/271/4 345/268/4 343/272/4 -f 18/273/13 352/270/13 351/274/13 -f 9/275/6 344/276/6 358/277/6 -f 10/278/5 343/272/5 344/276/5 -f 17/279/14 351/274/14 350/280/14 -f 24/281/7 358/277/7 357/282/7 -f 16/283/15 350/280/15 349/284/15 -f 23/285/8 357/282/8 356/286/8 -f 15/287/16 349/284/16 348/288/16 -f 22/289/9 356/286/9 355/290/9 -f 14/291/17 348/288/17 347/292/17 -f 21/293/10 355/290/10 354/265/10 -f 350/280/2 351/274/2 333/294/2 -f 186/8/1 187/295/1 29/90/1 -f 181/296/21 168/297/21 188/32/21 -f 168/298/21 167/299/21 189/30/21 -f 167/300/21 171/301/21 190/28/21 -f 171/302/21 173/303/21 191/26/21 -f 173/304/21 176/305/21 192/24/21 -f 176/306/21 178/307/21 193/23/21 -f 178/308/21 180/309/21 194/22/21 -f 194/22/21 180/310/21 182/311/21 -f 182/312/21 170/313/21 196/18/21 -f 196/18/21 170/314/21 169/315/21 -f 197/16/21 169/316/21 172/317/21 -f 172/318/21 175/319/21 184/12/21 -f 184/12/21 175/320/21 174/321/21 -f 183/10/21 174/322/21 177/323/21 -f 185/7/21 177/324/21 179/325/21 -f 186/8/21 179/326/21 181/327/21 -f 236/328/23 238/329/23 237/330/23 -f 239/331/2 48/60/2 237/52/2 -f 202/332/24 204/333/24 203/334/24 -f 244/335/25 246/336/25 245/337/25 -f 226/338/26 228/339/26 227/340/26 -f 204/333/27 206/341/27 205/342/27 -f 240/343/28 242/344/28 241/345/28 -f 224/346/28 226/338/28 225/347/28 -f 206/341/23 208/348/23 207/349/23 -f 242/344/26 244/335/26 243/350/26 -f 222/351/29 224/346/29 223/352/29 -f 208/348/29 210/353/29 209/354/29 -f 7/355/2 48/60/2 239/331/2 -f 220/356/23 222/351/23 221/357/23 -f 210/353/28 212/358/28 211/359/28 -f 228/339/25 230/360/25 229/361/25 -f 218/362/27 220/356/27 219/363/27 -f 212/364/26 214/365/26 213/366/26 -f 243/367/2 245/38/2 46/59/2 -f 216/368/30 202/332/30 201/369/30 -f 214/365/25 216/368/25 215/370/25 -f 238/329/29 240/343/29 239/371/29 -f 230/372/30 199/373/30 200/374/30 -f 199/373/24 218/362/24 217/375/24 -f 234/376/27 236/328/27 235/377/27 -f 246/336/30 231/378/30 232/379/30 -f 231/378/24 234/380/24 233/381/24 -f 252/382/23 254/383/23 253/384/23 -f 260/385/25 262/386/25 261/387/25 -f 256/388/28 258/389/28 257/390/28 -f 258/389/26 260/385/26 259/391/26 -f 7/355/2 241/392/2 243/367/2 -f 254/393/29 256/388/29 255/394/29 -f 250/395/27 252/382/27 251/396/27 -f 262/386/30 247/397/30 248/398/30 -f 247/397/24 250/395/24 249/399/24 -f 223/47/2 225/400/2 49/401/2 -f 219/45/2 51/44/2 217/402/2 -f 51/44/2 20/41/2 217/402/2 -f 217/402/2 20/41/2 200/403/2 -f 200/403/2 20/41/2 19/404/2 -f 49/401/2 225/400/2 18/63/2 -f 225/400/2 227/405/2 18/63/2 -f 19/404/2 18/63/2 227/405/2 -f 8/406/2 261/407/2 248/408/2 -f 8/406/2 45/409/2 259/410/2 -f 259/410/2 45/409/2 257/411/2 -f 248/408/2 249/412/2 42/413/2 -f 42/413/2 249/412/2 10/51/2 -f 45/409/2 12/58/2 257/411/2 -f 257/411/2 12/58/2 255/414/2 -f 249/412/2 251/415/2 10/51/2 -f 11/416/2 10/51/2 251/415/2 -f 255/414/2 12/58/2 11/416/2 -f 5/417/2 203/418/2 205/419/2 -f 5/417/2 43/420/2 201/421/2 -f 201/421/2 43/420/2 215/422/2 -f 205/419/2 207/423/2 52/424/2 -f 52/424/2 207/423/2 22/42/2 -f 43/420/2 24/50/2 215/422/2 -f 207/423/2 209/425/2 22/42/2 -f 23/426/2 22/42/2 209/425/2 -f 215/422/2 24/50/2 213/427/2 -f 213/427/2 24/50/2 23/426/2 -f 212/428/31 267/429/31 266/430/31 -f 214/431/32 266/430/32 265/432/32 -f 216/433/33 265/432/33 264/434/33 -f 202/435/34 264/434/34 263/436/34 -f 212/437/35 210/438/35 268/439/35 -f 210/438/36 208/440/36 269/441/36 -f 208/440/37 206/442/37 270/443/37 -f 206/442/38 204/444/38 263/436/38 -f 269/445/39 270/446/39 278/447/39 -f 230/448/40 228/449/40 282/450/40 -f 268/451/41 276/452/41 275/453/41 -f 266/454/42 274/455/42 273/456/42 -f 263/457/43 264/458/43 271/459/43 -f 270/446/44 263/457/44 272/460/44 -f 268/451/45 269/445/45 277/461/45 -f 267/462/46 275/463/46 274/455/46 -f 265/464/47 273/456/47 271/459/47 -f 230/465/48 281/466/48 280/467/48 -f 199/468/49 280/467/49 279/469/49 -f 218/470/50 279/469/50 286/471/50 -f 220/472/51 286/471/51 285/473/51 -f 228/449/52 226/474/52 283/475/52 -f 226/474/53 224/476/53 284/477/53 -f 224/476/54 222/478/54 285/473/54 -f 283/479/55 284/480/55 287/481/55 -f 286/482/56 279/483/56 292/484/56 -f 284/480/57 285/485/57 293/486/57 -f 279/483/58 280/487/58 290/488/58 -f 281/489/59 289/490/59 290/488/59 -f 286/482/60 294/491/60 293/486/60 -f 282/492/61 291/493/61 289/494/61 -f 283/479/62 288/495/62 291/493/62 -f 254/496/63 297/497/63 298/498/63 -f 296/499/64 297/500/64 254/501/64 -f 295/502/65 296/499/65 252/503/65 -f 302/504/66 295/502/66 250/505/66 -f 256/506/67 298/498/67 299/507/67 -f 258/508/68 299/507/68 300/509/68 -f 260/510/69 300/509/69 301/511/69 -f 301/511/70 302/504/70 247/512/70 -f 297/513/59 296/514/59 306/515/59 -f 234/516/71 231/517/71 316/518/71 -f 302/519/60 301/520/60 309/521/60 -f 297/522/61 305/523/61 307/524/61 -f 299/525/62 298/526/62 307/524/62 -f 299/525/55 304/527/55 303/528/55 -f 302/519/56 310/529/56 308/530/56 -f 301/520/57 300/531/57 303/528/57 -f 295/532/58 308/530/58 306/515/58 -f 234/533/72 315/534/72 314/535/72 -f 236/536/73 314/535/73 313/537/73 -f 238/538/74 313/537/74 312/539/74 -f 231/517/75 246/540/75 317/541/75 -f 246/540/76 244/542/76 318/543/76 -f 244/542/77 242/544/77 311/545/77 -f 240/546/78 312/539/78 311/545/78 -f 315/547/41 320/548/41 323/549/41 -f 316/550/46 319/551/46 320/552/46 -f 318/553/43 311/554/43 324/555/43 -f 317/556/42 325/557/42 319/551/42 -f 311/554/44 312/558/44 322/559/44 -f 312/558/39 313/560/39 321/561/39 -f 318/553/47 326/562/47 325/557/47 -f 313/560/45 314/563/45 323/549/45 -f 351/274/2 352/270/2 336/564/2 -f 336/565/2 352/270/2 353/266/2 -f 353/266/2 354/265/2 340/566/2 -f 354/265/2 355/290/2 342/567/2 -f 355/290/2 356/286/2 330/568/2 -f 330/569/2 356/286/2 357/282/2 -f 329/570/2 357/282/2 358/277/2 -f 332/571/2 358/277/2 344/276/2 -f 335/572/2 344/276/2 343/272/2 -f 343/272/2 345/268/2 337/573/2 -f 337/574/2 345/268/2 346/3/2 -f 346/3/2 347/2/2 341/575/2 -f 347/292/2 348/288/2 328/576/2 -f 349/284/2 350/280/2 331/577/2 -f 348/288/2 349/284/2 327/578/2 -f 341/579/1 181/580/1 179/581/1 -f 328/582/17 168/583/17 181/584/17 -f 327/585/16 167/586/16 168/583/16 -f 331/587/15 171/588/15 167/586/15 -f 333/589/14 173/590/14 171/588/14 -f 336/591/13 176/592/13 173/590/13 -f 338/593/12 178/594/12 176/592/12 -f 340/595/11 180/596/11 178/594/11 -f 342/597/10 182/598/10 180/596/10 -f 330/599/9 170/600/9 182/598/9 -f 329/601/8 169/602/8 170/600/8 -f 332/603/7 172/604/7 169/602/7 -f 335/605/6 175/606/6 172/604/6 -f 334/607/5 174/608/5 175/606/5 -f 337/609/4 177/610/4 174/608/4 -f 339/611/3 179/581/3 177/610/3 -f 382/612/20 384/613/20 386/614/20 -f 376/615/2 371/616/2 370/617/2 -f 365/618/21 377/619/21 378/620/21 -f 366/621/18 378/622/18 364/623/18 -f 374/624/21 369/625/21 363/626/21 -f 363/626/20 364/627/20 378/628/20 -f 371/616/20 378/628/20 377/629/20 -f 369/625/20 372/630/20 364/627/20 -f 369/625/20 370/617/20 377/629/20 -f 374/631/20 373/632/20 158/633/20 -f 156/634/20 373/632/20 376/635/20 -f 155/240/20 376/635/20 380/636/20 -f 374/631/20 157/637/20 154/239/20 -f 375/638/19 372/639/19 377/640/19 -f 373/641/19 363/626/19 371/616/19 -f 379/642/2 364/643/2 372/644/2 -f 380/645/18 370/617/18 369/625/18 -f 413/646/19 410/647/19 408/648/19 -f 366/621/20 379/642/20 375/638/20 -f 368/649/18 359/650/18 382/612/18 -f 361/651/20 389/652/20 387/653/20 -f 359/650/2 383/654/2 384/655/2 -f 360/656/2 387/653/2 388/657/2 -f 367/658/18 100/659/18 99/660/18 -f 103/661/18 360/662/18 362/663/18 -f 104/664/18 361/665/18 360/662/18 -f 367/658/18 361/665/18 102/666/18 -f 388/657/18 386/667/18 384/668/18 -f 388/657/18 387/653/18 385/669/18 -f 383/670/18 385/669/18 387/653/18 -f 383/670/18 389/652/18 390/671/18 -f 367/672/21 390/671/21 389/652/21 -f 381/673/21 386/674/21 385/675/21 -f 368/649/22 385/676/22 383/677/22 -f 362/678/22 388/657/22 390/671/22 -f 398/169/2 400/679/2 399/680/2 -f 393/681/2 404/682/2 403/683/2 -f 396/684/18 406/685/18 404/682/18 -f 392/686/19 402/687/19 400/688/19 -f 403/683/22 401/689/22 399/690/22 -f 401/689/22 403/683/22 404/682/22 -f 406/685/22 405/691/22 399/690/22 -f 406/685/22 400/692/22 402/693/22 -f 397/170/18 399/694/18 401/695/18 -f 391/696/19 403/683/19 405/691/19 -f 395/697/21 405/691/21 406/685/21 -f 394/171/21 401/698/21 402/699/21 -f 414/700/2 415/701/2 417/702/2 -f 412/703/22 419/704/22 420/705/22 -f 409/706/2 420/705/2 421/707/2 -f 410/647/21 422/708/21 416/709/21 -f 135/211/19 136/197/19 133/227/19 -f 137/212/19 3/710/19 134/711/19 -f 134/711/19 3/710/19 90/712/19 -f 132/713/19 46/714/19 44/715/19 -f 421/707/19 422/716/19 417/717/19 -f 416/718/19 422/716/19 421/707/19 -f 420/705/19 419/704/19 415/719/19 -f 419/704/19 418/720/19 417/717/19 -f 413/646/22 417/721/22 422/722/22 -f 407/723/20 421/707/20 418/720/20 -f 411/724/21 418/720/21 419/704/21 -f 408/648/20 416/725/20 415/726/20 -f 124/187/21 116/186/21 117/727/21 -f 159/728/20 161/729/20 164/244/20 -f 153/235/21 152/730/21 161/254/21 -f 393/731/22 391/732/22 113/733/22 -f 121/734/22 395/735/22 396/736/22 -f 118/737/22 391/732/22 395/735/22 -f 393/731/22 119/738/22 120/739/22 -f 119/738/22 4/740/22 114/741/22 -f 113/733/22 118/737/22 115/742/22 -f 94/743/22 115/742/22 117/744/22 -f 41/745/22 117/744/22 116/746/22 -f 114/741/22 4/740/22 8/229/22 -f 12/267/1 13/1/1 346/3/1 -f 64/747/2 36/4/2 65/6/2 -f 27/11/3 185/7/3 28/9/3 -f 25/13/4 183/10/4 27/11/4 -f 26/15/5 184/12/5 25/13/5 -f 40/17/6 198/14/6 26/15/6 -f 39/19/7 197/16/7 40/17/7 -f 38/21/8 196/18/8 39/19/8 -f 37/5/9 195/20/9 38/21/9 -f 36/4/10 194/22/10 37/5/10 -f 35/25/11 193/23/11 36/4/11 -f 34/27/12 192/24/12 35/25/12 -f 33/29/13 191/26/13 34/27/13 -f 32/31/14 190/28/14 33/29/14 -f 31/33/15 189/30/15 32/31/15 -f 30/35/16 188/32/16 31/33/16 -f 29/748/17 187/34/17 30/35/17 -f 51/44/2 50/39/2 20/41/2 -f 52/424/2 22/42/2 50/39/2 -f 221/46/2 6/43/2 219/45/2 -f 49/401/2 6/43/2 223/47/2 -f 43/420/2 41/48/2 24/50/2 -f 42/413/2 10/51/2 41/48/2 -f 233/749/2 235/54/2 15/55/2 -f 45/409/2 44/56/2 12/58/2 -f 46/59/2 14/37/2 44/56/2 -f 48/60/2 47/61/2 16/53/2 -f 49/401/2 18/63/2 47/61/2 -f 233/749/2 15/55/2 232/36/2 -f 87/66/10 56/750/10 57/751/10 -f 57/751/10 73/64/10 87/66/10 -f 29/748/2 30/35/2 57/68/2 -f 65/752/2 37/5/2 66/69/2 -f 30/35/2 31/33/2 58/71/2 -f 66/753/2 38/21/2 67/72/2 -f 31/33/2 32/31/2 59/74/2 -f 39/19/2 40/17/2 67/76/2 -f 60/754/2 32/31/2 61/77/2 -f 26/15/2 25/13/2 54/79/2 -f 40/17/2 26/15/2 68/81/2 -f 61/755/2 33/29/2 62/82/2 -f 25/13/2 27/11/2 53/84/2 -f 34/27/2 35/25/2 62/86/2 -f 27/11/2 28/9/2 55/88/2 -f 63/756/2 35/25/2 64/89/2 -f 28/9/2 29/90/2 56/92/2 -f 72/65/2 73/64/2 74/99/2 -f 74/99/2 75/103/2 76/93/2 -f 76/93/2 77/110/2 78/94/2 -f 78/94/2 79/119/2 72/65/2 -f 72/65/2 74/99/2 76/93/2 -f 85/97/1 64/757/1 65/758/1 -f 65/758/1 81/95/1 85/97/1 -f 57/759/9 58/98/9 73/64/9 -f 65/760/17 66/100/17 81/95/17 -f 58/761/8 59/102/8 74/99/8 -f 66/762/16 67/104/16 82/101/16 -f 59/763/7 60/106/7 75/103/7 -f 67/764/15 68/107/15 83/105/15 -f 60/765/6 61/109/6 76/93/6 -f 54/766/13 53/111/13 70/113/13 -f 68/767/14 54/114/14 84/108/14 -f 61/768/5 62/115/5 77/110/5 -f 69/112/12 53/769/12 88/116/12 -f 55/770/12 88/116/12 53/769/12 -f 78/94/4 62/771/4 86/118/4 -f 63/772/4 86/118/4 62/771/4 -f 64/773/3 85/120/3 63/122/3 -f 55/774/11 56/123/11 88/125/11 -f 70/113/2 69/112/2 71/117/2 -f 71/117/2 80/96/2 81/95/2 -f 81/95/2 82/101/2 83/105/2 -f 83/105/2 84/108/2 70/113/2 -f 70/113/2 71/117/2 81/95/2 -f 85/120/2 88/125/2 86/121/2 -f 86/121/15 87/124/15 79/127/15 -f 80/775/7 71/128/7 85/120/7 -f 96/776/18 97/129/18 93/131/18 -f 154/260/19 157/132/19 165/134/19 -f 152/259/20 89/135/20 151/137/20 -f 98/141/18 95/138/18 92/140/18 -f 2/142/18 101/777/18 98/141/18 -f 99/660/18 98/141/18 101/777/18 -f 103/661/18 1/143/18 97/129/18 -f 97/129/18 104/664/18 103/661/18 -f 105/161/21 96/144/21 106/146/21 -f 98/168/2 99/147/2 108/149/2 -f 104/159/2 97/150/2 112/152/2 -f 106/778/18 108/153/18 110/155/18 -f 112/779/18 107/156/18 109/158/18 -f 106/778/18 110/155/18 105/157/18 -f 102/780/22 104/159/22 109/160/22 -f 97/150/20 96/144/20 107/151/20 -f 96/776/18 93/131/18 5/781/18 -f 5/781/18 52/782/18 96/776/18 -f 51/163/18 6/783/18 95/138/18 -f 52/782/18 50/162/18 96/776/18 -f 95/138/18 96/776/18 50/162/18 -f 6/783/18 91/139/18 95/138/18 -f 100/167/2 102/164/2 110/166/2 -f 99/147/20 100/167/20 111/148/20 -f 95/145/22 98/168/22 106/146/22 -f 392/686/22 398/169/22 394/171/22 -f 127/194/2 120/172/2 126/174/2 -f 117/727/19 115/175/19 123/177/19 -f 123/185/22 125/178/22 128/180/22 -f 124/184/22 129/181/22 126/183/22 -f 129/181/22 124/184/22 128/180/22 -f 114/173/18 116/186/18 126/174/18 -f 115/175/2 118/188/2 125/176/2 -f 118/188/18 121/190/18 130/189/18 -f 121/190/2 122/192/2 128/191/2 -f 122/784/19 120/172/19 129/195/19 -f 407/210/19 411/198/19 136/197/19 -f 136/197/19 135/211/19 407/210/19 -f 139/196/19 411/198/19 140/200/19 -f 141/230/21 132/201/21 142/203/21 -f 139/231/2 140/204/2 146/206/2 -f 148/221/2 138/207/2 144/209/2 -f 409/785/19 407/210/19 137/212/19 -f 412/199/19 409/785/19 138/213/19 -f 137/212/19 138/213/19 409/785/19 -f 141/786/19 142/214/19 145/216/19 -f 142/214/19 143/217/19 146/215/19 -f 141/786/19 145/216/19 144/220/19 -f 140/787/20 138/207/20 145/222/20 -f 131/202/20 133/223/20 142/203/20 -f 133/223/2 136/225/2 143/224/2 -f 4/740/19 133/227/19 8/229/19 -f 134/208/22 132/201/22 144/209/22 -f 136/225/22 139/231/22 147/226/22 -f 153/788/20 150/232/20 91/234/20 -f 150/248/19 153/235/19 163/237/19 -f 151/137/20 90/136/20 3/789/20 -f 3/789/20 149/238/20 151/137/20 -f 2/241/20 92/233/20 150/232/20 -f 150/232/20 156/634/20 155/240/20 -f 161/729/20 162/242/20 164/244/20 -f 159/728/20 160/245/20 163/247/20 -f 156/255/2 150/248/2 166/249/2 -f 157/132/2 158/250/2 164/133/2 -f 152/730/18 151/252/18 161/254/18 -f 158/790/18 156/255/18 160/256/18 -f 153/788/20 91/234/20 6/791/20 -f 6/791/20 49/792/20 153/788/20 -f 47/793/20 48/257/20 152/259/20 -f 7/258/20 89/135/20 152/259/20 -f 152/259/20 153/788/20 47/793/20 -f 49/792/20 47/793/20 153/788/20 -f 151/252/2 154/260/2 162/253/2 -f 101/794/21 2/795/21 155/796/21 -f 155/796/21 149/797/21 137/261/21 -f 137/261/21 135/798/21 119/799/21 -f 149/797/21 3/800/21 137/261/21 -f 103/263/21 101/794/21 155/796/21 -f 113/262/21 1/801/21 103/263/21 -f 135/798/21 4/802/21 119/799/21 -f 119/799/21 113/262/21 137/261/21 -f 103/263/21 155/796/21 137/261/21 -f 19/269/11 20/264/11 353/266/11 -f 11/271/3 12/267/3 345/268/3 -f 18/273/12 19/269/12 352/270/12 -f 10/278/4 11/271/4 343/272/4 -f 17/279/13 18/273/13 351/274/13 -f 24/281/6 9/275/6 358/277/6 -f 9/275/5 10/278/5 344/276/5 -f 16/283/14 17/279/14 350/280/14 -f 23/285/7 24/281/7 357/282/7 -f 15/287/15 16/283/15 349/284/15 -f 22/289/8 23/285/8 356/286/8 -f 14/291/16 15/287/16 348/288/16 -f 21/293/9 22/289/9 355/290/9 -f 13/803/17 14/291/17 347/292/17 -f 20/264/10 21/293/10 354/265/10 -f 331/804/2 350/280/2 333/294/2 -f 28/9/1 186/8/1 29/90/1 -f 187/34/21 181/296/21 188/32/21 -f 188/32/21 168/298/21 189/30/21 -f 189/30/21 167/300/21 190/28/21 -f 190/28/21 171/302/21 191/26/21 -f 191/26/21 173/304/21 192/24/21 -f 192/24/21 176/306/21 193/23/21 -f 193/23/21 178/308/21 194/22/21 -f 195/20/21 194/22/21 182/311/21 -f 195/20/21 182/312/21 196/18/21 -f 197/16/21 196/18/21 169/315/21 -f 198/14/21 197/16/21 172/317/21 -f 198/14/21 172/318/21 184/12/21 -f 183/10/21 184/12/21 174/321/21 -f 185/7/21 183/10/21 177/323/21 -f 186/8/21 185/7/21 179/325/21 -f 187/295/21 186/8/21 181/327/21 -f 235/377/23 236/328/23 237/330/23 -f 201/369/24 202/332/24 203/334/24 -f 243/350/25 244/335/25 245/337/25 -f 225/347/26 226/338/26 227/340/26 -f 203/334/27 204/333/27 205/342/27 -f 239/371/28 240/343/28 241/345/28 -f 223/352/28 224/346/28 225/347/28 -f 205/342/23 206/341/23 207/349/23 -f 241/345/26 242/344/26 243/350/26 -f 221/357/29 222/351/29 223/352/29 -f 207/349/29 208/348/29 209/354/29 -f 241/392/2 7/355/2 239/331/2 -f 219/363/23 220/356/23 221/357/23 -f 209/354/28 210/353/28 211/359/28 -f 227/340/25 228/339/25 229/361/25 -f 217/375/27 218/362/27 219/363/27 -f 211/805/26 212/364/26 213/366/26 -f 215/370/30 216/368/30 201/369/30 -f 213/366/25 214/365/25 215/370/25 -f 237/330/29 238/329/29 239/371/29 -f 229/806/30 230/372/30 200/374/30 -f 200/374/24 199/373/24 217/375/24 -f 233/807/27 234/376/27 235/377/27 -f 245/337/30 246/336/30 232/379/30 -f 232/379/24 231/378/24 233/381/24 -f 251/396/23 252/382/23 253/384/23 -f 259/391/25 260/385/25 261/387/25 -f 255/394/28 256/388/28 257/390/28 -f 257/390/26 258/389/26 259/391/26 -f 46/59/2 7/355/2 243/367/2 -f 253/808/29 254/393/29 255/394/29 -f 249/399/27 250/395/27 251/396/27 -f 261/387/30 262/386/30 248/398/30 -f 248/398/24 247/397/24 249/399/24 -f 229/809/2 200/403/2 19/404/2 -f 229/809/2 19/404/2 227/405/2 -f 42/413/2 8/406/2 248/408/2 -f 261/407/2 8/406/2 259/410/2 -f 253/810/2 11/416/2 251/415/2 -f 253/810/2 255/414/2 11/416/2 -f 52/424/2 5/417/2 205/419/2 -f 203/418/2 5/417/2 201/421/2 -f 211/811/2 23/426/2 209/425/2 -f 211/811/2 213/427/2 23/426/2 -f 214/431/79 212/428/79 266/430/79 -f 216/433/80 214/431/80 265/432/80 -f 202/435/81 216/433/81 264/434/81 -f 204/444/82 202/435/82 263/436/82 -f 267/812/83 212/437/83 268/439/83 -f 268/439/84 210/438/84 269/441/84 -f 269/441/85 208/440/85 270/443/85 -f 270/443/86 206/442/86 263/436/86 -f 277/461/39 269/445/39 278/447/39 -f 281/813/87 230/448/87 282/450/87 -f 267/814/41 268/451/41 275/453/41 -f 265/464/42 266/454/42 273/456/42 -f 272/460/43 263/457/43 271/459/43 -f 278/447/44 270/446/44 272/460/44 -f 276/452/45 268/451/45 277/461/45 -f 266/454/46 267/462/46 274/455/46 -f 264/458/47 265/464/47 271/459/47 -f 199/468/88 230/465/88 280/467/88 -f 218/470/89 199/468/89 279/469/89 -f 220/472/90 218/470/90 286/471/90 -f 222/478/91 220/472/91 285/473/91 -f 282/450/92 228/449/92 283/475/92 -f 283/475/93 226/474/93 284/477/93 -f 284/477/94 224/476/94 285/473/94 -f 288/495/55 283/479/55 287/481/55 -f 294/491/56 286/482/56 292/484/56 -f 287/481/57 284/480/57 293/486/57 -f 292/484/58 279/483/58 290/488/58 -f 280/487/59 281/489/59 290/488/59 -f 285/485/60 286/482/60 293/486/60 -f 281/815/61 282/492/61 289/494/61 -f 282/492/62 283/479/62 291/493/62 -f 256/506/95 254/496/95 298/498/95 -f 252/503/96 296/499/96 254/501/96 -f 250/505/97 295/502/97 252/503/97 -f 247/512/98 302/504/98 250/505/98 -f 258/508/99 256/506/99 299/507/99 -f 260/510/100 258/508/100 300/509/100 -f 262/816/101 260/510/101 301/511/101 -f 262/816/102 301/511/102 247/512/102 -f 305/817/59 297/513/59 306/515/59 -f 315/818/103 234/516/103 316/518/103 -f 310/529/60 302/519/60 309/521/60 -f 298/526/61 297/522/61 307/524/61 -f 304/527/62 299/525/62 307/524/62 -f 300/531/55 299/525/55 303/528/55 -f 295/532/56 302/519/56 308/530/56 -f 309/521/57 301/520/57 303/528/57 -f 296/514/58 295/532/58 306/515/58 -f 236/536/104 234/533/104 314/535/104 -f 238/538/105 236/536/105 313/537/105 -f 240/546/106 238/538/106 312/539/106 -f 316/518/107 231/517/107 317/541/107 -f 317/541/108 246/540/108 318/543/108 -f 318/543/109 244/542/109 311/545/109 -f 242/544/110 240/546/110 311/545/110 -f 314/563/41 315/547/41 323/549/41 -f 315/819/46 316/550/46 320/552/46 -f 326/562/43 318/553/43 324/555/43 -f 316/550/42 317/556/42 319/551/42 -f 324/555/44 311/554/44 322/559/44 -f 322/559/39 312/558/39 321/561/39 -f 317/556/47 318/553/47 325/557/47 -f 321/561/45 313/560/45 323/549/45 -f 333/820/2 351/274/2 336/564/2 -f 338/821/2 336/565/2 353/266/2 -f 338/822/2 353/266/2 340/566/2 -f 340/823/2 354/265/2 342/567/2 -f 342/824/2 355/290/2 330/568/2 -f 329/825/2 330/569/2 357/282/2 -f 332/826/2 329/570/2 358/277/2 -f 335/827/2 332/571/2 344/276/2 -f 334/828/2 335/572/2 343/272/2 -f 334/829/2 343/272/2 337/573/2 -f 339/830/2 337/574/2 346/3/2 -f 339/831/2 346/3/2 341/575/2 -f 341/832/2 347/292/2 328/576/2 -f 327/833/2 349/284/2 331/577/2 -f 328/834/2 348/288/2 327/578/2 -f 339/611/1 341/579/1 179/581/1 -f 341/835/17 328/582/17 181/584/17 -f 328/582/16 327/585/16 168/583/16 -f 327/585/15 331/587/15 167/586/15 -f 331/587/14 333/589/14 171/588/14 -f 333/589/13 336/591/13 173/590/13 -f 336/591/12 338/593/12 176/592/12 -f 338/593/11 340/595/11 178/594/11 -f 340/595/10 342/597/10 180/596/10 -f 342/597/9 330/599/9 182/598/9 -f 330/599/8 329/601/8 170/600/8 -f 329/601/7 332/603/7 169/602/7 -f 332/603/6 335/605/6 172/604/6 -f 335/605/5 334/607/5 175/606/5 -f 334/607/4 337/609/4 174/608/4 -f 337/609/3 339/611/3 177/610/3 -f 381/673/20 382/612/20 386/614/20 -f 380/836/2 376/615/2 370/617/2 -f 366/621/21 365/618/21 378/620/21 -f 379/642/18 366/621/18 364/623/18 -f 373/837/21 374/624/21 363/626/21 -f 371/616/20 363/626/20 378/628/20 -f 370/617/20 371/616/20 377/629/20 -f 363/626/20 369/625/20 364/627/20 -f 372/630/20 369/625/20 377/629/20 -f 157/637/20 374/631/20 158/633/20 -f 376/635/20 155/240/20 156/634/20 -f 156/634/20 158/633/20 373/632/20 -f 149/238/20 155/240/20 380/636/20 -f 154/239/20 149/238/20 380/636/20 -f 380/636/20 374/631/20 154/239/20 -f 365/618/19 375/638/19 377/640/19 -f 376/838/19 373/641/19 371/616/19 -f 375/638/2 379/642/2 372/644/2 -f 374/839/18 380/645/18 369/625/18 -f 414/700/19 413/646/19 408/648/19 -f 365/618/20 366/621/20 375/638/20 -f 381/673/18 368/649/18 382/612/18 -f 360/840/20 361/651/20 387/653/20 -f 382/612/2 359/650/2 384/655/2 -f 362/841/2 360/656/2 388/657/2 -f 99/660/18 101/777/18 362/663/18 -f 362/663/18 367/658/18 99/660/18 -f 101/777/18 103/661/18 362/663/18 -f 360/662/18 103/661/18 104/664/18 -f 104/664/18 102/666/18 361/665/18 -f 100/659/18 367/658/18 102/666/18 -f 390/671/18 388/657/18 384/668/18 -f 386/667/18 388/657/18 385/669/18 -f 389/652/18 383/670/18 387/653/18 -f 384/668/18 383/670/18 390/671/18 -f 361/842/21 367/672/21 389/652/21 -f 368/649/21 381/673/21 385/675/21 -f 359/650/22 368/649/22 383/677/22 -f 367/843/22 362/678/22 390/671/22 -f 397/170/2 398/169/2 399/680/2 -f 391/844/2 393/681/2 403/683/2 -f 393/845/18 396/684/18 404/682/18 -f 398/169/19 392/686/19 400/688/19 -f 405/691/22 403/683/22 399/690/22 -f 402/693/22 401/689/22 404/682/22 -f 400/692/22 406/685/22 399/690/22 -f 404/682/22 406/685/22 402/693/22 -f 394/171/18 397/170/18 401/695/18 -f 395/846/19 391/696/19 405/691/19 -f 396/847/21 395/697/21 406/685/21 -f 392/686/21 394/171/21 402/699/21 -f 413/646/2 414/700/2 417/702/2 -f 409/848/22 412/703/22 420/705/22 -f 407/849/2 409/706/2 421/707/2 -f 408/648/21 410/647/21 416/709/21 -f 4/740/19 135/211/19 133/227/19 -f 138/213/19 137/212/19 134/711/19 -f 89/850/19 7/851/19 132/713/19 -f 132/713/19 134/711/19 90/712/19 -f 90/712/19 89/850/19 132/713/19 -f 44/715/19 45/852/19 131/228/19 -f 8/229/19 131/228/19 45/852/19 -f 132/713/19 7/851/19 46/714/19 -f 44/715/19 131/228/19 132/713/19 -f 418/720/19 421/707/19 417/717/19 -f 420/705/19 416/718/19 421/707/19 -f 416/718/19 420/705/19 415/719/19 -f 415/719/19 419/704/19 417/717/19 -f 410/647/22 413/646/22 422/722/22 -f 411/853/20 407/723/20 418/720/20 -f 412/854/21 411/724/21 419/704/21 -f 414/700/20 408/648/20 415/726/20 -f 123/177/21 124/187/21 117/727/21 -f 160/245/20 159/728/20 164/244/20 -f 159/236/21 153/235/21 161/254/21 -f 119/738/22 393/731/22 113/733/22 -f 122/855/22 121/734/22 396/736/22 -f 395/735/22 121/734/22 118/737/22 -f 118/737/22 113/733/22 391/732/22 -f 120/739/22 122/855/22 396/736/22 -f 396/736/22 393/731/22 120/739/22 -f 120/739/22 119/738/22 114/741/22 -f 1/856/22 113/733/22 115/742/22 -f 117/744/22 5/857/22 93/858/22 -f 93/858/22 94/743/22 117/744/22 -f 1/856/22 115/742/22 94/743/22 -f 8/229/22 42/859/22 116/746/22 -f 41/745/22 43/860/22 117/744/22 -f 5/857/22 117/744/22 43/860/22 -f 116/746/22 42/859/22 41/745/22 -f 116/746/22 114/741/22 8/229/22 diff --git a/src/main/resources/assets/hbm/models/error.obj b/src/main/resources/assets/hbm/models/error.obj deleted file mode 100644 index e948f3e60..000000000 --- a/src/main/resources/assets/hbm/models/error.obj +++ /dev/null @@ -1,2909 +0,0 @@ -# Blender v2.76 (sub 0) OBJ File: 'error.blend' -# www.blender.org -o Text_Mesh -v -0.125000 -0.000000 -0.643408 -v -0.125000 -0.000000 -0.745792 -v -0.125000 0.234222 -0.745792 -v -0.125000 0.247672 -0.751697 -v -0.125000 0.259659 -0.758142 -v -0.125000 0.270238 -0.765055 -v -0.125000 0.279466 -0.772362 -v -0.125000 0.287399 -0.779991 -v -0.125000 0.294092 -0.787868 -v -0.125000 0.299602 -0.795920 -v -0.125000 0.303984 -0.804075 -v -0.125000 0.307295 -0.812259 -v -0.125000 0.309591 -0.820399 -v -0.125000 0.310927 -0.828422 -v -0.125000 0.311360 -0.836255 -v -0.125000 0.311317 -0.840189 -v -0.125000 0.311185 -0.843943 -v -0.125000 0.310966 -0.847541 -v -0.125000 0.310659 -0.851008 -v -0.125000 0.310265 -0.854367 -v -0.125000 0.309783 -0.857644 -v -0.125000 0.309213 -0.860862 -v -0.125000 0.308555 -0.864046 -v -0.125000 0.307810 -0.867220 -v -0.125000 0.306978 -0.870409 -v -0.125000 0.306057 -0.873637 -v -0.125000 0.305049 -0.876928 -v -0.125000 0.394109 -0.895161 -v -0.125000 0.395306 -0.892161 -v -0.125000 0.396437 -0.889103 -v -0.125000 0.397495 -0.885957 -v -0.125000 0.398473 -0.882694 -v -0.125000 0.399363 -0.879286 -v -0.125000 0.400158 -0.875701 -v -0.125000 0.400850 -0.871913 -v -0.125000 0.401434 -0.867890 -v -0.125000 0.401900 -0.863605 -v -0.125000 0.402242 -0.859027 -v -0.125000 0.402453 -0.854128 -v -0.125000 0.402524 -0.848878 -v -0.125000 0.401943 -0.838689 -v -0.125000 0.400210 -0.828493 -v -0.125000 0.397342 -0.818340 -v -0.125000 0.393356 -0.808283 -v -0.125000 0.388270 -0.798371 -v -0.125000 0.382100 -0.788657 -v -0.125000 0.374864 -0.779191 -v -0.125000 0.366578 -0.770025 -v -0.125000 0.357260 -0.761209 -v -0.125000 0.346927 -0.752795 -v -0.125000 0.335595 -0.744834 -v -0.125000 0.323282 -0.737377 -v -0.125000 0.323282 -0.734572 -v -0.125000 0.392707 -0.727560 -v -0.125000 0.392707 -0.643408 -v -0.125000 -0.009818 -0.368513 -v -0.125000 -0.008252 -0.392849 -v -0.125000 -0.003607 -0.416576 -v -0.125000 0.004043 -0.439407 -v -0.125000 0.014623 -0.461054 -v -0.125000 0.028056 -0.481231 -v -0.125000 0.044267 -0.499649 -v -0.125000 0.063181 -0.516023 -v -0.125000 0.084723 -0.530063 -v -0.125000 0.108816 -0.541484 -v -0.125000 0.135386 -0.549997 -v -0.125000 0.164356 -0.555316 -v -0.125000 0.195652 -0.557153 -v -0.125000 0.227270 -0.555316 -v -0.125000 0.256509 -0.549997 -v -0.125000 0.283299 -0.541484 -v -0.125000 0.307568 -0.530063 -v -0.125000 0.329247 -0.516023 -v -0.125000 0.348264 -0.499649 -v -0.125000 0.364550 -0.481231 -v -0.125000 0.378032 -0.461054 -v -0.125000 0.388642 -0.439407 -v -0.125000 0.396307 -0.416576 -v -0.125000 0.400958 -0.392849 -v -0.125000 0.402525 -0.368513 -v -0.125000 0.400958 -0.344178 -v -0.125000 0.396307 -0.320451 -v -0.125000 0.388642 -0.297620 -v -0.125000 0.378032 -0.275973 -v -0.125000 0.364550 -0.255796 -v -0.125000 0.348264 -0.237377 -v -0.125000 0.329247 -0.221004 -v -0.125000 0.307568 -0.206963 -v -0.125000 0.283299 -0.195543 -v -0.125000 0.256509 -0.187029 -v -0.125000 0.227270 -0.181710 -v -0.125000 0.195652 -0.179874 -v -0.125000 0.164356 -0.181710 -v -0.125000 0.135386 -0.187029 -v -0.125000 0.108816 -0.195543 -v -0.125000 0.084723 -0.206963 -v -0.125000 0.063181 -0.221004 -v -0.125000 0.044267 -0.237377 -v -0.125000 0.028056 -0.255796 -v -0.125000 0.014623 -0.275973 -v -0.125000 0.004043 -0.297620 -v -0.125000 -0.003607 -0.320451 -v -0.125000 -0.008252 -0.344178 -v -0.125000 0.074334 -0.368513 -v -0.125000 0.075315 -0.355675 -v -0.125000 0.078207 -0.343826 -v -0.125000 0.082935 -0.332990 -v -0.125000 0.089424 -0.323191 -v -0.125000 0.097598 -0.314454 -v -0.125000 0.107381 -0.306802 -v -0.125000 0.118698 -0.300261 -v -0.125000 0.131474 -0.294855 -v -0.125000 0.145632 -0.290607 -v -0.125000 0.161099 -0.287543 -v -0.125000 0.177797 -0.285687 -v -0.125000 0.195652 -0.285063 -v -0.125000 0.213682 -0.285687 -v -0.125000 0.230553 -0.287543 -v -0.125000 0.246187 -0.290607 -v -0.125000 0.260506 -0.294855 -v -0.125000 0.273432 -0.300261 -v -0.125000 0.284888 -0.306802 -v -0.125000 0.294795 -0.314454 -v -0.125000 0.303075 -0.323191 -v -0.125000 0.309651 -0.332990 -v -0.125000 0.314445 -0.343826 -v -0.125000 0.317378 -0.355675 -v -0.125000 0.318373 -0.368513 -v -0.125000 0.317378 -0.381351 -v -0.125000 0.314445 -0.393200 -v -0.125000 0.309651 -0.404037 -v -0.125000 0.303075 -0.413836 -v -0.125000 0.294795 -0.422573 -v -0.125000 0.284888 -0.430224 -v -0.125000 0.273432 -0.436765 -v -0.125000 0.260506 -0.442172 -v -0.125000 0.246187 -0.446419 -v -0.125000 0.230553 -0.449483 -v -0.125000 0.213682 -0.451339 -v -0.125000 0.195652 -0.451963 -v -0.125000 0.177797 -0.451339 -v -0.125000 0.161099 -0.449483 -v -0.125000 0.145632 -0.446419 -v -0.125000 0.131474 -0.442172 -v -0.125000 0.118698 -0.436765 -v -0.125000 0.107381 -0.430224 -v -0.125000 0.097598 -0.422573 -v -0.125000 0.089424 -0.413836 -v -0.125000 0.082935 -0.404037 -v -0.125000 0.078207 -0.393200 -v -0.125000 0.075315 -0.381351 -v -0.125000 0.000000 0.101332 -v -0.125000 -0.000000 -0.001052 -v -0.125000 0.234222 -0.001052 -v -0.125000 0.247672 -0.006957 -v -0.125000 0.259659 -0.013402 -v -0.125000 0.270238 -0.020315 -v -0.125000 0.279466 -0.027622 -v -0.125000 0.287399 -0.035251 -v -0.125000 0.294092 -0.043128 -v -0.125000 0.299602 -0.051180 -v -0.125000 0.303984 -0.059335 -v -0.125000 0.307295 -0.067518 -v -0.125000 0.309591 -0.075658 -v -0.125000 0.310927 -0.083682 -v -0.125000 0.311360 -0.091515 -v -0.125000 0.311317 -0.095449 -v -0.125000 0.311185 -0.099203 -v -0.125000 0.310966 -0.102801 -v -0.125000 0.310659 -0.106267 -v -0.125000 0.310265 -0.109627 -v -0.125000 0.309783 -0.112903 -v -0.125000 0.309213 -0.116121 -v -0.125000 0.308555 -0.119305 -v -0.125000 0.307810 -0.122480 -v -0.125000 0.306978 -0.125669 -v -0.125000 0.306057 -0.128897 -v -0.125000 0.305049 -0.132188 -v -0.125000 0.394109 -0.150421 -v -0.125000 0.395306 -0.147421 -v -0.125000 0.396437 -0.144363 -v -0.125000 0.397495 -0.141217 -v -0.125000 0.398473 -0.137954 -v -0.125000 0.399363 -0.134545 -v -0.125000 0.400158 -0.130961 -v -0.125000 0.400851 -0.127172 -v -0.125000 0.401434 -0.123149 -v -0.125000 0.401900 -0.118864 -v -0.125000 0.402242 -0.114286 -v -0.125000 0.402453 -0.109387 -v -0.125000 0.402525 -0.104137 -v -0.125000 0.401943 -0.093948 -v -0.125000 0.400210 -0.083752 -v -0.125000 0.397342 -0.073600 -v -0.125000 0.393356 -0.063542 -v -0.125000 0.388270 -0.053631 -v -0.125000 0.382100 -0.043917 -v -0.125000 0.374864 -0.034451 -v -0.125000 0.366578 -0.025284 -v -0.125000 0.357260 -0.016469 -v -0.125000 0.346927 -0.008055 -v -0.125000 0.335595 -0.000094 -v -0.125000 0.323282 0.007363 -v -0.125000 0.323282 0.010168 -v -0.125000 0.392707 0.017181 -v -0.125000 0.392707 0.101332 -v -0.125000 0.000000 0.407083 -v -0.125000 0.000000 0.304698 -v -0.125000 0.234222 0.304698 -v -0.125000 0.247672 0.298794 -v -0.125000 0.259659 0.292348 -v -0.125000 0.270238 0.285436 -v -0.125000 0.279466 0.278128 -v -0.125000 0.287399 0.270500 -v -0.125000 0.294092 0.262623 -v -0.125000 0.299602 0.254570 -v -0.125000 0.303984 0.246416 -v -0.125000 0.307295 0.238232 -v -0.125000 0.309591 0.230092 -v -0.125000 0.310927 0.222069 -v -0.125000 0.311360 0.214236 -v -0.125000 0.311317 0.210302 -v -0.125000 0.311185 0.206548 -v -0.125000 0.310966 0.202950 -v -0.125000 0.310659 0.199483 -v -0.125000 0.310265 0.196124 -v -0.125000 0.309783 0.192847 -v -0.125000 0.309213 0.189629 -v -0.125000 0.308555 0.186445 -v -0.125000 0.307810 0.183270 -v -0.125000 0.306978 0.180082 -v -0.125000 0.306057 0.176854 -v -0.125000 0.305049 0.173562 -v -0.125000 0.394109 0.155330 -v -0.125000 0.395306 0.158329 -v -0.125000 0.396437 0.161388 -v -0.125000 0.397495 0.164534 -v -0.125000 0.398473 0.167796 -v -0.125000 0.399363 0.171205 -v -0.125000 0.400158 0.174790 -v -0.125000 0.400851 0.178578 -v -0.125000 0.401434 0.182601 -v -0.125000 0.401900 0.186886 -v -0.125000 0.402242 0.191464 -v -0.125000 0.402453 0.196363 -v -0.125000 0.402525 0.201613 -v -0.125000 0.401943 0.211802 -v -0.125000 0.400210 0.221998 -v -0.125000 0.397342 0.232151 -v -0.125000 0.393356 0.242208 -v -0.125000 0.388270 0.252120 -v -0.125000 0.382100 0.261834 -v -0.125000 0.374864 0.271300 -v -0.125000 0.366578 0.280466 -v -0.125000 0.357260 0.289282 -v -0.125000 0.346927 0.297696 -v -0.125000 0.335595 0.305657 -v -0.125000 0.323282 0.313114 -v -0.125000 0.323282 0.315919 -v -0.125000 0.392707 0.322931 -v -0.125000 0.392707 0.407083 -v -0.125000 0.000000 0.829944 -v -0.125000 0.000000 0.503857 -v -0.125000 0.086957 0.503857 -v -0.125000 0.086957 0.726157 -v -0.125000 0.225807 0.726157 -v -0.125000 0.225806 0.543829 -v -0.125000 0.312763 0.543829 -v -0.125000 0.312763 0.726157 -v -0.125000 0.432679 0.726157 -v -0.125000 0.432679 0.511571 -v -0.125000 0.518934 0.511571 -v -0.125000 0.518934 0.829944 -v 0.125000 0.364550 -0.255796 -v 0.125000 0.348264 -0.237377 -v 0.125000 0.311185 -0.099203 -v 0.125000 0.310966 -0.102801 -v 0.125000 0.014623 -0.461054 -v 0.125000 0.014623 -0.275973 -v 0.125000 0.000000 0.503857 -v 0.125000 0.086957 0.503857 -v 0.125000 0.398473 0.167797 -v 0.125000 0.397342 0.232151 -v 0.125000 0.401900 -0.118864 -v 0.125000 0.400210 -0.083752 -v 0.125000 0.164356 -0.181710 -v 0.125000 0.135386 -0.187029 -v 0.125000 0.294092 -0.043128 -v 0.125000 0.299602 -0.051180 -v 0.125000 0.074334 -0.368513 -v 0.125000 0.075315 -0.381351 -v 0.125000 0.063181 -0.221004 -v 0.125000 0.388642 -0.439407 -v 0.125000 0.396307 -0.416576 -v 0.125000 0.305049 -0.876928 -v 0.125000 0.374864 -0.779191 -v 0.125000 0.305049 0.173562 -v 0.125000 0.357260 0.289282 -v 0.125000 0.306978 -0.125669 -v 0.125000 0.306057 -0.128897 -v 0.125000 0.227270 -0.555316 -v 0.125000 0.256509 -0.549997 -v 0.125000 0.000000 0.407083 -v 0.125000 0.392707 0.407083 -v 0.125000 0.399363 -0.134545 -v 0.125000 0.400158 -0.130961 -v 0.125000 0.401434 -0.867890 -v 0.125000 0.400210 -0.828493 -v 0.125000 0.309783 -0.112903 -v 0.125000 0.335595 -0.000094 -v 0.125000 0.082935 -0.332990 -v 0.125000 0.089424 -0.323191 -v 0.125000 0.131474 -0.442172 -v 0.125000 0.118698 -0.436765 -v 0.125000 0.329247 -0.516023 -v 0.125000 0.329247 -0.221004 -v 0.125000 -0.000000 0.101332 -v 0.125000 -0.000000 -0.001052 -v 0.125000 0.028056 -0.255796 -v 0.125000 0.318373 -0.368513 -v 0.125000 0.260506 -0.442172 -v 0.125000 0.246187 -0.446419 -v 0.125000 0.177797 -0.285687 -v 0.125000 0.195652 -0.285063 -v 0.125000 0.378032 -0.461054 -v 0.125000 0.294795 -0.314454 -v 0.125000 0.303075 -0.323191 -v 0.125000 0.108816 -0.541484 -v 0.125000 0.366578 -0.770025 -v 0.125000 0.310927 0.222069 -v 0.125000 0.311360 0.214236 -v 0.125000 0.305049 -0.132188 -v 0.125000 0.382100 -0.043917 -v 0.125000 0.394109 -0.150421 -v 0.125000 0.393356 -0.063542 -v 0.125000 0.402453 -0.854128 -v 0.125000 0.402524 -0.848878 -v 0.125000 0.270238 0.285436 -v 0.125000 0.279466 0.278128 -v 0.125000 0.323282 0.010168 -v 0.125000 0.392707 0.017181 -v 0.125000 0.084723 -0.530063 -v 0.125000 0.089424 -0.413836 -v 0.125000 0.063181 -0.516023 -v 0.125000 0.084723 -0.206963 -v 0.125000 0.107381 -0.306802 -v 0.125000 0.309783 -0.857644 -v 0.125000 0.335595 -0.744834 -v 0.125000 0.396437 0.161388 -v 0.125000 0.397495 0.164534 -v 0.125000 0.401943 -0.093948 -v 0.125000 0.161099 -0.287543 -v 0.125000 0.388270 -0.053631 -v 0.125000 0.311185 -0.843943 -v 0.125000 0.310966 -0.847541 -v 0.125000 0.311185 0.206548 -v 0.125000 0.323282 0.313114 -v 0.125000 0.306978 -0.870409 -v 0.125000 0.306057 -0.873637 -v 0.125000 0.307568 -0.206963 -v 0.125000 0.314445 -0.343826 -v 0.125000 0.225807 0.726157 -v 0.125000 0.225806 0.543829 -v 0.125000 0.283299 -0.541484 -v 0.125000 0.294795 -0.422573 -v 0.125000 0.309591 -0.820399 -v 0.125000 0.323282 -0.737377 -v 0.125000 0.294092 -0.787868 -v 0.125000 0.299602 -0.795920 -v 0.125000 0.309591 0.230092 -v 0.125000 0.309213 0.189629 -v 0.125000 0.308555 0.186445 -v 0.125000 0.382100 0.261834 -v 0.125000 0.374864 0.271300 -v 0.125000 0.402453 0.196363 -v 0.125000 0.401943 0.211802 -v 0.125000 0.311317 -0.095449 -v 0.125000 0.323282 0.007363 -v 0.125000 0.402242 0.191464 -v 0.125000 -0.000000 -0.643408 -v 0.125000 -0.000000 -0.745792 -v 0.125000 0.294092 0.262623 -v 0.125000 0.309213 -0.116121 -v 0.125000 0.308555 -0.119305 -v 0.125000 0.378032 -0.275973 -v 0.125000 0.323282 0.315919 -v 0.125000 -0.003607 -0.416576 -v 0.125000 -0.008252 -0.344178 -v 0.125000 0.306057 0.176854 -v 0.125000 0.346927 0.297696 -v 0.125000 0.259659 -0.758142 -v 0.125000 0.259659 0.292348 -v 0.125000 0.307295 -0.067518 -v 0.125000 0.346927 -0.008055 -v 0.125000 0.195652 -0.179874 -v 0.125000 0.400958 -0.344178 -v 0.125000 0.287399 -0.035251 -v 0.125000 0.400158 0.174790 -v 0.125000 0.400210 0.221998 -v 0.125000 0.310927 -0.083682 -v 0.125000 0.311360 -0.091515 -v 0.125000 0.402242 -0.114286 -v 0.125000 0.402453 -0.109387 -v 0.125000 0.195652 -0.557153 -v 0.125000 0.366578 0.280466 -v 0.125000 0.396437 -0.144363 -v 0.125000 0.397495 -0.141217 -v 0.125000 0.395306 -0.892161 -v 0.125000 0.393356 -0.808283 -v 0.125000 0.395306 0.158329 -v 0.125000 0.393356 0.242208 -v 0.125000 0.396307 -0.320451 -v 0.125000 0.097598 -0.314454 -v 0.125000 0.399363 -0.879286 -v 0.125000 0.397342 -0.818340 -v 0.125000 0.004043 -0.297620 -v 0.125000 0.145632 -0.446419 -v 0.125000 0.213682 -0.285687 -v 0.125000 0.247672 -0.006957 -v 0.125000 0.273432 -0.436765 -v 0.125000 0.309651 -0.332990 -v 0.125000 0.398473 -0.137954 -v 0.125000 0.397342 -0.073600 -v 0.125000 0.357260 -0.761209 -v 0.125000 0.000000 0.304698 -v 0.125000 0.401943 -0.838689 -v 0.125000 0.299602 0.254570 -v 0.125000 0.097598 -0.422573 -v 0.125000 -0.009818 -0.368513 -v 0.125000 -0.008252 -0.392849 -v 0.125000 0.082935 -0.404037 -v 0.125000 0.366578 -0.025284 -v 0.125000 0.357260 -0.016469 -v 0.125000 0.164356 -0.555316 -v 0.125000 0.177797 -0.451339 -v 0.125000 0.432679 0.726157 -v 0.125000 0.518934 0.511571 -v 0.125000 0.307810 -0.867220 -v 0.125000 0.346927 -0.752795 -v 0.125000 0.312763 0.726157 -v 0.125000 0.398473 -0.882694 -v 0.125000 0.310966 0.202950 -v 0.125000 0.309783 0.192847 -v 0.125000 0.335595 0.305657 -v 0.125000 0.317378 -0.355675 -v 0.125000 0.307810 0.183271 -v 0.125000 0.311317 -0.840189 -v 0.125000 0.287399 -0.779991 -v 0.125000 0.234222 -0.745792 -v 0.125000 0.000000 0.829944 -v 0.125000 0.402525 0.201613 -v 0.125000 -0.003607 -0.320451 -v 0.125000 0.310659 -0.106267 -v 0.125000 0.310265 -0.109627 -v 0.125000 0.401434 -0.123149 -v 0.125000 0.108816 -0.195543 -v 0.125000 0.399363 0.171205 -v 0.125000 0.303984 -0.059335 -v 0.125000 0.400958 -0.392849 -v 0.125000 0.402525 -0.368513 -v 0.125000 0.392707 0.101332 -v 0.125000 0.307568 -0.530063 -v 0.125000 0.323282 -0.734572 -v 0.125000 0.400851 -0.127172 -v 0.125000 0.396437 -0.889103 -v 0.125000 0.400850 -0.871913 -v 0.125000 0.107381 -0.430224 -v 0.125000 0.234222 -0.001052 -v 0.125000 0.230553 -0.287543 -v 0.125000 0.230553 -0.449483 -v 0.125000 0.213682 -0.451339 -v 0.125000 0.314445 -0.393200 -v 0.125000 0.309651 -0.404037 -v 0.125000 0.234222 0.304698 -v 0.125000 0.388270 -0.798371 -v 0.125000 0.382100 -0.788657 -v 0.125000 0.307295 0.238232 -v 0.125000 0.401900 -0.863605 -v 0.125000 0.402242 -0.859027 -v 0.125000 0.518934 0.829944 -v 0.125000 0.247672 0.298794 -v 0.125000 0.392707 -0.727560 -v 0.125000 0.028056 -0.481231 -v 0.125000 0.044267 -0.499649 -v 0.125000 0.394109 0.155330 -v 0.125000 0.309213 -0.860862 -v 0.125000 0.308555 -0.864046 -v 0.125000 0.310927 -0.828422 -v 0.125000 0.397495 -0.885957 -v 0.125000 0.312763 0.543829 -v 0.125000 0.310265 0.196124 -v 0.125000 0.311360 -0.836255 -v 0.125000 0.388270 0.252120 -v 0.125000 0.279466 -0.772362 -v 0.125000 0.401434 0.182601 -v 0.125000 0.401900 0.186886 -v 0.125000 0.086957 0.726157 -v 0.125000 0.392707 0.322931 -v 0.125000 0.270238 -0.765055 -v 0.125000 0.388642 -0.297620 -v 0.125000 0.306978 0.180082 -v 0.125000 0.256509 -0.187029 -v 0.125000 0.227270 -0.181710 -v 0.125000 0.309591 -0.075658 -v 0.125000 0.348264 -0.499649 -v 0.125000 0.364550 -0.481231 -v 0.125000 0.395306 -0.147421 -v 0.125000 0.078207 -0.393200 -v 0.125000 0.135386 -0.549997 -v 0.125000 0.078207 -0.343826 -v 0.125000 0.317378 -0.381351 -v 0.125000 0.400158 -0.875701 -v 0.125000 0.270238 -0.020315 -v 0.125000 0.279466 -0.027622 -v 0.125000 0.044267 -0.237377 -v 0.125000 0.161099 -0.449483 -v 0.125000 0.284888 -0.430224 -v 0.125000 0.284888 -0.306802 -v 0.125000 0.118698 -0.300261 -v 0.125000 0.303984 0.246416 -v 0.125000 0.004043 -0.439407 -v 0.125000 0.246187 -0.290607 -v 0.125000 0.310659 -0.851008 -v 0.125000 0.303984 -0.804075 -v 0.125000 0.283299 -0.195543 -v 0.125000 0.392707 -0.643408 -v 0.125000 0.131474 -0.294855 -v 0.125000 0.259659 -0.013402 -v 0.125000 0.195652 -0.451963 -v 0.125000 0.260506 -0.294855 -v 0.125000 0.303075 -0.413836 -v 0.125000 0.432679 0.511571 -v 0.125000 0.310659 0.199483 -v 0.125000 0.400851 0.178578 -v 0.125000 0.075315 -0.355675 -v 0.125000 0.145632 -0.290607 -v 0.125000 0.273432 -0.300261 -v 0.125000 0.310265 -0.854367 -v 0.125000 0.394109 -0.895161 -v 0.125000 0.307295 -0.812259 -v 0.125000 0.247672 -0.751697 -v 0.125000 0.307810 -0.122480 -v 0.125000 0.402525 -0.104137 -v 0.125000 0.287399 0.270500 -v 0.125000 0.374864 -0.034451 -v 0.125000 0.311317 0.210302 -vt 0.426575 0.688748 -vt 0.421208 0.689051 -vt 0.418443 0.689014 -vt 0.415862 0.688904 -vt 0.413450 0.688726 -vt 0.431947 0.687846 -vt 0.411193 0.688483 -vt 0.409074 0.688180 -vt 0.407078 0.687819 -vt 0.437295 0.686354 -vt 0.405190 0.687406 -vt 0.403394 0.686942 -vt 0.401675 0.686434 -vt 0.400018 0.685883 -vt 0.442593 0.684280 -vt 0.398407 0.685294 -vt 0.396827 0.684672 -vt 0.406431 0.638321 -vt 0.447814 0.681632 -vt 0.529446 0.479562 -vt 0.529446 0.683942 -vt 0.485117 0.683942 -vt 0.481422 0.647810 -vt 0.452931 0.678421 -vt 0.457918 0.674655 -vt 0.462747 0.670343 -vt 0.467391 0.665494 -vt 0.471823 0.660116 -vt 0.476017 0.654218 -vt 0.413218 0.640146 -vt 0.411546 0.639758 -vt 0.409866 0.639325 -vt 0.408165 0.638846 -vt 0.479945 0.647810 -vt 0.420086 0.641241 -vt 0.418316 0.641036 -vt 0.416590 0.640785 -vt 0.414895 0.640488 -vt 0.475512 0.601460 -vt 0.472401 0.608460 -vt 0.469006 0.614698 -vt 0.465365 0.620204 -vt 0.461515 0.625007 -vt 0.457497 0.629135 -vt 0.453347 0.632619 -vt 0.449105 0.635486 -vt 0.444809 0.637767 -vt 0.440498 0.639490 -vt 0.436210 0.640685 -vt 0.431984 0.641380 -vt 0.427857 0.641606 -vt 0.425785 0.641583 -vt 0.423808 0.641515 -vt 0.421912 0.641401 -vt 0.475512 0.479562 -vt 0.105673 0.484231 -vt 0.092827 0.484303 -vt 0.080077 0.482747 -vt 0.067743 0.479607 -vt 0.118294 0.482538 -vt 0.055974 0.474928 -vt 0.130536 0.479252 -vt 0.044917 0.468756 -vt 0.142248 0.474400 -vt 0.153274 0.468010 -vt 0.034723 0.461136 -vt 0.163463 0.460111 -vt 0.025540 0.452114 -vt 0.172660 0.450730 -vt 0.017516 0.441734 -vt 0.180713 0.439895 -vt 0.095424 0.440582 -vt 0.010802 0.430043 -vt 0.102206 0.440457 -vt 0.088703 0.439674 -vt 0.108528 0.439294 -vt 0.082563 0.437789 -vt 0.114374 0.437134 -vt 0.077012 0.434968 -vt 0.119730 0.434017 -vt 0.072062 0.431253 -vt 0.187468 0.427634 -vt 0.005545 0.417086 -vt 0.124581 0.429981 -vt 0.067723 0.426684 -vt 0.128910 0.425067 -vt 0.064005 0.421304 -vt 0.132703 0.419315 -vt 0.060919 0.415153 -vt 0.192772 0.413976 -vt 0.001895 0.402908 -vt 0.135945 0.412764 -vt 0.058474 0.408272 -vt 0.138621 0.405454 -vt 0.056683 0.400703 -vt 0.196472 0.398947 -vt 0.000000 0.387554 -vt 0.140715 0.397425 -vt 0.055554 0.392487 -vt 0.142212 0.388717 -vt 0.055099 0.383665 -vt 0.198413 0.382576 -vt 0.000010 0.371071 -vt 0.143096 0.379368 -vt 0.055327 0.374279 -vt 0.198413 0.366260 -vt 0.143319 0.370073 -vt 0.056206 0.365022 -vt 0.001942 0.354868 -vt 0.142859 0.361341 -vt 0.057698 0.356403 -vt 0.196511 0.351047 -vt 0.005633 0.339979 -vt 0.141725 0.353212 -vt 0.059786 0.348461 -vt 0.139928 0.345726 -vt 0.062457 0.341234 -vt 0.192854 0.336983 -vt 0.010930 0.326434 -vt 0.137479 0.338924 -vt 0.065694 0.334761 -vt 0.134389 0.332844 -vt 0.069484 0.329081 -vt 0.187591 0.324117 -vt 0.017680 0.314265 -vt 0.130667 0.327528 -vt 0.073809 0.324232 -vt 0.126324 0.323015 -vt 0.078656 0.320251 -vt 0.121372 0.319345 -vt 0.084010 0.317179 -vt 0.180872 0.312497 -vt 0.025728 0.303501 -vt 0.115819 0.316558 -vt 0.089854 0.315053 -vt 0.109677 0.314694 -vt 0.096175 0.313912 -vt 0.102956 0.313793 -vt 0.172846 0.302171 -vt 0.034922 0.294174 -vt 0.163660 0.293187 -vt 0.045109 0.286313 -vt 0.153464 0.285593 -vt 0.056134 0.279949 -vt 0.142407 0.279436 -vt 0.067844 0.275113 -vt 0.130637 0.274765 -vt 0.080087 0.271834 -vt 0.118303 0.271628 -vt 0.092707 0.270144 -vt 0.105553 0.270073 -vt 0.578122 0.000303 -vt 0.583490 0.000000 -vt 0.586255 0.000037 -vt 0.588836 0.000147 -vt 0.591247 0.000325 -vt 0.572751 0.001205 -vt 0.593505 0.000568 -vt 0.595624 0.000871 -vt 0.597620 0.001232 -vt 0.567403 0.002697 -vt 0.599508 0.001645 -vt 0.601304 0.002109 -vt 0.603022 0.002617 -vt 0.604680 0.003168 -vt 0.562105 0.004772 -vt 0.606291 0.003757 -vt 0.607871 0.004380 -vt 0.598266 0.050730 -vt 0.556884 0.007419 -vt 0.475251 0.209489 -vt 0.475251 0.005109 -vt 0.519581 0.005109 -vt 0.523275 0.041241 -vt 0.551766 0.010630 -vt 0.546780 0.014396 -vt 0.541951 0.018708 -vt 0.537307 0.023557 -vt 0.532875 0.028935 -vt 0.528681 0.034833 -vt 0.591480 0.048905 -vt 0.593152 0.049293 -vt 0.594832 0.049726 -vt 0.596532 0.050205 -vt 0.524753 0.041241 -vt 0.584612 0.047810 -vt 0.586381 0.048016 -vt 0.588107 0.048266 -vt 0.589803 0.048563 -vt 0.529186 0.087591 -vt 0.532296 0.080591 -vt 0.535692 0.074353 -vt 0.539333 0.068847 -vt 0.543182 0.064044 -vt 0.547201 0.059916 -vt 0.551351 0.056432 -vt 0.555592 0.053565 -vt 0.559888 0.051284 -vt 0.564199 0.049561 -vt 0.568487 0.048366 -vt 0.572714 0.047671 -vt 0.576840 0.047445 -vt 0.578913 0.047468 -vt 0.580890 0.047536 -vt 0.582785 0.047651 -vt 0.529186 0.209489 -vt 0.426575 0.479259 -vt 0.421208 0.479562 -vt 0.418443 0.479525 -vt 0.415862 0.479415 -vt 0.413450 0.479237 -vt 0.431947 0.478357 -vt 0.411193 0.478994 -vt 0.409074 0.478691 -vt 0.407078 0.478330 -vt 0.437295 0.476865 -vt 0.405190 0.477917 -vt 0.403394 0.477453 -vt 0.401675 0.476945 -vt 0.400018 0.476394 -vt 0.442593 0.474790 -vt 0.398407 0.475805 -vt 0.396827 0.475182 -vt 0.406431 0.428832 -vt 0.447814 0.472143 -vt 0.529446 0.270073 -vt 0.529446 0.474453 -vt 0.485117 0.474453 -vt 0.481422 0.438321 -vt 0.452931 0.468932 -vt 0.457918 0.465166 -vt 0.462747 0.460854 -vt 0.467391 0.456005 -vt 0.471823 0.450627 -vt 0.476017 0.444729 -vt 0.413218 0.430657 -vt 0.411546 0.430269 -vt 0.409866 0.429836 -vt 0.408165 0.429357 -vt 0.479945 0.438321 -vt 0.420086 0.431752 -vt 0.418316 0.431547 -vt 0.416590 0.431296 -vt 0.414895 0.430999 -vt 0.475512 0.391971 -vt 0.472401 0.398971 -vt 0.469006 0.405209 -vt 0.465365 0.410715 -vt 0.461515 0.415518 -vt 0.457496 0.419646 -vt 0.453347 0.423130 -vt 0.449105 0.425997 -vt 0.444809 0.428278 -vt 0.440498 0.430001 -vt 0.436210 0.431196 -vt 0.431984 0.431891 -vt 0.427857 0.432117 -vt 0.425785 0.432094 -vt 0.423808 0.432026 -vt 0.421912 0.431911 -vt 0.475512 0.270073 -vt 0.000000 0.270073 -vt 0.000000 0.000000 -vt 0.054673 0.044891 -vt 0.167714 0.000000 -vt 0.167714 0.044891 -vt 0.054673 0.107299 -vt 0.054673 0.152555 -vt 0.150721 0.107299 -vt 0.150721 0.152555 -vt 0.054673 0.224818 -vt 0.171778 0.224817 -vt 0.171778 0.270073 -vt 0.559195 0.479865 -vt 0.551062 0.479599 -vt 0.553828 0.479562 -vt 0.548481 0.479709 -vt 0.546070 0.479887 -vt 0.564566 0.480767 -vt 0.543812 0.480130 -vt 0.541693 0.480433 -vt 0.539698 0.480794 -vt 0.569915 0.482259 -vt 0.537809 0.481208 -vt 0.536014 0.481671 -vt 0.534295 0.482179 -vt 0.532638 0.482730 -vt 0.575213 0.484334 -vt 0.531027 0.483319 -vt 0.529446 0.483942 -vt 0.539051 0.530292 -vt 0.580434 0.486981 -vt 0.662066 0.689051 -vt 0.617736 0.484672 -vt 0.662066 0.484672 -vt 0.614042 0.520803 -vt 0.585551 0.490192 -vt 0.590538 0.493958 -vt 0.595366 0.498270 -vt 0.600010 0.503119 -vt 0.604443 0.508497 -vt 0.608636 0.514395 -vt 0.545837 0.528467 -vt 0.544165 0.528855 -vt 0.542485 0.529288 -vt 0.540785 0.529767 -vt 0.612565 0.520803 -vt 0.552706 0.527372 -vt 0.550936 0.527578 -vt 0.549210 0.527828 -vt 0.547515 0.528125 -vt 0.608132 0.567153 -vt 0.605021 0.560153 -vt 0.601626 0.553915 -vt 0.597984 0.548409 -vt 0.594135 0.543606 -vt 0.590116 0.539478 -vt 0.585967 0.535995 -vt 0.581725 0.533127 -vt 0.577429 0.530846 -vt 0.573118 0.529123 -vt 0.568830 0.527928 -vt 0.564604 0.527233 -vt 0.560477 0.527007 -vt 0.558405 0.527030 -vt 0.556427 0.527099 -vt 0.554532 0.527213 -vt 0.608132 0.689051 -vt 0.304086 0.270145 -vt 0.278491 0.271629 -vt 0.291240 0.270073 -vt 0.266157 0.274769 -vt 0.316707 0.271838 -vt 0.254387 0.279447 -vt 0.328950 0.275124 -vt 0.243331 0.285620 -vt 0.340661 0.279976 -vt 0.351688 0.286366 -vt 0.233136 0.293240 -vt 0.361877 0.294265 -vt 0.223953 0.302262 -vt 0.371074 0.303646 -vt 0.215930 0.312642 -vt 0.379127 0.314481 -vt 0.293837 0.313793 -vt 0.209215 0.324333 -vt 0.300619 0.313919 -vt 0.287117 0.314702 -vt 0.306941 0.315082 -vt 0.280976 0.316587 -vt 0.312788 0.317242 -vt 0.275426 0.319408 -vt 0.318144 0.320359 -vt 0.270475 0.323123 -vt 0.385882 0.326742 -vt 0.203958 0.337290 -vt 0.322994 0.324395 -vt 0.266136 0.327692 -vt 0.327323 0.329309 -vt 0.262418 0.333072 -vt 0.331117 0.335061 -vt 0.259332 0.339223 -vt 0.391185 0.340400 -vt 0.200308 0.351468 -vt 0.334359 0.341612 -vt 0.256888 0.346104 -vt 0.337034 0.348922 -vt 0.255096 0.353673 -vt 0.394885 0.355429 -vt 0.198413 0.366821 -vt 0.339128 0.356951 -vt 0.253967 0.361889 -vt 0.340625 0.365659 -vt 0.253512 0.370710 -vt 0.396827 0.371800 -vt 0.198423 0.383304 -vt 0.341510 0.375008 -vt 0.253740 0.380097 -vt 0.396827 0.388116 -vt 0.341733 0.384303 -vt 0.254620 0.389354 -vt 0.200355 0.399508 -vt 0.341272 0.393035 -vt 0.256111 0.397973 -vt 0.394924 0.403330 -vt 0.204046 0.414397 -vt 0.340138 0.401164 -vt 0.258200 0.405915 -vt 0.338341 0.408650 -vt 0.260870 0.413142 -vt 0.391267 0.417393 -vt 0.209343 0.427942 -vt 0.335892 0.415452 -vt 0.264108 0.419614 -vt 0.332802 0.421531 -vt 0.267897 0.425295 -vt 0.386005 0.430259 -vt 0.216093 0.440111 -vt 0.329080 0.426848 -vt 0.272222 0.430144 -vt 0.324738 0.431361 -vt 0.277069 0.434124 -vt 0.319785 0.435031 -vt 0.282423 0.437197 -vt 0.379286 0.441879 -vt 0.224141 0.450874 -vt 0.314232 0.437817 -vt 0.288267 0.439323 -vt 0.308090 0.439681 -vt 0.294588 0.440464 -vt 0.301369 0.440582 -vt 0.371259 0.452205 -vt 0.233335 0.460202 -vt 0.362073 0.461189 -vt 0.243522 0.468063 -vt 0.351877 0.468783 -vt 0.254547 0.474427 -vt 0.340820 0.474940 -vt 0.266257 0.479263 -vt 0.329050 0.479611 -vt 0.278500 0.482542 -vt 0.316716 0.482748 -vt 0.291121 0.484232 -vt 0.303967 0.484303 -vt 0.559195 0.270376 -vt 0.551062 0.270110 -vt 0.553828 0.270073 -vt 0.548481 0.270220 -vt 0.546070 0.270398 -vt 0.564566 0.271278 -vt 0.543813 0.270641 -vt 0.541694 0.270944 -vt 0.539698 0.271305 -vt 0.569915 0.272770 -vt 0.537810 0.271719 -vt 0.536014 0.272182 -vt 0.534295 0.272690 -vt 0.532638 0.273241 -vt 0.575213 0.274845 -vt 0.531027 0.273830 -vt 0.529446 0.274453 -vt 0.539051 0.320803 -vt 0.580434 0.277492 -vt 0.662066 0.479562 -vt 0.617736 0.275182 -vt 0.662066 0.275182 -vt 0.614042 0.311314 -vt 0.585551 0.280703 -vt 0.590538 0.284469 -vt 0.595366 0.288781 -vt 0.600010 0.293630 -vt 0.604443 0.299008 -vt 0.608636 0.304906 -vt 0.545837 0.318978 -vt 0.544165 0.319366 -vt 0.542485 0.319799 -vt 0.540785 0.320278 -vt 0.612565 0.311314 -vt 0.552706 0.317883 -vt 0.550936 0.318089 -vt 0.549210 0.318339 -vt 0.547515 0.318636 -vt 0.608132 0.357664 -vt 0.605021 0.350664 -vt 0.601626 0.344426 -vt 0.597984 0.338920 -vt 0.594135 0.334117 -vt 0.590116 0.329989 -vt 0.585967 0.326505 -vt 0.581725 0.323638 -vt 0.577429 0.321357 -vt 0.573118 0.319634 -vt 0.568830 0.318439 -vt 0.564604 0.317744 -vt 0.560477 0.317518 -vt 0.558405 0.317541 -vt 0.556427 0.317609 -vt 0.554532 0.317724 -vt 0.608132 0.479562 -vt 0.029749 0.484606 -vt 0.021616 0.484340 -vt 0.024381 0.484303 -vt 0.019035 0.484450 -vt 0.016624 0.484628 -vt 0.035120 0.485508 -vt 0.014366 0.484871 -vt 0.012247 0.485174 -vt 0.010251 0.485535 -vt 0.040468 0.487000 -vt 0.008363 0.485948 -vt 0.006567 0.486412 -vt 0.004849 0.486920 -vt 0.003191 0.487471 -vt 0.045766 0.489074 -vt 0.001580 0.488060 -vt 0.000000 0.488682 -vt 0.009605 0.535033 -vt 0.050987 0.491721 -vt 0.132620 0.693792 -vt 0.088290 0.489412 -vt 0.132620 0.489412 -vt 0.084596 0.525544 -vt 0.056105 0.494932 -vt 0.061091 0.498698 -vt 0.065920 0.503011 -vt 0.070564 0.507860 -vt 0.074996 0.513238 -vt 0.079190 0.519136 -vt 0.016391 0.533208 -vt 0.014719 0.533596 -vt 0.013039 0.534029 -vt 0.011339 0.534508 -vt 0.083118 0.525544 -vt 0.023259 0.532113 -vt 0.021490 0.532318 -vt 0.019764 0.532569 -vt 0.018068 0.532866 -vt 0.078685 0.571894 -vt 0.075575 0.564894 -vt 0.072179 0.558656 -vt 0.068538 0.553150 -vt 0.064688 0.548347 -vt 0.060670 0.544219 -vt 0.056520 0.540735 -vt 0.052278 0.537868 -vt 0.047983 0.535587 -vt 0.043672 0.533864 -vt 0.039384 0.532669 -vt 0.035157 0.531973 -vt 0.031031 0.531748 -vt 0.028958 0.531771 -vt 0.026981 0.531839 -vt 0.025086 0.531953 -vt 0.078685 0.693792 -vt 0.343555 0.270073 -vt 0.288882 0.044891 -vt 0.343555 0.000000 -vt 0.175841 0.000000 -vt 0.175841 0.044891 -vt 0.288882 0.107299 -vt 0.288882 0.152555 -vt 0.192834 0.107299 -vt 0.192834 0.152555 -vt 0.288882 0.224818 -vt 0.000000 0.703709 -vt 0.131696 0.703709 -vt 0.131696 0.714506 -vt 0.916252 0.609672 -vt 0.916252 0.739781 -vt 0.914116 0.739781 -vt 0.739066 0.811666 -vt 0.739066 0.941775 -vt 0.736796 0.941775 -vt 0.717198 0.941775 -vt 0.717198 0.811666 -vt 0.718894 0.811666 -vt 0.280391 0.972763 -vt 0.280391 0.842654 -vt 0.286716 0.842654 -vt 0.393453 0.842654 -vt 0.393453 0.972764 -vt 0.386676 0.972763 -vt 0.961733 0.609672 -vt 0.961733 0.739781 -vt 0.957061 0.739781 -vt 0.558392 0.973773 -vt 0.558392 0.843663 -vt 0.560462 0.843663 -vt 0.644885 0.973773 -vt 0.644885 0.843663 -vt 0.650663 0.843663 -vt 0.386676 0.842654 -vt 0.380393 0.972763 -vt 0.923522 0.609672 -vt 0.923522 0.739781 -vt 0.920940 0.739781 -vt 0.793762 0.570314 -vt 0.662066 0.570314 -vt 0.662066 0.553834 -vt 0.549165 0.973773 -vt 0.549165 0.843663 -vt 0.550904 0.843663 -vt 0.610237 0.843663 -vt 0.612307 0.843663 -vt 0.612307 0.973773 -vt 0.822592 0.869891 -vt 0.822592 1.000000 -vt 0.815816 1.000000 -vt 0.396827 0.693059 -vt 0.528523 0.693059 -vt 0.528523 0.697688 -vt 0.715444 0.941775 -vt 0.715444 0.811666 -vt 0.749745 0.130110 -vt 0.749745 0.000000 -vt 0.760787 0.000000 -vt 0.952060 0.260219 -vt 0.952060 0.130110 -vt 0.996252 0.130110 -vt 0.053834 0.960358 -vt 0.053834 0.830249 -vt 0.058761 0.830249 -vt 0.000000 0.799734 -vt 0.131696 0.799734 -vt 0.131696 0.810754 -vt 0.955807 0.609672 -vt 0.955807 0.479562 -vt 1.000000 0.479562 -vt 0.835339 0.130109 -vt 0.835339 0.000000 -vt 0.847061 0.000000 -vt 0.952216 0.869891 -vt 0.952216 0.739781 -vt 0.996409 0.739781 -vt 0.697517 0.941775 -vt 0.697517 0.811666 -vt 0.700277 0.811666 -vt 0.817025 0.609672 -vt 0.817025 0.479562 -vt 0.824637 0.479562 -vt 0.264316 0.779822 -vt 0.132620 0.779822 -vt 0.132620 0.763555 -vt 0.500979 0.973773 -vt 0.500979 0.843663 -vt 0.502689 0.843663 -vt 0.000000 0.714506 -vt 0.131696 0.726038 -vt 0.852290 0.609672 -vt 0.852290 0.739781 -vt 0.842836 0.739781 -vt 0.631826 0.843663 -vt 0.631826 0.973773 -vt 0.630063 0.973773 -vt 0.264316 0.708611 -vt 0.132620 0.708611 -vt 0.132620 0.697702 -vt 0.793762 0.553834 -vt 0.662066 0.538446 -vt 0.884784 0.609672 -vt 0.884784 0.479562 -vt 0.891347 0.479562 -vt 0.089888 0.960358 -vt 0.089888 0.830249 -vt 0.095991 0.830249 -vt 0.906593 0.270073 -vt 0.906593 0.400182 -vt 0.793762 0.400182 -vt 0.499283 0.973773 -vt 0.499283 0.843663 -vt 0.070062 0.960358 -vt 0.070062 0.830249 -vt 0.076405 0.830249 -vt 0.568743 0.973773 -vt 0.568743 0.843663 -vt 0.572949 0.843663 -vt 0.311896 0.972763 -vt 0.311896 0.842654 -vt 0.316837 0.842654 -vt 0.725449 0.811666 -vt 0.725449 0.941775 -vt 0.723796 0.941775 -vt 0.661142 0.839656 -vt 0.529446 0.839656 -vt 0.529446 0.835027 -vt 0.904905 0.609672 -vt 0.904905 0.739781 -vt 0.903252 0.739781 -vt 0.618017 0.843663 -vt 0.618017 0.973773 -vt 0.616184 0.973773 -vt 0.000000 0.810754 -vt 0.131696 0.820976 -vt 0.692190 0.941775 -vt 0.692190 0.811666 -vt 0.803756 0.869891 -vt 0.803756 1.000000 -vt 0.798495 1.000000 -vt 0.705277 0.941775 -vt 0.705277 0.811666 -vt 0.707547 0.811666 -vt 0.901973 0.609672 -vt 0.901973 0.479562 -vt 0.662066 0.941775 -vt 0.662066 0.811666 -vt 0.666737 0.811666 -vt 0.793762 0.646485 -vt 0.662066 0.646485 -vt 0.662066 0.637347 -vt 0.518091 0.973773 -vt 0.518091 0.843663 -vt 0.522266 0.843663 -vt 0.931608 0.609672 -vt 0.931608 0.739781 -vt 0.926282 0.739781 -vt 0.824637 0.609672 -vt 0.832887 0.479562 -vt 0.589407 0.843663 -vt 0.589407 0.973773 -vt 0.585350 0.973773 -vt 0.734660 0.811666 -vt 0.734660 0.941775 -vt 0.732641 0.941775 -vt 0.793762 0.488769 -vt 0.662066 0.488769 -vt 0.824980 0.609672 -vt 0.824980 0.739781 -vt 0.817127 0.739781 -vt 0.720547 0.941775 -vt 0.720547 0.811666 -vt 0.722171 0.811666 -vt 0.784873 0.130109 -vt 0.784873 0.000000 -vt 0.797618 0.000000 -vt 0.906601 0.609672 -vt 0.906601 0.739781 -vt 0.554515 0.973773 -vt 0.554515 0.843663 -vt 0.556414 0.843663 -vt 0.891347 0.609672 -vt 0.897090 0.479562 -vt 0.396012 0.828743 -vt 0.264316 0.828743 -vt 0.264316 0.822799 -vt 0.095991 0.960358 -vt 0.101486 0.830249 -vt 0.223020 0.845800 -vt 0.223020 0.975910 -vt 0.178003 0.975910 -vt 0.762648 0.811666 -vt 0.762648 0.941775 -vt 0.757435 0.941775 -vt 0.264316 0.763555 -vt 0.132620 0.748242 -vt 0.650663 0.973773 -vt 0.655923 0.843663 -vt 0.178003 0.845800 -vt 0.132620 0.975909 -vt 0.890963 0.609672 -vt 0.890963 0.739781 -vt 0.884517 0.739781 -vt 0.064176 0.960358 -vt 0.064176 0.830249 -vt 0.264316 0.733940 -vt 0.132620 0.733940 -vt 0.132620 0.720710 -vt 0.513986 0.973773 -vt 0.513986 0.843663 -vt 0.623245 0.843663 -vt 0.623245 0.973773 -vt 0.621534 0.973773 -vt 0.793762 0.601285 -vt 0.662066 0.601285 -vt 0.662066 0.586474 -vt 0.396827 0.689051 -vt 0.528523 0.689051 -vt 0.374616 0.842654 -vt 0.374616 0.972763 -vt 0.369356 0.972763 -vt 0.728899 0.811666 -vt 0.728899 0.941775 -vt 0.727145 0.941775 -vt 0.581293 0.973773 -vt 0.581293 0.843663 -vt 0.585350 0.843663 -vt 0.552683 0.973773 -vt 0.552683 0.843663 -vt 0.083187 0.960358 -vt 0.083187 0.830249 -vt 0.495887 0.973773 -vt 0.495887 0.843663 -vt 0.497590 0.843663 -vt 0.396012 0.834017 -vt 0.264316 0.834017 -vt 0.936891 0.609672 -vt 0.936891 0.739781 -vt 0.662066 0.270073 -vt 0.793762 0.270073 -vt 0.793762 0.439465 -vt 0.661142 0.835027 -vt 0.529446 0.829752 -vt 0.777606 0.811666 -vt 0.777606 0.941775 -vt 0.772759 0.941775 -vt 0.000000 0.775910 -vt 0.131696 0.775910 -vt 0.131696 0.788069 -vt 0.889631 0.869890 -vt 0.889631 0.739781 -vt 0.858102 0.130109 -vt 0.858102 0.000000 -vt 0.868307 0.000000 -vt 0.741484 0.811666 -vt 0.741484 0.941775 -vt 0.000000 0.738158 -vt 0.131696 0.738158 -vt 0.131696 0.750719 -vt 0.540636 0.973773 -vt 0.540636 0.843663 -vt 0.542363 0.843663 -vt 0.793762 0.524197 -vt 0.662066 0.524197 -vt 0.662066 0.511135 -vt 0.832887 0.609672 -vt 0.841733 0.479562 -vt 0.910182 0.609672 -vt 0.910182 0.739781 -vt 0.908355 0.739781 -vt 0.264316 0.810695 -vt 0.132620 0.810695 -vt 0.132620 0.795995 -vt 0.912097 0.609672 -vt 0.912097 0.739781 -vt 0.833562 0.609672 -vt 0.833562 0.739781 -vt 0.616184 0.843663 -vt 0.614285 0.973773 -vt 0.396012 0.688042 -vt 0.264316 0.688042 -vt 0.264316 0.484303 -vt 0.897090 0.609672 -vt 0.711702 0.941775 -vt 0.711702 0.811666 -vt 0.713617 0.811666 -vt 0.577146 0.973773 -vt 0.577146 0.843663 -vt 0.896681 0.609672 -vt 0.896681 0.739781 -vt 0.809533 0.869891 -vt 0.809533 1.000000 -vt 0.626633 0.843663 -vt 0.626633 0.973773 -vt 0.624940 0.973773 -vt 0.772546 0.130110 -vt 0.772546 0.000000 -vt 0.942104 0.609672 -vt 0.942104 0.739781 -vt 0.509938 0.973773 -vt 0.509938 0.843663 -vt 0.511916 0.843663 -vt 0.058761 0.960358 -vt 0.369356 0.842654 -vt 0.364622 0.972763 -vt 0.810091 0.609672 -vt 0.810091 0.479562 -vt 0.396012 0.842654 -vt 0.264316 0.842654 -vt 0.264316 0.838646 -vt 0.396827 0.715542 -vt 0.528523 0.715542 -vt 0.528523 0.722894 -vt 0.960427 0.270073 -vt 0.264316 0.845800 -vt 0.132620 0.845800 -vt 0.132620 0.835614 -vt 0.847061 0.130109 -vt 0.504427 0.973773 -vt 0.504427 0.843663 -vt 0.506206 0.843663 -vt 0.746826 0.811666 -vt 0.746826 0.941775 -vt 0.744066 0.941775 -vt 0.655923 0.973773 -vt 0.660657 0.843663 -vt 0.538873 0.973773 -vt 0.538873 0.843663 -vt 0.597750 0.843663 -vt 0.597750 0.973773 -vt 0.593554 0.973773 -vt 0.877442 0.609672 -vt 0.877442 0.479562 -vt 0.709683 0.941775 -vt 0.709683 0.811666 -vt 0.914116 0.609672 -vt 0.793762 0.511135 -vt 0.662066 0.499310 -vt 0.842836 0.609672 -vt 0.444612 0.973773 -vt 0.444612 0.843663 -vt 0.492397 0.843663 -vt 0.076405 0.960358 -vt 0.380393 0.842654 -vt 0.638603 0.973773 -vt 0.638603 0.843663 -vt 0.550904 0.973773 -vt 0.901627 0.609672 -vt 0.901627 0.739781 -vt 0.815816 0.869891 -vt 0.661142 0.823809 -vt 0.529446 0.823809 -vt 0.529446 0.817173 -vt 0.760787 0.130110 -vt 0.793762 0.626749 -vt 0.662066 0.626749 -vt 0.662066 0.614719 -vt 0.798495 0.869891 -vt 0.793762 1.000000 -vt 0.793762 0.811666 -vt 0.610237 0.973773 -vt 0.606133 0.973773 -vt 0.681695 0.941775 -vt 0.681695 0.811666 -vt 0.686908 0.811666 -vt 0.572949 0.973773 -vt 0.752153 0.811666 -vt 0.752153 0.941775 -vt 0.793762 0.609672 -vt 0.793762 0.479562 -vt 0.798419 0.479562 -vt 0.000000 0.750719 -vt 0.131696 0.763410 -vt 0.926282 0.609672 -vt 0.506206 0.973773 -vt 0.508039 0.843663 -vt 0.132620 0.688042 -vt 0.396827 0.697688 -vt 0.528523 0.702962 -vt 0.526473 0.973773 -vt 0.526473 0.843663 -vt 0.530669 0.843663 -vt 0.797618 0.130109 -vt 0.810464 0.000000 -vt 0.396827 0.973773 -vt 0.396827 0.843663 -vt 0.997465 0.609672 -vt 0.614285 0.843663 -vt 0.793762 0.637347 -vt 0.264316 0.835614 -vt 0.132620 0.823907 -vt 0.851135 0.609672 -vt 0.851135 0.479562 -vt 0.860577 0.479562 -vt 0.492397 0.973773 -vt 0.494160 0.843663 -vt 0.264316 0.720710 -vt 0.628336 0.843663 -vt 0.628336 0.973773 -vt 0.707547 0.941775 -vt 0.817127 0.609672 -vt 0.810041 0.739781 -vt 0.986157 0.000000 -vt 0.986157 0.130109 -vt 0.940774 0.130109 -vt 0.727145 0.811666 -vt 0.884517 0.609672 -vt 0.877384 0.739781 -vt 0.757435 0.811666 -vt 0.798321 0.609672 -vt 0.798321 0.739781 -vt 0.793762 0.739781 -vt 0.686908 0.941775 -vt 0.730726 0.811666 -vt 0.730726 0.941775 -vt 0.952215 0.609672 -vt 0.947221 0.739781 -vt 0.530669 0.973773 -vt 0.534816 0.843663 -vt 0.396012 0.816163 -vt 0.264316 0.816163 -vt 0.264316 0.808811 -vt 0.666737 0.941776 -vt 0.671583 0.811666 -vt 0.630063 0.843663 -vt 0.508039 0.973773 -vt 0.793762 0.499310 -vt 0.269176 0.972764 -vt 0.269176 0.842654 -vt 0.274539 0.842654 -vt 0.606133 0.843663 -vt 0.601957 0.973773 -vt 0.732641 0.811666 -vt 0.823089 0.130109 -vt 0.823089 0.000000 -vt 0.556414 0.973773 -vt 0.798419 0.609672 -vt 0.803875 0.479562 -vt 0.494160 0.973773 -vt 0.396827 0.702962 -vt 0.528523 0.708906 -vt 0.396012 0.808811 -vt 0.661142 0.817173 -vt 0.529446 0.809820 -vt 0.856309 0.260219 -vt 0.739567 0.260219 -vt 0.739567 0.130110 -vt 0.547455 0.973773 -vt 0.547455 0.843663 -vt 0.861228 0.609672 -vt 0.861228 0.739781 -vt 0.793762 0.869891 -vt 0.918522 0.609672 -vt 0.918522 0.739781 -vt 0.860577 0.609672 -vt 0.869359 0.479562 -vt 0.793762 0.614719 -vt 0.783750 0.941775 -vt 0.783750 0.811666 -vt 0.785223 0.811666 -vt 0.996159 0.270073 -vt 0.996159 0.400182 -vt 0.960427 0.400182 -vt 0.306352 0.972763 -vt 0.306352 0.842654 -vt 0.000000 0.726038 -vt 0.274539 0.972763 -vt 0.534816 0.973773 -vt 0.793762 0.538446 -vt 0.957061 0.609672 -vt 0.624940 0.843663 -vt 0.792289 0.941775 -vt 0.792289 0.811666 -vt 0.739567 0.203739 -vt 0.607871 0.203739 -vt 0.607871 0.000000 -vt 0.601957 0.843663 -vt 0.782277 0.811666 -vt 0.782277 0.941775 -vt 0.739567 0.000000 -vt 0.564567 0.973773 -vt 0.564567 0.843663 -vt 0.920940 0.609672 -vt 0.000000 0.763410 -vt 0.000000 0.820976 -vt 0.131696 0.830249 -vt 0.475251 0.269226 -vt 0.343555 0.269226 -vt 0.744066 0.811666 -vt 0.702859 0.941775 -vt 0.702859 0.811666 -vt 0.396827 0.708906 -vt 0.000000 0.960358 -vt 0.000000 0.830249 -vt 0.264316 0.823907 -vt 0.364622 0.842654 -vt 0.316837 0.972763 -vt 0.671583 0.941775 -vt 0.676578 0.811666 -vt 0.545760 0.973773 -vt 0.545760 0.843663 -vt 0.542363 0.973773 -vt 0.544067 0.843663 -vt 0.502689 0.973773 -vt 0.000000 0.693792 -vt 0.131696 0.693792 -vt 0.718894 0.941775 -vt 0.258752 0.845800 -vt 0.258752 0.975909 -vt 0.783750 0.811666 -vt 0.713617 0.941775 -vt 0.903252 0.609672 -vt 0.264316 0.748242 -vt 0.264316 0.697702 -vt 0.723796 0.811666 -vt 0.722172 0.941775 -vt 0.619796 0.843663 -vt 0.619796 0.973773 -vt 0.810041 0.609672 -vt 0.803760 0.739781 -vt 0.803760 0.609672 -vt 0.522266 0.973773 -vt 0.497590 0.973773 -vt 0.940774 0.000000 -vt 0.868307 0.130109 -vt 0.661142 0.829752 -vt 0.810464 0.130110 -vt 0.803875 0.609672 -vt 0.101486 0.960358 -vt 0.106364 0.830249 -vt 0.676578 0.941776 -vt 0.661142 0.809820 -vt 0.529446 0.689051 -vt 0.841733 0.609672 -vt 0.793762 0.586474 -vt 0.869607 0.609672 -vt 0.869607 0.739781 -vt 0.736796 0.811666 -vt 0.908355 0.609672 -vt 0.869359 0.609672 -vt 0.293498 0.972763 -vt 0.293498 0.842654 -vt 0.300216 0.842654 -vt 0.661142 0.843663 -vt 0.529446 0.843663 -vt 0.286716 0.972763 -vt 0.621534 0.843663 -vt 0.560462 0.973773 -vt 0.300216 0.972763 -vt 0.767765 0.811666 -vt 0.767765 0.941775 -vt 0.947221 0.609672 -vt 0.000000 0.788069 -vt 0.511916 0.973773 -vt 0.264316 0.972764 -vt 0.772759 0.811666 -vt 0.700277 0.941775 -vt 0.396012 0.822799 -vt 0.396827 0.722894 -vt 0.528523 0.843663 -vt 0.396012 0.838646 -vt 0.264316 0.795995 -vt 0.544067 0.973773 -vt 0.593554 0.843663 -vt 0.996252 0.260219 -vt 1.000000 0.609672 -vt 0.996409 0.869891 -vt 0.662066 0.439465 -vt 0.396012 0.484303 -vt 0.660657 0.973773 -vt 0.132620 0.484303 -vt 0.997465 0.739781 -vt 0.856309 0.130110 -vt 0.785223 0.941775 -vt 0.793762 0.941775 -vt 0.475251 0.000000 -vt 0.106364 0.960358 -vt 0.661142 0.689051 -vn -1.000000 -0.000000 0.000000 -vn -1.000000 0.000100 0.000000 -vn -1.000000 0.000200 0.000000 -vn -1.000000 -0.000100 -0.000000 -vn 1.000000 0.000100 0.000000 -vn 1.000000 0.000000 0.000000 -vn 1.000000 -0.000100 0.000000 -vn 1.000000 -0.000200 0.000000 -vn 1.000000 -0.000500 0.000100 -vn 0.000000 0.898000 0.440100 -vn 0.000000 0.989700 -0.143500 -vn 0.000000 0.994100 -0.108200 -vn 0.000000 0.947800 -0.318800 -vn 0.000000 -0.970700 0.240300 -vn 0.000000 0.518000 0.855400 -vn 0.000000 0.794500 0.607300 -vn -0.000000 -0.999900 0.011200 -vn -0.000000 0.631400 0.775500 -vn 0.000000 0.574900 0.818300 -vn 0.000000 0.999100 -0.042900 -vn -0.000000 0.058000 0.998300 -vn -0.000000 -0.989300 0.145600 -vn 0.000000 -0.999900 0.011100 -vn 0.000000 -0.693200 -0.720800 -vn 0.000000 0.957900 -0.287000 -vn 0.000000 -0.898400 -0.439100 -vn 0.000000 1.000000 -0.000000 -vn 0.000000 0.730300 -0.683200 -vn 0.000000 0.831400 -0.555600 -vn 0.000000 -0.898400 0.439100 -vn 0.000000 0.999900 -0.013700 -vn 0.000000 0.287300 0.957800 -vn 0.000000 -0.058600 -0.998300 -vn 0.000000 -0.984700 0.174300 -vn 0.000000 0.948000 0.318300 -vn 0.000000 -0.034600 -0.999400 -vn -0.000000 -0.956200 0.292900 -vn 0.000000 -0.654500 -0.756100 -vn -0.000000 0.179000 0.983900 -vn 0.000000 -0.385900 0.922600 -vn 0.000000 0.971500 0.237100 -vn 0.000000 -1.000000 -0.000000 -vn 0.000000 -0.979300 0.202200 -vn 0.000000 0.971500 -0.237100 -vn 0.000000 -0.962500 -0.271400 -vn 0.000000 -0.830400 -0.557200 -vn 0.000000 0.937900 -0.346900 -vn 0.000000 -0.996100 0.088200 -vn 0.000000 0.749200 -0.662400 -vn -0.000000 0.998400 0.057000 -vn 0.000000 0.687300 0.726400 -vn -0.000000 -0.654500 0.756100 -vn 0.000000 -0.986400 -0.164300 -vn 0.000000 0.194300 0.980900 -vn 0.000000 -0.825300 -0.564700 -vn 0.000000 0.983700 -0.179900 -vn -0.000000 0.749200 0.662400 -vn 0.000000 0.194300 -0.980900 -vn 0.000000 0.928800 -0.370500 -vn -0.000000 -0.997900 -0.064200 -vn -0.000000 -0.998100 0.060800 -vn 0.000000 -0.495900 0.868400 -vn 0.000000 -0.547000 -0.837100 -vn 0.000000 0.916500 0.399900 -vn 0.000000 0.000000 -1.000000 -vn 0.000000 0.962300 0.271800 -vn 0.000000 -0.180600 -0.983600 -vn 0.000000 -0.495900 -0.868400 -vn 0.000000 0.916500 -0.399900 -vn -0.000000 -0.428300 -0.903600 -vn 0.000000 -0.998500 -0.055200 -vn -0.000000 -0.180600 0.983600 -vn 0.000000 -0.762000 -0.647500 -vn 0.000000 0.997100 0.076200 -vn 0.000000 -0.967600 0.252700 -vn 0.000000 -0.620800 -0.784000 -vn 0.000000 0.985900 0.167600 -vn 0.000000 0.844100 0.536100 -vn 0.000000 0.948000 -0.318300 -vn 0.000000 -0.750700 0.660700 -vn 0.000000 0.997200 -0.074500 -vn 0.000000 0.997900 0.064200 -vn -0.000000 -0.961700 0.274200 -vn 0.000000 0.425800 0.904800 -vn 0.000000 0.110500 0.993900 -vn 0.000000 0.967600 -0.252600 -vn 0.000000 0.179000 -0.983900 -vn 0.000000 0.976300 -0.216500 -vn 0.000000 0.110500 -0.993900 -vn 0.000000 -0.998200 0.060800 -vn 0.000000 0.000000 1.000000 -vn 0.000000 -0.611200 0.791400 -vn 0.000000 -0.880900 -0.473400 -vn 0.000000 -0.611200 -0.791400 -vn 0.000000 -0.973500 0.228500 -vn -0.000000 -0.981400 -0.192100 -vn 0.000000 -0.999400 0.035000 -vn 0.000000 0.833800 -0.552100 -vn 0.000000 0.741800 0.670600 -vn 0.000000 0.389700 0.920900 -vn 0.000000 -0.402000 -0.915600 -vn 0.000000 0.543600 -0.839300 -vn 0.000000 -0.832400 0.554200 -vn 0.000000 -0.993200 0.116600 -vn 0.000000 -0.927000 -0.375100 -vn 0.000000 -0.284400 0.958700 -vn -0.000000 0.543600 0.839300 -vn 0.000000 0.034900 -0.999400 -vn 0.000000 -0.200600 -0.979700 -vn 0.000000 0.997100 -0.076200 -vn 0.000000 -0.725800 -0.687900 -vn 0.000000 -0.473600 -0.880800 -vn 0.000000 -0.948200 -0.317700 -vn -0.000000 -0.428300 0.903600 -vn 0.000000 0.730300 0.683200 -vn 0.000000 0.997900 -0.064200 -vn -0.000000 -0.997900 0.064200 -vn 0.000000 0.100500 -0.994900 -vn -0.000000 -0.546000 0.837800 -vn 0.000000 0.425800 -0.904800 -vn 0.000000 -0.034600 0.999400 -vn 0.000000 -0.546000 -0.837800 -vn 0.000000 0.287300 -0.957800 -vn 0.000000 -0.385900 -0.922600 -vn 0.000000 0.616100 -0.787700 -vn 0.000000 0.889700 0.456600 -vn -0.000000 0.652500 0.757800 -vn 0.000000 -0.830400 0.557200 -vn 0.000000 -0.948200 0.317700 -vn 0.000000 0.616100 0.787700 -vn 0.000000 -0.402000 -0.915700 -vn 0.000000 -0.109400 -0.994000 -vn 0.000000 -0.109400 0.994000 -vn 0.000000 -0.305100 0.952300 -vn 0.000000 -0.914500 -0.404500 -vn 0.000000 0.981300 0.192400 -vn 0.000000 -0.914500 0.404500 -vn -0.000000 0.302900 0.953000 -vn 0.000000 -0.832400 -0.554200 -vn 0.000000 0.981300 -0.192400 -vn 0.000000 0.652500 -0.757800 -vn 0.000000 0.302900 -0.953000 -vn 0.000000 0.831500 0.555600 -vn 0.000000 -0.305100 -0.952300 -vn 0.000000 -0.750700 -0.660700 -vn 0.000000 0.389700 -0.920900 -vn 0.000000 0.500400 -0.865800 -vn -0.000000 -0.981400 0.192100 -vn 0.000000 0.500400 0.865800 -vn 0.000000 0.833800 0.552100 -vn -0.000000 0.929700 0.368400 -vn 0.000000 0.034900 0.999400 -vn -0.000000 -0.058600 0.998300 -vn 0.000000 -0.192300 -0.981300 -vn 0.000000 -0.284400 -0.958700 -vn 0.000000 -0.192300 0.981300 -vn 0.000000 -0.997000 -0.077300 -vn 0.000000 -0.997000 0.077300 -vn 0.000000 -0.970700 -0.240300 -vn 0.000000 0.898000 -0.440100 -vn 0.000000 -0.725800 0.687900 -vn 0.000000 0.058000 -0.998300 -vn 0.000000 0.999100 -0.043000 -vn 0.000000 0.831500 -0.555600 -vn 0.000000 0.928800 -0.370600 -vn 0.000000 -0.956200 0.292800 -vn 0.000000 0.831400 0.555600 -s off -f 41/1/1 40/2/1 39/3/1 -f 41/1/1 39/3/1 38/4/1 -f 41/1/1 38/4/1 37/5/1 -f 42/6/1 41/1/1 37/5/1 -f 42/6/1 37/5/1 36/7/1 -f 42/6/1 36/7/1 35/8/1 -f 42/6/1 35/8/1 34/9/1 -f 43/10/1 42/6/1 34/9/1 -f 43/10/1 34/9/1 33/11/1 -f 43/10/1 33/11/1 32/12/1 -f 43/10/1 32/12/1 31/13/1 -f 43/10/1 31/13/1 30/14/1 -f 44/15/1 43/10/1 30/14/1 -f 44/15/1 30/14/1 29/16/1 -f 44/15/1 29/16/1 28/17/1 -f 44/15/1 28/17/1 27/18/1 -f 45/19/1 44/15/1 27/18/1 -f 1/20/1 55/21/1 54/22/1 -f 1/20/1 54/22/1 53/23/1 -f 46/24/1 45/19/1 27/18/1 -f 47/25/1 46/24/1 27/18/1 -f 48/26/1 47/25/1 27/18/1 -f 49/27/1 48/26/1 27/18/1 -f 50/28/1 49/27/1 27/18/1 -f 51/29/1 50/28/1 23/30/1 -f 23/30/1 50/28/1 24/31/1 -f 24/31/1 50/28/1 25/32/1 -f 25/32/2 50/28/2 26/33/2 -f 26/33/1 50/28/1 27/18/1 -f 52/34/1 51/29/1 19/35/1 -f 19/35/1 51/29/1 20/36/1 -f 20/36/1 51/29/1 21/37/1 -f 21/37/1 51/29/1 22/38/1 -f 22/38/3 51/29/3 23/30/3 -f 1/20/1 53/23/1 52/34/1 -f 1/20/1 52/34/1 3/39/1 -f 3/39/1 52/34/1 4/40/1 -f 4/40/1 52/34/1 5/41/1 -f 5/41/1 52/34/1 6/42/1 -f 6/42/1 52/34/1 7/43/1 -f 7/43/1 52/34/1 8/44/1 -f 8/44/1 52/34/1 9/45/1 -f 9/45/1 52/34/1 10/46/1 -f 10/46/1 52/34/1 11/47/1 -f 11/47/1 52/34/1 12/48/1 -f 12/48/1 52/34/1 13/49/1 -f 13/49/1 52/34/1 14/50/1 -f 14/50/1 52/34/1 15/51/1 -f 15/51/1 52/34/1 16/52/1 -f 16/52/2 52/34/2 17/53/2 -f 17/53/1 52/34/1 18/54/1 -f 18/54/1 52/34/1 19/35/1 -f 1/20/1 3/39/1 2/55/1 -f 81/56/1 80/57/1 79/58/1 -f 81/56/1 79/58/1 78/59/1 -f 82/60/1 81/56/1 78/59/1 -f 82/60/1 78/59/1 77/61/1 -f 83/62/1 82/60/1 77/61/1 -f 83/62/1 77/61/1 76/63/1 -f 84/64/1 83/62/1 76/63/1 -f 85/65/1 84/64/1 76/63/1 -f 85/65/1 76/63/1 75/66/1 -f 86/67/1 85/65/1 75/66/1 -f 86/67/1 75/66/1 74/68/1 -f 87/69/1 86/67/1 74/68/1 -f 87/69/1 74/68/1 73/70/1 -f 88/71/1 87/69/1 73/70/1 -f 88/71/1 73/70/1 128/72/1 -f 128/72/1 73/70/1 72/73/1 -f 88/71/2 128/72/2 127/74/2 -f 129/75/1 128/72/1 72/73/1 -f 88/71/1 127/74/1 126/76/1 -f 130/77/1 129/75/1 72/73/1 -f 88/71/1 126/76/1 125/78/1 -f 131/79/1 130/77/1 72/73/1 -f 88/71/1 125/78/1 124/80/1 -f 132/81/1 131/79/1 72/73/1 -f 89/82/1 88/71/1 124/80/1 -f 132/81/1 72/73/1 71/83/1 -f 89/82/1 124/80/1 123/84/1 -f 133/85/1 132/81/1 71/83/1 -f 89/82/1 123/84/1 122/86/1 -f 134/87/1 133/85/1 71/83/1 -f 89/82/1 122/86/1 121/88/1 -f 135/89/1 134/87/1 71/83/1 -f 90/90/1 89/82/1 121/88/1 -f 135/89/1 71/83/1 70/91/1 -f 90/90/1 121/88/1 120/92/1 -f 136/93/1 135/89/1 70/91/1 -f 90/90/1 120/92/1 119/94/1 -f 137/95/1 136/93/1 70/91/1 -f 91/96/1 90/90/1 119/94/1 -f 137/95/1 70/91/1 69/97/1 -f 91/96/1 119/94/1 118/98/1 -f 138/99/1 137/95/1 69/97/1 -f 91/96/1 118/98/1 117/100/1 -f 139/101/1 138/99/1 69/97/1 -f 92/102/1 91/96/1 117/100/1 -f 139/101/1 69/97/1 68/103/1 -f 92/102/1 117/100/1 116/104/1 -f 140/105/1 139/101/1 68/103/1 -f 93/106/1 92/102/1 116/104/1 -f 93/106/1 116/104/1 115/107/1 -f 141/108/1 140/105/1 68/103/1 -f 141/108/1 68/103/1 67/109/1 -f 93/106/1 115/107/1 114/110/1 -f 142/111/1 141/108/1 67/109/1 -f 94/112/1 93/106/1 114/110/1 -f 142/111/1 67/109/1 66/113/1 -f 94/112/1 114/110/1 113/114/1 -f 143/115/1 142/111/1 66/113/1 -f 94/112/1 113/114/1 112/116/1 -f 144/117/1 143/115/1 66/113/1 -f 95/118/1 94/112/1 112/116/1 -f 144/117/1 66/113/1 65/119/1 -f 95/118/1 112/116/1 111/120/1 -f 145/121/1 144/117/1 65/119/1 -f 95/118/1 111/120/1 110/122/1 -f 146/123/1 145/121/1 65/119/1 -f 96/124/1 95/118/1 110/122/1 -f 146/123/1 65/119/1 64/125/1 -f 96/124/1 110/122/1 109/126/1 -f 147/127/1 146/123/1 64/125/1 -f 96/124/1 109/126/1 108/128/1 -f 148/129/1 147/127/1 64/125/1 -f 96/124/1 108/128/1 107/130/1 -f 149/131/1 148/129/1 64/125/1 -f 97/132/1 96/124/1 107/130/1 -f 149/131/1 64/125/1 63/133/1 -f 97/132/1 107/130/1 106/134/1 -f 150/135/1 149/131/1 63/133/1 -f 97/132/1 106/134/1 105/136/1 -f 151/137/1 150/135/1 63/133/1 -f 97/132/1 105/136/1 104/138/1 -f 104/138/1 151/137/1 63/133/1 -f 97/132/1 104/138/1 63/133/1 -f 98/139/1 97/132/1 63/133/1 -f 98/139/1 63/133/1 62/140/1 -f 99/141/1 98/139/1 62/140/1 -f 99/141/1 62/140/1 61/142/1 -f 100/143/1 99/141/1 61/142/1 -f 100/143/1 61/142/1 60/144/1 -f 101/145/1 100/143/1 60/144/1 -f 101/145/1 60/144/1 59/146/1 -f 102/147/1 101/145/1 59/146/1 -f 102/147/1 59/146/1 58/148/1 -f 103/149/1 102/147/1 58/148/1 -f 103/149/1 58/148/1 57/150/1 -f 56/151/1 103/149/1 57/150/1 -f 192/152/1 191/153/1 190/154/1 -f 192/152/4 190/154/4 189/155/4 -f 192/152/1 189/155/1 188/156/1 -f 193/157/1 192/152/1 188/156/1 -f 193/157/1 188/156/1 187/158/1 -f 193/157/1 187/158/1 186/159/1 -f 193/157/1 186/159/1 185/160/1 -f 194/161/1 193/157/1 185/160/1 -f 194/161/1 185/160/1 184/162/1 -f 194/161/1 184/162/1 183/163/1 -f 194/161/1 183/163/1 182/164/1 -f 194/161/1 182/164/1 181/165/1 -f 195/166/1 194/161/1 181/165/1 -f 195/166/1 181/165/1 180/167/1 -f 195/166/1 180/167/1 179/168/1 -f 195/166/1 179/168/1 178/169/1 -f 196/170/1 195/166/1 178/169/1 -f 152/171/1 206/172/1 205/173/1 -f 152/171/1 205/173/1 204/174/1 -f 197/175/1 196/170/1 178/169/1 -f 198/176/1 197/175/1 178/169/1 -f 199/177/1 198/176/1 178/169/1 -f 200/178/1 199/177/1 178/169/1 -f 201/179/1 200/178/1 178/169/1 -f 202/180/1 201/179/1 174/181/1 -f 174/181/1 201/179/1 175/182/1 -f 175/182/1 201/179/1 176/183/1 -f 176/183/1 201/179/1 177/184/1 -f 177/184/1 201/179/1 178/169/1 -f 203/185/1 202/180/1 170/186/1 -f 170/186/1 202/180/1 171/187/1 -f 171/187/1 202/180/1 172/188/1 -f 172/188/1 202/180/1 173/189/1 -f 173/189/1 202/180/1 174/181/1 -f 152/171/1 204/174/1 203/185/1 -f 152/171/1 203/185/1 154/190/1 -f 154/190/1 203/185/1 155/191/1 -f 155/191/1 203/185/1 156/192/1 -f 156/192/1 203/185/1 157/193/1 -f 157/193/1 203/185/1 158/194/1 -f 158/194/1 203/185/1 159/195/1 -f 159/195/1 203/185/1 160/196/1 -f 160/196/1 203/185/1 161/197/1 -f 161/197/1 203/185/1 162/198/1 -f 162/198/1 203/185/1 163/199/1 -f 163/199/1 203/185/1 164/200/1 -f 164/200/1 203/185/1 165/201/1 -f 165/201/1 203/185/1 166/202/1 -f 166/202/1 203/185/1 167/203/1 -f 167/203/1 203/185/1 168/204/1 -f 168/204/1 203/185/1 169/205/1 -f 169/205/1 203/185/1 170/186/1 -f 152/171/1 154/190/1 153/206/1 -f 247/207/1 246/208/1 245/209/1 -f 247/207/1 245/209/1 244/210/1 -f 247/207/1 244/210/1 243/211/1 -f 248/212/1 247/207/1 243/211/1 -f 248/212/1 243/211/1 242/213/1 -f 248/212/1 242/213/1 241/214/1 -f 248/212/1 241/214/1 240/215/1 -f 249/216/1 248/212/1 240/215/1 -f 249/216/1 240/215/1 239/217/1 -f 249/216/1 239/217/1 238/218/1 -f 249/216/1 238/218/1 237/219/1 -f 249/216/1 237/219/1 236/220/1 -f 250/221/1 249/216/1 236/220/1 -f 250/221/1 236/220/1 235/222/1 -f 250/221/1 235/222/1 234/223/1 -f 250/221/1 234/223/1 233/224/1 -f 251/225/1 250/221/1 233/224/1 -f 207/226/1 261/227/1 260/228/1 -f 207/226/1 260/228/1 259/229/1 -f 252/230/1 251/225/1 233/224/1 -f 253/231/1 252/230/1 233/224/1 -f 254/232/1 253/231/1 233/224/1 -f 255/233/1 254/232/1 233/224/1 -f 256/234/1 255/233/1 233/224/1 -f 257/235/1 256/234/1 229/236/1 -f 229/236/1 256/234/1 230/237/1 -f 230/237/1 256/234/1 231/238/1 -f 231/238/1 256/234/1 232/239/1 -f 232/239/1 256/234/1 233/224/1 -f 258/240/1 257/235/1 225/241/1 -f 225/241/1 257/235/1 226/242/1 -f 226/242/1 257/235/1 227/243/1 -f 227/243/1 257/235/1 228/244/1 -f 228/244/1 257/235/1 229/236/1 -f 207/226/1 259/229/1 258/240/1 -f 207/226/1 258/240/1 209/245/1 -f 209/245/1 258/240/1 210/246/1 -f 210/246/1 258/240/1 211/247/1 -f 211/247/1 258/240/1 212/248/1 -f 212/248/1 258/240/1 213/249/1 -f 213/249/1 258/240/1 214/250/1 -f 214/250/1 258/240/1 215/251/1 -f 215/251/1 258/240/1 216/252/1 -f 216/252/1 258/240/1 217/253/1 -f 217/253/1 258/240/1 218/254/1 -f 218/254/1 258/240/1 219/255/1 -f 219/255/1 258/240/1 220/256/1 -f 220/256/1 258/240/1 221/257/1 -f 221/257/1 258/240/1 222/258/1 -f 222/258/1 258/240/1 223/259/1 -f 223/259/1 258/240/1 224/260/1 -f 224/260/1 258/240/1 225/241/1 -f 207/226/1 209/245/1 208/261/1 -f 262/262/1 273/263/1 270/264/1 -f 270/264/1 273/263/1 272/265/1 -f 270/264/1 272/265/1 271/266/1 -f 262/262/1 270/264/1 269/267/1 -f 262/262/1 269/267/1 266/268/1 -f 266/268/1 269/267/1 268/269/1 -f 266/268/1 268/269/1 267/270/1 -f 262/262/1 266/268/1 265/271/1 -f 262/262/1 265/271/1 264/272/1 -f 262/262/1 264/272/1 263/273/1 -f 426/274/5 336/275/5 337/276/5 -f 426/274/6 479/277/6 336/275/6 -f 426/274/6 478/278/6 479/277/6 -f 308/279/6 478/278/6 426/274/6 -f 308/279/6 307/280/6 478/278/6 -f 308/279/6 466/281/6 307/280/6 -f 308/279/6 512/282/6 466/281/6 -f 415/283/6 512/282/6 308/279/6 -f 415/283/6 414/284/6 512/282/6 -f 415/283/6 441/285/6 414/284/6 -f 415/283/6 489/286/6 441/285/6 -f 415/283/6 465/287/6 489/286/6 -f 409/288/6 465/287/6 415/283/6 -f 409/288/6 408/289/6 465/287/6 -f 409/288/6 539/290/6 408/289/6 -f 409/288/6 295/291/6 539/290/6 -f 475/292/6 295/291/6 409/288/6 -f 380/293/6 482/294/6 526/295/6 -f 380/293/6 463/296/6 482/294/6 -f 476/297/6 295/291/6 475/292/6 -f 296/298/6 295/291/6 476/297/6 -f 329/299/6 295/291/6 296/298/6 -f 424/300/6 295/291/6 329/299/6 -f 439/301/6 295/291/6 424/300/6 -f 348/302/6 487/303/6 439/301/6 -f 487/303/6 438/304/6 439/301/6 -f 438/304/6 358/305/6 439/301/6 -f 358/305/7 359/306/7 439/301/7 -f 359/306/6 295/291/6 439/301/6 -f 367/307/6 523/308/6 348/302/6 -f 523/308/6 538/309/6 348/302/6 -f 538/309/6 347/310/6 348/302/6 -f 347/310/6 486/311/6 348/302/6 -f 486/311/8 487/303/8 348/302/8 -f 380/293/6 367/307/6 463/296/6 -f 380/293/6 449/312/6 367/307/6 -f 449/312/6 541/313/6 367/307/6 -f 541/313/6 391/314/6 367/307/6 -f 391/314/6 499/315/6 367/307/6 -f 499/315/6 494/316/6 367/307/6 -f 494/316/6 448/317/6 367/307/6 -f 448/317/6 368/318/6 367/307/6 -f 368/318/6 369/319/6 367/307/6 -f 369/319/6 524/320/6 367/307/6 -f 524/320/6 540/321/6 367/307/6 -f 540/321/6 366/322/6 367/307/6 -f 366/322/6 488/323/6 367/307/6 -f 488/323/6 492/324/6 367/307/6 -f 492/324/6 447/325/6 367/307/6 -f 447/325/7 354/326/7 367/307/7 -f 354/326/6 355/327/6 367/307/6 -f 355/327/6 523/308/6 367/307/6 -f 380/293/6 381/328/6 449/312/6 -f 396/329/6 459/330/6 460/331/6 -f 396/329/6 294/332/6 459/330/6 -f 412/333/6 294/332/6 396/329/6 -f 412/333/6 293/334/6 294/332/6 -f 500/335/6 293/334/6 412/333/6 -f 500/335/6 325/336/6 293/334/6 -f 385/337/6 325/336/6 500/335/6 -f 274/338/6 325/336/6 385/337/6 -f 274/338/6 506/339/6 325/336/6 -f 275/340/6 506/339/6 274/338/6 -f 275/340/6 505/341/6 506/339/6 -f 316/342/6 505/341/6 275/340/6 -f 316/342/6 315/343/6 505/341/6 -f 360/344/6 315/343/6 316/342/6 -f 360/344/6 320/345/6 315/343/6 -f 320/345/6 462/346/6 315/343/6 -f 360/344/7 445/347/7 320/345/7 -f 511/348/6 462/346/6 320/345/6 -f 360/344/6 361/349/6 445/347/6 -f 472/350/6 462/346/6 511/348/6 -f 360/344/6 421/351/6 361/349/6 -f 473/352/6 462/346/6 472/350/6 -f 360/344/6 327/353/6 421/351/6 -f 531/354/6 462/346/6 473/352/6 -f 525/355/6 327/353/6 360/344/6 -f 531/354/6 364/356/6 462/346/6 -f 525/355/6 326/357/6 327/353/6 -f 365/358/6 364/356/6 531/354/6 -f 525/355/6 518/359/6 326/357/6 -f 517/360/6 364/356/6 365/358/6 -f 525/355/6 537/361/6 518/359/6 -f 420/362/6 364/356/6 517/360/6 -f 502/363/6 537/361/6 525/355/6 -f 420/362/6 302/364/6 364/356/6 -f 502/363/6 530/365/6 537/361/6 -f 321/366/6 302/364/6 420/362/6 -f 502/363/6 522/367/6 530/365/6 -f 322/368/6 302/364/6 321/366/6 -f 503/369/6 522/367/6 502/363/6 -f 322/368/6 301/370/6 302/364/6 -f 503/369/6 469/371/6 522/367/6 -f 470/372/6 301/370/6 322/368/6 -f 503/369/6 418/373/6 469/371/6 -f 471/374/6 301/370/6 470/372/6 -f 395/375/6 418/373/6 503/369/6 -f 471/374/6 404/376/6 301/370/6 -f 395/375/6 324/377/6 418/373/6 -f 529/378/6 404/376/6 471/374/6 -f 286/379/6 324/377/6 395/375/6 -f 286/379/6 323/380/6 324/377/6 -f 435/381/6 404/376/6 529/378/6 -f 435/381/6 434/382/6 404/376/6 -f 286/379/6 352/383/6 323/380/6 -f 516/384/6 434/382/6 435/381/6 -f 287/385/6 352/383/6 286/379/6 -f 516/384/6 509/386/6 434/382/6 -f 287/385/6 536/387/6 352/383/6 -f 417/388/6 509/386/6 516/384/6 -f 287/385/6 527/389/6 536/387/6 -f 313/390/6 509/386/6 417/388/6 -f 456/391/6 527/389/6 287/385/6 -f 313/390/6 328/392/6 509/386/6 -f 456/391/6 519/393/6 527/389/6 -f 314/394/6 328/392/6 313/390/6 -f 456/391/6 346/395/6 519/393/6 -f 467/396/6 328/392/6 314/394/6 -f 345/397/6 346/395/6 456/391/6 -f 467/396/6 342/398/6 328/392/6 -f 345/397/6 413/399/6 346/395/6 -f 428/400/6 342/398/6 467/396/6 -f 345/397/6 312/401/6 413/399/6 -f 343/402/6 342/398/6 428/400/6 -f 345/397/6 311/403/6 312/401/6 -f 431/404/6 342/398/6 343/402/6 -f 292/405/6 311/403/6 345/397/6 -f 431/404/6 344/406/6 342/398/6 -f 292/405/6 510/407/6 311/403/6 -f 508/408/6 344/406/6 431/404/6 -f 292/405/6 535/409/6 510/407/6 -f 291/410/6 344/406/6 508/408/6 -f 292/405/6 290/411/6 535/409/6 -f 290/411/6 344/406/6 291/410/6 -f 292/405/6 344/406/6 290/411/6 -f 515/412/6 344/406/6 292/405/6 -f 515/412/6 484/413/6 344/406/6 -f 319/414/6 484/413/6 515/412/6 -f 319/414/6 483/415/6 484/413/6 -f 279/416/6 483/415/6 319/414/6 -f 279/416/6 278/417/6 483/415/6 -f 416/418/6 278/417/6 279/416/6 -f 416/418/6 521/419/6 278/417/6 -f 452/420/6 521/419/6 416/418/6 -f 452/420/6 387/421/6 521/419/6 -f 388/422/6 387/421/6 452/420/6 -f 388/422/6 430/423/6 387/421/6 -f 429/424/6 430/423/6 388/422/6 -f 351/425/6 403/426/6 543/427/6 -f 351/425/6 402/428/6 403/426/6 -f 351/425/6 284/429/6 402/428/6 -f 285/430/6 284/429/6 351/425/6 -f 285/430/6 455/431/6 284/429/6 -f 285/430/6 464/432/6 455/431/6 -f 285/430/6 306/433/6 464/432/6 -f 423/434/6 306/433/6 285/430/6 -f 423/434/6 305/435/6 306/433/6 -f 423/434/6 422/436/6 305/435/6 -f 423/434/6 407/437/6 422/436/6 -f 423/434/6 406/438/6 407/437/6 -f 335/439/6 406/438/6 423/434/6 -f 335/439/6 507/440/6 406/438/6 -f 335/439/6 334/441/6 507/440/6 -f 335/439/6 332/442/6 334/441/6 -f 353/443/6 332/442/6 335/439/6 -f 317/444/6 341/445/6 461/446/6 -f 317/444/6 340/447/6 341/445/6 -f 333/448/6 332/442/6 353/443/6 -f 545/449/6 332/442/6 333/448/6 -f 432/450/6 332/442/6 545/449/6 -f 433/451/6 332/442/6 432/450/6 -f 394/452/6 332/442/6 433/451/6 -f 310/453/6 384/454/6 394/452/6 -f 384/454/6 542/455/6 394/452/6 -f 542/455/6 299/456/6 394/452/6 -f 299/456/6 300/457/6 394/452/6 -f 300/457/6 332/442/6 394/452/6 -f 378/458/6 453/459/6 310/453/6 -f 453/459/6 454/460/6 310/453/6 -f 454/460/6 309/461/6 310/453/6 -f 309/461/6 383/462/6 310/453/6 -f 383/462/9 384/454/9 310/453/9 -f 317/444/6 378/458/6 340/447/6 -f 317/444/6 468/463/6 378/458/6 -f 468/463/6 419/464/6 378/458/6 -f 419/464/6 528/465/6 378/458/6 -f 528/465/6 513/466/6 378/458/6 -f 513/466/6 514/467/6 378/458/6 -f 514/467/6 397/468/6 378/458/6 -f 397/468/6 288/469/6 378/458/6 -f 288/469/6 289/470/6 378/458/6 -f 289/470/6 458/471/6 378/458/6 -f 458/471/6 393/472/6 378/458/6 -f 393/472/6 504/473/6 378/458/6 -f 504/473/6 400/474/6 378/458/6 -f 400/474/6 401/475/6 378/458/6 -f 401/475/6 377/476/6 378/458/6 -f 377/476/6 276/477/6 378/458/6 -f 276/477/6 277/478/6 378/458/6 -f 277/478/6 453/459/6 378/458/6 -f 317/444/6 318/479/6 468/463/6 -f 376/480/6 375/481/6 451/482/6 -f 376/480/6 379/483/6 375/481/6 -f 376/480/6 496/484/6 379/483/6 -f 399/485/6 496/484/6 376/480/6 -f 399/485/6 495/486/6 496/484/6 -f 399/485/6 534/487/6 495/486/6 -f 399/485/6 398/488/6 534/487/6 -f 283/489/6 398/488/6 399/485/6 -f 283/489/6 457/490/6 398/488/6 -f 283/489/6 282/491/6 457/490/6 -f 283/489/6 350/492/6 282/491/6 -f 283/489/6 349/493/6 350/492/6 -f 411/494/6 349/493/6 283/489/6 -f 411/494/6 410/495/6 349/493/6 -f 411/494/6 485/496/6 410/495/6 -f 411/494/6 297/497/6 485/496/6 -f 493/498/6 297/497/6 411/494/6 -f 303/499/6 498/500/6 304/501/6 -f 303/499/6 386/502/6 498/500/6 -f 373/503/6 297/497/6 493/498/6 -f 374/504/6 297/497/6 373/503/6 -f 405/505/6 297/497/6 374/504/6 -f 298/506/6 297/497/6 405/505/6 -f 390/507/6 297/497/6 298/506/6 -f 444/508/6 372/509/6 390/507/6 -f 372/509/6 446/510/6 390/507/6 -f 446/510/6 501/511/6 390/507/6 -f 501/511/6 389/512/6 390/507/6 -f 389/512/6 297/497/6 390/507/6 -f 357/513/6 533/514/6 444/508/6 -f 533/514/6 491/515/6 444/508/6 -f 491/515/6 443/516/6 444/508/6 -f 443/516/6 371/517/6 444/508/6 -f 371/517/6 372/509/6 444/508/6 -f 303/499/6 357/513/6 386/502/6 -f 303/499/6 474/518/6 357/513/6 -f 474/518/6 481/519/6 357/513/6 -f 481/519/6 392/520/6 357/513/6 -f 392/520/6 338/521/6 357/513/6 -f 338/521/6 339/522/6 357/513/6 -f 339/522/6 544/523/6 357/513/6 -f 544/523/6 382/524/6 357/513/6 -f 382/524/6 427/525/6 357/513/6 -f 427/525/6 520/526/6 357/513/6 -f 520/526/6 477/527/6 357/513/6 -f 477/527/6 370/528/6 357/513/6 -f 370/528/6 330/529/6 357/513/6 -f 330/529/6 331/530/6 357/513/6 -f 331/530/6 546/531/6 357/513/6 -f 546/531/6 356/532/6 357/513/6 -f 356/532/6 442/533/6 357/513/6 -f 442/533/6 533/514/6 357/513/6 -f 303/499/6 425/534/6 474/518/6 -f 450/535/6 436/536/6 480/537/6 -f 436/536/6 437/538/6 480/537/6 -f 436/536/6 532/539/6 437/538/6 -f 450/535/6 440/540/6 436/536/6 -f 450/535/6 362/541/6 440/540/6 -f 362/541/6 490/542/6 440/540/6 -f 362/541/6 363/543/6 490/542/6 -f 450/535/6 497/544/6 362/541/6 -f 450/535/6 281/272/6 497/544/6 -f 450/535/6 280/273/6 281/272/6 -f 84/545/10 385/546/10 500/547/10 -f 36/548/11 307/549/11 466/550/11 -f 243/551/12 496/552/12 495/553/12 -f 182/554/13 407/555/13 406/556/13 -f 130/557/14 472/558/14 511/559/14 -f 258/560/15 357/561/15 444/562/15 -f 47/563/16 296/564/16 476/565/16 -f 167/566/17 377/567/17 401/568/17 -f 201/569/18 394/570/18 433/571/18 -f 257/572/19 444/562/19 390/573/19 -f 39/574/20 336/575/20 479/576/20 -f 92/577/21 395/578/21 503/579/21 -f 172/580/22 309/581/22 454/582/22 -f 221/583/23 222/584/23 546/585/23 -f 52/586/15 367/587/15 348/588/15 -f 214/589/24 544/590/24 339/591/24 -f 183/592/25 422/593/25 407/555/25 -f 60/594/26 278/595/26 521/596/26 -f 261/597/27 304/598/27 498/599/27 -f 109/600/28 413/601/28 312/602/28 -f 76/603/29 325/604/29 506/605/29 -f 55/606/27 526/607/27 482/608/27 -f 101/609/30 416/610/30 279/611/30 -f 206/612/27 461/613/27 341/614/27 -f 191/615/31 543/616/31 403/617/31 -f 144/618/32 313/619/32 417/620/32 -f 68/621/33 404/622/33 434/623/33 -f 22/624/34 486/625/34 347/626/34 -f 83/627/35 500/547/35 412/628/35 -f 117/629/36 418/630/36 324/631/36 -f 233/632/37 297/633/37 389/634/37 -f 63/635/38 344/636/38 484/637/38 -f 91/638/39 503/579/39 502/639/39 -f 136/640/40 321/641/40 420/642/40 -f 151/643/41 291/644/41 508/645/41 -f 271/646/42 532/647/42 436/648/42 -f 23/649/43 487/650/43 486/625/43 -f 106/651/44 510/652/44 535/653/44 -f 164/654/45 504/655/45 393/656/45 -f 125/657/46 421/658/46 327/659/46 -f 236/660/47 349/661/47 410/662/47 -f 159/663/24 397/664/24 514/665/24 -f 30/666/47 465/667/47 408/668/47 -f 225/669/48 533/670/48 442/671/48 -f 75/672/49 506/605/49 505/673/49 -f 192/674/50 351/675/50 543/616/50 -f 49/676/51 424/677/51 329/678/51 -f 188/679/12 284/680/12 455/681/12 -f 208/682/42 425/683/42 303/607/42 -f 198/684/16 545/685/16 333/686/16 -f 98/687/52 515/688/52 292/689/52 -f 14/690/53 488/691/53 366/692/53 -f 41/693/50 426/694/50 337/695/50 -f 143/696/54 417/620/54 516/697/54 -f 216/698/55 427/699/55 382/700/55 -f 241/701/56 534/702/56 398/703/56 -f 86/704/57 275/705/57 274/444/57 -f 114/706/58 352/707/58 536/708/58 -f 180/709/59 507/710/59 334/711/59 -f 57/712/60 430/713/60 429/714/60 -f 31/715/13 489/716/13 465/667/13 -f 169/717/61 277/718/61 276/719/61 -f 135/720/62 420/642/62 517/721/62 -f 6/722/63 499/723/63 391/724/63 -f 150/725/64 508/645/64 431/726/64 -f 272/727/65 437/728/65 532/729/65 -f 249/730/66 283/731/66 399/732/66 -f 67/733/67 434/623/67 509/734/67 -f 200/735/51 433/571/51 432/736/51 -f 264/737/65 281/729/65 280/738/65 -f 122/739/68 518/740/68 537/741/68 -f 107/742/69 311/743/69 510/652/69 -f 65/744/70 328/745/70 342/746/70 -f 15/747/71 492/748/71 488/691/71 -f 228/749/34 371/750/34 443/751/34 -f 94/752/72 287/753/72 286/754/72 -f 215/755/73 382/756/73 544/590/73 -f 255/757/51 298/758/51 405/759/51 -f 238/760/25 282/761/25 350/762/25 -f 161/763/55 289/764/55 288/765/55 -f 170/766/48 453/767/48 277/718/48 -f 104/768/74 290/769/74 291/644/74 -f 25/770/75 358/771/75 438/772/75 -f 7/773/76 494/774/76 499/723/76 -f 42/775/77 308/776/77 426/694/77 -f 263/777/42 280/778/42 450/779/42 -f 158/780/76 514/665/76 513/781/76 -f 252/782/78 373/783/78 493/784/78 -f 78/785/79 294/786/79 293/787/79 -f 270/788/65 436/789/65 440/613/65 -f 99/790/80 319/791/80 515/792/80 -f 244/793/81 379/794/81 496/552/81 -f 81/795/82 396/796/82 460/797/82 -f 177/798/83 300/799/83 299/800/83 -f 89/801/84 525/802/84 360/803/84 -f 142/804/85 516/697/85 435/805/85 -f 33/806/86 414/807/86 441/808/86 -f 70/809/87 302/810/87 301/811/87 -f 34/812/88 512/813/88 414/807/88 -f 115/814/89 323/815/89 352/707/89 -f 224/816/90 442/671/90 356/817/90 -f 207/818/91 303/819/91 304/820/91 -f 134/821/92 517/721/92 365/683/92 -f 185/822/88 306/823/88 305/824/88 -f 162/825/93 458/826/93 289/764/93 -f 123/827/94 326/828/94 518/740/94 -f 50/829/18 439/830/18 424/677/18 -f 230/831/95 446/832/95 372/833/95 -f 58/834/96 387/835/96 430/713/96 -f 43/836/66 415/837/66 308/776/66 -f 17/838/97 354/839/97 447/840/97 -f 108/841/98 312/602/98 311/743/98 -f 254/842/99 405/759/99 374/843/99 -f 145/844/100 314/845/100 313/619/100 -f 9/846/73 368/847/73 448/848/73 -f 210/849/101 481/850/101 474/851/101 -f 153/647/42 318/646/42 317/852/42 -f 73/853/102 315/854/102 462/855/102 -f 100/856/103 279/611/103 319/791/103 -f 20/857/104 538/858/104 523/859/104 -f 246/860/31 451/861/31 375/862/31 -f 199/863/99 432/736/99 545/864/99 -f 178/865/37 332/866/37 300/799/37 -f 218/867/105 477/868/105 520/869/105 -f 137/870/106 322/871/106 321/641/106 -f 186/872/56 464/873/56 306/823/56 -f 35/874/56 466/550/56 512/813/56 -f 88/875/107 360/803/107 316/876/107 -f 116/877/108 324/631/108 323/815/108 -f 28/878/109 539/879/109 295/880/109 -f 105/881/110 535/653/110 290/769/110 -f 256/882/18 390/573/18 298/758/18 -f 202/883/19 310/884/19 394/570/19 -f 171/885/104 454/582/104 453/767/104 -f 124/886/111 327/887/111 326/828/111 -f 51/888/19 348/588/19 439/830/19 -f 156/889/112 528/890/112 419/891/112 -f 59/892/113 521/596/113 387/835/113 -f 96/893/114 345/894/114 456/895/114 -f 48/896/99 329/678/99 296/897/99 -f 273/688/27 480/687/27 437/898/27 -f 221/583/71 331/899/71 330/900/71 -f 194/901/66 423/902/66 285/903/66 -f 163/904/105 393/656/105 458/826/105 -f 247/905/50 376/906/50 451/861/50 -f 148/907/115 343/908/115 428/909/115 -f 80/910/116 460/797/116 459/911/116 -f 40/912/31 337/695/31 336/575/31 -f 19/913/48 523/859/48 355/914/48 -f 206/820/91 152/819/91 317/915/91 -f 213/916/76 339/591/76 338/917/76 -f 12/918/105 540/919/105 524/920/105 -f 56/921/117 429/714/117 388/922/117 -f 179/923/109 334/924/109 332/879/109 -f 205/564/118 341/563/118 340/925/118 -f 223/926/97 356/817/97 546/585/97 -f 97/927/119 292/689/119 345/894/119 -f 72/928/120 462/855/120 364/929/120 -f 140/930/121 529/931/121 471/932/121 -f 27/933/37 295/880/37 359/934/37 -f 64/935/122 342/746/122 344/636/122 -f 231/936/75 501/937/75 446/832/75 -f 187/938/11 455/681/11 464/873/11 -f 113/939/123 536/708/123 527/940/123 -f 268/941/65 490/942/65 363/943/65 -f 237/944/13 350/762/13 349/661/13 -f 121/945/124 537/741/124 530/946/124 -f 248/947/77 399/732/77 376/906/77 -f 110/948/125 346/949/125 413/950/125 -f 193/951/77 285/903/77 351/675/77 -f 239/952/86 457/953/86 282/761/86 -f 45/954/126 475/613/126 409/955/126 -f 11/956/93 524/920/93 369/957/93 -f 4/958/101 541/959/101 449/960/101 -f 197/961/78 333/686/78 353/962/78 -f 232/963/83 389/634/83 501/937/83 -f 18/964/61 355/914/61 354/839/61 -f 87/965/127 316/876/127 275/705/127 -f 132/966/128 531/967/128 473/968/128 -f 220/969/53 330/900/53 370/970/53 -f 240/971/88 398/703/88 457/953/88 -f 102/972/129 452/973/129 416/610/129 -f 168/974/97 276/719/97 377/567/97 -f 147/975/130 428/909/130 467/976/130 -f 26/977/83 359/934/83 358/771/83 -f 212/978/63 338/917/63 392/979/63 -f 3/980/65 449/960/65 381/819/65 -f 155/981/131 419/891/131 468/982/131 -f 264/983/27 265/984/27 497/985/27 -f 173/986/34 383/987/34 309/581/34 -f 118/988/132 469/989/132 418/630/132 -f 267/990/42 363/950/42 362/789/42 -f 37/991/12 478/992/12 307/549/12 -f 139/993/133 471/932/133 470/994/133 -f 95/995/134 456/895/134 287/753/134 -f 204/996/27 340/997/27 378/998/27 -f 260/999/118 498/1000/118 386/1001/118 -f 126/1002/135 361/1003/135 421/658/135 -f 82/1004/136 412/628/136 396/796/136 -f 131/1005/137 473/968/137 472/558/137 -f 10/1006/55 369/957/55 368/866/55 -f 90/1007/138 502/639/138 525/802/138 -f 46/1008/78 476/565/78 475/613/78 -f 229/1009/43 372/833/43 371/750/43 -f 53/1010/27 463/1011/27 367/898/27 -f 1/1012/91 380/1013/91 526/1014/91 -f 219/1015/45 370/970/45 477/868/45 -f 253/1016/16 374/1017/16 373/783/16 -f 61/985/139 483/1018/139 278/595/139 -f 165/1019/53 400/1020/53 504/655/53 -f 38/1021/81 479/576/81 478/992/81 -f 79/1022/140 459/911/140 294/786/140 -f 74/1023/141 505/673/141 315/1024/141 -f 262/1025/91 450/1026/91 480/537/91 -f 245/1027/20 375/862/20 379/794/20 -f 189/1028/81 402/1029/81 284/680/81 -f 211/1030/112 392/979/112 481/850/112 -f 2/1031/42 381/1032/42 380/601/42 -f 71/1033/142 364/929/142 302/810/142 -f 234/1034/109 485/843/109 297/1035/109 -f 203/633/15 378/632/15 310/884/15 -f 196/1036/126 353/962/126 335/1037/126 -f 174/1038/43 384/1039/43 383/987/43 -f 176/1040/75 299/800/75 542/1041/75 -f 21/1042/22 347/626/22 538/858/22 -f 85/1043/143 274/1044/143 385/546/143 -f 181/1045/47 406/556/47 507/710/47 -f 54/1046/118 482/1047/118 463/728/118 -f 259/1017/27 386/1016/27 357/1048/27 -f 184/1049/86 305/824/86 422/593/86 -f 29/1050/59 408/668/59 539/887/59 -f 66/1051/144 509/734/144 328/745/144 -f 62/1052/145 484/637/145 483/915/145 -f 235/1053/59 410/662/59 485/1054/59 -f 226/1055/104 491/1056/104 533/670/104 -f 112/1057/146 527/940/146 519/1058/146 -f 111/1059/147 519/1058/147 346/949/147 -f 13/1060/45 366/692/45 540/919/45 -f 24/1061/95 438/772/95 487/650/95 -f 266/1062/65 362/943/65 497/1063/65 -f 157/1064/63 513/781/63 528/890/63 -f 103/1065/148 388/922/148 452/973/148 -f 146/1066/149 467/976/149 314/845/149 -f 149/1067/150 431/726/150 343/1068/150 -f 195/1069/151 335/1037/151 423/902/151 -f 154/1070/65 468/982/65 318/1071/65 -f 141/1072/152 435/805/152 529/931/152 -f 93/1073/153 286/754/153 395/578/153 -f 119/1074/154 522/1075/154 469/989/154 -f 242/1076/11 495/553/11 534/702/11 -f 120/870/155 530/946/155 522/1075/155 -f 32/1077/25 441/808/25 489/716/25 -f 138/1078/156 470/994/156 322/871/156 -f 128/1079/157 320/1080/157 445/1081/157 -f 269/598/27 440/597/27 490/983/27 -f 160/1082/73 288/1083/73 397/664/73 -f 129/1084/158 511/559/158 320/1080/158 -f 227/1085/22 443/751/22 491/1056/22 -f 166/1086/71 401/568/71 400/1020/71 -f 127/1087/159 445/1081/159 361/1003/159 -f 250/1088/151 411/1089/151 283/731/151 -f 44/1090/151 409/955/151 415/837/151 -f 77/1091/160 293/787/160 325/604/160 -f 16/1092/17 447/840/17 492/748/17 -f 133/1093/161 365/847/161 531/967/161 -f 251/1094/126 493/784/126 411/1089/126 -f 190/1095/20 403/617/20 402/1029/20 -f 5/1096/112 391/724/112 541/959/112 -f 209/1097/65 474/851/65 425/1098/65 -f 8/1099/24 448/848/24 494/774/24 -f 69/1100/162 301/811/162 404/622/162 -f 175/1101/95 542/1041/95 384/1039/95 -f 217/1102/93 520/869/93 427/699/93 -f 83/627/10 84/545/10 500/547/10 -f 35/874/11 36/548/11 466/550/11 -f 242/1076/12 243/551/12 495/553/12 -f 181/1045/13 182/554/13 406/556/13 -f 129/1084/14 130/557/14 511/559/14 -f 257/572/15 258/560/15 444/562/15 -f 46/1008/16 47/563/16 476/565/16 -f 166/1086/23 167/566/23 401/568/23 -f 200/735/18 201/569/18 433/571/18 -f 256/882/19 257/572/19 390/573/19 -f 38/1021/163 39/574/163 479/576/163 -f 91/638/21 92/577/21 503/579/21 -f 171/885/22 172/580/22 454/582/22 -f 331/899/17 221/583/17 546/585/17 -f 51/888/15 52/586/15 348/588/15 -f 213/916/24 214/589/24 339/591/24 -f 182/554/25 183/592/25 407/555/25 -f 59/892/26 60/594/26 521/596/26 -f 260/1103/27 261/597/27 498/599/27 -f 108/841/28 109/600/28 312/602/28 -f 75/672/164 76/603/164 506/605/164 -f 54/1104/27 55/606/27 482/608/27 -f 100/856/30 101/609/30 279/611/30 -f 205/1105/27 206/612/27 341/614/27 -f 190/1095/31 191/615/31 403/617/31 -f 143/696/32 144/618/32 417/620/32 -f 67/733/33 68/621/33 434/623/33 -f 21/1042/34 22/624/34 347/626/34 -f 82/1004/35 83/627/35 412/628/35 -f 116/877/36 117/629/36 324/631/36 -f 232/963/37 233/632/37 389/634/37 -f 62/1052/38 63/635/38 484/637/38 -f 90/1007/39 91/638/39 502/639/39 -f 135/720/40 136/640/40 420/642/40 -f 150/725/41 151/643/41 508/645/41 -f 270/778/42 271/646/42 436/648/42 -f 22/624/43 23/649/43 486/625/43 -f 105/881/44 106/651/44 535/653/44 -f 163/904/45 164/654/45 393/656/45 -f 124/1035/46 125/657/46 327/659/46 -f 235/1053/47 236/660/47 410/662/47 -f 158/780/24 159/663/24 514/665/24 -f 29/1050/47 30/666/47 408/668/47 -f 224/816/48 225/669/48 442/671/48 -f 74/1023/49 75/672/49 505/673/49 -f 191/615/50 192/674/50 543/616/50 -f 48/896/51 49/676/51 329/678/51 -f 187/938/12 188/679/12 455/681/12 -f 207/606/42 208/682/42 303/607/42 -f 197/961/16 198/684/16 333/686/16 -f 97/927/52 98/687/52 292/689/52 -f 13/1060/53 14/690/53 366/692/53 -f 40/912/50 41/693/50 337/695/50 -f 142/804/54 143/696/54 516/697/54 -f 215/765/55 216/698/55 382/700/55 -f 240/971/56 241/701/56 398/703/56 -f 85/908/57 86/704/57 274/444/57 -f 113/939/58 114/706/58 536/708/58 -f 179/1054/165 180/709/165 334/711/165 -f 56/921/60 57/712/60 429/714/60 -f 30/666/13 31/715/13 465/667/13 -f 168/974/90 169/717/90 276/719/90 -f 134/821/62 135/720/62 517/721/62 -f 5/1096/63 6/722/63 391/724/63 -f 149/1067/64 150/725/64 431/726/64 -f 271/737/65 272/727/65 532/729/65 -f 248/947/66 249/730/66 399/732/66 -f 66/1051/67 67/733/67 509/734/67 -f 199/863/51 200/735/51 432/736/51 -f 263/854/65 264/737/65 280/738/65 -f 121/945/68 122/739/68 537/741/68 -f 106/651/69 107/742/69 510/652/69 -f 64/935/70 65/744/70 342/746/70 -f 14/690/71 15/747/71 488/691/71 -f 227/1085/34 228/749/34 443/751/34 -f 93/1073/72 94/752/72 286/754/72 -f 214/589/73 215/755/73 544/590/73 -f 254/842/51 255/757/51 405/759/51 -f 237/944/25 238/760/25 350/762/25 -f 160/700/55 161/763/55 288/765/55 -f 169/717/48 170/766/48 277/718/48 -f 151/643/74 104/768/74 291/644/74 -f 24/1061/75 25/770/75 438/772/75 -f 6/722/76 7/773/76 499/723/76 -f 41/693/77 42/775/77 426/694/77 -f 262/1106/42 263/777/42 450/779/42 -f 157/1064/76 158/780/76 513/781/76 -f 251/1094/78 252/782/78 493/784/78 -f 77/1091/79 78/785/79 293/787/79 -f 269/612/65 270/788/65 440/613/65 -f 98/1063/80 99/790/80 515/792/80 -f 243/551/81 244/793/81 496/552/81 -f 80/910/82 81/795/82 460/797/82 -f 176/1040/83 177/798/83 299/800/83 -f 88/875/84 89/801/84 360/803/84 -f 141/1072/85 142/804/85 435/805/85 -f 32/1077/86 33/806/86 441/808/86 -f 69/1100/87 70/809/87 301/811/87 -f 33/806/88 34/812/88 414/807/88 -f 114/706/89 115/814/89 352/707/89 -f 223/926/61 224/816/61 356/817/61 -f 261/1107/91 207/818/91 304/820/91 -f 133/682/92 134/821/92 365/683/92 -f 184/1049/88 185/822/88 305/824/88 -f 161/763/93 162/825/93 289/764/93 -f 122/739/94 123/827/94 518/740/94 -f 49/676/18 50/829/18 424/677/18 -f 229/1009/95 230/831/95 372/833/95 -f 57/712/96 58/834/96 430/713/96 -f 42/775/66 43/836/66 308/776/66 -f 16/1092/97 17/838/97 447/840/97 -f 107/742/98 108/841/98 311/743/98 -f 253/1034/99 254/842/99 374/843/99 -f 144/618/100 145/844/100 313/619/100 -f 8/1099/73 9/846/73 448/848/73 -f 209/1097/101 210/849/101 474/851/101 -f 152/1001/42 153/647/42 317/852/42 -f 72/928/102 73/853/102 462/855/102 -f 99/790/103 100/856/103 319/791/103 -f 19/913/104 20/857/104 523/859/104 -f 245/1027/31 246/860/31 375/862/31 -f 198/1108/99 199/863/99 545/864/99 -f 177/798/37 178/865/37 300/799/37 -f 217/1102/105 218/867/105 520/869/105 -f 136/640/106 137/870/106 321/641/106 -f 185/822/56 186/872/56 306/823/56 -f 34/812/56 35/874/56 512/813/56 -f 87/965/107 88/875/107 316/876/107 -f 115/814/108 116/877/108 323/815/108 -f 27/933/109 28/878/109 295/880/109 -f 104/768/110 105/881/110 290/769/110 -f 255/757/18 256/882/18 298/758/18 -f 201/569/19 202/883/19 394/570/19 -f 170/766/104 171/885/104 453/767/104 -f 123/827/111 124/886/111 326/828/111 -f 50/829/19 51/888/19 439/830/19 -f 155/981/112 156/889/112 419/891/112 -f 58/834/113 59/892/113 387/835/113 -f 95/995/114 96/893/114 456/895/114 -f 47/990/99 48/896/99 296/897/99 -f 272/685/27 273/688/27 437/898/27 -f 220/969/71 221/583/71 330/900/71 -f 193/951/66 194/901/66 285/903/66 -f 162/825/105 163/904/105 458/826/105 -f 246/860/50 247/905/50 451/861/50 -f 147/975/115 148/907/115 428/909/115 -f 79/1022/116 80/910/116 459/911/116 -f 39/574/31 40/912/31 336/575/31 -f 18/964/48 19/913/48 355/914/48 -f 461/1109/91 206/820/91 317/915/91 -f 212/978/76 213/916/76 338/917/76 -f 11/956/105 12/918/105 524/920/105 -f 103/1065/117 56/921/117 388/922/117 -f 178/878/109 179/923/109 332/879/109 -f 204/1110/118 205/564/118 340/925/118 -f 222/584/97 223/926/97 546/585/97 -f 96/893/119 97/927/119 345/894/119 -f 71/1033/120 72/928/120 364/929/120 -f 139/993/121 140/930/121 471/932/121 -f 26/977/166 27/933/166 359/934/166 -f 63/635/122 64/935/122 344/636/122 -f 230/831/75 231/936/75 446/832/75 -f 186/872/11 187/938/11 464/873/11 -f 112/1057/123 113/939/123 527/940/123 -f 267/1062/65 268/941/65 363/943/65 -f 236/660/13 237/944/13 349/661/13 -f 120/870/124 121/945/124 530/946/124 -f 247/905/77 248/947/77 376/906/77 -f 109/907/125 110/948/125 413/950/125 -f 192/674/77 193/951/77 351/675/77 -f 238/760/86 239/952/86 282/761/86 -f 44/1090/126 45/954/126 409/955/126 -f 10/1006/93 11/956/93 369/957/93 -f 3/980/101 4/958/101 449/960/101 -f 196/1036/78 197/961/78 353/962/78 -f 231/936/83 232/963/83 501/937/83 -f 17/838/90 18/964/90 354/839/90 -f 86/704/127 87/965/127 275/705/127 -f 131/1005/128 132/966/128 473/968/128 -f 219/1015/53 220/969/53 370/970/53 -f 239/952/88 240/971/88 457/953/88 -f 101/609/129 102/972/129 416/610/129 -f 167/566/97 168/974/97 377/567/97 -f 146/1066/130 147/975/130 467/976/130 -f 25/770/83 26/977/83 358/771/83 -f 211/1030/63 212/978/63 392/979/63 -f 2/818/65 3/980/65 381/819/65 -f 154/1070/101 155/981/101 468/982/101 -f 281/1111/27 264/983/27 497/985/27 -f 172/580/34 173/986/34 309/581/34 -f 117/629/132 118/988/132 418/630/132 -f 266/788/42 267/990/42 362/789/42 -f 36/548/12 37/991/12 307/549/12 -f 138/1078/133 139/993/133 470/994/133 -f 94/752/134 95/995/134 287/753/134 -f 203/1112/27 204/996/27 378/998/27 -f 259/852/118 260/999/118 386/1001/118 -f 125/657/135 126/1002/135 421/658/135 -f 81/795/136 82/1004/136 396/796/136 -f 130/557/137 131/1005/137 472/558/137 -f 9/865/55 10/1006/55 368/866/55 -f 89/801/138 90/1007/138 525/802/138 -f 45/954/78 46/1008/78 475/613/78 -f 228/749/43 229/1009/43 371/750/43 -f 52/1113/27 53/1010/27 367/898/27 -f 55/1018/91 1/1012/91 526/1014/91 -f 218/867/45 219/1015/45 477/868/45 -f 252/782/16 253/1016/16 373/783/16 -f 60/594/139 61/985/139 278/595/139 -f 164/654/53 165/1019/53 504/655/53 -f 37/991/81 38/1021/81 478/992/81 -f 78/785/140 79/1022/140 294/786/140 -f 73/1032/141 74/1023/141 315/1024/141 -f 273/1114/91 262/1025/91 480/537/91 -f 244/793/163 245/1027/163 379/794/163 -f 188/679/81 189/1028/81 284/680/81 -f 210/849/112 211/1030/112 481/850/112 -f 1/600/42 2/1031/42 380/601/42 -f 70/809/142 71/1033/142 302/810/142 -f 233/659/109 234/1034/109 297/1035/109 -f 202/883/15 203/633/15 310/884/15 -f 195/1069/126 196/1036/126 335/1037/126 -f 173/986/43 174/1038/43 383/987/43 -f 175/1101/75 176/1040/75 542/1041/75 -f 20/857/22 21/1042/22 538/858/22 -f 84/545/167 85/1043/167 385/546/167 -f 180/709/47 181/1045/47 507/710/47 -f 53/727/118 54/1046/118 463/728/118 -f 258/996/27 259/1017/27 357/1048/27 -f 183/592/86 184/1049/86 422/593/86 -f 28/886/165 29/1050/165 539/887/165 -f 65/744/144 66/1051/144 328/745/144 -f 61/819/145 62/1052/145 483/915/145 -f 234/711/165 235/1053/165 485/1054/165 -f 225/669/104 226/1055/104 533/670/104 -f 111/1059/146 112/1057/146 519/1058/146 -f 110/948/147 111/1059/147 346/949/147 -f 12/918/45 13/1060/45 540/919/45 -f 23/649/95 24/1061/95 487/650/95 -f 265/792/65 266/1062/65 497/1063/65 -f 156/889/63 157/1064/63 528/890/63 -f 102/972/148 103/1065/148 452/973/148 -f 145/844/149 146/1066/149 314/845/149 -f 148/1115/150 149/1067/150 343/1068/150 -f 194/901/151 195/1069/151 423/902/151 -f 153/1116/65 154/1070/65 318/1071/65 -f 140/930/152 141/1072/152 529/931/152 -f 92/577/153 93/1073/153 395/578/153 -f 118/988/154 119/1074/154 469/989/154 -f 241/701/11 242/1076/11 534/702/11 -f 119/1074/155 120/870/155 522/1075/155 -f 31/715/25 32/1077/25 489/716/25 -f 137/870/156 138/1078/156 322/871/156 -f 127/1087/157 128/1079/157 445/1081/157 -f 268/1111/27 269/598/27 490/983/27 -f 159/663/73 160/1082/73 397/664/73 -f 128/1079/158 129/1084/158 320/1080/158 -f 226/1055/22 227/1085/22 491/1056/22 -f 165/1019/71 166/1086/71 400/1020/71 -f 126/1002/159 127/1087/159 361/1003/159 -f 249/730/151 250/1088/151 283/731/151 -f 43/836/151 44/1090/151 415/837/151 -f 76/603/160 77/1091/160 325/604/160 -f 15/747/23 16/1092/23 492/748/23 -f 132/966/161 133/1093/161 531/967/161 -f 250/1088/126 251/1094/126 411/1089/126 -f 189/1028/163 190/1095/163 402/1029/163 -f 4/958/112 5/1096/112 541/959/112 -f 208/924/65 209/1097/65 425/1098/65 -f 7/773/24 8/1099/24 494/774/24 -f 68/621/162 69/1100/162 404/622/162 -f 174/1038/95 175/1101/95 384/1039/95 -f 216/698/93 217/1102/93 427/699/93 diff --git a/src/main/resources/assets/hbm/models/missileBooster.obj b/src/main/resources/assets/hbm/models/missileBooster.obj deleted file mode 100644 index 1b2478e83..000000000 --- a/src/main/resources/assets/hbm/models/missileBooster.obj +++ /dev/null @@ -1,416 +0,0 @@ -# Blender v2.76 (sub 0) OBJ File: 'carrier_booster.blend' -# www.blender.org -o Cylinder -v 0.000000 1.000000 -0.500000 -v 0.000000 8.000000 -0.500000 -v 0.250000 1.000000 -0.433013 -v 0.250000 8.000000 -0.433013 -v 0.433013 1.000000 -0.250000 -v 0.433013 8.000000 -0.250000 -v 0.500000 1.000000 0.000000 -v 0.500000 8.000000 0.000000 -v 0.433013 1.000000 0.250000 -v 0.433013 8.000000 0.250000 -v 0.250000 1.000000 0.433013 -v 0.250000 8.000000 0.433013 -v 0.000000 1.000000 0.500000 -v 0.000000 8.000000 0.500000 -v -0.250000 1.000000 0.433013 -v -0.250000 8.000000 0.433013 -v -0.433013 1.000000 0.250000 -v -0.433013 8.000000 0.250000 -v -0.500000 1.000000 0.000000 -v -0.500000 8.000000 0.000000 -v -0.433013 1.000000 -0.250000 -v -0.433013 8.000000 -0.250000 -v -0.250000 1.000000 -0.433013 -v -0.250000 8.000000 -0.433013 -v 0.200001 8.500000 -0.346410 -v 0.000001 8.500000 -0.400000 -v 0.346411 8.500000 -0.200000 -v 0.400001 8.500000 0.000000 -v 0.346411 8.500000 0.200000 -v 0.200001 8.500000 0.346410 -v 0.000001 8.500000 0.400000 -v -0.199999 8.500000 0.346410 -v -0.346409 8.500000 0.200000 -v -0.399999 8.500000 0.000000 -v -0.346409 8.500000 -0.200000 -v -0.199999 8.500000 -0.346410 -v 0.037502 9.000000 -0.064952 -v 0.000002 9.000000 -0.075000 -v 0.064954 9.000000 -0.037500 -v 0.075002 9.000000 0.000000 -v 0.064953 9.000000 0.037500 -v 0.037502 9.000000 0.064952 -v 0.000002 9.000000 0.075000 -v -0.037498 9.000000 0.064952 -v -0.064950 9.000000 0.037500 -v -0.074998 9.000000 0.000000 -v -0.064950 9.000000 -0.037500 -v -0.037498 9.000000 -0.064952 -v -0.000000 1.000000 -0.375000 -v 0.187500 1.000000 -0.324760 -v 0.324760 1.000000 -0.187500 -v 0.375000 1.000000 0.000000 -v 0.324760 1.000000 0.187500 -v 0.187500 1.000000 0.324760 -v 0.000000 1.000000 0.375000 -v -0.187500 1.000000 0.324760 -v -0.324759 1.000000 0.187500 -v -0.375000 1.000000 0.000000 -v -0.324760 1.000000 -0.187500 -v -0.187500 1.000000 -0.324759 -v 0.000000 0.000000 -0.500000 -v 0.250000 0.000000 -0.433013 -v 0.433013 0.000000 -0.250000 -v 0.500000 0.000000 0.000000 -v 0.433013 0.000000 0.250000 -v 0.250000 0.000000 0.433013 -v 0.000000 0.000000 0.500000 -v -0.250000 0.000000 0.433013 -v -0.433012 0.000000 0.250000 -v -0.500000 0.000000 0.000000 -v -0.433013 0.000000 -0.250000 -v -0.250000 0.000000 -0.433013 -vt 0.291673 0.852188 -vt 0.261395 0.852188 -vt 0.261395 0.033298 -vt 0.231118 0.852188 -vt 0.231118 0.033298 -vt 0.200840 0.852188 -vt 0.200840 0.033298 -vt 0.170562 0.852188 -vt 0.170563 0.033298 -vt 0.140284 0.852188 -vt 0.140285 0.033298 -vt 0.110006 0.852188 -vt 0.110008 0.033298 -vt 0.079728 0.852188 -vt 0.079730 0.033298 -vt 0.049451 0.852188 -vt 0.049453 0.033298 -vt 0.019173 0.852188 -vt 0.019175 0.033297 -vt 0.382507 0.852188 -vt 0.352229 0.852188 -vt 0.352228 0.033298 -vt 0.321951 0.852188 -vt 0.349201 0.911762 -vt 0.291673 0.033298 -vt 0.321950 0.033298 -vt 0.053237 0.019173 -vt 0.197812 0.911762 -vt 0.187972 0.980827 -vt 0.183430 0.980827 -vt 0.258368 0.911762 -vt 0.379479 0.911762 -vt 0.046423 0.911762 -vt 0.022201 0.911762 -vt 0.076701 0.911762 -vt 0.052478 0.911762 -vt 0.106979 0.911762 -vt 0.082756 0.911762 -vt 0.137256 0.911762 -vt 0.113034 0.911762 -vt 0.167534 0.911762 -vt 0.143312 0.911762 -vt 0.173590 0.911762 -vt 0.318923 0.911762 -vt 0.288645 0.911762 -vt 0.228090 0.911762 -vt 0.726241 0.560416 -vt 0.740920 0.556483 -vt 0.736987 0.571161 -vt 0.339361 0.980827 -vt 0.334819 0.980827 -vt 0.264423 0.911762 -vt 0.278805 0.980827 -vt 0.066861 0.980827 -vt 0.157694 0.980827 -vt 0.153152 0.980827 -vt 0.309083 0.980827 -vt 0.304541 0.980827 -vt 0.248527 0.980827 -vt 0.243986 0.980827 -vt 0.036583 0.980827 -vt 0.032041 0.980827 -vt 0.127416 0.980827 -vt 0.218250 0.980827 -vt 0.213708 0.980827 -vt 0.369639 0.980827 -vt 0.365097 0.980827 -vt 0.097138 0.980827 -vt 0.092596 0.980827 -vt 0.643102 0.894316 -vt 0.613151 0.780289 -vt 0.642667 0.773541 -vt 0.083515 0.019173 -vt 0.106223 0.019173 -vt 0.113792 0.019173 -vt 0.136500 0.019173 -vt 0.144070 0.019173 -vt 0.166778 0.019173 -vt 0.174347 0.019173 -vt 0.197055 0.019173 -vt 0.295457 0.019173 -vt 0.265180 0.019173 -vt 0.287888 0.019173 -vt 0.204625 0.019173 -vt 0.227333 0.019173 -vt 0.325735 0.019173 -vt 0.348443 0.019173 -vt 0.234902 0.019173 -vt 0.257610 0.019173 -vt 0.382505 0.033297 -vt 0.356012 0.019173 -vt 0.022960 0.019173 -vt 0.797384 0.255928 -vt 0.684386 0.225651 -vt 0.725746 0.184290 -vt 0.710258 0.883441 -vt 0.702692 0.765789 -vt 0.732955 0.764817 -vt 0.822808 0.894316 -vt 0.852759 0.780289 -vt 0.881781 0.788917 -vt 0.778254 0.885625 -vt 0.793354 0.768701 -vt 0.823243 0.773541 -vt 0.621335 0.900787 -vt 0.584128 0.788917 -vt 0.687655 0.885625 -vt 0.672555 0.768701 -vt 0.800671 0.889255 -vt 0.755651 0.883441 -vt 0.763217 0.765789 -vt 0.600028 0.908641 -vt 0.555719 0.799390 -vt 0.665239 0.889255 -vt 0.732955 0.882712 -vt 0.844574 0.900787 -vt 0.910190 0.799390 -vt 0.324979 0.911762 -vt 0.075946 0.019173 -vt 0.234145 0.911762 -vt 0.355257 0.911762 -vt 0.294701 0.911762 -vt 0.203868 0.911762 -vt 0.732445 0.571161 -vt 0.728512 0.568891 -vt 0.726241 0.564957 -vt 0.728512 0.556483 -vt 0.732445 0.554212 -vt 0.736987 0.554212 -vt 0.743191 0.560416 -vt 0.743191 0.564957 -vt 0.740920 0.568891 -vt 0.274263 0.980827 -vt 0.062319 0.980827 -vt 0.122875 0.980827 -vt 0.318165 0.019173 -vt 0.378720 0.019173 -vt 0.045668 0.019173 -vt 0.756024 0.184290 -vt 0.782245 0.199429 -vt 0.797384 0.225651 -vt 0.782245 0.282150 -vt 0.756024 0.297288 -vt 0.725746 0.297288 -vt 0.699525 0.282150 -vt 0.684386 0.255928 -vt 0.699525 0.199429 -vt 0.865881 0.908641 -vn 0.258800 0.000000 -0.965900 -vn 0.707100 0.000000 -0.707100 -vn 0.965900 0.000000 -0.258800 -vn 0.965900 0.000000 0.258800 -vn 0.707100 0.000000 0.707100 -vn 0.258800 0.000000 0.965900 -vn -0.258800 0.000000 0.965900 -vn -0.707100 0.000000 0.707100 -vn -0.965900 0.000000 0.258800 -vn -0.965900 0.000000 -0.258800 -vn -0.694300 0.189700 -0.694300 -vn -0.258800 0.000000 -0.965900 -vn -0.707100 0.000000 -0.707100 -vn 0.000000 -1.000000 0.000000 -vn 0.818100 0.531700 0.219200 -vn 0.694300 0.189700 -0.694300 -vn -0.948400 0.189700 -0.254100 -vn -0.948400 0.189700 0.254100 -vn -0.694300 0.189700 0.694300 -vn -0.254100 0.189700 0.948400 -vn 0.254100 0.189700 0.948400 -vn 0.694300 0.189700 0.694300 -vn 0.948400 0.189700 0.254100 -vn -0.254100 0.189700 -0.948400 -vn 0.254100 0.189700 -0.948400 -vn 0.948400 0.189700 -0.254100 -vn 0.000000 1.000000 -0.000000 -vn -0.598900 0.531700 -0.598900 -vn 0.219200 0.531700 -0.818100 -vn -0.598900 0.531700 0.598900 -vn 0.598900 0.531700 0.598900 -vn -0.219200 0.531700 -0.818100 -vn 0.598900 0.531700 -0.598900 -vn -0.818100 0.531700 0.219200 -vn 0.219200 0.531700 0.818100 -vn 0.818100 0.531700 -0.219200 -vn -0.818100 0.531700 -0.219200 -vn -0.219200 0.531700 0.818100 -vn -0.257000 0.119900 0.959000 -vn 0.959000 0.119900 0.257000 -vn -0.702000 0.119900 -0.702000 -vn 0.257000 0.119900 -0.959000 -vn -0.702000 0.119900 0.702000 -vn 0.702000 0.119900 0.702000 -vn -0.257000 0.119900 -0.959000 -vn 0.702000 0.119900 -0.702000 -vn -0.959000 0.119900 0.257000 -vn 0.257000 0.119900 0.959000 -vn 0.959000 0.119900 -0.257000 -vn -0.959000 0.119900 -0.257000 -vn 0.000000 1.000000 0.000100 -vn 0.000000 1.000000 -0.000100 -s off -f 2/1/1 4/2/1 3/3/1 -f 4/2/2 6/4/2 5/5/2 -f 6/4/3 8/6/3 7/7/3 -f 8/6/4 10/8/4 9/9/4 -f 10/8/5 12/10/5 11/11/5 -f 12/10/6 14/12/6 13/13/6 -f 14/12/7 16/14/7 15/15/7 -f 16/14/8 18/16/8 17/17/8 -f 18/16/9 20/18/9 19/19/9 -f 20/20/10 22/21/10 21/22/10 -f 24/23/11 22/21/11 35/24/11 -f 24/23/12 2/1/12 1/25/12 -f 22/21/13 24/23/13 23/26/13 -f 15/15/14 17/17/14 57/27/14 -f 28/28/15 40/29/15 41/30/15 -f 6/4/16 4/2/16 25/31/16 -f 22/21/17 20/20/17 34/32/17 -f 18/16/18 33/33/18 34/34/18 -f 16/14/19 32/35/19 33/36/19 -f 14/12/20 31/37/20 32/38/20 -f 12/10/21 30/39/21 31/40/21 -f 10/8/22 29/41/22 30/42/22 -f 8/6/23 28/28/23 29/43/23 -f 2/1/24 24/23/24 36/44/24 -f 4/2/25 2/1/25 26/45/25 -f 8/6/26 6/4/26 27/46/26 -f 47/47/27 43/48/27 39/49/27 -f 35/24/28 47/50/28 48/51/28 -f 25/52/29 26/45/29 38/53/29 -f 33/36/30 32/35/30 44/54/30 -f 29/41/31 41/55/31 42/56/31 -f 36/44/32 48/57/32 38/58/32 -f 25/31/33 37/59/33 39/60/33 -f 33/33/34 45/61/34 46/62/34 -f 31/40/35 30/39/35 42/63/35 -f 27/46/36 39/64/36 40/65/36 -f 34/32/37 46/66/37 47/67/37 -f 31/37/38 43/68/38 44/69/38 -f 56/70/39 68/71/39 67/72/39 -f 15/15/14 56/73/14 55/74/14 -f 13/13/14 55/75/14 54/76/14 -f 11/11/14 54/77/14 53/78/14 -f 9/9/14 53/79/14 52/80/14 -f 23/26/14 1/25/14 49/81/14 -f 3/3/14 50/82/14 49/83/14 -f 7/7/14 52/84/14 51/85/14 -f 23/26/14 60/86/14 59/87/14 -f 5/5/14 51/88/14 50/89/14 -f 19/90/14 21/22/14 59/91/14 -f 17/17/14 19/19/14 58/92/14 -f 64/93/14 70/94/14 72/95/14 -f 53/96/40 65/97/40 64/98/40 -f 60/99/41 72/100/41 71/101/41 -f 50/102/42 62/103/42 61/104/42 -f 57/105/43 69/106/43 68/71/43 -f 54/107/44 66/108/44 65/97/44 -f 60/99/45 49/109/45 61/104/45 -f 50/102/46 51/110/46 63/111/46 -f 57/105/47 58/112/47 70/113/47 -f 54/107/48 55/114/48 67/72/48 -f 52/115/49 64/98/49 63/111/49 -f 59/116/50 71/101/50 70/117/50 -f 1/25/1 2/1/1 3/3/1 -f 3/3/2 4/2/2 5/5/2 -f 5/5/3 6/4/3 7/7/3 -f 7/7/4 8/6/4 9/9/4 -f 9/9/5 10/8/5 11/11/5 -f 11/11/6 12/10/6 13/13/6 -f 13/13/7 14/12/7 15/15/7 -f 15/15/8 16/14/8 17/17/8 -f 17/17/9 18/16/9 19/19/9 -f 19/90/10 20/20/10 21/22/10 -f 36/118/11 24/23/11 35/24/11 -f 23/26/12 24/23/12 1/25/12 -f 21/22/13 22/21/13 23/26/13 -f 56/119/14 15/15/14 57/27/14 -f 29/43/15 28/28/15 41/30/15 -f 27/120/16 6/4/16 25/31/16 -f 35/121/17 22/21/17 34/32/17 -f 20/18/18 18/16/18 34/34/18 -f 18/16/19 16/14/19 33/36/19 -f 16/14/20 14/12/20 32/38/20 -f 14/12/21 12/10/21 31/40/21 -f 12/10/22 10/8/22 30/42/22 -f 10/8/23 8/6/23 29/43/23 -f 26/122/24 2/1/24 36/44/24 -f 25/52/25 4/2/25 26/45/25 -f 28/123/26 8/6/26 27/46/26 -f 39/49/51 37/124/51 38/125/51 -f 38/125/51 48/126/51 47/47/51 -f 47/47/27 46/127/27 43/48/27 -f 45/128/52 44/129/52 43/48/52 -f 43/48/51 42/130/51 41/131/51 -f 41/131/27 40/132/27 43/48/27 -f 39/49/27 38/125/27 47/47/27 -f 46/127/27 45/128/27 43/48/27 -f 43/48/27 40/132/27 39/49/27 -f 36/118/28 35/24/28 48/51/28 -f 37/133/29 25/52/29 38/53/29 -f 45/134/30 33/36/30 44/54/30 -f 30/42/31 29/41/31 42/56/31 -f 26/122/32 36/44/32 38/58/32 -f 27/120/33 25/31/33 39/60/33 -f 34/34/34 33/33/34 46/62/34 -f 43/135/35 31/40/35 42/63/35 -f 28/123/36 27/46/36 40/65/36 -f 35/121/37 34/32/37 47/67/37 -f 32/38/38 31/37/38 44/69/38 -f 55/114/39 56/70/39 67/72/39 -f 13/13/14 15/15/14 55/74/14 -f 11/11/14 13/13/14 54/76/14 -f 9/9/14 11/11/14 53/78/14 -f 7/7/14 9/9/14 52/80/14 -f 60/136/14 23/26/14 49/81/14 -f 1/25/14 3/3/14 49/83/14 -f 5/5/14 7/7/14 51/85/14 -f 21/22/14 23/26/14 59/87/14 -f 3/3/14 5/5/14 50/89/14 -f 58/137/14 19/90/14 59/91/14 -f 57/138/14 17/17/14 58/92/14 -f 72/95/14 61/139/14 62/140/14 -f 62/140/14 63/141/14 64/93/14 -f 64/93/14 65/142/14 66/143/14 -f 66/143/14 67/144/14 68/145/14 -f 68/145/14 69/146/14 70/94/14 -f 70/94/14 71/147/14 72/95/14 -f 72/95/14 62/140/14 64/93/14 -f 64/93/14 66/143/14 68/145/14 -f 68/145/14 70/94/14 64/93/14 -f 52/115/40 53/96/40 64/98/40 -f 59/116/41 60/99/41 71/101/41 -f 49/109/42 50/102/42 61/104/42 -f 56/70/43 57/105/43 68/71/43 -f 53/96/44 54/107/44 65/97/44 -f 72/100/45 60/99/45 61/104/45 -f 62/103/46 50/102/46 63/111/46 -f 69/106/47 57/105/47 70/113/47 -f 66/108/48 54/107/48 67/72/48 -f 51/110/49 52/115/49 63/111/49 -f 58/148/50 59/116/50 70/117/50 diff --git a/src/main/resources/assets/hbm/models/missileCarrier.obj b/src/main/resources/assets/hbm/models/missileCarrier.obj deleted file mode 100644 index 5f3734ea0..000000000 --- a/src/main/resources/assets/hbm/models/missileCarrier.obj +++ /dev/null @@ -1,1148 +0,0 @@ -# Blender v2.76 (sub 0) OBJ File: 'carrier_main.blend' -# www.blender.org -o Cylinder -v 0.000000 1.500000 -0.750000 -v 0.000000 5.000000 -0.750000 -v 0.375000 1.500000 -0.649519 -v 0.375000 5.000000 -0.649519 -v 0.649519 1.500000 -0.375000 -v 0.649519 5.000000 -0.375000 -v 0.750000 1.500000 0.000000 -v 0.750000 5.000000 0.000000 -v 0.649519 1.500000 0.375000 -v 0.649519 5.000000 0.375000 -v 0.375000 1.500000 0.649519 -v 0.375000 5.000000 0.649519 -v 0.000000 1.500000 0.750000 -v 0.000000 5.000000 0.750000 -v -0.375000 1.500000 0.649519 -v -0.375000 5.000000 0.649519 -v -0.649519 1.500000 0.375000 -v -0.649519 5.000000 0.375000 -v -0.750000 1.500000 0.000000 -v -0.750000 5.000000 0.000000 -v -0.649519 1.500000 -0.375000 -v -0.649519 5.000000 -0.375000 -v -0.375000 1.500000 -0.649519 -v -0.375000 5.000000 -0.649519 -v -0.000000 1.250000 -0.562500 -v 0.281250 1.250000 -0.487139 -v 0.487139 1.250000 -0.281250 -v 0.562500 1.250000 0.000000 -v 0.487139 1.250000 0.281250 -v 0.281250 1.250000 0.487139 -v 0.000000 1.250000 0.562500 -v -0.281250 1.250000 0.487139 -v -0.487139 1.250000 0.281250 -v -0.562500 1.250000 0.000000 -v -0.487140 1.250000 -0.281250 -v -0.281250 1.250000 -0.487139 -v -0.000000 1.000000 -0.562500 -v 0.281250 1.000000 -0.487139 -v 0.487139 1.000000 -0.281250 -v 0.562500 1.000000 0.000000 -v 0.487139 1.000000 0.281250 -v 0.281250 1.000000 0.487139 -v -0.000000 1.000000 0.562500 -v -0.281250 1.000000 0.487139 -v -0.487139 1.000000 0.281250 -v -0.562500 1.000000 0.000000 -v -0.487140 1.000000 -0.281250 -v -0.281250 1.000000 -0.487139 -v -0.000000 0.750000 -0.262500 -v 0.131250 0.750000 -0.227332 -v 0.227332 0.750000 -0.131250 -v 0.262500 0.750000 0.000000 -v 0.227332 0.750000 0.131250 -v 0.131250 0.750000 0.227332 -v -0.000000 0.750000 0.262500 -v -0.131250 0.750000 0.227332 -v -0.227332 0.750000 0.131250 -v -0.262500 0.750000 0.000000 -v -0.227332 0.750000 -0.131250 -v -0.131250 0.750000 -0.227332 -v 0.000000 0.500000 -0.450000 -v 0.225000 0.500000 -0.389711 -v 0.389711 0.500000 -0.225000 -v 0.450000 0.500000 0.000000 -v 0.389711 0.500000 0.225000 -v 0.225000 0.500000 0.389711 -v 0.000000 0.500000 0.450000 -v -0.225000 0.500000 0.389712 -v -0.389711 0.500000 0.225000 -v -0.450000 0.500000 0.000000 -v -0.389712 0.500000 -0.225000 -v -0.225000 0.500000 -0.389711 -v -0.318750 0.000000 -0.552091 -v -0.552091 0.000000 -0.318750 -v -0.637500 0.000000 0.000000 -v -0.552091 0.000000 0.318750 -v -0.318750 0.000000 0.552091 -v 0.000000 0.000000 0.637500 -v 0.318750 0.000000 0.552091 -v 0.552091 0.000000 0.318750 -v 0.637500 0.000000 0.000000 -v 0.552091 0.000000 -0.318750 -v 0.318750 0.000000 -0.552091 -v 0.000000 0.000000 -0.637500 -v -0.270938 0.000000 -0.469277 -v 0.000000 0.000000 -0.541875 -v -0.469278 0.000000 -0.270937 -v -0.541875 0.000000 0.000000 -v -0.469277 0.000000 0.270938 -v -0.270937 0.000000 0.469278 -v 0.000000 0.000000 0.541875 -v 0.270938 0.000000 0.469278 -v 0.469278 0.000000 0.270938 -v 0.541875 0.000000 0.000000 -v 0.469278 0.000000 -0.270938 -v 0.270938 0.000000 -0.469278 -v -0.054187 0.750000 -0.093855 -v 0.000000 0.750000 -0.108375 -v -0.093855 0.750000 -0.054187 -v -0.108375 0.750000 0.000000 -v -0.093855 0.750000 0.054188 -v -0.054187 0.750000 0.093856 -v 0.000000 0.750000 0.108375 -v 0.054188 0.750000 0.093856 -v 0.093856 0.750000 0.054188 -v 0.108375 0.750000 0.000000 -v 0.093856 0.750000 -0.054187 -v 0.054188 0.750000 -0.093855 -v 0.375000 7.000000 -0.649519 -v 0.000000 7.000000 -0.750000 -v 0.649519 7.000000 -0.375000 -v 0.750000 7.000000 0.000000 -v 0.649519 7.000000 0.375000 -v 0.375000 7.000000 0.649519 -v 0.000000 7.000000 0.750000 -v -0.375000 7.000000 0.649519 -v -0.649519 7.000000 0.375000 -v -0.750000 7.000000 0.000000 -v -0.649519 7.000000 -0.375000 -v -0.375000 7.000000 -0.649519 -v 0.375000 10.500000 -0.649519 -v 0.000000 10.500000 -0.750000 -v 0.649519 10.500000 -0.375000 -v 0.750000 10.500000 0.000000 -v 0.649519 10.500000 0.375000 -v 0.375000 10.500000 0.649519 -v 0.000000 10.500000 0.750000 -v -0.374999 10.500000 0.649519 -v -0.649519 10.500000 0.375000 -v -0.750000 10.500000 0.000000 -v -0.649519 10.500000 -0.375000 -v -0.375000 10.500000 -0.649519 -v -0.000000 5.000000 -0.787500 -v 0.393750 5.000000 -0.681995 -v 0.681995 5.000000 -0.393750 -v 0.787500 5.000000 0.000000 -v 0.681995 5.000000 0.393750 -v 0.393750 5.000000 0.681995 -v 0.000000 5.000000 0.787500 -v -0.393750 5.000000 0.681995 -v -0.681995 5.000000 0.393750 -v -0.787500 5.000000 0.000000 -v -0.681995 5.000000 -0.393750 -v -0.393750 5.000000 -0.681995 -v 0.393750 7.000000 -0.681995 -v 0.000000 7.000000 -0.787500 -v 0.681995 7.000000 -0.393750 -v 0.787500 7.000000 0.000000 -v 0.681995 7.000000 0.393750 -v 0.393750 7.000000 0.681995 -v 0.000000 7.000000 0.787500 -v -0.393750 7.000000 0.681995 -v -0.681995 7.000000 0.393750 -v -0.787500 7.000000 0.000000 -v -0.681995 7.000000 -0.393750 -v -0.393750 7.000000 -0.681995 -v 0.562501 12.000000 -0.974279 -v 0.000001 12.000000 -1.125000 -v 0.974279 12.000000 -0.562500 -v 1.125000 12.000000 -0.000000 -v 0.974279 12.000000 0.562500 -v 0.562501 12.000000 0.974278 -v 0.000001 12.000000 1.125000 -v -0.562499 12.000000 0.974279 -v -0.974278 12.000000 0.562500 -v -1.125000 12.000000 0.000000 -v -0.974278 12.000000 -0.562499 -v -0.562500 12.000000 -0.974278 -v 0.562500 13.500000 -0.974279 -v 0.000000 13.500000 -1.125000 -v 0.974279 13.500000 -0.562500 -v 1.125000 13.500000 -0.000000 -v 0.974279 13.500000 0.562500 -v 0.562500 13.500000 0.974278 -v 0.000000 13.500000 1.125000 -v -0.562499 13.500000 0.974279 -v -0.974278 13.500000 0.562500 -v -1.125000 13.500000 0.000000 -v -0.974279 13.500000 -0.562499 -v -0.562500 13.500000 -0.974278 -v 0.140625 15.500000 -0.243570 -v 0.000000 15.500000 -0.281250 -v 0.243570 15.500000 -0.140625 -v 0.281250 15.500000 0.000000 -v 0.243570 15.500000 0.140625 -v 0.140625 15.500000 0.243570 -v 0.000000 15.500000 0.281250 -v -0.140625 15.500000 0.243570 -v -0.243569 15.500000 0.140625 -v -0.281250 15.500000 0.000000 -v -0.243569 15.500000 -0.140625 -v -0.140625 15.500000 -0.243569 -v 0.021094 15.750000 -0.036535 -v 0.000000 15.750000 -0.042187 -v 0.036536 15.750000 -0.021094 -v 0.042188 15.750000 0.000000 -v 0.036536 15.750000 0.021094 -v 0.021094 15.750000 0.036536 -v 0.000001 15.750000 0.042188 -v -0.021093 15.750000 0.036536 -v -0.036535 15.750000 0.021094 -v -0.042187 15.750000 0.000000 -v -0.036535 15.750000 -0.021094 -v -0.021093 15.750000 -0.036535 -vt 0.301507 0.312696 -vt 0.272488 0.312697 -vt 0.272481 0.051083 -vt 0.271037 0.312697 -vt 0.242019 0.312697 -vt 0.242011 0.051084 -vt 0.240568 0.312697 -vt 0.211549 0.312698 -vt 0.211542 0.051085 -vt 0.210098 0.312698 -vt 0.181079 0.312699 -vt 0.181072 0.051086 -vt 0.179628 0.312699 -vt 0.150609 0.312700 -vt 0.150602 0.051086 -vt 0.149158 0.312700 -vt 0.120140 0.312701 -vt 0.120133 0.051087 -vt 0.118689 0.312701 -vt 0.089670 0.312702 -vt 0.089662 0.051088 -vt 0.088219 0.312702 -vt 0.059200 0.312702 -vt 0.059193 0.051089 -vt 0.057749 0.312702 -vt 0.028730 0.312703 -vt 0.028723 0.051090 -vt 0.392917 0.312693 -vt 0.363898 0.312694 -vt 0.363890 0.051081 -vt 0.331977 0.312695 -vt 0.302958 0.312696 -vt 0.302951 0.051082 -vt 0.362447 0.312694 -vt 0.333428 0.312695 -vt 0.333420 0.051081 -vt 0.240560 0.051084 -vt 0.215168 0.028010 -vt 0.614773 0.847825 -vt 0.614773 0.866512 -vt 0.593009 0.866512 -vt 0.362439 0.051081 -vt 0.337047 0.028006 -vt 0.245638 0.028009 -vt 0.267402 0.028008 -vt 0.367517 0.028006 -vt 0.389281 0.028005 -vt 0.032349 0.028015 -vt 0.054113 0.028014 -vt 0.062820 0.028014 -vt 0.084584 0.028013 -vt 0.093289 0.028013 -vt 0.115053 0.028012 -vt 0.123759 0.028012 -vt 0.145523 0.028012 -vt 0.154229 0.028011 -vt 0.175993 0.028011 -vt 0.210091 0.051085 -vt 0.184699 0.028010 -vt 0.306577 0.028007 -vt 0.328341 0.028006 -vt 0.301500 0.051082 -vt 0.276108 0.028008 -vt 0.608970 0.895119 -vt 0.549481 0.847825 -vt 0.549481 0.866512 -vt 0.527717 0.866512 -vt 0.440661 0.847825 -vt 0.440661 0.866512 -vt 0.418896 0.866512 -vt 0.636537 0.847825 -vt 0.636537 0.866512 -vt 0.571245 0.847825 -vt 0.571245 0.866512 -vt 0.462425 0.847825 -vt 0.462425 0.866512 -vt 0.505953 0.847825 -vt 0.505953 0.866512 -vt 0.484189 0.866512 -vt 0.658302 0.847825 -vt 0.658302 0.866512 -vt 0.593009 0.847825 -vt 0.484189 0.847825 -vt 0.527717 0.847825 -vt 0.680066 0.847825 -vt 0.680066 0.866512 -vt 0.253796 0.824518 -vt 0.275183 0.833911 -vt 0.265791 0.848572 -vt 0.543677 0.895119 -vt 0.533521 0.895119 -vt 0.434857 0.895119 -vt 0.630734 0.895119 -vt 0.620577 0.895119 -vt 0.565441 0.895119 -vt 0.555285 0.895119 -vt 0.456621 0.895119 -vt 0.446464 0.895119 -vt 0.500149 0.895119 -vt 0.652498 0.895119 -vt 0.642341 0.895119 -vt 0.587206 0.895119 -vt 0.577049 0.895119 -vt 0.478385 0.895119 -vt 0.468228 0.895119 -vt 0.521913 0.895119 -vt 0.674262 0.895119 -vt 0.664105 0.895119 -vt 0.224264 0.879299 -vt 0.238474 0.916598 -vt 0.214722 0.923249 -vt 0.217381 0.856977 -vt 0.226504 0.852514 -vt 0.239903 0.871647 -vt 0.178528 0.861344 -vt 0.188643 0.862267 -vt 0.190158 0.885576 -vt 0.131998 0.833070 -vt 0.114525 0.848572 -vt 0.105133 0.833911 -vt 0.229094 0.850940 -vt 0.237259 0.844899 -vt 0.253900 0.861291 -vt 0.201788 0.861344 -vt 0.207497 0.883993 -vt 0.140795 0.842882 -vt 0.126416 0.861291 -vt 0.162935 0.856977 -vt 0.156052 0.879299 -vt 0.140413 0.871647 -vt 0.239521 0.842882 -vt 0.246458 0.835463 -vt 0.214549 0.858057 -vt 0.151222 0.850940 -vt 0.175547 0.860795 -vt 0.172819 0.883993 -vt 0.119685 0.905758 -vt 0.099857 0.891087 -vt 0.297304 0.873069 -vt 0.280459 0.891087 -vt 0.141842 0.916598 -vt 0.083012 0.873069 -vt 0.190158 0.925490 -vt 0.165594 0.923249 -vt 0.260631 0.905758 -vt 0.310610 0.852299 -vt 0.262003 0.912773 -vt 0.243170 0.921987 -vt 0.792469 0.894307 -vt 0.854840 0.876912 -vt 0.856480 0.880772 -vt 0.315425 0.857581 -vt 0.161951 0.929398 -vt 0.141761 0.923745 -vt 0.114092 0.910208 -vt 0.097238 0.897737 -vt 0.238554 0.923745 -vt 0.218365 0.929398 -vt 0.301084 0.879135 -vt 0.137146 0.921987 -vt 0.118313 0.912773 -vt 0.093550 0.894450 -vt 0.079232 0.879135 -vt 0.213507 0.930293 -vt 0.192628 0.932198 -vt 0.283078 0.897737 -vt 0.266224 0.910208 -vt 0.076200 0.875235 -vt 0.064891 0.857581 -vt 0.187688 0.932198 -vt 0.166809 0.930293 -vt 0.828610 0.623227 -vt 0.832242 0.609674 -vt 0.842163 0.619596 -vt 0.910617 0.942823 -vt 0.878470 0.886616 -vt 0.881809 0.884080 -vt 0.940197 0.913601 -vt 0.884386 0.880772 -vt 0.886026 0.876912 -vt 0.849644 0.950787 -vt 0.866275 0.888209 -vt 0.870433 0.888752 -vt 0.800670 0.913603 -vt 0.859056 0.884080 -vt 0.951365 0.873551 -vt 0.948397 0.894305 -vt 0.870433 0.953503 -vt 0.874591 0.888209 -vt 0.813551 0.930145 -vt 0.862396 0.886616 -vt 0.789500 0.873552 -vt 0.854246 0.872761 -vt 0.891223 0.950787 -vt 0.927315 0.930144 -vt 0.830249 0.942823 -vt 0.088223 0.467610 -vt 0.088231 0.729223 -vt 0.059212 0.729224 -vt 0.059205 0.467611 -vt 0.058479 0.464903 -vt 0.088949 0.464902 -vt 0.028735 0.467612 -vt 0.028009 0.464904 -vt 0.363902 0.467602 -vt 0.363177 0.464895 -vt 0.393646 0.464894 -vt 0.529458 0.028005 -vt 0.536713 0.143348 -vt 0.493184 0.143348 -vt 0.179632 0.467607 -vt 0.179640 0.729221 -vt 0.150621 0.729221 -vt 0.331981 0.467603 -vt 0.331988 0.729216 -vt 0.302969 0.729217 -vt 0.271042 0.467605 -vt 0.271049 0.729219 -vt 0.242030 0.729220 -vt 0.057754 0.467611 -vt 0.057762 0.729224 -vt 0.028743 0.729225 -vt 0.149163 0.467608 -vt 0.149170 0.729221 -vt 0.120151 0.729222 -vt 0.240572 0.467606 -vt 0.240579 0.729219 -vt 0.211560 0.729220 -vt 0.392921 0.467601 -vt 0.392928 0.729214 -vt 0.363909 0.729215 -vt 0.118693 0.467609 -vt 0.118700 0.729222 -vt 0.089681 0.729223 -vt 0.210102 0.467607 -vt 0.210109 0.729219 -vt 0.181090 0.729220 -vt 0.362451 0.467602 -vt 0.362459 0.729216 -vt 0.333440 0.729217 -vt 0.301511 0.467604 -vt 0.301519 0.729218 -vt 0.272500 0.729219 -vt 0.180354 0.315407 -vt 0.180358 0.464900 -vt 0.149888 0.464901 -vt 0.210823 0.315406 -vt 0.210828 0.464899 -vt 0.332703 0.315402 -vt 0.332707 0.464896 -vt 0.302237 0.464897 -vt 0.302233 0.315403 -vt 0.271767 0.464897 -vt 0.241293 0.315405 -vt 0.241297 0.464898 -vt 0.363172 0.315401 -vt 0.271763 0.315404 -vt 0.393642 0.315401 -vt 0.058475 0.315410 -vt 0.088944 0.315409 -vt 0.119414 0.315408 -vt 0.119418 0.464902 -vt 0.149884 0.315407 -vt 0.089674 0.467610 -vt 0.120144 0.467609 -vt 0.150614 0.467608 -vt 0.181083 0.467607 -vt 0.211553 0.467607 -vt 0.242023 0.467606 -vt 0.272493 0.467605 -vt 0.302962 0.467604 -vt 0.333432 0.467603 -vt 0.028005 0.315411 -vt 0.754354 0.143348 -vt 0.754354 0.255468 -vt 0.710826 0.255468 -vt 0.660042 0.028005 -vt 0.667297 0.143348 -vt 0.623769 0.143348 -vt 0.877684 0.028005 -vt 0.884939 0.143348 -vt 0.841410 0.143348 -vt 0.790627 0.028005 -vt 0.797882 0.143348 -vt 0.485930 0.028006 -vt 0.449656 0.143348 -vt 0.587495 0.028005 -vt 0.616514 0.028005 -vt 0.747099 0.028005 -vt 0.710826 0.143348 -vt 0.935722 0.028005 -vt 0.964740 0.028005 -vt 0.971995 0.143348 -vt 0.572986 0.028005 -vt 0.580241 0.143348 -vt 0.703571 0.028005 -vt 0.892193 0.028005 -vt 0.921212 0.028005 -vt 0.928467 0.143348 -vt 0.834155 0.028005 -vt 0.580241 0.255468 -vt 0.623769 0.255468 -vt 0.607446 0.416897 -vt 0.971995 0.255468 -vt 0.928467 0.255468 -vt 0.536713 0.255468 -vt 0.667297 0.255468 -vt 0.884939 0.255468 -vt 0.841410 0.255468 -vt 0.797882 0.255468 -vt 0.493185 0.255468 -vt 0.449656 0.255468 -vt 0.602821 0.442335 -vt 0.601189 0.442335 -vt 0.738030 0.416897 -vt 0.727149 0.416897 -vt 0.955672 0.416897 -vt 0.563918 0.416897 -vt 0.553036 0.416897 -vt 0.694502 0.416897 -vt 0.683621 0.416897 -vt 0.912144 0.416897 -vt 0.825087 0.416897 -vt 0.814205 0.416897 -vt 0.520390 0.416897 -vt 0.509508 0.416897 -vt 0.650974 0.416897 -vt 0.640092 0.416897 -vt 0.868616 0.416897 -vt 0.781559 0.416897 -vt 0.476861 0.416897 -vt 0.465980 0.416897 -vt 0.919680 0.621180 -vt 0.914404 0.619766 -vt 0.918266 0.615904 -vt 0.733406 0.442335 -vt 0.731774 0.442335 -vt 0.951047 0.442335 -vt 0.949415 0.442335 -vt 0.559293 0.442335 -vt 0.557661 0.442335 -vt 0.689878 0.442335 -vt 0.901262 0.416897 -vt 0.907519 0.442335 -vt 0.820462 0.442336 -vt 0.515765 0.442335 -vt 0.514133 0.442335 -vt 0.646349 0.442335 -vt 0.857733 0.416897 -vt 0.863991 0.442336 -vt 0.776934 0.442335 -vt 0.775302 0.442335 -vt 0.472237 0.442335 -vt 0.271030 0.051083 -vt 0.179621 0.051086 -vt 0.149151 0.051087 -vt 0.118681 0.051087 -vt 0.088212 0.051088 -vt 0.057741 0.051089 -vt 0.392909 0.051080 -vt 0.331969 0.051081 -vt 0.236932 0.028009 -vt 0.358811 0.028006 -vt 0.206463 0.028010 -vt 0.297872 0.028007 -vt 0.598813 0.895119 -vt 0.418896 0.847825 -vt 0.248318 0.833070 -vt 0.424700 0.895119 -vt 0.489993 0.895119 -vt 0.511757 0.895119 -vt 0.126520 0.824518 -vt 0.191673 0.862267 -vt 0.133858 0.835463 -vt 0.153812 0.852514 -vt 0.204769 0.860795 -vt 0.143057 0.844899 -vt 0.165767 0.858056 -vt 0.069706 0.852299 -vt 0.304116 0.875235 -vt 0.286766 0.894450 -vt 0.840066 0.623227 -vt 0.836435 0.625324 -vt 0.832242 0.625324 -vt 0.826513 0.619596 -vt 0.826513 0.615403 -vt 0.828610 0.611771 -vt 0.836435 0.609674 -vt 0.840066 0.611771 -vt 0.842163 0.615403 -vt 0.886619 0.872761 -vt 0.500439 0.028005 -vt 0.631024 0.028005 -vt 0.848665 0.028005 -vt 0.761608 0.028005 -vt 0.456911 0.028006 -vt 0.718080 0.028005 -vt 0.543967 0.028005 -vt 0.674552 0.028005 -vt 0.805137 0.028005 -vt 0.596564 0.416897 -vt 0.944790 0.416897 -vt 0.770677 0.416897 -vt 0.919680 0.616720 -vt 0.920496 0.618134 -vt 0.920496 0.619766 -vt 0.918266 0.621996 -vt 0.916634 0.621996 -vt 0.915220 0.621180 -vt 0.914404 0.618134 -vt 0.915220 0.616720 -vt 0.916634 0.615904 -vt 0.688245 0.442335 -vt 0.905886 0.442335 -vt 0.818830 0.442336 -vt 0.644717 0.442335 -vt 0.862359 0.442336 -vt 0.470604 0.442335 -vn 0.258800 0.000000 -0.965900 -vn 0.707100 0.000000 -0.707100 -vn 0.965900 0.000000 -0.258800 -vn 0.965900 0.000000 0.258800 -vn 0.707100 0.000000 0.707100 -vn 0.258800 0.000000 0.965900 -vn -0.258800 0.000000 0.965900 -vn -0.707100 0.000000 0.707100 -vn -0.965900 0.000000 0.258800 -vn -0.965900 0.000000 -0.258800 -vn -0.258800 0.000000 -0.965900 -vn -0.707100 0.000000 -0.707100 -vn 0.782200 -0.586700 -0.209600 -vn -0.572600 -0.586700 -0.572600 -vn 0.572600 -0.586700 -0.572600 -vn -0.782200 -0.586700 -0.209600 -vn -0.782200 -0.586700 0.209600 -vn -0.572600 -0.586700 0.572600 -vn -0.209600 -0.586700 0.782200 -vn 0.209600 -0.586700 0.782200 -vn 0.572600 -0.586700 0.572600 -vn 0.782200 -0.586700 0.209600 -vn -0.209600 -0.586700 -0.782200 -vn 0.209600 -0.586700 -0.782200 -vn 0.169100 -0.757200 0.631000 -vn -0.782200 0.586700 0.209600 -vn 0.631000 -0.757200 -0.169100 -vn -0.631000 -0.757200 -0.169100 -vn -0.169100 -0.757200 0.631000 -vn 0.631000 -0.757200 0.169100 -vn -0.461900 -0.757200 -0.461900 -vn 0.169100 -0.757200 -0.631000 -vn -0.461900 -0.757200 0.461900 -vn 0.461900 -0.757200 0.461900 -vn -0.169100 -0.757200 -0.631000 -vn 0.461900 -0.757200 -0.461900 -vn -0.631000 -0.757200 0.169100 -vn 0.664800 0.340600 0.664800 -vn 0.209600 0.586700 0.782200 -vn 0.782200 0.586700 -0.209600 -vn -0.782200 0.586700 -0.209600 -vn -0.209600 0.586700 0.782200 -vn 0.782200 0.586700 0.209600 -vn -0.572600 0.586700 -0.572600 -vn 0.209600 0.586700 -0.782200 -vn -0.572600 0.586700 0.572600 -vn 0.572600 0.586700 0.572600 -vn -0.209600 0.586700 -0.782200 -vn 0.572600 0.586700 -0.572600 -vn -0.243300 0.340600 -0.908200 -vn -0.664800 0.340600 0.664800 -vn 0.243300 0.340600 -0.908200 -vn -0.664800 0.340600 -0.664800 -vn 0.908200 0.340600 0.243300 -vn -0.243300 0.340600 0.908200 -vn -0.908200 0.340600 -0.243300 -vn 0.908200 0.340600 -0.243300 -vn 0.243300 0.340600 0.908200 -vn -0.908200 0.340600 0.243300 -vn 0.000000 -1.000000 0.000000 -vn 0.664800 0.340600 -0.664800 -vn 0.617400 -0.487500 -0.617400 -vn -0.226000 -0.487500 0.843400 -vn 0.617400 -0.487500 0.617400 -vn -0.843400 -0.487500 -0.226000 -vn 0.226000 -0.487500 -0.843400 -vn 0.843400 -0.487500 0.226000 -vn -0.843400 -0.487500 0.226000 -vn -0.226000 -0.487500 -0.843400 -vn 0.843400 -0.487500 -0.226000 -vn -0.617400 -0.487500 0.617400 -vn 0.226000 -0.487500 0.843400 -vn -0.617400 -0.487500 -0.617400 -vn 0.000000 1.000000 0.000000 -vn -0.687300 -0.234700 0.687400 -vn 0.687400 -0.234700 0.687300 -vn -0.251600 -0.234700 -0.938900 -vn 0.687400 -0.234700 -0.687300 -vn -0.938900 -0.234700 0.251600 -vn 0.251600 -0.234700 0.938900 -vn 0.938900 -0.234700 -0.251600 -vn -0.938900 -0.234700 -0.251600 -vn -0.251600 -0.234700 0.938900 -vn 0.938900 -0.234700 0.251600 -vn -0.687300 -0.234700 -0.687400 -vn 0.251600 -0.234700 -0.938900 -vn 0.239700 0.377400 0.894500 -vn 0.190100 0.678500 0.709600 -vn 0.894500 0.377400 -0.239700 -vn -0.894500 0.377400 -0.239700 -vn -0.239700 0.377400 0.894500 -vn 0.894500 0.377400 0.239700 -vn -0.654800 0.377400 -0.654800 -vn 0.239700 0.377400 -0.894500 -vn -0.654800 0.377400 0.654800 -vn 0.654800 0.377400 0.654800 -vn -0.239700 0.377400 -0.894500 -vn 0.654800 0.377400 -0.654800 -vn -0.894500 0.377400 0.239700 -vn 0.709600 0.678500 -0.190100 -vn -0.709600 0.678500 -0.190100 -vn -0.190100 0.678500 0.709600 -vn 0.709600 0.678500 0.190100 -vn -0.519400 0.678500 -0.519400 -vn 0.190100 0.678500 -0.709600 -vn -0.519400 0.678500 0.519400 -vn 0.519400 0.678500 0.519400 -vn -0.190100 0.678500 -0.709600 -vn 0.519400 0.678500 -0.519400 -vn -0.709600 0.678500 0.190100 -vn -0.687400 -0.234700 0.687300 -vn 0.687300 -0.234700 0.687300 -vn 0.687300 -0.234700 -0.687400 -vn -0.687400 -0.234700 -0.687300 -vn 0.000000 1.000000 0.000100 -vn 0.000000 1.000000 0.000200 -vn 0.000000 1.000000 -0.000200 -vn 0.000000 1.000000 -0.000100 -s off -f 2/1/1 4/2/1 3/3/1 -f 4/4/2 6/5/2 5/6/2 -f 6/7/3 8/8/3 7/9/3 -f 8/10/4 10/11/4 9/12/4 -f 10/13/5 12/14/5 11/15/5 -f 12/16/6 14/17/6 13/18/6 -f 14/19/7 16/20/7 15/21/7 -f 16/22/8 18/23/8 17/24/8 -f 18/25/9 20/26/9 19/27/9 -f 20/28/10 22/29/10 21/30/10 -f 24/31/11 2/32/11 1/33/11 -f 22/34/12 24/35/12 23/36/12 -f 5/37/13 7/9/13 28/38/13 -f 31/39/6 43/40/6 42/41/6 -f 21/42/14 23/36/14 36/43/14 -f 5/6/15 27/44/15 26/45/15 -f 21/30/16 35/46/16 34/47/16 -f 19/27/17 34/48/17 33/49/17 -f 17/24/18 33/50/18 32/51/18 -f 15/21/19 32/52/19 31/53/19 -f 13/18/20 31/54/20 30/55/20 -f 11/15/21 30/56/21 29/57/21 -f 7/58/22 9/12/22 29/59/22 -f 1/33/23 25/60/23 36/61/23 -f 1/62/24 3/3/24 26/63/24 -f 42/41/25 43/40/25 55/64/25 -f 28/65/3 40/66/3 39/67/3 -f 35/68/10 47/69/10 46/70/10 -f 32/71/7 44/72/7 43/40/7 -f 29/73/4 41/74/4 40/66/4 -f 35/68/12 36/75/12 48/76/12 -f 26/77/1 38/78/1 37/79/1 -f 33/80/8 45/81/8 44/72/8 -f 30/82/5 42/41/5 41/74/5 -f 36/75/11 25/83/11 37/79/11 -f 26/77/2 27/84/2 39/67/2 -f 34/85/9 46/86/9 45/81/9 -f 58/87/26 70/88/26 69/89/26 -f 40/66/27 52/90/27 51/91/27 -f 46/70/28 47/69/28 59/92/28 -f 44/72/29 56/93/29 55/94/29 -f 41/74/30 53/95/30 52/96/30 -f 48/76/31 60/97/31 59/98/31 -f 37/79/32 38/78/32 50/99/32 -f 45/81/33 57/100/33 56/101/33 -f 42/41/34 54/102/34 53/103/34 -f 37/79/35 49/104/35 60/105/35 -f 38/78/36 39/67/36 51/106/36 -f 46/86/37 58/107/37 57/108/37 -f 66/109/38 79/110/38 80/111/38 -f 54/112/39 55/113/39 67/114/39 -f 51/115/40 52/116/40 64/117/40 -f 59/118/41 71/119/41 70/120/41 -f 55/121/42 56/122/42 68/123/42 -f 53/124/43 65/125/43 64/117/43 -f 60/126/44 72/127/44 71/119/44 -f 50/128/45 62/129/45 61/130/45 -f 56/131/46 57/132/46 69/89/46 -f 54/133/47 66/109/47 65/125/47 -f 49/134/48 61/130/48 72/127/48 -f 51/135/49 63/136/49 62/129/49 -f 61/130/50 84/137/50 73/138/50 -f 69/89/51 76/139/51 77/140/51 -f 62/129/52 83/141/52 84/137/52 -f 72/127/53 73/138/53 74/142/53 -f 64/117/54 65/125/54 80/111/54 -f 67/114/55 68/123/55 77/140/55 -f 70/120/56 71/119/56 74/142/56 -f 64/117/57 81/143/57 82/144/57 -f 66/109/58 67/114/58 78/145/58 -f 69/89/59 70/88/59 75/146/59 -f 78/145/60 91/147/60 92/148/60 -f 63/136/61 82/144/61 83/141/61 -f 89/149/62 101/150/62 102/151/62 -f 76/139/60 75/146/60 88/152/60 -f 82/144/60 95/153/60 96/154/60 -f 84/137/60 86/155/60 85/156/60 -f 79/110/60 92/157/60 93/158/60 -f 77/140/60 76/139/60 89/159/60 -f 83/141/60 96/160/60 86/161/60 -f 73/138/60 85/162/60 87/163/60 -f 80/111/60 93/164/60 94/165/60 -f 77/140/60 90/166/60 91/167/60 -f 74/142/60 87/168/60 88/169/60 -f 81/143/60 94/170/60 95/171/60 -f 106/172/60 102/173/60 97/174/60 -f 96/175/63 108/176/63 98/177/63 -f 85/178/64 97/179/64 99/180/64 -f 93/181/65 105/182/65 106/183/65 -f 90/184/66 102/151/66 103/185/66 -f 88/186/67 87/187/67 99/180/67 -f 94/188/68 106/183/68 107/189/68 -f 91/190/69 103/185/69 104/191/69 -f 89/149/70 88/192/70 100/193/70 -f 95/194/71 107/189/71 108/176/71 -f 86/195/72 98/177/72 97/179/72 -f 92/196/73 104/191/73 105/182/73 -f 116/197/8 128/198/8 129/199/8 -f 117/200/74 153/201/74 152/202/74 -f 118/203/74 154/204/74 153/201/74 -f 119/205/74 155/206/74 154/207/74 -f 128/208/75 164/209/75 165/210/75 -f 113/211/5 125/212/5 126/213/5 -f 120/214/11 132/215/11 122/216/11 -f 109/217/2 121/218/2 123/219/2 -f 117/220/9 129/221/9 130/222/9 -f 114/223/6 126/224/6 127/225/6 -f 111/226/3 123/227/3 124/228/3 -f 118/229/10 130/230/10 131/231/10 -f 115/232/7 127/233/7 128/234/7 -f 112/235/4 124/236/4 125/237/4 -f 119/238/12 131/239/12 132/240/12 -f 110/241/1 122/242/1 121/243/1 -f 137/244/5 149/245/5 150/246/5 -f 136/247/4 148/248/4 149/245/4 -f 144/249/11 156/250/11 146/251/11 -f 133/252/1 146/251/1 145/253/1 -f 135/254/3 147/255/3 148/248/3 -f 143/256/12 155/206/12 156/250/12 -f 134/257/2 145/253/2 147/255/2 -f 142/258/10 154/207/10 155/206/10 -f 141/259/9 153/201/9 154/204/9 -f 140/260/8 152/202/8 153/201/8 -f 139/261/7 151/262/7 152/202/7 -f 138/263/6 150/246/6 151/262/6 -f 116/264/74 152/202/74 151/262/74 -f 115/265/74 151/262/74 150/246/74 -f 114/266/74 150/246/74 149/245/74 -f 112/235/74 113/267/74 149/245/74 -f 112/268/74 148/248/74 147/255/74 -f 111/269/74 147/255/74 145/253/74 -f 109/270/74 145/253/74 146/251/74 -f 120/214/74 110/271/74 146/251/74 -f 120/272/74 156/250/74 155/206/74 -f 143/256/60 144/249/60 24/35/60 -f 144/249/60 133/252/60 2/32/60 -f 133/252/60 134/257/60 4/2/60 -f 134/257/60 135/254/60 6/5/60 -f 135/254/60 136/247/60 8/8/60 -f 136/247/60 137/244/60 10/11/60 -f 137/244/60 138/263/60 12/14/60 -f 138/263/60 139/261/60 14/17/60 -f 139/261/60 140/260/60 16/20/60 -f 140/260/60 141/259/60 18/23/60 -f 141/259/60 142/273/60 20/26/60 -f 142/258/60 143/256/60 22/29/60 -f 159/274/3 171/275/3 172/276/3 -f 125/277/76 161/278/76 162/279/76 -f 132/280/77 168/281/77 158/282/77 -f 121/283/78 157/284/78 159/274/78 -f 129/285/79 165/210/79 166/286/79 -f 127/287/80 126/288/80 162/279/80 -f 123/289/81 159/274/81 160/290/81 -f 131/291/82 130/292/82 166/293/82 -f 127/294/83 163/295/83 164/209/83 -f 124/296/84 160/290/84 161/278/84 -f 132/297/85 131/298/85 167/299/85 -f 122/300/86 158/282/86 157/284/86 -f 175/301/87 174/302/87 186/303/87 -f 166/293/10 178/304/10 179/305/10 -f 163/295/7 175/301/7 176/306/7 -f 160/290/4 172/276/4 173/307/4 -f 167/299/12 179/305/12 180/308/12 -f 158/282/1 170/309/1 169/310/1 -f 164/209/8 176/306/8 177/311/8 -f 161/278/5 173/307/5 174/302/5 -f 168/281/11 180/308/11 170/309/11 -f 157/284/2 169/310/2 171/275/2 -f 165/210/9 177/311/9 178/312/9 -f 162/279/6 174/302/6 175/301/6 -f 186/303/88 198/313/88 199/314/88 -f 171/275/89 183/315/89 184/316/89 -f 179/305/90 178/304/90 190/317/90 -f 175/301/91 187/318/91 188/319/91 -f 172/276/92 184/320/92 185/321/92 -f 180/308/93 179/305/93 191/322/93 -f 170/309/94 182/323/94 181/324/94 -f 176/306/95 188/325/95 189/326/95 -f 173/307/96 185/327/96 186/328/96 -f 170/309/97 180/308/97 192/329/97 -f 171/275/98 169/310/98 181/330/98 -f 177/311/99 189/331/99 190/332/99 -f 203/333/74 199/334/74 195/335/74 -f 183/315/100 195/336/100 196/337/100 -f 190/317/101 202/338/101 203/339/101 -f 187/318/102 199/340/102 200/341/102 -f 185/321/103 184/320/103 196/342/103 -f 192/343/104 191/322/104 203/344/104 -f 181/324/105 182/323/105 194/345/105 -f 188/325/106 200/346/106 201/347/106 -f 186/328/107 185/327/107 197/348/107 -f 182/349/108 192/329/108 204/350/108 -f 181/330/109 193/351/109 195/352/109 -f 190/332/110 189/331/110 201/353/110 -f 1/62/1 2/1/1 3/3/1 -f 3/354/2 4/4/2 5/6/2 -f 5/37/3 6/7/3 7/9/3 -f 7/58/4 8/10/4 9/12/4 -f 9/355/5 10/13/5 11/15/5 -f 11/356/6 12/16/6 13/18/6 -f 13/357/7 14/19/7 15/21/7 -f 15/358/8 16/22/8 17/24/8 -f 17/359/9 18/25/9 19/27/9 -f 19/360/10 20/28/10 21/30/10 -f 23/361/11 24/31/11 1/33/11 -f 21/42/12 22/34/12 23/36/12 -f 27/362/13 5/37/13 28/38/13 -f 30/82/6 31/39/6 42/41/6 -f 35/363/14 21/42/14 36/43/14 -f 3/354/15 5/6/15 26/45/15 -f 19/360/16 21/30/16 34/47/16 -f 17/359/17 19/27/17 33/49/17 -f 15/358/18 17/24/18 32/51/18 -f 13/357/19 15/21/19 31/53/19 -f 11/356/20 13/18/20 30/55/20 -f 9/355/21 11/15/21 29/57/21 -f 28/364/22 7/58/22 29/59/22 -f 23/361/23 1/33/23 36/61/23 -f 25/365/24 1/62/24 26/63/24 -f 54/366/25 42/41/25 55/64/25 -f 27/84/3 28/65/3 39/67/3 -f 34/367/10 35/68/10 46/70/10 -f 31/39/7 32/71/7 43/40/7 -f 28/65/4 29/73/4 40/66/4 -f 47/69/12 35/68/12 48/76/12 -f 25/83/1 26/77/1 37/79/1 -f 32/71/8 33/80/8 44/72/8 -f 29/73/5 30/82/5 41/74/5 -f 48/76/11 36/75/11 37/79/11 -f 38/78/2 26/77/2 39/67/2 -f 33/80/9 34/85/9 45/81/9 -f 57/368/26 58/87/26 69/89/26 -f 39/67/27 40/66/27 51/91/27 -f 58/369/28 46/70/28 59/92/28 -f 43/40/29 44/72/29 55/94/29 -f 40/66/30 41/74/30 52/96/30 -f 47/69/31 48/76/31 59/98/31 -f 49/370/32 37/79/32 50/99/32 -f 44/72/33 45/81/33 56/101/33 -f 41/74/34 42/41/34 53/103/34 -f 48/76/35 37/79/35 60/105/35 -f 50/371/36 38/78/36 51/106/36 -f 45/81/37 46/86/37 57/108/37 -f 65/125/38 66/109/38 80/111/38 -f 66/109/39 54/112/39 67/114/39 -f 63/136/40 51/115/40 64/117/40 -f 58/372/41 59/118/41 70/120/41 -f 67/114/42 55/121/42 68/123/42 -f 52/373/43 53/124/43 64/117/43 -f 59/374/44 60/126/44 71/119/44 -f 49/375/45 50/128/45 61/130/45 -f 68/123/46 56/131/46 69/89/46 -f 53/376/47 54/133/47 65/125/47 -f 60/377/48 49/134/48 72/127/48 -f 50/378/49 51/135/49 62/129/49 -f 72/127/50 61/130/50 73/138/50 -f 68/123/51 69/89/51 77/140/51 -f 61/130/52 62/129/52 84/137/52 -f 71/119/53 72/127/53 74/142/53 -f 81/143/54 64/117/54 80/111/54 -f 78/145/55 67/114/55 77/140/55 -f 75/379/56 70/120/56 74/142/56 -f 63/136/57 64/117/57 82/144/57 -f 79/110/58 66/109/58 78/145/58 -f 76/139/59 69/89/59 75/146/59 -f 79/110/60 78/145/60 92/148/60 -f 62/129/61 63/136/61 83/141/61 -f 90/184/62 89/149/62 102/151/62 -f 89/380/60 76/139/60 88/152/60 -f 83/141/60 82/144/60 96/154/60 -f 73/138/60 84/137/60 85/156/60 -f 80/111/60 79/110/60 93/158/60 -f 90/381/60 77/140/60 89/159/60 -f 84/137/60 83/141/60 86/161/60 -f 74/142/60 73/138/60 87/163/60 -f 81/143/60 80/111/60 94/165/60 -f 78/145/60 77/140/60 91/167/60 -f 75/379/60 74/142/60 88/169/60 -f 82/144/60 81/143/60 95/171/60 -f 97/174/60 98/382/60 108/383/60 -f 108/383/60 107/384/60 106/172/60 -f 106/172/60 105/385/60 104/386/60 -f 104/386/60 103/387/60 102/173/60 -f 102/173/60 101/388/60 97/174/60 -f 100/389/60 99/390/60 97/174/60 -f 97/174/60 108/383/60 106/172/60 -f 106/172/60 104/386/60 102/173/60 -f 101/388/60 100/389/60 97/174/60 -f 86/195/63 96/175/63 98/177/63 -f 87/187/64 85/178/64 99/180/64 -f 94/188/65 93/181/65 106/183/65 -f 91/190/66 90/184/66 103/185/66 -f 100/391/67 88/186/67 99/180/67 -f 95/194/68 94/188/68 107/189/68 -f 92/196/69 91/190/69 104/191/69 -f 101/150/70 89/149/70 100/193/70 -f 96/175/71 95/194/71 108/176/71 -f 85/178/72 86/195/72 97/179/72 -f 93/181/73 92/196/73 105/182/73 -f 117/200/8 116/197/8 129/199/8 -f 116/197/74 117/200/74 152/202/74 -f 117/220/74 118/203/74 153/201/74 -f 118/229/74 119/205/74 154/207/74 -f 129/392/111 128/208/111 165/210/111 -f 114/266/5 113/211/5 126/213/5 -f 110/271/11 120/214/11 122/216/11 -f 111/269/2 109/217/2 123/219/2 -f 118/203/9 117/220/9 130/222/9 -f 115/265/6 114/223/6 127/225/6 -f 112/268/3 111/226/3 124/228/3 -f 119/205/10 118/229/10 131/231/10 -f 116/264/7 115/232/7 128/234/7 -f 113/267/4 112/235/4 125/237/4 -f 120/272/12 119/238/12 132/240/12 -f 109/270/1 110/241/1 121/243/1 -f 138/263/5 137/244/5 150/246/5 -f 137/244/4 136/247/4 149/245/4 -f 133/252/11 144/249/11 146/251/11 -f 134/257/1 133/252/1 145/253/1 -f 136/247/3 135/254/3 148/248/3 -f 144/249/12 143/256/12 156/250/12 -f 135/254/2 134/257/2 147/255/2 -f 143/256/10 142/258/10 155/206/10 -f 142/273/9 141/259/9 154/204/9 -f 141/259/8 140/260/8 153/201/8 -f 140/260/7 139/261/7 152/202/7 -f 139/261/6 138/263/6 151/262/6 -f 115/232/74 116/264/74 151/262/74 -f 114/223/74 115/265/74 150/246/74 -f 113/211/74 114/266/74 149/245/74 -f 148/248/74 112/235/74 149/245/74 -f 111/226/74 112/268/74 147/255/74 -f 109/217/74 111/269/74 145/253/74 -f 110/241/74 109/270/74 146/251/74 -f 156/250/74 120/214/74 146/251/74 -f 119/238/74 120/272/74 155/206/74 -f 22/34/60 143/256/60 24/35/60 -f 24/31/60 144/249/60 2/32/60 -f 2/1/60 133/252/60 4/2/60 -f 4/4/60 134/257/60 6/5/60 -f 6/7/60 135/254/60 8/8/60 -f 8/10/60 136/247/60 10/11/60 -f 10/13/60 137/244/60 12/14/60 -f 12/16/60 138/263/60 14/17/60 -f 14/19/60 139/261/60 16/20/60 -f 16/22/60 140/260/60 18/23/60 -f 18/25/60 141/259/60 20/26/60 -f 20/28/60 142/258/60 22/29/60 -f 160/290/3 159/274/3 172/276/3 -f 126/393/112 125/277/112 162/279/112 -f 122/394/77 132/280/77 158/282/77 -f 123/395/113 121/283/113 159/274/113 -f 130/396/79 129/285/79 166/286/79 -f 163/295/80 127/287/80 162/279/80 -f 124/397/81 123/289/81 160/290/81 -f 167/299/82 131/291/82 166/293/82 -f 128/398/83 127/294/83 164/209/83 -f 125/399/84 124/296/84 161/278/84 -f 168/281/114 132/297/114 167/299/114 -f 121/400/86 122/300/86 157/284/86 -f 187/401/87 175/301/87 186/303/87 -f 167/299/10 166/293/10 179/305/10 -f 164/209/7 163/295/7 176/306/7 -f 161/278/4 160/290/4 173/307/4 -f 168/281/12 167/299/12 180/308/12 -f 157/284/1 158/282/1 169/310/1 -f 165/210/8 164/209/8 177/311/8 -f 162/279/5 161/278/5 174/302/5 -f 158/282/11 168/281/11 170/309/11 -f 159/274/2 157/284/2 171/275/2 -f 166/286/9 165/210/9 178/312/9 -f 163/295/6 162/279/6 175/301/6 -f 187/401/88 186/303/88 199/314/88 -f 172/276/89 171/275/89 184/316/89 -f 191/402/90 179/305/90 190/317/90 -f 176/306/91 175/301/91 188/319/91 -f 173/307/92 172/276/92 185/321/92 -f 192/343/93 180/308/93 191/322/93 -f 169/310/94 170/309/94 181/324/94 -f 177/311/95 176/306/95 189/326/95 -f 174/302/96 173/307/96 186/328/96 -f 182/349/97 170/309/97 192/329/97 -f 183/403/98 171/275/98 181/330/98 -f 178/312/99 177/311/99 190/332/99 -f 195/335/115 193/404/115 203/333/115 -f 194/405/116 204/406/116 203/333/116 -f 203/333/74 202/407/74 201/408/74 -f 201/408/117 200/409/117 199/334/117 -f 199/334/118 198/410/118 197/411/118 -f 197/411/74 196/412/74 199/334/74 -f 193/404/117 194/405/117 203/333/117 -f 203/333/74 201/408/74 199/334/74 -f 199/334/74 196/412/74 195/335/74 -f 184/316/100 183/315/100 196/337/100 -f 191/402/101 190/317/101 203/339/101 -f 188/319/102 187/318/102 200/341/102 -f 197/413/103 185/321/103 196/342/103 -f 204/414/104 192/343/104 203/344/104 -f 193/415/105 181/324/105 194/345/105 -f 189/326/106 188/325/106 201/347/106 -f 198/416/107 186/328/107 197/348/107 -f 194/417/108 182/349/108 204/350/108 -f 183/403/109 181/330/109 195/352/109 -f 202/418/110 190/332/110 201/353/110 diff --git a/src/main/resources/assets/hbm/models/radar_head.obj b/src/main/resources/assets/hbm/models/radar_head.obj deleted file mode 100644 index 346cfe68a..000000000 --- a/src/main/resources/assets/hbm/models/radar_head.obj +++ /dev/null @@ -1,404 +0,0 @@ -# Blender v2.76 (sub 0) OBJ File: 'radar_head.blend' -# www.blender.org -o Torus -v 0.578906 1.584721 -0.000000 -v 0.601365 1.806898 -0.000000 -v 0.546068 1.962747 -0.000000 -v 0.361454 1.273760 -0.000000 -v 0.487268 1.381080 -0.000000 -v 0.548050 1.592989 -0.242643 -v 0.571688 1.814850 -0.233375 -v 0.519476 1.969872 -0.209110 -v 0.334863 1.280885 -0.209110 -v 0.457591 1.389032 -0.233375 -v 0.457584 1.617229 -0.468750 -v 0.484678 1.838164 -0.450845 -v 0.441513 1.990763 -0.403970 -v 0.256899 1.301775 -0.403970 -v 0.370581 1.412347 -0.450845 -v 0.313675 1.655789 -0.662913 -v 0.346265 1.875252 -0.637592 -v 0.317491 2.023994 -0.571300 -v 0.132877 1.335007 -0.571300 -v 0.232168 1.449434 -0.637592 -v 0.126128 1.706043 -0.811899 -v 0.165882 1.923585 -0.780887 -v 0.155863 2.067302 -0.699697 -v -0.028751 1.378315 -0.699697 -v 0.051785 1.497768 -0.780887 -v 0.126128 1.706043 0.811899 -v 0.165882 1.923585 0.780887 -v 0.155863 2.067302 0.699697 -v -0.028751 1.378315 0.699697 -v 0.051785 1.497768 0.780887 -v 0.313674 1.655790 0.662913 -v 0.346265 1.875252 0.637592 -v 0.317491 2.023994 0.571301 -v 0.132877 1.335007 0.571301 -v 0.232168 1.449434 0.637592 -v 0.457584 1.617229 0.468750 -v 0.484678 1.838164 0.450845 -v 0.441513 1.990763 0.403970 -v 0.256899 1.301775 0.403970 -v 0.370581 1.412347 0.450845 -v 0.548050 1.592989 0.242643 -v 0.571688 1.814850 0.233374 -v 0.519476 1.969872 0.209110 -v 0.334863 1.280885 0.209110 -v 0.457591 1.389032 0.233374 -v -0.100000 1.000000 0.100000 -v -0.100000 1.200000 0.100000 -v -0.100000 1.000000 -0.100000 -v -0.100000 1.200000 -0.100000 -v 0.100000 1.000000 0.100000 -v 0.100000 1.200000 0.100000 -v 0.100000 1.000000 -0.100000 -v 0.100000 1.200000 -0.100000 -v -0.500000 1.550000 0.050000 -v -0.500000 1.700000 0.050000 -v -0.500000 1.700000 -0.050000 -v -0.500000 1.550000 -0.050000 -v -0.450000 1.518750 -0.025000 -v -0.450000 1.881250 -0.025000 -v -0.450000 1.518750 0.025000 -v -0.450000 1.881250 0.025000 -v -0.467678 1.518750 0.017678 -v -0.467678 1.881250 0.017678 -v -0.475000 1.518750 -0.000000 -v -0.475000 1.881250 -0.000000 -v -0.467678 1.518750 -0.017678 -v -0.467678 1.881250 -0.017678 -v -0.400000 1.518750 -0.025000 -v -0.400000 1.881250 -0.025000 -v -0.382322 1.518750 -0.017678 -v -0.382322 1.881250 -0.017678 -v -0.375000 1.518750 0.000000 -v -0.375000 1.881250 0.000000 -v -0.382322 1.518750 0.017678 -v -0.382322 1.881250 0.017678 -v -0.400000 1.518750 0.025000 -v -0.400000 1.881250 0.025000 -vt 0.749477 0.177462 -vt 0.851663 0.177461 -vt 0.849712 0.270681 -vt 0.751428 0.270681 -vt 0.844603 0.339539 -vt 0.844602 0.015383 -vt 0.849712 0.084242 -vt 0.751428 0.084242 -vt 0.718710 0.177464 -vt 0.716756 0.270683 -vt 0.618472 0.270681 -vt 0.711645 0.339542 -vt 0.623580 0.339539 -vt 0.623588 0.015383 -vt 0.711653 0.015385 -vt 0.716761 0.084244 -vt 0.616523 0.177461 -vt 0.271242 0.713845 -vt 0.373429 0.713845 -vt 0.371477 0.807065 -vt 0.366368 0.875923 -vt 0.278303 0.875923 -vt 0.366368 0.551767 -vt 0.371477 0.620625 -vt 0.273194 0.620625 -vt 0.851663 0.532386 -vt 0.849712 0.625606 -vt 0.751428 0.625606 -vt 0.844603 0.694464 -vt 0.756538 0.694464 -vt 0.844603 0.370308 -vt 0.849712 0.439167 -vt 0.751428 0.439167 -vt 0.984617 0.177461 -vt 0.982665 0.270681 -vt 0.884382 0.270681 -vt 0.977556 0.339539 -vt 0.977556 0.015383 -vt 0.982665 0.084242 -vt 0.884382 0.084242 -vt 0.882430 0.177461 -vt 0.117570 0.599110 -vt 0.115619 0.692329 -vt 0.017335 0.692329 -vt 0.110509 0.761188 -vt 0.022444 0.761188 -vt 0.022444 0.437032 -vt 0.110510 0.437032 -vt 0.115619 0.505890 -vt 0.017335 0.505890 -vt 0.718710 0.532386 -vt 0.716759 0.625606 -vt 0.618475 0.625606 -vt 0.711649 0.694464 -vt 0.623584 0.694465 -vt 0.711649 0.370308 -vt 0.716758 0.439167 -vt 0.618475 0.439167 -vt 0.616523 0.532386 -vt 0.506382 0.713845 -vt 0.504430 0.807065 -vt 0.406147 0.807065 -vt 0.499321 0.875923 -vt 0.411256 0.875923 -vt 0.499321 0.551767 -vt 0.504431 0.620625 -vt 0.406147 0.620625 -vt 0.404195 0.713845 -vt 0.041881 0.130470 -vt 0.086176 0.059678 -vt 0.107053 0.343634 -vt 0.213977 0.130470 -vt 0.169683 0.059678 -vt 0.240475 0.015383 -vt 0.502249 0.098891 -vt 0.502249 0.015383 -vt 0.585757 0.015383 -vt 0.015383 0.015383 -vt 0.585757 0.098891 -vt 0.585757 0.182399 -vt 0.502249 0.182399 -vt 0.107052 0.406265 -vt 0.148806 0.343634 -vt 0.182027 0.396728 -vt 0.564880 0.449753 -vt 0.523126 0.449753 -vt 0.469735 0.433464 -vt 0.271242 0.406604 -vt 0.340291 0.359638 -vt 0.471482 0.120906 -vt 0.445258 0.204975 -vt 0.334736 0.180122 -vt 0.292959 0.252428 -vt 0.306677 0.283195 -vt 0.452868 0.347029 -vt 0.179652 0.437032 -vt 0.187033 0.440089 -vt 0.187033 0.454851 -vt 0.685335 0.876611 -vt 0.677346 0.876608 -vt 0.677397 0.725251 -vt 0.669357 0.876605 -vt 0.669408 0.725249 -vt 0.632552 0.725236 -vt 0.653429 0.725243 -vt 0.653378 0.876600 -vt 0.661367 0.876603 -vt 0.661418 0.725246 -vt 0.706212 0.876618 -vt 0.685387 0.725254 -vt 0.632501 0.876593 -vt 0.624512 0.876590 -vt 0.624562 0.725234 -vt 0.616523 0.876588 -vt 0.616573 0.725231 -vt 0.722190 0.876623 -vt 0.714201 0.876621 -vt 0.714253 0.725264 -vt 0.706263 0.725261 -vt 0.300577 0.521000 -vt 0.460098 0.521000 -vt 0.271242 0.125882 -vt 0.312920 0.015383 -vt 0.471482 0.032841 -vt 0.756538 0.339540 -vt 0.756537 0.015383 -vt 0.618477 0.084242 -vt 0.273193 0.807065 -vt 0.278303 0.551767 -vt 0.749477 0.532386 -vt 0.756538 0.370308 -vt 0.889491 0.339539 -vt 0.889491 0.015383 -vt 0.015383 0.599110 -vt 0.623584 0.370308 -vt 0.411256 0.551767 -vt 0.073832 0.396728 -vt 0.148806 0.406265 -vt 0.179652 0.457908 -vt 0.158775 0.457908 -vt 0.151394 0.454851 -vt 0.148337 0.447470 -vt 0.151394 0.440089 -vt 0.158775 0.437032 -vt 0.190091 0.447470 -vt 0.722242 0.725267 -vn 0.986600 -0.099700 -0.128900 -vn 0.936900 0.332400 -0.107800 -vn 0.645200 -0.756400 -0.107800 -vn 0.904300 -0.406900 -0.128900 -vn 0.922200 -0.082500 -0.377800 -vn 0.883000 0.346900 -0.316100 -vn 0.591300 -0.741900 -0.316100 -vn 0.839900 -0.389700 -0.377800 -vn 0.797700 -0.049100 -0.601000 -vn 0.778900 0.374800 -0.502900 -vn 0.487100 -0.714000 -0.502900 -vn 0.715400 -0.356300 -0.601000 -vn 0.621700 -0.002000 -0.783300 -vn 0.631600 0.414300 -0.655300 -vn 0.339900 -0.674600 -0.655300 -vn 0.539400 -0.309200 -0.783300 -vn 0.621700 -0.002000 0.783300 -vn 0.631600 0.414300 0.655300 -vn 0.339900 -0.674600 0.655300 -vn 0.539400 -0.309200 0.783300 -vn 0.797700 -0.049100 0.601000 -vn 0.778900 0.374800 0.502900 -vn 0.487100 -0.714000 0.502900 -vn 0.715400 -0.356300 0.601000 -vn 0.922200 -0.082500 0.377800 -vn 0.883000 0.346900 0.316100 -vn 0.591300 -0.741900 0.316100 -vn 0.839900 -0.389700 0.377800 -vn 0.986600 -0.099700 0.128900 -vn 0.936900 0.332400 0.107800 -vn 0.645200 -0.756400 0.107800 -vn 0.904300 -0.406900 0.128900 -vn -0.124000 0.000000 -0.992300 -vn 0.000000 0.000000 1.000000 -vn 1.000000 0.000000 0.000000 -vn 0.000000 0.000000 -1.000000 -vn 0.000000 1.000000 0.000000 -vn -1.000000 0.000000 0.000000 -vn -0.124000 0.000000 0.992300 -vn -0.808700 -0.588200 0.000000 -vn 0.780900 0.624700 0.000000 -vn 0.000000 0.948300 0.317500 -vn -0.236400 0.951600 -0.196600 -vn 0.421300 0.000000 -0.906900 -vn 0.421300 0.000000 0.906900 -vn -0.382700 0.000000 0.923900 -vn -0.923900 0.000000 0.382700 -vn -0.382700 0.000000 -0.923900 -vn -0.923900 0.000000 -0.382700 -vn 0.382700 0.000000 -0.923900 -vn 0.923900 0.000000 -0.382700 -vn 0.923900 0.000000 0.382700 -vn 0.382700 0.000000 0.923900 -vn -0.483500 -0.483500 -0.729600 -vn 0.654900 -0.677600 -0.334700 -vn -0.483500 -0.483500 0.729600 -vn 0.654900 -0.677600 0.334700 -vn -0.236400 0.951600 0.196600 -vn 0.000000 0.948300 -0.317500 -s off -f 1/1/1 6/2/1 7/3/1 -f 2/4/2 7/3/2 8/5/2 -f 9/6/3 10/7/3 5/8/3 -f 5/8/4 10/7/4 6/2/4 -f 11/9/5 12/10/5 7/11/5 -f 12/10/6 13/12/6 8/13/6 -f 9/14/7 14/15/7 15/16/7 -f 15/16/8 11/9/8 6/17/8 -f 11/18/9 16/19/9 17/20/9 -f 17/20/10 18/21/10 13/22/10 -f 19/23/11 20/24/11 15/25/11 -f 20/24/12 16/19/12 11/18/12 -f 21/26/13 22/27/13 17/28/13 -f 22/27/14 23/29/14 18/30/14 -f 24/31/15 25/32/15 20/33/15 -f 20/33/16 25/32/16 21/26/16 -f 31/34/17 32/35/17 27/36/17 -f 27/36/18 32/35/18 33/37/18 -f 34/38/19 35/39/19 30/40/19 -f 35/39/20 31/34/20 26/41/20 -f 36/42/21 37/43/21 32/44/21 -f 37/43/22 38/45/22 33/46/22 -f 34/47/23 39/48/23 40/49/23 -f 35/50/24 40/49/24 36/42/24 -f 41/51/25 42/52/25 37/53/25 -f 42/52/26 43/54/26 38/55/26 -f 44/56/27 45/57/27 40/58/27 -f 45/57/28 41/51/28 36/59/28 -f 1/60/29 2/61/29 42/62/29 -f 2/61/30 3/63/30 43/64/30 -f 4/65/31 5/66/31 45/67/31 -f 5/66/32 1/60/32 41/68/32 -f 49/69/33 48/70/33 57/71/33 -f 47/72/34 46/73/34 50/74/34 -f 51/75/35 50/76/35 52/77/35 -f 48/70/36 49/69/36 52/78/36 -f 53/79/37 49/80/37 47/81/37 -f 56/82/38 57/71/38 54/83/38 -f 47/72/39 55/84/39 54/83/39 -f 46/73/40 54/83/40 57/71/40 -f 49/80/41 56/85/41 55/86/41 -f 14/87/42 49/88/42 53/89/42 -f 39/90/43 44/91/43 51/92/43 -f 50/93/44 51/92/44 44/91/44 -f 52/94/45 9/95/45 53/89/45 -f 77/96/37 75/97/37 71/98/37 -f 61/99/46 63/100/46 62/101/46 -f 63/100/47 65/102/47 64/103/47 -f 68/104/36 58/105/36 59/106/36 -f 67/107/48 59/106/48 58/105/48 -f 65/102/49 67/107/49 66/108/49 -f 77/109/34 61/99/34 60/110/34 -f 69/111/50 71/112/50 70/113/50 -f 71/112/51 73/114/51 72/115/51 -f 73/116/52 75/117/52 74/118/52 -f 75/117/53 77/109/53 76/119/53 -f 49/88/54 14/87/54 52/120/54 -f 9/121/55 52/120/55 14/87/55 -f 47/122/56 50/123/56 39/90/56 -f 39/90/57 50/123/57 44/124/57 -f 2/4/1 1/1/1 7/3/1 -f 3/125/2 2/4/2 8/5/2 -f 4/126/3 9/6/3 5/8/3 -f 1/1/4 5/8/4 6/2/4 -f 6/17/5 11/9/5 7/11/5 -f 7/11/6 12/10/6 8/13/6 -f 10/127/7 9/14/7 15/16/7 -f 10/127/8 15/16/8 6/17/8 -f 12/128/9 11/18/9 17/20/9 -f 12/128/10 17/20/10 13/22/10 -f 14/129/11 19/23/11 15/25/11 -f 15/25/12 20/24/12 11/18/12 -f 16/130/13 21/26/13 17/28/13 -f 17/28/14 22/27/14 18/30/14 -f 19/131/15 24/31/15 20/33/15 -f 16/130/16 20/33/16 21/26/16 -f 26/41/17 31/34/17 27/36/17 -f 28/132/18 27/36/18 33/37/18 -f 29/133/19 34/38/19 30/40/19 -f 30/40/20 35/39/20 26/41/20 -f 31/134/21 36/42/21 32/44/21 -f 32/44/22 37/43/22 33/46/22 -f 35/50/23 34/47/23 40/49/23 -f 31/134/24 35/50/24 36/42/24 -f 36/59/25 41/51/25 37/53/25 -f 37/53/26 42/52/26 38/55/26 -f 39/135/27 44/56/27 40/58/27 -f 40/58/28 45/57/28 36/59/28 -f 41/68/29 1/60/29 42/62/29 -f 42/62/30 2/61/30 43/64/30 -f 44/136/31 4/65/31 45/67/31 -f 45/67/32 5/66/32 41/68/32 -f 56/137/33 49/69/33 57/71/33 -f 53/79/35 51/75/35 52/77/35 -f 51/75/37 53/79/37 47/81/37 -f 55/138/38 56/82/38 54/83/38 -f 46/73/39 47/72/39 54/83/39 -f 48/70/40 46/73/40 57/71/40 -f 47/81/41 49/80/41 55/86/41 -f 9/95/58 14/87/58 53/89/58 -f 47/122/59 39/90/59 51/92/59 -f 71/98/37 69/139/37 77/96/37 -f 59/140/37 67/141/37 65/142/37 -f 65/142/37 63/143/37 61/144/37 -f 61/144/37 77/96/37 69/139/37 -f 75/97/37 73/145/37 71/98/37 -f 69/139/37 59/140/37 61/144/37 -f 65/142/37 61/144/37 59/140/37 -f 60/110/46 61/99/46 62/101/46 -f 62/101/47 63/100/47 64/103/47 -f 69/111/36 68/104/36 59/106/36 -f 66/108/48 67/107/48 58/105/48 -f 64/103/49 65/102/49 66/108/49 -f 76/119/34 77/109/34 60/110/34 -f 68/104/50 69/111/50 70/113/50 -f 70/113/51 71/112/51 72/115/51 -f 72/146/52 73/116/52 74/118/52 -f 74/118/53 75/117/53 76/119/53 diff --git a/src/main/resources/assets/hbm/models/weapons/pch.obj b/src/main/resources/assets/hbm/models/weapons/pch.obj deleted file mode 100644 index e3634a298..000000000 --- a/src/main/resources/assets/hbm/models/weapons/pch.obj +++ /dev/null @@ -1,245 +0,0 @@ -# Blender v2.76 (sub 0) OBJ File: 'pch.blend' -# www.blender.org -o ponycum_Cylinder.003 -v 0.000000 -0.457474 -0.076488 -v 0.000000 0.498621 -0.076488 -v 0.063454 0.498621 -0.038244 -v 0.063454 -0.457474 -0.038244 -v 0.063454 0.498621 0.038244 -v 0.063454 -0.457474 0.038244 -v 0.000000 0.498621 0.076488 -v 0.000000 -0.457474 0.076488 -v -0.063454 0.498621 0.038244 -v -0.063454 -0.457474 0.038244 -v -0.063454 0.498621 -0.038244 -v -0.063454 -0.457474 -0.038244 -v 0.244563 0.705111 -0.261231 -v -0.244563 0.705111 -0.261231 -v -0.244563 0.821944 -0.260374 -v 0.244563 0.821944 -0.260374 -v 0.244661 0.821816 0.260308 -v -0.244661 0.821816 0.260308 -v -0.244661 0.704698 0.259606 -v 0.244661 0.704698 0.259606 -v 0.300312 0.880010 -0.277019 -v 0.300312 0.650163 -0.277880 -v 0.244563 0.705233 -0.277878 -v 0.244563 0.822066 -0.277021 -v -0.300312 0.880010 -0.277019 -v -0.300312 1.041927 -0.113884 -v 0.300312 1.041927 -0.113884 -v -0.300312 1.041066 0.115963 -v 0.300312 1.041066 0.115963 -v -0.300312 0.877932 0.277880 -v 0.300312 0.877931 0.277880 -v -0.300312 0.648084 0.277019 -v 0.300312 0.648084 0.277019 -v 0.244662 0.704449 0.277099 -v -0.244662 0.704449 0.277099 -v -0.300312 0.486167 0.113884 -v 0.300312 0.486167 0.113884 -v -0.300312 0.650163 -0.277880 -v -0.300312 0.487028 -0.115963 -v 0.300312 0.487028 -0.115963 -v -0.244662 0.821567 0.277801 -v -0.244662 0.704698 0.259606 -v -0.244662 0.821816 0.260308 -v 0.244662 0.821567 0.277801 -v 0.244662 0.821816 0.260308 -v 0.244662 0.704698 0.259606 -v -0.244563 0.705233 -0.277878 -v -0.244563 0.705111 -0.261231 -v 0.244563 0.705111 -0.261231 -v -0.244563 0.822066 -0.277021 -v 0.244563 0.821944 -0.260374 -v -0.244563 0.821944 -0.260374 -vt 0.625000 0.687500 -vt 0.625000 0.593750 -vt 1.000000 0.593750 -vt 0.625000 0.500000 -vt 1.000000 0.500000 -vt 1.000000 0.687500 -vt 0.500000 0.250000 -vt 0.437500 0.312500 -vt 0.437500 0.250000 -vt 0.687500 0.781250 -vt 1.000000 0.781250 -vt 1.000000 0.906250 -vt 0.687500 0.906250 -vt 0.468750 1.000000 -vt 0.375000 0.781250 -vt 0.437500 0.218750 -vt 0.500000 0.218750 -vt 0.718750 0.218750 -vt 0.781250 0.250000 -vt 0.781250 0.218750 -vt 1.000000 0.218750 -vt 0.718750 0.250000 -vt 1.000000 0.187500 -vt 0.718750 0.187500 -vt 0.781250 0.187500 -vt 0.500000 0.187500 -vt 0.468750 0.250000 -vt 0.500000 0.312500 -vt 0.468750 0.312500 -vt 0.906250 1.000000 -vt 0.781250 1.000000 -vt 0.781250 0.687500 -vt 0.906250 0.687500 -vt 0.468750 0.687500 -vt 0.593750 0.687500 -vt 0.593750 1.000000 -vt 0.375000 0.906250 -vt 1.000000 0.250000 -vt 0.437500 0.187500 -vt 0.437500 0.093750 -vt 1.000000 0.093750 -vt 1.000000 0.125000 -vt 1.000000 0.156250 -vt 0.437500 0.156250 -vt 1.000000 -0.000000 -vt 1.000000 0.031250 -vt 0.437500 0.031250 -vt 1.000000 0.062500 -vt 0.437500 0.062500 -vt 0.375000 0.875000 -vt 0.343750 0.843750 -vt 0.343750 0.781250 -vt 0.000000 0.750000 -vt 0.000000 0.625000 -vt 0.375000 0.625000 -vt 0.000000 0.500000 -vt 0.375000 0.500000 -vt 0.000000 0.375000 -vt -0.000000 0.250000 -vt 0.375000 0.250000 -vt 0.343750 0.281250 -vt -0.000000 0.125000 -vt 0.375000 0.125000 -vt 0.000000 0.000000 -vt 0.375000 0.000000 -vt 0.000203 0.999797 -vt 0.000000 0.875000 -vt 0.375000 0.375000 -vt 0.343750 0.343750 -vt 0.031250 0.281250 -vt 0.031250 0.343750 -vt 0.375000 0.750000 -vt 0.031250 0.781250 -vt 0.031250 0.843750 -vt 0.437500 0.125000 -vt 0.437500 0.000000 -vt 0.375000 1.000000 -vn 0.000000 0.007300 -1.000000 -vn 0.000000 -0.006000 1.000000 -vn 0.000000 -1.000000 0.000000 -vn -1.000000 -0.000000 0.000000 -vn 1.000000 -0.000000 0.000000 -vn 0.000000 -0.999900 -0.014300 -vn 0.000000 0.999900 0.014300 -vn 0.000000 1.000000 0.007300 -vn -0.000000 -1.000000 -0.007300 -vn 0.000000 0.000000 -1.000000 -vn 0.870700 0.000000 -0.491800 -vn 0.870700 -0.000000 0.491800 -vn -0.000000 -0.000000 1.000000 -vn -0.870700 -0.000000 0.491800 -vn -0.870700 0.000000 -0.491800 -vn 0.000800 -0.379600 -0.925200 -vn 0.003600 0.003700 -1.000000 -vn -0.001200 0.002100 -1.000000 -vn 0.001000 0.385300 -0.922800 -vn 0.000000 0.925300 -0.379200 -vn 0.000000 0.922400 0.386100 -vn -0.000500 0.379500 0.925200 -vn 0.000600 -0.385600 0.922700 -vn -0.000600 -0.385600 0.922700 -vn -0.000700 -0.002700 1.000000 -vn 0.000000 -0.925300 0.379200 -vn 0.000000 -0.922400 -0.386100 -vn -0.000800 -0.379600 -0.925200 -vn 0.000500 0.379500 0.925200 -vn 0.002300 -0.003700 1.000000 -vn 0.000700 -0.002700 1.000000 -vn -0.002300 -0.003700 1.000000 -vn -0.001000 0.385300 -0.922800 -vn 0.001200 0.002100 -1.000000 -vn -0.003600 0.003700 -1.000000 -s off -f 14/1/1 15/2/1 16/3/1 -f 18/2/2 19/4/2 20/5/2 -f 13/6/1 14/1/1 16/3/1 -f 17/3/2 18/2/2 20/5/2 -f 4/7/3 10/8/3 12/9/3 -f 36/10/4 28/11/4 26/12/4 -f 29/13/5 33/14/5 40/15/5 -f 41/7/5 35/9/5 42/16/5 -f 41/7/6 43/17/6 45/18/6 -f 34/19/7 46/20/7 42/21/7 -f 44/22/4 45/18/4 46/20/4 -f 47/23/8 48/21/8 49/20/8 -f 24/24/4 23/25/4 49/20/4 -f 24/24/9 51/18/9 52/17/9 -f 50/26/5 52/17/5 48/16/5 -f 12/9/3 1/27/3 4/7/3 -f 4/7/3 6/28/3 10/8/3 -f 8/29/3 10/8/3 6/28/3 -f 26/12/4 25/30/4 38/31/4 -f 38/31/4 39/13/4 26/12/4 -f 36/10/4 32/32/4 30/33/4 -f 30/33/4 28/11/4 36/10/4 -f 26/12/4 39/13/4 36/10/4 -f 40/15/5 22/34/5 29/13/5 -f 21/35/5 27/10/5 29/13/5 -f 29/13/5 31/36/5 33/14/5 -f 33/14/5 37/37/5 40/15/5 -f 22/34/5 21/35/5 29/13/5 -f 43/17/5 41/7/5 42/16/5 -f 44/22/6 41/7/6 45/18/6 -f 35/38/7 34/19/7 42/21/7 -f 34/19/4 44/22/4 46/20/4 -f 23/25/8 47/23/8 49/20/8 -f 51/18/4 24/24/4 49/20/4 -f 50/26/9 24/24/9 52/17/9 -f 47/39/5 50/26/5 48/16/5 -s 1 -f 1/40/10 2/41/10 3/42/11 -f 3/42/11 5/43/12 6/44/12 -f 5/43/12 7/23/13 8/39/13 -f 7/45/13 9/46/14 10/47/14 -f 9/46/14 11/48/15 12/49/15 -f 11/48/15 2/41/10 1/40/10 -f 22/50/16 23/51/17 24/52/18 -f 25/53/19 26/54/20 27/55/20 -f 26/54/20 28/56/21 29/57/21 -f 29/57/21 28/56/21 30/58/22 -f 32/59/23 33/60/24 34/61/25 -f 32/59/23 36/62/26 37/63/26 -f 36/62/26 39/64/27 40/65/27 -f 39/66/27 38/67/28 22/50/16 -f 31/68/29 44/69/30 34/61/25 -f 30/58/22 32/59/23 35/70/31 -f 30/58/22 41/71/32 44/69/30 -f 21/72/33 24/52/18 50/73/34 -f 38/67/28 25/53/19 50/73/34 -f 22/50/16 38/67/28 47/74/35 -f 4/75/11 1/40/10 3/42/11 -f 4/75/11 3/42/11 6/44/12 -f 6/44/12 5/43/12 8/39/13 -f 8/76/13 7/45/13 10/47/14 -f 10/47/14 9/46/14 12/49/15 -f 12/49/15 11/48/15 1/40/10 -f 21/72/33 22/50/16 24/52/18 -f 21/72/33 25/53/19 27/55/20 -f 27/55/20 26/54/20 29/57/21 -f 31/68/29 29/57/21 30/58/22 -f 35/70/31 32/59/23 34/61/25 -f 33/60/24 32/59/23 37/63/26 -f 37/63/26 36/62/26 40/65/27 -f 40/77/27 39/66/27 22/50/16 -f 33/60/24 31/68/29 34/61/25 -f 41/71/32 30/58/22 35/70/31 -f 31/68/29 30/58/22 44/69/30 -f 25/53/19 21/72/33 50/73/34 -f 47/74/35 38/67/28 50/73/34 -f 23/51/17 22/50/16 47/74/35 diff --git a/src/main/resources/assets/hbm/shaders/test_shader.frag b/src/main/resources/assets/hbm/shaders/test_shader.frag deleted file mode 100644 index 2e6f3ab0b..000000000 --- a/src/main/resources/assets/hbm/shaders/test_shader.frag +++ /dev/null @@ -1,25 +0,0 @@ -#version 330 compatibility - -in vec2 texCoord; -in vec2 lightCoord; -in vec4 color; -in vec3 lighting; -out vec4 FragColor; - -uniform sampler2D texture; -uniform sampler2D lightmap; - -void main(){ - vec4 center = texture2D(DiffuseSampler, texCoord); - vec4 up = texture2D(DiffuseSampler, texCoord + vec2( 0.0, -oneTexel.y)); - vec4 down = texture2D(DiffuseSampler, texCoord + vec2( oneTexel.x, 0.0)); - vec4 left = texture2D(DiffuseSampler, texCoord + vec2(-oneTexel.x, 0.0)); - vec4 right = texture2D(DiffuseSampler, texCoord + vec2( 0.0, oneTexel.y)); - vec4 uDiff = center - up; - vec4 dDiff = center - down; - vec4 lDiff = center - left; - vec4 rDiff = center - right; - vec4 sum = uDiff + dDiff + lDiff + rDiff; - vec3 clamped = clamp(center.rgb - sum.rgb, 0.0, 1.0); - gl_FragColor = vec4(clamped, center.a); -} diff --git a/src/main/resources/assets/hbm/shaders/test_shader.vert b/src/main/resources/assets/hbm/shaders/test_shader.vert deleted file mode 100644 index 29c5d6a14..000000000 --- a/src/main/resources/assets/hbm/shaders/test_shader.vert +++ /dev/null @@ -1,26 +0,0 @@ -#version 330 compatibility - -out vec2 texCoord; -out vec2 lightCoord; -out vec4 color; -out vec3 lighting; - -void main(){ - gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex; - texCoord = (gl_TextureMatrix[0] * gl_MultiTexCoord0).st; - lightCoord = (gl_TextureMatrix[1] * gl_MultiTexCoord1).st; - color = gl_Color; - - vec3 totalLighting = vec3(gl_LightModel.ambient) * vec3(gl_FrontMaterial.emission); - vec3 normal = (gl_NormalMatrix * gl_Normal).xyz; - vec4 difftot = vec4(0.0F); - - for (int i = 0; i < gl_MaxLights; i ++){ - - vec4 diff = gl_FrontLightProduct[i].diffuse * max(dot(normal,gl_LightSource[i].position.xyz), 0.0f); - diff = clamp(diff, 0.0F, 1.0F); - - difftot += diff; - } - lighting = clamp((difftot + gl_LightModel.ambient).rgb, 0.0F, 1.0F); -} diff --git a/src/main/resources/assets/hbm/sounds/clap.ogg b/src/main/resources/assets/hbm/sounds/clap.ogg deleted file mode 100644 index a42db9654f4866911af3d9607a8bc023bc2606b5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9290 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 H|49EAs|8gB diff --git a/src/main/resources/assets/hbm/sounds/jeff.ogg b/src/main/resources/assets/hbm/sounds/jeff.ogg deleted file mode 100644 index 1c251fc4284ddd3f70ef396c178492f60c3441d5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11082 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 AX8-^I diff --git a/src/main/resources/assets/hbm/sounds/mug.ogg b/src/main/resources/assets/hbm/sounds/mug.ogg deleted file mode 100644 index c7279c971c6a1b584fbc768bbcb1cae6b1bccd41..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9970 zcmeHsXIN89_wNn_2pBLx&;)}92ql0RlAr`ZNeCe{h0s9|Aw;Uu1uG>KF(6$MKtnGA z3J8MjfJzV26a*|N3RsVdy&UfbPkGP%@_+90-cR?r^Gs&1nOU>e%x_KBtl4|#-o1{1 z81QEb-UvOqOgciZv_aNGV)jS)21YJ7h|%kpA7DBFS$VWWb}o^SkFct0`!3du8)aWyYYe8{CfNhId z?rK`QAgP`LGUE)H_DPbIMGW`4o_2cTO+xz`F4Rz)m-vLxcROhnElrSQW%yZ{yO$cf z=9dl}m6??!N$o>%8B}lvl9YBNcaU16%+;a5HgK_Iwi1v90Kziu^fGN3gmSYC&<6kr zGY4dEIHo@v)8B+y1(S7`0KouYARjZmf|>b*nS*oB(OAjz$LsV4n^!V%WjGT6>>c11 z;Yg{Kacls9360V#-O?)q(ihS)Vce8@F(4iQpr9JExuc0?9(~x!d9p2Z=0CD$fj@d> zIEW!)ERa(xnMM#tORm@foJPESI^kygUm(Y$tmVq28z>Kp=Y;NZ0_!GcE*x(jOl@+_g1t8x-@lBz-%r8o-DQ-ldv)mSb>zPlnd=E%zHpFEKGFm}O zq9HI-VABLr%#Ju#kQYZ0v!#xLtz1W6ZM zJc1iqS=RWE)Vh7GC_j^VMxoB{btpSvl+t;jp^-NBJWf*bwFB-lbuJEyd1WKI&AhIH}rDc z?B(nd>RJ%$*%m!>%75n5k%#}0y`)x_r~m-QIqLWvHGIyTQ6|pHETB&ZFq2&VN2Wj4 z&YUyK!CB>K1m^6GE2!ZMp7BrX)UB`ph-H@LlwK8^UK^WU6Pvl1mJ`4)sHqj`4phCo z)cE3m%Bxm3I1T`!aF!7`OBT+81rjUh#>1D<#oRE!Sw!d!j*)+@aa7S11k^R^m(%#u z0002*KaU(7#n>rm++l5WcHDS}WpT&R`F~1w<77KU5Ljs-3jzoco;D5L_oRa`zGD$0 zT+|L?<_1sMRyBFm1LtUhnD`p-JfPF!!NIC)t7&-#D!FdHMAEt!D%Pa&Y9 zH*|S0|5?`?7B?9cH*o;H$A6tVNB^x0T+y;FlfQIIG#iJo_y-H}a8e!3`B5D(wB%D~ z?_8t*PglVL)w#4T%q#wB9KpFz$4Tj*uARuzOZHyvI-MkocAZ^Hb*ujA`cDe<%&0K% z04J2f|C&>nQMx|_h@S(e1OSsz4(h0DRm9+MuKV@6x{&DgbF>06`m62u2t_ z?gbL$p=O{!a>OKl0RnmikXd_qcIT;%zTxqp;}-)Q06@~BNzYEvLQoYb&`c*U`$J^h z>8iNXfwXaxVX|ua>AeDk#W2aPuu8j52Vvn1qGCV040}@5&Bs7;N<9>yi2?9TU-#2m zU`&)=Ra*y2G1-Z<7$rO3aSjxKvcO;|u&(a;I}=dRICw;X@k?^m@v=a{a`TJpOY~8) z9q6m?L_dlv3lM-3z+(ep;Q-13IitO>>EPt*o?mK)gN&d@_i`;r&=yqHfnx`VgcYWI zFL%kps=7;!dV@qWXRpapE-&i-lL>Itej+YW2I2KN?4t1@p4WKjeFrxmoz`{tqQ)D^f{ z5D;!ZchF)W;sv-s!2*b|po(K9n2!Tns`{7yL_dGIV;Op#NhL5YumhoM*83C7U$8~{ z7gjBs;F5mGj1!2zKf0|!P^WXb8NSOEj9A(dz~lSnbQ=J?fl2{Fv2`w%MtJ2_dStf7 z@_A{7O5%Ybc`||~qsq-=!KDAS{S^QvxaG5&CYA%L2{X&(h|0P)jQ1zHT+@<^x(35)T@u6IEFlv4e(JqVXu2s+DVWxhN20YlAhz z6sgj@2@k!~k#aPAL${mL^WwZbkMxEbBoU9VobW|l2dlxAtyr#3?acy@U@FYZF$iC9 zHxbd+mc!y1NIptB*_7`V1mE@<>#1vS#{&R3N#X!KQTD8QF)~A9jdHUB0AhmWIiwqa zK^z$5;{139pvA#^OevcOZVFH{Of_#M`dzu(u&jH3wQ=oP&wuf85!N~-D|}p*wN>TH zSgt+IN~7}j@&yM$1LvBzd@oXm>F>}hz=au_2p@I_Iz(9Uc2luNH&|I1^r0U)oL zWv$)dY^GL;s+gu(@{^E}$MquN9z&JBa(Kyx6fjsqU06ee@maRk(i+jWc&&}yh2Yk% zD2&Vi7XW%ZDi9x^1pwku2@=pb3p|QMM2SHy*Ma{WIwy^OgBBKRFO86QgqZmz()0l* zw_O!pyUb2O^cNpDimO6ZVN^XiVLTL59Ckx-f9!SH9V2+1Xe=lfi~@l-;GWwB$jgt4 z_OJs&!lGgi$8*zoS)lU+6ACyC-byvh=yY-<3az{jqq2SjR#i0EPaF zmX^IU6#DDxY_@%6Jg|IqUT$YzdCAn?vg!7)mL?vrwV7x{AZ*$CbhC*mg|x|N+jf1u z&09Y_eRJ=@{n6WlL-nG(>yL{r5FKSs>>uN1HTCevGf9^H1V6PeCe@2ZDn+HSC|<_1 z3u&j1%ugPBpk;{e?Z?&w_12C;)=F{jAVSE*M@tzn;5T^Tv(iotN&`pE5i!FT*T3Fj zn&Yyu?4u#zu~wrhyXwWo?0DC|sfD($6km^5-qzEaNnOG`;=tng!zSTe?mC#ldn5e^ zW+Spj#50zVMD0R$zkY5_8@kJgjY>_}L6r0JKeyXUao^jk)asG%{fdpwo2uLG+Oub6 ztsdka%ky|7Qv7bXj=y+mZ3u7jYp@{X?YA}xx5)YtL%PtcdF8+K!#w4!YiNWgF#*wty0T$ zb<<2n1UGk$J$gK=xf6Mz+k6RPf530apaUuQ>Uvj&>srv_t)>!;D&zK?fr8?)_vW2nUN{uUn_~l?m;1Bo&6y4N*0ri# zPUGC`GnsAOLR=mDYTvk;qnU$}!)<5p@|ZL3rJi>Q#`WdLOMbrlvIQdQNrA3gDeg71 zI5Zb5PhMVWj?F6Lss!Dd4<-$NthlrdD(XwY$rWeIT4CCy0EdkV=g}^PcSerJy&2ej z>PHW6)9$C&Tbd_DU$RJ;6OlFY#;tv`?tpICpK+<7qa?S#pY z(OX`!SoeY>G_dbRVvmvnc7>PsiKMQjlOFW=cT;Pi|MdM`f2Ow(ZE!6?v84^fQ;2nbNddQ z2)g%bUsD;A$hCDioGF3PLy&uQiz(+YwiZ0iq@MmCi62YOT=q7;#Jr@SBIfjHN>Bdm zn~;JuUCwj{A%PXs^}*9#KjM34AKZ@^BZ_)iIR8`IF)*6=vn%=tH{u9M=c3xPpTMr& ztwzvE*Nt*r2j%$92d_d*8at*Up9osqi7f)0pQWq3YvkhN6W69UFLkKZr;CT&FWBnQ z)i4ubsoTCy+L3W&{==N?=UfcmofMIa-ro^<{@9SSNtp7L`{HsU`Oj~mUSFWv zTY}CiKQ1nU@5#p+O0M4KjyM??ewAnZX%B!Ff2NY2W0LWK+4q5Bpx<$W%dqyawO2OdC##lNeV zVU;t27$1w>-^U$GjhppClu^l+0zQQ9Idv)GA~Mwf#lZbBXI(^?|7u-Cona&6z6R?3 zWlbPqvNfjgf{K{p5BUi3LI{k&BSHEk^t@Wt)JiJPy3i|@#6~{2G>e7a*#x}%!q$)9 z6Je5mXXyC_W^Pr7Q@-3hc;;-h)bU{?@R$)#WU!=l@ZD}PrKfKE`M5Wdg&3=Cim<;~ za~5)?QC*h9Q%OC1Gpdlz>R?wWAn%RK=O`O1U7OjZRjR^);{03JcG6ichak2g@}ddG z!_C-piZFrhxjBHNslpb(g>#4!q>Ay->4X|`U-rg~uNqla5H-?Tz1?o_V2|G=Yn;UD zw_jssusgg@LL>{5$}yCPAv*ylyK0VH-?Kp;);x^DI*I#=IRRv^DfnICvjI-0j(PUm{E>Q0x=UU=NL?eqdx?2IJLwigt6<`4FC7zdv3Hg^Wsi z5I^UTGx8FB93Aj-s$cX>6sWlL)3dGNR@#vt(@BK`&2$B;7>vL3OC!6?W}TQ~P0v*= zdiTB}-%EylHxLn2NlDKMkqRk{i4gfv2BT^!H)TwE&i3|~8%k_rl3gxYbx0cHUubb* zvn84%-!N1cGZ51aiMcBAT1qUl|80l%Z2l^yk*1zDaC>`eU?C%GCV)*>9*&3Nt=do31tY;f72((J}m3uhT~SfP5F;@Kg_r70LXi%%mt=Dx1R@>Y~%pdu?SU(f&DI>GN6Su^@?umFkmeLY)$^ zuZ8!`fC5uWa}zGrzCc^!h-e=c7(9)ca?3H-w#mymc$S@K(ON+7W0tP%%JU!SBq76( z)EyIxACd3%GH5JQ^QB{+XfM7Ui2l*ILA=wp&@Z+`_>xE*W0T6WR&S|U0Z zKP|c6mg9xn5n8%-GHs9sBjSH8Rs|fww9<@-++rv zz&<90SGQE2c#f7~Bo~)fJ8j6YIUbSApU5D=MrRiLqVO+K4b zk)hMnT=_V**s5qMV~eT|Y3~}obSvkNM+%R{vOSPN?7ZX5M8HG?Y&)GxtBdS!7Z%$*4h=rvxD(9{l z#zEGjRcv94>%z|Qw0LW>N4vQ3*C3w;Vy_20dJkNxv19fTGixLr`P8Ryg3|`A*;tiG zQTSWbyF#=1_RL_8TmdJ8d?=GlvSDx<(aoIWqAb&LN(()mxr?|oQWmC8>ua+-M28z% z+3yLjHJFRi4hJ@vQQc z$foSZf)d~ZF$w)_4^Ed&5i_q0nSVPcaP`r24b%@Lli3^&yYIB=mQY5YU}FZosB~O4 zqd=}bGls8qJYWph&x{-@kQ8ez0u?C7V!!O}x4Hk?wfFlN((LB|QfKT|0L`-0?*6y1 zrDEL%vaGz-M?HR^;6h5Vf}*7s1Q&#JN*FLg7r9}@5h^{>aO$%iMGizc__))oK(2g| zEo0xmK3+VEu;hd`zaa^;9e>p4WX9kmhK%z`47@B7gJOt%+gvVxv={SUVFb$QwRX@u zbU;Mi1hMmpsYiA<@8!e!U1p^+MjOW+iW9Z_o!N|aRwSajO(Z$E1!pDD$VeLyXoTvc zL&tepRoTIIM7i?P5?+ZWrzc(g)v0j>SuQ`x_i)vguQeV9VlV|4>rJcFhX>V6t{;y3 zx=XT(tIWxT$O=BC znPWE=l5H3~p_g4gha-t>;e1VFo(i$WPSQ^;RMXi0PWGy^?#g_$c`#3~YNu(wKGi9$ z)WG(X>i*58o)yRU1_DBU$_7hGtbGT>?74K9jiRkxYSj((g+YY-b<@dIT3?ggX{{ZH zT3@@pim^Sjqp3JM>umWpi23-)9%Co_@e$u+(9SN_z@wOWAb_U`BbseZEKlYec#V@u zQZ-PCPJo3mFT@MJ}8|EG8Hz^7%IlLl3^w}`VtEW!nA7XA#aEgkV-KVC;J!IOo{u= zrAnH4qs{c?u1RUUfN`#3oshYGZ$AmyDqZz!x#_+NlxyQsi!1^PPDiH)SX*LqnkkJP zYX~Qk0Gk&2SVbUbUoL31T=H=adr)AQBZ8NHwed=JJ;>~7D^;noJ5gg6W%BshkWKRu z2P#xXz98nXDR){1TUS~AcE@7MXTdK2bsi!69J2L=yBQR!AW&=c^D(N}U1;ai`Lh;l zrH-Vm{p~lthgYO1ea(yL&hPK&@DFDgr*77$?mbo+v+AVu`BM_&kXotu)eC63#b9o#NgZaQ@ie5Zo$vOJMm4s~k?KrRNv zZ5nwD(>>3$JR5HP8unRAempm8AXc?*C@re)oXn~0Ke|o0Hi@61TWVpHaqDT+#cJo6 zYg7lWna+m$*ZRxr;+efYWaY7%!mm;$z&l|R86ka4>srrU`(RC~ zhvbBejO+uc{Hv<|KVm$hgolpUPpxB3?60djNs~XCo+7n84LF68B?Mpo%FYcu75%UyD*kJOCr6UE^}X|nr5GB_%=MOJ zGaBJ6wems(8t?nh3ytLuQLnS>0;T(ghI>T=gXiq7Nht+yTC^9ReMRk_US)h6h~2Tl zhlqSjq&X`8I0P%?&!Gy#Hrm|MQ$10fy)m0T#8fYvDknCRN#%TWPg{9gu0vYh?`IiG zN0`*sQ0d(4=SP2gKOoZifi5P$9e2=COwwfCbUnSxW<1_%JniQG?ofdV_3CPM_Ny=G zgEgO#@XN@-FM0rM4Q_CHJ_YmIInPvKPO4zH7g#*7yVHbVB?|7o4$2N ziaP8X29;Sm^$x|9lB!fe3681_cB&v&ZIh}TN3BWZWzXKCJ|m|jWBqXL1-0M~bm|!l z`1)J+Oh|*KyV`NG=f^Z0$)-&cJ;tk#U=L4otcXRD%2sma);zQwsjY!6*b`FjuqyUz zFfjjoioZQ}QCMv->T%)yE1?(Ktz3#Rg_zsDAh~B+IsaWGij90mwlh~~Y|zyk!zv>2 z-v-L1E4~C5Q~fWSKI1zbHV<_lsZ%ECAl<Sv_98 z^>jQoUSzP;Q4uPraF4Ky9Lh0lX0s>j`BTbP%$zFsL_U73#){(T{CHCT*rV;L0j1{E z&Fc{n$%db_)f9NS+3mM8v4H7Zt7Gx0V9vk?oLc6*p>%s^{$p}kej2c`%KNf%8%-_oRK+fuwl2) z#&yoJgrM2*%P(dYZ|}J*kvVqUAi(-@X(M&%b-W!pQU!=5g$c+@jH}NBFHQqhlt@r?M>sJts z5M}SRA7=aw#DSUM3ROvUYlrmAKX}i0;Y40;3{iyy&*oIQHxFdkHmBjN zBEiouvi`${?w-qDz@Y2N8-yGhDx|qK|yUA(BT|;{JnZ7hX_&%~UD&b^E zMXLORHm=KvH0`)D)7St9e?ghHG1#mIl1FN`7Cs2!5=K9{Y0i zXs`z06G+T_BVW0=9kV7-r@sKL8fwj8mOE&S=}k$ErXLR>b`p`yxnOSXNz3!wb<;7t3^VD(()G(pTc&MqZjF7ds^4o~)Tc^|{h(>4a$czro_tDmTv?<& zAdxCA#BbC3@kx9CB|whw7Xc)tt%p)kP@i8X4$zq(l{W{ZJ$L;w_M6GURYkS0?am23 apFMa#&>6JrT-&>s?00Y>fRgf=1^yRWX%;X5 diff --git a/src/main/resources/assets/hbm/sounds/sample.ogg b/src/main/resources/assets/hbm/sounds/sample.ogg deleted file mode 100644 index 30cebf4cb3a14159784329d6f503167a689f5d3e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 119976 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

6nP#R>%kWhgO|2 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 diff --git a/src/main/resources/assets/hbm/textures/items/oilcan_bitumen.png b/src/main/resources/assets/hbm/textures/items/oilcan_bitumen.png deleted file mode 100644 index 53b9537c76bd843a4ceb02cea2cd91913a021565..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 238 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#VfyU$h+kKYYBiuPs(jS>_-#GD%%j^;FU(GK(-U3ZKu6yuJU|!Se!=a+xlpANf z`Tm)@Gdw+ zGWYT0pG*qpi+`#8TK9U^sxO=F?u?ikm&TBLTgXYE;b)Si)wZCi^Q$w?FgS5cy0!iM l+ajqob22}zK6zwFVdQ&MBb@02RSZ AcmMzZ diff --git a/src/main/resources/assets/hbm/textures/items/oilcan_heatingoil.png b/src/main/resources/assets/hbm/textures/items/oilcan_heatingoil.png deleted file mode 100644 index 8abf6d0ffcd63482811590e34e4a93e841630689..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 234 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#VfUn+ zKW7dcyMH3;u!L}M?Dem&?u4J()Z_i{ZI#^Lqfe42x-%>l@swY`eM##3zb`l&wwC$i ztma~fed6Q1Bd6|T5=7U)<8Pgg&ebxsLQ0Ntx!z5oCK diff --git a/src/main/resources/assets/hbm/textures/items/oilcan_heavyoil.png b/src/main/resources/assets/hbm/textures/items/oilcan_heavyoil.png deleted file mode 100644 index 371de24219cfb39979eaf3858a419216351d1838..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 235 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#Vf-~j33?>_x0t^{M4xICxmE5qpK{SD3)`Vj#-<1dnxO$z=&bfI%e%r%G z`Bx$ruhQCBdH?(JUF)Z$YPx@2mm6biA#@~Aqfq2jb#>sAnLn6gZ=cwtbIyhFO6gmc zsO)Sehe;|7OES3**qrBiyrj!!a^jpTya}=4J%-=T9p0*Y*h15ujp3L?Y1#Voe?Q)_ gz5Mq<_~dR|c`Ikjo9AFVdQ&MBb@04gC|W&i*H diff --git a/src/main/resources/assets/hbm/textures/items/oilcan_kerosene.png b/src/main/resources/assets/hbm/textures/items/oilcan_kerosene.png deleted file mode 100644 index 3df5212ff95cf28dad1282fd8ea9682daccb6067..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 230 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#Vf;HZUMZGti3%)UIyOg$2XNu_rn+9nqvxcS;xd$3+B3w2K3gyNXFRw3; z|KHHOKQa5koXK1H6-~bHOIka1mR`AL)z!#n(Qy~7xOcJZr&!kMxhgYMyzhQ&XtWqe}eJYWKRsH{9m+2b*l0$m_tt_~{-K0o}{s>FVdQ&MBb@05^nS!vFvP diff --git a/src/main/resources/assets/hbm/textures/items/oilcan_lubricant.png b/src/main/resources/assets/hbm/textures/items/oilcan_lubricant.png deleted file mode 100644 index 9cee0151369e1a416c08b31b7b81ac161ad3eecc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 221 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#Vf;Lr@lZ&m`Bo$_^xxIm1^1zRbQt4BEE{h6=YF+4?`}_0503*!ceH zeq*~=9s64%x%~a=ImNdgt(tyn_PJjUksG!(Y-X)Yx1AT9%F-a= z33W|sf$?FPLjDXBirYG-mn4L2DMwN8L9_|lr8GG@)X|UM9>=clu;SpMPLPb^~dyCNZd4U#7S6yLIEPT8B z#=mX*b0U69pETWaP4QXm_0;G4fxhpR;y*+V;38TR= zpT38GnHK1HKU3TI?)SWFRy*hTFWl;9#_-tU(Oz+ey|>lQ_ied$(ngHoUiHbp*3YBN jyQg>0_>;A1(-UUBP*d*QT|55)oy*|q>gTe~DWM4fqJCh_ diff --git a/src/main/resources/assets/hbm/textures/items/oilcan_oil.png b/src/main/resources/assets/hbm/textures/items/oilcan_oil.png deleted file mode 100644 index 0cfbdc54f4fb91df4ee27aed5308a41e70611f9d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 208 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#Vffp7qW2(7BR~4w|V_*=yAf?q*>K5mjQ*uj=p+VDS3j3^P6hCW>L3Hg1=(QK{NJ<)x3>= z6mC2-HU50|%yAx{KfOGrQ-bWCq(<_c>)jN&zGi-%<$S5V*DI&z+B(P_Z>gx>qoQN| zT*{YW%eCIe$M-UNOlsNYxnlLILr+>|_^b0jIi)d_#wM>7ZFrh=ue$8Olh!TCED39; rn)telGp_rd{`{$i%KlkCB|n+0T}Qh!pLOC%lfRP4Li}G@XfEC?)mm5g{MeN#YUm3-|*tPID5x{hkX})K4;$5-+8OW)0u+1W(9@BPu#U>m;4Ls<%Y+ux-i_@7R!3rKxMMO z2^&MUE`uV=GE0xx$hprH%o|c8Kipex?SI|Rr+7lG4#S@BlXjP%|NGI#rugr{^=jho Z_p*&FI~iZe9RWI%!PC{xWt~$(69942R|Nn7 diff --git a/src/main/resources/assets/hbm/textures/items/powder_template.png b/src/main/resources/assets/hbm/textures/items/powder_template.png deleted file mode 100644 index 71b8b07c5c7a9be389feadfa8ce485f9a5250467..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 256 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#Vfeb%PCKw|9Saiyv6A^tXP99U^Wjnqf z`TMwTchx`hsX_aKUhNjuUi#Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D0Xs=VK~y+T&5=!t zgFq04%V0J^H*U;2x9|iaIf+-y(gOq`kfn$aL_v}$QR7dXc}1$3#K5cu=0VZjQr~;k zE&YFao;RW1_ag1NeiWL=aiqGg$uv#=mSq|3_j|>CG?0|GZ5g&Ki-uvKqA19=ZSH~b zZnx7GeEK24XfDf=E|&|#*Xxy%Bw@H|8p`vW;yC91mkA^pNk|5O{d&Eos;X4oZa0`P zs|*B2Itob;MisE{dj*R4;QRg*MUjG0Xoh6ecTl7O#^&*O(D8Vj89-qeYBC`v!?g~F z0~;>R=Q9I%@y%vKUDwh5e&y6%KG0f<7ch+VeZ?S%h~)a7!CL^a83wc-MVbgZY- zNnJ;69LJgP%f#e+L}g+a2E%EZ&fekW155w|(siAJAeaHa3MQ!M@vlYn1q|x?cMUt) Qi2wiq07*qoM6N<$f_@OVBLDyZ diff --git a/src/main/resources/assets/hbm/textures/items/turret_cwis_ammo.png b/src/main/resources/assets/hbm/textures/items/turret_cwis_ammo.png deleted file mode 100644 index 77dd465d740a47b783e4c846c71206e0d4435a8d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 179 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#Vfr1RmPbb~~4{@Rt?@4n3M Ymuby%zjC(G9ONtpPgg&ebxsLQ08HyXi2wiq diff --git a/src/main/resources/assets/hbm/textures/items/turret_flamer_ammo.png b/src/main/resources/assets/hbm/textures/items/turret_flamer_ammo.png deleted file mode 100644 index 19c15cfe6f880a2514677a4cf6027711ff74aff6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 241 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#VfZSUr6OsTi|zA#Zj(-SD@?ZH-}|R4_#c`JeT}Ab#3?V z|L-5Xzj9?~_NzOxsc{zt#d7VvG}C(+9kOMQ_}yM~D(Y8elEA}HPqrL?^t4c)OaGqk z=@^dgp8>m>!B nS_ebwbyvkVss{zXug_rXSXJzzA@{fi=w=2_S3j3^P6B_kh#;q%+6r qy~6$EmweuVhM)5r6HRzlFfpW5l&PQ7YAFV~gTd3)&t;ucLK6Tv?neLs diff --git a/src/main/resources/assets/hbm/textures/items/turret_light_ammo.png b/src/main/resources/assets/hbm/textures/items/turret_light_ammo.png deleted file mode 100644 index 13143457cd7866de04832bda58738993e4ce1240..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 291 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#Vfj0B{SR1R|nu4>ZlPV;4&7CP(SNpH^ zs;h?HkDm|Ofp+ef^!o1fXz%IHnTjdDqGR?YCL}m;Gn>Vku>rxHZGZp$>VEjM(f!8Z m2j8#9^X%WBblqYHBSY&`pQh)wYde9yWbkzLb6Mw<&;$TpCVv6| diff --git a/src/main/resources/assets/hbm/textures/items/turret_rocket_ammo.png b/src/main/resources/assets/hbm/textures/items/turret_rocket_ammo.png deleted file mode 100644 index e75662c457a49e40fbbaf02b67b7b0792b60e031..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 335 zcmV-V0kHmwP)|a!V=GE2RJP*aUZIcChq(8sDO9$i zl=?tjA`aHAh=|B0BA2Z=W=PUIQBE8kHSo>+JNp6uz7#h^6uEDjMip=O5diYLS9Off z0*ELM!yu_zYw16puW_^a1oO6SWmy8!G>rf-jw7tK0;{S50DQgN;_BfY0A{=>3Z*$U zNs?%-MF>F#vMiIH7nzr3sQ^H3?Yd5d5F!Bdeg8`qFD{t`5K;8rgNOw3E4$q)dhdA- z0AP%X&bh-ErV{JA7Ku~y%$;*HiFyi8Nn{29d7ew?A0+P2mAE=7Q7tB6jFA(!PX}S^ h$8U9vFMV95egI}_msLW-}NY8#4Z1x9M}(HawV=kdl%x*;kA&pM)0fR; zdDbxgpE&89{hpnS{5uM7Jotaqw(3ciIv)eWK56yjS1g}Qfv#cjboFyt=akR{01}Z= AQUCw| diff --git a/src/main/resources/assets/hbm/textures/items/turret_tau_ammo.png b/src/main/resources/assets/hbm/textures/items/turret_tau_ammo.png deleted file mode 100644 index 7a3d511d1cdcbde95242e1a609d019e074a46ea1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 456 zcmV;(0XP1MP)|CL=`PZ=`Yhc*Wb4vMDd-;Y`T2eJ=jVeDM&r=pcs#B) zn+*W7*(~ObF_9B*q3Lv56-5ESXf#5IZOL7~WW{H$=fzuQxvdSbjg_ zrA+zu@F!X{1EjUCwAR&RaDp)gV+;T(InTo$054@qN{;tF9@q>YxBWJE{gU(63V_Gq z7gBOAZhisqJnWH@bJ}|4>FO_9>ndI$Xoq{Aw^ppnBTied0IbWSn7_O~MhJoT9&2qQ zHqm>(1z}38gQVJmi-R>3waL(bJ zi#>=Ngyi+SKnQ`9at}(9B#wI<)J;O+TPPe-H)sM_Ya3aX#bjNxK04>fvW$A|ohx|01rX`HU0sBb-!(dggBP~0000Q$+eHw;*a%n1MQK6DUr!lvI6;>1s;*b z3=DjSK$uZf!>a)(C{f}XQ4*Y=R#Ki=l*&+$n3-3imzP?iV4`QBXPIMM=Lb}i>gnPb zV&R|sb>i_VfIEG_Ccn)fDTw0T5EZM^;*`&yD zNP#(_?SRST90m{L4z^5{)2t%Zi60~wj8m>K2=Ou`PEa)H@iyj27FCh^pU%LrdgAJ* U54y5afEF@%y85}Sb4q9e01#_M`~Uy| diff --git a/src/main/resources/assets/hbm/textures/items/warhead_thermo_exo_alt.png b/src/main/resources/assets/hbm/textures/items/warhead_thermo_exo_alt.png deleted file mode 100644 index b452b4c44a4848ff5919b7e79d2b9ae99a77826c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 231 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Ea{HEjtmSN`?>!lvI6;>1s;*b z3=DjSK$uZf!>a)(C{f}XQ4*Y=R#Ki=l*&+$n3-3imzP?iV4`QBXPIMM=Lb}i>gnPb zV&R|s(i{^LLN;?W5phhzS>^#AqBo-92dC7VJ8mi#O-(3cQ4VsU0@ zab!Ed)0nAtlVL)d0PiJ_Y1|s$4m~hrNIS8DQALX3kb-l9#Pl?QV_F_I|IRZod}iFg UOJ}0*f1rg7p00i_>zopr0II%7)c^nh diff --git a/src/main/resources/assets/hbm/textures/models/At4New.png b/src/main/resources/assets/hbm/textures/models/At4New.png deleted file mode 100644 index 893349770fa9c2d402d7dcf4e0690c4e3ca8ba76..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 643 zcmV-}0(||6P)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D0rp8mK~!i%?N~ia z1VIcPw6zrO3K6su4z?7o5{oVD7O@bn(ozt_>aek}RV>BcQt>wk{s+MyGxD+t#5h5V zyXD;6gOE&SZZHIXf8kdtv@3wiD5u(|^XNCHqvXiHWT6>a@I9nI(c#_Q8I zVu9xAmY6$`?WSpHnU-{^O3>EN)BSk`=x10P{XAVaz|x<^K?rg$udOcad2L&*Z4PUR z&VcG+1$b31RU6v+Q9Y~xugaxrLt8(G)g2K0EUrSHj)1mD*z41_Y$cv+t#EB0t@okUZWT=i6yR!rd+qFy7+0`F|nAh5YsT0SR}zK;>6f zdzOIvtHXE+2)6}v#Wit}%hP=l?ZX&U9EA0kT*=3eSzLe+n`A?z>L9+oxt^YNbmnYyebcV`y$=FHUu9WpXb;bTp*%dgC299tHpa diff --git a/src/main/resources/assets/hbm/textures/models/LilBoy2.png b/src/main/resources/assets/hbm/textures/models/LilBoy2.png deleted file mode 100644 index 0e0dd92c27a1d2efc4096e974752bc4600a30bf0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16756 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 Cb>ABR diff --git a/src/main/resources/assets/hbm/textures/models/press_head_2.png b/src/main/resources/assets/hbm/textures/models/press_head_2.png deleted file mode 100644 index c40599a5396d44074e87ac5d03f28407a1ade750..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 237 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 GasL5F^kA3( diff --git a/src/main/resources/assets/hbm/textures/models/radar_head.png b/src/main/resources/assets/hbm/textures/models/radar_head.png deleted file mode 100644 index 5f5b752dadc016f021118d9892929e2230eac545..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4658 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 aYZ(rOmv#ED3Kjvnlfl!~&t;ucLK6T((^ygf From b0ae1c8cee878f220b67e784e1897e0fb076d79d Mon Sep 17 00:00:00 2001 From: Bob Date: Sun, 23 Jun 2024 22:25:48 +0200 Subject: [PATCH 57/69] config crap, player deco and some fixes --- changelog | 8 +- .../java/com/hbm/config/GeneralConfig.java | 6 +- .../radiation/ChunkRadiationHandlerPRISM.java | 17 +- .../hbm/inventory/gui/GUIScreenPreview.java | 11 +- .../inventory/recipes/AssemblerRecipes.java | 21 +- .../java/com/hbm/main/CraftingManager.java | 35 +- .../com/hbm/main/ModEventHandlerClient.java | 10 +- .../java/com/hbm/main/ResourceManager.java | 2 + .../hbm/render/model/ModelArmorTailPeep.java | 26 + .../render/util/RenderAccessoryUtility.java | 23 + .../TileEntityMachineCrystallizer.java | 2 +- .../network/TileEntityConverterRfHe.java | 6 +- src/main/java/com/hbm/util/ShadyUtil.java | 1 + .../assets/hbm/models/armor/tail_peep.obj | 447 ++++++++++++++++++ .../assets/hbm/textures/armor/tail_peep.png | Bin 0 -> 668 bytes .../textures/models/machines/ore_slopper.png | Bin 0 -> 2509 bytes 16 files changed, 574 insertions(+), 41 deletions(-) create mode 100644 src/main/java/com/hbm/render/model/ModelArmorTailPeep.java create mode 100644 src/main/resources/assets/hbm/models/armor/tail_peep.obj create mode 100644 src/main/resources/assets/hbm/textures/armor/tail_peep.png create mode 100644 src/main/resources/assets/hbm/textures/models/machines/ore_slopper.png diff --git a/changelog b/changelog index 773ee6c81..779837ef2 100644 --- a/changelog +++ b/changelog @@ -12,6 +12,12 @@ * Removed the recipes for the satellite deco blocks, those will be phased out soon. Existing deco blocks can still be crafted back into functional satellites * Moved the satellite recipes to the welder, the attachment is now welded onto the common satellite body * Simplified the satellite recipes, adjusted cost based on utility (depth scanner, death ray and resonator are more expensive than the mapper/radar) +* CTRL + ALT view now shows the item's internal name and domain +* Adjusted Mekanism compat + * Decreased crafting complexity and time for the digiminer assembler recipe + * Replaced recipes for the wind turbine and atomic disassembler + * Added a config option for toggling Mekanism compat ## Fixed -* Crash caused by PRISM updating unloaded worlds \ No newline at end of file +* Fixed crash caused by PRISM updating unloaded worlds +* Hopefully fixed another crash caused by PRISM (reproduction was unreliable and sporadic, not confirmed) \ No newline at end of file diff --git a/src/main/java/com/hbm/config/GeneralConfig.java b/src/main/java/com/hbm/config/GeneralConfig.java index 75c61aed1..321d349e1 100644 --- a/src/main/java/com/hbm/config/GeneralConfig.java +++ b/src/main/java/com/hbm/config/GeneralConfig.java @@ -35,6 +35,7 @@ public class GeneralConfig { public static boolean enableGuideBook = true; public static boolean enableSteamParticles = true; public static boolean enableSoundExtension = true; + public static boolean enableMekanismChanges = true; public static int hintPos = 0; public static boolean enableExpensiveMode = false; @@ -101,8 +102,9 @@ public class GeneralConfig { enableFluidContainerCompat = config.get(CATEGORY_GENERAL, "1.35_enableFluidContainerCompat", true, "If enabled, fluid containers will be oredicted and interchangable in recipes with other mods' containers, as well as TrainCraft's diesel being considered a valid diesel canister.").getBoolean(true); enableMOTD = config.get(CATEGORY_GENERAL, "1.36_enableMOTD", true, "If enabled, shows the 'Loaded mod!' chat message as well as update notifications when joining a world").getBoolean(true); enableGuideBook = config.get(CATEGORY_GENERAL, "1.37_enableGuideBook", true, "If enabled, gives players the guide book when joining the world for the first time").getBoolean(true); - enableSteamParticles = config.get(CATEGORY_GENERAL, "1.38_enableSteamParticles",true, "If disabled, auxiliary cooling towers and large cooling towers will not emit steam particles when in use.").getBoolean(true); - enableSoundExtension = config.get(CATEGORY_GENERAL, "1.39_enableSoundExtension",true, "If enabled, will change the limit for how many sounds can play at once.").getBoolean(true); + enableSteamParticles = config.get(CATEGORY_GENERAL, "1.38_enableSteamParticles", true, "If disabled, auxiliary cooling towers and large cooling towers will not emit steam particles when in use.").getBoolean(true); + enableSoundExtension = config.get(CATEGORY_GENERAL, "1.39_enableSoundExtension", true, "If enabled, will change the limit for how many sounds can play at once.").getBoolean(true); + enableMekanismChanges = config.get(CATEGORY_GENERAL, "1.40_enableMekanismChanges", true, "If enabled, will change some of Mekanism's recipes.").getBoolean(true); enableExpensiveMode = config.get(CATEGORY_GENERAL, "1.99_enableExpensiveMode", false, "It does what the name implies.").getBoolean(false); diff --git a/src/main/java/com/hbm/handler/radiation/ChunkRadiationHandlerPRISM.java b/src/main/java/com/hbm/handler/radiation/ChunkRadiationHandlerPRISM.java index bed495862..861d029db 100644 --- a/src/main/java/com/hbm/handler/radiation/ChunkRadiationHandlerPRISM.java +++ b/src/main/java/com/hbm/handler/radiation/ChunkRadiationHandlerPRISM.java @@ -3,6 +3,7 @@ package com.hbm.handler.radiation; import java.util.HashMap; import java.util.Iterator; import java.util.Map.Entry; +import java.util.concurrent.ConcurrentHashMap; import com.hbm.lib.Library; @@ -44,7 +45,7 @@ import net.minecraftforge.event.world.WorldEvent; */ public class ChunkRadiationHandlerPRISM extends ChunkRadiationHandler { - public HashMap perWorld = new HashMap(); + public ConcurrentHashMap perWorld = new ConcurrentHashMap(); public static int cycles = 0; public static final float MAX_RADIATION = 1_000_000; @@ -188,6 +189,8 @@ public class ChunkRadiationHandlerPRISM extends ChunkRadiationHandler { //it would be way to expensive to replace the sub-chunks entirely like with the old system //(that only used floats anyway...) so instead we shift the radiation into the prev value for(Entry chunk : system.radiation.entrySet()) { + ChunkCoordIntPair coord = chunk.getKey(); + for(int i = 0; i < 16; i++) { SubChunk sub = chunk.getValue()[i]; @@ -200,16 +203,16 @@ public class ChunkRadiationHandlerPRISM extends ChunkRadiationHandler { //process some chunks that need extra rebuilding if(rebuildAllowance > 0 && sub.needsRebuild) { - sub.rebuild(world, chunk.getKey().chunkXPos << 4, i << 4, chunk.getKey().chunkZPos << 4); + sub.rebuild(world, coord.chunkXPos << 4, i << 4, coord.chunkZPos << 4); if(!sub.needsRebuild) { rebuildAllowance--; hasTriedRebuild = true; } } - if(!hasTriedRebuild && Math.abs(chunk.getKey().chunkXPos * chunk.getKey().chunkZPos) % 5 == cycles % 5 && world.getChunkProvider().chunkExists(chunk.getKey().chunkXPos, chunk.getKey().chunkZPos)) { + if(!hasTriedRebuild && Math.abs(coord.chunkXPos * coord.chunkZPos) % 5 == cycles % 5 && world.getChunkProvider().chunkExists(coord.chunkXPos, coord.chunkZPos)) { - Chunk c = world.getChunkFromChunkCoords(chunk.getKey().chunkXPos, chunk.getKey().chunkZPos); + Chunk c = world.getChunkFromChunkCoords(coord.chunkXPos, coord.chunkZPos); ExtendedBlockStorage[] xbs = c.getBlockStorageArray(); ExtendedBlockStorage subChunk = xbs[i]; int checksum = 0; @@ -219,7 +222,7 @@ public class ChunkRadiationHandlerPRISM extends ChunkRadiationHandler { } if(checksum != sub.checksum) { - sub.rebuild(world, chunk.getKey().chunkXPos << 4, i << 4, chunk.getKey().chunkZPos << 4); + sub.rebuild(world, coord.chunkXPos << 4, i << 4, coord.chunkZPos << 4); } } } @@ -257,7 +260,7 @@ public class ChunkRadiationHandlerPRISM extends ChunkRadiationHandler { } /** Returns the amount of radiation spread */ - private static float spreadRadiation(World world, SubChunk source, int y, ChunkCoordIntPair origin, SubChunk[] chunk, HashMap map, ForgeDirection dir) { + private static float spreadRadiation(World world, SubChunk source, int y, ChunkCoordIntPair origin, SubChunk[] chunk, ConcurrentHashMap map, ForgeDirection dir) { float spread = 0.1F; float amount = source.prevRadiation * spread; @@ -302,7 +305,7 @@ public class ChunkRadiationHandlerPRISM extends ChunkRadiationHandler { } public static class RadPerWorld { - public HashMap radiation = new HashMap(); + public ConcurrentHashMap radiation = new ConcurrentHashMap(); } public static class SubChunk { diff --git a/src/main/java/com/hbm/inventory/gui/GUIScreenPreview.java b/src/main/java/com/hbm/inventory/gui/GUIScreenPreview.java index 0165aa62d..a4e9fe0e7 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIScreenPreview.java +++ b/src/main/java/com/hbm/inventory/gui/GUIScreenPreview.java @@ -11,6 +11,7 @@ import net.minecraft.client.gui.ScaledResolution; import net.minecraft.client.renderer.OpenGlHelper; import net.minecraft.client.renderer.RenderHelper; import net.minecraft.client.renderer.Tessellator; +import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.util.ResourceLocation; @@ -54,10 +55,16 @@ public class GUIScreenPreview extends GuiScreen { this.drawTexturedModalRect(res.getScaledWidth_double() / 2D / zoom - 9D, res.getScaledHeight_double() / 2D / zoom - 9D, 5, 87, 18, 18); GL11.glPopMatrix(); + String nameString = Item.itemRegistry.getNameForObject(preview.getItem()) + ", " + preview.getItemDamage(); String zoomString = "Zoom: " + zoom; String scaleString = "Windows Scale: " + res.getScaleFactor(); - this.fontRendererObj.drawString(zoomString, this.width - this.fontRendererObj.getStringWidth(zoomString) - 2, this.height - 20, 0xff0000); - this.fontRendererObj.drawString(scaleString, this.width - this.fontRendererObj.getStringWidth(scaleString) - 2, this.height - 10, 0xff0000); + + GL11.glPushMatrix(); + GL11.glScaled(0.5, 0.5, 1); + this.fontRendererObj.drawString(zoomString, this.width * 2 - this.fontRendererObj.getStringWidth(zoomString) - 2, this.height * 2 - 35, 0xff0000); + this.fontRendererObj.drawString(scaleString, this.width * 2 - this.fontRendererObj.getStringWidth(scaleString) - 2, this.height * 2 - 25, 0xff0000); + this.fontRendererObj.drawString(nameString, this.width * 2 - this.fontRendererObj.getStringWidth(nameString) - 2, this.height * 2 - 15, 0xff0000); + GL11.glPopMatrix(); } public void drawTexturedModalRect(double x, double y, int sourceX, int sourceY, int sizeX, int sizeY) { diff --git a/src/main/java/com/hbm/inventory/recipes/AssemblerRecipes.java b/src/main/java/com/hbm/inventory/recipes/AssemblerRecipes.java index a1d19543e..4889d3a13 100644 --- a/src/main/java/com/hbm/inventory/recipes/AssemblerRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/AssemblerRecipes.java @@ -1269,26 +1269,21 @@ public class AssemblerRecipes extends SerializableRecipe { makeRecipe(new ComparableStack(ModBlocks.silo_hatch, 1), new AStack[]{new OreDictStack(STEEL.plateWelded(), 4), new ComparableStack(ModItems.plate_polymer, 4), new ComparableStack(ModItems.motor, 2), new OreDictStack(STEEL.bolt(), 16), new OreDictStack(KEY_GREEN, 4)}, 200); makeRecipe(new ComparableStack(ModBlocks.silo_hatch_large, 1), new AStack[]{new OreDictStack(STEEL.plateWelded(), 6), new ComparableStack(ModItems.plate_polymer, 8), new ComparableStack(ModItems.motor, 2), new OreDictStack(STEEL.bolt(), 16), new OreDictStack(KEY_GREEN, 8)}, 200); - if(Loader.isModLoaded("Mekanism")) { + if(GeneralConfig.enableMekanismChanges && Loader.isModLoaded("Mekanism")) { Block mb = (Block) Block.blockRegistry.getObject("Mekanism:MachineBlock"); if(mb != null) { makeRecipe(new ComparableStack(mb, 1, 4), new AStack[] { - new OreDictStack(DURA.ingot(), 16), - new OreDictStack(DESH.ingot(), 16), - new OreDictStack(STEEL.plateWelded(), 32), - new OreDictStack(CU.plateWelded(), 24), - new ComparableStack(ModItems.pipes_steel, 8), + new OreDictStack(BIGMT.plateCast(), 16), + new OreDictStack(CU.plateWelded(), 12), + new OreDictStack("alloyUltimate", 32), new ComparableStack(ModItems.circuit, 16, EnumCircuitType.BISMOID), - new ComparableStack(ModItems.wire_dense, 32, Mats.MAT_ALLOY.id), - new ComparableStack(ModBlocks.fusion_conductor, 12), - new ComparableStack(ModBlocks.capacitor_tantalium, 53), - new ComparableStack(ModItems.crystal_redstone, 16), - new ComparableStack(ModItems.crystal_diamond, 8), - new ComparableStack(ModItems.motor_bismuth, 4) - }, 15 * 60 * 20); + new ComparableStack(ModItems.circuit, 32, EnumCircuitType.CAPACITOR_BOARD), + new ComparableStack(ModItems.wire_dense, 32, Mats.MAT_GOLD.id), + new ComparableStack(ModItems.motor_bismuth, 3) + }, 1200); } } diff --git a/src/main/java/com/hbm/main/CraftingManager.java b/src/main/java/com/hbm/main/CraftingManager.java index 5e7868f28..dab2e5e44 100644 --- a/src/main/java/com/hbm/main/CraftingManager.java +++ b/src/main/java/com/hbm/main/CraftingManager.java @@ -1173,21 +1173,32 @@ public class CraftingManager { public static void crumple() { - if(Loader.isModLoaded("Mekanism")) { + List targets = new ArrayList(); + + if(GeneralConfig.enableMekanismChanges) { + + if(Loader.isModLoaded("Mekanism")) { + Block mb = (Block) Block.blockRegistry.getObject("Mekanism:MachineBlock"); + Item disassembler = (Item) Item.itemRegistry.getObject("Mekanism:AtomicDisassembler"); + targets.add(new ItemStack(mb, 1, 4)); // digiminer + targets.add(new ItemStack(disassembler)); // atomic disassembler + } + + if(Loader.isModLoaded("MekanismGenerators")) { + Block mb = (Block) Block.blockRegistry.getObject("MekanismGenerators:Generator"); + targets.add(new ItemStack(mb, 1, 6)); // wind turbine + } List toDestroy = new ArrayList(); - Block mb = (Block) Block.blockRegistry.getObject("Mekanism:MachineBlock"); - ItemStack digiminer = new ItemStack(mb, 1, 4); - for(Object o : net.minecraft.item.crafting.CraftingManager.getInstance().getRecipeList()) { if(o instanceof IRecipe) { IRecipe rec = (IRecipe)o; ItemStack stack = rec.getRecipeOutput(); - if(stack != null && stack.getItem() == digiminer.getItem() && stack.getItemDamage() == digiminer.getItemDamage()) { - toDestroy.add(rec); + for(ItemStack target : targets) { + if(stack != null && stack.getItem() == target.getItem() && stack.getItemDamage() == target.getItemDamage()) toDestroy.add(rec); } } } @@ -1195,6 +1206,18 @@ public class CraftingManager { if(toDestroy.size() > 0) { net.minecraft.item.crafting.CraftingManager.getInstance().getRecipeList().removeAll(toDestroy); } + + if(Loader.isModLoaded("Mekanism")) { + Item disassembler = (Item) Item.itemRegistry.getObject("Mekanism:AtomicDisassembler"); + + if(disassembler != null) addRecipeAuto(new ItemStack(disassembler, 1), "GAG", "EIE", " I ", 'G', GOLD.plateCast(), 'A', "alloyUltimate", 'E', "battery", 'I', "ingotRefinedObsidian"); + } + + if(Loader.isModLoaded("MekanismGenerators")) { + Block generator = (Block) Block.blockRegistry.getObject("MekanismGenerators:Generator"); + + if(generator != null) addRecipeAuto(new ItemStack(generator, 1, 6), " T ", "TAT", "BCB", 'T', TI.plateCast(), 'A', "alloyAdvanced", 'B', "battery", 'C', ANY_PLASTIC.ingot()); + } } } diff --git a/src/main/java/com/hbm/main/ModEventHandlerClient.java b/src/main/java/com/hbm/main/ModEventHandlerClient.java index f29158539..e9a5a6bfd 100644 --- a/src/main/java/com/hbm/main/ModEventHandlerClient.java +++ b/src/main/java/com/hbm/main/ModEventHandlerClient.java @@ -577,12 +577,10 @@ public class ModEventHandlerClient { } if(player.getCurrentArmor(2) == null && !player.isPotionActive(Potion.invisibility)) { - if(player.getUniqueID().toString().equals(ShadyUtil.HbMinecraft) || player.getDisplayName().equals("HbMinecraft")) - RenderAccessoryUtility.renderWings(event, 2); - if(player.getUniqueID().toString().equals(ShadyUtil.the_NCR) || player.getDisplayName().equals("the_NCR")) - RenderAccessoryUtility.renderWings(event, 3); - if(player.getUniqueID().toString().equals(ShadyUtil.Barnaby99_x) || player.getDisplayName().equals("pheo7")) - RenderAccessoryUtility.renderAxePack(event); + if(player.getUniqueID().toString().equals(ShadyUtil.HbMinecraft) || player.getDisplayName().equals("HbMinecraft")) RenderAccessoryUtility.renderWings(event, 2); + if(player.getUniqueID().toString().equals(ShadyUtil.the_NCR) || player.getDisplayName().equals("the_NCR")) RenderAccessoryUtility.renderWings(event, 3); + if(player.getUniqueID().toString().equals(ShadyUtil.Barnaby99_x) || player.getDisplayName().equals("pheo7")) RenderAccessoryUtility.renderAxePack(event); + if(player.getUniqueID().toString().equals(ShadyUtil.LePeeperSauvage) || player.getDisplayName().equals("LePeeperSauvage")) RenderAccessoryUtility.renderFaggot(event); } } diff --git a/src/main/java/com/hbm/main/ResourceManager.java b/src/main/java/com/hbm/main/ResourceManager.java index ad553a3cd..781c51d02 100644 --- a/src/main/java/com/hbm/main/ResourceManager.java +++ b/src/main/java/com/hbm/main/ResourceManager.java @@ -862,6 +862,7 @@ public class ResourceManager { public static final IModelCustom armor_mod_tesla = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/armor/mod_tesla.obj")); public static final IModelCustom armor_wings = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/armor/murk.obj")); public static final IModelCustom armor_axepack = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/armor/wings_pheo.obj")); + public static final IModelCustom armor_tail = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/armor/tail_peep.obj")); public static final IModelCustom player_manly_af = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/armor/player_fem.obj")); public static final IModelCustom armor_envsuit = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/armor/envsuit.obj")); public static final IModelCustom armor_trenchmaster = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/armor/trenchmaster.obj")); @@ -1026,6 +1027,7 @@ public class ResourceManager { public static final ResourceLocation wings_bob = new ResourceLocation(RefStrings.MODID, "textures/armor/wings_bob.png"); public static final ResourceLocation wings_black = new ResourceLocation(RefStrings.MODID, "textures/armor/wings_black.png"); public static final ResourceLocation wings_pheo = new ResourceLocation(RefStrings.MODID, "textures/armor/axepack.png"); + public static final ResourceLocation tail_peep = new ResourceLocation(RefStrings.MODID, "textures/armor/tail_peep.png"); public static final ResourceLocation hat = new ResourceLocation(RefStrings.MODID, "textures/armor/hat.png"); public static final ResourceLocation no9 = new ResourceLocation(RefStrings.MODID, "textures/armor/no9.png"); diff --git a/src/main/java/com/hbm/render/model/ModelArmorTailPeep.java b/src/main/java/com/hbm/render/model/ModelArmorTailPeep.java new file mode 100644 index 000000000..5a8cb8370 --- /dev/null +++ b/src/main/java/com/hbm/render/model/ModelArmorTailPeep.java @@ -0,0 +1,26 @@ +package com.hbm.render.model; + +import com.hbm.main.ResourceManager; +import com.hbm.render.loader.ModelRendererObj; + +import net.minecraft.client.Minecraft; +import net.minecraft.entity.Entity; + +public class ModelArmorTailPeep extends ModelArmorBase { + + ModelRendererObj tail; + + public ModelArmorTailPeep() { + super(0); + tail = new ModelRendererObj(ResourceManager.armor_tail, "FaggyAssFuckingTailThing"); + } + + @Override + public void render(Entity entity, float par2, float par3, float par4, float par5, float par6, float par7) { + setRotationAngles(par2, par3, par4, par5, par6, par7, entity); + body.copyTo(tail); + + Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.tail_peep); + tail.render(par7); + } +} diff --git a/src/main/java/com/hbm/render/util/RenderAccessoryUtility.java b/src/main/java/com/hbm/render/util/RenderAccessoryUtility.java index 2087547de..943faf575 100644 --- a/src/main/java/com/hbm/render/util/RenderAccessoryUtility.java +++ b/src/main/java/com/hbm/render/util/RenderAccessoryUtility.java @@ -2,6 +2,7 @@ package com.hbm.render.util; import com.hbm.lib.RefStrings; import com.hbm.main.MainRegistry; +import com.hbm.render.model.ModelArmorTailPeep; import com.hbm.render.model.ModelArmorWings; import com.hbm.render.model.ModelArmorWingsPheo; import com.hbm.util.ShadyUtil; @@ -184,4 +185,26 @@ public class RenderAccessoryUtility { axePackModel.render(event.entityPlayer, 0.0F, 0.0F, yawWrapped, yaw, pitch, 0.0625F); } + + private static ModelBiped tailModel; + public static void renderFaggot(RenderPlayerEvent.SetArmorModel event) { + + if(tailModel == null) + tailModel = new ModelArmorTailPeep(); + + RenderPlayer renderer = event.renderer; + ModelBiped model = renderer.modelArmor; + EntityPlayer player = event.entityPlayer; + + tailModel.isSneak = model.isSneak; + + float interp = event.partialRenderTick; + float yawHead = player.prevRotationYawHead + (player.rotationYawHead - player.prevRotationYawHead) * interp; + float yawOffset = player.prevRenderYawOffset + (player.renderYawOffset - player.prevRenderYawOffset) * interp; + float yaw = yawHead - yawOffset; + float yawWrapped = MathHelper.wrapAngleTo180_float(yawHead - yawOffset); + float pitch = player.rotationPitch; + + tailModel.render(event.entityPlayer, 0.0F, 0.0F, yawWrapped, yaw, pitch, 0.0625F); + } } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCrystallizer.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCrystallizer.java index 1482376ba..96e400b49 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCrystallizer.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCrystallizer.java @@ -119,7 +119,7 @@ public class TileEntityMachineCrystallizer extends TileEntityMachineBase impleme ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata() - 10); ForgeDirection rot = dir.getRotation(ForgeDirection.UP); - List players = worldObj.getEntitiesWithinAABB(EntityPlayer.class, AxisAlignedBB.getBoundingBox(xCoord + 0.25, yCoord + 1, zCoord + 0.25, xCoord + 0.75, yCoord + 5.875, zCoord + 0.75).offset(rot.offsetX * 1.5, 0, rot.offsetZ * 1.5)); + List players = worldObj.getEntitiesWithinAABB(EntityPlayer.class, AxisAlignedBB.getBoundingBox(xCoord + 0.25, yCoord + 1, zCoord + 0.25, xCoord + 0.75, yCoord + 6, zCoord + 0.75).offset(rot.offsetX * 1.5, 0, rot.offsetZ * 1.5)); for(EntityPlayer player : players) { HbmPlayerProps props = HbmPlayerProps.getData(player); diff --git a/src/main/java/com/hbm/tileentity/network/TileEntityConverterRfHe.java b/src/main/java/com/hbm/tileentity/network/TileEntityConverterRfHe.java index a41c62ce2..32242267d 100644 --- a/src/main/java/com/hbm/tileentity/network/TileEntityConverterRfHe.java +++ b/src/main/java/com/hbm/tileentity/network/TileEntityConverterRfHe.java @@ -35,9 +35,9 @@ public class TileEntityConverterRfHe extends TileEntityLoadedBase implements IEn @Untested @Override public int receiveEnergy(ForgeDirection from, int maxReceive, boolean simulate) { - - if(recursionBrake) - return 0; + + if(this.tileEntityInvalid) return 0; + if(recursionBrake) return 0; if(simulate) return maxReceive; diff --git a/src/main/java/com/hbm/util/ShadyUtil.java b/src/main/java/com/hbm/util/ShadyUtil.java index f416debc0..35ea12722 100644 --- a/src/main/java/com/hbm/util/ShadyUtil.java +++ b/src/main/java/com/hbm/util/ShadyUtil.java @@ -53,6 +53,7 @@ public class ShadyUtil { public static String Adam29Adam29 = "bbae7bfa-0eba-40ac-a0dd-f3b715e73e61"; public static String Alcater = "0b399a4a-8545-45a1-be3d-ece70d7d48e9"; public static String ege444 = "42ee978c-442a-4cd8-95b6-29e469b6df10"; + public static String LePeeperSauvage = "433c2bb7-018c-4d51-acfe-27f907432b5e"; public static final Set hashes = new HashSet(); static { diff --git a/src/main/resources/assets/hbm/models/armor/tail_peep.obj b/src/main/resources/assets/hbm/models/armor/tail_peep.obj new file mode 100644 index 000000000..737184c93 --- /dev/null +++ b/src/main/resources/assets/hbm/models/armor/tail_peep.obj @@ -0,0 +1,447 @@ +# Blender v2.79 (sub 0) OBJ File: '' +# www.blender.org +o FaggyAssFuckingTailThing +v -0.627682 10.005125 -0.450454 +v -0.000123 11.075396 0.277636 +v -0.000084 10.418571 -0.643246 +v 0.627711 10.005373 -0.450569 +v 0.798890 10.572883 0.567761 +v 0.388113 9.285591 -0.074662 +v -0.493534 9.759312 1.037476 +v -0.000153 10.383696 3.486781 +v -0.814369 10.383530 3.486841 +v -0.000151 9.759405 1.037423 +v -0.000151 9.285519 -0.074620 +v -0.387763 9.285445 -0.074578 +v -0.798885 10.572582 0.567935 +v 1.318130 11.840109 2.956691 +v 1.303919 10.780759 6.464269 +v 0.814971 10.383862 3.486721 +v -0.000243 12.739786 2.629235 +v -1.318200 11.839571 2.956887 +v 0.493946 9.759499 1.037369 +v -1.303027 10.780201 6.464366 +v -0.000150 9.794444 9.202967 +v -1.563645 9.794115 9.202877 +v -2.109154 13.221715 6.033862 +v -0.000424 14.731211 5.767698 +v -0.000150 10.780479 6.464317 +v 2.108972 13.222614 6.033704 +v -3.037204 8.839604 13.587263 +v -2.530998 12.667759 9.972871 +v -0.000522 14.444422 10.448926 +v 2.530752 12.668819 9.973157 +v 1.564689 9.794771 9.203056 +v -0.000772 3.865773 18.280907 +v -0.000633 10.105603 15.395302 +v 3.036897 8.840356 13.588348 +v 1.877619 6.792392 10.663549 +v -0.000148 6.792160 10.663214 +v -1.876381 6.791927 10.662880 +v 4.008683 -1.231076 17.008335 +v 3.644264 3.180661 15.724039 +v -0.000157 2.071596 11.584938 +v -2.251669 2.071471 11.584467 +v -3.644658 3.180254 15.722511 +v 2.253131 2.071720 11.585409 +v -0.000585 -5.243139 19.012844 +v 2.806094 -5.420787 16.982361 +v -2.476843 -1.641940 12.312111 +v -4.009130 -1.231225 17.006601 +v 2.478435 -1.641846 12.313181 +v -0.000858 -0.977296 19.909027 +v -0.000141 -1.641892 12.312647 +v 0.520518 -6.788428 15.666166 +v 1.734920 -5.708327 13.695753 +v -1.733776 -5.708388 13.695004 +v -2.806377 -5.420892 16.981148 +v -0.000133 -6.788437 15.666052 +v 0.841869 -6.702163 16.652149 +v -0.000133 -6.648875 17.261292 +v -0.841870 -6.702197 16.651783 +v -0.000135 -5.708357 13.695379 +v -0.520090 -6.788447 15.665939 +vt 0.710651 0.397343 +vt 0.673447 0.425869 +vt 0.686110 0.391250 +vt 0.640510 0.034849 +vt 0.603308 0.006319 +vt 0.627849 0.000228 +vt 0.752962 0.426119 +vt 0.711107 0.401105 +vt 0.736879 0.391250 +vt 0.932680 0.039627 +vt 0.948768 0.122001 +vt 0.922233 0.122004 +vt 0.961407 0.000228 +vt 0.948759 0.039625 +vt 0.948753 0.000230 +vt 0.952761 0.401105 +vt 0.910907 0.426121 +vt 0.926989 0.391250 +vt 0.655952 0.797121 +vt 0.676401 0.823580 +vt 0.663769 0.823582 +vt 0.790100 0.507814 +vt 0.746990 0.619172 +vt 0.738502 0.520352 +vt 0.609711 0.044182 +vt 0.672570 0.123097 +vt 0.620455 0.133276 +vt 0.940524 0.438709 +vt 0.873772 0.507814 +vt 0.704244 0.435206 +vt 0.641379 0.514115 +vt 0.723345 0.438709 +vt 0.906315 0.219899 +vt 0.948774 0.314756 +vt 0.897820 0.314756 +vt 0.687894 0.637069 +vt 0.603308 0.629110 +vt 0.948776 0.219895 +vt 0.626049 0.246054 +vt 0.916885 0.619168 +vt 0.832166 0.612780 +vt 0.819888 0.129973 +vt 0.737083 0.000228 +vt 0.897348 0.063686 +vt 0.703938 0.390793 +vt 0.603308 0.374429 +vt 0.856460 0.740857 +vt 0.807406 0.740873 +vt 0.711107 0.707398 +vt 0.610024 0.781808 +vt 0.547346 0.239308 +vt 0.393707 0.049939 +vt 0.602852 0.130282 +vt 0.819901 0.231924 +vt 0.737074 0.361669 +vt 0.711092 0.242118 +vt 0.884411 0.981518 +vt 0.711107 0.859180 +vt 0.923667 0.887428 +vt 0.711092 0.180923 +vt 0.711092 0.119777 +vt 0.910366 0.786348 +vt 0.743952 0.741330 +vt 0.393706 0.771551 +vt 0.208303 0.661960 +vt 0.355061 0.629918 +vt 0.494347 0.349574 +vt 0.337604 0.410716 +vt 0.337605 0.337340 +vt 0.547358 0.582179 +vt 0.355064 0.191572 +vt 0.494355 0.471915 +vt 0.337604 0.484150 +vt 0.092732 0.820324 +vt 0.074194 0.708811 +vt 0.214393 0.328358 +vt 0.206875 0.167042 +vt 0.214386 0.493131 +vt 0.208315 0.159535 +vt 0.234787 0.000228 +vt 0.214281 0.410714 +vt 0.214285 0.329999 +vt 0.068166 0.623727 +vt 0.001808 0.553219 +vt 0.073433 0.510806 +vt 0.073441 0.310677 +vt 0.068178 0.197756 +vt 0.206862 0.654446 +vt 0.092733 0.001179 +vt 0.074307 0.354217 +vt 0.613282 0.823429 +vt 0.623242 0.782265 +vt 0.655495 0.792745 +vt 0.018317 0.059452 +vt 0.023876 0.025998 +vt 0.074305 0.410716 +vt 0.001068 0.393780 +vt 0.018313 0.762053 +vt 0.001815 0.268262 +vt 0.000237 0.234386 +vt 0.655495 0.826658 +vt 0.623242 0.837137 +vt 0.214278 0.491490 +vt 0.696873 0.797121 +vt 0.689055 0.823582 +vt 0.964861 0.039622 +vt 0.975332 0.121997 +vt 0.001067 0.427694 +vt 0.001067 0.410726 +vt 0.074302 0.467260 +vt 0.991275 0.219891 +vt 0.936121 0.000232 +vt 0.999772 0.314756 +vt 0.676413 0.782265 +vt 0.831709 0.612784 +vt 0.925371 0.520351 +vt 0.693494 0.524297 +vt 0.710635 0.238095 +vt 0.952761 0.707388 +vt 0.710651 0.765428 +vt 0.897364 0.298208 +vt 0.712040 0.981518 +vt 0.819894 0.180926 +vt 0.234786 0.821264 +vt 0.494351 0.410719 +vt 0.602852 0.691211 +vt 0.000228 0.587095 +vt 0.074203 0.112694 +vt 0.603308 0.809701 +vt 0.023875 0.795507 +vn -0.5837 0.6621 -0.4701 +vn -0.5883 0.6607 -0.4663 +vn -0.5815 0.6623 -0.4724 +vn 0.5878 0.6613 -0.4661 +vn 0.5833 0.6623 -0.4702 +vn 0.5811 0.6626 -0.4726 +vn 0.9469 -0.3196 0.0349 +vn 0.9480 -0.3169 0.0288 +vn 0.9507 -0.3098 0.0128 +vn 0.0002 -0.9690 0.2470 +vn 0.0002 -0.9200 0.3920 +vn -0.9479 -0.3172 0.0290 +vn -0.9468 -0.3199 0.0351 +vn -0.9506 -0.3101 0.0130 +vn 0.0169 -0.4513 -0.8922 +vn 0.0088 -0.4569 -0.8895 +vn -0.0000 -0.4629 -0.8864 +vn 0.9333 -0.3447 -0.1003 +vn 0.9368 -0.3359 -0.0977 +vn 0.9276 -0.3586 -0.1045 +vn 0.5865 0.6617 -0.4671 +vn 0.5760 0.6649 -0.4756 +vn 0.5731 0.6659 -0.4778 +vn -0.9358 -0.3518 -0.0208 +vn -0.9386 -0.3435 -0.0310 +vn -0.9336 -0.3581 -0.0130 +vn -0.5869 0.6613 -0.4671 +vn -0.5764 0.6646 -0.4755 +vn 0.9360 -0.3514 -0.0210 +vn 0.9388 -0.3432 -0.0311 +vn 0.9403 -0.3384 -0.0370 +vn 0.0002 -0.9409 -0.3388 +vn -0.5692 0.6881 -0.4500 +vn -0.5630 0.6951 -0.4471 +vn -0.5578 0.7008 -0.4447 +vn 0.0002 -0.9912 0.1321 +vn 0.5689 0.6883 -0.4501 +vn 0.5626 0.6953 -0.4472 +vn 0.5765 0.6797 -0.4535 +vn -0.9332 -0.3451 -0.1002 +vn -0.9367 -0.3363 -0.0975 +vn -0.9402 -0.3271 -0.0947 +vn -0.9259 -0.1545 -0.3448 +vn -0.9311 -0.1294 -0.3411 +vn -0.9114 -0.2123 -0.3525 +vn 0.5780 0.8145 0.0508 +vn 0.5788 0.8138 0.0514 +vn 0.5800 0.8129 0.0522 +vn -0.9378 -0.3064 -0.1634 +vn -0.9396 -0.2981 -0.1685 +vn -0.9313 -0.3334 -0.1466 +vn 0.9379 -0.3060 -0.1633 +vn 0.9397 -0.2977 -0.1684 +vn 0.9453 -0.2678 -0.1864 +vn -0.5783 0.8142 0.0507 +vn -0.5792 0.8136 0.0513 +vn -0.5772 0.8151 0.0499 +vn -0.5820 0.3412 0.7381 +vn -0.5821 0.3411 0.7381 +vn -0.5819 0.3414 0.7382 +vn 0.9260 -0.1543 -0.3445 +vn 0.9312 -0.1292 -0.3407 +vn 0.9420 -0.0622 -0.3298 +vn -0.5565 0.6203 0.5528 +vn -0.5681 0.6094 0.5531 +vn -0.5461 0.6298 0.5524 +vn 0.0002 -0.4374 -0.8993 +vn 0.5562 0.6204 0.5529 +vn 0.5677 0.6096 0.5532 +vn 0.5787 0.5991 0.5534 +vn 0.5814 0.2653 0.7692 +vn 0.5812 0.2651 0.7694 +vn 0.5864 0.2707 0.7634 +vn 0.0002 -0.1916 -0.9815 +vn 0.0002 -0.1920 -0.9814 +vn 0.5817 0.3413 0.7384 +vn 0.5818 0.3412 0.7383 +vn 0.5820 0.3410 0.7383 +vn -0.9408 -0.0140 -0.3388 +vn -0.9427 -0.0059 -0.3337 +vn -0.9363 -0.0314 -0.3497 +vn 0.9409 -0.0139 -0.3384 +vn 0.9428 -0.0058 -0.3333 +vn 0.9468 0.0125 -0.3216 +vn 0.5707 -0.1688 0.8036 +vn -0.9497 -0.0087 -0.3130 +vn -0.9495 -0.0081 -0.3136 +vn -0.9509 -0.0115 -0.3094 +vn 0.9499 -0.0086 -0.3126 +vn 0.9496 -0.0080 -0.3132 +vn 0.9483 -0.0047 -0.3175 +vn -0.5817 0.2652 0.7689 +vn -0.5816 0.2651 0.7691 +vn -0.5770 0.2603 0.7741 +vn 0.0002 -0.1923 -0.9813 +vn 0.5559 -0.8240 -0.1091 +vn 0.5559 -0.8241 -0.1091 +vn -0.9236 -0.2635 -0.2784 +vn 0.9237 -0.2634 -0.2780 +vn -0.5710 -0.1688 0.8034 +vn 0.0002 -0.3219 -0.9468 +vn 0.0000 -0.9962 0.0872 +vn -0.3744 -0.7232 0.5803 +vn 0.0001 -0.8769 -0.4806 +vn 0.3742 -0.7232 0.5805 +vn -0.5558 -0.8241 -0.1093 +vn -0.0088 -0.4569 -0.8895 +vn -0.0168 -0.4513 -0.8922 +vn 0.0002 -0.9409 -0.3387 +vn 0.9442 -0.3257 0.0490 +vn -0.9441 -0.3261 0.0492 +vn 0.0209 -0.4484 -0.8936 +vn 0.9403 -0.3267 -0.0949 +vn -0.9402 -0.3387 -0.0368 +vn -0.5734 0.6656 -0.4777 +vn 0.9337 -0.3577 -0.0132 +vn -0.5768 0.6794 -0.4535 +vn 0.5574 0.7010 -0.4448 +vn -0.9275 -0.3589 -0.1044 +vn -0.9419 -0.0624 -0.3301 +vn 0.5768 0.8153 0.0500 +vn -0.9451 -0.2682 -0.1865 +vn 0.9315 -0.3329 -0.1465 +vn -0.5804 0.8127 0.0521 +vn -0.5823 0.3410 0.7380 +vn 0.9116 -0.2120 -0.3522 +vn -0.5791 0.5989 0.5532 +vn 0.0001 -0.4374 -0.8993 +vn 0.5457 0.6299 0.5526 +vn 0.5767 0.2603 0.7744 +vn 0.5815 0.3415 0.7384 +vn -0.9467 0.0124 -0.3220 +vn 0.9365 -0.0313 -0.3493 +vn -0.9481 -0.0048 -0.3179 +vn 0.9510 -0.0114 -0.3090 +vn -0.5868 0.2706 0.7632 +vn -0.0209 -0.4484 -0.8936 +s 1 +f 1/1/1 2/2/2 3/3/3 +f 2/4/4 4/5/5 3/6/6 +f 5/7/7 6/8/8 4/9/9 +f 7/10/10 8/11/10 9/12/10 +f 6/13/11 10/14/11 11/15/11 +f 12/16/12 13/17/13 1/18/14 +f 1/19/15 11/20/16 12/21/17 +f 14/22/18 15/23/19 16/24/20 +f 5/25/21 17/26/22 14/27/23 +f 7/28/24 18/29/25 13/17/26 +f 13/30/27 17/31/28 2/2/2 +f 19/32/29 14/22/30 16/24/31 +f 20/33/32 21/34/32 22/35/32 +f 17/31/33 23/36/34 24/37/35 +f 9/12/36 25/38/36 20/33/36 +f 17/26/37 26/39/38 14/27/39 +f 18/29/40 20/40/41 23/41/42 +f 22/42/43 27/43/44 28/44/45 +f 26/39/46 29/45/47 30/46/48 +f 20/40/49 28/47/50 23/41/51 +f 15/23/52 30/48/53 31/49/54 +f 23/36/55 29/50/56 24/37/57 +f 27/51/58 32/52/59 33/53/60 +f 31/54/61 34/55/62 35/56/63 +f 28/57/64 33/58/65 29/59/66 +f 22/42/67 36/60/67 37/61/67 +f 30/62/68 33/58/69 34/63/70 +f 32/64/71 38/65/72 39/66/73 +f 37/67/74 40/68/75 41/69/75 +f 34/70/76 32/64/77 39/66/78 +f 37/67/79 42/71/80 27/51/81 +f 35/72/82 39/66/83 43/73/84 +f 38/65/85 44/74/85 45/75/85 +f 42/71/86 46/76/87 47/77/88 +f 39/66/89 48/78/90 43/73/91 +f 32/52/92 47/79/93 49/80/94 +f 41/69/75 50/81/95 46/82/95 +f 45/83/96 51/84/97 52/85/96 +f 47/77/98 53/86/98 54/87/98 +f 38/88/99 52/85/99 48/78/99 +f 47/79/100 44/89/100 49/80/100 +f 50/81/101 53/90/101 46/82/101 +f 55/91/102 56/92/102 57/93/102 +f 44/89/103 58/94/103 57/95/103 +f 59/96/104 60/97/104 53/90/104 +f 44/74/105 56/98/105 45/75/105 +f 54/87/106 60/99/106 58/100/106 +f 55/91/102 58/101/102 60/102/102 +f 50/81/95 43/73/75 48/103/95 +f 11/20/107 4/104/108 6/105/17 +f 8/11/10 19/106/10 16/107/10 +f 59/96/104 51/108/104 55/109/104 +f 50/81/101 52/110/101 59/96/101 +f 25/38/36 16/107/36 15/111/36 +f 10/14/11 12/112/11 11/15/11 +f 40/68/75 35/72/74 43/73/75 +f 36/60/67 31/54/67 35/56/67 +f 21/34/32 15/111/32 31/113/109 +f 1/1/1 13/30/27 2/2/2 +f 2/4/4 5/25/21 4/5/5 +f 5/7/7 19/32/110 6/8/8 +f 7/10/10 10/14/10 8/11/10 +f 6/13/11 19/106/11 10/14/11 +f 12/16/12 7/28/111 13/17/13 +f 1/19/15 3/114/112 11/20/16 +f 14/22/18 26/115/113 15/23/19 +f 5/25/21 2/4/4 17/26/22 +f 7/28/24 9/116/114 18/29/25 +f 13/30/27 18/117/115 17/31/28 +f 19/32/29 5/7/116 14/22/30 +f 20/33/32 25/38/32 21/34/32 +f 17/31/33 18/117/117 23/36/34 +f 9/12/36 8/11/36 25/38/36 +f 17/26/37 24/118/118 26/39/38 +f 18/29/40 9/116/119 20/40/41 +f 22/42/43 37/61/120 27/43/44 +f 26/39/46 24/118/121 29/45/47 +f 20/40/49 22/119/122 28/47/50 +f 15/23/52 26/115/123 30/48/53 +f 23/36/55 28/120/124 29/50/56 +f 27/51/58 42/71/125 32/52/59 +f 31/54/61 30/121/126 34/55/62 +f 28/57/64 27/122/127 33/58/65 +f 22/42/67 21/123/128 36/60/67 +f 30/62/68 29/59/129 33/58/69 +f 32/64/71 49/124/130 38/65/72 +f 37/67/74 36/125/74 40/68/75 +f 34/70/76 33/126/131 32/64/77 +f 37/67/79 41/69/132 42/71/80 +f 35/72/82 34/70/133 39/66/83 +f 38/65/85 49/124/85 44/74/85 +f 42/71/86 41/69/134 46/76/87 +f 39/66/89 38/88/135 48/78/90 +f 32/52/92 42/71/136 47/79/93 +f 41/69/75 40/68/75 50/81/95 +f 45/83/96 56/127/97 51/84/97 +f 47/77/98 46/76/98 53/86/98 +f 38/88/99 45/83/99 52/85/99 +f 47/79/100 54/128/100 44/89/100 +f 50/81/101 59/96/101 53/90/101 +f 55/91/102 51/129/102 56/92/102 +f 44/89/103 54/128/103 58/94/103 +f 59/96/104 55/109/104 60/97/104 +f 44/74/105 57/130/105 56/98/105 +f 54/87/106 53/86/106 60/99/106 +f 55/91/102 57/93/102 58/101/102 +f 50/81/95 40/68/75 43/73/75 +f 11/20/107 3/114/137 4/104/108 +f 8/11/10 10/14/10 19/106/10 +f 59/96/104 52/110/104 51/108/104 +f 50/81/101 48/103/101 52/110/101 +f 25/38/36 8/11/36 16/107/36 +f 10/14/11 7/10/11 12/112/11 +f 40/68/75 36/125/74 35/72/74 +f 36/60/67 21/123/128 31/54/67 +f 21/34/32 25/38/32 15/111/32 diff --git a/src/main/resources/assets/hbm/textures/armor/tail_peep.png b/src/main/resources/assets/hbm/textures/armor/tail_peep.png new file mode 100644 index 0000000000000000000000000000000000000000..ae222d9f498ab0e07bde5e67e67a7ddd2998089a GIT binary patch literal 668 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 F{TJx8nRWmG literal 0 HcmV?d00001 From 485fbd35da9eb39e8be647e4c16aaec646ba0310 Mon Sep 17 00:00:00 2001 From: Boblet Date: Mon, 24 Jun 2024 16:29:49 +0200 Subject: [PATCH 58/69] combinator funnel item caching --- changelog | 1 + .../hbm/handler/nei/NEIUniversalHandler.java | 17 ++++++-- .../inventory/recipes/AssemblerRecipes.java | 2 +- src/main/java/com/hbm/items/ItemEnums.java | 4 ++ src/main/java/com/hbm/items/ModItems.java | 6 +-- src/main/java/com/hbm/main/MainRegistry.java | 1 + .../java/com/hbm/main/ModEventHandler.java | 41 ++++++++---------- src/main/java/com/hbm/main/NEIConfig.java | 3 +- .../machine/TileEntityMachineFunnel.java | 20 ++++++++- src/main/resources/assets/hbm/lang/de_DE.lang | 2 + src/main/resources/assets/hbm/lang/en_US.lang | 2 + ...cret.canister => item_secret.canister.png} | Bin .../textures/items/item_secret.controller.png | Bin 0 -> 380 bytes 13 files changed, 65 insertions(+), 34 deletions(-) rename src/main/resources/assets/hbm/textures/items/{item_secret.canister => item_secret.canister.png} (100%) create mode 100644 src/main/resources/assets/hbm/textures/items/item_secret.controller.png diff --git a/changelog b/changelog index 779837ef2..0c583cd7e 100644 --- a/changelog +++ b/changelog @@ -17,6 +17,7 @@ * Decreased crafting complexity and time for the digiminer assembler recipe * Replaced recipes for the wind turbine and atomic disassembler * Added a config option for toggling Mekanism compat +* Added recipe caching to the combinator funnel, meaning it no longer has to iterate over the entire recipe list all the time for compression/automation, this should improve performance by a fair bit ## Fixed * Fixed crash caused by PRISM updating unloaded worlds diff --git a/src/main/java/com/hbm/handler/nei/NEIUniversalHandler.java b/src/main/java/com/hbm/handler/nei/NEIUniversalHandler.java index 776755b75..df241808f 100644 --- a/src/main/java/com/hbm/handler/nei/NEIUniversalHandler.java +++ b/src/main/java/com/hbm/handler/nei/NEIUniversalHandler.java @@ -11,6 +11,7 @@ import java.util.List; import java.util.Map.Entry; import com.hbm.handler.imc.ICompatNHNEI; +import com.hbm.items.ModItems; import com.hbm.lib.RefStrings; import com.hbm.util.InventoryUtil; @@ -243,9 +244,13 @@ public abstract class NEIUniversalHandler extends TemplateRecipeHandler implemen if(outputId.equals(getKey())) { - for(Entry recipe : recipes.entrySet()) { + outer: for(Entry recipe : recipes.entrySet()) { ItemStack[][] ins = InventoryUtil.extractObject(recipe.getKey()); ItemStack[][] outs = InventoryUtil.extractObject(recipe.getValue()); + + for(ItemStack[] array : ins) for(ItemStack stack : array) if(stack.getItem() == ModItems.item_secret) continue outer; + for(ItemStack[] array : outs) for(ItemStack stack : array) if(stack.getItem() == ModItems.item_secret) continue outer; + this.arecipes.add(new RecipeSet(ins, outs, recipe.getKey())); } @@ -257,10 +262,13 @@ public abstract class NEIUniversalHandler extends TemplateRecipeHandler implemen @Override public void loadCraftingRecipes(ItemStack result) { - for(Entry recipe : recipes.entrySet()) { + outer: for(Entry recipe : recipes.entrySet()) { ItemStack[][] ins = InventoryUtil.extractObject(recipe.getKey()); ItemStack[][] outs = InventoryUtil.extractObject(recipe.getValue()); + for(ItemStack[] array : ins) for(ItemStack stack : array) if(stack.getItem() == ModItems.item_secret) continue outer; + for(ItemStack[] array : outs) for(ItemStack stack : array) if(stack.getItem() == ModItems.item_secret) continue outer; + match: for(ItemStack[] array : outs) { for(ItemStack stack : array) { @@ -285,10 +293,13 @@ public abstract class NEIUniversalHandler extends TemplateRecipeHandler implemen @Override public void loadUsageRecipes(ItemStack ingredient) { - for(Entry recipe : recipes.entrySet()) { + outer: for(Entry recipe : recipes.entrySet()) { ItemStack[][] ins = InventoryUtil.extractObject(recipe.getKey()); ItemStack[][] outs = InventoryUtil.extractObject(recipe.getValue()); + for(ItemStack[] array : ins) for(ItemStack stack : array) if(stack.getItem() == ModItems.item_secret) continue outer; + for(ItemStack[] array : outs) for(ItemStack stack : array) if(stack.getItem() == ModItems.item_secret) continue outer; + match: for(ItemStack[] array : ins) { for(ItemStack stack : array) { diff --git a/src/main/java/com/hbm/inventory/recipes/AssemblerRecipes.java b/src/main/java/com/hbm/inventory/recipes/AssemblerRecipes.java index 4889d3a13..3ede78d79 100644 --- a/src/main/java/com/hbm/inventory/recipes/AssemblerRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/AssemblerRecipes.java @@ -131,7 +131,7 @@ public class AssemblerRecipes extends SerializableRecipe { makeRecipe(new ComparableStack(ModBlocks.machine_schrabidium_battery, 1), new AStack[] {new OreDictStack(DESH.ingot(), 4), new OreDictStack(NP237.dust(), 12), new OreDictStack(SA326.dust(), 12), new OreDictStack(SA326.ingot(), 2), new OreDictStack(SA326.wireFine(), 4), },800); makeRecipe(new ComparableStack(ModBlocks.machine_dineutronium_battery, 1), new AStack[] {new OreDictStack(DNT.ingot(), 24), new ComparableStack(ModItems.powder_spark_mix, 12), new ComparableStack(ModItems.battery_spark_cell_1000, 1), new OreDictStack(CMB.ingot(), 32), new ComparableStack(ModItems.coil_magnetized_tungsten, 8), },1600); makeRecipe(new ComparableStack(ModBlocks.machine_shredder, 1), new AStack[] {new OreDictStack(STEEL.plate528(), 8), new ComparableStack(ModItems.motor, 2), new ComparableStack(ModBlocks.steel_beam, 2), new ComparableStack(Blocks.iron_bars, 2) },200); - makeRecipe(new ComparableStack(ModBlocks.machine_well, 1), new AStack[] {new ComparableStack(ModBlocks.steel_scaffold, 20), new ComparableStack(ModItems.tank_steel, 2), new ComparableStack(ModItems.motor, 1), new ComparableStack(ModItems.pipes_steel, 1), new ComparableStack(ModItems.drill_titanium, 1), new OreDictStack(MINGRADE.wireFine(), 6), },250); + makeRecipe(new ComparableStack(ModBlocks.machine_well, 1), new AStack[] {new ComparableStack(ModBlocks.steel_scaffold, 20), new ComparableStack(ModItems.tank_steel, 2), new ComparableStack(ModItems.motor, 1), new ComparableStack(ModItems.pipes_steel, 1), new ComparableStack(ModItems.drill_titanium, 1) }, 200); makeRecipe(new ComparableStack(ModBlocks.machine_pumpjack, 1), new AStack[] {new ComparableStack(ModBlocks.steel_scaffold, 8), new OreDictStack(STEEL.plateWelded(), 8), new ComparableStack(ModItems.pipes_steel, 4), new ComparableStack(ModItems.tank_steel, 4), new OreDictStack(STEEL.plate(), 32), new ComparableStack(ModItems.drill_titanium, 1), new ComparableStack(ModItems.motor_desh) }, 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 OreDictStack(STEEL.pipe(), 8), new OreDictStack(STEEL.shell(), 4), new ComparableStack(ModItems.thermo_element, 3), },200); makeRecipe(new ComparableStack(ModBlocks.machine_coker, 1), new AStack[] {!exp ? new OreDictStack(STEEL.plateWelded(), 3) : new OreDictStack(STEEL.heavyComp(), 2), new OreDictStack(IRON.ingot(), 16), new OreDictStack(CU.plate528(), 8), new OreDictStack(RUBBER.ingot(), 4), new ComparableStack(ModItems.tank_steel, 2), new ComparableStack(ModBlocks.steel_grate, 4) },200); diff --git a/src/main/java/com/hbm/items/ItemEnums.java b/src/main/java/com/hbm/items/ItemEnums.java index cfc8072df..8e4592d72 100644 --- a/src/main/java/com/hbm/items/ItemEnums.java +++ b/src/main/java/com/hbm/items/ItemEnums.java @@ -75,4 +75,8 @@ public class ItemEnums { public static enum EnumPages { PAGE1, PAGE2, PAGE3, PAGE4, PAGE5, PAGE6, PAGE7, PAGE8 } + + public static enum EnumSecretType { + CANISTER, CONTROLLER + } } diff --git a/src/main/java/com/hbm/items/ModItems.java b/src/main/java/com/hbm/items/ModItems.java index aaa4508e1..801e6db41 100644 --- a/src/main/java/com/hbm/items/ModItems.java +++ b/src/main/java/com/hbm/items/ModItems.java @@ -347,6 +347,7 @@ public class ModItems { public static Item thruster_nuclear; public static Item safety_fuse; public static Item part_generic; + public static Item item_secret; public static Item chemical_dye; public static Item crayon; @@ -675,7 +676,6 @@ public class ModItems { public static Item dysfunctional_reactor; public static Item blade_titanium; public static Item turbine_titanium; - public static Item generator_front; public static Item blade_tungsten; public static Item turbine_tungsten; public static Item pellet_coal; @@ -2614,6 +2614,7 @@ public class ModItems { thruster_nuclear = new Item().setUnlocalizedName("thruster_nuclear").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":thruster_nuclear"); safety_fuse = new Item().setUnlocalizedName("safety_fuse").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":safety_fuse"); part_generic = new ItemGenericPart().setUnlocalizedName("part_generic").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":part_generic"); + item_secret = new ItemEnumMulti(EnumSecretType.class, true, true).setUnlocalizedName("item_secret").setCreativeTab(null).setTextureName(RefStrings.MODID + ":item_secret"); chemical_dye = new ItemChemicalDye().setUnlocalizedName("chemical_dye").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":chemical_dye"); crayon = new ItemCrayon().setUnlocalizedName("crayon").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":crayon"); @@ -3029,7 +3030,6 @@ public class ModItems { dysfunctional_reactor = new Item().setUnlocalizedName("dysfunctional_reactor").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":dysfunctional_reactor"); blade_titanium = new Item().setUnlocalizedName("blade_titanium").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":blade_titanium"); turbine_titanium = new Item().setUnlocalizedName("turbine_titanium").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":turbine_titanium"); - generator_front = new Item().setUnlocalizedName("generator_front").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":generator_front"); blade_tungsten = new Item().setUnlocalizedName("blade_tungsten").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":blade_tungsten"); turbine_tungsten = new Item().setUnlocalizedName("turbine_tungsten").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":turbine_tungsten"); @@ -6151,6 +6151,7 @@ public class ModItems { GameRegistry.registerItem(chemical_dye, chemical_dye.getUnlocalizedName()); GameRegistry.registerItem(crayon, crayon.getUnlocalizedName()); GameRegistry.registerItem(part_generic, part_generic.getUnlocalizedName()); + GameRegistry.registerItem(item_secret, item_secret.getUnlocalizedName()); GameRegistry.registerItem(parts_legendary, parts_legendary.getUnlocalizedName()); GameRegistry.registerItem(gear_large, gear_large.getUnlocalizedName()); GameRegistry.registerItem(sawblade, sawblade.getUnlocalizedName()); @@ -6180,7 +6181,6 @@ public class ModItems { GameRegistry.registerItem(turbine_titanium, turbine_titanium.getUnlocalizedName()); GameRegistry.registerItem(turbine_tungsten, turbine_tungsten.getUnlocalizedName()); GameRegistry.registerItem(flywheel_beryllium, flywheel_beryllium.getUnlocalizedName()); - GameRegistry.registerItem(generator_front, generator_front.getUnlocalizedName()); GameRegistry.registerItem(toothpicks, toothpicks.getUnlocalizedName()); GameRegistry.registerItem(ducttape, ducttape.getUnlocalizedName()); GameRegistry.registerItem(catalyst_clay, catalyst_clay.getUnlocalizedName()); diff --git a/src/main/java/com/hbm/main/MainRegistry.java b/src/main/java/com/hbm/main/MainRegistry.java index 5d21de386..b5d663e6e 100644 --- a/src/main/java/com/hbm/main/MainRegistry.java +++ b/src/main/java/com/hbm/main/MainRegistry.java @@ -1338,6 +1338,7 @@ public class MainRegistry { ignoreMappings.add("hbm:tile.ore_daffergon"); ignoreMappings.add("hbm:tile.ore_verticium"); ignoreMappings.add("hbm:item.warhead_mirvlet"); + ignoreMappings.add("hbm:item.generator_front"); /// REMAP /// remapItems.put("hbm:item.gadget_explosive8", ModItems.early_explosive_lenses); diff --git a/src/main/java/com/hbm/main/ModEventHandler.java b/src/main/java/com/hbm/main/ModEventHandler.java index 572aeb47d..35e25e94b 100644 --- a/src/main/java/com/hbm/main/ModEventHandler.java +++ b/src/main/java/com/hbm/main/ModEventHandler.java @@ -6,12 +6,13 @@ import java.util.Iterator; import java.util.List; import java.util.Locale; import java.util.Map; -import java.util.Map.Entry; import java.util.Random; +import java.util.UUID; import org.apache.commons.lang3.math.NumberUtils; import org.apache.logging.log4j.Level; +import com.google.common.collect.HashMultimap; import com.google.common.collect.Multimap; import com.hbm.blocks.IStepTickReceiver; import com.hbm.blocks.ModBlocks; @@ -41,10 +42,6 @@ import com.hbm.handler.HTTPHandler; import com.hbm.handler.HbmKeybinds.EnumKeybind; import com.hbm.handler.pollution.PollutionHandler; import com.hbm.handler.pollution.PollutionHandler.PollutionType; -import com.hbm.handler.radiation.ChunkRadiationHandlerPRISM; -import com.hbm.handler.radiation.ChunkRadiationHandlerPRISM.RadPerWorld; -import com.hbm.handler.radiation.ChunkRadiationHandlerPRISM.SubChunk; -import com.hbm.handler.radiation.ChunkRadiationManager; import com.hbm.items.IEquipReceiver; import com.hbm.items.ModItems; import com.hbm.items.armor.ArmorFSB; @@ -92,6 +89,8 @@ import net.minecraft.enchantment.Enchantment; import net.minecraft.enchantment.EnchantmentHelper; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLivingBase; +import net.minecraft.entity.SharedMonsterAttributes; +import net.minecraft.entity.ai.attributes.AttributeModifier; import net.minecraft.entity.item.EntityItem; import net.minecraft.entity.monster.EntityCaveSpider; import net.minecraft.entity.monster.EntityCreeper; @@ -123,7 +122,6 @@ import net.minecraft.util.EnumChatFormatting; import net.minecraft.util.FoodStats; import net.minecraft.util.MathHelper; import net.minecraft.util.Vec3; -import net.minecraft.world.ChunkCoordIntPair; import net.minecraft.world.World; import net.minecraftforge.common.util.FakePlayer; import net.minecraftforge.common.util.ForgeDirection; @@ -854,6 +852,8 @@ public class ModEventHandler { ((ArmorFSB)((EntityPlayer)e).inventory.armorInventory[2].getItem()).handleFall((EntityPlayer)e); } + private static final UUID fopSpeed = UUID.fromString("e5a8c95d-c7a0-4ecf-8126-76fb8c949389"); + @SubscribeEvent public void onWingFlop(TickEvent.PlayerTickEvent event) { @@ -973,6 +973,17 @@ public class ModEventHandler { } } } + + if(player.getUniqueID().toString().equals(ShadyUtil.LePeeperSauvage) || player.getDisplayName().equals("LePeeperSauvage")) { + + Multimap multimap = HashMultimap.create(); + multimap.put(SharedMonsterAttributes.movementSpeed.getAttributeUnlocalizedName(), new AttributeModifier(fopSpeed, "FOP SPEED", 0.5, 1)); + player.getAttributeMap().removeAttributeModifiers(multimap); + + if(player.isSprinting()) { + player.getAttributeMap().applyAttributeModifiers(multimap); + } + } } } @@ -1066,31 +1077,13 @@ public class ModEventHandler { /// SYNC END /// } - //TODO: rewrite this so it doesn't look like shit if(player.worldObj.isRemote && event.phase == event.phase.START && !player.isInvisible() && !player.isSneaking()) { - if(player.getUniqueID().toString().equals(ShadyUtil.HbMinecraft)) { - - int i = player.ticksExisted * 3; - - Vec3 vec = Vec3.createVectorHelper(3, 0, 0); - - vec.rotateAroundY((float) (i * Math.PI / 180D)); - - for(int k = 0; k < 5; k++) { - - vec.rotateAroundY((float) (1F * Math.PI / 180D)); - //player.worldObj.spawnParticle("townaura", player.posX + vec.xCoord, player.posY + 1 + player.worldObj.rand.nextDouble() * 0.05, player.posZ + vec.zCoord, 0.0, 0.0, 0.0); - } - } - if(player.getUniqueID().toString().equals(ShadyUtil.Pu_238)) { Vec3 vec = Vec3.createVectorHelper(3 * rand.nextDouble(), 0, 0); - vec.rotateAroundZ((float) (rand.nextDouble() * Math.PI)); vec.rotateAroundY((float) (rand.nextDouble() * Math.PI * 2)); - player.worldObj.spawnParticle("townaura", player.posX + vec.xCoord, player.posY + 1 + vec.yCoord, player.posZ + vec.zCoord, 0.0, 0.0, 0.0); } } diff --git a/src/main/java/com/hbm/main/NEIConfig.java b/src/main/java/com/hbm/main/NEIConfig.java index f40158fe1..a2b9b5215 100644 --- a/src/main/java/com/hbm/main/NEIConfig.java +++ b/src/main/java/com/hbm/main/NEIConfig.java @@ -36,7 +36,8 @@ public class NEIConfig implements IConfigureNEI { //Some things are even beyond my control...or are they? API.hideItem(ItemBattery.getEmptyBattery(ModItems.memory)); API.hideItem(ItemBattery.getFullBattery(ModItems.memory)); - + + API.hideItem(new ItemStack(ModItems.item_secret)); API.hideItem(new ItemStack(ModBlocks.machine_electric_furnace_on)); API.hideItem(new ItemStack(ModBlocks.machine_difurnace_on)); API.hideItem(new ItemStack(ModBlocks.machine_nuke_furnace_on)); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineFunnel.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineFunnel.java index 3b7a8f6fd..23ec51164 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineFunnel.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineFunnel.java @@ -1,6 +1,9 @@ package com.hbm.tileentity.machine; +import java.util.HashMap; + import com.hbm.interfaces.IControlReceiver; +import com.hbm.inventory.RecipesCommon.ComparableStack; import com.hbm.inventory.container.ContainerFunnel; import com.hbm.inventory.gui.GUIFunnel; import com.hbm.tileentity.IGUIProvider; @@ -96,24 +99,37 @@ public class TileEntityMachineFunnel extends TileEntityMachineBase implements IG @Override public boolean isItemValidForSlot(int slot, ItemStack stack) { if(slot > 8) return false; + if(slots[slot] != null) return true; //if the slot is already occupied, return true because then the same type merging skips the validity check return this.getFrom9(stack) != null || this.getFrom4(stack) != null; } protected InventoryCraftingAuto craftingInventory = new InventoryCraftingAuto(3, 3); + + //hashmap lookups are way faster than iterating over the entire ass crafting list all the fucking time + public static final HashMap from4Cache = new HashMap(); + public static final HashMap from9Cache = new HashMap(); public ItemStack getFrom4(ItemStack ingredient) { + ComparableStack singular = new ComparableStack(ingredient).makeSingular(); + if(from4Cache.containsKey(singular)) return from4Cache.get(singular); this.craftingInventory.clear(); this.craftingInventory.setInventorySlotContents(0, ingredient.copy()); this.craftingInventory.setInventorySlotContents(1, ingredient.copy()); this.craftingInventory.setInventorySlotContents(3, ingredient.copy()); this.craftingInventory.setInventorySlotContents(4, ingredient.copy()); - return getMatch(this.craftingInventory); + ItemStack match = getMatch(this.craftingInventory); + from4Cache.put(singular, match != null ? match.copy() : null); + return match; } public ItemStack getFrom9(ItemStack ingredient) { + ComparableStack singular = new ComparableStack(ingredient).makeSingular(); + if(from9Cache.containsKey(singular)) return from9Cache.get(singular); this.craftingInventory.clear(); for(int i = 0; i < 9; i++) this.craftingInventory.setInventorySlotContents(i, ingredient.copy()); - return getMatch(this.craftingInventory); + ItemStack match = getMatch(this.craftingInventory); + from9Cache.put(singular, match != null ? match.copy() : null); + return match; } public ItemStack getMatch(InventoryCrafting grid) { diff --git a/src/main/resources/assets/hbm/lang/de_DE.lang b/src/main/resources/assets/hbm/lang/de_DE.lang index cf2fcd61d..e87ccd894 100644 --- a/src/main/resources/assets/hbm/lang/de_DE.lang +++ b/src/main/resources/assets/hbm/lang/de_DE.lang @@ -2273,6 +2273,8 @@ item.insert_polonium.name=Poloniumeinlage item.insert_steel.name=Schwere Stahleinlage item.insert_xsapi.name=XSAPI-Einlage item.insert_yharonite.name=Yharoniteinlage +item.item_secret.canister.name=Komposit SB-26 +item.item_secret.controller.name=Proprietäre Steuereinheit item.iv_blood.name=Blutbeutel item.iv_empty.name=Infusionsbeutel item.iv_xp.name=Erfahrungsbeutel diff --git a/src/main/resources/assets/hbm/lang/en_US.lang b/src/main/resources/assets/hbm/lang/en_US.lang index 31de7f94a..4d6007cde 100644 --- a/src/main/resources/assets/hbm/lang/en_US.lang +++ b/src/main/resources/assets/hbm/lang/en_US.lang @@ -3073,6 +3073,8 @@ item.insert_polonium.name=Polonium Insert item.insert_steel.name=Heavy Steel Insert item.insert_xsapi.name=XSAPI Insert item.insert_yharonite.name=Yharonite Insert +item.item_secret.canister.name=Composition SB-26 +item.item_secret.controller.name=Proprietary Control Unit item.iv_blood.name=Blood Bag item.iv_empty.name=IV Bag item.iv_xp.name=Experience Bag diff --git a/src/main/resources/assets/hbm/textures/items/item_secret.canister b/src/main/resources/assets/hbm/textures/items/item_secret.canister.png similarity index 100% rename from src/main/resources/assets/hbm/textures/items/item_secret.canister rename to src/main/resources/assets/hbm/textures/items/item_secret.canister.png diff --git a/src/main/resources/assets/hbm/textures/items/item_secret.controller.png b/src/main/resources/assets/hbm/textures/items/item_secret.controller.png new file mode 100644 index 0000000000000000000000000000000000000000..cb1095c9a7d9a012ded46f795293ccbb48f1daf8 GIT binary patch literal 380 zcmV-?0fYXDP)dU^XExy^GL6p${NFK&f+QU%@A^ z9Xck9nH1VZRA@jQ46TZFvq1tbaY%BxH;v*Vc;IsG{kh-aod3XIMA~Ylzx}&f294p+ zINq|P_VV>HVZ3A)>`)5H~ Date: Tue, 25 Jun 2024 16:11:19 +0200 Subject: [PATCH 59/69] slop textures --- .../textures/gui/processing/gui_ore_slopper.png | Bin 0 -> 4332 bytes .../assets/hbm/textures/items/bedrock_ore.png | Bin 0 -> 2400 bytes 2 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 src/main/resources/assets/hbm/textures/gui/processing/gui_ore_slopper.png create mode 100644 src/main/resources/assets/hbm/textures/items/bedrock_ore.png diff --git a/src/main/resources/assets/hbm/textures/gui/processing/gui_ore_slopper.png b/src/main/resources/assets/hbm/textures/gui/processing/gui_ore_slopper.png new file mode 100644 index 0000000000000000000000000000000000000000..50b928eb72c1cb09dfedfeae11dda007f5dacba2 GIT binary patch literal 4332 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 KtvT;`?|%S13hlE1 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/items/bedrock_ore.png b/src/main/resources/assets/hbm/textures/items/bedrock_ore.png new file mode 100644 index 0000000000000000000000000000000000000000..e2687f007dd40c69db4a4dd9f1c0ffa480cc046a GIT binary patch literal 2400 zcmV-m37__fP) zSe0AQhtN=n>>q_v^wrAlz6jzqP~z>w(hJqAWYLFsy`oX%P7Rvknl!l)y2&^(HjSmI z+a$+_-QVQQ*_qkd{AqGYeh}_tX1>4k`~J>3v*-IeC!-Fc7+U5BWJqJ%Re({Sy#d*X zc=QBJY}=LE==iC)XQfg}&CbpO&}y~PW!A8@wKe7YK9*$xVB0pX>yppsQ~Rq_DkB7M zHl8SpbW|#pR6d`lP$;mvx{Bv{6E!Tv0lM8T0J&Ta%d)U-n@*?0zJ2==eF^bwHXGo@ zpXYgFW6=|r^zO(5oxI+AX%ivjg}CQ=Arg+`(CKvOcDvN;^+-RJN=0R}*%0YmE=RZ9 zrBEmU&~CRQ$=oxHJZ&P<#L(*`}YUK?C8;> z%C_wQCs>`lZQJ<1kLP);udjy!sZ=Ve*=&Y-E{?p3)h&v=bXb&4ndDv91qh7*JrRvY zgF>Oe!otFcGuL&oZ9BNuaWeNU%L=B1X^lpMTCFxh+;NY`zh?)X& zKby_cZnv>*n`*ThJX>F1XKrqeUatobIiJOc=XtEGtb|5dE|&}b=}DOC_xpIB$IQ$O ztE;OlEG LXx5PycvK=R))XX>q35cc{zk{wOW}{sT6z!Whx4JAo9a!;`90ZNP@H3 zEGsK3fiHdJW`N*hHa9mH08X7c#o@z;gFupcUQGXr%NjyROXDVS(_{fwE|-H3o&+4% zu8EiHe!m}ZlJ);L7%8G=Zf=fBrJ~}b zsh+r`Qj~5wdFd@(Nt(5Te!m}^1kdwA#3gxgu>=l8If*P^G*BEq;Spcf|61V65A!6mgX z$xmys35W}5(l2?O7EkN%cGU#No2~{YG<6WQ(ed}a78v{tN)~TIPj7VmgL=T-*5h{@ zA1j97=GWu5x~G3D_=(kE)UgtAQY;pM(DqnZ8J^B$^kJvtWMf1&Od`dUffpZ9_>s0_ z+83;@Wwae?W#S{nkRE`TWm%NVui`+jJXb$)(6c7Y^#(IYx`b#)cnwnsKxO-mvV194`? z5Uc~5&1T>vin!xAq0LG&_+qgb1gewPhqB{1fh3LcBRKPr1q^n5%>qXf-Xt%ZrsiH{ zFa>09UfL4dh+Hm*@B6_ai^avo#3ivL z+uWGdMV%Rc=o?@jP|%5sqc{Q*a4we%&H_aF0wSl7m>%Hb;v)HcKK5PH%n=~|bVUnc zVHH{mOYksAhE6<*e5=*Un8Qm(1Kc1VcP>C|ZEY>M_B@ZJrKODAOIurj!3faL80qrZ zRHKRO0A0>bPfw@XBh(K?iRsmxI3Mz>5~BixGmCN7YPB-GUQYqRNi=EO^Snq|55olL zhZE#0cUzC&ZTx*-4;ZNl=HSp9a8ZF$pf17L z7hrcZl8;T-&Hh`)LTE?*w}yK)uOZ{biB zE(eD+oVozry|5YBbsR1zQ2&PWE!dle$EVK^99>CET(=B-@#+A-2Cx}E_&7ZEYxswP zcVC7tk8$w@9WVAGoQX?-f%~(5b055P5q`OKkdTnYRfVr#AO0N^Xrw8)rjN^O@a{?Y z*&g`(I(*=(@WZbskA&+{Iq0%5eY7cdnZ(n!0xA^bQZ3qZz(wCxCf8|?WEB(H~W;7$O11fE<6?-}@b9AMnOz=y^>pV+$41^5{3 zoCNnJ`0g|C$+Yi329Ny&+ONa6ehla0-W#_NdOLN5DeWR$9A0is@%pa+!haNGrs1KN z(l@j1=diLBX8s4yZiAQ45dCZMzV8e@0*?$Y(f6BQ;Kirm!;`dkM?Qj^!9Fuw zA3UEtpJP9wDce0EHx9zD6sR}hN0T_Z)pbDVcRT}IJ^@c28!kwG0S8m!|1@E{vi|ss z+}i}X*PyT9`uE_8u}*ftb6xOcMdib(=OJ}rZYO->4fy8}-}m7B6?o@7oc$fV@)g*X zgwMfq8ea9_^=IMHaqULnPVN~leD=W+1?nnXJ_(1z$PK=~|KNPUE!urw5BNWbfsB2E S?!WH<0000 Date: Wed, 26 Jun 2024 15:19:45 +0200 Subject: [PATCH 60/69] bedrock ore item autogen --- changelog | 2 + src/main/java/com/hbm/items/ModItems.java | 5 +- .../hbm/items/special/ItemBedrockOreNew.java | 133 ++++++++++++++++++ .../java/com/hbm/main/CraftingManager.java | 2 +- .../assets/hbm/textures/items/bedrock_ore.png | Bin 2400 -> 2968 bytes .../hbm/textures/items/bedrock_ore_final.png | Bin 0 -> 2606 bytes .../hbm/textures/items/wire_aluminium.png | Bin 397 -> 461 bytes 7 files changed, 140 insertions(+), 2 deletions(-) create mode 100644 src/main/java/com/hbm/items/special/ItemBedrockOreNew.java create mode 100644 src/main/resources/assets/hbm/textures/items/bedrock_ore_final.png diff --git a/changelog b/changelog index 0c583cd7e..64f839ba2 100644 --- a/changelog +++ b/changelog @@ -18,6 +18,8 @@ * Replaced recipes for the wind turbine and atomic disassembler * Added a config option for toggling Mekanism compat * Added recipe caching to the combinator funnel, meaning it no longer has to iterate over the entire recipe list all the time for compression/automation, this should improve performance by a fair bit +* Diodes now use silicon nuggets instead of nether quartz +* Aluminium wire's coloring is now consistent with the ingot ## Fixed * Fixed crash caused by PRISM updating unloaded worlds diff --git a/src/main/java/com/hbm/items/ModItems.java b/src/main/java/com/hbm/items/ModItems.java index 801e6db41..95cf47526 100644 --- a/src/main/java/com/hbm/items/ModItems.java +++ b/src/main/java/com/hbm/items/ModItems.java @@ -213,6 +213,7 @@ public class ModItems { public static Item ore_seared; //public static Item ore_radcleaned; public static Item ore_enriched; //final stage + public static Item bedrock_ore; public static Item billet_uranium; public static Item billet_u233; @@ -1085,7 +1086,7 @@ public class ModItems { public static Item waste_u233; public static Item waste_u235; public static Item waste_schrabidium; - public static Item waste_zfb_mox; //TODO: remind me to smite these useless waste items and condense em like the rbmk waste + public static Item waste_zfb_mox; public static Item waste_plate_u233; public static Item waste_plate_u235; @@ -2720,6 +2721,7 @@ public class ModItems { ore_seared = new ItemBedrockOre().setUnlocalizedName("ore_seared").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":ore_seared"); //ore_radcleaned = new ItemBedrockOre().setUnlocalizedName("ore_radcleaned").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":ore_radcleaned"); ore_enriched = new ItemBedrockOre().setUnlocalizedName("ore_enriched").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":ore_enriched"); + bedrock_ore = new ItemBedrockOreNew().setUnlocalizedName("bedrock_ore").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":bedrock_ore_base"); ingot_lanthanium = new ItemCustomLore().setUnlocalizedName("ingot_lanthanium").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":ingot_lanthanium"); ingot_actinium = new ItemCustomLore().setUnlocalizedName("ingot_actinium").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":ingot_actinium"); @@ -5940,6 +5942,7 @@ public class ModItems { //GameRegistry.registerItem(ore_radcleaned, ore_radcleaned.getUnlocalizedName()); GameRegistry.registerItem(ore_enriched, ore_enriched.getUnlocalizedName()); GameRegistry.registerItem(ore_byproduct, ore_byproduct.getUnlocalizedName()); + GameRegistry.registerItem(bedrock_ore, bedrock_ore.getUnlocalizedName()); //Crystals GameRegistry.registerItem(crystal_coal, crystal_coal.getUnlocalizedName()); diff --git a/src/main/java/com/hbm/items/special/ItemBedrockOreNew.java b/src/main/java/com/hbm/items/special/ItemBedrockOreNew.java new file mode 100644 index 000000000..e8534972f --- /dev/null +++ b/src/main/java/com/hbm/items/special/ItemBedrockOreNew.java @@ -0,0 +1,133 @@ +package com.hbm.items.special; + +import static com.hbm.inventory.OreDictManager.*; + +import java.util.List; + +import com.hbm.items.ModItems; +import com.hbm.util.EnumUtil; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; + +import com.hbm.items.ItemEnums.EnumChunkType; +import com.hbm.lib.RefStrings; + +import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.creativetab.CreativeTabs; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.util.IIcon; + +public class ItemBedrockOreNew extends Item { + + public IIcon[] icons = new IIcon[BedrockOreType.values().length * BedrockOreGrade.values().length]; + + @Override + @SideOnly(Side.CLIENT) + public void registerIcons(IIconRegister reg) { + super.registerIcons(reg); + + for(int i = 0; i < BedrockOreGrade.values().length; i++) { + BedrockOreGrade grade = BedrockOreGrade.values()[i]; + for(int j = 0; j < BedrockOreType.values().length; j++) { + BedrockOreType type = BedrockOreType.values()[j]; + this.icons[i * BedrockOreType.values().length + j] = reg.registerIcon(RefStrings.MODID + ":bedrock_ore_" + grade.prefix + "_" + type.suffix); + } + } + } + + @Override + @SideOnly(Side.CLIENT) + public void getSubItems(Item item, CreativeTabs tab, List list) { + + for(int i = 0; i < BedrockOreGrade.values().length; i++) { + BedrockOreGrade grade = BedrockOreGrade.values()[i]; + for(int j = 0; j < BedrockOreType.values().length; j++) { + BedrockOreType type = BedrockOreType.values()[j]; + list.add(this.make(grade, type)); + } + } + } + + @Override + @SideOnly(Side.CLIENT) + public IIcon getIconFromDamageForRenderPass(int meta, int pass) { + int icon = this.getGrade(meta).ordinal() * BedrockOreType.values().length + this.getType(meta).ordinal(); + return icons[Math.abs(icon % icons.length)]; + } + + public static enum BedrockOreType { + // primary sulfuric solvent radsolvent + LIGHT_METAL( "light", IRON, CU, TI, AL, AL, CHLOROCALCITE, LI, NA, CHLOROCALCITE, LI, NA), + HEAVY_METAL( "heavy", W, PB, GOLD, GOLD, BE, W, PB, GOLD, BI, BI, GOLD), + RARE_EARTH( "rare", CO, DictFrame.fromOne(ModItems.chunk_ore, EnumChunkType.RARE), B, LA, NB, ND, B, ZR, CO, ND, ZR), + ACTINIDE( "actinide", U, TH232, RA226, RA226, PO210, RA226, RA226, PO210, TC99, TC99, U238), + NON_METAL( "nonmetal", COAL, S, LIGNITE, KNO, F, P_RED, F, S, CHLOROCALCITE, SI, SI), + CRYSTALLINE( "crystal", DIAMOND, SODALITE, CINNABAR, ASBESTOS, REDSTONE, CINNABAR, ASBESTOS, EMERALD, BORAX, MOLYSITE, SODALITE); + + public String suffix; + public Object primary1, primary2; + public Object byproductAcid1, byproductAcid2, byproductAcid3; + public Object byproductSolvent1, byproductSolvent2, byproductSolvent3; + public Object byproductRad1, byproductRad2, byproductRad3; + + private BedrockOreType(String suffix, Object p1, Object p2, Object bA1, Object bA2, Object bA3, Object bS1, Object bS2, Object bS3, Object bR1, Object bR2, Object bR3) { + this.suffix = suffix; + this.primary1 = p1; this.primary2 = p2; + this.byproductAcid1 = bA1; this.byproductAcid2 = bA2; this.byproductAcid3 = bA3; + this.byproductSolvent1 = bS1; this.byproductSolvent2 = bS2; this.byproductSolvent3 = bS3; + this.byproductRad1 = bR1; this.byproductRad2 = bR2; this.byproductRad3 = bR3; + } + } + + public static enum BedrockOreGrade { + BASE("base"), //from the slopper + BASE_ROASTED("base"), //optional combination oven step, yields vitriol + BASE_WASHED("base"), //primitive-ass acidizer with water + PRIMARY("primary"), //centrifuging for more primary + PRIMARY_ROASTED("primary"), //optional comboven + PRIMARY_SULFURIC("primary"), //sulfuric acid + PRIMARY_NOSULFURIC("primary"), //from centrifuging, sulfuric byproduct removed + PRIMARY_SOLVENT("primary"), //solvent + PRIMARY_NOSOLVENT("primary"), //solvent byproduct removed + PRIMARY_RAD("primary"), //radsolvent + PRIMARY_NORAD("primary"), //radsolvent byproduct removed + PRIMARY_FIRST("primary"), //higher first material yield + PRIMARY_SECOND("primary"), //higher second material yield + CRUMBS("crumbs"), //endpoint for primary, recycling + + SULFURIC_BYPRODUCT("sulfuric"), //from centrifuging + SULFURIC_ROASTED("sulfuric"), //comboven again + SULFURIC_ARC("sulfuric"), //alternate step + SULFURIC_WASHED("sulfuric"), //sulfuric endpoint + + SOLVENT_BYPRODUCT("solvent"), //from centrifuging + SOLVENT_ROASTED("solvent"), //comboven again + SOLVENT_ARC("solvent"), //alternate step + SOLVENT_WASHED("solvent"), //solvent endpoint + + RAD_BYPRODUCT("rad"), //from centrifuging + RAD_ROASTED("rad"), //comboven again + RAD_ARC("rad"), //alternate step + RAD_WASHED("rad"); //rad endpoint + + public String prefix; + + private BedrockOreGrade(String prefix) { + this.prefix = prefix; + } + } + + public static ItemStack make(BedrockOreGrade grade, BedrockOreType type) { + return new ItemStack(ModItems.bedrock_ore, 1, grade.ordinal() << 4 | type.ordinal()); + } + + public BedrockOreGrade getGrade(int meta) { + return EnumUtil.grabEnumSafely(BedrockOreGrade.class, meta >> 4); + } + + public BedrockOreType getType(int meta) { + return EnumUtil.grabEnumSafely(BedrockOreType.class, meta & 15); + } +} diff --git a/src/main/java/com/hbm/main/CraftingManager.java b/src/main/java/com/hbm/main/CraftingManager.java index dab2e5e44..a349a3ac8 100644 --- a/src/main/java/com/hbm/main/CraftingManager.java +++ b/src/main/java/com/hbm/main/CraftingManager.java @@ -254,7 +254,7 @@ public class CraftingManager { addRecipeAuto(new ItemStack(ModBlocks.red_cable_paintable, 16), new Object[] { "WRW", "RIR", "WRW", 'W', STEEL.plate(), 'I', MINGRADE.ingot(), 'R', MINGRADE.wireFine() }); addRecipeAuto(new ItemStack(ModBlocks.cable_switch, 1), new Object[] { "S", "W", 'S', Blocks.lever, 'W', ModBlocks.red_wire_coated }); addRecipeAuto(new ItemStack(ModBlocks.cable_detector, 1), new Object[] { "S", "W", 'S', REDSTONE.dust(), 'W', ModBlocks.red_wire_coated }); - addRecipeAuto(new ItemStack(ModBlocks.cable_diode, 1), new Object[] { " Q ", "CAC", " Q ", 'Q', NETHERQUARTZ.gem(), 'C', ModBlocks.red_cable, 'A', AL.ingot() }); + addRecipeAuto(new ItemStack(ModBlocks.cable_diode, 1), new Object[] { " Q ", "CAC", " Q ", 'Q', SI.nugget(), 'C', ModBlocks.red_cable, 'A', AL.ingot() }); addRecipeAuto(new ItemStack(ModBlocks.machine_detector, 1), new Object[] { "IRI", "CTC", "IRI", 'I', ModItems.plate_polymer, 'R', REDSTONE.dust(), 'C', MINGRADE.wireFine(), 'T', ModItems.coil_tungsten }); addRecipeAuto(new ItemStack(ModBlocks.red_cable, 16), new Object[] { " W ", "RRR", " W ", 'W', ModItems.plate_polymer, 'R', MINGRADE.wireFine() }); addShapelessAuto(new ItemStack(ModBlocks.red_cable_classic, 1), new Object[] { ModBlocks.red_cable }); diff --git a/src/main/resources/assets/hbm/textures/items/bedrock_ore.png b/src/main/resources/assets/hbm/textures/items/bedrock_ore.png index e2687f007dd40c69db4a4dd9f1c0ffa480cc046a..e62d194c0add58a16bc781470bf8876dda628bdd 100644 GIT binary patch literal 2968 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 O0000 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 Q0ssI207*qoM6N<$g7}dcN&o-= literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/items/wire_aluminium.png b/src/main/resources/assets/hbm/textures/items/wire_aluminium.png index e4c210ec1c941721a6c03056aa321efbe0c709f6..a3ff6c135709fcc39df6418938d83f22fb891b64 100644 GIT binary patch delta 434 zcmV;j0Zsmm1I+`FC4X~5NmK|32nc)#WQYI&0fb3JK~y-6rBY2x0#Ot_qvHpP%*I6_ zR0J)Gpg-fPUC<&h3W^p%(ZY6-D}@$8Ah>ZUy6`u&iZt`1u^Pur8w<$+XXedq7udWk z>MZX)AMYL>@J|T5VO8l85y7%7`2BtuhJmHIX)agfiF3Ie7=L5%dc7D72Cys(C0QlL z7*-Z$gl`Qh4;{+q^Vo~6JJLd-5SgZl%0q`1XQ#NY!R_NS#ZQwo;bfGX?TLHTTD@-x zwN~%P00&C4N>}wqsw!PdoLxA?+*=gwo%;Pgg25ot=`;d?0Nidjx0|s+Rq2vxnkWIC>+RZSBfXd9sEwZ#9(*6b3Ie*VHP18hO*U`3ZGze zTmV>><*@)_*9HoK!)teF15K`R#dzU7PmzQRn5HQNg|Hk~G0+7aAsD)S(*t-vj^hw2 zJC4I9wQWmPRcg_?uDk~5EC*yDDF^}z!%#pj@+M*APeo+NKT`={1qg>*bKkctOK}ZZ zP=x@vt}8^eEQ|Ji7gOOXbzKWTR*?Bh@)fv(VHlL>ITc00u6J|%4Vv}~N-wpkRk{=< P00000NkvXXu0mjfaiW(C From 65d9f82b7d2f50996f48b6cb64cc41841e904caf Mon Sep 17 00:00:00 2001 From: Bob Date: Wed, 26 Jun 2024 21:51:32 +0200 Subject: [PATCH 61/69] slop --- src/main/java/com/hbm/blocks/ModBlocks.java | 3 + .../hbm/blocks/machine/MachineOreSlopper.java | 31 + .../hbm/items/special/ItemBedrockOreNew.java | 124 +- src/main/java/com/hbm/main/ClientProxy.java | 1 + .../java/com/hbm/main/ResourceManager.java | 2 + .../render/tileentity/RenderOreSlopper.java | 95 + .../machine/TileEntityMachineOreSlopper.java | 21 + .../hbm/models/machines/ore_slopper.obj | 4345 +++++++++++++++++ .../items/bedrock_ore_base_actinide.png | Bin 0 -> 275 bytes .../items/bedrock_ore_base_crystal.png | Bin 0 -> 275 bytes .../textures/items/bedrock_ore_base_heavy.png | Bin 0 -> 275 bytes .../textures/items/bedrock_ore_base_light.png | Bin 0 -> 275 bytes .../items/bedrock_ore_base_nonmetal.png | Bin 0 -> 275 bytes .../textures/items/bedrock_ore_base_rare.png | Bin 0 -> 275 bytes .../items/bedrock_ore_crumbs_actinide.png | Bin 0 -> 299 bytes .../items/bedrock_ore_crumbs_crystal.png | Bin 0 -> 299 bytes .../items/bedrock_ore_crumbs_heavy.png | Bin 0 -> 299 bytes .../items/bedrock_ore_crumbs_light.png | Bin 0 -> 299 bytes .../items/bedrock_ore_crumbs_nonmetal.png | Bin 0 -> 299 bytes .../items/bedrock_ore_crumbs_rare.png | Bin 0 -> 299 bytes .../hbm/textures/items/bedrock_ore_final.png | Bin 2606 -> 2758 bytes .../items/bedrock_ore_primary_actinide.png | Bin 0 -> 259 bytes .../items/bedrock_ore_primary_crystal.png | Bin 0 -> 236 bytes .../items/bedrock_ore_primary_heavy.png | Bin 0 -> 290 bytes .../items/bedrock_ore_primary_light.png | Bin 0 -> 288 bytes .../items/bedrock_ore_primary_nonmetal.png | Bin 0 -> 279 bytes .../items/bedrock_ore_primary_rare.png | Bin 0 -> 259 bytes .../items/bedrock_ore_rad_actinide.png | Bin 0 -> 380 bytes .../items/bedrock_ore_rad_crystal.png | Bin 0 -> 190 bytes .../textures/items/bedrock_ore_rad_heavy.png | Bin 0 -> 214 bytes .../textures/items/bedrock_ore_rad_light.png | Bin 0 -> 266 bytes .../items/bedrock_ore_rad_nonmetal.png | Bin 0 -> 249 bytes .../textures/items/bedrock_ore_rad_rare.png | Bin 0 -> 380 bytes .../items/bedrock_ore_solvent_actinide.png | Bin 0 -> 308 bytes .../items/bedrock_ore_solvent_crystal.png | Bin 0 -> 254 bytes .../items/bedrock_ore_solvent_heavy.png | Bin 0 -> 239 bytes .../items/bedrock_ore_solvent_light.png | Bin 0 -> 291 bytes .../items/bedrock_ore_solvent_nonmetal.png | Bin 0 -> 244 bytes .../items/bedrock_ore_solvent_rare.png | Bin 0 -> 308 bytes .../items/bedrock_ore_sulfuric_actinide.png | Bin 0 -> 293 bytes .../items/bedrock_ore_sulfuric_crystal.png | Bin 0 -> 225 bytes .../items/bedrock_ore_sulfuric_heavy.png | Bin 0 -> 274 bytes .../items/bedrock_ore_sulfuric_light.png | Bin 0 -> 357 bytes .../items/bedrock_ore_sulfuric_nonmetal.png | Bin 0 -> 257 bytes .../items/bedrock_ore_sulfuric_rare.png | Bin 0 -> 293 bytes .../hbm/textures/models/weapons/lag.png | Bin 0 -> 2838 bytes 46 files changed, 4575 insertions(+), 47 deletions(-) create mode 100644 src/main/java/com/hbm/blocks/machine/MachineOreSlopper.java create mode 100644 src/main/java/com/hbm/render/tileentity/RenderOreSlopper.java create mode 100644 src/main/java/com/hbm/tileentity/machine/TileEntityMachineOreSlopper.java create mode 100644 src/main/resources/assets/hbm/models/machines/ore_slopper.obj create mode 100644 src/main/resources/assets/hbm/textures/items/bedrock_ore_base_actinide.png create mode 100644 src/main/resources/assets/hbm/textures/items/bedrock_ore_base_crystal.png create mode 100644 src/main/resources/assets/hbm/textures/items/bedrock_ore_base_heavy.png create mode 100644 src/main/resources/assets/hbm/textures/items/bedrock_ore_base_light.png create mode 100644 src/main/resources/assets/hbm/textures/items/bedrock_ore_base_nonmetal.png create mode 100644 src/main/resources/assets/hbm/textures/items/bedrock_ore_base_rare.png create mode 100644 src/main/resources/assets/hbm/textures/items/bedrock_ore_crumbs_actinide.png create mode 100644 src/main/resources/assets/hbm/textures/items/bedrock_ore_crumbs_crystal.png create mode 100644 src/main/resources/assets/hbm/textures/items/bedrock_ore_crumbs_heavy.png create mode 100644 src/main/resources/assets/hbm/textures/items/bedrock_ore_crumbs_light.png create mode 100644 src/main/resources/assets/hbm/textures/items/bedrock_ore_crumbs_nonmetal.png create mode 100644 src/main/resources/assets/hbm/textures/items/bedrock_ore_crumbs_rare.png create mode 100644 src/main/resources/assets/hbm/textures/items/bedrock_ore_primary_actinide.png create mode 100644 src/main/resources/assets/hbm/textures/items/bedrock_ore_primary_crystal.png create mode 100644 src/main/resources/assets/hbm/textures/items/bedrock_ore_primary_heavy.png create mode 100644 src/main/resources/assets/hbm/textures/items/bedrock_ore_primary_light.png create mode 100644 src/main/resources/assets/hbm/textures/items/bedrock_ore_primary_nonmetal.png create mode 100644 src/main/resources/assets/hbm/textures/items/bedrock_ore_primary_rare.png create mode 100644 src/main/resources/assets/hbm/textures/items/bedrock_ore_rad_actinide.png create mode 100644 src/main/resources/assets/hbm/textures/items/bedrock_ore_rad_crystal.png create mode 100644 src/main/resources/assets/hbm/textures/items/bedrock_ore_rad_heavy.png create mode 100644 src/main/resources/assets/hbm/textures/items/bedrock_ore_rad_light.png create mode 100644 src/main/resources/assets/hbm/textures/items/bedrock_ore_rad_nonmetal.png create mode 100644 src/main/resources/assets/hbm/textures/items/bedrock_ore_rad_rare.png create mode 100644 src/main/resources/assets/hbm/textures/items/bedrock_ore_solvent_actinide.png create mode 100644 src/main/resources/assets/hbm/textures/items/bedrock_ore_solvent_crystal.png create mode 100644 src/main/resources/assets/hbm/textures/items/bedrock_ore_solvent_heavy.png create mode 100644 src/main/resources/assets/hbm/textures/items/bedrock_ore_solvent_light.png create mode 100644 src/main/resources/assets/hbm/textures/items/bedrock_ore_solvent_nonmetal.png create mode 100644 src/main/resources/assets/hbm/textures/items/bedrock_ore_solvent_rare.png create mode 100644 src/main/resources/assets/hbm/textures/items/bedrock_ore_sulfuric_actinide.png create mode 100644 src/main/resources/assets/hbm/textures/items/bedrock_ore_sulfuric_crystal.png create mode 100644 src/main/resources/assets/hbm/textures/items/bedrock_ore_sulfuric_heavy.png create mode 100644 src/main/resources/assets/hbm/textures/items/bedrock_ore_sulfuric_light.png create mode 100644 src/main/resources/assets/hbm/textures/items/bedrock_ore_sulfuric_nonmetal.png create mode 100644 src/main/resources/assets/hbm/textures/items/bedrock_ore_sulfuric_rare.png create mode 100644 src/main/resources/assets/hbm/textures/models/weapons/lag.png diff --git a/src/main/java/com/hbm/blocks/ModBlocks.java b/src/main/java/com/hbm/blocks/ModBlocks.java index 4d4cf4afa..7488f693f 100644 --- a/src/main/java/com/hbm/blocks/ModBlocks.java +++ b/src/main/java/com/hbm/blocks/ModBlocks.java @@ -978,6 +978,7 @@ public class ModBlocks { public static Block machine_electrolyser; public static Block machine_excavator; + public static Block machine_ore_slopper; public static Block machine_autosaw; public static Block machine_mining_laser; @@ -2184,6 +2185,7 @@ public class ModBlocks { machine_coker = new MachineCoker(Material.iron).setBlockName("machine_coker").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); machine_autosaw = new MachineAutosaw().setBlockName("machine_autosaw").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); machine_excavator = new MachineExcavator().setBlockName("machine_excavator").setHardness(5.0F).setResistance(100.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); + machine_ore_slopper = new MachineOreSlopper().setBlockName("machine_ore_slopper").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); machine_mining_laser = new MachineMiningLaser(Material.iron).setBlockName("machine_mining_laser").setHardness(5.0F).setResistance(100.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":machine_mining_laser"); barricade = new BlockNoDrop(Material.sand).setBlockName("barricade").setHardness(1.0F).setResistance(2.5F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":barricade"); machine_assembler = new MachineAssembler(Material.iron).setBlockName("machine_assembler").setHardness(5.0F).setResistance(30.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":machine_assembler"); @@ -3258,6 +3260,7 @@ public class ModBlocks { register(machine_coker); register(machine_autosaw); register(machine_excavator); + register(machine_ore_slopper); register(machine_mining_laser); register(barricade); register(machine_turbofan); diff --git a/src/main/java/com/hbm/blocks/machine/MachineOreSlopper.java b/src/main/java/com/hbm/blocks/machine/MachineOreSlopper.java new file mode 100644 index 000000000..24b11eae7 --- /dev/null +++ b/src/main/java/com/hbm/blocks/machine/MachineOreSlopper.java @@ -0,0 +1,31 @@ +package com.hbm.blocks.machine; + +import com.hbm.blocks.BlockDummyable; +import com.hbm.tileentity.machine.TileEntityMachineOreSlopper; + +import net.minecraft.block.material.Material; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.world.World; + +public class MachineOreSlopper extends BlockDummyable { + + public MachineOreSlopper() { + super(Material.iron); + } + + @Override + public TileEntity createNewTileEntity(World world, int meta) { + if(meta >= 12) return new TileEntityMachineOreSlopper(); + return null; + } + + @Override + public int[] getDimensions() { + return new int[] {3, 0, 3, 3, 1, 1}; + } + + @Override + public int getOffset() { + return 3; + } +} diff --git a/src/main/java/com/hbm/items/special/ItemBedrockOreNew.java b/src/main/java/com/hbm/items/special/ItemBedrockOreNew.java index e8534972f..c561cd214 100644 --- a/src/main/java/com/hbm/items/special/ItemBedrockOreNew.java +++ b/src/main/java/com/hbm/items/special/ItemBedrockOreNew.java @@ -12,8 +12,11 @@ import cpw.mods.fml.relauncher.SideOnly; import com.hbm.items.ItemEnums.EnumChunkType; import com.hbm.lib.RefStrings; +import com.hbm.render.icon.RGBMutatorInterpolatedComponentRemap; +import com.hbm.render.icon.TextureAtlasSpriteMutatable; import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.client.renderer.texture.TextureMap; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; @@ -26,13 +29,18 @@ public class ItemBedrockOreNew extends Item { @Override @SideOnly(Side.CLIENT) public void registerIcons(IIconRegister reg) { - super.registerIcons(reg); + - for(int i = 0; i < BedrockOreGrade.values().length; i++) { - BedrockOreGrade grade = BedrockOreGrade.values()[i]; - for(int j = 0; j < BedrockOreType.values().length; j++) { - BedrockOreType type = BedrockOreType.values()[j]; - this.icons[i * BedrockOreType.values().length + j] = reg.registerIcon(RefStrings.MODID + ":bedrock_ore_" + grade.prefix + "_" + type.suffix); + if(reg instanceof TextureMap) { + TextureMap map = (TextureMap) reg; + + for(int i = 0; i < BedrockOreGrade.values().length; i++) { BedrockOreGrade grade = BedrockOreGrade.values()[i]; + for(int j = 0; j < BedrockOreType.values().length; j++) { BedrockOreType type = BedrockOreType.values()[j]; + String placeholderName = RefStrings.MODID + ":bedrock_ore_" + grade.prefix + "_" + type.suffix + "-" + (i * BedrockOreType.values().length + j); + TextureAtlasSpriteMutatable mutableIcon = new TextureAtlasSpriteMutatable(placeholderName, new RGBMutatorInterpolatedComponentRemap(0xFFFFFF, 0x505050, type.light, type.dark)); + map.setTextureEntry(placeholderName, mutableIcon); + this.icons[i * BedrockOreType.values().length + j] = mutableIcon; + } } } } @@ -41,10 +49,8 @@ public class ItemBedrockOreNew extends Item { @SideOnly(Side.CLIENT) public void getSubItems(Item item, CreativeTabs tab, List list) { - for(int i = 0; i < BedrockOreGrade.values().length; i++) { - BedrockOreGrade grade = BedrockOreGrade.values()[i]; - for(int j = 0; j < BedrockOreType.values().length; j++) { - BedrockOreType type = BedrockOreType.values()[j]; + for(int j = 0; j < BedrockOreType.values().length; j++) { BedrockOreType type = BedrockOreType.values()[j]; + for(int i = 0; i < BedrockOreGrade.values().length; i++) { BedrockOreGrade grade = BedrockOreGrade.values()[i]; list.add(this.make(grade, type)); } } @@ -52,27 +58,37 @@ public class ItemBedrockOreNew extends Item { @Override @SideOnly(Side.CLIENT) - public IIcon getIconFromDamageForRenderPass(int meta, int pass) { + public IIcon getIconFromDamage(int meta) { int icon = this.getGrade(meta).ordinal() * BedrockOreType.values().length + this.getType(meta).ordinal(); return icons[Math.abs(icon % icons.length)]; } - public static enum BedrockOreType { - // primary sulfuric solvent radsolvent - LIGHT_METAL( "light", IRON, CU, TI, AL, AL, CHLOROCALCITE, LI, NA, CHLOROCALCITE, LI, NA), - HEAVY_METAL( "heavy", W, PB, GOLD, GOLD, BE, W, PB, GOLD, BI, BI, GOLD), - RARE_EARTH( "rare", CO, DictFrame.fromOne(ModItems.chunk_ore, EnumChunkType.RARE), B, LA, NB, ND, B, ZR, CO, ND, ZR), - ACTINIDE( "actinide", U, TH232, RA226, RA226, PO210, RA226, RA226, PO210, TC99, TC99, U238), - NON_METAL( "nonmetal", COAL, S, LIGNITE, KNO, F, P_RED, F, S, CHLOROCALCITE, SI, SI), - CRYSTALLINE( "crystal", DIAMOND, SODALITE, CINNABAR, ASBESTOS, REDSTONE, CINNABAR, ASBESTOS, EMERALD, BORAX, MOLYSITE, SODALITE); + @Override + public String getItemStackDisplayName(ItemStack stack) { + int meta = stack.getItemDamage(); + return this.getGrade(meta).name() + " " + this.getType(meta).suffix; + } + public static enum BedrockOreType { + // primary sulfuric solvent radsolvent + LIGHT_METAL( 0xFFFFFF, 0x353535, "light", IRON, CU, TI, AL, AL, CHLOROCALCITE, LI, NA, CHLOROCALCITE, LI, NA), + HEAVY_METAL( 0x868686, 0x000000, "heavy", W, PB, GOLD, GOLD, BE, W, PB, GOLD, BI, BI, GOLD), + RARE_EARTH( 0xE6E6B6, 0x1C1C00, "rare", CO, DictFrame.fromOne(ModItems.chunk_ore, EnumChunkType.RARE), B, LA, NB, ND, B, ZR, CO, ND, ZR), + ACTINIDE( 0xC1C7BD, 0x2B3227, "actinide", U, TH232, RA226, RA226, PO210, RA226, RA226, PO210, TC99, TC99, U238), + NON_METAL( 0xAFAFAF, 0x0F0F0F, "nonmetal", COAL, S, LIGNITE, KNO, F, P_RED, F, S, CHLOROCALCITE, SI, SI), + CRYSTALLINE( 0xE2FFFA, 0x1E8A77, "crystal", DIAMOND, SODALITE, CINNABAR, ASBESTOS, REDSTONE, CINNABAR, ASBESTOS, EMERALD, BORAX, MOLYSITE, SODALITE); + + public int light; + public int dark; public String suffix; public Object primary1, primary2; public Object byproductAcid1, byproductAcid2, byproductAcid3; public Object byproductSolvent1, byproductSolvent2, byproductSolvent3; public Object byproductRad1, byproductRad2, byproductRad3; - private BedrockOreType(String suffix, Object p1, Object p2, Object bA1, Object bA2, Object bA3, Object bS1, Object bS2, Object bS3, Object bR1, Object bR2, Object bR3) { + private BedrockOreType(int light, int dark, String suffix, Object p1, Object p2, Object bA1, Object bA2, Object bA3, Object bS1, Object bS2, Object bS3, Object bR1, Object bR2, Object bR3) { + this.light = light; + this.dark = dark; this.suffix = suffix; this.primary1 = p1; this.primary2 = p2; this.byproductAcid1 = bA1; this.byproductAcid2 = bA2; this.byproductAcid3 = bA3; @@ -80,41 +96,55 @@ public class ItemBedrockOreNew extends Item { this.byproductRad1 = bR1; this.byproductRad2 = bR2; this.byproductRad3 = bR3; } } + + @Override + @SideOnly(Side.CLIENT) + public int getColorFromItemStack(ItemStack stack, int pass) { + BedrockOreGrade grade = this.getGrade(stack.getItemDamage()); + return grade.tint; + } + + public static final int none = 0xFFFFFF; + public static final int roasted = 0xCFCFCF; + public static final int arc = 0xC3A2A2; + public static final int washed = 0xDBE2CB; public static enum BedrockOreGrade { - BASE("base"), //from the slopper - BASE_ROASTED("base"), //optional combination oven step, yields vitriol - BASE_WASHED("base"), //primitive-ass acidizer with water - PRIMARY("primary"), //centrifuging for more primary - PRIMARY_ROASTED("primary"), //optional comboven - PRIMARY_SULFURIC("primary"), //sulfuric acid - PRIMARY_NOSULFURIC("primary"), //from centrifuging, sulfuric byproduct removed - PRIMARY_SOLVENT("primary"), //solvent - PRIMARY_NOSOLVENT("primary"), //solvent byproduct removed - PRIMARY_RAD("primary"), //radsolvent - PRIMARY_NORAD("primary"), //radsolvent byproduct removed - PRIMARY_FIRST("primary"), //higher first material yield - PRIMARY_SECOND("primary"), //higher second material yield - CRUMBS("crumbs"), //endpoint for primary, recycling + BASE(none, "base"), //from the slopper + BASE_ROASTED(roasted, "base"), //optional combination oven step, yields vitriol + BASE_WASHED(washed, "base"), //primitive-ass acidizer with water + PRIMARY(none, "primary"), //centrifuging for more primary + PRIMARY_ROASTED(roasted, "primary"), //optional comboven + PRIMARY_SULFURIC(0xFFFFD3, "primary"), //sulfuric acid + PRIMARY_NOSULFURIC(0xD3D4FF, "primary"),//from centrifuging, sulfuric byproduct removed + PRIMARY_SOLVENT(0xD3F0FF, "primary"), //solvent + PRIMARY_NOSOLVENT(0xFFDED3, "primary"), //solvent byproduct removed + PRIMARY_RAD(0xECFFD3, "primary"), //radsolvent + PRIMARY_NORAD(0xEBD3FF, "primary"), //radsolvent byproduct removed + PRIMARY_FIRST(0xFFD3D4, "primary"), //higher first material yield + PRIMARY_SECOND(0xD3FFEB, "primary"), //higher second material yield + CRUMBS(none, "crumbs"), //endpoint for primary, recycling - SULFURIC_BYPRODUCT("sulfuric"), //from centrifuging - SULFURIC_ROASTED("sulfuric"), //comboven again - SULFURIC_ARC("sulfuric"), //alternate step - SULFURIC_WASHED("sulfuric"), //sulfuric endpoint + SULFURIC_BYPRODUCT(none, "sulfuric"), //from centrifuging + SULFURIC_ROASTED(roasted, "sulfuric"), //comboven again + SULFURIC_ARC(arc, "sulfuric"), //alternate step + SULFURIC_WASHED(washed, "sulfuric"), //sulfuric endpoint - SOLVENT_BYPRODUCT("solvent"), //from centrifuging - SOLVENT_ROASTED("solvent"), //comboven again - SOLVENT_ARC("solvent"), //alternate step - SOLVENT_WASHED("solvent"), //solvent endpoint + SOLVENT_BYPRODUCT(none, "solvent"), //from centrifuging + SOLVENT_ROASTED(roasted, "solvent"), //comboven again + SOLVENT_ARC(arc, "solvent"), //alternate step + SOLVENT_WASHED(washed, "solvent"), //solvent endpoint - RAD_BYPRODUCT("rad"), //from centrifuging - RAD_ROASTED("rad"), //comboven again - RAD_ARC("rad"), //alternate step - RAD_WASHED("rad"); //rad endpoint + RAD_BYPRODUCT(none, "rad"), //from centrifuging + RAD_ROASTED(roasted, "rad"), //comboven again + RAD_ARC(arc, "rad"), //alternate step + RAD_WASHED(washed, "rad"); //rad endpoint + public int tint; public String prefix; - private BedrockOreGrade(String prefix) { + private BedrockOreGrade(int tint, String prefix) { + this.tint = tint; this.prefix = prefix; } } diff --git a/src/main/java/com/hbm/main/ClientProxy.java b/src/main/java/com/hbm/main/ClientProxy.java index 4b0bea738..ee1339949 100644 --- a/src/main/java/com/hbm/main/ClientProxy.java +++ b/src/main/java/com/hbm/main/ClientProxy.java @@ -302,6 +302,7 @@ public class ClientProxy extends ServerProxy { ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineDiesel.class, new RenderDieselGen()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineCombustionEngine.class, new RenderCombustionEngine()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineExcavator.class, new RenderExcavator()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineOreSlopper.class, new RenderOreSlopper()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineMixer.class, new RenderMixer()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineHephaestus.class, new RenderHephaestus()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineAutosaw.class, new RenderAutosaw()); diff --git a/src/main/java/com/hbm/main/ResourceManager.java b/src/main/java/com/hbm/main/ResourceManager.java index 781c51d02..4df4c2649 100644 --- a/src/main/java/com/hbm/main/ResourceManager.java +++ b/src/main/java/com/hbm/main/ResourceManager.java @@ -174,6 +174,7 @@ public class ResourceManager { //Mining Drill public static final IModelCustom mining_drill = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/mining_drill.obj")).asVBO(); + public static final IModelCustom ore_slopper = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/ore_slopper.obj")).asVBO(); //Laser Miner public static final IModelCustom mining_laser = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/mining_laser.obj")).asVBO(); @@ -576,6 +577,7 @@ public class ResourceManager { //Mining Drill public static final ResourceLocation mining_drill_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/mining_drill.png"); + public static final ResourceLocation ore_slopper_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/ore_slopper.png"); //Laser Miner public static final ResourceLocation mining_laser_base_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/mining_laser_base.png"); diff --git a/src/main/java/com/hbm/render/tileentity/RenderOreSlopper.java b/src/main/java/com/hbm/render/tileentity/RenderOreSlopper.java new file mode 100644 index 000000000..6db111b7f --- /dev/null +++ b/src/main/java/com/hbm/render/tileentity/RenderOreSlopper.java @@ -0,0 +1,95 @@ +package com.hbm.render.tileentity; + +import org.lwjgl.opengl.GL11; + +import com.hbm.blocks.BlockDummyable; +import com.hbm.blocks.ModBlocks; +import com.hbm.main.ResourceManager; +import com.hbm.render.item.ItemRenderBase; + +import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.MathHelper; +import net.minecraftforge.client.IItemRenderer; + +public class RenderOreSlopper extends TileEntitySpecialRenderer implements IItemRendererProvider { + + @Override + public void renderTileEntityAt(TileEntity tile, double x, double y, double z, float interp) { + GL11.glPushMatrix(); + GL11.glTranslated(x + 0.5D, y, z + 0.5D); + GL11.glEnable(GL11.GL_LIGHTING); + GL11.glEnable(GL11.GL_CULL_FACE); + + switch(tile.getBlockMetadata() - BlockDummyable.offset) { + case 3: GL11.glRotatef(180, 0F, 1F, 0F); break; + case 5: GL11.glRotatef(270, 0F, 1F, 0F); break; + case 2: GL11.glRotatef(0, 0F, 1F, 0F); break; + case 4: GL11.glRotatef(90, 0F, 1F, 0F); break; + } + + GL11.glShadeModel(GL11.GL_SMOOTH); + bindTexture(ResourceManager.ore_slopper_tex); + ResourceManager.ore_slopper.renderPart("Base"); + ResourceManager.ore_slopper.renderPart("Slider"); + + GL11.glPushMatrix(); + double extend = Math.sin(((tile.getWorldObj().getTotalWorldTime() + interp) * 0.1 % (Math.PI * 2))) * 0.625+ 0.625; + GL11.glTranslated(0, -MathHelper.clamp_double(extend - 0.25, 0, 1.25), 0); + ResourceManager.ore_slopper.renderPart("Hydraulics"); + GL11.glTranslated(0, -MathHelper.clamp_double(extend, 0, 1.25), 0); + ResourceManager.ore_slopper.renderPart("Bucket"); + GL11.glPopMatrix(); + + double speed = 10; + + GL11.glPushMatrix(); + GL11.glTranslated(0.375, 2.75, 0); + GL11.glRotated((tile.getWorldObj().getTotalWorldTime() % 360 + interp) * speed, 0, 0, 1); + GL11.glTranslated(-0.375, -2.75, 0); + ResourceManager.ore_slopper.renderPart("BladesLeft"); + GL11.glPopMatrix(); + + GL11.glPushMatrix(); + GL11.glTranslated(-0.375, 2.75, 0); + GL11.glRotated((tile.getWorldObj().getTotalWorldTime() % 360 + interp) * -speed, 0, 0, 1); + GL11.glTranslated(0.375, -2.75, 0); + ResourceManager.ore_slopper.renderPart("BladesRight"); + GL11.glPopMatrix(); + + GL11.glPushMatrix(); + GL11.glTranslated(0, 1.875, -1); + GL11.glRotated((tile.getWorldObj().getTotalWorldTime() % 360 + interp) * -25, 1, 0, 0); + GL11.glTranslated(0, -1.875, 1); + ResourceManager.ore_slopper.renderPart("Fan"); + GL11.glPopMatrix(); + + GL11.glShadeModel(GL11.GL_FLAT); + + GL11.glPopMatrix(); + } + + @Override + public Item getItemForRenderer() { + return Item.getItemFromBlock(ModBlocks.machine_ore_slopper); + } + + @Override + public IItemRenderer getRenderer() { + return new ItemRenderBase( ) { + public void renderInventory() { + GL11.glTranslated(0, -3, 0); + GL11.glScaled(3.75, 3.75, 3.75); + } + public void renderCommonWithStack(ItemStack item) { + GL11.glScaled(0.5, 0.5, 0.5); + GL11.glRotatef(-90, 0F, 1F, 0F); + GL11.glShadeModel(GL11.GL_SMOOTH); + bindTexture(ResourceManager.ore_slopper_tex); + ResourceManager.ore_slopper.renderAll(); + GL11.glShadeModel(GL11.GL_FLAT); + }}; + } +} diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineOreSlopper.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineOreSlopper.java new file mode 100644 index 000000000..f8554ab4c --- /dev/null +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineOreSlopper.java @@ -0,0 +1,21 @@ +package com.hbm.tileentity.machine; + +import com.hbm.tileentity.TileEntityMachineBase; + +public class TileEntityMachineOreSlopper extends TileEntityMachineBase { + + public TileEntityMachineOreSlopper() { + super(0); + } + + @Override + public String getName() { + return "container.machineOreSlopper"; + } + + @Override + public void updateEntity() { + + } + +} diff --git a/src/main/resources/assets/hbm/models/machines/ore_slopper.obj b/src/main/resources/assets/hbm/models/machines/ore_slopper.obj new file mode 100644 index 000000000..0670c20f5 --- /dev/null +++ b/src/main/resources/assets/hbm/models/machines/ore_slopper.obj @@ -0,0 +1,4345 @@ +# Blender v2.79 (sub 0) OBJ File: 'ore_slopper.blend' +# www.blender.org +o Slider +v 1.125000 3.562500 1.437500 +v 1.375000 3.562500 1.437500 +v 1.125000 3.562500 1.187500 +v 1.375000 3.562500 1.187500 +v 1.375000 5.562500 1.187500 +v 1.125000 5.562500 1.187500 +v 1.375000 5.562500 1.437500 +v 1.125000 5.562500 1.437500 +v 1.125000 5.562500 2.937500 +v 1.375000 5.562500 2.937500 +v 1.125000 5.562500 2.687500 +v 1.375000 5.562500 2.687500 +v 1.375000 3.562500 2.687500 +v 1.125000 3.562500 2.687500 +v 1.375000 3.562500 2.937500 +v 1.125000 3.562500 2.937500 +v -1.437500 3.312500 1.500000 +v -1.062500 3.312500 1.500000 +v -1.437500 3.312500 1.125000 +v -1.062500 3.312500 1.125000 +v -1.062500 3.562500 1.125000 +v -1.437500 3.562500 1.125000 +v -1.062500 3.562500 1.500000 +v -1.437500 3.562500 1.500000 +v -1.437500 3.562500 3.000000 +v -1.062500 3.562500 3.000000 +v -1.437500 3.562500 2.625000 +v -1.062500 3.562500 2.625000 +v -1.062500 3.312500 2.625000 +v -1.437500 3.312500 2.625000 +v -1.062500 3.312500 3.000000 +v -1.437500 3.312500 3.000000 +v 1.062500 3.312500 3.000000 +v 1.437500 3.312500 3.000000 +v 1.062500 3.312500 2.625000 +v 1.437500 3.312500 2.625000 +v 1.437500 3.562500 2.625000 +v 1.062500 3.562500 2.625000 +v 1.437500 3.562500 3.000000 +v 1.062500 3.562500 3.000000 +v 1.062500 3.562500 1.500000 +v 1.437500 3.562500 1.500000 +v 1.062500 3.562500 1.125000 +v 1.437500 3.562500 1.125000 +v 1.437500 3.312500 1.125000 +v 1.062500 3.312500 1.125000 +v 1.437500 3.312500 1.500000 +v 1.062500 3.312500 1.500000 +v -1.375000 3.562500 1.437500 +v -1.125000 3.562500 1.437500 +v -1.375000 3.562500 1.187500 +v -1.125000 3.562500 1.187500 +v -1.125000 5.562500 1.187500 +v -1.375000 5.562500 1.187500 +v -1.125000 5.562500 1.437500 +v -1.375000 5.562500 1.437500 +v -1.375000 5.562500 2.937500 +v -1.125000 5.562500 2.937500 +v -1.375000 5.562500 2.687500 +v -1.125000 5.562500 2.687500 +v -1.125000 3.562500 2.687500 +v -1.375000 3.562500 2.687500 +v -1.125000 3.562500 2.937500 +v -1.375000 3.562500 2.937500 +v 1.375000 5.562500 1.187500 +v 1.375000 5.562500 1.437500 +v -1.375000 5.562500 1.187500 +v -1.375000 5.562500 1.437500 +v 1.125000 5.812500 1.437500 +v 1.125000 5.812500 1.187500 +v -1.125000 5.812500 1.187500 +v -1.125000 5.812500 1.437500 +v 1.375000 5.562500 2.937500 +v 1.375000 5.562500 2.687500 +v -1.375000 5.562500 2.937500 +v -1.375000 5.562500 2.687500 +v 1.125000 5.812500 2.937500 +v 1.125000 5.812500 2.687500 +v -1.125000 5.812500 2.687500 +v -1.125000 5.812500 2.937500 +v -1.000000 5.562500 3.062500 +v 1.000000 5.562500 3.062500 +v -1.000000 5.562500 1.062500 +v 1.000000 5.562500 1.062500 +v -1.000000 4.562500 1.062500 +v -1.000000 4.562500 3.062500 +v 1.000000 4.562500 3.062500 +v 1.000000 4.562500 1.062500 +v 0.500000 4.312500 1.562500 +v -0.500000 4.312500 1.562500 +v -0.500000 4.312500 2.562500 +v 0.500000 4.312500 2.562500 +v -0.750000 4.312500 1.312500 +v -0.750000 4.312500 2.812500 +v 0.750000 4.312500 2.812500 +v 0.750000 4.312500 1.312500 +v -0.500000 4.812500 1.562500 +v -0.500000 4.812500 2.562500 +v 0.500000 4.812500 2.562500 +v 0.500000 4.812500 1.562500 +v 1.187500 4.000000 2.687500 +v 1.187500 4.125000 2.687500 +v 1.187500 4.000000 1.437500 +v 1.187500 4.125000 1.437500 +v 1.312500 4.000000 2.687500 +v 1.312500 4.125000 2.687500 +v 1.312500 4.000000 1.437500 +v 1.312500 4.125000 1.437500 +v -1.312500 4.000000 2.687500 +v -1.312500 4.125000 2.687500 +v -1.312500 4.000000 1.437500 +v -1.312500 4.125000 1.437500 +v -1.187500 4.000000 2.687500 +v -1.187500 4.125000 2.687500 +v -1.187500 4.000000 1.437500 +v -1.187500 4.125000 1.437500 +vt 0.512195 0.461538 +vt 0.500000 0.256410 +vt 0.512195 0.256410 +vt 0.536585 0.461538 +vt 0.524390 0.256410 +vt 0.536585 0.256410 +vt 0.524390 0.461538 +vt 0.500000 0.461538 +vt 0.487805 0.256410 +vt 0.658537 0.256410 +vt 0.676829 0.294872 +vt 0.658537 0.294872 +vt 0.676829 0.320513 +vt 0.658537 0.358974 +vt 0.658537 0.320513 +vt 0.713415 0.294872 +vt 0.695122 0.320513 +vt 0.695122 0.294872 +vt 0.731707 0.294872 +vt 0.713415 0.320513 +vt 0.695122 0.294872 +vt 0.676829 0.320513 +vt 0.676829 0.294872 +vt 0.731707 0.294872 +vt 0.713415 0.320513 +vt 0.713415 0.294872 +vt 0.695122 0.320513 +vt 0.658537 0.320513 +vt 0.658537 0.294872 +vt 0.658537 0.358974 +vt 0.658537 0.256410 +vt 0.658537 0.256410 +vt 0.676829 0.294872 +vt 0.658537 0.294872 +vt 0.676829 0.320513 +vt 0.658537 0.358974 +vt 0.658537 0.320513 +vt 0.713415 0.294872 +vt 0.695122 0.320513 +vt 0.695122 0.294872 +vt 0.731707 0.294872 +vt 0.713415 0.320513 +vt 0.695122 0.294872 +vt 0.676829 0.320513 +vt 0.676829 0.294872 +vt 0.731707 0.294872 +vt 0.713415 0.320513 +vt 0.713415 0.294872 +vt 0.695122 0.320513 +vt 0.658537 0.320513 +vt 0.658537 0.294872 +vt 0.658537 0.358974 +vt 0.658537 0.256410 +vt 0.512195 0.461538 +vt 0.500000 0.256410 +vt 0.512195 0.256410 +vt 0.536585 0.461538 +vt 0.524390 0.256410 +vt 0.536585 0.256410 +vt 0.524390 0.461538 +vt 0.500000 0.461538 +vt 0.487805 0.256410 +vt 0.512195 0.461538 +vt 0.500000 0.256410 +vt 0.512195 0.256410 +vt 0.536585 0.461538 +vt 0.524390 0.256410 +vt 0.536585 0.256410 +vt 0.524390 0.461538 +vt 0.500000 0.461538 +vt 0.487805 0.256410 +vt 0.512195 0.461538 +vt 0.500000 0.256410 +vt 0.512195 0.256410 +vt 0.536585 0.461538 +vt 0.524390 0.256410 +vt 0.536585 0.256410 +vt 0.524390 0.461538 +vt 0.500000 0.461538 +vt 0.487805 0.256410 +vt 0.274390 0.692308 +vt 0.408537 0.717949 +vt 0.274390 0.717949 +vt 0.396341 0.743590 +vt 0.286585 0.769231 +vt 0.286585 0.743590 +vt 0.408537 0.769231 +vt 0.408537 0.743590 +vt 0.274390 0.794872 +vt 0.396341 0.769231 +vt 0.408537 0.794872 +vt 0.274390 0.743590 +vt 0.274390 0.769231 +vt 0.274390 0.692308 +vt 0.408537 0.717949 +vt 0.274390 0.717949 +vt 0.396341 0.743590 +vt 0.286585 0.769231 +vt 0.286585 0.743590 +vt 0.274390 0.794872 +vt 0.396341 0.769231 +vt 0.408537 0.794872 +vt 0.274390 0.743590 +vt 0.274390 0.769231 +vt 0.408537 0.769231 +vt 0.408537 0.743590 +vt 0.512195 0.794872 +vt 0.414634 1.000000 +vt 0.414634 0.794872 +vt 0.609756 0.692308 +vt 0.707317 0.794872 +vt 0.609756 0.794872 +vt 0.414634 0.692308 +vt 0.512195 0.692308 +vt 0.707317 0.692308 +vt 0.804878 0.794872 +vt 0.439024 0.641026 +vt 0.487805 0.589744 +vt 0.487805 0.641026 +vt 0.792683 0.666667 +vt 0.804878 0.692308 +vt 0.597561 0.666667 +vt 0.500000 0.666667 +vt 0.695122 0.666667 +vt 0.780488 0.641026 +vt 0.719512 0.666667 +vt 0.731707 0.641026 +vt 0.585366 0.641026 +vt 0.524390 0.666667 +vt 0.536585 0.641026 +vt 0.426829 0.666667 +vt 0.682927 0.641026 +vt 0.621951 0.666667 +vt 0.634146 0.641026 +vt 0.487805 0.487179 +vt 0.439024 0.589744 +vt 0.439024 0.487179 +vt 0.780488 0.589744 +vt 0.682927 0.589744 +vt 0.585366 0.589744 +vt 0.725610 0.448718 +vt 0.731707 0.320513 +vt 0.731707 0.448718 +vt 0.719512 0.320513 +vt 0.713415 0.448718 +vt 0.713415 0.320513 +vt 0.719512 0.320513 +vt 0.713415 0.448718 +vt 0.713415 0.320513 +vt 0.725610 0.448718 +vt 0.731707 0.320513 +vt 0.731707 0.448718 +vt 0.707317 0.448718 +vt 0.707317 0.320513 +vt 0.725610 0.320513 +vt 0.719512 0.448718 +vt 0.707317 0.448718 +vt 0.707317 0.320513 +vt 0.725610 0.320513 +vt 0.719512 0.448718 +vt 0.487805 0.461538 +vt 0.676829 0.256410 +vt 0.676829 0.358974 +vt 0.731707 0.320513 +vt 0.731707 0.320513 +vt 0.676829 0.358974 +vt 0.676829 0.256410 +vt 0.676829 0.256410 +vt 0.676829 0.358974 +vt 0.731707 0.320513 +vt 0.731707 0.320513 +vt 0.676829 0.358974 +vt 0.676829 0.256410 +vt 0.487805 0.461538 +vt 0.487805 0.461538 +vt 0.487805 0.461538 +vt 0.408537 0.692308 +vt 0.408537 0.692308 +vt 0.512195 1.000000 +vt 0.731707 0.589744 +vt 0.634146 0.589744 +vt 0.536585 0.589744 +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 1.0000 0.0000 +vn -0.7071 0.7071 0.0000 +vn 0.7071 0.7071 0.0000 +vn -0.7071 -0.7071 0.0000 +vn 0.7071 -0.7071 0.0000 +vn 0.0000 -0.7071 0.7071 +vn 0.0000 -0.7071 -0.7071 +s off +f 12/1/1 15/2/1 13/3/1 +f 9/4/2 14/5/2 16/6/2 +f 11/7/3 13/3/3 14/5/3 +f 10/8/4 16/9/4 15/2/4 +f 19/10/5 18/11/5 17/12/5 +f 23/13/6 22/14/6 24/15/6 +f 18/11/4 24/15/4 17/12/4 +f 19/16/3 21/17/3 20/18/3 +f 17/19/2 22/20/2 19/16/2 +f 20/18/1 23/13/1 18/11/1 +f 29/21/1 26/22/1 31/23/1 +f 32/24/2 27/25/2 30/26/2 +f 30/26/3 28/27/3 29/21/3 +f 31/23/4 25/28/4 32/29/4 +f 26/22/6 27/30/6 25/28/6 +f 30/31/5 31/23/5 32/29/5 +f 35/32/5 34/33/5 33/34/5 +f 39/35/6 38/36/6 40/37/6 +f 34/33/4 40/37/4 33/34/4 +f 35/38/3 37/39/3 36/40/3 +f 33/41/2 38/42/2 35/38/2 +f 36/40/1 39/35/1 34/33/1 +f 45/43/1 42/44/1 47/45/1 +f 48/46/2 43/47/2 46/48/2 +f 46/48/3 44/49/3 45/43/3 +f 47/45/4 41/50/4 48/51/4 +f 42/44/6 43/52/6 41/50/6 +f 46/53/5 47/45/5 48/51/5 +f 5/54/1 2/55/1 4/56/1 +f 8/57/2 3/58/2 1/59/2 +f 6/60/3 4/56/3 3/58/3 +f 7/61/4 1/62/4 2/55/4 +f 60/63/1 63/64/1 61/65/1 +f 57/66/2 62/67/2 64/68/2 +f 59/69/3 61/65/3 62/67/3 +f 58/70/4 64/71/4 63/64/4 +f 53/72/1 50/73/1 52/74/1 +f 56/75/2 51/76/2 49/77/2 +f 54/78/3 52/74/3 51/76/3 +f 55/79/4 49/80/4 50/73/4 +f 66/81/5 67/82/5 65/83/5 +f 71/84/6 69/85/6 70/86/6 +f 67/82/3 70/86/3 65/83/3 +f 68/87/7 71/84/7 67/88/7 +f 66/89/4 72/90/4 68/91/4 +f 65/92/8 69/85/8 66/93/8 +f 73/94/5 76/95/5 74/96/5 +f 79/97/6 77/98/6 78/99/6 +f 73/100/4 80/101/4 75/102/4 +f 74/103/8 77/98/8 73/104/8 +f 76/95/3 78/99/3 74/96/3 +f 75/105/7 79/97/7 76/106/7 +f 82/107/6 83/108/6 81/109/6 +f 88/110/3 83/111/3 84/112/3 +f 86/113/4 82/107/4 81/109/4 +f 87/114/1 84/112/1 82/107/1 +f 85/115/2 81/116/2 83/111/2 +f 91/117/3 99/118/3 92/119/3 +f 85/115/9 94/120/9 86/121/9 +f 87/114/10 96/122/10 88/110/10 +f 86/113/11 95/123/11 87/114/11 +f 88/110/12 93/124/12 85/115/12 +f 91/125/5 93/126/5 90/127/5 +f 89/128/5 95/129/5 92/130/5 +f 92/119/5 94/131/5 91/117/5 +f 90/132/5 96/133/5 89/134/5 +f 100/135/5 98/136/5 97/137/5 +f 90/127/1 98/138/1 91/125/1 +f 89/134/4 97/139/4 90/132/4 +f 92/130/2 100/140/2 89/128/2 +f 102/141/2 103/142/2 101/143/2 +f 116/144/1 113/145/1 115/146/1 +f 108/147/1 105/148/1 107/149/1 +f 110/150/2 111/151/2 109/152/2 +f 107/149/5 101/153/5 103/154/5 +f 104/155/6 106/156/6 108/147/6 +f 115/146/5 109/157/5 111/158/5 +f 112/159/6 114/160/6 116/144/6 +f 12/1/1 10/8/1 15/2/1 +f 9/4/2 11/7/2 14/5/2 +f 11/7/3 12/1/3 13/3/3 +f 10/8/4 9/161/4 16/9/4 +f 19/10/5 20/162/5 18/11/5 +f 23/13/6 21/163/6 22/14/6 +f 18/11/4 23/13/4 24/15/4 +f 19/16/3 22/20/3 21/17/3 +f 17/19/2 24/164/2 22/20/2 +f 20/18/1 21/17/1 23/13/1 +f 29/21/1 28/27/1 26/22/1 +f 32/24/2 25/165/2 27/25/2 +f 30/26/3 27/25/3 28/27/3 +f 31/23/4 26/22/4 25/28/4 +f 26/22/6 28/166/6 27/30/6 +f 30/31/5 29/167/5 31/23/5 +f 35/32/5 36/168/5 34/33/5 +f 39/35/6 37/169/6 38/36/6 +f 34/33/4 39/35/4 40/37/4 +f 35/38/3 38/42/3 37/39/3 +f 33/41/2 40/170/2 38/42/2 +f 36/40/1 37/39/1 39/35/1 +f 45/43/1 44/49/1 42/44/1 +f 48/46/2 41/171/2 43/47/2 +f 46/48/3 43/47/3 44/49/3 +f 47/45/4 42/44/4 41/50/4 +f 42/44/6 44/172/6 43/52/6 +f 46/53/5 45/173/5 47/45/5 +f 5/54/1 7/61/1 2/55/1 +f 8/57/2 6/60/2 3/58/2 +f 6/60/3 5/54/3 4/56/3 +f 7/61/4 8/174/4 1/62/4 +f 60/63/1 58/70/1 63/64/1 +f 57/66/2 59/69/2 62/67/2 +f 59/69/3 60/63/3 61/65/3 +f 58/70/4 57/175/4 64/71/4 +f 53/72/1 55/79/1 50/73/1 +f 56/75/2 54/78/2 51/76/2 +f 54/78/3 53/72/3 52/74/3 +f 55/79/4 56/176/4 49/80/4 +f 66/81/5 68/177/5 67/82/5 +f 71/84/6 72/90/6 69/85/6 +f 67/82/3 71/84/3 70/86/3 +f 68/87/7 72/90/7 71/84/7 +f 66/89/4 69/85/4 72/90/4 +f 65/92/8 70/86/8 69/85/8 +f 73/94/5 75/178/5 76/95/5 +f 79/97/6 80/101/6 77/98/6 +f 73/100/4 77/98/4 80/101/4 +f 74/103/8 78/99/8 77/98/8 +f 76/95/3 79/97/3 78/99/3 +f 75/105/7 80/101/7 79/97/7 +f 82/107/6 84/179/6 83/108/6 +f 88/110/3 85/115/3 83/111/3 +f 86/113/4 87/114/4 82/107/4 +f 87/114/1 88/110/1 84/112/1 +f 85/115/2 86/121/2 81/116/2 +f 91/117/3 98/136/3 99/118/3 +f 85/115/9 93/126/9 94/120/9 +f 87/114/10 95/129/10 96/122/10 +f 86/113/11 94/131/11 95/123/11 +f 88/110/12 96/133/12 93/124/12 +f 91/125/5 94/120/5 93/126/5 +f 89/128/5 96/122/5 95/129/5 +f 92/119/5 95/123/5 94/131/5 +f 90/132/5 93/124/5 96/133/5 +f 100/135/5 99/118/5 98/136/5 +f 90/127/1 97/180/1 98/138/1 +f 89/134/4 100/181/4 97/139/4 +f 92/130/2 99/182/2 100/140/2 +f 102/141/2 104/155/2 103/142/2 +f 116/144/1 114/160/1 113/145/1 +f 108/147/1 106/156/1 105/148/1 +f 110/150/2 112/159/2 111/151/2 +f 107/149/5 105/148/5 101/153/5 +f 104/155/6 102/141/6 106/156/6 +f 115/146/5 113/145/5 109/157/5 +f 112/159/6 110/150/6 114/160/6 +o Hydraulics +v -0.750000 4.312500 2.812500 +v -0.500000 4.312500 2.812500 +v -0.750000 4.312500 2.562500 +v -0.500000 4.312500 2.562500 +v -0.750000 5.562500 2.562500 +v -0.750000 5.562500 2.812500 +v -0.500000 5.562500 2.812500 +v -0.500000 5.562500 2.562500 +v -0.750000 4.312500 1.562500 +v -0.500000 4.312500 1.562500 +v -0.750000 4.312500 1.312500 +v -0.500000 4.312500 1.312500 +v -0.750000 5.562500 1.312500 +v -0.750000 5.562500 1.562500 +v -0.500000 5.562500 1.562500 +v -0.500000 5.562500 1.312500 +v 0.500000 4.312500 2.812500 +v 0.750000 4.312500 2.812500 +v 0.500000 4.312500 2.562500 +v 0.750000 4.312500 2.562500 +v 0.500000 5.562500 2.562500 +v 0.500000 5.562500 2.812500 +v 0.750000 5.562500 2.812500 +v 0.750000 5.562500 2.562500 +v 0.500000 4.312500 1.562500 +v 0.750000 4.312500 1.562500 +v 0.500000 4.312500 1.312500 +v 0.750000 4.312500 1.312500 +v 0.500000 5.562500 1.312500 +v 0.500000 5.562500 1.562500 +v 0.750000 5.562500 1.562500 +v 0.750000 5.562500 1.312500 +vt 0.768293 0.230769 +vt 0.780488 0.256410 +vt 0.768293 0.256410 +vt 0.768293 0.230769 +vt 0.780488 0.256410 +vt 0.768293 0.256410 +vt 0.817073 0.256410 +vt 0.804878 0.384615 +vt 0.804878 0.256410 +vt 0.792683 0.384615 +vt 0.792683 0.256410 +vt 0.768293 0.384615 +vt 0.780488 0.384615 +vt 0.817073 0.256410 +vt 0.804878 0.384615 +vt 0.804878 0.256410 +vt 0.792683 0.384615 +vt 0.792683 0.256410 +vt 0.768293 0.384615 +vt 0.780488 0.384615 +vt 0.768293 0.230769 +vt 0.780488 0.256410 +vt 0.768293 0.256410 +vt 0.768293 0.230769 +vt 0.780488 0.256410 +vt 0.768293 0.256410 +vt 0.817073 0.256410 +vt 0.804878 0.384615 +vt 0.804878 0.256410 +vt 0.792683 0.384615 +vt 0.792683 0.256410 +vt 0.768293 0.384615 +vt 0.780488 0.384615 +vt 0.817073 0.256410 +vt 0.804878 0.384615 +vt 0.804878 0.256410 +vt 0.792683 0.384615 +vt 0.792683 0.256410 +vt 0.768293 0.384615 +vt 0.780488 0.384615 +vt 0.780488 0.230769 +vt 0.780488 0.230769 +vt 0.817073 0.384615 +vt 0.817073 0.384615 +vt 0.780488 0.230769 +vt 0.780488 0.230769 +vt 0.817073 0.384615 +vt 0.817073 0.384615 +vn 0.0000 -1.0000 0.0000 +vn -1.0000 0.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +vn 0.0000 0.0000 1.0000 +vn 1.0000 0.0000 0.0000 +s off +f 119/183/13 118/184/13 117/185/13 +f 127/186/13 126/187/13 125/188/13 +f 117/189/14 121/190/14 119/191/14 +f 119/191/15 124/192/15 120/193/15 +f 118/184/16 122/194/16 117/185/16 +f 120/193/17 123/195/17 118/184/17 +f 125/196/14 129/197/14 127/198/14 +f 127/198/15 132/199/15 128/200/15 +f 126/187/16 130/201/16 125/188/16 +f 128/200/17 131/202/17 126/187/17 +f 135/203/13 134/204/13 133/205/13 +f 143/206/13 142/207/13 141/208/13 +f 133/209/14 137/210/14 135/211/14 +f 135/211/15 140/212/15 136/213/15 +f 134/204/16 138/214/16 133/205/16 +f 136/213/17 139/215/17 134/204/17 +f 141/216/14 145/217/14 143/218/14 +f 143/218/15 148/219/15 144/220/15 +f 142/207/16 146/221/16 141/208/16 +f 144/220/17 147/222/17 142/207/17 +f 119/183/13 120/223/13 118/184/13 +f 127/186/13 128/224/13 126/187/13 +f 117/189/14 122/225/14 121/190/14 +f 119/191/15 121/190/15 124/192/15 +f 118/184/16 123/195/16 122/194/16 +f 120/193/17 124/192/17 123/195/17 +f 125/196/14 130/226/14 129/197/14 +f 127/198/15 129/197/15 132/199/15 +f 126/187/16 131/202/16 130/201/16 +f 128/200/17 132/199/17 131/202/17 +f 135/203/13 136/227/13 134/204/13 +f 143/206/13 144/228/13 142/207/13 +f 133/209/14 138/229/14 137/210/14 +f 135/211/15 137/210/15 140/212/15 +f 134/204/16 139/215/16 138/214/16 +f 136/213/17 140/212/17 139/215/17 +f 141/216/14 146/230/14 145/217/14 +f 143/218/15 145/217/15 148/219/15 +f 142/207/16 147/222/16 146/221/16 +f 144/220/17 148/219/17 147/222/17 +o Bucket +v -0.500000 4.062500 1.562500 +v -0.500000 4.062500 2.562500 +v 0.500000 4.062500 2.562500 +v 0.500000 4.062500 1.562500 +v 0.750000 4.312500 1.312500 +v -0.750000 4.312500 1.312500 +v -0.750000 4.312500 2.812500 +v 0.750000 4.312500 2.812500 +v 0.250000 4.187500 1.812500 +v -0.250000 4.187500 1.812500 +v -0.250000 4.187500 2.312500 +v 0.250000 4.187500 2.312500 +v -0.750000 4.562500 1.312500 +v -0.750000 4.562500 2.812500 +v 0.750000 4.562500 2.812500 +v 0.750000 4.562500 1.312500 +v -0.687500 4.312500 2.750000 +v -0.562500 4.312500 2.750000 +v -0.687500 4.312500 2.625000 +v -0.562500 4.312500 2.625000 +v -0.687500 5.562500 2.750000 +v -0.562500 5.562500 2.750000 +v -0.687500 5.562500 2.625000 +v -0.562500 5.562500 2.625000 +v 0.562500 4.312500 2.750000 +v 0.687500 4.312500 2.750000 +v 0.562500 4.312500 2.625000 +v 0.687500 4.312500 2.625000 +v 0.562500 5.562500 2.750000 +v 0.687500 5.562500 2.750000 +v 0.562500 5.562500 2.625000 +v 0.687500 5.562500 2.625000 +v -0.687500 4.312500 1.500000 +v -0.562500 4.312500 1.500000 +v -0.687500 4.312500 1.375000 +v -0.562500 4.312500 1.375000 +v -0.687500 5.562500 1.500000 +v -0.562500 5.562500 1.500000 +v -0.687500 5.562500 1.375000 +v -0.562500 5.562500 1.375000 +v 0.562500 4.312500 1.500000 +v 0.687500 4.312500 1.500000 +v 0.562500 4.312500 1.375000 +v 0.687500 4.312500 1.375000 +v 0.562500 5.562500 1.500000 +v 0.687500 5.562500 1.500000 +v 0.562500 5.562500 1.375000 +v 0.687500 5.562500 1.375000 +vt 0.829268 0.410256 +vt 0.890244 0.384615 +vt 0.902439 0.410256 +vt 0.841463 0.282051 +vt 0.890244 0.282051 +vt 0.902439 0.256410 +vt 0.829268 0.256410 +vt 0.841463 0.384615 +vt 0.902439 0.230769 +vt 0.914634 0.410256 +vt 0.829268 0.435897 +vt 0.817073 0.256410 +vt 0.878049 0.538462 +vt 0.853659 0.487179 +vt 0.878049 0.487179 +vt 0.902439 0.589744 +vt 0.853659 0.538462 +vt 0.829268 0.589744 +vt 0.902439 0.435897 +vt 0.762195 0.230769 +vt 0.756098 0.358974 +vt 0.756098 0.230769 +vt 0.750000 0.230769 +vt 0.743902 0.358974 +vt 0.743902 0.230769 +vt 0.762195 0.230769 +vt 0.756098 0.358974 +vt 0.756098 0.230769 +vt 0.750000 0.230769 +vt 0.743902 0.358974 +vt 0.743902 0.230769 +vt 0.750000 0.358974 +vt 0.768293 0.230769 +vt 0.762195 0.358974 +vt 0.750000 0.358974 +vt 0.768293 0.230769 +vt 0.762195 0.358974 +vt 0.762195 0.230769 +vt 0.756098 0.358974 +vt 0.756098 0.230769 +vt 0.750000 0.230769 +vt 0.743902 0.358974 +vt 0.743902 0.230769 +vt 0.762195 0.230769 +vt 0.756098 0.358974 +vt 0.756098 0.230769 +vt 0.750000 0.230769 +vt 0.743902 0.358974 +vt 0.743902 0.230769 +vt 0.750000 0.358974 +vt 0.768293 0.230769 +vt 0.762195 0.358974 +vt 0.750000 0.358974 +vt 0.768293 0.230769 +vt 0.762195 0.358974 +vt 0.829268 0.230769 +vt 0.914634 0.256410 +vt 0.817073 0.410256 +vt 0.768293 0.358974 +vt 0.768293 0.358974 +vt 0.768293 0.358974 +vt 0.768293 0.358974 +vn 0.0000 -0.7071 -0.7071 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 -0.7071 0.7071 +vn 0.7071 -0.7071 0.0000 +vn -0.7071 -0.7071 0.0000 +vn 0.0000 0.0000 1.0000 +vn -1.0000 0.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +vn 1.0000 0.0000 0.0000 +vn 0.0000 1.0000 0.0000 +vn 0.6000 0.8000 0.0000 +vn -0.6000 0.8000 0.0000 +vn 0.0000 0.8000 -0.6000 +vn 0.0000 0.8000 0.6000 +s off +f 153/231/18 149/232/18 154/233/18 +f 149/232/19 151/234/19 150/235/19 +f 155/236/20 151/234/20 156/237/20 +f 156/237/21 152/238/21 153/231/21 +f 154/233/22 150/235/22 155/236/22 +f 156/237/23 162/239/23 155/236/23 +f 155/236/24 161/240/24 154/233/24 +f 154/233/25 164/241/25 153/231/25 +f 153/231/26 163/242/26 156/237/26 +f 159/243/27 157/244/27 158/245/27 +f 158/245/28 162/246/28 159/243/28 +f 160/247/29 164/241/29 157/244/29 +f 159/243/30 163/248/30 160/247/30 +f 157/244/31 161/249/31 158/245/31 +f 175/250/25 180/251/25 176/252/25 +f 174/253/23 177/254/23 173/255/23 +f 167/256/25 172/257/25 168/258/25 +f 166/259/23 169/260/23 165/261/23 +f 168/258/26 170/262/26 166/259/26 +f 165/263/24 171/264/24 167/256/24 +f 176/252/26 178/265/26 174/253/26 +f 173/266/24 179/267/24 175/250/24 +f 191/268/25 196/269/25 192/270/25 +f 190/271/23 193/272/23 189/273/23 +f 183/274/25 188/275/25 184/276/25 +f 182/277/23 185/278/23 181/279/23 +f 184/276/26 186/280/26 182/277/26 +f 181/281/24 187/282/24 183/274/24 +f 192/270/26 194/283/26 190/271/26 +f 189/284/24 195/285/24 191/268/24 +f 153/231/18 152/238/18 149/232/18 +f 149/232/19 152/238/19 151/234/19 +f 155/236/20 150/235/20 151/234/20 +f 156/237/21 151/234/21 152/238/21 +f 154/233/22 149/232/22 150/235/22 +f 156/237/23 163/286/23 162/239/23 +f 155/236/24 162/287/24 161/240/24 +f 154/233/25 161/249/25 164/241/25 +f 153/231/26 164/288/26 163/242/26 +f 159/243/27 160/247/27 157/244/27 +f 158/245/28 161/249/28 162/246/28 +f 160/247/29 163/248/29 164/241/29 +f 159/243/30 162/246/30 163/248/30 +f 157/244/31 164/241/31 161/249/31 +f 175/250/25 179/267/25 180/251/25 +f 174/253/23 178/265/23 177/254/23 +f 167/256/25 171/264/25 172/257/25 +f 166/259/23 170/262/23 169/260/23 +f 168/258/26 172/257/26 170/262/26 +f 165/263/24 169/289/24 171/264/24 +f 176/252/26 180/251/26 178/265/26 +f 173/266/24 177/290/24 179/267/24 +f 191/268/25 195/285/25 196/269/25 +f 190/271/23 194/283/23 193/272/23 +f 183/274/25 187/282/25 188/275/25 +f 182/277/23 186/280/23 185/278/23 +f 184/276/26 188/275/26 186/280/26 +f 181/281/24 185/291/24 187/282/24 +f 192/270/26 196/269/26 194/283/26 +f 189/284/24 193/292/24 195/285/24 +o BladesRight +v -0.375000 3.187500 0.000000 +v -0.156250 3.128886 0.000000 +v 0.003886 2.968750 0.000000 +v 0.062500 2.750000 0.000000 +v 0.003886 2.531250 0.000000 +v -0.156250 2.371114 0.000000 +v -0.375000 2.312500 0.000000 +v -0.593750 2.371114 0.000000 +v -0.753886 2.531250 0.000000 +v -0.812500 2.750000 0.000000 +v -0.753886 2.968750 0.000000 +v -0.593750 3.128886 0.000000 +v -0.375000 3.062500 -0.250000 +v -0.218750 3.020633 -0.250000 +v -0.104367 2.906250 -0.250000 +v -0.062500 2.750000 -0.250000 +v -0.104367 2.593750 -0.250000 +v -0.218750 2.479367 -0.250000 +v -0.375000 2.437500 -0.250000 +v -0.531250 2.479367 -0.250000 +v -0.645633 2.593750 -0.250000 +v -0.687500 2.750000 -0.250000 +v -0.645633 2.906250 -0.250000 +v -0.531250 3.020633 -0.250000 +v -0.375000 3.187500 -0.250000 +v -0.156250 3.128886 -0.250000 +v 0.003886 2.968750 -0.250000 +v 0.062500 2.750000 -0.250000 +v 0.003886 2.531250 -0.250000 +v -0.156250 2.371114 -0.250000 +v -0.375000 2.312500 -0.250000 +v -0.593750 2.371114 -0.250000 +v -0.753886 2.531250 -0.250000 +v -0.812500 2.750000 -0.250000 +v -0.753886 2.968750 -0.250000 +v -0.593750 3.128886 -0.250000 +v -0.375000 3.062500 -0.500000 +v -0.218750 3.020633 -0.500000 +v -0.104367 2.906250 -0.500000 +v -0.062500 2.750000 -0.500000 +v -0.104367 2.593750 -0.500000 +v -0.218750 2.479367 -0.500000 +v -0.375000 2.437500 -0.500000 +v -0.531250 2.479367 -0.500000 +v -0.645633 2.593750 -0.500000 +v -0.687500 2.750000 -0.500000 +v -0.645633 2.906250 -0.500000 +v -0.531250 3.020633 -0.500000 +v -0.375000 3.187500 -1.500000 +v -0.156250 3.128886 -1.500000 +v 0.003886 2.968750 -1.500000 +v 0.062500 2.750000 -1.500000 +v 0.003886 2.531250 -1.500000 +v -0.156250 2.371114 -1.500000 +v -0.375000 2.312500 -1.500000 +v -0.593750 2.371114 -1.500000 +v -0.753886 2.531250 -1.500000 +v -0.812500 2.750000 -1.500000 +v -0.753886 2.968750 -1.500000 +v -0.593750 3.128886 -1.500000 +v -0.375000 3.062500 -1.750000 +v -0.218750 3.020633 -1.750000 +v -0.104367 2.906250 -1.750000 +v -0.062500 2.750000 -1.750000 +v -0.104367 2.593750 -1.750000 +v -0.218750 2.479367 -1.750000 +v -0.375000 2.437500 -1.750000 +v -0.531250 2.479367 -1.750000 +v -0.645633 2.593750 -1.750000 +v -0.687500 2.750000 -1.750000 +v -0.645633 2.906250 -1.750000 +v -0.531250 3.020633 -1.750000 +v -0.375000 3.187500 -1.750000 +v -0.156250 3.128886 -1.750000 +v 0.003886 2.968750 -1.750000 +v 0.062500 2.750000 -1.750000 +v 0.003886 2.531250 -1.750000 +v -0.156250 2.371114 -1.750000 +v -0.375000 2.312500 -1.750000 +v -0.593750 2.371114 -1.750000 +v -0.753886 2.531250 -1.750000 +v -0.812500 2.750000 -1.750000 +v -0.753886 2.968750 -1.750000 +v -0.593750 3.128886 -1.750000 +v -0.375000 3.062500 -2.000000 +v -0.218750 3.020633 -2.000000 +v -0.104367 2.906250 -2.000000 +v -0.062500 2.750000 -2.000000 +v -0.104367 2.593750 -2.000000 +v -0.218750 2.479367 -2.000000 +v -0.375000 2.437500 -2.000000 +v -0.531250 2.479367 -2.000000 +v -0.645633 2.593750 -2.000000 +v -0.687500 2.750000 -2.000000 +v -0.645633 2.906250 -2.000000 +v -0.531250 3.020633 -2.000000 +v -0.531250 3.020633 -1.500000 +v -0.645633 2.906250 -1.500000 +v -0.687500 2.750000 -1.500000 +v -0.645633 2.593750 -1.500000 +v -0.531250 2.479367 -1.500000 +v -0.375000 2.437500 -1.500000 +v -0.218750 2.479367 -1.500000 +v -0.104367 2.593750 -1.500000 +v -0.062500 2.750000 -1.500000 +v -0.104367 2.906250 -1.500000 +v -0.218750 3.020633 -1.500000 +v -0.375000 3.062500 -1.500000 +v -0.593750 3.128886 -1.250000 +v -0.753886 2.968750 -1.250000 +v -0.812500 2.750000 -1.250000 +v -0.753886 2.531250 -1.250000 +v -0.593750 2.371114 -1.250000 +v -0.375000 2.312500 -1.250000 +v -0.156250 2.371114 -1.250000 +v 0.003886 2.531250 -1.250000 +v 0.062500 2.750000 -1.250000 +v 0.003886 2.968750 -1.250000 +v -0.156250 3.128886 -1.250000 +v -0.375000 3.187500 -1.250000 +v -0.531250 3.020633 -1.250000 +v -0.645633 2.906250 -1.250000 +v -0.687500 2.750000 -1.250000 +v -0.645633 2.593750 -1.250000 +v -0.531250 2.479367 -1.250000 +v -0.375000 2.437500 -1.250000 +v -0.218750 2.479367 -1.250000 +v -0.104367 2.593750 -1.250000 +v -0.062500 2.750000 -1.250000 +v -0.104367 2.906250 -1.250000 +v -0.218750 3.020633 -1.250000 +v -0.375000 3.062500 -1.250000 +v -0.593750 3.128886 -1.000000 +v -0.753886 2.968750 -1.000000 +v -0.812500 2.750000 -1.000000 +v -0.753886 2.531250 -1.000000 +v -0.593750 2.371114 -1.000000 +v -0.375000 2.312500 -1.000000 +v -0.156250 2.371114 -1.000000 +v 0.003886 2.531250 -1.000000 +v 0.062500 2.750000 -1.000000 +v 0.003886 2.968750 -1.000000 +v -0.156250 3.128886 -1.000000 +v -0.375000 3.187500 -1.000000 +v -0.531250 3.020633 -1.000000 +v -0.645633 2.906250 -1.000000 +v -0.687500 2.750000 -1.000000 +v -0.645633 2.593750 -1.000000 +v -0.531250 2.479367 -1.000000 +v -0.375000 2.437500 -1.000000 +v -0.218750 2.479367 -1.000000 +v -0.104367 2.593750 -1.000000 +v -0.062500 2.750000 -1.000000 +v -0.104367 2.906250 -1.000000 +v -0.218750 3.020633 -1.000000 +v -0.375000 3.062500 -1.000000 +v -0.593750 3.128886 -0.750000 +v -0.753886 2.968750 -0.750000 +v -0.812500 2.750000 -0.750000 +v -0.753886 2.531250 -0.750000 +v -0.593750 2.371114 -0.750000 +v -0.375000 2.312500 -0.750000 +v -0.156250 2.371114 -0.750000 +v 0.003886 2.531250 -0.750000 +v 0.062500 2.750000 -0.750000 +v 0.003886 2.968750 -0.750000 +v -0.156250 3.128886 -0.750000 +v -0.375000 3.187500 -0.750000 +v -0.531250 3.020633 -0.750000 +v -0.645633 2.906250 -0.750000 +v -0.687500 2.750000 -0.750000 +v -0.645633 2.593750 -0.750000 +v -0.531250 2.479367 -0.750000 +v -0.375000 2.437500 -0.750000 +v -0.218750 2.479367 -0.750000 +v -0.104367 2.593750 -0.750000 +v -0.062500 2.750000 -0.750000 +v -0.104367 2.906250 -0.750000 +v -0.218750 3.020633 -0.750000 +v -0.375000 3.062500 -0.750000 +v -0.593750 3.128886 -0.500000 +v -0.753886 2.968750 -0.500000 +v -0.812500 2.750000 -0.500000 +v -0.753886 2.531250 -0.500000 +v -0.593750 2.371114 -0.500000 +v -0.375000 2.312500 -0.500000 +v -0.156250 2.371114 -0.500000 +v 0.003886 2.531250 -0.500000 +v 0.062500 2.750000 -0.500000 +v 0.003886 2.968750 -0.500000 +v -0.156250 3.128886 -0.500000 +v -0.375000 3.187500 -0.500000 +vt 0.051829 0.846154 +vt 0.060976 0.833333 +vt 0.057927 0.846154 +vt 0.070122 0.846154 +vt 0.064024 0.846154 +vt 0.076220 0.846154 +vt 0.085366 0.833333 +vt 0.082317 0.846154 +vt 0.088415 0.846154 +vt 0.097561 0.833333 +vt 0.094512 0.846154 +vt 0.106707 0.846154 +vt 0.100610 0.846154 +vt 0.112805 0.846154 +vt 0.121951 0.833333 +vt 0.118902 0.846154 +vt 0.125000 0.846154 +vt 0.134146 0.833333 +vt 0.131098 0.846154 +vt 0.143293 0.846154 +vt 0.137195 0.846154 +vt 0.003049 0.846154 +vt 0.012195 0.833333 +vt 0.009146 0.846154 +vt 0.015244 0.846154 +vt 0.024390 0.833333 +vt 0.021341 0.846154 +vt 0.033537 0.846154 +vt 0.027439 0.846154 +vt 0.036585 0.833333 +vt 0.045732 0.846154 +vt 0.039634 0.846154 +vt 0.051829 0.846154 +vt 0.060976 0.833333 +vt 0.057927 0.846154 +vt 0.070122 0.846154 +vt 0.064024 0.846154 +vt 0.076220 0.846154 +vt 0.085366 0.833333 +vt 0.082317 0.846154 +vt 0.088415 0.846154 +vt 0.097561 0.833333 +vt 0.094512 0.846154 +vt 0.106707 0.846154 +vt 0.100610 0.846154 +vt 0.112805 0.846154 +vt 0.121951 0.833333 +vt 0.118902 0.846154 +vt 0.125000 0.846154 +vt 0.134146 0.833333 +vt 0.131098 0.846154 +vt 0.143293 0.846154 +vt 0.137195 0.846154 +vt 0.003049 0.846154 +vt 0.012195 0.833333 +vt 0.009146 0.846154 +vt 0.015244 0.846154 +vt 0.024390 0.833333 +vt 0.021341 0.846154 +vt 0.033537 0.846154 +vt 0.027439 0.846154 +vt 0.036585 0.833333 +vt 0.045732 0.846154 +vt 0.039634 0.846154 +vt 0.057927 0.794872 +vt 0.048780 0.807692 +vt 0.051829 0.794872 +vt 0.070122 0.794872 +vt 0.060976 0.807692 +vt 0.064024 0.794872 +vt 0.076220 0.794872 +vt 0.085366 0.807692 +vt 0.073171 0.807692 +vt 0.094512 0.794872 +vt 0.088415 0.794872 +vt 0.106707 0.794872 +vt 0.097561 0.807692 +vt 0.100610 0.794872 +vt 0.112805 0.794872 +vt 0.121951 0.807692 +vt 0.109756 0.807692 +vt 0.125000 0.794872 +vt 0.134146 0.807692 +vt 0.143293 0.794872 +vt 0.137195 0.794872 +vt 0.003049 0.794872 +vt 0.012195 0.807692 +vt 0.000000 0.807692 +vt 0.015244 0.794872 +vt 0.024390 0.807692 +vt 0.033537 0.794872 +vt 0.027439 0.794872 +vt 0.045732 0.794872 +vt 0.036585 0.807692 +vt 0.039634 0.794872 +vt 0.036585 0.833333 +vt 0.045732 0.846154 +vt 0.039634 0.846154 +vt 0.024390 0.833333 +vt 0.033537 0.846154 +vt 0.027439 0.846154 +vt 0.015244 0.846154 +vt 0.021341 0.846154 +vt 0.003049 0.846154 +vt 0.012195 0.833333 +vt 0.009146 0.846154 +vt 0.134146 0.833333 +vt 0.143293 0.846154 +vt 0.137195 0.846154 +vt 0.125000 0.846154 +vt 0.131098 0.846154 +vt 0.112805 0.846154 +vt 0.121951 0.833333 +vt 0.118902 0.846154 +vt 0.097561 0.833333 +vt 0.106707 0.846154 +vt 0.100610 0.846154 +vt 0.088415 0.846154 +vt 0.094512 0.846154 +vt 0.076220 0.846154 +vt 0.085366 0.833333 +vt 0.082317 0.846154 +vt 0.060976 0.833333 +vt 0.070122 0.846154 +vt 0.064024 0.846154 +vt 0.051829 0.846154 +vt 0.057927 0.846154 +vt 0.045732 0.794872 +vt 0.036585 0.807692 +vt 0.039634 0.794872 +vt 0.033537 0.794872 +vt 0.024390 0.807692 +vt 0.027439 0.794872 +vt 0.021341 0.794872 +vt 0.012195 0.807692 +vt 0.015244 0.794872 +vt 0.003049 0.794872 +vt 0.000000 0.807692 +vt 0.143293 0.794872 +vt 0.134146 0.807692 +vt 0.137195 0.794872 +vt 0.131098 0.794872 +vt 0.121951 0.807692 +vt 0.125000 0.794872 +vt 0.112805 0.794872 +vt 0.109756 0.807692 +vt 0.106707 0.794872 +vt 0.097561 0.807692 +vt 0.100610 0.794872 +vt 0.088415 0.794872 +vt 0.085366 0.807692 +vt 0.076220 0.794872 +vt 0.073171 0.807692 +vt 0.070122 0.794872 +vt 0.060976 0.807692 +vt 0.064024 0.794872 +vt 0.051829 0.794872 +vt 0.048780 0.807692 +vt 0.036585 0.833333 +vt 0.045732 0.846154 +vt 0.039634 0.846154 +vt 0.024390 0.833333 +vt 0.033537 0.846154 +vt 0.027439 0.846154 +vt 0.015244 0.846154 +vt 0.021341 0.846154 +vt 0.003049 0.846154 +vt 0.012195 0.833333 +vt 0.009146 0.846154 +vt 0.134146 0.833333 +vt 0.143293 0.846154 +vt 0.137195 0.846154 +vt 0.125000 0.846154 +vt 0.131098 0.846154 +vt 0.112805 0.846154 +vt 0.121951 0.833333 +vt 0.118902 0.846154 +vt 0.097561 0.833333 +vt 0.106707 0.846154 +vt 0.100610 0.846154 +vt 0.088415 0.846154 +vt 0.094512 0.846154 +vt 0.076220 0.846154 +vt 0.085366 0.833333 +vt 0.082317 0.846154 +vt 0.060976 0.833333 +vt 0.070122 0.846154 +vt 0.064024 0.846154 +vt 0.051829 0.846154 +vt 0.057927 0.846154 +vt 0.036585 0.807692 +vt 0.045732 0.794872 +vt 0.048780 0.807692 +vt 0.024390 0.807692 +vt 0.033537 0.794872 +vt 0.015244 0.794872 +vt 0.012195 0.807692 +vt 0.003049 0.794872 +vt 0.000000 0.807692 +vt 0.134146 0.807692 +vt 0.143293 0.794872 +vt 0.146341 0.807692 +vt 0.125000 0.794872 +vt 0.121951 0.807692 +vt 0.112805 0.794872 +vt 0.109756 0.807692 +vt 0.097561 0.807692 +vt 0.106707 0.794872 +vt 0.088415 0.794872 +vt 0.085366 0.807692 +vt 0.076220 0.794872 +vt 0.073171 0.807692 +vt 0.060976 0.807692 +vt 0.070122 0.794872 +vt 0.051829 0.794872 +vt 0.048780 0.833333 +vt 0.073171 0.833333 +vt 0.109756 0.833333 +vt 0.146341 0.833333 +vt -0.000000 0.833333 +vt 0.048780 0.833333 +vt 0.073171 0.833333 +vt 0.109756 0.833333 +vt 0.146341 0.833333 +vt 0.000000 0.833333 +vt 0.082317 0.794872 +vt 0.118902 0.794872 +vt 0.131098 0.794872 +vt 0.146341 0.807692 +vt 0.009146 0.794872 +vt 0.021341 0.794872 +vt 0.048780 0.833333 +vt 0.000000 0.833333 +vt 0.146341 0.833333 +vt 0.109756 0.833333 +vt 0.073171 0.833333 +vt 0.009146 0.794872 +vt 0.146341 0.807692 +vt 0.118902 0.794872 +vt 0.094512 0.794872 +vt 0.082317 0.794872 +vt 0.057927 0.794872 +vt 0.048780 0.833333 +vt 0.000000 0.833333 +vt 0.146341 0.833333 +vt 0.109756 0.833333 +vt 0.073171 0.833333 +vt 0.039634 0.794872 +vt 0.027439 0.794872 +vt 0.021341 0.794872 +vt 0.009146 0.794872 +vt 0.137195 0.794872 +vt 0.131098 0.794872 +vt 0.118902 0.794872 +vt 0.100610 0.794872 +vt 0.094512 0.794872 +vt 0.082317 0.794872 +vt 0.064024 0.794872 +vt 0.057927 0.794872 +vt 0.134146 0.807692 +vt 0.121951 0.807692 +vt 0.060976 0.807692 +vt 0.085366 0.807692 +vt 0.036585 0.807692 +vt 0.024390 0.807692 +vt 0.097561 0.807692 +vt 0.048780 0.807692 +vt 0.012195 0.807692 +vt -0.000000 0.807692 +vt 0.109756 0.807692 +vt 0.073171 0.807692 +vt 0.106707 0.871795 +vt 0.100610 0.871795 +vt 0.039634 0.871795 +vt 0.003049 0.871795 +vt 0.112805 0.871795 +vt 0.057927 0.871795 +vt 0.051829 0.871795 +vt 0.076220 0.871795 +vt 0.015244 0.871795 +vt 0.125000 0.871795 +vt 0.070122 0.871795 +vt 0.064024 0.871795 +vt 0.088415 0.871795 +vt 0.027439 0.871795 +vt 0.137195 0.871795 +vt 0.100610 0.871795 +vt 0.039634 0.871795 +vt 0.003049 0.871795 +vt 0.112805 0.871795 +vt 0.051829 0.871795 +vt 0.082317 0.871795 +vt 0.076220 0.871795 +vt 0.015244 0.871795 +vt 0.125000 0.871795 +vt 0.064024 0.871795 +vt 0.088415 0.871795 +vt 0.027439 0.871795 +vt 0.137195 0.871795 +vt 0.137195 0.871795 +vt 0.027439 0.871795 +vt 0.088415 0.871795 +vt 0.070122 0.871795 +vt 0.064024 0.871795 +vt 0.125000 0.871795 +vt 0.015244 0.871795 +vt 0.076220 0.871795 +vt 0.051829 0.871795 +vt 0.112805 0.871795 +vt 0.003049 0.871795 +vt 0.039634 0.871795 +vt 0.100610 0.871795 +vt 0.137195 0.871795 +vt 0.027439 0.871795 +vt 0.088415 0.871795 +vt 0.070122 0.871795 +vt 0.064024 0.871795 +vt 0.125000 0.871795 +vt 0.015244 0.871795 +vt 0.076220 0.871795 +vt 0.051829 0.871795 +vt 0.112805 0.871795 +vt 0.003049 0.871795 +vt 0.039634 0.871795 +vt 0.100610 0.871795 +vt 0.146341 0.807692 +vt 0.045732 0.871795 +vt 0.009146 0.871795 +vt 0.118902 0.871795 +vt 0.082317 0.871795 +vt 0.021341 0.871795 +vt 0.131098 0.871795 +vt 0.094512 0.871795 +vt 0.033537 0.871795 +vt 0.143293 0.871795 +vt 0.106707 0.871795 +vt 0.045732 0.871795 +vt 0.009146 0.871795 +vt 0.118902 0.871795 +vt 0.057927 0.871795 +vt 0.021341 0.871795 +vt 0.131098 0.871795 +vt 0.070122 0.871795 +vt 0.094512 0.871795 +vt 0.033537 0.871795 +vt 0.143293 0.871795 +vt 0.143293 0.871795 +vt 0.033537 0.871795 +vt 0.094512 0.871795 +vt 0.131098 0.871795 +vt 0.021341 0.871795 +vt 0.082317 0.871795 +vt 0.057927 0.871795 +vt 0.118902 0.871795 +vt 0.009146 0.871795 +vt 0.045732 0.871795 +vt 0.106707 0.871795 +vt 0.143293 0.871795 +vt 0.033537 0.871795 +vt 0.094512 0.871795 +vt 0.131098 0.871795 +vt 0.021341 0.871795 +vt 0.082317 0.871795 +vt 0.057927 0.871795 +vt 0.118902 0.871795 +vt 0.009146 0.871795 +vt 0.045732 0.871795 +vt 0.106707 0.871795 +vn 0.0000 0.0000 -1.0000 +vn 0.0000 0.0000 1.0000 +vn 0.5000 -0.8660 0.0000 +vn 0.8660 -0.5000 -0.0000 +vn -0.5000 0.8660 -0.0000 +vn -0.0000 1.0000 -0.0000 +vn 0.5000 0.8660 -0.0000 +vn 0.8660 0.5000 -0.0000 +vn -1.0000 -0.0000 0.0000 +vn -0.8660 -0.5000 0.0000 +vn -0.0000 -1.0000 -0.0000 +vn 1.0000 0.0000 -0.0000 +vn -0.8660 0.5000 0.0000 +vn -0.5000 -0.8660 0.0000 +s off +f 219/293/32 232/294/32 220/295/32 +f 232/294/32 209/296/32 220/297/32 +f 209/298/32 222/299/32 210/300/32 +f 210/301/32 223/302/32 211/303/32 +f 223/302/32 212/304/32 211/305/32 +f 212/306/32 225/307/32 213/308/32 +f 213/309/32 226/310/32 214/311/32 +f 226/310/32 215/312/32 214/313/32 +f 215/314/32 228/315/32 216/316/32 +f 216/317/32 229/318/32 217/319/32 +f 229/318/32 218/320/32 217/321/32 +f 230/322/32 219/323/32 218/324/32 +f 267/325/32 280/326/32 268/327/32 +f 280/326/32 257/328/32 268/329/32 +f 257/330/32 270/331/32 258/332/32 +f 258/333/32 271/334/32 259/335/32 +f 271/334/32 260/336/32 259/337/32 +f 260/338/32 273/339/32 261/340/32 +f 261/341/32 274/342/32 262/343/32 +f 274/342/32 263/344/32 262/345/32 +f 263/346/32 276/347/32 264/348/32 +f 264/349/32 277/350/32 265/351/32 +f 277/350/32 266/352/32 265/353/32 +f 278/354/32 267/355/32 266/356/32 +f 293/357/33 255/358/33 294/359/33 +f 304/360/33 256/361/33 293/362/33 +f 304/363/33 246/364/33 245/365/33 +f 302/366/33 246/364/33 303/367/33 +f 301/368/33 247/369/33 302/370/33 +f 301/371/33 249/372/33 248/373/33 +f 300/374/33 250/375/33 249/372/33 +f 298/376/33 250/375/33 299/377/33 +f 298/378/33 252/379/33 251/380/33 +f 297/381/33 253/382/33 252/379/33 +f 295/383/33 253/382/33 296/384/33 +f 294/385/33 254/386/33 295/387/33 +f 307/388/32 318/389/32 319/390/32 +f 308/391/32 319/392/32 320/393/32 +f 321/394/32 308/391/32 320/395/32 +f 322/396/32 309/397/32 321/398/32 +f 311/399/32 322/400/32 323/401/32 +f 324/402/32 311/399/32 323/403/32 +f 325/404/32 312/405/32 324/406/32 +f 314/407/32 325/408/32 326/409/32 +f 327/410/32 314/407/32 326/411/32 +f 328/412/32 315/413/32 327/414/32 +f 305/415/32 328/416/32 317/417/32 +f 318/418/32 305/415/32 317/419/32 +f 243/420/33 379/421/33 242/422/33 +f 242/423/33 380/424/33 241/425/33 +f 241/426/33 381/427/33 240/428/33 +f 239/429/33 381/427/33 382/430/33 +f 239/431/33 383/432/33 238/433/33 +f 238/434/33 384/435/33 237/436/33 +f 236/437/33 384/435/33 385/438/33 +f 236/439/33 386/440/33 235/441/33 +f 234/442/33 386/440/33 387/443/33 +f 233/444/33 387/443/33 388/445/33 +f 233/446/33 377/447/33 244/448/33 +f 243/449/33 377/447/33 378/450/33 +f 355/451/32 366/452/32 367/453/32 +f 356/454/32 367/455/32 368/456/32 +f 369/457/32 356/454/32 368/458/32 +f 370/459/32 357/460/32 369/461/32 +f 359/462/32 370/463/32 371/464/32 +f 372/465/32 359/462/32 371/466/32 +f 373/467/32 360/468/32 372/469/32 +f 362/470/32 373/471/32 374/472/32 +f 375/473/32 362/470/32 374/474/32 +f 376/475/32 363/476/32 375/477/32 +f 353/478/32 376/479/32 365/480/32 +f 366/481/32 353/478/32 365/482/32 +f 331/483/33 342/484/33 330/485/33 +f 332/486/33 343/487/33 331/483/33 +f 345/488/33 332/486/33 333/489/33 +f 346/490/33 333/489/33 334/491/33 +f 335/492/33 346/493/33 334/494/33 +f 348/495/33 335/492/33 336/496/33 +f 349/497/33 336/496/33 337/498/33 +f 338/499/33 349/500/33 337/498/33 +f 351/501/33 338/499/33 339/502/33 +f 352/503/33 339/502/33 340/504/33 +f 329/505/33 352/506/33 340/504/33 +f 342/507/33 329/505/33 330/485/33 +f 219/293/32 231/508/32 232/294/32 +f 232/294/32 221/509/32 209/296/32 +f 209/298/32 221/509/32 222/299/32 +f 210/301/32 222/299/32 223/302/32 +f 223/302/32 224/510/32 212/304/32 +f 212/306/32 224/510/32 225/307/32 +f 213/309/32 225/307/32 226/310/32 +f 226/310/32 227/511/32 215/312/32 +f 215/314/32 227/512/32 228/315/32 +f 216/317/32 228/315/32 229/318/32 +f 229/318/32 230/322/32 218/320/32 +f 230/322/32 231/508/32 219/323/32 +f 267/325/32 279/513/32 280/326/32 +f 280/326/32 269/514/32 257/328/32 +f 257/330/32 269/514/32 270/331/32 +f 258/333/32 270/331/32 271/334/32 +f 271/334/32 272/515/32 260/336/32 +f 260/338/32 272/515/32 273/339/32 +f 261/341/32 273/339/32 274/342/32 +f 274/342/32 275/516/32 263/344/32 +f 263/346/32 275/517/32 276/347/32 +f 264/349/32 276/347/32 277/350/32 +f 277/350/32 278/354/32 266/352/32 +f 278/354/32 279/513/32 267/355/32 +f 293/357/33 256/361/33 255/358/33 +f 304/360/33 245/365/33 256/361/33 +f 304/363/33 303/518/33 246/364/33 +f 302/366/33 247/369/33 246/364/33 +f 301/368/33 248/373/33 247/369/33 +f 301/371/33 300/519/33 249/372/33 +f 300/374/33 299/520/33 250/375/33 +f 298/376/33 251/521/33 250/375/33 +f 298/378/33 297/522/33 252/379/33 +f 297/381/33 296/523/33 253/382/33 +f 295/383/33 254/386/33 253/382/33 +f 294/385/33 255/358/33 254/386/33 +f 307/388/32 306/524/32 318/389/32 +f 308/391/32 307/388/32 319/392/32 +f 321/394/32 309/397/32 308/391/32 +f 322/396/32 310/525/32 309/397/32 +f 311/399/32 310/526/32 322/400/32 +f 324/402/32 312/405/32 311/399/32 +f 325/404/32 313/527/32 312/405/32 +f 314/407/32 313/527/32 325/408/32 +f 327/410/32 315/413/32 314/407/32 +f 328/412/32 316/528/32 315/413/32 +f 305/415/32 316/528/32 328/416/32 +f 318/418/32 306/524/32 305/415/32 +f 243/420/33 378/450/33 379/421/33 +f 242/423/33 379/421/33 380/424/33 +f 241/426/33 380/424/33 381/427/33 +f 239/429/33 240/529/33 381/427/33 +f 239/431/33 382/530/33 383/432/33 +f 238/434/33 383/432/33 384/435/33 +f 236/437/33 237/531/33 384/435/33 +f 236/439/33 385/438/33 386/440/33 +f 234/442/33 235/532/33 386/440/33 +f 233/444/33 234/533/33 387/443/33 +f 233/446/33 388/445/33 377/447/33 +f 243/449/33 244/534/33 377/447/33 +f 355/451/32 354/535/32 366/452/32 +f 356/454/32 355/451/32 367/455/32 +f 369/457/32 357/460/32 356/454/32 +f 370/459/32 358/536/32 357/460/32 +f 359/462/32 358/537/32 370/463/32 +f 372/465/32 360/468/32 359/462/32 +f 373/467/32 361/538/32 360/468/32 +f 362/470/32 361/538/32 373/471/32 +f 375/473/32 363/476/32 362/470/32 +f 376/475/32 364/539/32 363/476/32 +f 353/478/32 364/539/32 376/479/32 +f 366/481/32 354/535/32 353/478/32 +f 331/483/33 343/540/33 342/484/33 +f 332/486/33 344/541/33 343/487/33 +f 345/488/33 344/542/33 332/486/33 +f 346/490/33 345/543/33 333/489/33 +f 335/492/33 347/544/33 346/493/33 +f 348/495/33 347/545/33 335/492/33 +f 349/497/33 348/546/33 336/496/33 +f 338/499/33 350/547/33 349/500/33 +f 351/501/33 350/548/33 338/499/33 +f 352/503/33 351/549/33 339/502/33 +f 329/505/33 341/550/33 352/506/33 +f 342/507/33 341/551/33 329/505/33 +s 1 +f 202/552/34 225/307/35 201/553/35 +f 208/554/36 221/509/37 232/294/36 +f 198/555/38 223/302/39 222/299/38 +f 206/556/40 229/318/41 205/557/41 +f 202/552/34 227/511/42 226/310/34 +f 199/558/39 224/510/43 223/302/39 +f 207/559/44 230/322/40 206/556/40 +f 204/560/45 227/512/42 203/561/42 +f 201/553/35 224/510/43 200/562/43 +f 208/554/36 231/508/44 207/559/44 +f 198/555/38 221/509/37 197/563/37 +f 205/557/41 228/315/45 204/560/45 +f 211/305/39 236/564/43 235/565/39 +f 219/323/44 242/566/40 218/324/40 +f 216/316/45 239/567/42 215/314/42 +f 213/308/35 236/568/43 212/306/43 +f 219/293/44 244/569/36 243/570/44 +f 210/300/38 233/571/37 209/298/37 +f 217/319/41 240/572/45 216/317/45 +f 214/311/34 237/573/35 213/309/35 +f 220/297/36 233/574/37 244/575/36 +f 211/303/39 234/576/38 210/301/38 +f 218/320/40 241/577/41 217/321/41 +f 215/312/42 238/578/34 214/313/34 +f 250/375/34 273/339/35 249/372/35 +f 245/365/37 280/326/36 256/361/36 +f 247/369/39 270/331/38 246/364/38 +f 254/386/40 277/350/41 253/382/41 +f 251/521/42 274/342/34 250/375/34 +f 248/373/43 271/334/39 247/369/39 +f 255/358/44 278/354/40 254/386/40 +f 252/379/45 275/517/42 251/380/42 +f 249/372/35 272/515/43 248/373/43 +f 255/358/44 280/326/36 279/513/44 +f 246/364/38 269/514/37 245/365/37 +f 253/382/41 276/347/45 252/379/45 +f 260/336/43 283/579/39 259/337/39 +f 267/355/44 290/580/40 266/356/40 +f 264/348/45 287/581/42 263/346/42 +f 261/340/35 284/582/43 260/338/43 +f 268/327/36 291/583/44 267/325/44 +f 257/330/37 282/584/38 281/585/37 +f 265/351/41 288/586/45 264/349/45 +f 262/343/34 285/587/35 261/341/35 +f 257/328/37 292/588/36 268/329/36 +f 259/335/39 282/589/38 258/333/38 +f 266/352/40 289/590/41 265/353/41 +f 263/344/42 286/591/34 262/345/34 +f 322/400/42 299/592/34 323/401/34 +f 319/392/40 296/593/41 320/393/41 +f 326/411/39 303/594/38 327/410/38 +f 317/417/36 304/595/37 293/596/36 +f 323/403/34 300/597/35 324/402/35 +f 320/395/41 297/598/45 321/394/45 +f 327/414/38 304/599/37 328/412/37 +f 317/419/36 294/600/44 318/418/44 +f 324/406/35 301/601/43 325/404/43 +f 321/398/45 298/602/42 322/396/42 +f 318/389/44 295/603/40 319/390/40 +f 325/408/43 302/604/39 326/409/39 +f 332/486/41 309/397/45 333/489/45 +f 339/502/38 316/528/37 340/504/37 +f 329/505/36 306/524/44 330/485/44 +f 336/496/35 313/527/43 337/498/43 +f 333/489/45 310/525/42 334/491/42 +f 330/485/44 307/388/40 331/483/40 +f 337/498/43 314/407/39 338/499/39 +f 334/494/42 311/399/34 335/492/34 +f 331/483/40 308/391/41 332/486/41 +f 338/499/39 315/413/38 339/502/38 +f 340/504/37 305/415/36 329/505/36 +f 335/492/34 312/405/35 336/496/35 +f 370/463/42 347/605/34 371/464/34 +f 367/455/40 344/606/41 368/456/41 +f 374/474/39 351/607/38 375/473/38 +f 365/480/36 352/608/37 341/609/36 +f 371/466/34 348/610/35 372/465/35 +f 368/458/41 345/611/45 369/457/45 +f 375/477/38 352/612/37 376/475/37 +f 365/482/36 342/613/44 366/481/44 +f 372/469/35 349/614/43 373/467/43 +f 369/461/45 346/615/42 370/459/42 +f 366/452/44 343/616/40 367/453/40 +f 373/471/43 350/617/39 374/472/39 +f 380/424/41 357/460/45 381/427/45 +f 388/445/37 363/476/38 364/539/37 +f 377/447/36 354/535/44 378/450/44 +f 385/438/43 360/468/35 361/538/43 +f 381/427/45 358/536/42 382/430/42 +f 378/450/44 355/451/40 379/421/40 +f 385/438/43 362/470/39 386/440/39 +f 382/530/42 359/462/34 383/432/34 +f 379/421/40 356/454/41 380/424/41 +f 386/440/39 363/476/38 387/443/38 +f 388/445/37 353/478/36 377/447/36 +f 383/432/34 360/468/35 384/435/35 +f 202/552/34 226/310/34 225/307/35 +f 208/554/36 197/563/37 221/509/37 +f 198/555/38 199/558/39 223/302/39 +f 206/556/40 230/322/40 229/318/41 +f 202/552/34 203/618/42 227/511/42 +f 199/558/39 200/562/43 224/510/43 +f 207/559/44 231/508/44 230/322/40 +f 204/560/45 228/315/45 227/512/42 +f 201/553/35 225/307/35 224/510/43 +f 208/554/36 232/294/36 231/508/44 +f 198/555/38 222/299/38 221/509/37 +f 205/557/41 229/318/41 228/315/45 +f 211/305/39 212/304/43 236/564/43 +f 219/323/44 243/619/44 242/566/40 +f 216/316/45 240/620/45 239/567/42 +f 213/308/35 237/621/35 236/568/43 +f 219/293/44 220/295/36 244/569/36 +f 210/300/38 234/622/38 233/571/37 +f 217/319/41 241/623/41 240/572/45 +f 214/311/34 238/624/34 237/573/35 +f 220/297/36 209/296/37 233/574/37 +f 211/303/39 235/625/39 234/576/38 +f 218/320/40 242/626/40 241/577/41 +f 215/312/42 239/627/42 238/578/34 +f 250/375/34 274/342/34 273/339/35 +f 245/365/37 269/514/37 280/326/36 +f 247/369/39 271/334/39 270/331/38 +f 254/386/40 278/354/40 277/350/41 +f 251/521/42 275/516/42 274/342/34 +f 248/373/43 272/515/43 271/334/39 +f 255/358/44 279/513/44 278/354/40 +f 252/379/45 276/347/45 275/517/42 +f 249/372/35 273/339/35 272/515/43 +f 255/358/44 256/361/36 280/326/36 +f 246/364/38 270/331/38 269/514/37 +f 253/382/41 277/350/41 276/347/45 +f 260/336/43 284/628/43 283/579/39 +f 267/355/44 291/629/44 290/580/40 +f 264/348/45 288/630/45 287/581/42 +f 261/340/35 285/631/35 284/582/43 +f 268/327/36 292/632/36 291/583/44 +f 257/330/37 258/332/38 282/584/38 +f 265/351/41 289/633/41 288/586/45 +f 262/343/34 286/634/34 285/587/35 +f 257/328/37 281/635/37 292/588/36 +f 259/335/39 283/636/39 282/589/38 +f 266/352/40 290/637/40 289/590/41 +f 263/344/42 287/638/42 286/591/34 +f 322/400/42 298/639/42 299/592/34 +f 319/392/40 295/640/40 296/593/41 +f 326/411/39 302/641/39 303/594/38 +f 317/417/36 328/416/37 304/595/37 +f 323/403/34 299/642/34 300/597/35 +f 320/395/41 296/643/41 297/598/45 +f 327/414/38 303/644/38 304/599/37 +f 317/419/36 293/645/36 294/600/44 +f 324/406/35 300/646/35 301/601/43 +f 321/398/45 297/647/45 298/602/42 +f 318/389/44 294/648/44 295/603/40 +f 325/408/43 301/649/43 302/604/39 +f 332/486/41 308/391/41 309/397/45 +f 339/502/38 315/413/38 316/528/37 +f 329/505/36 305/415/36 306/524/44 +f 336/496/35 312/405/35 313/527/43 +f 333/489/45 309/397/45 310/525/42 +f 330/485/44 306/524/44 307/388/40 +f 337/498/43 313/527/43 314/407/39 +f 334/494/42 310/526/42 311/399/34 +f 331/483/40 307/388/40 308/391/41 +f 338/499/39 314/407/39 315/413/38 +f 340/504/37 316/528/37 305/415/36 +f 335/492/34 311/399/34 312/405/35 +f 370/463/42 346/650/42 347/605/34 +f 367/455/40 343/651/40 344/606/41 +f 374/474/39 350/652/39 351/607/38 +f 365/480/36 376/479/37 352/608/37 +f 371/466/34 347/653/34 348/610/35 +f 368/458/41 344/654/41 345/611/45 +f 375/477/38 351/655/38 352/612/37 +f 365/482/36 341/656/36 342/613/44 +f 372/469/35 348/657/35 349/614/43 +f 369/461/45 345/658/45 346/615/42 +f 366/452/44 342/659/44 343/616/40 +f 373/471/43 349/660/43 350/617/39 +f 380/424/41 356/454/41 357/460/45 +f 388/445/37 387/443/38 363/476/38 +f 377/447/36 353/478/36 354/535/44 +f 385/438/43 384/435/35 360/468/35 +f 381/427/45 357/460/45 358/536/42 +f 378/450/44 354/535/44 355/451/40 +f 385/438/43 361/538/43 362/470/39 +f 382/530/42 358/537/42 359/462/34 +f 379/421/40 355/451/40 356/454/41 +f 386/440/39 362/470/39 363/476/38 +f 388/445/37 364/539/37 353/478/36 +f 383/432/34 359/462/34 360/468/35 +o BladesLeft +v 0.375000 3.187500 -2.000000 +v 0.156250 3.128886 -2.000000 +v -0.003886 2.968750 -2.000000 +v -0.062500 2.750000 -2.000000 +v -0.003886 2.531250 -2.000000 +v 0.156250 2.371114 -2.000000 +v 0.375000 2.312500 -2.000000 +v 0.593750 2.371114 -2.000000 +v 0.753886 2.531250 -2.000000 +v 0.812500 2.750000 -2.000000 +v 0.753886 2.968750 -2.000000 +v 0.593750 3.128886 -2.000000 +v 0.375000 3.062500 -1.750000 +v 0.218750 3.020633 -1.750000 +v 0.104367 2.906250 -1.750000 +v 0.062500 2.750000 -1.750000 +v 0.104367 2.593750 -1.750000 +v 0.218750 2.479367 -1.750000 +v 0.375000 2.437500 -1.750000 +v 0.531250 2.479367 -1.750000 +v 0.645633 2.593750 -1.750000 +v 0.687500 2.750000 -1.750000 +v 0.645633 2.906250 -1.750000 +v 0.531250 3.020633 -1.750000 +v 0.375000 3.187500 -1.750000 +v 0.156250 3.128886 -1.750000 +v -0.003886 2.968750 -1.750000 +v -0.062500 2.750000 -1.750000 +v -0.003886 2.531250 -1.750000 +v 0.156250 2.371114 -1.750000 +v 0.375000 2.312500 -1.750000 +v 0.593750 2.371114 -1.750000 +v 0.753886 2.531250 -1.750000 +v 0.812500 2.750000 -1.750000 +v 0.753886 2.968750 -1.750000 +v 0.593750 3.128886 -1.750000 +v 0.375000 3.062500 -1.500000 +v 0.218750 3.020633 -1.500000 +v 0.104367 2.906250 -1.500000 +v 0.062500 2.750000 -1.500000 +v 0.104367 2.593750 -1.500000 +v 0.218750 2.479367 -1.500000 +v 0.375000 2.437500 -1.500000 +v 0.531250 2.479367 -1.500000 +v 0.645633 2.593750 -1.500000 +v 0.687500 2.750000 -1.500000 +v 0.645633 2.906250 -1.500000 +v 0.531250 3.020633 -1.500000 +v 0.375000 3.187500 -0.500000 +v 0.156250 3.128886 -0.500000 +v -0.003886 2.968750 -0.500000 +v -0.062500 2.750000 -0.500000 +v -0.003886 2.531250 -0.500000 +v 0.156250 2.371114 -0.500000 +v 0.375000 2.312500 -0.500000 +v 0.593750 2.371114 -0.500000 +v 0.753886 2.531250 -0.500000 +v 0.812500 2.750000 -0.500000 +v 0.753886 2.968750 -0.500000 +v 0.593750 3.128886 -0.500000 +v 0.375000 3.062500 -0.250000 +v 0.218750 3.020633 -0.250000 +v 0.104367 2.906250 -0.250000 +v 0.062500 2.750000 -0.250000 +v 0.104367 2.593750 -0.250000 +v 0.218750 2.479367 -0.250000 +v 0.375000 2.437500 -0.250000 +v 0.531250 2.479367 -0.250000 +v 0.645633 2.593750 -0.250000 +v 0.687500 2.750000 -0.250000 +v 0.645633 2.906250 -0.250000 +v 0.531250 3.020633 -0.250000 +v 0.375000 3.187500 -0.250000 +v 0.156250 3.128886 -0.250000 +v -0.003886 2.968750 -0.250000 +v -0.062500 2.750000 -0.250000 +v -0.003886 2.531250 -0.250000 +v 0.156250 2.371114 -0.250000 +v 0.375000 2.312500 -0.250000 +v 0.593750 2.371114 -0.250000 +v 0.753886 2.531250 -0.250000 +v 0.812500 2.750000 -0.250000 +v 0.753886 2.968750 -0.250000 +v 0.593750 3.128886 -0.250000 +v 0.375000 3.062500 0.000000 +v 0.218750 3.020633 0.000000 +v 0.104367 2.906250 0.000000 +v 0.062500 2.750000 0.000000 +v 0.104367 2.593750 0.000000 +v 0.218750 2.479367 0.000000 +v 0.375000 2.437500 0.000000 +v 0.531250 2.479367 0.000000 +v 0.645633 2.593750 0.000000 +v 0.687500 2.750000 0.000000 +v 0.645633 2.906250 0.000000 +v 0.531250 3.020633 0.000000 +v 0.531250 3.020633 -0.500000 +v 0.645633 2.906250 -0.500000 +v 0.687500 2.750000 -0.500000 +v 0.645633 2.593750 -0.500000 +v 0.531250 2.479367 -0.500000 +v 0.375000 2.437500 -0.500000 +v 0.218750 2.479367 -0.500000 +v 0.104367 2.593750 -0.500000 +v 0.062500 2.750000 -0.500000 +v 0.104367 2.906250 -0.500000 +v 0.218750 3.020633 -0.500000 +v 0.375000 3.062500 -0.500000 +v 0.593750 3.128886 -0.750000 +v 0.753886 2.968750 -0.750000 +v 0.812500 2.750000 -0.750000 +v 0.753886 2.531250 -0.750000 +v 0.593750 2.371114 -0.750000 +v 0.375000 2.312500 -0.750000 +v 0.156250 2.371114 -0.750000 +v -0.003886 2.531250 -0.750000 +v -0.062500 2.750000 -0.750000 +v -0.003886 2.968750 -0.750000 +v 0.156250 3.128886 -0.750000 +v 0.375000 3.187500 -0.750000 +v 0.531250 3.020633 -0.750000 +v 0.645633 2.906250 -0.750000 +v 0.687500 2.750000 -0.750000 +v 0.645633 2.593750 -0.750000 +v 0.531250 2.479367 -0.750000 +v 0.375000 2.437500 -0.750000 +v 0.218750 2.479367 -0.750000 +v 0.104367 2.593750 -0.750000 +v 0.062500 2.750000 -0.750000 +v 0.104367 2.906250 -0.750000 +v 0.218750 3.020633 -0.750000 +v 0.375000 3.062500 -0.750000 +v 0.593750 3.128886 -1.000000 +v 0.753886 2.968750 -1.000000 +v 0.812500 2.750000 -1.000000 +v 0.753886 2.531250 -1.000000 +v 0.593750 2.371114 -1.000000 +v 0.375000 2.312500 -1.000000 +v 0.156250 2.371114 -1.000000 +v -0.003886 2.531250 -1.000000 +v -0.062500 2.750000 -1.000000 +v -0.003886 2.968750 -1.000000 +v 0.156250 3.128886 -1.000000 +v 0.375000 3.187500 -1.000000 +v 0.531250 3.020633 -1.000000 +v 0.645633 2.906250 -1.000000 +v 0.687500 2.750000 -1.000000 +v 0.645633 2.593750 -1.000000 +v 0.531250 2.479367 -1.000000 +v 0.375000 2.437500 -1.000000 +v 0.218750 2.479367 -1.000000 +v 0.104367 2.593750 -1.000000 +v 0.062500 2.750000 -1.000000 +v 0.104367 2.906250 -1.000000 +v 0.218750 3.020633 -1.000000 +v 0.375000 3.062500 -1.000000 +v 0.593750 3.128886 -1.250000 +v 0.753886 2.968750 -1.250000 +v 0.812500 2.750000 -1.250000 +v 0.753886 2.531250 -1.250000 +v 0.593750 2.371114 -1.250000 +v 0.375000 2.312500 -1.250000 +v 0.156250 2.371114 -1.250000 +v -0.003886 2.531250 -1.250000 +v -0.062500 2.750000 -1.250000 +v -0.003886 2.968750 -1.250000 +v 0.156250 3.128886 -1.250000 +v 0.375000 3.187500 -1.250000 +v 0.531250 3.020633 -1.250000 +v 0.645633 2.906250 -1.250000 +v 0.687500 2.750000 -1.250000 +v 0.645633 2.593750 -1.250000 +v 0.531250 2.479367 -1.250000 +v 0.375000 2.437500 -1.250000 +v 0.218750 2.479367 -1.250000 +v 0.104367 2.593750 -1.250000 +v 0.062500 2.750000 -1.250000 +v 0.104367 2.906250 -1.250000 +v 0.218750 3.020633 -1.250000 +v 0.375000 3.062500 -1.250000 +v 0.593750 3.128886 -1.500000 +v 0.753886 2.968750 -1.500000 +v 0.812500 2.750000 -1.500000 +v 0.753886 2.531250 -1.500000 +v 0.593750 2.371114 -1.500000 +v 0.375000 2.312500 -1.500000 +v 0.156250 2.371114 -1.500000 +v -0.003886 2.531250 -1.500000 +v -0.062500 2.750000 -1.500000 +v -0.003886 2.968750 -1.500000 +v 0.156250 3.128886 -1.500000 +v 0.375000 3.187500 -1.500000 +vt 0.051829 0.846154 +vt 0.060976 0.833333 +vt 0.057927 0.846154 +vt 0.070122 0.846154 +vt 0.064024 0.846154 +vt 0.076220 0.846154 +vt 0.085366 0.833333 +vt 0.082317 0.846154 +vt 0.088415 0.846154 +vt 0.097561 0.833333 +vt 0.094512 0.846154 +vt 0.106707 0.846154 +vt 0.100610 0.846154 +vt 0.112805 0.846154 +vt 0.121951 0.833333 +vt 0.118902 0.846154 +vt 0.125000 0.846154 +vt 0.134146 0.833333 +vt 0.131098 0.846154 +vt 0.143293 0.846154 +vt 0.137195 0.846154 +vt 0.003049 0.846154 +vt 0.012195 0.833333 +vt 0.009146 0.846154 +vt 0.015244 0.846154 +vt 0.024390 0.833333 +vt 0.021341 0.846154 +vt 0.033537 0.846154 +vt 0.027439 0.846154 +vt 0.036585 0.833333 +vt 0.045732 0.846154 +vt 0.039634 0.846154 +vt 0.051829 0.846154 +vt 0.060976 0.833333 +vt 0.057927 0.846154 +vt 0.070122 0.846154 +vt 0.064024 0.846154 +vt 0.076220 0.846154 +vt 0.085366 0.833333 +vt 0.082317 0.846154 +vt 0.088415 0.846154 +vt 0.097561 0.833333 +vt 0.094512 0.846154 +vt 0.106707 0.846154 +vt 0.100610 0.846154 +vt 0.112805 0.846154 +vt 0.121951 0.833333 +vt 0.118902 0.846154 +vt 0.125000 0.846154 +vt 0.134146 0.833333 +vt 0.131098 0.846154 +vt 0.143293 0.846154 +vt 0.137195 0.846154 +vt 0.003049 0.846154 +vt 0.012195 0.833333 +vt 0.009146 0.846154 +vt 0.015244 0.846154 +vt 0.024390 0.833333 +vt 0.021341 0.846154 +vt 0.033537 0.846154 +vt 0.027439 0.846154 +vt 0.036585 0.833333 +vt 0.045732 0.846154 +vt 0.039634 0.846154 +vt 0.057927 0.794872 +vt 0.048780 0.807692 +vt 0.051829 0.794872 +vt 0.070122 0.794872 +vt 0.060976 0.807692 +vt 0.064024 0.794872 +vt 0.076220 0.794872 +vt 0.085366 0.807692 +vt 0.073171 0.807692 +vt 0.094512 0.794872 +vt 0.088415 0.794872 +vt 0.106707 0.794872 +vt 0.097561 0.807692 +vt 0.100610 0.794872 +vt 0.112805 0.794872 +vt 0.121951 0.807692 +vt 0.109756 0.807692 +vt 0.131098 0.794872 +vt 0.125000 0.794872 +vt 0.143293 0.794872 +vt 0.134146 0.807692 +vt 0.137195 0.794872 +vt 0.003049 0.794872 +vt 0.012195 0.807692 +vt 0.000000 0.807692 +vt 0.021341 0.794872 +vt 0.015244 0.794872 +vt 0.033537 0.794872 +vt 0.024390 0.807692 +vt 0.027439 0.794872 +vt 0.045732 0.794872 +vt 0.036585 0.807692 +vt 0.039634 0.794872 +vt 0.036585 0.833333 +vt 0.045732 0.846154 +vt 0.039634 0.846154 +vt 0.024390 0.833333 +vt 0.033537 0.846154 +vt 0.027439 0.846154 +vt 0.015244 0.846154 +vt 0.021341 0.846154 +vt 0.003049 0.846154 +vt 0.012195 0.833333 +vt 0.009146 0.846154 +vt 0.134146 0.833333 +vt 0.143293 0.846154 +vt 0.137195 0.846154 +vt 0.125000 0.846154 +vt 0.131098 0.846154 +vt 0.112805 0.846154 +vt 0.121951 0.833333 +vt 0.118902 0.846154 +vt 0.097561 0.833333 +vt 0.106707 0.846154 +vt 0.100610 0.846154 +vt 0.088415 0.846154 +vt 0.094512 0.846154 +vt 0.076220 0.846154 +vt 0.085366 0.833333 +vt 0.082317 0.846154 +vt 0.060976 0.833333 +vt 0.070122 0.846154 +vt 0.064024 0.846154 +vt 0.051829 0.846154 +vt 0.057927 0.846154 +vt 0.045732 0.794872 +vt 0.036585 0.807692 +vt 0.039634 0.794872 +vt 0.033537 0.794872 +vt 0.024390 0.807692 +vt 0.027439 0.794872 +vt 0.021341 0.794872 +vt 0.012195 0.807692 +vt 0.015244 0.794872 +vt 0.003049 0.794872 +vt 0.000000 0.807692 +vt 0.143293 0.794872 +vt 0.134146 0.807692 +vt 0.137195 0.794872 +vt 0.131098 0.794872 +vt 0.121951 0.807692 +vt 0.125000 0.794872 +vt 0.112805 0.794872 +vt 0.109756 0.807692 +vt 0.106707 0.794872 +vt 0.097561 0.807692 +vt 0.100610 0.794872 +vt 0.094512 0.794872 +vt 0.085366 0.807692 +vt 0.088415 0.794872 +vt 0.076220 0.794872 +vt 0.073171 0.807692 +vt 0.070122 0.794872 +vt 0.060976 0.807692 +vt 0.064024 0.794872 +vt 0.057927 0.794872 +vt 0.048780 0.807692 +vt 0.051829 0.794872 +vt 0.036585 0.833333 +vt 0.045732 0.846154 +vt 0.039634 0.846154 +vt 0.024390 0.833333 +vt 0.033537 0.846154 +vt 0.027439 0.846154 +vt 0.015244 0.846154 +vt 0.021341 0.846154 +vt 0.003049 0.846154 +vt 0.012195 0.833333 +vt 0.009146 0.846154 +vt 0.134146 0.833333 +vt 0.143293 0.846154 +vt 0.137195 0.846154 +vt 0.125000 0.846154 +vt 0.131098 0.846154 +vt 0.112805 0.846154 +vt 0.121951 0.833333 +vt 0.118902 0.846154 +vt 0.097561 0.833333 +vt 0.106707 0.846154 +vt 0.100610 0.846154 +vt 0.088415 0.846154 +vt 0.094512 0.846154 +vt 0.076220 0.846154 +vt 0.085366 0.833333 +vt 0.082317 0.846154 +vt 0.060976 0.833333 +vt 0.070122 0.846154 +vt 0.064024 0.846154 +vt 0.051829 0.846154 +vt 0.057927 0.846154 +vt 0.036585 0.807692 +vt 0.045732 0.794872 +vt 0.048780 0.807692 +vt 0.024390 0.807692 +vt 0.033537 0.794872 +vt 0.015244 0.794872 +vt 0.012195 0.807692 +vt 0.003049 0.794872 +vt 0.000000 0.807692 +vt 0.134146 0.807692 +vt 0.143293 0.794872 +vt 0.146341 0.807692 +vt 0.125000 0.794872 +vt 0.121951 0.807692 +vt 0.112805 0.794872 +vt 0.109756 0.807692 +vt 0.097561 0.807692 +vt 0.106707 0.794872 +vt 0.088415 0.794872 +vt 0.085366 0.807692 +vt 0.076220 0.794872 +vt 0.073171 0.807692 +vt 0.060976 0.807692 +vt 0.070122 0.794872 +vt 0.051829 0.794872 +vt 0.048780 0.833333 +vt 0.073171 0.833333 +vt 0.109756 0.833333 +vt 0.146341 0.833333 +vt -0.000000 0.833333 +vt 0.048780 0.833333 +vt 0.073171 0.833333 +vt 0.109756 0.833333 +vt 0.146341 0.833333 +vt 0.000000 0.833333 +vt 0.082317 0.794872 +vt 0.118902 0.794872 +vt 0.146341 0.807692 +vt 0.009146 0.794872 +vt 0.048780 0.833333 +vt 0.000000 0.833333 +vt 0.146341 0.833333 +vt 0.109756 0.833333 +vt 0.073171 0.833333 +vt 0.009146 0.794872 +vt 0.146341 0.807692 +vt 0.118902 0.794872 +vt 0.082317 0.794872 +vt 0.048780 0.833333 +vt 0.000000 0.833333 +vt 0.146341 0.833333 +vt 0.109756 0.833333 +vt 0.073171 0.833333 +vt 0.039634 0.794872 +vt 0.027439 0.794872 +vt 0.021341 0.794872 +vt 0.009146 0.794872 +vt 0.137195 0.794872 +vt 0.131098 0.794872 +vt 0.118902 0.794872 +vt 0.100610 0.794872 +vt 0.094512 0.794872 +vt 0.082317 0.794872 +vt 0.064024 0.794872 +vt 0.057927 0.794872 +vt 0.134146 0.807692 +vt 0.121951 0.807692 +vt 0.073171 0.807692 +vt 0.060976 0.807692 +vt 0.097561 0.807692 +vt 0.085366 0.807692 +vt 0.036585 0.807692 +vt 0.024390 0.807692 +vt 0.146341 0.807692 +vt 0.109756 0.807692 +vt 0.048780 0.807692 +vt 0.012195 0.807692 +vt -0.000000 0.807692 +vt 0.100610 0.871795 +vt 0.039634 0.871795 +vt 0.003049 0.871795 +vt 0.112805 0.871795 +vt 0.051829 0.871795 +vt 0.076220 0.871795 +vt 0.015244 0.871795 +vt 0.125000 0.871795 +vt 0.064024 0.871795 +vt 0.088415 0.871795 +vt 0.027439 0.871795 +vt 0.137195 0.871795 +vt 0.100610 0.871795 +vt 0.039634 0.871795 +vt 0.003049 0.871795 +vt 0.112805 0.871795 +vt 0.051829 0.871795 +vt 0.076220 0.871795 +vt 0.015244 0.871795 +vt 0.125000 0.871795 +vt 0.064024 0.871795 +vt 0.088415 0.871795 +vt 0.027439 0.871795 +vt 0.137195 0.871795 +vt 0.137195 0.871795 +vt 0.027439 0.871795 +vt 0.088415 0.871795 +vt 0.064024 0.871795 +vt 0.125000 0.871795 +vt 0.015244 0.871795 +vt 0.076220 0.871795 +vt 0.051829 0.871795 +vt 0.112805 0.871795 +vt 0.003049 0.871795 +vt 0.039634 0.871795 +vt 0.100610 0.871795 +vt 0.137195 0.871795 +vt 0.027439 0.871795 +vt 0.088415 0.871795 +vt 0.064024 0.871795 +vt 0.125000 0.871795 +vt 0.015244 0.871795 +vt 0.076220 0.871795 +vt 0.051829 0.871795 +vt 0.112805 0.871795 +vt 0.003049 0.871795 +vt 0.039634 0.871795 +vt 0.100610 0.871795 +vt 0.106707 0.871795 +vt 0.045732 0.871795 +vt 0.009146 0.871795 +vt 0.118902 0.871795 +vt 0.057927 0.871795 +vt 0.082317 0.871795 +vt 0.021341 0.871795 +vt 0.131098 0.871795 +vt 0.070122 0.871795 +vt 0.094512 0.871795 +vt 0.033537 0.871795 +vt 0.143293 0.871795 +vt 0.106707 0.871795 +vt 0.045732 0.871795 +vt 0.009146 0.871795 +vt 0.118902 0.871795 +vt 0.057927 0.871795 +vt 0.082317 0.871795 +vt 0.021341 0.871795 +vt 0.131098 0.871795 +vt 0.070122 0.871795 +vt 0.094512 0.871795 +vt 0.033537 0.871795 +vt 0.143293 0.871795 +vt 0.143293 0.871795 +vt 0.033537 0.871795 +vt 0.094512 0.871795 +vt 0.070122 0.871795 +vt 0.131098 0.871795 +vt 0.021341 0.871795 +vt 0.082317 0.871795 +vt 0.057927 0.871795 +vt 0.118902 0.871795 +vt 0.009146 0.871795 +vt 0.045732 0.871795 +vt 0.106707 0.871795 +vt 0.143293 0.871795 +vt 0.033537 0.871795 +vt 0.094512 0.871795 +vt 0.070122 0.871795 +vt 0.131098 0.871795 +vt 0.021341 0.871795 +vt 0.082317 0.871795 +vt 0.057927 0.871795 +vt 0.118902 0.871795 +vt 0.009146 0.871795 +vt 0.045732 0.871795 +vt 0.106707 0.871795 +vn 0.0000 0.0000 1.0000 +vn 0.0000 0.0000 -1.0000 +vn -0.5000 -0.8660 0.0000 +vn -0.8660 -0.5000 0.0000 +vn 0.0000 1.0000 0.0000 +vn 0.5000 0.8660 0.0000 +vn -0.8660 0.5000 0.0000 +vn -0.5000 0.8660 0.0000 +vn 1.0000 -0.0000 0.0000 +vn 0.8660 -0.5000 0.0000 +vn -0.0000 -1.0000 0.0000 +vn -1.0000 0.0000 0.0000 +vn 0.8660 0.5000 0.0000 +vn 0.5000 -0.8660 0.0000 +s off +f 411/661/46 424/662/46 412/663/46 +f 424/662/46 401/664/46 412/665/46 +f 401/666/46 414/667/46 402/668/46 +f 402/669/46 415/670/46 403/671/46 +f 415/670/46 404/672/46 403/673/46 +f 404/674/46 417/675/46 405/676/46 +f 405/677/46 418/678/46 406/679/46 +f 418/678/46 407/680/46 406/681/46 +f 407/682/46 420/683/46 408/684/46 +f 408/685/46 421/686/46 409/687/46 +f 421/686/46 410/688/46 409/689/46 +f 422/690/46 411/691/46 410/692/46 +f 459/693/46 472/694/46 460/695/46 +f 472/694/46 449/696/46 460/697/46 +f 449/698/46 462/699/46 450/700/46 +f 450/701/46 463/702/46 451/703/46 +f 463/702/46 452/704/46 451/705/46 +f 452/706/46 465/707/46 453/708/46 +f 453/709/46 466/710/46 454/711/46 +f 466/710/46 455/712/46 454/713/46 +f 455/714/46 468/715/46 456/716/46 +f 456/717/46 469/718/46 457/719/46 +f 469/718/46 458/720/46 457/721/46 +f 470/722/46 459/723/46 458/724/46 +f 485/725/47 447/726/47 486/727/47 +f 496/728/47 448/729/47 485/730/47 +f 496/731/47 438/732/47 437/733/47 +f 494/734/47 438/732/47 495/735/47 +f 493/736/47 439/737/47 494/738/47 +f 493/739/47 441/740/47 440/741/47 +f 491/742/47 441/740/47 492/743/47 +f 490/744/47 442/745/47 491/746/47 +f 490/747/47 444/748/47 443/749/47 +f 488/750/47 444/748/47 489/751/47 +f 487/752/47 445/753/47 488/754/47 +f 486/755/47 446/756/47 487/757/47 +f 499/758/46 510/759/46 511/760/46 +f 500/761/46 511/762/46 512/763/46 +f 513/764/46 500/761/46 512/765/46 +f 514/766/46 501/767/46 513/768/46 +f 503/769/46 514/770/46 515/771/46 +f 516/772/46 503/769/46 515/773/46 +f 517/774/46 504/775/46 516/776/46 +f 506/777/46 517/778/46 518/779/46 +f 519/780/46 506/777/46 518/781/46 +f 520/782/46 507/783/46 519/784/46 +f 497/785/46 520/786/46 509/787/46 +f 510/788/46 497/785/46 509/789/46 +f 435/790/47 571/791/47 434/792/47 +f 434/793/47 572/794/47 433/795/47 +f 433/796/47 573/797/47 432/798/47 +f 431/799/47 573/797/47 574/800/47 +f 431/801/47 575/802/47 430/803/47 +f 430/804/47 576/805/47 429/806/47 +f 428/807/47 576/805/47 577/808/47 +f 428/809/47 578/810/47 427/811/47 +f 427/812/47 579/813/47 426/814/47 +f 425/815/47 579/813/47 580/816/47 +f 425/817/47 569/818/47 436/819/47 +f 436/820/47 570/821/47 435/822/47 +f 547/823/46 558/824/46 559/825/46 +f 548/826/46 559/827/46 560/828/46 +f 561/829/46 548/826/46 560/830/46 +f 562/831/46 549/832/46 561/833/46 +f 551/834/46 562/835/46 563/836/46 +f 564/837/46 551/834/46 563/838/46 +f 565/839/46 552/840/46 564/841/46 +f 554/842/46 565/843/46 566/844/46 +f 567/845/46 554/842/46 566/846/46 +f 568/847/46 555/848/46 567/849/46 +f 545/850/46 568/851/46 557/852/46 +f 558/853/46 545/850/46 557/854/46 +f 523/855/47 534/856/47 522/857/47 +f 524/858/47 535/859/47 523/855/47 +f 537/860/47 524/858/47 525/861/47 +f 538/862/47 525/861/47 526/863/47 +f 527/864/47 538/865/47 526/866/47 +f 540/867/47 527/864/47 528/868/47 +f 541/869/47 528/868/47 529/870/47 +f 530/871/47 541/872/47 529/870/47 +f 543/873/47 530/871/47 531/874/47 +f 544/875/47 531/874/47 532/876/47 +f 521/877/47 544/878/47 532/876/47 +f 534/879/47 521/877/47 522/857/47 +f 411/661/46 423/880/46 424/662/46 +f 424/662/46 413/881/46 401/664/46 +f 401/666/46 413/881/46 414/667/46 +f 402/669/46 414/667/46 415/670/46 +f 415/670/46 416/882/46 404/672/46 +f 404/674/46 416/882/46 417/675/46 +f 405/677/46 417/675/46 418/678/46 +f 418/678/46 419/883/46 407/680/46 +f 407/682/46 419/884/46 420/683/46 +f 408/685/46 420/683/46 421/686/46 +f 421/686/46 422/690/46 410/688/46 +f 422/690/46 423/880/46 411/691/46 +f 459/693/46 471/885/46 472/694/46 +f 472/694/46 461/886/46 449/696/46 +f 449/698/46 461/886/46 462/699/46 +f 450/701/46 462/699/46 463/702/46 +f 463/702/46 464/887/46 452/704/46 +f 452/706/46 464/887/46 465/707/46 +f 453/709/46 465/707/46 466/710/46 +f 466/710/46 467/888/46 455/712/46 +f 455/714/46 467/889/46 468/715/46 +f 456/717/46 468/715/46 469/718/46 +f 469/718/46 470/722/46 458/720/46 +f 470/722/46 471/885/46 459/723/46 +f 485/725/47 448/729/47 447/726/47 +f 496/728/47 437/733/47 448/729/47 +f 496/731/47 495/890/47 438/732/47 +f 494/734/47 439/737/47 438/732/47 +f 493/736/47 440/741/47 439/737/47 +f 493/739/47 492/891/47 441/740/47 +f 491/742/47 442/745/47 441/740/47 +f 490/744/47 443/892/47 442/745/47 +f 490/747/47 489/893/47 444/748/47 +f 488/750/47 445/753/47 444/748/47 +f 487/752/47 446/756/47 445/753/47 +f 486/755/47 447/726/47 446/756/47 +f 499/758/46 498/894/46 510/759/46 +f 500/761/46 499/758/46 511/762/46 +f 513/764/46 501/767/46 500/761/46 +f 514/766/46 502/895/46 501/767/46 +f 503/769/46 502/896/46 514/770/46 +f 516/772/46 504/775/46 503/769/46 +f 517/774/46 505/897/46 504/775/46 +f 506/777/46 505/897/46 517/778/46 +f 519/780/46 507/783/46 506/777/46 +f 520/782/46 508/898/46 507/783/46 +f 497/785/46 508/898/46 520/786/46 +f 510/788/46 498/894/46 497/785/46 +f 435/790/47 570/821/47 571/791/47 +f 434/793/47 571/791/47 572/794/47 +f 433/796/47 572/794/47 573/797/47 +f 431/799/47 432/899/47 573/797/47 +f 431/801/47 574/900/47 575/802/47 +f 430/804/47 575/802/47 576/805/47 +f 428/807/47 429/901/47 576/805/47 +f 428/809/47 577/808/47 578/810/47 +f 427/812/47 578/810/47 579/813/47 +f 425/815/47 426/902/47 579/813/47 +f 425/817/47 580/816/47 569/818/47 +f 436/820/47 569/818/47 570/821/47 +f 547/823/46 546/903/46 558/824/46 +f 548/826/46 547/823/46 559/827/46 +f 561/829/46 549/832/46 548/826/46 +f 562/831/46 550/904/46 549/832/46 +f 551/834/46 550/905/46 562/835/46 +f 564/837/46 552/840/46 551/834/46 +f 565/839/46 553/906/46 552/840/46 +f 554/842/46 553/906/46 565/843/46 +f 567/845/46 555/848/46 554/842/46 +f 568/847/46 556/907/46 555/848/46 +f 545/850/46 556/907/46 568/851/46 +f 558/853/46 546/903/46 545/850/46 +f 523/855/47 535/908/47 534/856/47 +f 524/858/47 536/909/47 535/859/47 +f 537/860/47 536/910/47 524/858/47 +f 538/862/47 537/911/47 525/861/47 +f 527/864/47 539/912/47 538/865/47 +f 540/867/47 539/913/47 527/864/47 +f 541/869/47 540/914/47 528/868/47 +f 530/871/47 542/915/47 541/872/47 +f 543/873/47 542/916/47 530/871/47 +f 544/875/47 543/917/47 531/874/47 +f 521/877/47 533/918/47 544/878/47 +f 534/879/47 533/919/47 521/877/47 +s 1 +f 394/920/48 417/675/49 393/921/49 +f 389/922/50 424/662/51 400/923/51 +f 391/924/52 414/667/53 390/925/53 +f 398/926/54 421/686/55 397/927/55 +f 395/928/56 418/678/48 394/920/48 +f 392/929/57 415/670/52 391/924/52 +f 399/930/58 422/690/54 398/926/54 +f 396/931/59 419/884/56 395/932/56 +f 393/921/49 416/882/57 392/929/57 +f 400/923/51 423/880/58 399/930/58 +f 390/925/53 413/881/50 389/922/50 +f 397/927/55 420/683/59 396/931/59 +f 404/672/57 427/933/52 403/673/52 +f 411/691/58 434/934/54 410/692/54 +f 408/684/59 431/935/56 407/682/56 +f 405/676/49 428/936/57 404/674/57 +f 412/663/51 435/937/58 411/661/58 +f 402/668/53 425/938/50 401/666/50 +f 409/687/55 432/939/59 408/685/59 +f 406/679/48 429/940/49 405/677/49 +f 401/664/50 436/941/51 412/665/51 +f 403/671/52 426/942/53 402/669/53 +f 410/688/54 433/943/55 409/689/55 +f 407/680/56 430/944/48 406/681/48 +f 442/745/48 465/707/49 441/740/49 +f 437/733/50 472/694/51 448/729/51 +f 439/737/52 462/699/53 438/732/53 +f 446/756/54 469/718/55 445/753/55 +f 443/892/56 466/710/48 442/745/48 +f 440/741/57 463/702/52 439/737/52 +f 447/726/58 470/722/54 446/756/54 +f 444/748/59 467/889/56 443/749/56 +f 441/740/49 464/887/57 440/741/57 +f 448/729/51 471/885/58 447/726/58 +f 438/732/53 461/886/50 437/733/50 +f 445/753/55 468/715/59 444/748/59 +f 452/704/57 475/945/52 451/705/52 +f 459/723/58 482/946/54 458/724/54 +f 456/716/59 479/947/56 455/714/56 +f 453/708/49 476/948/57 452/706/57 +f 460/695/51 483/949/58 459/693/58 +f 450/700/53 473/950/50 449/698/50 +f 457/719/55 480/951/59 456/717/59 +f 454/711/48 477/952/49 453/709/49 +f 449/696/50 484/953/51 460/697/51 +f 451/703/52 474/954/53 450/701/53 +f 458/720/54 481/955/55 457/721/55 +f 455/712/56 478/956/48 454/713/48 +f 514/770/56 491/957/48 515/771/48 +f 511/762/54 488/958/55 512/763/55 +f 518/781/52 495/959/53 519/780/53 +f 520/786/50 485/960/51 509/787/51 +f 515/773/48 492/961/49 516/772/49 +f 512/765/55 489/962/59 513/764/59 +f 519/784/53 496/963/50 520/782/50 +f 509/789/51 486/964/58 510/788/58 +f 516/776/49 493/965/57 517/774/57 +f 513/768/59 490/966/56 514/766/56 +f 510/759/58 487/967/54 511/760/54 +f 517/778/57 494/968/52 518/779/52 +f 524/858/55 501/767/59 525/861/59 +f 531/874/53 508/898/50 532/876/50 +f 521/877/51 498/894/58 522/857/58 +f 528/868/49 505/897/57 529/870/57 +f 525/861/59 502/895/56 526/863/56 +f 522/857/58 499/758/54 523/855/54 +f 529/870/57 506/777/52 530/871/52 +f 526/866/56 503/769/48 527/864/48 +f 523/855/54 500/761/55 524/858/55 +f 530/871/52 507/783/53 531/874/53 +f 532/876/50 497/785/51 521/877/51 +f 527/864/48 504/775/49 528/868/49 +f 562/835/56 539/969/48 563/836/48 +f 559/827/54 536/970/55 560/828/55 +f 566/846/52 543/971/53 567/845/53 +f 568/851/50 533/972/51 557/852/51 +f 563/838/48 540/973/49 564/837/49 +f 560/830/55 537/974/59 561/829/59 +f 567/849/53 544/975/50 568/847/50 +f 557/854/51 534/976/58 558/853/58 +f 564/841/49 541/977/57 565/839/57 +f 561/833/59 538/978/56 562/831/56 +f 558/824/58 535/979/54 559/825/54 +f 565/843/57 542/980/52 566/844/52 +f 572/794/55 549/832/59 573/797/59 +f 579/813/53 556/907/50 580/816/50 +f 569/818/51 546/903/58 570/821/58 +f 576/805/49 553/906/57 577/808/57 +f 573/797/59 550/904/56 574/800/56 +f 570/821/58 547/823/54 571/791/54 +f 577/808/57 554/842/52 578/810/52 +f 574/900/56 551/834/48 575/802/48 +f 571/791/54 548/826/55 572/794/55 +f 578/810/52 555/848/53 579/813/53 +f 580/816/50 545/850/51 569/818/51 +f 575/802/48 552/840/49 576/805/49 +f 394/920/48 418/678/48 417/675/49 +f 389/922/50 413/881/50 424/662/51 +f 391/924/52 415/670/52 414/667/53 +f 398/926/54 422/690/54 421/686/55 +f 395/928/56 419/883/56 418/678/48 +f 392/929/57 416/882/57 415/670/52 +f 399/930/58 423/880/58 422/690/54 +f 396/931/59 420/683/59 419/884/56 +f 393/921/49 417/675/49 416/882/57 +f 400/923/51 424/662/51 423/880/58 +f 390/925/53 414/667/53 413/881/50 +f 397/927/55 421/686/55 420/683/59 +f 404/672/57 428/981/57 427/933/52 +f 411/691/58 435/982/58 434/934/54 +f 408/684/59 432/983/59 431/935/56 +f 405/676/49 429/984/49 428/936/57 +f 412/663/51 436/985/51 435/937/58 +f 402/668/53 426/986/53 425/938/50 +f 409/687/55 433/987/55 432/939/59 +f 406/679/48 430/988/48 429/940/49 +f 401/664/50 425/989/50 436/941/51 +f 403/671/52 427/990/52 426/942/53 +f 410/688/54 434/991/54 433/943/55 +f 407/680/56 431/992/56 430/944/48 +f 442/745/48 466/710/48 465/707/49 +f 437/733/50 461/886/50 472/694/51 +f 439/737/52 463/702/52 462/699/53 +f 446/756/54 470/722/54 469/718/55 +f 443/892/56 467/888/56 466/710/48 +f 440/741/57 464/887/57 463/702/52 +f 447/726/58 471/885/58 470/722/54 +f 444/748/59 468/715/59 467/889/56 +f 441/740/49 465/707/49 464/887/57 +f 448/729/51 472/694/51 471/885/58 +f 438/732/53 462/699/53 461/886/50 +f 445/753/55 469/718/55 468/715/59 +f 452/704/57 476/993/57 475/945/52 +f 459/723/58 483/994/58 482/946/54 +f 456/716/59 480/995/59 479/947/56 +f 453/708/49 477/996/49 476/948/57 +f 460/695/51 484/997/51 483/949/58 +f 450/700/53 474/998/53 473/950/50 +f 457/719/55 481/999/55 480/951/59 +f 454/711/48 478/1000/48 477/952/49 +f 449/696/50 473/1001/50 484/953/51 +f 451/703/52 475/1002/52 474/954/53 +f 458/720/54 482/1003/54 481/955/55 +f 455/712/56 479/1004/56 478/956/48 +f 514/770/56 490/1005/56 491/957/48 +f 511/762/54 487/1006/54 488/958/55 +f 518/781/52 494/1007/52 495/959/53 +f 520/786/50 496/1008/50 485/960/51 +f 515/773/48 491/1009/48 492/961/49 +f 512/765/55 488/1010/55 489/962/59 +f 519/784/53 495/1011/53 496/963/50 +f 509/789/51 485/1012/51 486/964/58 +f 516/776/49 492/1013/49 493/965/57 +f 513/768/59 489/1014/59 490/966/56 +f 510/759/58 486/1015/58 487/967/54 +f 517/778/57 493/1016/57 494/968/52 +f 524/858/55 500/761/55 501/767/59 +f 531/874/53 507/783/53 508/898/50 +f 521/877/51 497/785/51 498/894/58 +f 528/868/49 504/775/49 505/897/57 +f 525/861/59 501/767/59 502/895/56 +f 522/857/58 498/894/58 499/758/54 +f 529/870/57 505/897/57 506/777/52 +f 526/866/56 502/896/56 503/769/48 +f 523/855/54 499/758/54 500/761/55 +f 530/871/52 506/777/52 507/783/53 +f 532/876/50 508/898/50 497/785/51 +f 527/864/48 503/769/48 504/775/49 +f 562/835/56 538/1017/56 539/969/48 +f 559/827/54 535/1018/54 536/970/55 +f 566/846/52 542/1019/52 543/971/53 +f 568/851/50 544/1020/50 533/972/51 +f 563/838/48 539/1021/48 540/973/49 +f 560/830/55 536/1022/55 537/974/59 +f 567/849/53 543/1023/53 544/975/50 +f 557/854/51 533/1024/51 534/976/58 +f 564/841/49 540/1025/49 541/977/57 +f 561/833/59 537/1026/59 538/978/56 +f 558/824/58 534/1027/58 535/979/54 +f 565/843/57 541/1028/57 542/980/52 +f 572/794/55 548/826/55 549/832/59 +f 579/813/53 555/848/53 556/907/50 +f 569/818/51 545/850/51 546/903/58 +f 576/805/49 552/840/49 553/906/57 +f 573/797/59 549/832/59 550/904/56 +f 570/821/58 546/903/58 547/823/54 +f 577/808/57 553/906/57 554/842/52 +f 574/900/56 550/905/56 551/834/48 +f 571/791/54 547/823/54 548/826/55 +f 578/810/52 554/842/52 555/848/53 +f 580/816/50 556/907/50 545/850/51 +f 575/802/48 551/834/48 552/840/49 +o Fan +v 1.375000 1.875000 -1.062500 +v 1.468750 1.875000 -1.062500 +v 1.375000 1.820873 -1.031250 +v 1.468750 1.820873 -1.031250 +v 1.375000 1.820873 -0.968750 +v 1.468750 1.820873 -0.968750 +v 1.375000 1.875000 -0.937500 +v 1.468750 1.875000 -0.937500 +v 1.375000 1.929127 -0.968750 +v 1.468750 1.929127 -0.968750 +v 1.375000 1.929127 -1.031250 +v 1.468750 1.929127 -1.031250 +v 1.388971 2.199760 -1.181111 +v 1.437500 2.250000 -1.000000 +v 1.486029 2.199760 -0.818889 +v 1.431434 1.915595 -1.022639 +v 1.437500 1.921875 -1.000000 +v 1.443566 1.915595 -0.977361 +v 1.388971 1.555773 -1.190695 +v 1.437500 1.687500 -1.324759 +v 1.486029 1.869467 -1.371806 +v 1.431434 1.835097 -1.023837 +v 1.437500 1.851562 -1.040595 +v 1.443566 1.874308 -1.046476 +v 1.443566 1.835097 -0.976163 +v 1.437500 1.851562 -0.959405 +v 1.431434 1.874308 -0.953524 +v 1.486029 1.555773 -0.809305 +v 1.437500 1.687500 -0.675241 +v 1.388971 1.869467 -0.628194 +vt 0.225610 0.935897 +vt 0.228659 0.948718 +vt 0.225610 0.948718 +vt 0.228659 0.935897 +vt 0.231707 0.948718 +vt 0.213415 0.935897 +vt 0.216463 0.948718 +vt 0.213415 0.948718 +vt 0.216463 0.935897 +vt 0.219512 0.948718 +vt 0.213554 0.955128 +vt 0.215009 0.949830 +vt 0.219373 0.955128 +vt 0.219512 0.935897 +vt 0.222561 0.948718 +vt 0.222561 0.935897 +vt 0.155488 0.967949 +vt 0.158537 0.935897 +vt 0.164634 0.967949 +vt 0.152439 0.935897 +vt 0.155488 0.935897 +vt 0.155488 0.967949 +vt 0.158537 0.935897 +vt 0.164634 0.967949 +vt 0.146341 0.967949 +vt 0.155488 0.935897 +vt 0.155488 0.967949 +vt 0.152439 0.935897 +vt 0.155488 0.935897 +vt 0.158537 0.935897 +vt 0.164634 0.967949 +vt 0.231707 0.935897 +vt 0.217918 0.949830 +vt 0.217918 0.960426 +vt 0.215009 0.960426 +vt 0.146341 0.967949 +vt 0.152439 0.935897 +vt 0.146341 0.967949 +vn 0.0000 -0.5000 -0.8660 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 -0.5000 0.8660 +vn 0.0000 0.5000 0.8660 +vn 1.0000 0.0000 0.0000 +vn 0.0000 1.0000 0.0000 +vn 0.0000 0.5000 -0.8660 +vn 0.9659 -0.0000 -0.2588 +vn 0.9659 -0.2241 0.1294 +vn 0.9659 0.2242 0.1294 +vn 0.9659 0.2241 0.1294 +vn 0.9659 -0.2242 0.1294 +s off +f 582/1029/60 583/1030/60 581/1031/60 +f 584/1032/61 585/1033/61 583/1030/61 +f 586/1034/62 587/1035/62 585/1036/62 +f 588/1037/63 589/1038/63 587/1035/63 +f 588/1039/64 586/1040/64 582/1041/64 +f 590/1042/65 591/1043/65 589/1038/65 +f 592/1044/66 581/1031/66 591/1043/66 +f 594/1045/67 596/1046/67 593/1047/67 +f 594/1045/67 598/1048/67 597/1049/67 +f 600/1050/68 602/1051/68 599/1052/68 +f 601/1053/68 603/1054/68 600/1050/68 +f 609/1055/69 605/1056/69 606/1057/69 +f 609/1055/70 607/1058/70 610/1059/70 +f 582/1029/60 584/1032/60 583/1030/60 +f 584/1032/61 586/1060/61 585/1033/61 +f 586/1034/62 588/1037/62 587/1035/62 +f 588/1037/63 590/1042/63 589/1038/63 +f 586/1040/64 584/1061/64 582/1041/64 +f 582/1041/64 592/1062/64 590/1063/64 +f 590/1063/64 588/1039/64 582/1041/64 +f 590/1042/65 592/1044/65 591/1043/65 +f 592/1044/66 582/1029/66 581/1031/66 +f 594/1045/67 597/1049/67 596/1046/67 +f 594/1045/67 595/1064/67 598/1048/67 +f 600/1050/71 603/1054/71 602/1051/71 +f 601/1053/71 604/1065/71 603/1054/71 +f 609/1055/70 608/1066/70 605/1056/70 +f 609/1055/69 606/1057/69 607/1058/69 +o Base +v -1.500000 0.000000 3.500000 +v 1.500000 0.000000 3.500000 +v -1.500000 0.000000 -3.500000 +v 1.500000 0.000000 -3.500000 +v -1.500000 1.000000 3.500000 +v 1.500000 1.000000 3.500000 +v -1.500000 1.000000 -3.500000 +v 1.500000 1.000000 -3.500000 +v 0.000000 1.250000 0.625000 +v -0.526190 1.250000 0.729666 +v -0.972272 1.250000 1.027728 +v -1.270334 1.250000 1.473810 +v -1.375000 1.250000 2.000000 +v -1.270334 1.250000 2.526190 +v -0.972272 1.250000 2.972272 +v -0.526190 1.250000 3.270334 +v 0.000000 1.250000 3.375000 +v 0.526189 1.250000 3.270334 +v 0.972271 1.250000 2.972272 +v 1.270334 1.250000 2.526190 +v 1.375000 1.250000 2.000000 +v 1.270334 1.250000 1.473810 +v 0.972271 1.250000 1.027728 +v 0.526189 1.250000 0.729665 +v 0.000000 3.000000 0.625000 +v -0.526190 3.000000 0.729666 +v -0.972272 3.000000 1.027728 +v -1.270334 3.000000 1.473810 +v -1.375000 3.000000 2.000000 +v -1.270334 3.000000 2.526190 +v -0.972272 3.000000 2.972272 +v -0.526190 3.000000 3.270334 +v 0.000000 3.000000 3.375000 +v 0.526189 3.000000 3.270334 +v 0.972271 3.000000 2.972272 +v 1.270334 3.000000 2.526190 +v 1.375000 3.000000 2.000000 +v 1.270334 3.000000 1.473810 +v 0.972271 3.000000 1.027728 +v 0.526189 3.000000 0.729665 +v 0.000000 3.000000 0.500000 +v -0.574025 3.000000 0.614181 +v -1.060660 3.000000 0.939340 +v -1.385819 3.000000 1.425975 +v -1.500000 3.000000 2.000000 +v -1.385819 3.000000 2.574025 +v -1.060660 3.000000 3.060660 +v -0.574025 3.000000 3.385819 +v -0.000000 3.000000 3.500000 +v 0.574025 3.000000 3.385819 +v 1.060660 3.000000 3.060660 +v 1.385819 3.000000 2.574025 +v 1.500000 3.000000 2.000000 +v 1.385819 3.000000 1.425975 +v 1.060659 3.000000 0.939340 +v 0.574024 3.000000 0.614180 +v 0.000000 3.250000 0.500000 +v -0.574025 3.250000 0.614181 +v -1.060660 3.250000 0.939340 +v -1.385819 3.250000 1.425975 +v -1.500000 3.250000 2.000000 +v -1.385819 3.250000 2.574025 +v -1.060660 3.250000 3.060660 +v -0.574025 3.250000 3.385819 +v -0.000000 3.250000 3.500000 +v 0.574025 3.250000 3.385819 +v 1.060660 3.250000 3.060660 +v 1.385819 3.250000 2.574025 +v 1.500000 3.250000 2.000000 +v 1.385819 3.250000 1.425975 +v 1.060659 3.250000 0.939340 +v 0.574024 3.250000 0.614180 +v 0.000000 3.250000 0.750000 +v -0.478354 3.250000 0.845150 +v -0.883883 3.250000 1.116116 +v -1.154850 3.250000 1.521646 +v -1.250000 3.250000 2.000000 +v -1.154850 3.250000 2.478354 +v -0.883883 3.250000 2.883883 +v -0.478354 3.250000 3.154849 +v -0.000000 3.250000 3.250000 +v 0.478354 3.250000 3.154850 +v 0.883883 3.250000 2.883884 +v 1.154849 3.250000 2.478354 +v 1.250000 3.250000 2.000000 +v 1.154849 3.250000 1.521645 +v 0.883883 3.250000 1.116116 +v 0.478354 3.250000 0.845150 +v 0.000000 2.250000 0.750000 +v -0.478354 2.250000 0.845150 +v -0.883883 2.250000 1.116116 +v -1.154850 2.250000 1.521646 +v -1.250000 2.250000 2.000000 +v -1.154850 2.250000 2.478354 +v -0.883883 2.250000 2.883883 +v -0.478354 2.250000 3.154849 +v -0.000000 2.250000 3.250000 +v 0.478354 2.250000 3.154850 +v 0.883883 2.250000 2.883884 +v 1.154849 2.250000 2.478354 +v 1.250000 2.250000 2.000000 +v 1.154849 2.250000 1.521645 +v 0.883883 2.250000 1.116116 +v 0.478354 2.250000 0.845150 +v -1.250000 1.000000 0.250000 +v 1.250000 1.000000 0.250000 +v -1.250000 1.000000 -2.250000 +v 1.250000 1.000000 -2.250000 +v -1.250000 2.750000 -2.250000 +v -1.250000 2.750000 0.250000 +v 1.250000 2.750000 0.250000 +v 1.250000 2.750000 -2.250000 +v -1.000000 3.250000 -2.250000 +v -1.000000 3.250000 0.250000 +v 1.000000 3.250000 0.250000 +v 1.000000 3.250000 -2.250000 +v -1.000000 1.000000 -2.250000 +v 1.000000 1.000000 -2.250000 +v -1.000000 1.000000 -3.250000 +v 1.000000 1.000000 -3.250000 +v -1.000000 1.500000 -3.250000 +v -1.000000 1.500000 -2.250000 +v 1.000000 1.500000 -2.250000 +v 1.000000 1.500000 -3.250000 +v -0.875000 1.500000 -3.125000 +v -0.875000 1.500000 -2.250000 +v 0.875000 1.500000 -2.250000 +v 0.875000 1.500000 -3.125000 +v -0.875000 1.250000 -3.125000 +v -0.875000 1.250000 -2.250000 +v 0.875000 1.250000 -2.250000 +v 0.875000 1.250000 -3.125000 +v 0.437500 1.500000 -2.250000 +v -0.437500 1.500000 -2.250000 +v 0.437500 1.500000 -2.687500 +v -0.437500 1.500000 -2.687500 +v -0.500000 2.000000 -2.250000 +v 0.500000 2.000000 -2.250000 +v -0.500000 2.000000 -2.750000 +v 0.500000 2.000000 -2.750000 +v -0.500000 2.250000 -2.750000 +v -0.500000 2.750000 -2.250000 +v 0.500000 2.750000 -2.250000 +v 0.500000 2.250000 -2.750000 +v -0.437500 2.000000 -2.687500 +v -0.437500 2.000000 -2.312500 +v 0.437500 2.000000 -2.312500 +v 0.437500 2.000000 -2.687500 +v -0.437500 2.125000 -2.687500 +v -0.437500 2.125000 -2.312500 +v 0.437500 2.125000 -2.312500 +v 0.437500 2.125000 -2.687500 +v -0.750000 3.250000 0.000000 +v 0.750000 3.250000 0.000000 +v -0.750000 3.250000 -2.000000 +v 0.750000 3.250000 -2.000000 +v -0.500000 2.750000 -2.000000 +v -0.500000 2.750000 0.000000 +v 0.500000 2.750000 0.000000 +v 0.500000 2.750000 -2.000000 +v 1.125000 1.000000 -0.125000 +v 1.375000 1.000000 -0.125000 +v 1.125000 1.000000 -0.375000 +v 1.375000 1.000000 -0.375000 +v 1.125000 3.250000 -0.375000 +v 1.125000 3.250000 -0.125000 +v 1.375000 3.250000 -0.125000 +v 1.375000 3.250000 -0.375000 +v 1.125000 1.000000 -1.625000 +v 1.375000 1.000000 -1.625000 +v 1.125000 1.000000 -1.875000 +v 1.375000 1.000000 -1.875000 +v 1.125000 3.250000 -1.875000 +v 1.125000 3.250000 -1.625000 +v 1.375000 3.250000 -1.625000 +v 1.375000 3.250000 -1.875000 +v -1.375000 1.000000 -0.125000 +v -1.125000 1.000000 -0.125000 +v -1.375000 1.000000 -0.375000 +v -1.125000 1.000000 -0.375000 +v -1.375000 3.250000 -0.375000 +v -1.375000 3.250000 -0.125000 +v -1.125000 3.250000 -0.125000 +v -1.125000 3.250000 -0.375000 +v -1.375000 1.000000 -1.625000 +v -1.125000 1.000000 -1.625000 +v -1.375000 1.000000 -1.875000 +v -1.125000 1.000000 -1.875000 +v -1.375000 3.250000 -1.875000 +v -1.375000 3.250000 -1.625000 +v -1.125000 3.250000 -1.625000 +v -1.125000 3.250000 -1.875000 +v 0.000000 1.000000 0.500000 +v -0.574025 1.000000 0.614181 +v -1.060660 1.000000 0.939340 +v -1.385819 1.000000 1.425975 +v -1.500000 1.000000 2.000000 +v -1.385819 1.000000 2.574025 +v -1.060660 1.000000 3.060660 +v -0.574025 1.000000 3.385819 +v -0.000000 1.000000 3.500000 +v 0.574025 1.000000 3.385819 +v 1.060660 1.000000 3.060660 +v 1.385819 1.000000 2.574025 +v 1.500000 1.000000 2.000000 +v 1.385819 1.000000 1.425975 +v 1.060659 1.000000 0.939340 +v 0.574024 1.000000 0.614180 +v 0.000000 1.250000 0.500000 +v -0.574025 1.250000 0.614181 +v -1.060660 1.250000 0.939340 +v -1.385819 1.250000 1.425975 +v -1.500000 1.250000 2.000000 +v -1.385819 1.250000 2.574025 +v -1.060660 1.250000 3.060660 +v -0.574025 1.250000 3.385819 +v -0.000000 1.250000 3.500000 +v 0.574025 1.250000 3.385819 +v 1.060660 1.250000 3.060660 +v 1.385819 1.250000 2.574025 +v 1.500000 1.250000 2.000000 +v 1.385819 1.250000 1.425975 +v 1.060659 1.250000 0.939340 +v 0.574024 1.250000 0.614180 +v 1.125000 3.250000 3.125000 +v 1.375000 3.250000 3.125000 +v 1.125000 3.250000 -2.000000 +v 1.375000 3.250000 -2.000000 +v 1.125000 3.500000 -2.000000 +v 1.125000 3.500000 3.125000 +v 1.375000 3.500000 3.125000 +v 1.375000 3.500000 -2.000000 +v -1.375000 3.250000 3.125000 +v -1.125000 3.250000 3.125000 +v -1.375000 3.250000 -2.000000 +v -1.125000 3.250000 -2.000000 +v -1.375000 3.500000 -2.000000 +v -1.375000 3.500000 3.125000 +v -1.125000 3.500000 3.125000 +v -1.125000 3.500000 -2.000000 +v 1.125000 1.000000 3.000000 +v 1.375000 1.000000 3.000000 +v 1.125000 1.000000 2.750000 +v 1.375000 1.000000 2.750000 +v 1.125000 3.250000 2.750000 +v 1.125000 3.250000 3.000000 +v 1.375000 3.250000 3.000000 +v 1.375000 3.250000 2.750000 +v -1.375000 1.000000 3.000000 +v -1.125000 1.000000 3.000000 +v -1.375000 1.000000 2.750000 +v -1.125000 1.000000 2.750000 +v -1.375000 3.250000 2.750000 +v -1.375000 3.250000 3.000000 +v -1.125000 3.250000 3.000000 +v -1.125000 3.250000 2.750000 +v 0.250000 2.000000 0.250000 +v 0.073223 1.926777 0.250000 +v 0.000000 1.750000 0.250000 +v 0.073223 1.573223 0.250000 +v 0.250000 1.500000 0.250000 +v 0.426777 1.573223 0.250000 +v 0.500000 1.750000 0.250000 +v 0.426777 1.926777 0.250000 +v 0.250000 2.000000 0.750000 +v 0.073223 1.926777 0.750000 +v 0.000000 1.750000 0.750000 +v 0.073223 1.573223 0.750000 +v 0.250000 1.500000 0.750000 +v 0.426777 1.573223 0.750000 +v 0.500000 1.750000 0.750000 +v 0.426777 1.926777 0.750000 +v -0.250000 2.000000 0.250000 +v -0.426777 1.926777 0.250000 +v -0.500000 1.750000 0.250000 +v -0.426777 1.573223 0.250000 +v -0.250000 1.500000 0.250000 +v -0.073223 1.573223 0.250000 +v 0.000000 1.750000 0.250000 +v -0.073223 1.926777 0.250000 +v -0.250000 2.000000 0.750000 +v -0.426777 1.926777 0.750000 +v -0.500000 1.750000 0.750000 +v -0.426777 1.573223 0.750000 +v -0.250000 1.500000 0.750000 +v -0.073223 1.573223 0.750000 +v 0.000000 1.750000 0.750000 +v -0.073223 1.926777 0.750000 +v 1.125000 1.000000 1.250000 +v 1.375000 1.000000 1.250000 +v 1.125000 1.000000 1.000000 +v 1.375000 1.000000 1.000000 +v 1.125000 3.250000 1.000000 +v 1.125000 3.250000 1.250000 +v 1.375000 3.250000 1.250000 +v 1.375000 3.250000 1.000000 +v -1.375000 1.000000 1.250000 +v -1.125000 1.000000 1.250000 +v -1.375000 1.000000 1.000000 +v -1.125000 1.000000 1.000000 +v -1.375000 3.250000 1.000000 +v -1.375000 3.250000 1.250000 +v -1.125000 3.250000 1.250000 +v -1.125000 3.250000 1.000000 +v 1.250000 2.375000 -0.500000 +v 1.250000 1.375000 -0.500000 +v 1.250000 2.375000 -1.500000 +v 1.250000 1.375000 -1.500000 +v 1.500000 2.375000 -1.500000 +v 1.500000 2.375000 -0.500000 +v 1.500000 1.375000 -0.500000 +v 1.500000 1.375000 -1.500000 +v 1.500000 2.312500 -1.437500 +v 1.500000 2.312500 -0.562500 +v 1.500000 1.437500 -0.562500 +v 1.500000 1.437500 -1.437500 +v 1.375000 2.312500 -1.437500 +v 1.375000 2.312500 -0.562500 +v 1.375000 1.437500 -0.562500 +v 1.375000 1.437500 -1.437500 +v 1.500000 2.093750 -0.562500 +v 1.500000 2.031250 -0.562500 +v 1.500000 2.093750 -1.437500 +v 1.500000 2.031250 -1.437500 +v 1.500000 2.281250 -0.562500 +v 1.500000 2.218750 -0.562500 +v 1.500000 2.281250 -1.437500 +v 1.500000 2.218750 -1.437500 +v 1.500000 1.718750 -0.562500 +v 1.500000 1.656250 -0.562500 +v 1.500000 1.718750 -1.437500 +v 1.500000 1.656250 -1.437500 +v 1.500000 1.906250 -0.562500 +v 1.500000 1.843750 -0.562500 +v 1.500000 1.906250 -1.437500 +v 1.500000 1.843750 -1.437500 +v 1.500000 1.531250 -0.562500 +v 1.500000 1.468750 -0.562500 +v 1.500000 1.531250 -1.437500 +v 1.500000 1.468750 -1.437500 +v -1.250000 2.375000 -0.500000 +v -1.250000 1.375000 -0.500000 +v -1.250000 2.375000 -1.500000 +v -1.250000 1.375000 -1.500000 +v -1.500000 2.375000 -1.500000 +v -1.500000 2.375000 -0.500000 +v -1.500000 1.375000 -0.500000 +v -1.500000 1.375000 -1.500000 +v -1.500000 2.250000 -1.375000 +v -1.500000 2.250000 -0.625000 +v -1.500000 1.500000 -0.625000 +v -1.500000 1.500000 -1.375000 +v -1.375000 2.250000 -1.375000 +v -1.375000 2.250000 -0.625000 +v -1.375000 1.500000 -0.625000 +v -1.375000 1.500000 -1.375000 +v -1.500000 2.250000 -1.375000 +v -1.982091 2.250000 -0.800467 +v -1.982091 1.500000 -0.800467 +v -1.500000 1.500000 -1.375000 +v 0.875000 1.500000 -3.125000 +v 1.000000 1.500000 -3.125000 +v 0.875000 1.500000 -3.250000 +v 1.000000 1.500000 -3.250000 +v 0.875000 2.875000 -3.125000 +v 1.000000 2.875000 -3.125000 +v 0.875000 2.875000 -3.250000 +v 1.000000 2.875000 -3.250000 +v -1.000000 1.500000 -3.125000 +v -0.875000 1.500000 -3.125000 +v -1.000000 1.500000 -3.250000 +v -0.875000 1.500000 -3.250000 +v -1.000000 2.875000 -3.125000 +v -0.875000 2.875000 -3.125000 +v -1.000000 2.875000 -3.250000 +v -0.875000 2.875000 -3.250000 +v 1.000000 2.875000 -3.250000 +v -1.000000 2.875000 -3.250000 +v 1.000000 2.875000 -2.250000 +v -1.000000 2.875000 -2.250000 +v 1.000000 3.000000 -3.250000 +v -1.000000 3.000000 -3.250000 +v 1.000000 3.000000 -2.250000 +v -1.000000 3.000000 -2.250000 +vt 0.341463 0.102564 +vt -0.000000 0.410256 +vt -0.000000 0.102564 +vt -0.000000 0.102564 +vt 0.341463 0.410256 +vt -0.000000 0.410256 +vt 0.341463 -0.000000 +vt -0.000000 0.000000 +vt 0.341463 -0.000000 +vt 0.390244 0.410256 +vt 0.341463 0.102564 +vt 0.390244 0.102564 +vt 0.390244 0.410256 +vt 0.341463 0.102564 +vt 0.390244 0.102564 +vt 0.326219 0.448718 +vt 0.301829 0.461538 +vt 0.301829 0.448718 +vt 0.329268 0.448718 +vt 0.356707 0.461538 +vt 0.329268 0.461538 +vt 0.381098 0.448718 +vt 0.356707 0.448718 +vt 0.408537 0.448718 +vt 0.384146 0.461538 +vt 0.384146 0.448718 +vt 0.435976 0.448718 +vt 0.411585 0.461538 +vt 0.411585 0.448718 +vt 0.024390 0.448718 +vt 0.000000 0.461538 +vt 0.000000 0.448718 +vt 0.051829 0.448718 +vt 0.027439 0.461538 +vt 0.027439 0.448718 +vt 0.079268 0.448718 +vt 0.054878 0.461538 +vt 0.054878 0.448718 +vt 0.106707 0.448718 +vt 0.082317 0.461538 +vt 0.082317 0.448718 +vt 0.109756 0.448718 +vt 0.137195 0.461538 +vt 0.109756 0.461538 +vt 0.137195 0.448718 +vt 0.164634 0.461538 +vt 0.164634 0.448718 +vt 0.192073 0.461538 +vt 0.192073 0.448718 +vt 0.219512 0.461538 +vt 0.219512 0.448718 +vt 0.246951 0.461538 +vt 0.271341 0.448718 +vt 0.246951 0.448718 +vt 0.274390 0.448718 +vt 0.274390 0.461538 +vt 0.329268 0.487179 +vt 0.301829 0.512821 +vt 0.301829 0.487179 +vt 0.356707 0.487179 +vt 0.329268 0.512821 +vt 0.384146 0.487179 +vt 0.356707 0.512821 +vt 0.408537 0.512821 +vt 0.384146 0.512821 +vt 0.411585 0.487179 +vt 0.435976 0.512821 +vt 0.411585 0.512821 +vt 0.027439 0.487179 +vt 0.000000 0.512821 +vt 0.000000 0.487179 +vt 0.051829 0.512821 +vt 0.027439 0.512821 +vt 0.054878 0.487179 +vt 0.079268 0.512821 +vt 0.054878 0.512821 +vt 0.082317 0.487179 +vt 0.106707 0.512821 +vt 0.082317 0.512821 +vt 0.109756 0.487179 +vt 0.134146 0.512821 +vt 0.109756 0.512821 +vt 0.164634 0.487179 +vt 0.137195 0.512821 +vt 0.137195 0.487179 +vt 0.192073 0.487179 +vt 0.164634 0.512821 +vt 0.216463 0.512821 +vt 0.192073 0.512821 +vt 0.246951 0.487179 +vt 0.219512 0.512821 +vt 0.219512 0.487179 +vt 0.274390 0.487179 +vt 0.246951 0.512821 +vt 0.298781 0.512821 +vt 0.274390 0.512821 +vt 0.451219 0.000216 +vt 0.512092 0.128205 +vt 0.451219 0.256194 +vt 0.414634 0.961538 +vt 0.408537 0.929487 +vt 0.414634 0.929487 +vt 0.756098 0.179487 +vt 0.646341 0.230769 +vt 0.634146 0.179487 +vt 0.756098 -0.000000 +vt 0.634146 0.000000 +vt 1.000000 0.000000 +vt 0.878049 0.179487 +vt 0.878049 0.000000 +vt 0.512195 0.179487 +vt 0.512195 0.000000 +vt 0.658537 0.256410 +vt 0.646341 0.487179 +vt 1.000000 0.179487 +vt 0.890244 0.230769 +vt 0.512195 0.230769 +vt 0.756098 0.230769 +vt 0.512195 0.846154 +vt 0.554878 0.858974 +vt 0.512195 0.858974 +vt 0.707317 0.846154 +vt 0.664634 0.858974 +vt 0.658537 0.846154 +vt 0.707317 0.794872 +vt 0.658537 0.794872 +vt 0.560976 0.846154 +vt 0.560976 0.794872 +vt 0.567073 0.858974 +vt 0.512195 0.794872 +vt 0.652439 0.858974 +vt 0.567073 0.884615 +vt 0.707317 0.858974 +vt 0.664634 0.884615 +vt 0.512195 0.884615 +vt 0.533537 0.929487 +vt 0.512195 0.974359 +vt 0.512195 0.884615 +vt 0.576219 0.974359 +vt 0.533537 0.974359 +vt 0.576219 0.929487 +vt 0.597561 0.974359 +vt 0.597561 0.884615 +vt 0.390244 0.794872 +vt 0.344512 0.801282 +vt 0.341463 0.794872 +vt 0.341463 0.916667 +vt 0.390244 0.865385 +vt 0.390244 0.916667 +vt 0.344512 0.833333 +vt 0.341463 0.839744 +vt 0.317073 0.839744 +vt 0.341463 0.865385 +vt 0.317073 0.916667 +vt 0.414634 0.839744 +vt 0.390244 0.839744 +vt 0.387195 0.801282 +vt 0.387195 0.833333 +vt 0.408537 0.961538 +vt 0.365854 0.929487 +vt 0.365854 0.974359 +vt 0.408537 0.974359 +vt 0.408537 0.916667 +vt 0.365854 0.916667 +vt 0.359756 0.929487 +vt 0.365854 0.961538 +vt 0.359756 0.961538 +vt 0.548781 0.282051 +vt 0.573171 0.487179 +vt 0.548781 0.487179 +vt 0.731707 0.256410 +vt 0.743902 0.230769 +vt 0.731707 0.461538 +vt 0.743902 0.487179 +vt 0.658537 0.461538 +vt 0.621951 0.282051 +vt 0.621951 0.487179 +vt 0.646341 0.487179 +vt 0.646341 0.282051 +vt 0.634146 0.230769 +vt 0.573171 0.282051 +vt 0.560976 0.230769 +vt 0.560976 0.538462 +vt 0.634146 0.538462 +vt 0.451219 0.256410 +vt 0.439024 0.487179 +vt 0.439024 0.256410 +vt 0.463415 0.256410 +vt 0.451219 0.487179 +vt 0.487805 0.256410 +vt 0.475610 0.487179 +vt 0.475610 0.256410 +vt 0.463415 0.487179 +vt 0.451219 0.256410 +vt 0.439024 0.487179 +vt 0.439024 0.256410 +vt 0.463415 0.256410 +vt 0.451219 0.487179 +vt 0.487805 0.256410 +vt 0.475610 0.487179 +vt 0.475610 0.256410 +vt 0.463415 0.487179 +vt 0.451219 0.256410 +vt 0.439024 0.487179 +vt 0.439024 0.256410 +vt 0.463415 0.256410 +vt 0.451219 0.487179 +vt 0.487805 0.256410 +vt 0.475610 0.487179 +vt 0.475610 0.256410 +vt 0.463415 0.487179 +vt 0.451219 0.256410 +vt 0.439024 0.487179 +vt 0.439024 0.256410 +vt 0.463415 0.256410 +vt 0.451219 0.487179 +vt 0.487805 0.256410 +vt 0.475610 0.487179 +vt 0.475610 0.256410 +vt 0.463415 0.487179 +vt 0.301829 0.435897 +vt 0.326219 0.448718 +vt 0.301829 0.448718 +vt 0.329268 0.448718 +vt 0.356707 0.435897 +vt 0.353659 0.448718 +vt 0.381098 0.448718 +vt 0.356707 0.448718 +vt 0.384146 0.435897 +vt 0.408537 0.448718 +vt 0.384146 0.448718 +vt 0.411585 0.435897 +vt 0.435976 0.448718 +vt 0.411585 0.448718 +vt 0.000000 0.435897 +vt 0.024390 0.448718 +vt 0.000000 0.448718 +vt 0.027439 0.435897 +vt 0.051829 0.448718 +vt 0.027439 0.448718 +vt 0.054878 0.435897 +vt 0.079268 0.448718 +vt 0.054878 0.448718 +vt 0.082317 0.435897 +vt 0.106707 0.448718 +vt 0.082317 0.448718 +vt 0.109756 0.448718 +vt 0.137195 0.435897 +vt 0.134146 0.448718 +vt 0.137195 0.448718 +vt 0.164634 0.435897 +vt 0.161585 0.448718 +vt 0.164634 0.448718 +vt 0.192073 0.435897 +vt 0.189024 0.448718 +vt 0.192073 0.448718 +vt 0.219512 0.435897 +vt 0.216463 0.448718 +vt 0.219512 0.448718 +vt 0.246951 0.435897 +vt 0.243902 0.448718 +vt 0.271341 0.448718 +vt 0.246951 0.448718 +vt 0.274390 0.448718 +vt 0.298781 0.448718 +vt 0.262195 0.692308 +vt 0.012195 0.717949 +vt 0.012195 0.692308 +vt 0.012195 0.743590 +vt 0.262195 0.769231 +vt 0.012195 0.769231 +vt 0.262195 0.717949 +vt 0.012195 0.794872 +vt 0.262195 0.794872 +vt 0.274390 0.769231 +vt 0.262195 0.743590 +vt 0.274390 0.743590 +vt 0.000000 0.743590 +vt 0.000000 0.769231 +vt 0.262195 0.692308 +vt 0.012195 0.717949 +vt 0.012195 0.692308 +vt 0.012195 0.743590 +vt 0.262195 0.769231 +vt 0.012195 0.769231 +vt 0.262195 0.717949 +vt 0.012195 0.794872 +vt 0.262195 0.794872 +vt 0.274390 0.769231 +vt 0.262195 0.743590 +vt 0.274390 0.743590 +vt 0.000000 0.743590 +vt 0.000000 0.769231 +vt 0.451219 0.256410 +vt 0.439024 0.487179 +vt 0.439024 0.256410 +vt 0.463415 0.256410 +vt 0.451219 0.487179 +vt 0.487805 0.256410 +vt 0.475610 0.487179 +vt 0.475610 0.256410 +vt 0.463415 0.487179 +vt 0.451219 0.256410 +vt 0.439024 0.487179 +vt 0.439024 0.256410 +vt 0.463415 0.256410 +vt 0.451219 0.487179 +vt 0.487805 0.256410 +vt 0.475610 0.487179 +vt 0.475610 0.256410 +vt 0.463415 0.487179 +vt 0.451219 0.256410 +vt 0.439024 0.487179 +vt 0.439024 0.256410 +vt 0.463415 0.256410 +vt 0.451219 0.487179 +vt 0.487805 0.256410 +vt 0.475610 0.487179 +vt 0.475610 0.256410 +vt 0.463415 0.487179 +vt 0.451219 0.256410 +vt 0.439024 0.487179 +vt 0.439024 0.256410 +vt 0.463415 0.256410 +vt 0.451219 0.487179 +vt 0.487805 0.256410 +vt 0.475610 0.487179 +vt 0.475610 0.256410 +vt 0.463415 0.487179 +vt 0.161585 0.839744 +vt 0.167683 0.929487 +vt 0.161585 0.929487 +vt 0.219512 0.935897 +vt 0.216463 0.839744 +vt 0.219512 0.833333 +vt 0.213415 0.794872 +vt 0.164634 0.820513 +vt 0.164634 0.794872 +vt 0.164634 0.974359 +vt 0.213415 0.948718 +vt 0.213415 0.974359 +vt 0.231707 0.935897 +vt 0.231707 0.833333 +vt 0.146341 0.833333 +vt 0.158537 0.935897 +vt 0.146341 0.935897 +vt 0.158537 0.833333 +vt 0.213415 0.820513 +vt 0.167683 0.826923 +vt 0.164634 0.948718 +vt 0.210366 0.942308 +vt 0.167683 0.839744 +vt 0.210366 0.929487 +vt 0.210366 0.826923 +vt 0.167683 0.942308 +vt 0.216463 0.929487 +vt 0.210366 0.839744 +vt 0.167683 0.974359 +vt 0.210366 0.980769 +vt 0.167683 0.980769 +vt 0.167683 0.974359 +vt 0.210366 0.980769 +vt 0.167683 0.980769 +vt 0.167683 0.974359 +vt 0.210366 0.980769 +vt 0.167683 0.980769 +vt 0.167683 0.974359 +vt 0.210366 0.980769 +vt 0.167683 0.980769 +vt 0.167683 0.974359 +vt 0.210366 0.980769 +vt 0.167683 0.980769 +vt 0.243902 0.833333 +vt 0.250000 0.923077 +vt 0.243902 0.935897 +vt 0.298781 0.794872 +vt 0.250000 0.820513 +vt 0.250000 0.794872 +vt 0.250000 0.974359 +vt 0.298781 0.948718 +vt 0.298781 0.974359 +vt 0.231707 0.833333 +vt 0.231707 0.935897 +vt 0.317073 0.935897 +vt 0.304878 0.833333 +vt 0.317073 0.833333 +vt 0.298781 0.923077 +vt 0.292683 0.846154 +vt 0.298781 0.846154 +vt 0.304878 0.935897 +vt 0.298781 0.820513 +vt 0.256098 0.833333 +vt 0.250000 0.948718 +vt 0.292683 0.935897 +vt 0.256098 0.846154 +vt 0.292683 0.923077 +vt 0.256098 0.923077 +vt 0.292683 0.833333 +vt 0.256098 0.935897 +vt 0.250000 0.846154 +vt 0.323171 0.916667 +vt 0.359756 0.993590 +vt 0.323171 0.993590 +vt 0.725610 0.935897 +vt 0.719512 0.794872 +vt 0.725610 0.794872 +vt 0.713415 0.935897 +vt 0.707317 0.794872 +vt 0.713415 0.794872 +vt 0.719512 0.935897 +vt 0.731707 0.935897 +vt 0.731707 0.794872 +vt 0.725610 0.935897 +vt 0.719512 0.794872 +vt 0.725610 0.794872 +vt 0.713415 0.935897 +vt 0.707317 0.794872 +vt 0.713415 0.794872 +vt 0.719512 0.935897 +vt 0.731707 0.935897 +vt 0.731707 0.794872 +vt 0.810976 0.589744 +vt 0.908537 0.692308 +vt 0.810976 0.692308 +vt 0.908537 0.705128 +vt 0.810976 0.807692 +vt 0.810976 0.705128 +vt 0.914634 0.807692 +vt 0.914634 0.705128 +vt 0.804878 0.705128 +vt 0.804878 0.807692 +vt 0.341463 0.410256 +vt -0.000000 -0.000000 +vt 0.341463 0.410256 +vt 0.353659 0.448718 +vt 0.439024 0.461538 +vt 0.134146 0.448718 +vt 0.161585 0.448718 +vt 0.189024 0.448718 +vt 0.216463 0.448718 +vt 0.243902 0.448718 +vt 0.298781 0.448718 +vt 0.326219 0.512821 +vt 0.353659 0.512821 +vt 0.381098 0.512821 +vt 0.439024 0.487179 +vt 0.024390 0.512821 +vt 0.161585 0.512821 +vt 0.189024 0.512821 +vt 0.243902 0.512821 +vt 0.271341 0.512821 +vt 0.474515 0.009959 +vt 0.494263 0.037704 +vt 0.507459 0.079226 +vt 0.507459 0.177184 +vt 0.494263 0.218707 +vt 0.474514 0.246451 +vt 0.427924 0.246452 +vt 0.408176 0.218707 +vt 0.394980 0.177185 +vt 0.390347 0.128205 +vt 0.394980 0.079226 +vt 0.408176 0.037703 +vt 0.427925 0.009959 +vt 0.987805 0.230769 +vt 0.634146 0.230769 +vt 0.878049 0.230769 +vt 0.652439 0.884615 +vt 0.707317 0.884615 +vt 0.554878 0.884615 +vt 0.414634 0.916667 +vt 0.487805 0.487179 +vt 0.487805 0.487179 +vt 0.487805 0.487179 +vt 0.487805 0.487179 +vt 0.329268 0.435897 +vt 0.439024 0.435897 +vt 0.109756 0.435897 +vt 0.274390 0.435897 +vt 0.487805 0.487179 +vt 0.487805 0.487179 +vt 0.487805 0.487179 +vt 0.487805 0.487179 +vt 0.210366 0.974359 +vt 0.210366 0.974359 +vt 0.210366 0.974359 +vt 0.210366 0.974359 +vt 0.210366 0.974359 +vt 0.359756 0.916667 +vt 0.707317 0.935897 +vt 0.707317 0.935897 +vt 0.908537 0.589744 +vt 0.908537 0.807692 +vt 0.341463 0.512821 +vt 0.317073 0.692308 +vt 0.317073 0.512821 +vt 0.170732 0.512821 +vt 0.146341 0.692308 +vt 0.146341 0.512821 +vt 0.365854 0.512821 +vt 0.341463 0.692308 +vt 0.195122 0.512821 +vt 0.170732 0.692308 +vt 0.024390 0.512821 +vt -0.000000 0.692308 +vt 0.000000 0.512821 +vt 0.390244 0.512821 +vt 0.365854 0.692308 +vt 0.219512 0.512821 +vt 0.195122 0.692308 +vt 0.048780 0.512821 +vt 0.024390 0.692308 +vt 0.243902 0.512821 +vt 0.219512 0.692308 +vt 0.073171 0.512821 +vt 0.048780 0.692308 +vt 0.268293 0.512821 +vt 0.243902 0.692308 +vt 0.097561 0.512821 +vt 0.073171 0.692308 +vt 0.292683 0.512821 +vt 0.268293 0.692308 +vt 0.121951 0.512821 +vt 0.097561 0.692308 +vt 0.292683 0.692308 +vt 0.121951 0.692308 +vt 0.926829 0.897436 +vt 0.902439 1.000000 +vt 0.902439 0.897436 +vt 0.853659 1.000000 +vt 0.878049 0.897436 +vt 0.878049 1.000000 +vt 0.951219 0.897436 +vt 0.926829 1.000000 +vt 0.829268 1.000000 +vt 0.853659 0.897436 +vt 0.975610 0.897436 +vt 0.951219 1.000000 +vt 0.804878 1.000000 +vt 0.829268 0.897436 +vt 0.975610 1.000000 +vt 1.000000 0.897436 +vt 1.000000 1.000000 +vt 1.000000 0.897436 +vt 0.975610 1.000000 +vt 0.829268 0.897436 +vt 0.804878 1.000000 +vt 0.804878 0.897436 +vt 0.951219 1.000000 +vt 0.975610 0.897436 +vt 0.853659 0.897436 +vt 0.829268 1.000000 +vt 0.926829 1.000000 +vt 0.951219 0.897436 +vt 0.878049 0.897436 +vt 0.853659 1.000000 +vt 0.902439 1.000000 +vt 0.926829 0.897436 +vt 0.878049 1.000000 +vt 0.902439 0.897436 +vt 0.274390 0.410256 +vt 0.246951 0.410256 +vt 0.082317 0.410256 +vt 0.054878 0.410256 +vt 0.301829 0.410256 +vt 0.109756 0.410256 +vt 0.329268 0.410256 +vt 0.137195 0.410256 +vt 0.356707 0.410256 +vt 0.164634 0.410256 +vt 0.384146 0.410256 +vt 0.192073 0.410256 +vt 0.411585 0.410256 +vt 0.219512 0.410256 +vt 0.027439 0.410256 +vt 0.000000 0.410256 +vt 0.439024 0.410256 +vt 0.692073 0.538462 +vt 0.701219 0.487179 +vt 0.701219 0.538462 +vt 0.710366 0.538462 +vt 0.719512 0.487179 +vt 0.719512 0.538462 +vt 0.655488 0.538462 +vt 0.664634 0.487179 +vt 0.664634 0.538462 +vt 0.673781 0.538462 +vt 0.682927 0.487179 +vt 0.682927 0.538462 +vt 0.692073 0.487179 +vt 0.710366 0.487179 +vt 0.646341 0.538462 +vt 0.655488 0.487179 +vt 0.673781 0.487179 +vt 0.692073 0.538462 +vt 0.701219 0.487179 +vt 0.701219 0.538462 +vt 0.710366 0.538462 +vt 0.719512 0.487179 +vt 0.719512 0.538462 +vt 0.655488 0.538462 +vt 0.664634 0.487179 +vt 0.664634 0.538462 +vt 0.673781 0.538462 +vt 0.682927 0.487179 +vt 0.682927 0.538462 +vt 0.692073 0.487179 +vt 0.710366 0.487179 +vt 0.646341 0.538462 +vt 0.655488 0.487179 +vt 0.673781 0.487179 +vt 0.390244 0.692308 +vt 0.804878 0.897436 +vt 1.000000 1.000000 +vt 0.646341 0.487179 +vt 0.646341 0.487179 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 1.0000 0.0000 +vn 1.0000 0.0000 0.0000 +vn -1.0000 0.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +vn 0.0000 0.0000 1.0000 +vn 0.8944 0.4472 0.0000 +vn -0.8944 0.4472 0.0000 +vn 0.4961 0.8682 0.0000 +vn 0.0000 0.8682 -0.4961 +vn -0.4961 0.8682 0.0000 +vn 0.0000 0.7071 -0.7071 +vn -0.7660 0.0000 -0.6428 +vn 0.7071 0.0000 -0.7071 +vn 0.9239 0.0000 -0.3827 +vn -0.3827 0.0000 0.9239 +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.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.9239 0.0000 0.3827 +vn 0.7071 0.7071 0.0000 +vn 0.7071 -0.7071 0.0000 +vn -0.7071 -0.7071 0.0000 +vn -0.7071 0.7071 0.0000 +s off +f 613/1067/72 612/1068/72 611/1069/72 +f 616/1070/73 617/1071/73 615/1072/73 +f 614/1073/74 616/1070/74 612/1074/74 +f 611/1069/75 617/1075/75 613/1067/75 +f 613/1076/76 618/1077/76 614/1078/76 +f 612/1079/77 615/1080/77 611/1081/77 +f 647/1082/72 662/1083/72 646/1084/72 +f 647/1085/72 664/1086/72 663/1087/72 +f 649/1088/72 664/1086/72 648/1089/72 +f 650/1090/72 665/1091/72 649/1092/72 +f 635/1093/72 666/1094/72 650/1095/72 +f 636/1096/72 651/1097/72 635/1098/72 +f 637/1099/72 652/1100/72 636/1101/72 +f 638/1102/72 653/1103/72 637/1104/72 +f 639/1105/72 654/1106/72 638/1107/72 +f 639/1108/72 656/1109/72 655/1110/72 +f 640/1111/72 657/1112/72 656/1109/72 +f 641/1113/72 658/1114/72 657/1112/72 +f 642/1115/72 659/1116/72 658/1114/72 +f 643/1117/72 660/1118/72 659/1116/72 +f 645/1119/72 660/1118/72 644/1120/72 +f 645/1121/72 662/1083/72 661/1122/72 +f 679/1123/73 694/1124/73 678/1125/73 +f 680/1126/73 695/1127/73 679/1123/73 +f 681/1128/73 696/1129/73 680/1126/73 +f 681/1128/73 698/1130/73 697/1131/73 +f 682/1132/73 683/1133/73 698/1134/73 +f 668/1135/73 683/1136/73 667/1137/73 +f 668/1135/73 685/1138/73 684/1139/73 +f 669/1140/73 686/1141/73 685/1142/73 +f 670/1143/73 687/1144/73 686/1145/73 +f 671/1146/73 688/1147/73 687/1148/73 +f 673/1149/73 688/1150/73 672/1151/73 +f 674/1152/73 689/1153/73 673/1149/73 +f 674/1152/73 691/1154/73 690/1155/73 +f 676/1156/73 691/1157/73 675/1158/73 +f 677/1159/73 692/1160/73 676/1156/73 +f 677/1159/73 694/1161/73 693/1162/73 +f 699/1163/73 703/1164/73 707/1165/73 +f 755/1166/74 760/1167/74 756/1168/74 +f 719/1169/76 726/1170/76 722/1171/76 +f 717/1172/76 722/1171/76 718/1173/76 +f 716/1174/77 720/1175/77 715/1176/77 +f 718/1173/74 721/1177/74 716/1178/74 +f 715/1176/75 719/1169/75 717/1172/75 +f 766/1179/73 725/1180/73 726/1170/73 +f 721/1181/77 724/1182/77 720/1175/77 +f 722/1171/78 725/1183/78 721/1177/78 +f 720/1175/79 723/1184/79 719/1169/79 +f 733/1185/73 738/1186/73 737/1187/73 +f 732/1188/73 735/1189/73 731/1190/73 +f 727/1191/75 731/1190/75 729/1192/75 +f 729/1192/76 734/1193/76 730/1194/76 +f 731/1190/73 738/1195/73 734/1193/73 +f 730/1194/74 733/1185/74 728/1196/74 +f 735/1197/77 742/1198/77 738/1195/77 +f 736/1199/74 739/1200/74 735/1189/74 +f 738/1186/75 741/1201/75 737/1187/75 +f 745/1202/80 741/1203/80 742/1204/80 +f 745/1202/73 744/1205/73 743/1206/73 +f 742/1204/81 746/1207/81 745/1202/81 +f 740/1208/82 746/1207/82 739/1209/82 +f 747/1210/72 757/1211/72 748/1212/72 +f 753/1213/83 751/1214/83 752/1215/83 +f 748/1212/72 758/1216/72 750/1217/72 +f 748/1218/74 754/1219/74 753/1220/74 +f 747/1221/75 751/1214/75 749/1222/75 +f 749/1222/76 754/1219/76 750/1217/76 +f 749/1222/72 756/1223/72 747/1210/72 +f 750/1217/72 755/1224/72 749/1222/72 +f 759/1225/72 761/1226/72 760/1167/72 +f 758/1227/77 759/1225/77 755/1228/77 +f 756/1229/76 761/1226/76 757/1230/76 +f 757/1231/75 762/1232/75 758/1233/75 +f 766/1234/79 769/1235/79 764/1236/79 +f 765/1237/73 726/1170/73 723/1238/73 +f 763/1239/73 723/1238/73 724/1240/73 +f 764/1241/73 724/1240/73 725/1180/73 +f 769/1235/73 767/1242/73 768/1243/73 +f 763/1244/78 767/1242/78 765/1245/78 +f 765/1246/77 770/1247/77 766/1248/77 +f 764/1249/76 768/1243/76 763/1250/76 +f 772/1251/77 776/1252/77 771/1253/77 +f 774/1254/74 777/1255/74 772/1251/74 +f 771/1256/75 775/1257/75 773/1258/75 +f 773/1258/76 778/1259/76 774/1254/76 +f 780/1260/77 784/1261/77 779/1262/77 +f 782/1263/74 785/1264/74 780/1260/74 +f 779/1265/75 783/1266/75 781/1267/75 +f 781/1267/76 786/1268/76 782/1263/76 +f 788/1269/77 792/1270/77 787/1271/77 +f 790/1272/74 793/1273/74 788/1269/74 +f 787/1274/75 791/1275/75 789/1276/75 +f 789/1276/76 794/1277/76 790/1272/76 +f 796/1278/77 800/1279/77 795/1280/77 +f 798/1281/74 801/1282/74 796/1278/74 +f 795/1283/75 799/1284/75 797/1285/75 +f 797/1285/76 802/1286/76 798/1281/76 +f 830/1287/73 631/1288/73 630/1289/73 +f 631/1290/73 832/1291/73 632/1292/73 +f 832/1291/73 633/1293/73 632/1294/73 +f 833/1295/73 634/1296/73 633/1297/73 +f 834/1298/73 619/1299/73 634/1300/73 +f 819/1301/73 620/1302/73 619/1303/73 +f 820/1304/73 621/1305/73 620/1306/73 +f 821/1307/73 622/1308/73 621/1309/73 +f 822/1310/73 623/1311/73 622/1312/73 +f 623/1313/73 824/1314/73 624/1315/73 +f 624/1316/73 825/1317/73 625/1318/73 +f 625/1319/73 826/1320/73 626/1321/73 +f 626/1322/73 827/1323/73 627/1324/73 +f 627/1325/73 828/1326/73 628/1327/73 +f 828/1326/73 629/1328/73 628/1329/73 +f 629/1330/73 830/1287/73 630/1331/73 +f 837/1332/72 836/1333/72 835/1334/72 +f 841/1335/73 839/1336/73 840/1337/73 +f 838/1338/74 841/1335/74 836/1333/74 +f 835/1339/75 839/1336/75 837/1340/75 +f 837/1341/76 842/1342/76 838/1343/76 +f 836/1344/77 840/1337/77 835/1345/77 +f 845/1346/72 844/1347/72 843/1348/72 +f 849/1349/73 847/1350/73 848/1351/73 +f 846/1352/74 849/1349/74 844/1347/74 +f 843/1353/75 847/1350/75 845/1354/75 +f 845/1355/76 850/1356/76 846/1357/76 +f 844/1358/77 848/1351/77 843/1359/77 +f 852/1360/77 856/1361/77 851/1362/77 +f 854/1363/74 857/1364/74 852/1360/74 +f 851/1365/75 855/1366/75 853/1367/75 +f 853/1367/76 858/1368/76 854/1363/76 +f 860/1369/77 864/1370/77 859/1371/77 +f 862/1372/74 865/1373/74 860/1369/74 +f 859/1374/75 863/1375/75 861/1376/75 +f 861/1376/76 866/1377/76 862/1372/76 +f 900/1378/77 904/1379/77 899/1380/77 +f 902/1381/74 905/1382/74 900/1378/74 +f 899/1383/75 903/1384/75 901/1385/75 +f 901/1385/76 906/1386/76 902/1381/76 +f 908/1387/77 912/1388/77 907/1389/77 +f 910/1390/74 913/1391/74 908/1387/74 +f 907/1392/75 911/1393/75 909/1394/75 +f 909/1394/76 914/1395/76 910/1390/76 +f 925/1396/76 928/1397/76 924/1398/76 +f 919/1399/74 926/1400/74 922/1401/74 +f 918/1402/72 921/1403/72 916/1404/72 +f 915/1405/73 919/1406/73 917/1407/73 +f 917/1408/76 922/1401/76 918/1409/76 +f 916/1410/77 920/1411/77 915/1412/77 +f 921/1413/74 924/1398/74 920/1411/74 +f 922/1414/74 925/1415/74 921/1403/74 +f 920/1416/74 923/1417/74 919/1406/74 +f 929/1418/74 927/1419/74 928/1397/74 +f 926/1420/73 929/1418/73 925/1415/73 +f 924/1421/72 927/1419/72 923/1417/72 +f 923/1422/77 930/1423/77 926/1400/77 +f 932/1424/74 933/1425/74 931/1426/74 +f 936/1427/74 937/1428/74 935/1429/74 +f 940/1430/74 941/1431/74 939/1432/74 +f 944/1433/74 945/1434/74 943/1435/74 +f 948/1436/74 949/1437/74 947/1438/74 +f 958/1439/75 959/1440/75 955/1441/75 +f 952/1442/72 958/1443/72 954/1444/72 +f 953/1445/73 956/1446/73 951/1447/73 +f 954/1448/76 955/1441/76 953/1449/76 +f 951/1450/77 957/1451/77 952/1452/77 +f 960/1453/76 965/1454/76 961/1455/76 +f 956/1456/75 961/1455/75 957/1451/75 +f 957/1457/75 962/1458/75 958/1443/75 +f 955/1459/75 960/1460/75 956/1446/75 +f 966/1461/75 964/1462/75 963/1463/75 +f 961/1464/73 966/1461/73 962/1458/73 +f 959/1465/72 964/1462/72 960/1460/72 +f 962/1466/77 963/1463/77 959/1440/77 +f 970/1467/84 968/1468/84 967/1469/84 +f 977/1470/76 974/1471/76 973/1472/76 +f 976/1473/77 971/1474/77 972/1475/77 +f 978/1476/74 972/1475/74 974/1471/74 +f 975/1477/75 973/1472/75 971/1478/75 +f 985/1479/76 982/1480/76 981/1481/76 +f 984/1482/77 979/1483/77 980/1484/77 +f 986/1485/74 980/1484/74 982/1480/74 +f 983/1486/75 981/1481/75 979/1487/75 +f 989/1488/72 988/1489/72 987/1490/72 +f 992/1491/73 993/1492/73 991/1493/73 +f 990/1494/75 992/1491/75 988/1495/75 +f 988/1489/76 991/1493/76 987/1490/76 +f 987/1496/74 993/1492/74 989/1497/74 +f 613/1067/72 614/1498/72 612/1068/72 +f 616/1070/73 618/1077/73 617/1071/73 +f 614/1073/74 618/1077/74 616/1070/74 +f 611/1069/75 615/1499/75 617/1075/75 +f 613/1076/76 617/1071/76 618/1077/76 +f 612/1079/77 616/1500/77 615/1080/77 +f 647/1082/72 663/1087/72 662/1083/72 +f 647/1085/72 648/1501/72 664/1086/72 +f 649/1088/72 665/1091/72 664/1086/72 +f 650/1090/72 666/1094/72 665/1091/72 +f 635/1093/72 651/1502/72 666/1094/72 +f 636/1096/72 652/1100/72 651/1097/72 +f 637/1099/72 653/1103/72 652/1100/72 +f 638/1102/72 654/1106/72 653/1103/72 +f 639/1105/72 655/1110/72 654/1106/72 +f 639/1108/72 640/1503/72 656/1109/72 +f 640/1111/72 641/1504/72 657/1112/72 +f 641/1113/72 642/1505/72 658/1114/72 +f 642/1115/72 643/1506/72 659/1116/72 +f 643/1117/72 644/1507/72 660/1118/72 +f 645/1119/72 661/1122/72 660/1118/72 +f 645/1121/72 646/1508/72 662/1083/72 +f 679/1123/73 695/1509/73 694/1124/73 +f 680/1126/73 696/1510/73 695/1127/73 +f 681/1128/73 697/1511/73 696/1129/73 +f 681/1128/73 682/1132/73 698/1130/73 +f 682/1132/73 667/1512/73 683/1133/73 +f 668/1135/73 684/1513/73 683/1136/73 +f 668/1135/73 669/1140/73 685/1138/73 +f 669/1140/73 670/1143/73 686/1141/73 +f 670/1143/73 671/1146/73 687/1144/73 +f 671/1146/73 672/1151/73 688/1147/73 +f 673/1149/73 689/1514/73 688/1150/73 +f 674/1152/73 690/1515/73 689/1153/73 +f 674/1152/73 675/1158/73 691/1154/73 +f 676/1156/73 692/1516/73 691/1157/73 +f 677/1159/73 693/1517/73 692/1160/73 +f 677/1159/73 678/1125/73 694/1161/73 +f 699/1163/73 700/1518/73 701/1519/73 +f 701/1519/73 702/1520/73 703/1164/73 +f 703/1164/73 704/1521/73 707/1165/73 +f 704/1521/73 705/1522/73 707/1165/73 +f 705/1522/73 706/1523/73 707/1165/73 +f 707/1165/73 708/1524/73 709/1525/73 +f 709/1525/73 710/1526/73 707/1165/73 +f 710/1526/73 711/1527/73 707/1165/73 +f 711/1527/73 712/1528/73 713/1529/73 +f 713/1529/73 714/1530/73 699/1163/73 +f 699/1163/73 701/1519/73 703/1164/73 +f 711/1527/73 713/1529/73 707/1165/73 +f 713/1529/73 699/1163/73 707/1165/73 +f 755/1166/74 759/1225/74 760/1167/74 +f 719/1169/76 723/1238/76 726/1170/76 +f 717/1172/76 719/1169/76 722/1171/76 +f 716/1174/77 721/1181/77 720/1175/77 +f 718/1173/74 722/1171/74 721/1177/74 +f 715/1176/75 720/1175/75 719/1169/75 +f 766/1179/73 764/1241/73 725/1180/73 +f 721/1181/77 725/1531/77 724/1182/77 +f 722/1171/78 726/1532/78 725/1183/78 +f 720/1175/79 724/1533/79 723/1184/79 +f 733/1185/73 734/1193/73 738/1186/73 +f 732/1188/73 736/1199/73 735/1189/73 +f 727/1191/75 732/1188/75 731/1190/75 +f 729/1192/76 731/1190/76 734/1193/76 +f 731/1190/73 735/1197/73 738/1195/73 +f 730/1194/74 734/1193/74 733/1185/74 +f 735/1197/77 739/1534/77 742/1198/77 +f 736/1199/74 740/1535/74 739/1200/74 +f 738/1186/75 742/1536/75 741/1201/75 +f 745/1202/80 743/1206/80 741/1203/80 +f 745/1202/73 746/1207/73 744/1205/73 +f 742/1204/81 739/1209/81 746/1207/81 +f 740/1208/82 744/1205/82 746/1207/82 +f 747/1210/72 756/1223/72 757/1211/72 +f 753/1213/83 754/1219/83 751/1214/83 +f 748/1212/72 757/1211/72 758/1216/72 +f 748/1218/74 750/1217/74 754/1219/74 +f 747/1221/75 752/1537/75 751/1214/75 +f 749/1222/76 751/1214/76 754/1219/76 +f 749/1222/72 755/1224/72 756/1223/72 +f 750/1217/72 758/1216/72 755/1224/72 +f 759/1225/72 762/1232/72 761/1226/72 +f 758/1227/77 762/1232/77 759/1225/77 +f 756/1229/76 760/1167/76 761/1226/76 +f 757/1231/75 761/1226/75 762/1232/75 +f 766/1234/79 770/1247/79 769/1235/79 +f 765/1237/73 766/1179/73 726/1170/73 +f 763/1239/73 765/1237/73 723/1238/73 +f 764/1241/73 763/1239/73 724/1240/73 +f 769/1235/73 770/1247/73 767/1242/73 +f 763/1244/78 768/1243/78 767/1242/78 +f 765/1246/77 767/1242/77 770/1247/77 +f 764/1249/76 769/1235/76 768/1243/76 +f 772/1251/77 777/1255/77 776/1252/77 +f 774/1254/74 778/1259/74 777/1255/74 +f 771/1256/75 776/1538/75 775/1257/75 +f 773/1258/76 775/1257/76 778/1259/76 +f 780/1260/77 785/1264/77 784/1261/77 +f 782/1263/74 786/1268/74 785/1264/74 +f 779/1265/75 784/1539/75 783/1266/75 +f 781/1267/76 783/1266/76 786/1268/76 +f 788/1269/77 793/1273/77 792/1270/77 +f 790/1272/74 794/1277/74 793/1273/74 +f 787/1274/75 792/1540/75 791/1275/75 +f 789/1276/76 791/1275/76 794/1277/76 +f 796/1278/77 801/1282/77 800/1279/77 +f 798/1281/74 802/1286/74 801/1282/74 +f 795/1283/75 800/1541/75 799/1284/75 +f 797/1285/76 799/1284/76 802/1286/76 +f 830/1287/73 831/1542/73 631/1288/73 +f 631/1290/73 831/1542/73 832/1291/73 +f 832/1291/73 833/1295/73 633/1293/73 +f 833/1295/73 834/1298/73 634/1296/73 +f 834/1298/73 819/1543/73 619/1299/73 +f 819/1301/73 820/1304/73 620/1302/73 +f 820/1304/73 821/1307/73 621/1305/73 +f 821/1307/73 822/1310/73 622/1308/73 +f 822/1310/73 823/1544/73 623/1311/73 +f 623/1313/73 823/1544/73 824/1314/73 +f 624/1316/73 824/1314/73 825/1317/73 +f 625/1319/73 825/1317/73 826/1320/73 +f 626/1322/73 826/1320/73 827/1323/73 +f 627/1325/73 827/1323/73 828/1326/73 +f 828/1326/73 829/1545/73 629/1328/73 +f 629/1330/73 829/1545/73 830/1287/73 +f 837/1332/72 838/1338/72 836/1333/72 +f 841/1335/73 842/1342/73 839/1336/73 +f 838/1338/74 842/1342/74 841/1335/74 +f 835/1339/75 840/1337/75 839/1336/75 +f 837/1341/76 839/1336/76 842/1342/76 +f 836/1344/77 841/1335/77 840/1337/77 +f 845/1346/72 846/1352/72 844/1347/72 +f 849/1349/73 850/1356/73 847/1350/73 +f 846/1352/74 850/1356/74 849/1349/74 +f 843/1353/75 848/1351/75 847/1350/75 +f 845/1355/76 847/1350/76 850/1356/76 +f 844/1358/77 849/1349/77 848/1351/77 +f 852/1360/77 857/1364/77 856/1361/77 +f 854/1363/74 858/1368/74 857/1364/74 +f 851/1365/75 856/1546/75 855/1366/75 +f 853/1367/76 855/1366/76 858/1368/76 +f 860/1369/77 865/1373/77 864/1370/77 +f 862/1372/74 866/1377/74 865/1373/74 +f 859/1374/75 864/1547/75 863/1375/75 +f 861/1376/76 863/1375/76 866/1377/76 +f 900/1378/77 905/1382/77 904/1379/77 +f 902/1381/74 906/1386/74 905/1382/74 +f 899/1383/75 904/1548/75 903/1384/75 +f 901/1385/76 903/1384/76 906/1386/76 +f 908/1387/77 913/1391/77 912/1388/77 +f 910/1390/74 914/1395/74 913/1391/74 +f 907/1392/75 912/1549/75 911/1393/75 +f 909/1394/76 911/1393/76 914/1395/76 +f 925/1396/76 929/1418/76 928/1397/76 +f 919/1399/74 923/1422/74 926/1400/74 +f 918/1402/72 922/1414/72 921/1403/72 +f 915/1405/73 920/1416/73 919/1406/73 +f 917/1408/76 919/1399/76 922/1401/76 +f 916/1410/77 921/1413/77 920/1411/77 +f 921/1413/74 925/1396/74 924/1398/74 +f 922/1414/74 926/1420/74 925/1415/74 +f 920/1416/74 924/1421/74 923/1417/74 +f 929/1418/74 930/1423/74 927/1419/74 +f 926/1420/73 930/1423/73 929/1418/73 +f 924/1421/72 928/1397/72 927/1419/72 +f 923/1422/77 927/1419/77 930/1423/77 +f 932/1424/74 934/1550/74 933/1425/74 +f 936/1427/74 938/1551/74 937/1428/74 +f 940/1430/74 942/1552/74 941/1431/74 +f 944/1433/74 946/1553/74 945/1434/74 +f 948/1436/74 950/1554/74 949/1437/74 +f 958/1439/75 962/1466/75 959/1440/75 +f 952/1442/72 957/1457/72 958/1443/72 +f 953/1445/73 955/1459/73 956/1446/73 +f 954/1448/76 958/1439/76 955/1441/76 +f 951/1450/77 956/1456/77 957/1451/77 +f 960/1453/76 964/1462/76 965/1454/76 +f 956/1456/75 960/1453/75 961/1455/75 +f 957/1457/75 961/1464/75 962/1458/75 +f 955/1459/75 959/1465/75 960/1460/75 +f 966/1461/75 965/1454/75 964/1462/75 +f 961/1464/73 965/1454/73 966/1461/73 +f 959/1465/72 963/1463/72 964/1462/72 +f 962/1466/77 966/1461/77 963/1463/77 +f 970/1467/84 969/1555/84 968/1468/84 +f 977/1470/76 978/1476/76 974/1471/76 +f 976/1473/77 975/1556/77 971/1474/77 +f 978/1476/74 976/1473/74 972/1475/74 +f 975/1477/75 977/1470/75 973/1472/75 +f 985/1479/76 986/1485/76 982/1480/76 +f 984/1482/77 983/1557/77 979/1483/77 +f 986/1485/74 984/1482/74 980/1484/74 +f 983/1486/75 985/1479/75 981/1481/75 +f 989/1488/72 990/1558/72 988/1489/72 +f 992/1491/73 994/1559/73 993/1492/73 +f 990/1494/75 994/1559/75 992/1491/75 +f 988/1489/76 992/1491/76 991/1493/76 +f 987/1496/74 991/1493/74 993/1492/74 +s 1 +f 633/1560/85 648/1561/86 632/1562/86 +f 626/1563/87 641/1564/88 625/1565/88 +f 634/1566/89 649/1567/85 633/1560/85 +f 627/1568/77 642/1569/87 626/1563/87 +f 620/1570/90 635/1571/76 619/1572/76 +f 619/1573/76 650/1574/89 634/1566/89 +f 628/1575/91 643/1576/77 627/1568/77 +f 621/1577/92 636/1578/90 620/1570/90 +f 629/1579/93 644/1580/91 628/1575/91 +f 622/1581/94 637/1582/92 621/1577/92 +f 630/1583/95 645/1584/93 629/1579/93 +f 623/1585/75 638/1586/94 622/1581/94 +f 631/1587/74 646/1588/95 630/1583/95 +f 624/1589/96 639/1590/75 623/1585/75 +f 632/1562/86 647/1591/74 631/1587/74 +f 625/1565/88 640/1592/96 624/1589/96 +f 661/1122/93 676/1156/91 660/1118/91 +f 654/1106/94 669/1140/92 653/1103/92 +f 662/1083/95 677/1159/93 661/1122/93 +f 655/1110/75 670/1143/94 654/1106/94 +f 663/1087/74 678/1125/95 662/1083/95 +f 656/1109/96 671/1146/75 655/1110/75 +f 664/1086/86 679/1123/74 663/1087/74 +f 657/1112/88 672/1151/96 656/1109/96 +f 665/1091/85 680/1126/86 664/1086/86 +f 658/1114/87 673/1149/88 657/1112/88 +f 666/1094/89 681/1128/85 665/1091/85 +f 659/1116/77 674/1152/87 658/1114/87 +f 652/1100/90 667/1137/76 651/1097/76 +f 651/1502/76 682/1132/89 666/1094/89 +f 660/1118/91 675/1158/77 659/1116/77 +f 653/1103/92 668/1135/90 652/1100/90 +f 696/1593/96 711/1594/75 695/1595/75 +f 689/1596/85 704/1597/86 688/1598/86 +f 697/1599/88 712/1600/96 696/1593/96 +f 690/1601/89 705/1602/85 689/1596/85 +f 698/1603/87 713/1604/88 697/1599/88 +f 691/1605/76 706/1606/89 690/1601/89 +f 684/1607/91 699/1608/77 683/1609/77 +f 683/1610/77 714/1611/87 698/1603/87 +f 692/1612/90 707/1613/76 691/1614/76 +f 685/1615/93 700/1616/91 684/1607/91 +f 693/1617/92 708/1618/90 692/1612/90 +f 686/1619/95 701/1620/93 685/1615/93 +f 694/1621/94 709/1622/92 693/1617/92 +f 687/1623/74 702/1624/95 686/1619/95 +f 695/1595/75 710/1625/94 694/1621/94 +f 688/1598/86 703/1626/74 687/1623/74 +f 813/1627/93 828/1326/91 812/1628/91 +f 806/1629/94 821/1307/92 805/1630/92 +f 814/1631/95 829/1545/93 813/1627/93 +f 807/1632/75 822/1310/94 806/1629/94 +f 815/1633/74 830/1287/95 814/1631/95 +f 808/1634/96 823/1544/75 807/1632/75 +f 816/1635/86 831/1542/74 815/1633/74 +f 809/1636/88 824/1314/96 808/1634/96 +f 817/1637/85 832/1291/86 816/1635/86 +f 810/1638/87 825/1317/88 809/1636/88 +f 818/1639/89 833/1295/85 817/1637/85 +f 811/1640/77 826/1320/87 810/1638/87 +f 804/1641/90 819/1301/76 803/1642/76 +f 803/1643/76 834/1298/89 818/1639/89 +f 812/1628/91 827/1323/77 811/1640/77 +f 805/1630/92 820/1304/90 804/1641/90 +f 874/1644/97 881/1645/74 873/1646/74 +f 872/1647/98 879/1648/72 871/1649/72 +f 870/1650/99 877/1651/75 869/1652/75 +f 868/1653/100 875/1654/73 867/1655/73 +f 867/1655/73 882/1656/97 874/1644/97 +f 873/1646/74 880/1657/98 872/1647/98 +f 871/1658/72 878/1659/99 870/1650/99 +f 869/1652/75 876/1660/100 868/1653/100 +f 890/1661/97 897/1662/74 889/1663/74 +f 888/1664/98 895/1665/72 887/1666/72 +f 886/1667/99 893/1668/75 885/1669/75 +f 884/1670/100 891/1671/73 883/1672/73 +f 883/1672/73 898/1673/97 890/1661/97 +f 889/1663/74 896/1674/98 888/1664/98 +f 887/1675/72 894/1676/99 886/1667/99 +f 885/1669/75 892/1677/100 884/1670/100 +f 633/1560/85 649/1567/85 648/1561/86 +f 626/1563/87 642/1569/87 641/1564/88 +f 634/1566/89 650/1574/89 649/1567/85 +f 627/1568/77 643/1576/77 642/1569/87 +f 620/1570/90 636/1578/90 635/1571/76 +f 619/1573/76 635/1678/76 650/1574/89 +f 628/1575/91 644/1580/91 643/1576/77 +f 621/1577/92 637/1582/92 636/1578/90 +f 629/1579/93 645/1584/93 644/1580/91 +f 622/1581/94 638/1586/94 637/1582/92 +f 630/1583/95 646/1588/95 645/1584/93 +f 623/1585/75 639/1590/75 638/1586/94 +f 631/1587/74 647/1591/74 646/1588/95 +f 624/1589/96 640/1592/96 639/1590/75 +f 632/1562/86 648/1561/86 647/1591/74 +f 625/1565/88 641/1564/88 640/1592/96 +f 661/1122/93 677/1159/93 676/1156/91 +f 654/1106/94 670/1143/94 669/1140/92 +f 662/1083/95 678/1125/95 677/1159/93 +f 655/1110/75 671/1146/75 670/1143/94 +f 663/1087/74 679/1123/74 678/1125/95 +f 656/1109/96 672/1151/96 671/1146/75 +f 664/1086/86 680/1126/86 679/1123/74 +f 657/1112/88 673/1149/88 672/1151/96 +f 665/1091/85 681/1128/85 680/1126/86 +f 658/1114/87 674/1152/87 673/1149/88 +f 666/1094/89 682/1132/89 681/1128/85 +f 659/1116/77 675/1158/77 674/1152/87 +f 652/1100/90 668/1135/90 667/1137/76 +f 651/1502/76 667/1512/76 682/1132/89 +f 660/1118/91 676/1156/91 675/1158/77 +f 653/1103/92 669/1140/92 668/1135/90 +f 696/1593/96 712/1600/96 711/1594/75 +f 689/1596/85 705/1602/85 704/1597/86 +f 697/1599/88 713/1604/88 712/1600/96 +f 690/1601/89 706/1606/89 705/1602/85 +f 698/1603/87 714/1611/87 713/1604/88 +f 691/1605/76 707/1679/76 706/1606/89 +f 684/1607/91 700/1616/91 699/1608/77 +f 683/1610/77 699/1680/77 714/1611/87 +f 692/1612/90 708/1618/90 707/1613/76 +f 685/1615/93 701/1620/93 700/1616/91 +f 693/1617/92 709/1622/92 708/1618/90 +f 686/1619/95 702/1624/95 701/1620/93 +f 694/1621/94 710/1625/94 709/1622/92 +f 687/1623/74 703/1626/74 702/1624/95 +f 695/1595/75 711/1594/75 710/1625/94 +f 688/1598/86 704/1597/86 703/1626/74 +f 813/1627/93 829/1545/93 828/1326/91 +f 806/1629/94 822/1310/94 821/1307/92 +f 814/1631/95 830/1287/95 829/1545/93 +f 807/1632/75 823/1544/75 822/1310/94 +f 815/1633/74 831/1542/74 830/1287/95 +f 808/1634/96 824/1314/96 823/1544/75 +f 816/1635/86 832/1291/86 831/1542/74 +f 809/1636/88 825/1317/88 824/1314/96 +f 817/1637/85 833/1295/85 832/1291/86 +f 810/1638/87 826/1320/87 825/1317/88 +f 818/1639/89 834/1298/89 833/1295/85 +f 811/1640/77 827/1323/77 826/1320/87 +f 804/1641/90 820/1304/90 819/1301/76 +f 803/1643/76 819/1543/76 834/1298/89 +f 812/1628/91 828/1326/91 827/1323/77 +f 805/1630/92 821/1307/92 820/1304/90 +f 874/1644/97 882/1656/97 881/1645/74 +f 872/1647/98 880/1657/98 879/1648/72 +f 870/1650/99 878/1659/99 877/1651/75 +f 868/1653/100 876/1660/100 875/1654/73 +f 867/1655/73 875/1654/73 882/1656/97 +f 873/1646/74 881/1645/74 880/1657/98 +f 871/1658/72 879/1681/72 878/1659/99 +f 869/1652/75 877/1651/75 876/1660/100 +f 890/1661/97 898/1673/97 897/1662/74 +f 888/1664/98 896/1674/98 895/1665/72 +f 886/1667/99 894/1676/99 893/1668/75 +f 884/1670/100 892/1677/100 891/1671/73 +f 883/1672/73 891/1671/73 898/1673/97 +f 889/1663/74 897/1662/74 896/1674/98 +f 887/1675/72 895/1682/72 894/1676/99 +f 885/1669/75 893/1668/75 892/1677/100 diff --git a/src/main/resources/assets/hbm/textures/items/bedrock_ore_base_actinide.png b/src/main/resources/assets/hbm/textures/items/bedrock_ore_base_actinide.png new file mode 100644 index 0000000000000000000000000000000000000000..dd36137954f1851cdbb628bc9ec6970039ea7fc0 GIT binary patch literal 275 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#VfE`V=AVDyU$<)8*8kM=xPz5a03M+0y5Luv$8q%Ddq0k&ABMq8 zDZh2|cm)BJQj}%MG)*|?5JHfqDN;(`_x;7m+Zk?}hPtkC&atj5&N;N!#Bt2FZG>S+ zmSykrJbxTqaE7(k6h(m$;t3Z;fz}#pEyft~JO^M|7W%#qo_3BKtE$3UOOhm)dcejQ xqA21x@~bUq)(bncf|d&aB2Vm002ovPDHLkV1hZ2hBW{H literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/items/bedrock_ore_crumbs_crystal.png b/src/main/resources/assets/hbm/textures/items/bedrock_ore_crumbs_crystal.png new file mode 100644 index 0000000000000000000000000000000000000000..0b67679535c0d513716d8b1d67064d91765db3df GIT binary patch literal 299 zcmV+`0o4A9P)E`V=AVDyU$<)8*8kM=xPz5a03M+0y5Luv$8q%Ddq0k&ABMq8 zDZh2|cm)BJQj}%MG)*|?5JHfqDN;(`_x;7m+Zk?}hPtkC&atj5&N;N!#Bt2FZG>S+ zmSykrJbxTqaE7(k6h(m$;t3Z;fz}#pEyft~JO^M|7W%#qo_3BKtE$3UOOhm)dcejQ xqA21x@~bUq)(bncf|d&aB2Vm002ovPDHLkV1hZ2hBW{H literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/items/bedrock_ore_crumbs_heavy.png b/src/main/resources/assets/hbm/textures/items/bedrock_ore_crumbs_heavy.png new file mode 100644 index 0000000000000000000000000000000000000000..0b67679535c0d513716d8b1d67064d91765db3df GIT binary patch literal 299 zcmV+`0o4A9P)E`V=AVDyU$<)8*8kM=xPz5a03M+0y5Luv$8q%Ddq0k&ABMq8 zDZh2|cm)BJQj}%MG)*|?5JHfqDN;(`_x;7m+Zk?}hPtkC&atj5&N;N!#Bt2FZG>S+ zmSykrJbxTqaE7(k6h(m$;t3Z;fz}#pEyft~JO^M|7W%#qo_3BKtE$3UOOhm)dcejQ xqA21x@~bUq)(bncf|d&aB2Vm002ovPDHLkV1hZ2hBW{H literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/items/bedrock_ore_crumbs_light.png b/src/main/resources/assets/hbm/textures/items/bedrock_ore_crumbs_light.png new file mode 100644 index 0000000000000000000000000000000000000000..0b67679535c0d513716d8b1d67064d91765db3df GIT binary patch literal 299 zcmV+`0o4A9P)E`V=AVDyU$<)8*8kM=xPz5a03M+0y5Luv$8q%Ddq0k&ABMq8 zDZh2|cm)BJQj}%MG)*|?5JHfqDN;(`_x;7m+Zk?}hPtkC&atj5&N;N!#Bt2FZG>S+ zmSykrJbxTqaE7(k6h(m$;t3Z;fz}#pEyft~JO^M|7W%#qo_3BKtE$3UOOhm)dcejQ xqA21x@~bUq)(bncf|d&aB2Vm002ovPDHLkV1hZ2hBW{H literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/items/bedrock_ore_crumbs_nonmetal.png b/src/main/resources/assets/hbm/textures/items/bedrock_ore_crumbs_nonmetal.png new file mode 100644 index 0000000000000000000000000000000000000000..0b67679535c0d513716d8b1d67064d91765db3df GIT binary patch literal 299 zcmV+`0o4A9P)E`V=AVDyU$<)8*8kM=xPz5a03M+0y5Luv$8q%Ddq0k&ABMq8 zDZh2|cm)BJQj}%MG)*|?5JHfqDN;(`_x;7m+Zk?}hPtkC&atj5&N;N!#Bt2FZG>S+ zmSykrJbxTqaE7(k6h(m$;t3Z;fz}#pEyft~JO^M|7W%#qo_3BKtE$3UOOhm)dcejQ xqA21x@~bUq)(bncf|d&aB2Vm002ovPDHLkV1hZ2hBW{H literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/items/bedrock_ore_crumbs_rare.png b/src/main/resources/assets/hbm/textures/items/bedrock_ore_crumbs_rare.png new file mode 100644 index 0000000000000000000000000000000000000000..0b67679535c0d513716d8b1d67064d91765db3df GIT binary patch literal 299 zcmV+`0o4A9P)E`V=AVDyU$<)8*8kM=xPz5a03M+0y5Luv$8q%Ddq0k&ABMq8 zDZh2|cm)BJQj}%MG)*|?5JHfqDN;(`_x;7m+Zk?}hPtkC&atj5&N;N!#Bt2FZG>S+ zmSykrJbxTqaE7(k6h(m$;t3Z;fz}#pEyft~JO^M|7W%#qo_3BKtE$3UOOhm)dcejQ xqA21x@~bUq)(bncf|d&aB2Vm002ovPDHLkV1hZ2hBW{H literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/items/bedrock_ore_final.png b/src/main/resources/assets/hbm/textures/items/bedrock_ore_final.png index 928bdf6ac8e8f72520214cd03ee03e22af754484..24ac9d3c063f921a8dad720b50a70c870a8cbdfa 100644 GIT binary patch delta 2735 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 delta 2582 zcmV+x3hDL66|NMJGk*!?Nkl8<=6Fpi4!F_-a5Dd6-v4DHIH;k{-tsS_@ z1EiFax3FE_2iPWvdv_Oxn^bY}bpldsWx((&q~TXMM;S4sMEy8Yl0Cp;la+=Xogpdd z3`gs!8z{WO`v)Fe@KdEW>c4L$ZP?@4bF(=U>hhOqpfr9e)ql2qW!r{O*Z+&W<53hT z09Y=Ul|~uu3D-8GIDG&_c@87?1d3l*jK$Yd9345*tB%fUPzMl>pox98ult+FL1enj~)`kFN$OE#( z1Hj>MuzwPmBngJYA%?>t*6THrBr&!Hz_^6zkR!P8MYx0pCq4c6rswJQ^%gU+Q6M-)Yh{AFgqcDn@tjK^aHK>*-HB>%lExPRP`_{+;n6x~4Sw1gZSE^QEXf>6eO zxm-pkV32abYe+koPN%Bh?;~#}urc7Y3`ioT)2SMbMi>r<@O>Zm z_xG6*??M_!#b`7FfV8dccAJ?&E^W1SACN1<%galKbVB;?nT$<=ki_eam^wFgR`w!B zqkj=@Z*LLDac;j|h2+ELw}+of>2H)W5QK>Ubpz%7t11g(MfOD(pl+aQy@@sf1Anei zH!y2KyjYhAo)e#Gv{!{!McU0su>Xoxrw#iq%mAW-{}&lO-XN@*AW5rhUuF8XPP#zt z>;LY0eqD4rA0XS1_^R4|6-kOFmqnxb0BPUr z^)jUM@9}ud(~Rx4t>=Hre1NnCPNQDR3DiTVmfqjrmlD*f;#=hdq9{^}#UdqN3Try~ zE`nN{dVXE|R`LPBdpVlKhhdnK?}D~;oVxa{=L3LK5XR#%!Z3VCyvxWZK3dPOYk%K~ zd;kSI5+28KhWx=`;3P|bw4Ptrz7zR?<#Oq<(O$2I-ENm2>_-Wo?q9#6ZrtW zo!M+wDJMXD*84!K`2dp>MdyBHe2#oThlI6C_{#Z!?|}C60bgMT5T7w0pl-bK!RSzZ zLfz}XDAh5+NWVJr+3n-MqSph_Uc>i&1VMl}jL~x7%U6 z-KGKL%b~m=nSo1^#5j5Z6mD;4JJab@F^F*-I|Wg1hmtg}-*$eZ`2Y#23UY6Mk(909 zH@Hn5IOP`l{l4{v$$g{%aDRJyi>s?EJUl!A$P%BY#Bw=WtyW%@Aa)`j@H#RTD`x04 zfWpzo3)W}K0|4aa1AhjC0iq~URFltA zA3*12SyIu~a>LVz8jVJHe0;=UFi6j_*#c0#UN4h%V_$N1+16rx3ES`Yiar(1o;vw} z3wiOBp|{(umGm+rx-1M&CTcJk6uv0wzL^NKEnS3Z3DbQdOz#xpJO!L)>&wdvfVZW0 zzu&*}?JW5K+1_Y0Dt}#Ep%0-x#F!^qa+cP zK!@z3zhmPvr$6yE+W&X|UQpZD-+FyO+w}!)`~M^FIA2~WcYp8)g~)xRYoa~?D4)=& z`k^P_cDr5a4@H&92mFvm zF8Kgkp#eufvwv8ukRkc5A6lZ6E4B3N>uV=lg8Mp~AfGm-`={Jdlg&o9ac0B^g?8-K44km@JV>-DhNYyjkE#ei%s zKnAnQeWVKcG6ibW^Yu~Ox%vS9%>D5MgW@7fvmI*cCg<}|Wq-f?Opcs^B(Ln&{MPCN zOwLG@d8BKj)}RT$^>(^jAJBGvLCyXBb^ZTSAJ8&Be?Fjz8BnMHn*O(6AJC=xf;PUF z)V3b}-GA-BMSXy)yq$Mm9f>>-ovsfkgu&jFK;qkN5Cpiox-#0!w_yD|>#+v>?`(ZQ z6_|+P23-KTUvD?H}={ zu8A4?B7b)YoQB%Sw1MhFRQrD`pN3{sLlx>rw_3J-deSm3)wF~*o0n^s>e+Im~ycqk>8|f}fNY%&C z&VSVh@PcJf^Ynb`>34T`nZD$5B7;-}sNM z(944on`O?Q+o|zgv2$t=gNUmm2V+9#%scCkFhow9_}ucdjrn5>yZ%43MG}RXTLf0T zwmK!udu?m^#;wybP0 Hl+XkK{X1#1 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/items/bedrock_ore_primary_crystal.png b/src/main/resources/assets/hbm/textures/items/bedrock_ore_primary_crystal.png new file mode 100644 index 0000000000000000000000000000000000000000..86e05f1be30642f22ecf7f00e26ed9992e7324a3 GIT binary patch literal 236 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#Vf9D zvDY8(?l+v3f8T$@cR7aVGOM@>BGl#<96Gmi_PSM1=ImC{*LLKdf6L~4i$LD$nQURY zr;}biOLXEmzAaaL%X@2vtzll8OQz_Zvr%g3P*5^o+nTt+X>I8Ze%>IjV9lpZ^AaR# iR2J;6kpA!giushD^SA8j&*lT2%i!ti=d#Wzp$PzlI$J^j literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/items/bedrock_ore_primary_heavy.png b/src/main/resources/assets/hbm/textures/items/bedrock_ore_primary_heavy.png new file mode 100644 index 0000000000000000000000000000000000000000..dbc0737925380b1b688c71d5fdc8132e60f8294e GIT binary patch literal 290 zcmV+-0p0$IP)xz^T0N_>QWmyWAR%x#BzVGGTX#(dQthE=YwJx~Lv%i}&5%547qK0o2I34@0wry|3g@{6xIrv!=Z=2G0SE_>3R`C8K)l6lTq z_C5CaZC_}}<1EOh7!WFYOk&N}nHGB+i~IJyzqw8KT(=<`L$i&$3dI(^7hjwZOc8sYu&{t<)taJmi2d) k8wk6c{Ci0FNB<-7-zCW#%3ii?26~af)78&qol`;+060x_EdT%j literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/items/bedrock_ore_primary_nonmetal.png b/src/main/resources/assets/hbm/textures/items/bedrock_ore_primary_nonmetal.png new file mode 100644 index 0000000000000000000000000000000000000000..ae2489ea59d46ab2762ac4490e8b58251e908ac7 GIT binary patch literal 279 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#VfwP!vcLtNR%ViFT7kHm{)RAZYsqpUZFR79(#XQ?Qj%}Rlx^nWw2^ZQc z|JXDAtFet@zibkETmST>J>MT6kaA^tZ)=$zvX%4a4)bn~#}-ECjV;r8#FE$SXJXj% zy+y!7Q+C#>Z9+B7Z@vl~Vze?ZkNtk_=x4npQ~1Q$Zg1l~pmen~R^GQ^)uL5ze)o06 zEV^mstT(yW@LHloK&Y4Ims;-}sNM z(944on`O?Q+o|zgv2$t=gNUmm2V+9#%scCkFhow9_}ucdjrn5>yZ%43MG}RXTLf0T zwmK!udu?m^#;wybP0 Hl+XkK{X1#1 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/items/bedrock_ore_rad_actinide.png b/src/main/resources/assets/hbm/textures/items/bedrock_ore_rad_actinide.png new file mode 100644 index 0000000000000000000000000000000000000000..bc9e58030f3c55ec40b06548fa30addb57f60acf GIT binary patch literal 380 zcmV-?0fYXDP)G4p$H`?_EQGOKf+H5-Oc4RW zRoo{}gR-a(9)A%*-0tn}k?W(br^;sNdkrtbe`u8Nd<7b-B{PP z2n0BtPFQPsy?$uK5glqo8eDthE4KuUBG>>YOvfFz8|8IYAy$T32aeZr3?y z-UMCO?Yx#Me;+YMtr8QUP1CR}OA++b18iUJSKgQ|bI&Qrv^M9Q2_X<;+}jh8;)go= aWB}iBeDkD>Aj7&{*s`)CZ-S78K z7oOH=nLZ=Z#pO!W8sLS^fB7RyJzzqINrM4P$5s%9`1@m9w{J6=c@;7iKSKhOAPjSt82g4L#rBwpWL-z53$to(=1 ztKP|6yY;r>`#tgd``$Bcz1G2@xpaNDc4M6CD{~147XiU7*N%D_H*75n_DbwgTv~Fb z&ycNQTkhs-db%dQ&BcBD-j~lV?#rAtPus%jSRu=T*H#QkJvyg9@yvL>bH+Hxna7q&d(PYqJW-Z N@O1TaS?83{1OWWwYU%(0 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/items/bedrock_ore_rad_nonmetal.png b/src/main/resources/assets/hbm/textures/items/bedrock_ore_rad_nonmetal.png new file mode 100644 index 0000000000000000000000000000000000000000..1d0913dc67d77c5b58d9d057476c62ee71a7dab6 GIT binary patch literal 249 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#Vf}GhvRqrfkbhy_~Loe>VI7 zJw6shUB@O%g@VkF`UUc?t3{Q zt>V39bfIP4`qxs=WzyO@0;Z`dHLWr_ZyY)8;`hJr*178_S%+O^5qCYfYu(97DF@3w w+*`crN#(o;sgVqmSUnGJd@-Z?hx1OxCplHm&K{CW2fCfX)78&qol`;+0RGNrYXATM literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/items/bedrock_ore_rad_rare.png b/src/main/resources/assets/hbm/textures/items/bedrock_ore_rad_rare.png new file mode 100644 index 0000000000000000000000000000000000000000..bc9e58030f3c55ec40b06548fa30addb57f60acf GIT binary patch literal 380 zcmV-?0fYXDP)G4p$H`?_EQGOKf+H5-Oc4RW zRoo{}gR-a(9)A%*-0tn}k?W(br^;sNdkrtbe`u8Nd<7b-B{PP z2n0BtPFQPsy?$uK5glqo8eDthE4KuUBG>>YOvfFz8|8IYAy$T32aeZr3?y z-UMCO?Yx#Me;+YMtr8QUP1CR}OA++b18iUJSKgQ|bI&Qrv^M9Q2_X<;+}jh8;)go= aWB}iBeDkD>c0s!IbU(8F{l59+i~+z}%f9dAd7cWS7PQtVr2y!< zj<#(X$MFq(hJO@zj%lq0pznK@Ww``TeVhwpOoI1)2Vh;-1eRsV?Js;!H5NsYU?9CH zBJrHbaUAio1px0oz-8RN?~{Kk5s6LHyu}1)n&#H~GF6v4B|X=U(?;PnKl3R?7NZ=Ch4+wym1%aYscKC8Z#*K;2{>&81QYLd@U)j+0xn zwZkweQjEdDYh~k8(^;b1aXQT(&3-|GX{7vfF8yHq|+&Fe+p;(e=utU}f&lyIK5)I!-9AW!2eZu+E|0lD= z)vjyncw$`M%vpLP}_O=-}ix~nQOcAQRKRJj=Bm1&RU%9@N k(~iG~g8zT7|9Y9x@PONgdU=&~Ko>K3y85}Sb4q9e0M-m(^Z)<= literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/items/bedrock_ore_solvent_light.png b/src/main/resources/assets/hbm/textures/items/bedrock_ore_solvent_light.png new file mode 100644 index 0000000000000000000000000000000000000000..745c40ab4c48474cb99d93cb80a2fa45c6e90827 GIT binary patch literal 291 zcmV+;0o?wHP)+9K{0LGY0O3AV;H%JJ9uIt#gEjz(2Lff_g2@*9;69DIVqP4!} zd9Jbm=UjpSjN^!u5&-W#P1A53M?QkJw({QNoJ+-Mj@tMAa|CN`6))=jB|a(pK_aBC pYowHT@6+h-`HO%jC};d0{R1*UTACCC2JHX<002ovPDHLkV1m#mc+3C* literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/items/bedrock_ore_solvent_nonmetal.png b/src/main/resources/assets/hbm/textures/items/bedrock_ore_solvent_nonmetal.png new file mode 100644 index 0000000000000000000000000000000000000000..b4f8bef8255ebf410f7409d844a2120e43f3c9ec GIT binary patch literal 244 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#Vfxcr6Ykm7A;hU>D;tp4vu)mDFv%6T7!?Ja=L{QGunR(ow&Arb2w(mOd*z|5@ zmtoj#;ftL!-ycw9VQ5&@H1qYo_wAnP37IY?l5gfPGc1|1tKlbC{_V70_BlaKtN7Gw zV!5x$I5n)A_h8QF@0@SuZQJH>PEzU9?FGJBjDn2Di)#;@Yv@o*TladGlS_b?c0s!IbU(8F{l59+i~+z}%f9dAd7cWS7PQtVr2y!< zj<#(X$MFq(hJO@zj%lq0pznK@Ww``TeVhwpOoI1)2Vh;-1eRsV?Js;!H5NsYU?9CH zBJrHbaUAio1px0oz-8RN?~{Kk5s6LHyu}1)n&#H~vt>D=2!eaePzMdzfPGUUQPTJ)*Dyr#C)#fy{Sz3pe4 z>*^KnZ+@3;cx-X*i_^KECj5#fA3pUeEqWT{vgLhskXK1;`R%{SE-rJ6SFN)0ojk2U pyMNY(fUJG*{+TKT`Tm!#VfLyiWop@f(gEmC22WQ%mvv4FO#nyVdpiIC literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/items/bedrock_ore_sulfuric_crystal.png b/src/main/resources/assets/hbm/textures/items/bedrock_ore_sulfuric_crystal.png new file mode 100644 index 0000000000000000000000000000000000000000..d36c7234a630179cbd29566e49e4da0ada35bd0b GIT binary patch literal 225 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#VfXn-8k?b;z(j$t>rt=2$Ir2|X8|tJN6am|5#&zs&s4 Xc2D=)R-D~HH!^s-`njxgN@xNAUhC ze{A~85@WBw4pwLhNR7*_kZ~6f3=wr*GL>uG1>JE>s`?C&OhI@J~%WT>zcD(R_M6rH{;UUX*iR5|R95W=Z-P(3z zSF6AwXO~SX2hUXAnRhSr18*|Vw%pb8HvVRR*)~1(yC{P{ER*VwET>$-lv*V?vS?cJ>rtEwW;a{#>e09b3E zUDqu{cJGDL=@f~1o=2hc`3$fS`ADY+GJsMF?>+bX9i{PM~HsiUCvrOzZ)Q_!%ItYHSAW*syQ?lK zw?16c^8DwC`=+OAeq*fhI{eszNkNIB;yr(|k6;nwoWoJCXKcO}cAmZBzUbPmAG>B5 zaVrUJ@8a;%T$ahCaq9$wm*%z7y-(&8hkCflv^{+Bd!7JO?rk9_hK`Nj=ZQ>;{h;l3 zVx`HxtrMIWzSXiXcx|;UcX8${@BFXLOQvyssJ|pGE)aGga+?(&&<_lru6{1-oD!M< D(&J(@ literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/items/bedrock_ore_sulfuric_rare.png b/src/main/resources/assets/hbm/textures/items/bedrock_ore_sulfuric_rare.png new file mode 100644 index 0000000000000000000000000000000000000000..ff99fd2b9ee6cf26210e0515ecdb3710e2811a3f GIT binary patch literal 293 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#Vfvt>D=2!eaePzMdzfPGUUQPTJ)*Dyr#C)#fy{Sz3pe4 z>*^KnZ+@3;cx-X*i_^KECj5#fA3pUeEqWT{vgLhskXK1;`R%{SE-rJ6SFN)0ojk2U pyMNY(fUJG*{+TKT`Tm!#VfLyiWop@f(gEmC22WQ%mvv4FO#nyVdpiIC literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/models/weapons/lag.png b/src/main/resources/assets/hbm/textures/models/weapons/lag.png new file mode 100644 index 0000000000000000000000000000000000000000..dc8665cf5ce4158b4a55154b795098078310133d GIT binary patch literal 2838 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 literal 0 HcmV?d00001 From 456a7251d479967e1afff04f5f1e4c46d5c59780 Mon Sep 17 00:00:00 2001 From: Boblet Date: Thu, 27 Jun 2024 16:37:13 +0200 Subject: [PATCH 62/69] a metric fuckton of recipes --- .../hbm/blocks/machine/MachineOreSlopper.java | 6 ++ .../container/ContainerOreSlopper.java | 50 +++++++++++++ .../java/com/hbm/inventory/fluid/Fluids.java | 5 +- .../com/hbm/inventory/gui/GUIOreSlopper.java | 41 +++++++++++ .../inventory/recipes/ArcFurnaceRecipes.java | 30 +++++++- .../inventory/recipes/CentrifugeRecipes.java | 37 ++++++++++ .../inventory/recipes/CombinationRecipes.java | 11 +++ .../recipes/CrystallizerRecipes.java | 56 +++++++++++++++ .../recipes/ElectrolyserMetalRecipes.java | 30 ++++++++ .../hbm/items/special/ItemBedrockOreNew.java | 66 +++++++++++++++--- .../machine/TileEntityMachineOreSlopper.java | 24 ++++++- src/main/resources/assets/hbm/lang/de_DE.lang | 33 +++++++++ src/main/resources/assets/hbm/lang/en_US.lang | 35 +++++++++- .../hbm/textures/gui/fluids/vitriol.png | Bin 0 -> 491 bytes .../hbm/textures/models/tank/tank_VITRIOL.png | Bin 0 -> 1242 bytes 15 files changed, 408 insertions(+), 16 deletions(-) create mode 100644 src/main/java/com/hbm/inventory/container/ContainerOreSlopper.java create mode 100644 src/main/java/com/hbm/inventory/gui/GUIOreSlopper.java create mode 100644 src/main/resources/assets/hbm/textures/gui/fluids/vitriol.png create mode 100644 src/main/resources/assets/hbm/textures/models/tank/tank_VITRIOL.png diff --git a/src/main/java/com/hbm/blocks/machine/MachineOreSlopper.java b/src/main/java/com/hbm/blocks/machine/MachineOreSlopper.java index 24b11eae7..42691c524 100644 --- a/src/main/java/com/hbm/blocks/machine/MachineOreSlopper.java +++ b/src/main/java/com/hbm/blocks/machine/MachineOreSlopper.java @@ -4,6 +4,7 @@ import com.hbm.blocks.BlockDummyable; import com.hbm.tileentity.machine.TileEntityMachineOreSlopper; import net.minecraft.block.material.Material; +import net.minecraft.entity.player.EntityPlayer; import net.minecraft.tileentity.TileEntity; import net.minecraft.world.World; @@ -28,4 +29,9 @@ public class MachineOreSlopper extends BlockDummyable { public int getOffset() { return 3; } + + @Override + public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) { + return standardOpenBehavior(world, x, y, z, player, side); + } } diff --git a/src/main/java/com/hbm/inventory/container/ContainerOreSlopper.java b/src/main/java/com/hbm/inventory/container/ContainerOreSlopper.java new file mode 100644 index 000000000..1b74dc8f8 --- /dev/null +++ b/src/main/java/com/hbm/inventory/container/ContainerOreSlopper.java @@ -0,0 +1,50 @@ +package com.hbm.inventory.container; + +import com.hbm.inventory.SlotCraftingOutput; +import com.hbm.tileentity.machine.TileEntityMachineOreSlopper; + +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.InventoryPlayer; +import net.minecraft.inventory.Container; +import net.minecraft.inventory.Slot; + +public class ContainerOreSlopper extends Container { + + public TileEntityMachineOreSlopper slopper; + + public ContainerOreSlopper(InventoryPlayer player, TileEntityMachineOreSlopper slopper) { + this.slopper = slopper; + + //Battery + this.addSlotToContainer(new Slot(slopper, 0, 8, 72)); + //Fluid ID + this.addSlotToContainer(new Slot(slopper, 1, 26, 72)); + //Input + this.addSlotToContainer(new Slot(slopper, 2, 71, 27)); + //Outputs + this.addSlotToContainer(new SlotCraftingOutput(player.player, slopper, 3, 134, 18)); + this.addSlotToContainer(new SlotCraftingOutput(player.player, slopper, 4, 152, 18)); + this.addSlotToContainer(new SlotCraftingOutput(player.player, slopper, 5, 134, 36)); + this.addSlotToContainer(new SlotCraftingOutput(player.player, slopper, 6, 152, 36)); + this.addSlotToContainer(new SlotCraftingOutput(player.player, slopper, 7, 134, 54)); + this.addSlotToContainer(new SlotCraftingOutput(player.player, slopper, 8, 152, 54)); + //Upgrades + this.addSlotToContainer(new Slot(slopper, 0, 62, 72)); + this.addSlotToContainer(new Slot(slopper, 0, 80, 72)); + + for(int i = 0; i < 3; i++) { + for(int j = 0; j < 9; j++) { + this.addSlotToContainer(new Slot(player, j + i * 9 + 9, 8 + j * 18, 122 + i * 18)); + } + } + + for(int i = 0; i < 9; i++) { + this.addSlotToContainer(new Slot(player, i, 8 + i * 18, 180)); + } + } + + @Override + public boolean canInteractWith(EntityPlayer player) { + return slopper.isUseableByPlayer(player); + } +} diff --git a/src/main/java/com/hbm/inventory/fluid/Fluids.java b/src/main/java/com/hbm/inventory/fluid/Fluids.java index 9a5fc151b..77e01d676 100644 --- a/src/main/java/com/hbm/inventory/fluid/Fluids.java +++ b/src/main/java/com/hbm/inventory/fluid/Fluids.java @@ -175,6 +175,7 @@ public class Fluids { public static FluidType THORIUM_SALT_DEPLETED; public static FluidType FULLERENE; public static FluidType STELLAR_FLUX; + public static FluidType VITRIOL; /* Lagacy names for compatibility purposes */ @Deprecated public static FluidType ACID; //JAOPCA uses this, apparently @@ -375,7 +376,8 @@ public class Fluids { HOTCRACKOIL_DS = new FluidType("HOTCRACKOIL_DS", 0x3A1A28, 2, 3, 0, EnumSymbol.NONE).setTemp(350).addTraits(LIQUID, VISCOUS, P_OIL); NAPHTHA_DS = new FluidType("NAPHTHA_DS", 0x63614E, 2, 1, 0, EnumSymbol.NONE).addContainers(new CD_Canister(0x5F6D44)).addTraits(LIQUID, VISCOUS, P_FUEL); LIGHTOIL_DS = new FluidType("LIGHTOIL_DS", 0x63543E, 1, 2, 0, EnumSymbol.NONE).addContainers(new CD_Canister(0xB46B52)).addTraits(LIQUID, P_FUEL); - STELLAR_FLUX = new FluidType(139, "STELLAR_FLUX", 0xE300FF, 0, 4, 4, EnumSymbol.ANTIMATTER).addTraits(ANTI, GASEOUS); + STELLAR_FLUX = new FluidType("STELLAR_FLUX", 0xE300FF, 0, 4, 4, EnumSymbol.ANTIMATTER).addTraits(ANTI, GASEOUS); + VITRIOL = new FluidType(140, "VITRIOL", 0x6E5222, 2, 0, 1, EnumSymbol.NONE).addTraits(LIQUID, VISCOUS); // ^ ^ ^ ^ ^ ^ ^ ^ //ADD NEW FLUIDS HERE @@ -489,6 +491,7 @@ public class Fluids { metaOrder.add(SALIENT); metaOrder.add(SEEDSLURRY); metaOrder.add(COLLOID); + metaOrder.add(VITRIOL); metaOrder.add(IONGEL); metaOrder.add(PEROXIDE); metaOrder.add(SULFURIC_ACID); diff --git a/src/main/java/com/hbm/inventory/gui/GUIOreSlopper.java b/src/main/java/com/hbm/inventory/gui/GUIOreSlopper.java new file mode 100644 index 000000000..26f4937fc --- /dev/null +++ b/src/main/java/com/hbm/inventory/gui/GUIOreSlopper.java @@ -0,0 +1,41 @@ +package com.hbm.inventory.gui; + +import org.lwjgl.opengl.GL11; + +import com.hbm.inventory.container.ContainerOreSlopper; +import com.hbm.lib.RefStrings; +import com.hbm.tileentity.machine.TileEntityMachineOreSlopper; + +import net.minecraft.client.Minecraft; +import net.minecraft.client.resources.I18n; +import net.minecraft.entity.player.InventoryPlayer; +import net.minecraft.util.ResourceLocation; + +public class GUIOreSlopper extends GuiInfoContainer { + + private static ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/processing/gui_ore_slopper.png"); + private TileEntityMachineOreSlopper slopper; + + public GUIOreSlopper(InventoryPlayer player, TileEntityMachineOreSlopper slopper) { + super(new ContainerOreSlopper(player, slopper)); + this.slopper = slopper; + + this.xSize = 176; + this.ySize = 204; + } + + @Override + protected void drawGuiContainerForegroundLayer( int i, int j) { + + String name = this.slopper.hasCustomInventoryName() ? this.slopper.getInventoryName() : I18n.format(this.slopper.getInventoryName()); + this.fontRendererObj.drawString(name, this.xSize / 2 - this.fontRendererObj.getStringWidth(name) / 2, 6, 4210752); + this.fontRendererObj.drawString(I18n.format("container.inventory"), 8, this.ySize - 96 + 2, 4210752); + } + + @Override + protected void drawGuiContainerBackgroundLayer(float interp, int x, int y) { + GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); + Minecraft.getMinecraft().getTextureManager().bindTexture(texture); + drawTexturedModalRect(guiLeft, guiTop, 0, 0, xSize, ySize); + } +} diff --git a/src/main/java/com/hbm/inventory/recipes/ArcFurnaceRecipes.java b/src/main/java/com/hbm/inventory/recipes/ArcFurnaceRecipes.java index 1be8bdd3c..80db4da72 100644 --- a/src/main/java/com/hbm/inventory/recipes/ArcFurnaceRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/ArcFurnaceRecipes.java @@ -25,6 +25,9 @@ import com.hbm.inventory.material.Mats.MaterialStack; import com.hbm.inventory.recipes.loader.SerializableRecipe; import com.hbm.items.ModItems; import com.hbm.items.machine.ItemScraps; +import com.hbm.items.special.ItemBedrockOreNew; +import com.hbm.items.special.ItemBedrockOreNew.BedrockOreGrade; +import com.hbm.items.special.ItemBedrockOreNew.BedrockOreType; import net.minecraft.init.Items; import net.minecraft.item.ItemStack; @@ -51,6 +54,24 @@ public class ArcFurnaceRecipes extends SerializableRecipe { recipes.put(new ComparableStack(ModBlocks.sand_quartz), new ArcFurnaceRecipe().solid(new ItemStack(ModBlocks.glass_quartz))); recipes.put(new OreDictStack(BORAX.dust()), new ArcFurnaceRecipe().solid(new ItemStack(ModItems.powder_boron_tiny, 3)).fluid(new MaterialStack(Mats.MAT_BORON, MaterialShapes.NUGGET.q(3)))); + for(BedrockOreType type : BedrockOreType.values()) { + recipes.put(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.SULFURIC_BYPRODUCT, type)), new ArcFurnaceRecipe().solid(ItemBedrockOreNew.make(BedrockOreGrade.SULFURIC_ARC, type, 2))); + recipes.put(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.SULFURIC_ROASTED, type)), new ArcFurnaceRecipe().solid(ItemBedrockOreNew.make(BedrockOreGrade.SULFURIC_ARC, type, 3))); + recipes.put(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.SOLVENT_BYPRODUCT, type)), new ArcFurnaceRecipe().solid(ItemBedrockOreNew.make(BedrockOreGrade.SULFURIC_ARC, type, 2))); + recipes.put(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.SOLVENT_ROASTED, type)), new ArcFurnaceRecipe().solid(ItemBedrockOreNew.make(BedrockOreGrade.SULFURIC_ARC, type, 3))); + recipes.put(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.RAD_BYPRODUCT, type)), new ArcFurnaceRecipe().solid(ItemBedrockOreNew.make(BedrockOreGrade.SULFURIC_ARC, type, 2))); + recipes.put(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.RAD_ROASTED, type)), new ArcFurnaceRecipe().solid(ItemBedrockOreNew.make(BedrockOreGrade.SULFURIC_ARC, type, 3))); + + recipes.put(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_FIRST, type)), new ArcFurnaceRecipe().fluidNull(ItemBedrockOreNew.toFluid(type.primary1, MaterialShapes.INGOT.q(5)), ItemBedrockOreNew.toFluid(type.primary2, MaterialShapes.INGOT.q(2)))); + recipes.put(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_SECOND, type)), new ArcFurnaceRecipe().fluidNull(ItemBedrockOreNew.toFluid(type.primary1, MaterialShapes.INGOT.q(2)), ItemBedrockOreNew.toFluid(type.primary2, MaterialShapes.INGOT.q(5)))); + recipes.put(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.CRUMBS, type)), new ArcFurnaceRecipe().fluidNull(ItemBedrockOreNew.toFluid(type.primary1, MaterialShapes.INGOT.q(1)), ItemBedrockOreNew.toFluid(type.primary2, MaterialShapes.INGOT.q(1)))); + + int i3 = MaterialShapes.INGOT.q(3); + recipes.put(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.SULFURIC_WASHED, type)), new ArcFurnaceRecipe().fluidNull(ItemBedrockOreNew.toFluid(type.byproductAcid1, i3), ItemBedrockOreNew.toFluid(type.byproductAcid2, i3), ItemBedrockOreNew.toFluid(type.byproductAcid3, i3))); + recipes.put(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.SOLVENT_WASHED, type)), new ArcFurnaceRecipe().fluidNull(ItemBedrockOreNew.toFluid(type.byproductSolvent1, i3), ItemBedrockOreNew.toFluid(type.byproductSolvent2, i3), ItemBedrockOreNew.toFluid(type.byproductSolvent3, i3))); + recipes.put(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.RAD_WASHED, type)), new ArcFurnaceRecipe().fluidNull(ItemBedrockOreNew.toFluid(type.byproductRad1, i3), ItemBedrockOreNew.toFluid(type.byproductRad2, i3), ItemBedrockOreNew.toFluid(type.byproductRad3, i3))); + } + // Autogen for simple single type items for(NTMMaterial material : Mats.orderedList) { int in = material.convIn; @@ -151,7 +172,7 @@ public class ArcFurnaceRecipes extends SerializableRecipe { public static HashMap getFluidRecipes() { HashMap recipes = new HashMap(); for(Entry recipe : ArcFurnaceRecipes.recipes.entrySet()) { - if(recipe.getValue().fluidOutput != null) { + if(recipe.getValue().fluidOutput != null && recipe.getValue().fluidOutput.length > 0) { Object[] out = new Object[recipe.getValue().fluidOutput.length]; for(int i = 0; i < out.length; i++) out[i] = ItemScraps.create(recipe.getValue().fluidOutput[i], true); recipes.put(recipe.getKey().copy(), out); @@ -244,6 +265,13 @@ public class ArcFurnaceRecipes extends SerializableRecipe { return this; } + public ArcFurnaceRecipe fluidNull(MaterialStack... outputs) { + List mat = new ArrayList(); + for(MaterialStack stack : outputs) if(stack != null) mat.add(stack); + if(!mat.isEmpty()) this.fluidOutput = mat.toArray(new MaterialStack[0]); + return this; + } + public ArcFurnaceRecipe solid(ItemStack output) { this.solidOutput = output; return this; diff --git a/src/main/java/com/hbm/inventory/recipes/CentrifugeRecipes.java b/src/main/java/com/hbm/inventory/recipes/CentrifugeRecipes.java index 5896e1a7e..a3aaea30c 100644 --- a/src/main/java/com/hbm/inventory/recipes/CentrifugeRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/CentrifugeRecipes.java @@ -25,7 +25,10 @@ import com.hbm.items.ItemEnums.EnumChunkType; import com.hbm.items.ModItems; import com.hbm.items.machine.ItemPWRFuel.EnumPWRFuel; import com.hbm.items.machine.ItemWatzPellet.EnumWatzType; +import com.hbm.items.special.ItemBedrockOreNew; import com.hbm.items.special.ItemBedrockOre.EnumBedrockOre; +import com.hbm.items.special.ItemBedrockOreNew.BedrockOreGrade; +import com.hbm.items.special.ItemBedrockOreNew.BedrockOreType; import com.hbm.items.special.ItemByproduct.EnumByproduct; import com.hbm.main.MainRegistry; import com.hbm.util.ItemStackUtil; @@ -509,6 +512,40 @@ public class CentrifugeRecipes extends SerializableRecipe { ItemStackUtil.carefulCopy(by3) }); } + for(BedrockOreType type : BedrockOreType.values()) { + + recipes.put(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.BASE, type)), new ItemStack[] {ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY, type), new ItemStack(Blocks.gravel)}); + recipes.put(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.BASE_ROASTED, type)), new ItemStack[] {ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY, type), new ItemStack(Blocks.gravel)}); + recipes.put(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.BASE_WASHED, type)), new ItemStack[] {ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY, type), ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY, type), new ItemStack(Blocks.gravel)}); + + recipes.put(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_SULFURIC, type)), new ItemStack[] {ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_NOSULFURIC, type), ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_NOSULFURIC, type), ItemBedrockOreNew.make(BedrockOreGrade.SULFURIC_BYPRODUCT, type)}); + recipes.put(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_SOLVENT, type)), new ItemStack[] {ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_NOSOLVENT, type), ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_NOSOLVENT, type), ItemBedrockOreNew.make(BedrockOreGrade.SOLVENT_BYPRODUCT, type)}); + recipes.put(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_RAD, type)), new ItemStack[] {ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_NORAD, type), ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_NORAD, type), ItemBedrockOreNew.make(BedrockOreGrade.RAD_BYPRODUCT, type)}); + + recipes.put(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY, type)), new ItemStack[] {ItemBedrockOreNew.extract(type.primary1), ItemBedrockOreNew.extract(type.primary2)}); + recipes.put(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_ROASTED, type)), new ItemStack[] {ItemBedrockOreNew.extract(type.primary1), ItemBedrockOreNew.extract(type.primary2), ItemBedrockOreNew.make(BedrockOreGrade.CRUMBS, type)}); + recipes.put(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_NOSULFURIC, type)), new ItemStack[] {ItemBedrockOreNew.extract(type.primary1), ItemBedrockOreNew.extract(type.primary2), ItemBedrockOreNew.make(BedrockOreGrade.CRUMBS, type)}); + recipes.put(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_NOSOLVENT, type)), new ItemStack[] {ItemBedrockOreNew.extract(type.primary1), ItemBedrockOreNew.extract(type.primary2), ItemBedrockOreNew.make(BedrockOreGrade.CRUMBS, type)}); + recipes.put(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_NORAD, type)), new ItemStack[] {ItemBedrockOreNew.extract(type.primary1), ItemBedrockOreNew.extract(type.primary2), ItemBedrockOreNew.make(BedrockOreGrade.CRUMBS, type)}); + recipes.put(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_FIRST, type)), new ItemStack[] {ItemBedrockOreNew.extract(type.primary1), ItemBedrockOreNew.extract(type.primary1), ItemBedrockOreNew.extract(type.primary2), ItemBedrockOreNew.make(BedrockOreGrade.CRUMBS, type, 2)}); + recipes.put(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_SECOND, type)), new ItemStack[] {ItemBedrockOreNew.extract(type.primary1), ItemBedrockOreNew.extract(type.primary2), ItemBedrockOreNew.extract(type.primary2), ItemBedrockOreNew.make(BedrockOreGrade.CRUMBS, type, 2)}); + + recipes.put(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.SULFURIC_BYPRODUCT, type)), new ItemStack[] {ItemBedrockOreNew.extract(type.byproductAcid1), ItemBedrockOreNew.extract(type.byproductAcid2), ItemBedrockOreNew.extract(type.byproductAcid3), ItemBedrockOreNew.make(BedrockOreGrade.CRUMBS, type)}); + recipes.put(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.SULFURIC_ROASTED, type)), new ItemStack[] {ItemBedrockOreNew.extract(type.byproductAcid1), ItemBedrockOreNew.extract(type.byproductAcid2), ItemBedrockOreNew.extract(type.byproductAcid3), ItemBedrockOreNew.make(BedrockOreGrade.CRUMBS, type)}); + recipes.put(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.SULFURIC_ARC, type)), new ItemStack[] {ItemBedrockOreNew.extract(type.byproductAcid1), ItemBedrockOreNew.extract(type.byproductAcid2), ItemBedrockOreNew.extract(type.byproductAcid3), ItemBedrockOreNew.make(BedrockOreGrade.CRUMBS, type)}); + recipes.put(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.SULFURIC_WASHED, type)), new ItemStack[] {ItemBedrockOreNew.extract(type.byproductAcid1, 2), ItemBedrockOreNew.extract(type.byproductAcid2, 2), ItemBedrockOreNew.extract(type.byproductAcid3, 2), ItemBedrockOreNew.make(BedrockOreGrade.CRUMBS, type)}); + + recipes.put(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.SOLVENT_BYPRODUCT, type)), new ItemStack[] {ItemBedrockOreNew.extract(type.byproductSolvent1), ItemBedrockOreNew.extract(type.byproductSolvent2), ItemBedrockOreNew.extract(type.byproductSolvent3), ItemBedrockOreNew.make(BedrockOreGrade.CRUMBS, type)}); + recipes.put(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.SOLVENT_ROASTED, type)), new ItemStack[] {ItemBedrockOreNew.extract(type.byproductSolvent1), ItemBedrockOreNew.extract(type.byproductSolvent2), ItemBedrockOreNew.extract(type.byproductSolvent3), ItemBedrockOreNew.make(BedrockOreGrade.CRUMBS, type)}); + recipes.put(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.SOLVENT_ARC, type)), new ItemStack[] {ItemBedrockOreNew.extract(type.byproductSolvent1), ItemBedrockOreNew.extract(type.byproductSolvent2), ItemBedrockOreNew.extract(type.byproductSolvent3), ItemBedrockOreNew.make(BedrockOreGrade.CRUMBS, type)}); + recipes.put(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.SOLVENT_WASHED, type)), new ItemStack[] {ItemBedrockOreNew.extract(type.byproductSolvent1, 2), ItemBedrockOreNew.extract(type.byproductSolvent2, 2), ItemBedrockOreNew.extract(type.byproductSolvent3, 2), ItemBedrockOreNew.make(BedrockOreGrade.CRUMBS, type)}); + + recipes.put(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.RAD_BYPRODUCT, type)), new ItemStack[] {ItemBedrockOreNew.extract(type.byproductRad1), ItemBedrockOreNew.extract(type.byproductRad2), ItemBedrockOreNew.extract(type.byproductRad3), ItemBedrockOreNew.make(BedrockOreGrade.CRUMBS, type)}); + recipes.put(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.RAD_ROASTED, type)), new ItemStack[] {ItemBedrockOreNew.extract(type.byproductRad1), ItemBedrockOreNew.extract(type.byproductRad2), ItemBedrockOreNew.extract(type.byproductRad3), ItemBedrockOreNew.make(BedrockOreGrade.CRUMBS, type)}); + recipes.put(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.RAD_ARC, type)), new ItemStack[] {ItemBedrockOreNew.extract(type.byproductRad1), ItemBedrockOreNew.extract(type.byproductRad2), ItemBedrockOreNew.extract(type.byproductRad3), ItemBedrockOreNew.make(BedrockOreGrade.CRUMBS, type)}); + recipes.put(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.RAD_WASHED, type)), new ItemStack[] {ItemBedrockOreNew.extract(type.byproductRad1, 2), ItemBedrockOreNew.extract(type.byproductRad2, 2), ItemBedrockOreNew.extract(type.byproductRad3, 2), ItemBedrockOreNew.make(BedrockOreGrade.CRUMBS, type)}); + } + List quartz = OreDictionary.getOres("crystalCertusQuartz"); if(quartz != null && !quartz.isEmpty()) { diff --git a/src/main/java/com/hbm/inventory/recipes/CombinationRecipes.java b/src/main/java/com/hbm/inventory/recipes/CombinationRecipes.java index 1fe93cf7e..e512e8529 100644 --- a/src/main/java/com/hbm/inventory/recipes/CombinationRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/CombinationRecipes.java @@ -24,6 +24,9 @@ import com.hbm.items.ItemEnums.EnumCokeType; import com.hbm.items.ItemEnums.EnumTarType; import com.hbm.items.ModItems; import com.hbm.items.machine.ItemFluidIcon; +import com.hbm.items.special.ItemBedrockOreNew; +import com.hbm.items.special.ItemBedrockOreNew.BedrockOreGrade; +import com.hbm.items.special.ItemBedrockOreNew.BedrockOreType; import com.hbm.util.Tuple.Pair; import net.minecraft.init.Blocks; @@ -63,6 +66,14 @@ public class CombinationRecipes extends SerializableRecipe { recipes.put(new ComparableStack(Items.reeds), new Pair(new ItemStack(Items.sugar, 2), new FluidStack(Fluids.ETHANOL, 50))); recipes.put(new ComparableStack(Blocks.clay), new Pair(new ItemStack(Blocks.brick_block, 1), null)); + + for(BedrockOreType type : BedrockOreType.values()) { + recipes.put(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.BASE, type)), new Pair(ItemBedrockOreNew.make(BedrockOreGrade.BASE_ROASTED, type), new FluidStack(Fluids.VITRIOL, 50))); + recipes.put(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY, type)), new Pair(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_ROASTED, type), new FluidStack(Fluids.VITRIOL, 50))); + recipes.put(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.SULFURIC_BYPRODUCT, type)), new Pair(ItemBedrockOreNew.make(BedrockOreGrade.SULFURIC_ROASTED, type), new FluidStack(Fluids.VITRIOL, 50))); + recipes.put(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.SOLVENT_BYPRODUCT, type)), new Pair(ItemBedrockOreNew.make(BedrockOreGrade.SOLVENT_ROASTED, type), new FluidStack(Fluids.VITRIOL, 50))); + recipes.put(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.RAD_BYPRODUCT, type)), new Pair(ItemBedrockOreNew.make(BedrockOreGrade.RAD_ROASTED, type), new FluidStack(Fluids.VITRIOL, 50))); + } } public static Pair getOutput(ItemStack stack) { diff --git a/src/main/java/com/hbm/inventory/recipes/CrystallizerRecipes.java b/src/main/java/com/hbm/inventory/recipes/CrystallizerRecipes.java index c18e36ace..2c5867d72 100644 --- a/src/main/java/com/hbm/inventory/recipes/CrystallizerRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/CrystallizerRecipes.java @@ -25,7 +25,10 @@ import com.hbm.items.ItemEnums.EnumTarType; import com.hbm.items.ModItems; import com.hbm.items.machine.ItemChemicalDye.EnumChemDye; import com.hbm.items.machine.ItemFluidIcon; +import com.hbm.items.special.ItemBedrockOreNew; import com.hbm.items.special.ItemBedrockOre.EnumBedrockOre; +import com.hbm.items.special.ItemBedrockOreNew.BedrockOreGrade; +import com.hbm.items.special.ItemBedrockOreNew.BedrockOreType; import com.hbm.items.special.ItemPlasticScrap.ScrapType; import com.hbm.main.MainRegistry; import com.hbm.util.Tuple.Pair; @@ -133,6 +136,59 @@ public class CrystallizerRecipes extends SerializableRecipe { registerRecipe(new ComparableStack(ModItems.ore_nitrocrystalline, 1, i), new CrystallizerRecipe(new ItemStack(ModItems.ore_deepcleaned, 1, i), oreTime), organic); registerRecipe(new ComparableStack(ModItems.ore_nitrocrystalline, 1, i), new CrystallizerRecipe(new ItemStack(ModItems.ore_seared, 1, i), oreTime), hiperf); } + + int bedrock = 200; + int washing = 100; + for(BedrockOreType type : BedrockOreType.values()) { + registerRecipe(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.BASE, type)), new CrystallizerRecipe(ItemBedrockOreNew.make(BedrockOreGrade.BASE_WASHED, type), washing), new FluidStack(Fluids.WATER, 250)); + registerRecipe(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.BASE_ROASTED, type)), new CrystallizerRecipe(ItemBedrockOreNew.make(BedrockOreGrade.BASE_WASHED, type), washing), new FluidStack(Fluids.WATER, 250)); + + registerRecipe(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY, type)), new CrystallizerRecipe(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_SULFURIC, type), bedrock), new FluidStack(Fluids.SULFURIC_ACID, 250)); + registerRecipe(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_ROASTED, type)), new CrystallizerRecipe(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_SULFURIC, type), bedrock), new FluidStack(Fluids.SULFURIC_ACID, 250)); + + registerRecipe(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY, type)), new CrystallizerRecipe(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_SOLVENT, type), bedrock), new FluidStack(Fluids.SOLVENT, 250)); + registerRecipe(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_ROASTED, type)), new CrystallizerRecipe(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_SOLVENT, type), bedrock), new FluidStack(Fluids.SOLVENT, 250)); + registerRecipe(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_NOSULFURIC, type)), new CrystallizerRecipe(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_SOLVENT, type), bedrock), new FluidStack(Fluids.SOLVENT, 250)); + + registerRecipe(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY, type)), new CrystallizerRecipe(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_RAD, type), bedrock), new FluidStack(Fluids.RADIOSOLVENT, 250)); + registerRecipe(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_ROASTED, type)), new CrystallizerRecipe(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_RAD, type), bedrock), new FluidStack(Fluids.RADIOSOLVENT, 250)); + registerRecipe(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_NOSULFURIC, type)), new CrystallizerRecipe(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_RAD, type), bedrock), new FluidStack(Fluids.RADIOSOLVENT, 250)); + registerRecipe(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_NOSOLVENT, type)), new CrystallizerRecipe(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_RAD, type), bedrock), new FluidStack(Fluids.RADIOSOLVENT, 250)); + + registerRecipe(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.SULFURIC_BYPRODUCT, type)), new CrystallizerRecipe(ItemBedrockOreNew.make(BedrockOreGrade.SULFURIC_WASHED, type), washing), new FluidStack(Fluids.WATER, 250)); + registerRecipe(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.SULFURIC_ROASTED, type)), new CrystallizerRecipe(ItemBedrockOreNew.make(BedrockOreGrade.SULFURIC_WASHED, type), washing), new FluidStack(Fluids.WATER, 250)); + registerRecipe(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.SULFURIC_ARC, type)), new CrystallizerRecipe(ItemBedrockOreNew.make(BedrockOreGrade.SULFURIC_WASHED, type), washing), new FluidStack(Fluids.WATER, 250)); + + registerRecipe(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.SOLVENT_BYPRODUCT, type)), new CrystallizerRecipe(ItemBedrockOreNew.make(BedrockOreGrade.SOLVENT_WASHED, type), washing), new FluidStack(Fluids.WATER, 250)); + registerRecipe(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.SOLVENT_ROASTED, type)), new CrystallizerRecipe(ItemBedrockOreNew.make(BedrockOreGrade.SOLVENT_WASHED, type), washing), new FluidStack(Fluids.WATER, 250)); + registerRecipe(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.SOLVENT_ARC, type)), new CrystallizerRecipe(ItemBedrockOreNew.make(BedrockOreGrade.SOLVENT_WASHED, type), washing), new FluidStack(Fluids.WATER, 250)); + + registerRecipe(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.RAD_BYPRODUCT, type)), new CrystallizerRecipe(ItemBedrockOreNew.make(BedrockOreGrade.RAD_WASHED, type), washing), new FluidStack(Fluids.WATER, 250)); + registerRecipe(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.RAD_ROASTED, type)), new CrystallizerRecipe(ItemBedrockOreNew.make(BedrockOreGrade.RAD_WASHED, type), washing), new FluidStack(Fluids.WATER, 250)); + registerRecipe(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.RAD_ARC, type)), new CrystallizerRecipe(ItemBedrockOreNew.make(BedrockOreGrade.RAD_WASHED, type), washing), new FluidStack(Fluids.WATER, 250)); + + FluidStack primary = new FluidStack(Fluids.HYDROGEN, 250); + registerRecipe(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY, type)), new CrystallizerRecipe(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_FIRST, type), bedrock), primary); + registerRecipe(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_ROASTED, type)), new CrystallizerRecipe(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_FIRST, type), bedrock), primary); + registerRecipe(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_SULFURIC, type)), new CrystallizerRecipe(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_FIRST, type), bedrock), primary); + registerRecipe(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_NOSULFURIC, type)), new CrystallizerRecipe(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_FIRST, type), bedrock), primary); + registerRecipe(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_SOLVENT, type)), new CrystallizerRecipe(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_FIRST, type), bedrock), primary); + registerRecipe(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_NOSOLVENT, type)), new CrystallizerRecipe(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_FIRST, type), bedrock), primary); + registerRecipe(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_RAD, type)), new CrystallizerRecipe(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_FIRST, type), bedrock), primary); + registerRecipe(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_NORAD, type)), new CrystallizerRecipe(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_FIRST, type), bedrock), primary); + + FluidStack secondary = new FluidStack(Fluids.CHLORINE, 250); + registerRecipe(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY, type)), new CrystallizerRecipe(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_SECOND, type), bedrock), secondary); + registerRecipe(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_ROASTED, type)), new CrystallizerRecipe(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_SECOND, type), bedrock), secondary); + registerRecipe(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_SULFURIC, type)), new CrystallizerRecipe(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_SECOND, type), bedrock), secondary); + registerRecipe(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_NOSULFURIC, type)), new CrystallizerRecipe(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_SECOND, type), bedrock), secondary); + registerRecipe(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_SOLVENT, type)), new CrystallizerRecipe(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_SECOND, type), bedrock), secondary); + registerRecipe(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_NOSOLVENT, type)), new CrystallizerRecipe(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_SECOND, type), bedrock), secondary); + registerRecipe(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_RAD, type)), new CrystallizerRecipe(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_SECOND, type), bedrock), secondary); + registerRecipe(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_NORAD, type)), new CrystallizerRecipe(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_SECOND, type), bedrock), secondary); + + registerRecipe(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.CRUMBS, type)), new CrystallizerRecipe(ItemBedrockOreNew.make(BedrockOreGrade.BASE, type), bedrock).setReq(64), new FluidStack(Fluids.NITRIC_ACID, 1000)); + } FluidStack[] dyes = new FluidStack[] {new FluidStack(Fluids.WOODOIL, 100), new FluidStack(Fluids.FISHOIL, 100)}; for(FluidStack dye : dyes) { diff --git a/src/main/java/com/hbm/inventory/recipes/ElectrolyserMetalRecipes.java b/src/main/java/com/hbm/inventory/recipes/ElectrolyserMetalRecipes.java index 2e240f391..8932941c2 100644 --- a/src/main/java/com/hbm/inventory/recipes/ElectrolyserMetalRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/ElectrolyserMetalRecipes.java @@ -21,6 +21,9 @@ import com.hbm.inventory.recipes.loader.SerializableRecipe; import com.hbm.items.ModItems; import com.hbm.items.machine.ItemFluidIcon; import com.hbm.items.machine.ItemScraps; +import com.hbm.items.special.ItemBedrockOreNew; +import com.hbm.items.special.ItemBedrockOreNew.BedrockOreGrade; +import com.hbm.items.special.ItemBedrockOreNew.BedrockOreType; import com.hbm.util.ItemStackUtil; import net.minecraft.item.ItemStack; @@ -128,6 +131,33 @@ public class ElectrolyserMetalRecipes extends SerializableRecipe { new MaterialStack(Mats.MAT_IRON, MaterialShapes.INGOT.q(4)), new ItemStack(ModItems.powder_copper, 4), new ItemStack(ModItems.powder_lithium_tiny, 3))); + + for(BedrockOreType type : BedrockOreType.values()) { + + MaterialStack f0 = ItemBedrockOreNew.toFluid(type.primary1, MaterialShapes.INGOT.q(7)); + MaterialStack f1 = ItemBedrockOreNew.toFluid(type.primary2, MaterialShapes.INGOT.q(4)); + recipes.put(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_FIRST, type)), new ElectrolysisMetalRecipe( + f0 != null ? f0 : new MaterialStack(Mats.MAT_SLAG, MaterialShapes.INGOT.q(1)), + f1 != null ? f1 : new MaterialStack(Mats.MAT_SLAG, MaterialShapes.INGOT.q(1)), + f0 == null ? ItemBedrockOreNew.extract(type.primary1, 7) : new ItemStack(ModItems.dust), + f1 == null ? ItemBedrockOreNew.extract(type.primary2, 4) : new ItemStack(ModItems.dust))); + + MaterialStack s0 = ItemBedrockOreNew.toFluid(type.primary1, MaterialShapes.INGOT.q(4)); + MaterialStack s1 = ItemBedrockOreNew.toFluid(type.primary2, MaterialShapes.INGOT.q(7)); + recipes.put(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_SECOND, type)), new ElectrolysisMetalRecipe( + s0 != null ? s0 : new MaterialStack(Mats.MAT_SLAG, MaterialShapes.INGOT.q(1)), + s1 != null ? s1 : new MaterialStack(Mats.MAT_SLAG, MaterialShapes.INGOT.q(1)), + s0 == null ? ItemBedrockOreNew.extract(type.primary1, 4) : new ItemStack(ModItems.dust), + s1 == null ? ItemBedrockOreNew.extract(type.primary2, 7) : new ItemStack(ModItems.dust))); + + MaterialStack c0 = ItemBedrockOreNew.toFluid(type.primary1, MaterialShapes.INGOT.q(2)); + MaterialStack c1 = ItemBedrockOreNew.toFluid(type.primary2, MaterialShapes.INGOT.q(2)); + recipes.put(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.CRUMBS, type)), new ElectrolysisMetalRecipe( + c0 != null ? c0 : new MaterialStack(Mats.MAT_SLAG, MaterialShapes.INGOT.q(1, 2)), + c1 != null ? c1 : new MaterialStack(Mats.MAT_SLAG, MaterialShapes.INGOT.q(1, 2)), + c0 == null ? ItemBedrockOreNew.extract(type.primary1, 2) : new ItemStack(ModItems.dust), + c1 == null ? ItemBedrockOreNew.extract(type.primary2, 2) : new ItemStack(ModItems.dust))); + } } public static ElectrolysisMetalRecipe getRecipe(ItemStack stack) { diff --git a/src/main/java/com/hbm/items/special/ItemBedrockOreNew.java b/src/main/java/com/hbm/items/special/ItemBedrockOreNew.java index c561cd214..15f3550f9 100644 --- a/src/main/java/com/hbm/items/special/ItemBedrockOreNew.java +++ b/src/main/java/com/hbm/items/special/ItemBedrockOreNew.java @@ -3,6 +3,7 @@ package com.hbm.items.special; import static com.hbm.inventory.OreDictManager.*; import java.util.List; +import java.util.Locale; import com.hbm.items.ModItems; import com.hbm.util.EnumUtil; @@ -10,6 +11,10 @@ import com.hbm.util.EnumUtil; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import com.hbm.inventory.material.Mats; +import com.hbm.inventory.material.Mats.MaterialStack; +import com.hbm.inventory.material.NTMMaterial; +import com.hbm.inventory.material.NTMMaterial.SmeltingBehavior; import com.hbm.items.ItemEnums.EnumChunkType; import com.hbm.lib.RefStrings; import com.hbm.render.icon.RGBMutatorInterpolatedComponentRemap; @@ -21,6 +26,8 @@ import net.minecraft.creativetab.CreativeTabs; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.util.IIcon; +import net.minecraft.util.StatCollector; +import net.minecraftforge.oredict.OreDictionary; public class ItemBedrockOreNew extends Item { @@ -66,18 +73,20 @@ public class ItemBedrockOreNew extends Item { @Override public String getItemStackDisplayName(ItemStack stack) { int meta = stack.getItemDamage(); - return this.getGrade(meta).name() + " " + this.getType(meta).suffix; + String type = StatCollector.translateToLocalFormatted(this.getUnlocalizedNameInefficiently(stack) + ".type." + this.getType(meta).suffix + ".name"); + return StatCollector.translateToLocalFormatted(this.getUnlocalizedNameInefficiently(stack) + ".grade." + this.getGrade(meta).name().toLowerCase(Locale.US) + ".name", type); } public static enum BedrockOreType { - // primary sulfuric solvent radsolvent - LIGHT_METAL( 0xFFFFFF, 0x353535, "light", IRON, CU, TI, AL, AL, CHLOROCALCITE, LI, NA, CHLOROCALCITE, LI, NA), - HEAVY_METAL( 0x868686, 0x000000, "heavy", W, PB, GOLD, GOLD, BE, W, PB, GOLD, BI, BI, GOLD), - RARE_EARTH( 0xE6E6B6, 0x1C1C00, "rare", CO, DictFrame.fromOne(ModItems.chunk_ore, EnumChunkType.RARE), B, LA, NB, ND, B, ZR, CO, ND, ZR), - ACTINIDE( 0xC1C7BD, 0x2B3227, "actinide", U, TH232, RA226, RA226, PO210, RA226, RA226, PO210, TC99, TC99, U238), - NON_METAL( 0xAFAFAF, 0x0F0F0F, "nonmetal", COAL, S, LIGNITE, KNO, F, P_RED, F, S, CHLOROCALCITE, SI, SI), - CRYSTALLINE( 0xE2FFFA, 0x1E8A77, "crystal", DIAMOND, SODALITE, CINNABAR, ASBESTOS, REDSTONE, CINNABAR, ASBESTOS, EMERALD, BORAX, MOLYSITE, SODALITE); - + // primary sulfuric solvent radsolvent + LIGHT_METAL( 0xFFFFFF, 0x353535, "light", IRON, CU, TI, AL, AL, CHLOROCALCITE, LI, NA, CHLOROCALCITE, LI, NA), + HEAVY_METAL( 0x868686, 0x000000, "heavy", W, PB, GOLD, GOLD, BE, W, PB, GOLD, BI, BI, GOLD), + RARE_EARTH( 0xE6E6B6, 0x1C1C00, "rare", CO, EnumChunkType.RARE, B, LA, NB, ND, B, ZR, CO, ND, ZR), + ACTINIDE( 0xC1C7BD, 0x2B3227, "actinide", U, TH232, RA226, RA226, PO210, RA226, RA226, PO210, TC99, TC99, U238), + NON_METAL( 0xAFAFAF, 0x0F0F0F, "nonmetal", COAL, S, LIGNITE, KNO, F, P_RED, F, S, CHLOROCALCITE, SI, SI), + CRYSTALLINE( 0xE2FFFA, 0x1E8A77, "crystal", DIAMOND, SODALITE, CINNABAR, ASBESTOS, REDSTONE, CINNABAR, ASBESTOS, EMERALD, BORAX, MOLYSITE, SODALITE); + //sediment + public int light; public int dark; public String suffix; @@ -96,6 +105,39 @@ public class ItemBedrockOreNew extends Item { this.byproductRad1 = bR1; this.byproductRad2 = bR2; this.byproductRad3 = bR3; } } + + public static MaterialStack toFluid(Object o, int amount) { + if(o instanceof DictFrame) { + NTMMaterial mat = Mats.matByName.get(((DictFrame) o).mats[0]); + if(mat != null && mat.smeltable == SmeltingBehavior.SMELTABLE) { + return new MaterialStack(mat, amount); + } + } + return null; + } + + public static ItemStack extract(Object o) { + return extract(o, 1); + } + + public static ItemStack extract(Object o, int amount) { + if(o instanceof EnumChunkType) return new ItemStack(ModItems.chunk_ore, amount, ((EnumChunkType) o).ordinal()); + if(o instanceof DictFrame) { + DictFrame frame = (DictFrame) o; + List gems = OreDictionary.getOres(frame.gem(), false); if(!gems.isEmpty()) return fromList(gems, amount); + List dusts = OreDictionary.getOres(frame.dust(), false); if(!dusts.isEmpty()) return fromList(dusts, amount); + List crystals = OreDictionary.getOres(frame.crystal(), false); if(!crystals.isEmpty()) return fromList(crystals, amount); + List billets = OreDictionary.getOres(frame.billet(), false); if(!billets.isEmpty()) return fromList(billets, amount); + List ingots = OreDictionary.getOres(frame.ingot(), false); if(!ingots.isEmpty()) return fromList(ingots, amount); + } + return new ItemStack(ModItems.nothing); + } + + private static ItemStack fromList(List list, int amount) { + ItemStack first = list.get(0).copy(); + first.stackSize = amount; + return first; + } @Override @SideOnly(Side.CLIENT) @@ -150,7 +192,11 @@ public class ItemBedrockOreNew extends Item { } public static ItemStack make(BedrockOreGrade grade, BedrockOreType type) { - return new ItemStack(ModItems.bedrock_ore, 1, grade.ordinal() << 4 | type.ordinal()); + return make(grade, type, 1); + } + + public static ItemStack make(BedrockOreGrade grade, BedrockOreType type, int amount) { + return new ItemStack(ModItems.bedrock_ore, amount, grade.ordinal() << 4 | type.ordinal()); } public BedrockOreGrade getGrade(int meta) { diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineOreSlopper.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineOreSlopper.java index f8554ab4c..1fdbe4de6 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineOreSlopper.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineOreSlopper.java @@ -1,11 +1,21 @@ package com.hbm.tileentity.machine; +import com.hbm.inventory.container.ContainerOreSlopper; +import com.hbm.inventory.gui.GUIOreSlopper; +import com.hbm.tileentity.IGUIProvider; import com.hbm.tileentity.TileEntityMachineBase; -public class TileEntityMachineOreSlopper extends TileEntityMachineBase { +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.client.gui.GuiScreen; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.inventory.Container; +import net.minecraft.world.World; + +public class TileEntityMachineOreSlopper extends TileEntityMachineBase implements IGUIProvider { public TileEntityMachineOreSlopper() { - super(0); + super(11); } @Override @@ -18,4 +28,14 @@ public class TileEntityMachineOreSlopper extends TileEntityMachineBase { } + @Override + public Container provideContainer(int ID, EntityPlayer player, World world, int x, int y, int z) { + return new ContainerOreSlopper(player.inventory, this); + } + + @Override + @SideOnly(Side.CLIENT) + public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { + return new GUIOreSlopper(player.inventory, this); + } } diff --git a/src/main/resources/assets/hbm/lang/de_DE.lang b/src/main/resources/assets/hbm/lang/de_DE.lang index e87ccd894..9c93972a5 100644 --- a/src/main/resources/assets/hbm/lang/de_DE.lang +++ b/src/main/resources/assets/hbm/lang/de_DE.lang @@ -782,6 +782,7 @@ hbmfluid.tritium=Tritium hbmfluid.uf6=Uranhexafluorid hbmfluid.ultrahotsteam=Ultraverdichteter Dampf hbmfluid.unsaturateds=Ungesättigte Kohlenwasserstoffe +hbmfluid.vitriol=Vitriol hbmfluid.wastefluid=Flüssiger Atommüll hbmfluid.wastegas=Gasförmiger Atommüll hbmfluid.water=Wasser @@ -1259,6 +1260,38 @@ item.battery_su.name=Einwegbatterie item.battery_su_l.name=Große Einwegbatterie item.battery_trixite.name=Billige Spark-Batterie-Nachmache item.bdcl.name=BDCL +item.bedrock_ore.grade.base.name=%s-Bedrockerz +item.bedrock_ore.grade.base_roasted.name=Geröstetes %s-Bedrockerz +item.bedrock_ore.grade.base_washed.name=Gewaschenes %s-Bedrockerz +item.bedrock_ore.grade.primary.name=%s-Bedrockerz, Primärfraktion +item.bedrock_ore.grade.primary_roasted.name=%s-Bedrockerz, geröstete Primärfraktion +item.bedrock_ore.grade.primary_sulfuric.name=%s-Bedrockerz, schwefelige Primärfraktion +item.bedrock_ore.grade.primary_nosulfuric.name=%s-Bedrockerz, geteilte schwefelige Primärfraktion +item.bedrock_ore.grade.primary_solvent.name=%s-Bedrockerz, gelöste Primärfraktion +item.bedrock_ore.grade.primary_nosolvent.name=%s-Bedrockerz, geteilte gelöste Primärfraktion +item.bedrock_ore.grade.primary_rad.name=%s-Bedrockerz, gereinigte Primärfraktion +item.bedrock_ore.grade.primary_norad.name=%s-Bedrockerz, geteilte gereinigte Primärfraktion +item.bedrock_ore.grade.primary_first.name=%s-Bedrockerz, Primärfraktion, hohe Gewichtung +item.bedrock_ore.grade.primary_second.name=%s-Bedrockerz, Primärfraktion, niedrige Gewichtung +item.bedrock_ore.grade.crumbs.name=%s-Bedrockerzkrumen +item.bedrock_ore.grade.sulfuric_byproduct.name=%s-Bedrockerz, schwefeliges Nebenprodukt +item.bedrock_ore.grade.sulfuric_roasted.name=%s-Bedrockerz, geröstetes schwefeliges Nebenprodukt +item.bedrock_ore.grade.sulfuric_arc.name=%s-Bedrockerz, gebranntes schwefeliges Nebenprodukt +item.bedrock_ore.grade.sulfuric_washed.name=%s-Bedrockerz, gewaschenes schwefeliges Nebenprodukt +item.bedrock_ore.grade.solvent_byproduct.name=%s-Bedrockerz, gelöstes Nebenprodukt +item.bedrock_ore.grade.solvent_roasted.name=%s-Bedrockerz, geröstetes gelöstes Nebenprodukt +item.bedrock_ore.grade.solvent_arc.name=%s-Bedrockerz, gebranntes gelöstes Nebenprodukt +item.bedrock_ore.grade.solvent_washed.name=%s-Bedrockerz, gewaschenes gelöstes Nebenprodukt +item.bedrock_ore.grade.rad_byproduct.name=%s-Bedrockerz, gereinigtes Nebenprodukt +item.bedrock_ore.grade.rad_roasted.name=%s-Bedrockerz, geröstetes gereinigtes Nebenprodukt +item.bedrock_ore.grade.rad_arc.name=%s-Bedrockerz, gebranntes gereinigtes Nebenprodukt +item.bedrock_ore.grade.rad_washed.name=%s-Bedrockerz, gewaschenes gereinigtes Nebenprodukt +item.bedrock_ore.type.actinide.name=Actinoide +item.bedrock_ore.type.crystal.name=Kristall +item.bedrock_ore.type.heavy.name=Schwermetall +item.bedrock_ore.type.light.name=Leichtmetall +item.bedrock_ore.type.nonmetal.name=Nichtmetall +item.bedrock_ore.type.rare.name=Seltenerden item.beta.name=Beta-Features item.big_sword.name=Großes Schwert item.billet_am_mix.name=Reaktorfähiges Americiumbillet diff --git a/src/main/resources/assets/hbm/lang/en_US.lang b/src/main/resources/assets/hbm/lang/en_US.lang index 4d6007cde..26cdf1b9b 100644 --- a/src/main/resources/assets/hbm/lang/en_US.lang +++ b/src/main/resources/assets/hbm/lang/en_US.lang @@ -1474,6 +1474,7 @@ hbmfluid.tritium=Tritium hbmfluid.uf6=Uranium Hexafluoride hbmfluid.ultrahotsteam=Ultra Dense Steam hbmfluid.unsaturateds=Unsaturated Hydrocarbons +hbmfluid.vitriol=Vitriol hbmfluid.wastefluid=Liquid Nuclear Waste hbmfluid.wastegas=Gaseous Nuclear Waste hbmfluid.water=Water @@ -1483,8 +1484,6 @@ hbmfluid.xenon=Xenon Gas hbmfluid.xpjuice=Experience Juice hbmfluid.xylene=BTX - - hbmpseudofluid.none=Empty hbmpseudofluid.heuf6=Highly Enriched UF6 hbmpseudofluid.meuf6=Medium Enriched UF6 @@ -1966,6 +1965,38 @@ item.battery_su.name=SU-Battery item.battery_su_l.name=Large SU-Battery item.battery_trixite.name=Off-Brand Spark Battery item.bdcl.name=BDCL +item.bedrock_ore.grade.base.name=%s Bedrock Ore +item.bedrock_ore.grade.base_roasted.name=Roasted %s Bedrock Ore +item.bedrock_ore.grade.base_washed.name=Washed %s Bedrock Ore +item.bedrock_ore.grade.primary.name=%s Bedrock Ore, Primary Fraction +item.bedrock_ore.grade.primary_roasted.name=%s Bedrock Ore, Roasted Primary Fraction +item.bedrock_ore.grade.primary_sulfuric.name=%s Bedrock Ore, Sulfuric Primary Fraction +item.bedrock_ore.grade.primary_nosulfuric.name=%s Bedrock Ore, Separated Sulfuric Primary Fraction +item.bedrock_ore.grade.primary_solvent.name=%s Bedrock Ore, Dissolved Primary Fraction +item.bedrock_ore.grade.primary_nosolvent.name=%s Bedrock Ore, Separated Dissolved Primary Fraction +item.bedrock_ore.grade.primary_rad.name=%s Bedrock Ore, Cleaned Primary Fraction +item.bedrock_ore.grade.primary_norad.name=%s Bedrock Ore, Separated Cleaned Primary Fraction +item.bedrock_ore.grade.primary_first.name=%s Bedrock Ore, Primary Fraction, Higher Weight +item.bedrock_ore.grade.primary_second.name=%s Bedrock Ore, Primary Fraction, Lower Weight +item.bedrock_ore.grade.crumbs.name=%s Bedrock Ore Crumbs +item.bedrock_ore.grade.sulfuric_byproduct.name=%s Bedrock Ore, Sulfuric Byproduct +item.bedrock_ore.grade.sulfuric_roasted.name=%s Bedrock Ore, Roasted Sulfuric Byproduct +item.bedrock_ore.grade.sulfuric_arc.name=%s Bedrock Ore, Seared Sulfuric Byproduct +item.bedrock_ore.grade.sulfuric_washed.name=%s Bedrock Ore, Washed Sulfuric Byproduct +item.bedrock_ore.grade.solvent_byproduct.name=%s Bedrock Ore, Dissolved Byproduct +item.bedrock_ore.grade.solvent_roasted.name=%s Bedrock Ore, Roasted Dissolved Byproduct +item.bedrock_ore.grade.solvent_arc.name=%s Bedrock Ore, Seared Dissolved Byproduct +item.bedrock_ore.grade.solvent_washed.name=%s Bedrock Ore, Washed Dissolved Byproduct +item.bedrock_ore.grade.rad_byproduct.name=%s Bedrock Ore, Cleaned Byproduct +item.bedrock_ore.grade.rad_roasted.name=%s Bedrock Ore, Roasted Cleaned Byproduct +item.bedrock_ore.grade.rad_arc.name=%s Bedrock Ore, Seared Cleaned Byproduct +item.bedrock_ore.grade.rad_washed.name=%s Bedrock Ore, Washed Cleaned Byproduct +item.bedrock_ore.type.actinide.name=Actinide +item.bedrock_ore.type.crystal.name=Crystalline +item.bedrock_ore.type.heavy.name=Heavy Metal +item.bedrock_ore.type.light.name=Light Metal +item.bedrock_ore.type.nonmetal.name=Non-Metal +item.bedrock_ore.type.rare.name=Rare Earth item.beta.name=Beta Features item.big_sword.name=Great Sword item.billet_actinium.name=Actinium-227 Billet diff --git a/src/main/resources/assets/hbm/textures/gui/fluids/vitriol.png b/src/main/resources/assets/hbm/textures/gui/fluids/vitriol.png new file mode 100644 index 0000000000000000000000000000000000000000..c716b615472db55c1944d102c0f8da36c850643e GIT binary patch literal 491 zcmV%;Wf`W}%YB}%O42~5$82pZQ0 zR~d@>2h^Y6zy7Z43V?_ZVIbQe8!lv&ht!4sT@{H;k`d_qm&}Xh|My)hHcvr z5k#cGu+BO5eMdwNjkawoqXJ~5hG8f~|NQ)5`@ZLTz4Cs)nWm}W?)#n)LV=RkaU3zm z&~@Ec*1qpqmIV>PTFd!-=5#tSP16BV=0|Hy2!U_8coxDRj4=CO4NB>%M*nVz8ut}XJIe&Wx|#q0002ovPDHLkV1lK}Lx literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/models/tank/tank_VITRIOL.png b/src/main/resources/assets/hbm/textures/models/tank/tank_VITRIOL.png new file mode 100644 index 0000000000000000000000000000000000000000..12dd41f208b8d33c2c1c219a7348394bbb717d9d GIT binary patch literal 1242 zcmV<01SR{4P)g?9J@+{UpTYZduNIn4S6UpSd~l@bcC3 zzak=o#ao}%%{#wY5D}5n#Z-h;Yq7oL$WBe5fs{psiQ&>M%|AU zI_mb>W++;8Le{qSD$6fkzi(~Z#4AO_D>xCa5RF0`L7|NxUMV16p%L*aQ^YGcHN`7e zLp;A(kip`uS69KVy9YKmcBZaFp?kn*7f+#k;PB_Ssq4%a`}Na?m5Koy9_Q2dKU3q? zz%yROqD3bpG+z1i(Znl7UBxS(^@vvq2|at|)kg=tqLSD{bGggqurPge50Imc@am(9 zS9-dNS3Z3-Ejl5by~*^|AaXvaTq4CP=SU2%XPf8aD(xMYmk5^Y``(8ii)kg=vsyoE1*`tp(f*g%8 z&R!|%Dqi^<>!w8~Bs5-m9qT4u>FFw7b#l!Z+QZZqXv8&RMv$Y8@adzO+CqWG)D}Kb ztqFs%gfvae?)rmx%#HBGD@9x!2q(>p0~w6<04Ft!AV(X)y;n2Fy;pEzYKu%UwFR6s zr?z0%-2;rejo^TZ5zHJoV_X~vCoT@mR7w{I(xMZhdG8g4?g2*KMzHHPqLZmDFd0)@ zz=^3XGR4J#a7udSK+I0D7rr{%m(%0s@c@0a5fs`8;*}z;cvZh$#|JGsA-?e{WU@Kp zl_ITp6*3zFqwa(-wFRQlqBG}vgFG$T2;!9@jd&FjtwdSB$z7!r3cCqtHfBXd{SM zHM<9wA|kTAz7)MJ;#H!GBG;F@LcHpLtFXHVmr*S{rFcb)mTHl=*Ow~A?XqQuPHo}C ze4*<_b}i3hH{Q1B119&op!}R1U5uAkR+mMj`hQtjT^_HqdvJNTPE{_S9AvgdKP+9xOf_s0|h$w|(MOLMDx_CymB65wDchi#>}XYcn0M%F0oy{8&A5 z)#cK4wbr7GH_7#H@m2o5{&Ulw>w;@A))(sWs%RCr%R;6s z>3CIewbC}$%~?wEDw&G|%Y&h52Q&Ig^WwlczZU)fug|qkUq;=bn% Date: Thu, 27 Jun 2024 22:19:57 +0200 Subject: [PATCH 63/69] the almighty perlin noise --- .../java/com/hbm/crafting/ToolRecipes.java | 1 + .../inventory/recipes/ArcFurnaceRecipes.java | 8 +-- src/main/java/com/hbm/items/ModItems.java | 9 ++- .../hbm/items/special/ItemBedrockOreBase.java | 57 ++++++++++++++++++ .../hbm/items/special/ItemBedrockOreNew.java | 5 ++ .../hbm/items/tool/ItemOreDensityScanner.java | 42 +++++++++++++ .../java/com/hbm/main/ModEventHandler.java | 10 +++ .../machine/TileEntityMachineExcavator.java | 5 ++ .../assets/hbm/textures/items/bedrock_ore.png | Bin 2968 -> 3125 bytes .../hbm/textures/items/bedrock_ore_new.png | Bin 0 -> 552 bytes .../textures/items/bedrock_ore_new_base.png | Bin 0 -> 310 bytes .../textures/items/bedrock_ore_new_blank.png | Bin 0 -> 307 bytes .../textures/items/ore_density_scanner.png | Bin 0 -> 345 bytes 13 files changed, 131 insertions(+), 6 deletions(-) create mode 100644 src/main/java/com/hbm/items/special/ItemBedrockOreBase.java create mode 100644 src/main/java/com/hbm/items/tool/ItemOreDensityScanner.java create mode 100644 src/main/resources/assets/hbm/textures/items/bedrock_ore_new.png create mode 100644 src/main/resources/assets/hbm/textures/items/bedrock_ore_new_base.png create mode 100644 src/main/resources/assets/hbm/textures/items/bedrock_ore_new_blank.png create mode 100644 src/main/resources/assets/hbm/textures/items/ore_density_scanner.png diff --git a/src/main/java/com/hbm/crafting/ToolRecipes.java b/src/main/java/com/hbm/crafting/ToolRecipes.java index 9b9f95a4d..28652267a 100644 --- a/src/main/java/com/hbm/crafting/ToolRecipes.java +++ b/src/main/java/com/hbm/crafting/ToolRecipes.java @@ -131,6 +131,7 @@ public class ToolRecipes { CraftingManager.addShapelessAuto(new ItemStack(ModBlocks.geiger), new Object[] { ModItems.geiger_counter }); CraftingManager.addShapelessAuto(new ItemStack(ModItems.digamma_diagnostic), new Object[] { ModItems.geiger_counter, PO210.billet(), ASBESTOS.ingot() }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.pollution_detector, 1), new Object[] { "SFS", "SCS", " S ", 'S', STEEL.plate(), 'F', ModItems.filter_coal, 'C', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.VACUUM_TUBE) }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.ore_density_scanner, 1), new Object[] { "VVV", "CSC", "GGG", " S ", 'V', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.VACUUM_TUBE), 'C', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.CAPACITOR), 'S', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.CONTROLLER_CHASSIS), 'G', GOLD.plate() }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.defuser, 1), new Object[] { " PS", "P P", " P ", 'P', ANY_PLASTIC.ingot(), 'S', STEEL.plate() }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.coltan_tool, 1), new Object[] { "ACA", "CXC", "ACA", 'A', ALLOY.ingot(), 'C', CINNABAR.crystal(), 'X', Items.compass }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.reacher, 1), new Object[] { "BIB", "P P", "B B", 'B', W.bolt(), 'I', W.ingot(), 'P', ANY_RUBBER.ingot() }); diff --git a/src/main/java/com/hbm/inventory/recipes/ArcFurnaceRecipes.java b/src/main/java/com/hbm/inventory/recipes/ArcFurnaceRecipes.java index 80db4da72..e99642cfa 100644 --- a/src/main/java/com/hbm/inventory/recipes/ArcFurnaceRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/ArcFurnaceRecipes.java @@ -57,10 +57,10 @@ public class ArcFurnaceRecipes extends SerializableRecipe { for(BedrockOreType type : BedrockOreType.values()) { recipes.put(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.SULFURIC_BYPRODUCT, type)), new ArcFurnaceRecipe().solid(ItemBedrockOreNew.make(BedrockOreGrade.SULFURIC_ARC, type, 2))); recipes.put(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.SULFURIC_ROASTED, type)), new ArcFurnaceRecipe().solid(ItemBedrockOreNew.make(BedrockOreGrade.SULFURIC_ARC, type, 3))); - recipes.put(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.SOLVENT_BYPRODUCT, type)), new ArcFurnaceRecipe().solid(ItemBedrockOreNew.make(BedrockOreGrade.SULFURIC_ARC, type, 2))); - recipes.put(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.SOLVENT_ROASTED, type)), new ArcFurnaceRecipe().solid(ItemBedrockOreNew.make(BedrockOreGrade.SULFURIC_ARC, type, 3))); - recipes.put(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.RAD_BYPRODUCT, type)), new ArcFurnaceRecipe().solid(ItemBedrockOreNew.make(BedrockOreGrade.SULFURIC_ARC, type, 2))); - recipes.put(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.RAD_ROASTED, type)), new ArcFurnaceRecipe().solid(ItemBedrockOreNew.make(BedrockOreGrade.SULFURIC_ARC, type, 3))); + recipes.put(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.SOLVENT_BYPRODUCT, type)), new ArcFurnaceRecipe().solid(ItemBedrockOreNew.make(BedrockOreGrade.SOLVENT_ARC, type, 2))); + recipes.put(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.SOLVENT_ROASTED, type)), new ArcFurnaceRecipe().solid(ItemBedrockOreNew.make(BedrockOreGrade.SOLVENT_ARC, type, 3))); + recipes.put(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.RAD_BYPRODUCT, type)), new ArcFurnaceRecipe().solid(ItemBedrockOreNew.make(BedrockOreGrade.RAD_ARC, type, 2))); + recipes.put(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.RAD_ROASTED, type)), new ArcFurnaceRecipe().solid(ItemBedrockOreNew.make(BedrockOreGrade.RAD_ARC, type, 3))); recipes.put(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_FIRST, type)), new ArcFurnaceRecipe().fluidNull(ItemBedrockOreNew.toFluid(type.primary1, MaterialShapes.INGOT.q(5)), ItemBedrockOreNew.toFluid(type.primary2, MaterialShapes.INGOT.q(2)))); recipes.put(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_SECOND, type)), new ArcFurnaceRecipe().fluidNull(ItemBedrockOreNew.toFluid(type.primary1, MaterialShapes.INGOT.q(2)), ItemBedrockOreNew.toFluid(type.primary2, MaterialShapes.INGOT.q(5)))); diff --git a/src/main/java/com/hbm/items/ModItems.java b/src/main/java/com/hbm/items/ModItems.java index 95cf47526..f58d01323 100644 --- a/src/main/java/com/hbm/items/ModItems.java +++ b/src/main/java/com/hbm/items/ModItems.java @@ -213,6 +213,7 @@ public class ModItems { public static Item ore_seared; //public static Item ore_radcleaned; public static Item ore_enriched; //final stage + public static Item bedrock_ore_base; public static Item bedrock_ore; public static Item billet_uranium; @@ -1262,6 +1263,7 @@ public class ModItems { public static Item geiger_counter; public static Item digamma_diagnostic; public static Item pollution_detector; + public static Item ore_density_scanner; public static Item survey_scanner; public static Item mirror_tool; public static Item rbmk_tool; @@ -2721,7 +2723,8 @@ public class ModItems { ore_seared = new ItemBedrockOre().setUnlocalizedName("ore_seared").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":ore_seared"); //ore_radcleaned = new ItemBedrockOre().setUnlocalizedName("ore_radcleaned").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":ore_radcleaned"); ore_enriched = new ItemBedrockOre().setUnlocalizedName("ore_enriched").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":ore_enriched"); - bedrock_ore = new ItemBedrockOreNew().setUnlocalizedName("bedrock_ore").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":bedrock_ore_base"); + bedrock_ore_base = new ItemBedrockOreBase().setUnlocalizedName("bedrock_ore_base").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":bedrock_ore_new"); + bedrock_ore = new ItemBedrockOreNew().setUnlocalizedName("bedrock_ore").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":bedrock_ore_new"); ingot_lanthanium = new ItemCustomLore().setUnlocalizedName("ingot_lanthanium").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":ingot_lanthanium"); ingot_actinium = new ItemCustomLore().setUnlocalizedName("ingot_actinium").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":ingot_actinium"); @@ -4602,6 +4605,7 @@ public class ModItems { geiger_counter = new ItemGeigerCounter().setUnlocalizedName("geiger_counter").setMaxStackSize(1).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":geiger_counter"); digamma_diagnostic = new ItemDigammaDiagnostic().setUnlocalizedName("digamma_diagnostic").setMaxStackSize(1).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":digamma_diagnostic"); pollution_detector = new ItemPollutionDetector().setUnlocalizedName("pollution_detector").setMaxStackSize(1).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":pollution_detector"); + ore_density_scanner = new ItemOreDensityScanner().setUnlocalizedName("ore_density_scanner").setMaxStackSize(1).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":ore_density_scanner"); survey_scanner = new ItemSurveyScanner().setUnlocalizedName("survey_scanner").setMaxStackSize(1).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":survey_scanner"); mirror_tool = new ItemMirrorTool().setUnlocalizedName("mirror_tool").setMaxStackSize(1).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":mirror_tool"); rbmk_tool = new ItemRBMKTool().setUnlocalizedName("rbmk_tool").setMaxStackSize(1).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":rbmk_tool"); @@ -5939,9 +5943,9 @@ public class ModItems { GameRegistry.registerItem(ore_nitrocrystalline, ore_nitrocrystalline.getUnlocalizedName()); GameRegistry.registerItem(ore_deepcleaned, ore_deepcleaned.getUnlocalizedName()); GameRegistry.registerItem(ore_seared, ore_seared.getUnlocalizedName()); - //GameRegistry.registerItem(ore_radcleaned, ore_radcleaned.getUnlocalizedName()); GameRegistry.registerItem(ore_enriched, ore_enriched.getUnlocalizedName()); GameRegistry.registerItem(ore_byproduct, ore_byproduct.getUnlocalizedName()); + GameRegistry.registerItem(bedrock_ore_base, bedrock_ore_base.getUnlocalizedName()); GameRegistry.registerItem(bedrock_ore, bedrock_ore.getUnlocalizedName()); //Crystals @@ -6845,6 +6849,7 @@ public class ModItems { GameRegistry.registerItem(linker, linker.getUnlocalizedName()); GameRegistry.registerItem(reactor_sensor, reactor_sensor.getUnlocalizedName()); GameRegistry.registerItem(oil_detector, oil_detector.getUnlocalizedName()); + GameRegistry.registerItem(ore_density_scanner, ore_density_scanner.getUnlocalizedName()); GameRegistry.registerItem(survey_scanner, survey_scanner.getUnlocalizedName()); GameRegistry.registerItem(mirror_tool, mirror_tool.getUnlocalizedName()); GameRegistry.registerItem(rbmk_tool, rbmk_tool.getUnlocalizedName()); diff --git a/src/main/java/com/hbm/items/special/ItemBedrockOreBase.java b/src/main/java/com/hbm/items/special/ItemBedrockOreBase.java new file mode 100644 index 000000000..a20220d8e --- /dev/null +++ b/src/main/java/com/hbm/items/special/ItemBedrockOreBase.java @@ -0,0 +1,57 @@ +package com.hbm.items.special; + +import java.util.List; +import java.util.Random; + +import com.hbm.items.special.ItemBedrockOreNew.BedrockOreType; +import com.hbm.items.tool.ItemOreDensityScanner; + +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.EnumChatFormatting; +import net.minecraft.util.MathHelper; +import net.minecraft.util.StatCollector; +import net.minecraft.world.gen.NoiseGeneratorPerlin; + +public class ItemBedrockOreBase extends Item { + + public static double getOreAmount(ItemStack stack, BedrockOreType type) { + if(!stack.hasTagCompound()) return 0; + NBTTagCompound data = stack.getTagCompound(); + return data.getDouble(type.suffix); + } + + public static void setOreAmount(ItemStack stack, int x, int z) { + if(!stack.hasTagCompound()) stack.stackTagCompound = new NBTTagCompound(); + NBTTagCompound data = stack.getTagCompound(); + + for(BedrockOreType type : BedrockOreType.values()) { + data.setDouble(type.suffix, getOreLevel(x, z, type)); + } + } + + @Override + public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean bool) { + + for(BedrockOreType type : BedrockOreType.values()) { + double amount = this.getOreAmount(stack, type); + String typeName = StatCollector.translateToLocalFormatted("item.bedrock_ore.type." + type.suffix + ".name"); + list.add(typeName + ": " + ((int) (amount * 100)) / 100D + " (" + ItemOreDensityScanner.translateDensity(amount) + EnumChatFormatting.RESET + ")"); + } + } + + private static NoiseGeneratorPerlin[] ores = new NoiseGeneratorPerlin[BedrockOreType.values().length]; + private static NoiseGeneratorPerlin level; + + public static double getOreLevel(int x, int z, BedrockOreType type) { + + if(level == null) level = new NoiseGeneratorPerlin(new Random(2114043), 4); + if(ores[type.ordinal()] == null) ores[type.ordinal()] = new NoiseGeneratorPerlin(new Random(2082127 + type.ordinal()), 4); + + double scale = 0.01D; + + return MathHelper.clamp_double(Math.abs(level.func_151601_a(x * scale, z * scale) * ores[type.ordinal()].func_151601_a(x * scale, z * scale)) * 0.05, 0, 2); + } +} diff --git a/src/main/java/com/hbm/items/special/ItemBedrockOreNew.java b/src/main/java/com/hbm/items/special/ItemBedrockOreNew.java index 15f3550f9..da7713b81 100644 --- a/src/main/java/com/hbm/items/special/ItemBedrockOreNew.java +++ b/src/main/java/com/hbm/items/special/ItemBedrockOreNew.java @@ -32,6 +32,11 @@ import net.minecraftforge.oredict.OreDictionary; public class ItemBedrockOreNew extends Item { public IIcon[] icons = new IIcon[BedrockOreType.values().length * BedrockOreGrade.values().length]; + + public ItemBedrockOreNew() { + this.setHasSubtypes(true); + this.setMaxDamage(0); + } @Override @SideOnly(Side.CLIENT) diff --git a/src/main/java/com/hbm/items/tool/ItemOreDensityScanner.java b/src/main/java/com/hbm/items/tool/ItemOreDensityScanner.java new file mode 100644 index 000000000..ffe5b17f0 --- /dev/null +++ b/src/main/java/com/hbm/items/tool/ItemOreDensityScanner.java @@ -0,0 +1,42 @@ +package com.hbm.items.tool; + +import com.hbm.items.special.ItemBedrockOreBase; +import com.hbm.items.special.ItemBedrockOreNew.BedrockOreType; +import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.PlayerInformPacket; + +import net.minecraft.entity.Entity; +import net.minecraft.entity.player.EntityPlayerMP; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.util.EnumChatFormatting; +import net.minecraft.util.StatCollector; +import net.minecraft.world.World; + +public class ItemOreDensityScanner extends Item { + + @Override + public void onUpdate(ItemStack stack, World world, Entity entity, int i, boolean bool) { + + if(!(entity instanceof EntityPlayerMP) || world.getTotalWorldTime() % 5 != 0) return; + + EntityPlayerMP player = (EntityPlayerMP) entity; + + for(BedrockOreType type : BedrockOreType.values()) { + double level = ItemBedrockOreBase.getOreLevel((int) Math.floor(player.posX), (int) Math.floor(player.posZ), type); + PacketDispatcher.wrapper.sendTo(new PlayerInformPacket( + StatCollector.translateToLocalFormatted("item.bedrock_ore.type." + type.suffix + ".name") + ": " + ((int) (level * 100) / 100D) + " (" + translateDensity(level) + EnumChatFormatting.RESET + ")", + 777 + type.ordinal(), 4000), player); + } + } + + public static String translateDensity(double density) { + if(density <= 0.1) return EnumChatFormatting.DARK_RED + "Very poor"; + if(density <= 0.35) return EnumChatFormatting.RED + "Poor"; + if(density <= 0.75) return EnumChatFormatting.GOLD + "Low"; + if(density >= 1.9) return EnumChatFormatting.AQUA + "Excellent"; + if(density >= 1.65) return EnumChatFormatting.BLUE + "Very high"; + if(density >= 1.25) return EnumChatFormatting.GREEN + "High"; + return EnumChatFormatting.YELLOW + "Moderate"; + } +} diff --git a/src/main/java/com/hbm/main/ModEventHandler.java b/src/main/java/com/hbm/main/ModEventHandler.java index 35e25e94b..f3a2293ad 100644 --- a/src/main/java/com/hbm/main/ModEventHandler.java +++ b/src/main/java/com/hbm/main/ModEventHandler.java @@ -51,6 +51,8 @@ import com.hbm.items.armor.ItemArmorMod; import com.hbm.items.armor.ItemModRevive; import com.hbm.items.armor.ItemModShackles; import com.hbm.items.food.ItemConserve.EnumFoodType; +import com.hbm.items.special.ItemBedrockOreBase; +import com.hbm.items.special.ItemBedrockOreNew.BedrockOreType; import com.hbm.items.tool.ItemGuideBook.BookType; import com.hbm.items.weapon.ItemGunBase; import com.hbm.lib.HbmCollection; @@ -121,6 +123,7 @@ import net.minecraft.util.EntityDamageSource; import net.minecraft.util.EnumChatFormatting; import net.minecraft.util.FoodStats; import net.minecraft.util.MathHelper; +import net.minecraft.util.StatCollector; import net.minecraft.util.Vec3; import net.minecraft.world.World; import net.minecraftforge.common.util.FakePlayer; @@ -1088,6 +1091,13 @@ public class ModEventHandler { } } + // OREDBG + /*if(!event.player.worldObj.isRemote) { + for(BedrockOreType type : BedrockOreType.values()) { + PacketDispatcher.wrapper.sendTo(new PlayerInformPacket(StatCollector.translateToLocalFormatted("item.bedrock_ore.type." + type.suffix + ".name") + ": " + ((int) (ItemBedrockOreBase.getOreLevel((int) Math.floor(player.posX), (int) Math.floor(player.posZ), type) * 100) / 100D), 777 + type.ordinal()), (EntityPlayerMP) player); + } + }*/ + // PRISMDBG /*if(!event.player.worldObj.isRemote) { ChunkRadiationHandlerPRISM prism = (ChunkRadiationHandlerPRISM) ChunkRadiationManager.proxy; diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineExcavator.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineExcavator.java index b1768c1ee..2f9414039 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineExcavator.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineExcavator.java @@ -22,6 +22,7 @@ import com.hbm.items.ModItems; import com.hbm.items.machine.ItemDrillbit; import com.hbm.items.machine.ItemDrillbit.EnumDrillType; import com.hbm.items.machine.ItemMachineUpgrade.UpgradeType; +import com.hbm.items.special.ItemBedrockOreBase; import com.hbm.lib.Library; import com.hbm.tileentity.IGUIProvider; import com.hbm.tileentity.IUpgradeInfoProvider; @@ -326,6 +327,10 @@ public class TileEntityMachineExcavator extends TileEntityMachineBase implements ItemStack stack = ore.resource.copy(); List stacks = new ArrayList(); stacks.add(stack); + + if(stack.getItem() == ModItems.bedrock_ore_base) { + ItemBedrockOreBase.setOreAmount(stack, pos.getX(), pos.getZ()); + } ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata() - 10); diff --git a/src/main/resources/assets/hbm/textures/items/bedrock_ore.png b/src/main/resources/assets/hbm/textures/items/bedrock_ore.png index e62d194c0add58a16bc781470bf8876dda628bdd..1de4e8d853107499c18b18c40657e6917b0a7c53 100644 GIT binary patch delta 3104 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 diff --git a/src/main/resources/assets/hbm/textures/items/bedrock_ore_new.png b/src/main/resources/assets/hbm/textures/items/bedrock_ore_new.png new file mode 100644 index 0000000000000000000000000000000000000000..269bb70396fd2f22f756b760c585cc2f6a50493e GIT binary patch literal 552 zcmV+@0@wYCP)Rq^7X z2d`fI7=orEr67t}X%hafE+b%!~1u*fei$c@rEv!;onN;1<4oRt;gx}@X#^uv&}X;P_FFwLuSOb|~_ zaq~u&m?H3-KIj@d)m#?>84=vOZOhW?eWD*dF2z(b=?u;t2cfB) z20bM3YG;>?2W6fbu*L9U|o<}mFvA_QbzkP<8Ho3KE(`b0SuYIL`d~*In8ekZP%x1G#mc_d_uMq-5 qDd~2*6Xz#l7=|hPxuLx(7jchAohj;0000FVwpq3|c?=uw?!XC!WTU03gZPR~OiD$pt z0vqGoW-1#WUq0`;EC)l>>yWO~n@Zw2XIN&fRctx2wLXxgVfBjL&CVQCSs0u+He3sv zw14+WCk~CJMl-T5n;eu7mUhh2V0<2nv@#X4SmX%vZQYV58uYHlc!ZrkhH_noRbJ#7fUCz7Ul>?|B#l!|iQ}k<)mVz0_2- z;c<>rj%PD=S6a28P-gRnIdAqJFO;!3zd1XuvE#wsTIH2nI-a)wjJ!8{b4A0)>z_D*zGm=r^>bP0l+XkK Dh!J`C literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/items/ore_density_scanner.png b/src/main/resources/assets/hbm/textures/items/ore_density_scanner.png new file mode 100644 index 0000000000000000000000000000000000000000..c67517b88bd029d18343adb337b902975f6d2d8b GIT binary patch literal 345 zcmV-f0jB%9gB(yCs5e138F{j=M@!N3BXot|)g+}#VP|G}1lpZ?R}IkpY7)|-0J@5yrc!l2)4 rHmHZzn%B2?#|$f_08mO Date: Thu, 27 Jun 2024 21:25:26 -0500 Subject: [PATCH 64/69] smallest fixes ever --- src/main/java/com/hbm/handler/CompatHandler.java | 2 +- .../com/hbm/tileentity/turret/TileEntityTurretBaseNT.java | 5 ++--- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/hbm/handler/CompatHandler.java b/src/main/java/com/hbm/handler/CompatHandler.java index c4acf60ca..ca314d371 100644 --- a/src/main/java/com/hbm/handler/CompatHandler.java +++ b/src/main/java/com/hbm/handler/CompatHandler.java @@ -55,7 +55,7 @@ public class CompatHandler { @Optional.Interface(iface = "li.cil.oc.api.network.Analyzable", modid = "OpenComputers"), @Optional.Interface(iface = "li.cil.oc.api.network.ManagedPeripheral", modid = "OpenComputers"), }) - @SimpleComponent.SkipInjection + @SimpleComponent.SkipInjection // make sure OC doesn't inject this shit into the interface and crash public interface OCComponent extends SimpleComponent, SidedComponent, Analyzable, ManagedPeripheral { /** diff --git a/src/main/java/com/hbm/tileentity/turret/TileEntityTurretBaseNT.java b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretBaseNT.java index f8f08cede..419bb807e 100644 --- a/src/main/java/com/hbm/tileentity/turret/TileEntityTurretBaseNT.java +++ b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretBaseNT.java @@ -978,12 +978,11 @@ public abstract class TileEntityTurretBaseNT extends TileEntityMachineBase imple @Callback(direct = true, limit = 4) @Optional.Method(modid = "OpenComputers") public Object[] setTargeting(Context context, Arguments args) { - Object[] oldTargeting = new Object[] {this.targetPlayers, this.targetAnimals, this.targetMobs, this.targetMachines}; this.targetPlayers = args.checkBoolean(0); this.targetAnimals = args.checkBoolean(1); this.targetMobs = args.checkBoolean(2); this.targetMachines = args.checkBoolean(3); - return oldTargeting; + return new Object[] {}; } @Callback(direct = true) @@ -1020,7 +1019,7 @@ public abstract class TileEntityTurretBaseNT extends TileEntityMachineBase imple } @Override - public String[] methods() { + public String[] methods() { // :vomit: return new String[] { "setActive", "isActive", From 6c141e3841418eb51b06478e41f2987c2d4c3117 Mon Sep 17 00:00:00 2001 From: BallOfEnergy <66693744+BallOfEnergy1@users.noreply.github.com> Date: Thu, 27 Jun 2024 22:41:47 -0500 Subject: [PATCH 65/69] ok this one is a pretty big bug; restructured some radar compat. --- .../machine/TileEntityMachineRadarNT.java | 26 ++++++++++++------- 1 file changed, 17 insertions(+), 9 deletions(-) diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadarNT.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadarNT.java index 9a4419d02..99e87371a 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadarNT.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadarNT.java @@ -650,27 +650,35 @@ public class TileEntityMachineRadarNT extends TileEntityMachineBase implements I @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] isIndexPlayer(Context context, Arguments args) { - int index = args.checkInteger(0); - RadarEntry e = entries.get(0); + int index = args.checkInteger(0) - 1; + if(index > entries.size() || index < 0) { + return new Object[] {null, "No entity exists at that index."}; + } + RadarEntry e = entries.get(index); return new Object[] {e.blipLevel == IRadarDetectableNT.PLAYER}; } @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getIndexType(Context context, Arguments args) { - int index = args.checkInteger(0); - RadarEntry e = entries.get(0); + int index = args.checkInteger(0) - 1; + if(index > entries.size() || index < 0) { + return new Object[] {null, "No entity exists at that index."}; + } + RadarEntry e = entries.get(index); return new Object[] {e.blipLevel}; } @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getEntityAtIndex(Context context, Arguments args) { - int index = args.checkInteger(0); - RadarEntry e = entries.get(0); - boolean isPlayer = (boolean)this.isIndexPlayer(context, args)[0]; - int type = (int)this.getIndexType(context, args)[0]; - if(isPlayer) { + int index = args.checkInteger(0) - 1; + if(index > entries.size() || index < 0) { + return new Object[] {null, "No entity exists at that index."}; + } + RadarEntry e = entries.get(index); + int type = e.blipLevel; + if(e.blipLevel == IRadarDetectableNT.PLAYER) { return new Object[]{true, e.posX, e.posY, e.posZ, type, e.unlocalizedName}; } return new Object[]{false, e.posX, e.posY, e.posZ, type}; From 0e439714ea361ee961618d6452cf74763693217f Mon Sep 17 00:00:00 2001 From: BallOfEnergy <66693744+BallOfEnergy1@users.noreply.github.com> Date: Fri, 28 Jun 2024 03:45:09 -0500 Subject: [PATCH 66/69] whoops... --- src/main/java/com/hbm/handler/CompatHandler.java | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/main/java/com/hbm/handler/CompatHandler.java b/src/main/java/com/hbm/handler/CompatHandler.java index ca314d371..552acfe33 100644 --- a/src/main/java/com/hbm/handler/CompatHandler.java +++ b/src/main/java/com/hbm/handler/CompatHandler.java @@ -14,6 +14,8 @@ import net.minecraft.util.ChatStyle; import net.minecraft.util.EnumChatFormatting; import net.minecraftforge.common.util.ForgeDirection; +import java.lang.reflect.Array; + /** * General handler for OpenComputers compatibility. @@ -96,11 +98,9 @@ public class CompatHandler { if(!info.equals("")) player.addChatComponentMessage(new ChatComponentTranslation(info).setChatStyle(new ChatStyle().setColor(EnumChatFormatting.YELLOW))); } - TileEntity te = player.worldObj.getTileEntity((int) hitX, (int) hitY, (int) hitZ); - OCComponent component = (OCComponent) te; - if((component.methods() == null && te instanceof TileEntityProxyCombo) || component.getComponentName().equals("ntm_null")) { + TileEntity te = (TileEntity) this; + if(Array.getLength(this.methods()) == 0 && te instanceof TileEntityProxyCombo || this.getComponentName().equals("ntm_null")) player.addChatComponentMessage(new ChatComponentTranslation("analyze.error").setChatStyle(new ChatStyle().setColor(EnumChatFormatting.RED))); - } return null; } @@ -109,7 +109,7 @@ public class CompatHandler { * @return Array of methods to expose to the computer. */ @Override - default String[] methods() {return null;} + default String[] methods() {return new String[0];} /** * Standard invoke function from {@link li.cil.oc.api.network.ManagedPeripheral} extending {@link li.cil.oc.api.network.SimpleComponent}. From c2b0343d2f814a9310e5fb1a73595809f287ad31 Mon Sep 17 00:00:00 2001 From: BallOfEnergy <66693744+BallOfEnergy1@users.noreply.github.com> Date: Fri, 28 Jun 2024 03:59:05 -0500 Subject: [PATCH 67/69] this was a terrible idea looking back on it revert all the shtuff related to RBMK rods and only making them connect downwards (it would break 99% of existing setups) --- .../hbm/tileentity/machine/rbmk/TileEntityRBMKBoiler.java | 5 ----- .../hbm/tileentity/machine/rbmk/TileEntityRBMKControl.java | 5 ----- .../hbm/tileentity/machine/rbmk/TileEntityRBMKCooler.java | 5 ----- .../hbm/tileentity/machine/rbmk/TileEntityRBMKHeater.java | 5 ----- .../hbm/tileentity/machine/rbmk/TileEntityRBMKOutgasser.java | 5 ----- .../com/hbm/tileentity/machine/rbmk/TileEntityRBMKRod.java | 5 ----- 6 files changed, 30 deletions(-) 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 87a195ef4..05e4e4e59 100644 --- a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKBoiler.java +++ b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKBoiler.java @@ -404,11 +404,6 @@ public class TileEntityRBMKBoiler extends TileEntityRBMKSlottedBase implements I return new Object[] {true}; } - @Override - public boolean canConnectNode(ForgeDirection side) { - return side == ForgeDirection.DOWN; - } - @Override public Container provideContainer(int ID, EntityPlayer player, World world, int x, int y, int z) { return new ContainerRBMKGeneric(player.inventory); 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 2b4bd386a..b89ed8e36 100644 --- a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKControl.java +++ b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKControl.java @@ -166,9 +166,4 @@ public abstract class TileEntityRBMKControl extends TileEntityRBMKSlottedBase im targetLevel = MathHelper.clamp_double(newLevel, 0, 1); return new Object[] {}; } - - @Override - public boolean canConnectNode(ForgeDirection side) { - return side == ForgeDirection.DOWN; - } } 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 7dd7de507..b457f74d0 100644 --- a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKCooler.java +++ b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKCooler.java @@ -180,9 +180,4 @@ public class TileEntityRBMKCooler extends TileEntityRBMKBase implements IFluidAc public Object[] getInfo(Context context, Arguments args) { return new Object[]{heat, tank.getFill(), tank.getMaxFill(), xCoord, yCoord, zCoord}; } - - @Override - public boolean canConnectNode(ForgeDirection side) { - return side == ForgeDirection.DOWN; - } } 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 f9428bec4..440f761d4 100644 --- a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKHeater.java +++ b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKHeater.java @@ -336,11 +336,6 @@ public class TileEntityRBMKHeater extends TileEntityRBMKSlottedBase implements I return new Object[] {xCoord, yCoord, zCoord}; } - @Override - public boolean canConnectNode(ForgeDirection side) { - return side == ForgeDirection.DOWN; - } - @Override public Container provideContainer(int ID, EntityPlayer player, World world, int x, int y, int z) { return new ContainerRBMKHeater(player.inventory, this); 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 bf63d5935..c5a152cc3 100644 --- a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKOutgasser.java +++ b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKOutgasser.java @@ -264,11 +264,6 @@ public class TileEntityRBMKOutgasser extends TileEntityRBMKSlottedBase implement return new Object[] {gas.getFill(), gas.getMaxFill(), progress, gas.getTankType().getID(), xCoord, yCoord, zCoord}; } - @Override - public boolean canConnectNode(ForgeDirection side) { - return side == ForgeDirection.DOWN; - } - @Override public Container provideContainer(int ID, EntityPlayer player, World world, int x, int y, int z) { return new ContainerRBMKOutgasser(player.inventory, this); 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 d8166871c..d1d23badc 100644 --- a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKRod.java +++ b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKRod.java @@ -496,11 +496,6 @@ public class TileEntityRBMKRod extends TileEntityRBMKSlottedBase implements IRBM return new Object[] {xCoord, yCoord, zCoord}; } - @Override - public boolean canConnectNode(ForgeDirection side) { - return side == ForgeDirection.DOWN; - } - @Override public Container provideContainer(int ID, EntityPlayer player, World world, int x, int y, int z) { return new ContainerRBMKRod(player.inventory, this); From f2e9f60e0d05337fe8b350f042e6c35a027bdc52 Mon Sep 17 00:00:00 2001 From: Boblet Date: Fri, 28 Jun 2024 11:52:40 +0200 Subject: [PATCH 68/69] more bedrock ore info --- .../hbm/items/special/ItemBedrockOreNew.java | 103 +++++++++++++----- src/main/resources/assets/hbm/lang/en_US.lang | 7 ++ .../items/bedrock_ore_overlay.arc.png | Bin 0 -> 126 bytes .../items/bedrock_ore_overlay.centrifuged.png | Bin 0 -> 125 bytes .../items/bedrock_ore_overlay.rad.png | Bin 0 -> 132 bytes .../items/bedrock_ore_overlay.roasted.png | Bin 0 -> 131 bytes .../items/bedrock_ore_overlay.solvent.png | Bin 0 -> 132 bytes .../items/bedrock_ore_overlay.sulfuric.png | Bin 0 -> 134 bytes .../items/bedrock_ore_overlay.washed.png | Bin 0 -> 127 bytes 9 files changed, 82 insertions(+), 28 deletions(-) create mode 100644 src/main/resources/assets/hbm/textures/items/bedrock_ore_overlay.arc.png create mode 100644 src/main/resources/assets/hbm/textures/items/bedrock_ore_overlay.centrifuged.png create mode 100644 src/main/resources/assets/hbm/textures/items/bedrock_ore_overlay.rad.png create mode 100644 src/main/resources/assets/hbm/textures/items/bedrock_ore_overlay.roasted.png create mode 100644 src/main/resources/assets/hbm/textures/items/bedrock_ore_overlay.solvent.png create mode 100644 src/main/resources/assets/hbm/textures/items/bedrock_ore_overlay.sulfuric.png create mode 100644 src/main/resources/assets/hbm/textures/items/bedrock_ore_overlay.washed.png diff --git a/src/main/java/com/hbm/items/special/ItemBedrockOreNew.java b/src/main/java/com/hbm/items/special/ItemBedrockOreNew.java index da7713b81..ec26b1d4e 100644 --- a/src/main/java/com/hbm/items/special/ItemBedrockOreNew.java +++ b/src/main/java/com/hbm/items/special/ItemBedrockOreNew.java @@ -1,12 +1,14 @@ package com.hbm.items.special; import static com.hbm.inventory.OreDictManager.*; +import static com.hbm.items.special.ItemBedrockOreNew.ProcessingTrait.*; import java.util.List; import java.util.Locale; import com.hbm.items.ModItems; import com.hbm.util.EnumUtil; +import com.hbm.util.I18nUtil; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -23,6 +25,7 @@ import com.hbm.render.icon.TextureAtlasSpriteMutatable; import net.minecraft.client.renderer.texture.IIconRegister; import net.minecraft.client.renderer.texture.TextureMap; import net.minecraft.creativetab.CreativeTabs; +import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.util.IIcon; @@ -30,8 +33,9 @@ import net.minecraft.util.StatCollector; import net.minecraftforge.oredict.OreDictionary; public class ItemBedrockOreNew extends Item { - + public IIcon[] icons = new IIcon[BedrockOreType.values().length * BedrockOreGrade.values().length]; + public IIcon[] overlays = new IIcon[ProcessingTrait.values().length]; public ItemBedrockOreNew() { this.setHasSubtypes(true); @@ -55,6 +59,11 @@ public class ItemBedrockOreNew extends Item { } } } + + for(int i = 0; i < overlays.length; i++) { + ProcessingTrait trait = ProcessingTrait.values()[i]; + overlays[i] = reg.registerIcon(RefStrings.MODID + ":bedrock_ore_overlay." + trait.name().toLowerCase(Locale.US)); + } } @Override @@ -68,6 +77,23 @@ public class ItemBedrockOreNew extends Item { } } + @Override + @SideOnly(Side.CLIENT) + public boolean requiresMultipleRenderPasses() { + return true; + } + + @Override + public int getRenderPasses(int metadata) { + return 1 + this.getGrade(metadata).traits.length; + } + + @SideOnly(Side.CLIENT) + public IIcon getIconFromDamageForRenderPass(int meta, int pass) { + if(pass == 0) return this.getIconFromDamage(meta); + return this.overlays[this.getGrade(meta).traits[pass - 1].ordinal()]; + } + @Override @SideOnly(Side.CLIENT) public IIcon getIconFromDamage(int meta) { @@ -81,6 +107,14 @@ public class ItemBedrockOreNew extends Item { String type = StatCollector.translateToLocalFormatted(this.getUnlocalizedNameInefficiently(stack) + ".type." + this.getType(meta).suffix + ".name"); return StatCollector.translateToLocalFormatted(this.getUnlocalizedNameInefficiently(stack) + ".grade." + this.getGrade(meta).name().toLowerCase(Locale.US) + ".name", type); } + + @Override + public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean bool) { + + for(ProcessingTrait trait : this.getGrade(stack.getItemDamage()).traits) { + list.add(I18nUtil.resolveKey(this.getUnlocalizedNameInefficiently(stack) + ".trait." + trait.name().toLowerCase(Locale.US))); + } + } public static enum BedrockOreType { // primary sulfuric solvent radsolvent @@ -147,6 +181,7 @@ public class ItemBedrockOreNew extends Item { @Override @SideOnly(Side.CLIENT) public int getColorFromItemStack(ItemStack stack, int pass) { + if(pass != 0) return 0xFFFFFF; BedrockOreGrade grade = this.getGrade(stack.getItemDamage()); return grade.tint; } @@ -156,43 +191,55 @@ public class ItemBedrockOreNew extends Item { public static final int arc = 0xC3A2A2; public static final int washed = 0xDBE2CB; + public static enum ProcessingTrait { + ROASTED, + ARC, + WASHED, + CENTRIFUGED, + SULFURIC, + SOLVENT, + RAD + } + public static enum BedrockOreGrade { - BASE(none, "base"), //from the slopper - BASE_ROASTED(roasted, "base"), //optional combination oven step, yields vitriol - BASE_WASHED(washed, "base"), //primitive-ass acidizer with water - PRIMARY(none, "primary"), //centrifuging for more primary - PRIMARY_ROASTED(roasted, "primary"), //optional comboven - PRIMARY_SULFURIC(0xFFFFD3, "primary"), //sulfuric acid - PRIMARY_NOSULFURIC(0xD3D4FF, "primary"),//from centrifuging, sulfuric byproduct removed - PRIMARY_SOLVENT(0xD3F0FF, "primary"), //solvent - PRIMARY_NOSOLVENT(0xFFDED3, "primary"), //solvent byproduct removed - PRIMARY_RAD(0xECFFD3, "primary"), //radsolvent - PRIMARY_NORAD(0xEBD3FF, "primary"), //radsolvent byproduct removed - PRIMARY_FIRST(0xFFD3D4, "primary"), //higher first material yield - PRIMARY_SECOND(0xD3FFEB, "primary"), //higher second material yield - CRUMBS(none, "crumbs"), //endpoint for primary, recycling + BASE(none, "base"), //from the slopper + BASE_ROASTED(roasted, "base", ROASTED), //optional combination oven step, yields vitriol + BASE_WASHED(washed, "base", WASHED), //primitive-ass acidizer with water + PRIMARY(none, "primary", CENTRIFUGED), //centrifuging for more primary + PRIMARY_ROASTED(roasted, "primary", ROASTED), //optional comboven + PRIMARY_SULFURIC(0xFFFFD3, "primary", SULFURIC), //sulfuric acid + PRIMARY_NOSULFURIC(0xD3D4FF, "primary", CENTRIFUGED, SULFURIC), //from centrifuging, sulfuric byproduct removed + PRIMARY_SOLVENT(0xD3F0FF, "primary", SOLVENT), //solvent + PRIMARY_NOSOLVENT(0xFFDED3, "primary", CENTRIFUGED, SOLVENT), //solvent byproduct removed + PRIMARY_RAD(0xECFFD3, "primary", RAD), //radsolvent + PRIMARY_NORAD(0xEBD3FF, "primary", CENTRIFUGED, RAD), //radsolvent byproduct removed + PRIMARY_FIRST(0xFFD3D4, "primary", CENTRIFUGED), //higher first material yield + PRIMARY_SECOND(0xD3FFEB, "primary", CENTRIFUGED), //higher second material yield + CRUMBS(none, "crumbs", CENTRIFUGED), //endpoint for primary, recycling - SULFURIC_BYPRODUCT(none, "sulfuric"), //from centrifuging - SULFURIC_ROASTED(roasted, "sulfuric"), //comboven again - SULFURIC_ARC(arc, "sulfuric"), //alternate step - SULFURIC_WASHED(washed, "sulfuric"), //sulfuric endpoint + SULFURIC_BYPRODUCT(none, "sulfuric", CENTRIFUGED, SULFURIC), //from centrifuging + SULFURIC_ROASTED(roasted, "sulfuric", ROASTED, SULFURIC), //comboven again + SULFURIC_ARC(arc, "sulfuric", ARC, SULFURIC), //alternate step + SULFURIC_WASHED(washed, "sulfuric", WASHED, SULFURIC), //sulfuric endpoint - SOLVENT_BYPRODUCT(none, "solvent"), //from centrifuging - SOLVENT_ROASTED(roasted, "solvent"), //comboven again - SOLVENT_ARC(arc, "solvent"), //alternate step - SOLVENT_WASHED(washed, "solvent"), //solvent endpoint + SOLVENT_BYPRODUCT(none, "solvent", CENTRIFUGED, SOLVENT), //from centrifuging + SOLVENT_ROASTED(roasted, "solvent", ROASTED, SOLVENT), //comboven again + SOLVENT_ARC(arc, "solvent", ARC, SOLVENT), //alternate step + SOLVENT_WASHED(washed, "solvent", WASHED, SOLVENT), //solvent endpoint - RAD_BYPRODUCT(none, "rad"), //from centrifuging - RAD_ROASTED(roasted, "rad"), //comboven again - RAD_ARC(arc, "rad"), //alternate step - RAD_WASHED(washed, "rad"); //rad endpoint + RAD_BYPRODUCT(none, "rad", CENTRIFUGED, RAD), //from centrifuging + RAD_ROASTED(roasted, "rad", ROASTED, RAD), //comboven again + RAD_ARC(arc, "rad", ARC, RAD), //alternate step + RAD_WASHED(washed, "rad", WASHED, RAD); //rad endpoint public int tint; public String prefix; + public ProcessingTrait[] traits; - private BedrockOreGrade(int tint, String prefix) { + private BedrockOreGrade(int tint, String prefix, ProcessingTrait... traits) { this.tint = tint; this.prefix = prefix; + this.traits = traits; } } diff --git a/src/main/resources/assets/hbm/lang/en_US.lang b/src/main/resources/assets/hbm/lang/en_US.lang index 7c6fd6b3a..8e784c2b7 100644 --- a/src/main/resources/assets/hbm/lang/en_US.lang +++ b/src/main/resources/assets/hbm/lang/en_US.lang @@ -1999,6 +1999,13 @@ item.bedrock_ore.grade.rad_byproduct.name=%s Bedrock Ore, Cleaned Byproduct item.bedrock_ore.grade.rad_roasted.name=%s Bedrock Ore, Roasted Cleaned Byproduct item.bedrock_ore.grade.rad_arc.name=%s Bedrock Ore, Seared Cleaned Byproduct item.bedrock_ore.grade.rad_washed.name=%s Bedrock Ore, Washed Cleaned Byproduct +item.bedrock_ore.trait.arc=§6Arc Smelted +item.bedrock_ore.trait.centrifuged=§9Centrifuged +item.bedrock_ore.trait.rad=§aTreated with High-Performance Solvent +item.bedrock_ore.trait.roasted=§eCombination Oven Roasted +item.bedrock_ore.trait.solvent=§fTreated with Solvent +item.bedrock_ore.trait.sulfuric=§6Treated with Sulfuric Acid +item.bedrock_ore.trait.washed=§bWashed item.bedrock_ore.type.actinide.name=Actinide item.bedrock_ore.type.crystal.name=Crystalline item.bedrock_ore.type.heavy.name=Heavy Metal diff --git a/src/main/resources/assets/hbm/textures/items/bedrock_ore_overlay.arc.png b/src/main/resources/assets/hbm/textures/items/bedrock_ore_overlay.arc.png new file mode 100644 index 0000000000000000000000000000000000000000..77aba449479fd334c885297c3ab6b0860a0216e5 GIT binary patch literal 126 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#Vfm?V_VboMi7`8a&}D(AFsi;m)dWh+_2|zJGg;` ZK|_v1_5Rb9LO@d(JYD@<);T3K0RY%vDS-e0 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/items/bedrock_ore_overlay.solvent.png b/src/main/resources/assets/hbm/textures/items/bedrock_ore_overlay.solvent.png new file mode 100644 index 0000000000000000000000000000000000000000..95f45567c8b4200a8f948ff72aacba81ebf93361 GIT binary patch literal 132 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#VfI^i7!PC{xWt~$(69862E7|}6 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/items/bedrock_ore_overlay.sulfuric.png b/src/main/resources/assets/hbm/textures/items/bedrock_ore_overlay.sulfuric.png new file mode 100644 index 0000000000000000000000000000000000000000..5eaa9ba1bab5c057e6cf097bdf8ba2f884896b13 GIT binary patch literal 134 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#VfIEGmC zCMQU+E=~|J0D(!X9{vXc`T0d@2`MQF6AbTq?_%utv-<1)%y?oJ1CN2xq|AmjH{(Ri Z7*dY&2wrMF%>*=v!PC{xWt~$(69C-mC@TN} literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/items/bedrock_ore_overlay.washed.png b/src/main/resources/assets/hbm/textures/items/bedrock_ore_overlay.washed.png new file mode 100644 index 0000000000000000000000000000000000000000..14b860e0c4c74422706516da7a0c05391d34b22b GIT binary patch literal 127 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#Vf Date: Fri, 28 Jun 2024 14:03:17 +0200 Subject: [PATCH 69/69] slopper --- .../java/com/hbm/inventory/fluid/Fluids.java | 4 +- .../machine/TileEntityMachineOreSlopper.java | 164 ++++++++++++++++++ .../assets/hbm/textures/gui/fluids/slop.png | Bin 0 -> 554 bytes .../hbm/textures/models/tank/tank_SLOP.png | Bin 0 -> 1091 bytes 4 files changed, 167 insertions(+), 1 deletion(-) create mode 100644 src/main/resources/assets/hbm/textures/gui/fluids/slop.png create mode 100644 src/main/resources/assets/hbm/textures/models/tank/tank_SLOP.png diff --git a/src/main/java/com/hbm/inventory/fluid/Fluids.java b/src/main/java/com/hbm/inventory/fluid/Fluids.java index 77e01d676..97e4d45d1 100644 --- a/src/main/java/com/hbm/inventory/fluid/Fluids.java +++ b/src/main/java/com/hbm/inventory/fluid/Fluids.java @@ -176,6 +176,7 @@ public class Fluids { public static FluidType FULLERENE; public static FluidType STELLAR_FLUX; public static FluidType VITRIOL; + public static FluidType SLOP; /* Lagacy names for compatibility purposes */ @Deprecated public static FluidType ACID; //JAOPCA uses this, apparently @@ -377,7 +378,8 @@ public class Fluids { NAPHTHA_DS = new FluidType("NAPHTHA_DS", 0x63614E, 2, 1, 0, EnumSymbol.NONE).addContainers(new CD_Canister(0x5F6D44)).addTraits(LIQUID, VISCOUS, P_FUEL); LIGHTOIL_DS = new FluidType("LIGHTOIL_DS", 0x63543E, 1, 2, 0, EnumSymbol.NONE).addContainers(new CD_Canister(0xB46B52)).addTraits(LIQUID, P_FUEL); STELLAR_FLUX = new FluidType("STELLAR_FLUX", 0xE300FF, 0, 4, 4, EnumSymbol.ANTIMATTER).addTraits(ANTI, GASEOUS); - VITRIOL = new FluidType(140, "VITRIOL", 0x6E5222, 2, 0, 1, EnumSymbol.NONE).addTraits(LIQUID, VISCOUS); + VITRIOL = new FluidType("VITRIOL", 0x6E5222, 2, 0, 1, EnumSymbol.NONE).addTraits(LIQUID, VISCOUS); + SLOP = new FluidType(141, "SLOP", 0x929D45, 0, 0, 0, EnumSymbol.NONE).addTraits(LIQUID, VISCOUS); // ^ ^ ^ ^ ^ ^ ^ ^ //ADD NEW FLUIDS HERE diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineOreSlopper.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineOreSlopper.java index 1fdbe4de6..dccefcab4 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineOreSlopper.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineOreSlopper.java @@ -1,31 +1,195 @@ package com.hbm.tileentity.machine; import com.hbm.inventory.container.ContainerOreSlopper; +import com.hbm.inventory.fluid.FluidType; +import com.hbm.inventory.fluid.Fluids; +import com.hbm.inventory.fluid.tank.FluidTank; import com.hbm.inventory.gui.GUIOreSlopper; +import com.hbm.items.ModItems; +import com.hbm.items.special.ItemBedrockOreBase; +import com.hbm.items.special.ItemBedrockOreNew; +import com.hbm.items.special.ItemBedrockOreNew.BedrockOreGrade; +import com.hbm.items.special.ItemBedrockOreNew.BedrockOreType; +import com.hbm.lib.Library; import com.hbm.tileentity.IGUIProvider; import com.hbm.tileentity.TileEntityMachineBase; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; import net.minecraft.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 TileEntityMachineOreSlopper extends TileEntityMachineBase implements IGUIProvider { + + public long power; + public static final long maxPower = 1_000_000; + + public static final int waterUsedBase = 1_000; + public int waterUsed = waterUsedBase; + public static final long consumptionBase = 200; + public long consumption = consumptionBase; + + public float progress; + public boolean processing; + + public SlopperAnimation animation = SlopperAnimation.LOWERING; + public float slider; + public float prevSlider; + public float bucket; + public float prevBucket; + public int delay; + + public static FluidTank[] tanks; + public double[] ores = new double[BedrockOreType.values().length]; public TileEntityMachineOreSlopper() { super(11); + tanks = new FluidTank[2]; + tanks[0] = new FluidTank(Fluids.WATER, 16_000); + tanks[1] = new FluidTank(Fluids.SLOP, 16_000); } @Override public String getName() { return "container.machineOreSlopper"; } + + public static enum SlopperAnimation { + LOWERING, LIFTING, MOVE_SHREDDER, DUMPING, MOVE_BUCKET + } @Override public void updateEntity() { + if(!worldObj.isRemote) { + + this.power = Library.chargeTEFromItems(slots, 0, power, maxPower); + + tanks[0].setType(1, slots); + FluidType conversion = this.getFluidOutput(tanks[0].getTankType()); + if(conversion != null) tanks[1].setTankType(conversion); + + this.processing = false; + + if(canSlop()) { + this.power -= this.consumption; + this.progress += 1F/200F; + this.processing = true; + boolean markDirty = false; + + while(progress >= 1F && canSlop()) { + progress -= 1F; + + for(BedrockOreType type : BedrockOreType.values()) { + ores[type.ordinal()] += ItemBedrockOreBase.getOreAmount(slots[2], type); + } + + this.decrStackSize(2, 1); + this.tanks[0].setFill(this.tanks[0].getFill() - waterUsed); + this.tanks[1].setFill(this.tanks[1].getFill() + waterUsed); + markDirty = true; + } + + if(markDirty) this.markDirty(); + + } else { + this.progress = 0; + } + + for(BedrockOreType type : BedrockOreType.values()) { + ItemStack output = ItemBedrockOreNew.make(BedrockOreGrade.BASE, type); + outer: while(ores[type.ordinal()] >= 1) { + for(int i = 3; i <= 8; i++) if(slots[i] != null && slots[i].getItem() == output.getItem() && slots[i].getItemDamage() == output.getItemDamage() && slots[i].stackSize < output.getMaxStackSize()) { + slots[i].stackSize++; ores[type.ordinal()] -= 1F; continue outer; + } + for(int i = 3; i <= 8; i++) if(slots[i] == null) { + slots[i] = output; ores[type.ordinal()] -= 1F; continue outer; + } + } + } + + } else { + + this.prevSlider = this.slider; + this.prevBucket = this.bucket; + + if(this.processing) { + + if(delay > 0) { + delay--; + return; + } + + switch(animation) { + case LOWERING: + this.bucket += 1F/40F; + if(bucket >= 1F) { + bucket = 1F; + animation = SlopperAnimation.LIFTING; + delay = 20; + } + break; + case LIFTING: + this.bucket -= 1F/40F; + if(bucket <= 0) { + bucket = 0F; + animation = SlopperAnimation.MOVE_SHREDDER; + delay = 10; + } + break; + case MOVE_SHREDDER: + this.slider += 1/60F; + if(slider >= 1F) { + slider = 1F; + animation = SlopperAnimation.DUMPING; + delay = 60; + } + break; + case DUMPING: + animation = SlopperAnimation.MOVE_BUCKET; + break; + case MOVE_BUCKET: + this.slider -= 1/60F; + if(slider <= 0F) { + animation = SlopperAnimation.LOWERING; + delay = 10; + } + break; + } + } + } + } + + @Override public void serialize(ByteBuf buf) { + super.serialize(buf); + buf.writeLong(power); + buf.writeFloat(progress); + buf.writeBoolean(processing); + } + + @Override public void deserialize(ByteBuf buf) { + super.deserialize(buf); + this.power = buf.readLong(); + this.progress = buf.readFloat(); + this.processing = buf.readBoolean(); + } + + public boolean canSlop() { + if(this.getFluidOutput(tanks[0].getTankType()) == null) return false; + if(tanks[0].getFill() < waterUsed) return false; + if(tanks[1].getFill() + waterUsed > tanks[1].getMaxFill()) return false; + if(power < consumption) return false; + + return slots[2] != null && slots[2].getItem() == ModItems.bedrock_ore_base; + } + + public FluidType getFluidOutput(FluidType input) { + if(input == Fluids.WATER) return Fluids.SLOP; + return null; } @Override diff --git a/src/main/resources/assets/hbm/textures/gui/fluids/slop.png b/src/main/resources/assets/hbm/textures/gui/fluids/slop.png new file mode 100644 index 0000000000000000000000000000000000000000..4d521d5856042b92c6851c213fe426b7498a2046 GIT binary patch literal 554 zcmV+_0@eMAP)^#*4Fy}XbR@;>YcTcRxWd_1h4 z2!uhDbnBkF{^#G{zy1KU);NxXX_|1((OTnL=XnC)y{Gq%nGr&GoT)0UHTHc6AjZhL zu7nU!Rkm$IRhg!Vr>7_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%@kGT07*qoM6N<$f@38IHvj+t literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/models/tank/tank_SLOP.png b/src/main/resources/assets/hbm/textures/models/tank/tank_SLOP.png new file mode 100644 index 0000000000000000000000000000000000000000..7e99ca01c85d1b9ba7c33d01e05a6b755d54e904 GIT binary patch literal 1091 zcmeAS@N?(olHy`uVBq!ia0vp^RY2Us!3HEZPulwcNU;<`sUZYbI*$fEhA*lrx^=c@_dS_61mkD9lM`lOS6-- zR$3y7S7NWPTb$>+`$v|D6?60Bx7Q0FO-CmG5$MJ6A;1V3{5orzOjwYH+vEG}oSWPbj1ai-X#NwM<3eFJ~h zD7@HZ{NQt}d8=8IQ~H6|yWhQlN9-y3qNmTY3#eNj=b+TOClD&n_Gqe-82h2lqm3($ENO$OyHm}ozHOU_NOZIVYi#*5 ziBjo9>Ki7V|n+E|cOn6M~9hC}_`UME$zyKV-)nJm%KB|U3(9~`+R)|phOFegH$ z!>jr6;kAz$xpG;6{<^8{8uf8i&F;SQ#TOSTKayVmum8kfV0dL7U2U~nQDD8&p=)9p zJz{e$?n^((ya)>X%pgRI#?eZON zpvY2))9lK8?hsYt@+0!0%g5c}1xeqydIK|*HMR&IS>2RaucV~3_+#LNpLMcb-pZ95|1v)JDQfw?fUp)xuD=ozva^RA8)%CJz00xognklyT0tHmtSrP z4}D_vXlhfE;^|i2z!bqpp&=dNZc}!Dl<1ae`sviYgL_u+L{|~6y*Z*sU&r6YZC`XP&c#aMhgK@64kn0(VDj7J3RQbU5{v6 o2(A}$-P0uek)WvI(be@%@2ie7T$$VrEEO0$UHx3vIVCg!0Q)QZvH$=8 literal 0 HcmV?d00001