From 7f64b418fde27c731806af5fe336ab66f72f13f4 Mon Sep 17 00:00:00 2001 From: Bob Date: Sun, 15 Jan 2023 20:23:09 +0100 Subject: [PATCH] the new, the old, the mold --- src/main/java/api/hbm/energy/PowerNet.java | 6 +- .../java/com/hbm/blocks/BlockDummyable.java | 1 - src/main/java/com/hbm/blocks/ModBlocks.java | 15 +- .../com/hbm/blocks/turret/TurretSentry.java | 102 + .../java/com/hbm/crafting/WeaponRecipes.java | 3 + .../java/com/hbm/creativetabs/NukeTab.java | 6 +- .../com/hbm/entity/mob/EntityMaskMan.java | 8 +- .../java/com/hbm/handler/HazmatRegistry.java | 89 +- .../java/com/hbm/handler/ToolAbility.java | 5 +- .../com/hbm/handler/imc/IMCCrystallizer.java | 20 +- .../com/hbm/handler/imc/package-info.java | 12 +- .../nei/CrystallizerRecipeHandler.java | 184 +- .../container/ContainerCrystallizer.java | 27 +- .../hbm/inventory/gui/GUICrystallizer.java | 2 +- .../hbm/inventory/gui/GUITurretSentry.java | 20 + .../inventory/recipes/CentrifugeRecipes.java | 2 +- .../recipes/CrystallizerRecipes.java | 152 +- .../recipes/loader/SerializableRecipe.java | 3 + .../java/com/hbm/items/tool/ItemWandD.java | 25 +- src/main/java/com/hbm/lib/Library.java | 7 +- src/main/java/com/hbm/lib/RefStrings.java | 2 +- src/main/java/com/hbm/main/ClientProxy.java | 1 + .../java/com/hbm/main/ResourceManager.java | 2 + .../com/hbm/render/tileentity/RenderCore.java | 2 +- .../render/tileentity/RenderTurretSentry.java | 84 + .../java/com/hbm/tileentity/TileMappings.java | 1 + .../machine/TileEntityCondenser.java | 3 +- .../machine/TileEntityHeatBoiler.java | 5 +- .../machine/TileEntityMachineCentrifuge.java | 4 +- .../TileEntityMachineCrystallizer.java | 72 +- .../machine/TileEntityMachineMiningLaser.java | 7 +- .../machine/TileEntityMachineMixer.java | 1 + .../machine/rbmk/TileEntityRBMKBase.java | 5 +- .../machine/storage/TileEntityBarrel.java | 4 +- .../turret/TileEntityTurretBaseNT.java | 2 +- .../turret/TileEntityTurretSentry.java | 237 ++ .../hbm/world/generator/DungeonToolbox.java | 2 +- src/main/resources/assets/hbm/lang/de_DE.lang | 2 + src/main/resources/assets/hbm/lang/en_US.lang | 4 +- src/main/resources/assets/hbm/lang/zh_CN.lang | 168 +- .../hbm/models/turrets/turret_sentry.obj | 2533 +++++++++++++++++ src/main/resources/assets/hbm/sounds.json | 2 + .../assets/hbm/sounds/turret/sentry_fire.ogg | Bin 0 -> 21261 bytes .../hbm/sounds/turret/sentry_lockon.ogg | Bin 0 -> 12175 bytes .../gui/processing/gui_crystallizer_alt.png | Bin 2832 -> 2837 bytes .../textures/gui/weapon/gui_turret_sentry.png | Bin 0 -> 4011 bytes .../hbm/textures/items/ammo_5mm_alt.png | Bin 0 -> 474 bytes .../hbm/textures/items/ammo_5mm_alt2.png | Bin 0 -> 485 bytes .../textures/models/chemplant_base_new.png | Bin 21847 -> 11818 bytes .../textures/models/chemplant_spinner_new.png | Bin 927 -> 752 bytes .../hbm/textures/models/turrets/sentry.png | Bin 0 -> 1429 bytes src/main/resources/mcmod.info | 2 +- 52 files changed, 3452 insertions(+), 382 deletions(-) create mode 100644 src/main/java/com/hbm/blocks/turret/TurretSentry.java create mode 100644 src/main/java/com/hbm/inventory/gui/GUITurretSentry.java create mode 100644 src/main/java/com/hbm/render/tileentity/RenderTurretSentry.java create mode 100644 src/main/java/com/hbm/tileentity/turret/TileEntityTurretSentry.java create mode 100644 src/main/resources/assets/hbm/models/turrets/turret_sentry.obj create mode 100644 src/main/resources/assets/hbm/sounds/turret/sentry_fire.ogg create mode 100644 src/main/resources/assets/hbm/sounds/turret/sentry_lockon.ogg create mode 100644 src/main/resources/assets/hbm/textures/gui/weapon/gui_turret_sentry.png create mode 100644 src/main/resources/assets/hbm/textures/items/ammo_5mm_alt.png create mode 100644 src/main/resources/assets/hbm/textures/items/ammo_5mm_alt2.png create mode 100644 src/main/resources/assets/hbm/textures/models/turrets/sentry.png diff --git a/src/main/java/api/hbm/energy/PowerNet.java b/src/main/java/api/hbm/energy/PowerNet.java index e58536a8d..f9025201b 100644 --- a/src/main/java/api/hbm/energy/PowerNet.java +++ b/src/main/java/api/hbm/energy/PowerNet.java @@ -125,10 +125,10 @@ public class PowerNet implements IPowerNet { @Override public long transferPower(long power) { - if(lastCleanup + 45 < System.currentTimeMillis()) { + /*if(lastCleanup + 45 < System.currentTimeMillis()) { cleanup(this.subscribers); lastCleanup = System.currentTimeMillis(); - } + }*/ return fairTransfer(this.subscribers, power); } @@ -145,6 +145,8 @@ public class PowerNet implements IPowerNet { if(subscribers.isEmpty()) return power; + cleanup(subscribers); + ConnectionPriority[] priorities = new ConnectionPriority[] {ConnectionPriority.HIGH, ConnectionPriority.NORMAL, ConnectionPriority.LOW}; for(ConnectionPriority p : priorities) { diff --git a/src/main/java/com/hbm/blocks/BlockDummyable.java b/src/main/java/com/hbm/blocks/BlockDummyable.java index cf87af23a..3b78e324a 100644 --- a/src/main/java/com/hbm/blocks/BlockDummyable.java +++ b/src/main/java/com/hbm/blocks/BlockDummyable.java @@ -19,7 +19,6 @@ import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.item.EntityItem; import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.init.Blocks; import net.minecraft.inventory.ISidedInventory; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; diff --git a/src/main/java/com/hbm/blocks/ModBlocks.java b/src/main/java/com/hbm/blocks/ModBlocks.java index b16149590..c2530d793 100644 --- a/src/main/java/com/hbm/blocks/ModBlocks.java +++ b/src/main/java/com/hbm/blocks/ModBlocks.java @@ -1140,6 +1140,7 @@ public class ModBlocks { public static final int guiID_brandon = 122; public static Block turret_arty; public static Block turret_himars; + public static Block turret_sentry; public static Block rbmk_rod; public static Block rbmk_rod_mod; @@ -2152,18 +2153,19 @@ public class ModBlocks { sat_dock = new MachineSatDock(Material.iron).setBlockName("sat_dock").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.missileTab).setBlockTextureName(RefStrings.MODID + ":sat_dock"); soyuz_capsule = new SoyuzCapsule(Material.iron).setBlockName("soyuz_capsule").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.missileTab).setBlockTextureName(RefStrings.MODID + ":soyuz_capsule"); - turret_chekhov = new TurretChekhov(Material.iron).setBlockName("turret_chekhov").setHardness(5.0F).setResistance(600.0F).setCreativeTab(MainRegistry.weaponTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); + turret_chekhov = new TurretChekhov(Material.iron).setBlockName("turret_chekhov").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.weaponTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); turret_friendly = new TurretFriendly(Material.iron).setBlockName("turret_friendly").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.weaponTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); turret_jeremy = new TurretJeremy(Material.iron).setBlockName("turret_jeremy").setHardness(5.0F).setResistance(600.0F).setCreativeTab(MainRegistry.weaponTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); - turret_tauon = new TurretTauon(Material.iron).setBlockName("turret_tauon").setHardness(5.0F).setResistance(600.0F).setCreativeTab(MainRegistry.weaponTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); + turret_tauon = new TurretTauon(Material.iron).setBlockName("turret_tauon").setHardness(5.0F).setResistance(60.0F).setCreativeTab(MainRegistry.weaponTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); turret_richard = new TurretRichard(Material.iron).setBlockName("turret_richard").setHardness(5.0F).setResistance(600.0F).setCreativeTab(MainRegistry.weaponTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); - turret_howard = new TurretHoward(Material.iron).setBlockName("turret_howard").setHardness(5.0F).setResistance(600.0F).setCreativeTab(MainRegistry.weaponTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); + turret_howard = new TurretHoward(Material.iron).setBlockName("turret_howard").setHardness(5.0F).setResistance(60.0F).setCreativeTab(MainRegistry.weaponTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); turret_howard_damaged = new TurretHowardDamaged(Material.iron).setBlockName("turret_howard_damaged").setHardness(5.0F).setResistance(600.0F).setCreativeTab(MainRegistry.weaponTab).setBlockTextureName(RefStrings.MODID + ":block_rust"); - turret_maxwell = new TurretMaxwell(Material.iron).setBlockName("turret_maxwell").setHardness(5.0F).setResistance(600.0F).setCreativeTab(MainRegistry.weaponTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); - turret_fritz = new TurretFritz(Material.iron).setBlockName("turret_fritz").setHardness(5.0F).setResistance(600.0F).setCreativeTab(MainRegistry.weaponTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); + turret_maxwell = new TurretMaxwell(Material.iron).setBlockName("turret_maxwell").setHardness(5.0F).setResistance(60.0F).setCreativeTab(MainRegistry.weaponTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); + turret_fritz = new TurretFritz(Material.iron).setBlockName("turret_fritz").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.weaponTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); turret_brandon = new TurretBrandon(Material.iron).setBlockName("turret_brandon").setHardness(5.0F).setResistance(600.0F).setCreativeTab(MainRegistry.weaponTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); turret_arty = new TurretArty(Material.iron).setBlockName("turret_arty").setHardness(5.0F).setResistance(600.0F).setCreativeTab(MainRegistry.weaponTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); turret_himars = new TurretHIMARS(Material.iron).setBlockName("turret_himars").setHardness(5.0F).setResistance(600.0F).setCreativeTab(MainRegistry.weaponTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); + turret_sentry = new TurretSentry().setBlockName("turret_sentry").setHardness(5.0F).setResistance(5.0F).setCreativeTab(MainRegistry.weaponTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); rbmk_rod = new RBMKRod(false).setBlockName("rbmk_rod").setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":rbmk/rbmk_element"); rbmk_rod_mod = new RBMKRod(true).setBlockName("rbmk_rod_mod").setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":rbmk/rbmk_element_mod"); @@ -2234,7 +2236,7 @@ public class ModBlocks { barricade = new BlockNoDrop(Material.sand).setBlockName("barricade").setHardness(1.0F).setResistance(2.5F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":barricade"); machine_assembler = new MachineAssembler(Material.iron).setBlockName("machine_assembler").setHardness(5.0F).setResistance(30.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":machine_assembler"); machine_assemfac = new MachineAssemfac(Material.iron).setBlockName("machine_assemfac").setHardness(5.0F).setResistance(30.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); - machine_chemplant = new MachineChemplant(Material.iron).setBlockName("machine_chemplant").setHardness(5.0F).setResistance(30.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":machine_chemplant"); + machine_chemplant = new MachineChemplant(Material.iron).setBlockName("machine_chemplant").setHardness(5.0F).setResistance(30.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); machine_chemfac = new MachineChemfac(Material.iron).setBlockName("machine_chemfac").setHardness(5.0F).setResistance(30.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); machine_mixer = new MachineMixer(Material.iron).setBlockName("machine_mixer").setHardness(5.0F).setResistance(30.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); machine_fluidtank = new MachineFluidTank(Material.iron).setBlockName("machine_fluidtank").setHardness(5.0F).setResistance(20.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":machine_fluidtank"); @@ -2938,6 +2940,7 @@ public class ModBlocks { GameRegistry.registerBlock(turret_brandon, turret_brandon.getUnlocalizedName()); GameRegistry.registerBlock(turret_arty, turret_arty.getUnlocalizedName()); GameRegistry.registerBlock(turret_himars, turret_himars.getUnlocalizedName()); + GameRegistry.registerBlock(turret_sentry, turret_sentry.getUnlocalizedName()); //Wall-mounted Explosives GameRegistry.registerBlock(charge_dynamite, ItemBlockBase.class, charge_dynamite.getUnlocalizedName()); diff --git a/src/main/java/com/hbm/blocks/turret/TurretSentry.java b/src/main/java/com/hbm/blocks/turret/TurretSentry.java new file mode 100644 index 000000000..ecf9fe180 --- /dev/null +++ b/src/main/java/com/hbm/blocks/turret/TurretSentry.java @@ -0,0 +1,102 @@ +package com.hbm.blocks.turret; + +import java.util.Random; + +import com.hbm.main.MainRegistry; +import com.hbm.tileentity.turret.TileEntityTurretSentry; + +import cpw.mods.fml.common.network.internal.FMLNetworkHandler; +import net.minecraft.block.Block; +import net.minecraft.block.BlockContainer; +import net.minecraft.block.material.Material; +import net.minecraft.entity.item.EntityItem; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.world.World; + +public class TurretSentry extends BlockContainer { + + public TurretSentry() { + super(Material.iron); + } + + @Override + public TileEntity createNewTileEntity(World world, int meta) { + return new TileEntityTurretSentry(); + } + + @Override + public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) { + + if(world.isRemote) { + return true; + } else if(!player.isSneaking()) { + FMLNetworkHandler.openGui(player, MainRegistry.instance, 0, world, x, y, z); + return true; + } else { + return true; + } + } + + @Override + public int getRenderType() { + return -1; + } + + @Override + public boolean isOpaqueCube() { + return false; + } + + @Override + public boolean renderAsNormalBlock() { + return false; + } + + Random rand = new Random(); + + @Override + public void breakBlock(World world, int x, int y, int z, Block b, int meta) { + + TileEntityTurretSentry sentry = (TileEntityTurretSentry) world.getTileEntity(x, y, z); + + if(sentry != null) { + for(int i = 0; i < sentry.getSizeInventory(); ++i) { + ItemStack itemstack = sentry.getStackInSlot(i); + + if(itemstack != null) { + float oX = this.rand.nextFloat() * 0.8F + 0.1F; + float oY = this.rand.nextFloat() * 0.8F + 0.1F; + float oZ = this.rand.nextFloat() * 0.8F + 0.1F; + + while(itemstack.stackSize > 0) { + int toDrop = this.rand.nextInt(21) + 10; + + if(toDrop > itemstack.stackSize) { + toDrop = itemstack.stackSize; + } + + itemstack.stackSize -= toDrop; + EntityItem entityitem = new EntityItem(world, x + oX, y + oY, z + oZ, new ItemStack(itemstack.getItem(), toDrop, itemstack.getItemDamage())); + + if(itemstack.hasTagCompound()) { + entityitem.getEntityItem().setTagCompound((NBTTagCompound) itemstack.getTagCompound().copy()); + } + + float jump = 0.05F; + entityitem.motionX = (float) this.rand.nextGaussian() * jump; + entityitem.motionY = (float) this.rand.nextGaussian() * jump + 0.2F; + entityitem.motionZ = (float) this.rand.nextGaussian() * jump; + world.spawnEntityInWorld(entityitem); + } + } + } + + world.func_147453_f(x, y, z, b); + } + + super.breakBlock(world, x, y, z, b, meta); + } +} diff --git a/src/main/java/com/hbm/crafting/WeaponRecipes.java b/src/main/java/com/hbm/crafting/WeaponRecipes.java index 2d07a2e95..e07b5b2b3 100644 --- a/src/main/java/com/hbm/crafting/WeaponRecipes.java +++ b/src/main/java/com/hbm/crafting/WeaponRecipes.java @@ -63,6 +63,9 @@ public class WeaponRecipes { CraftingManager.addRecipeAuto(new ItemStack(ModItems.mp_chip_4, 1), new Object[] { "P", "C", "S", 'P', ModItems.plate_polymer, 'C', ModItems.circuit_targeting_tier4, 'S', ModBlocks.steel_scaffold }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.mp_chip_5, 1), new Object[] { "P", "C", "S", 'P', ModItems.plate_polymer, 'C', ModItems.circuit_targeting_tier5, 'S', ModBlocks.steel_scaffold }); + //Turrets + CraftingManager.addRecipeAuto(new ItemStack(ModBlocks.turret_sentry, 1), new Object[] { "PPL", " MD", " SC", 'P', STEEL.plate(), 'M', ModItems.motor, 'L', ModItems.mechanism_rifle_1, 'S', ModBlocks.steel_scaffold, 'C', ModItems.circuit_red_copper, 'D', ModItems.crt_display }); + //Guns CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_rpg, 1), new Object[] { "SSW", " MW", 'S', ModItems.hull_small_steel, 'W', IRON.plate(), 'M', ModItems.mechanism_launcher_1 }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_panzerschreck, 1), new Object[] { "SSS", " MW", 'S', ModItems.hull_small_steel, 'W', CU.plate(), 'M', ModItems.mechanism_launcher_1 }); diff --git a/src/main/java/com/hbm/creativetabs/NukeTab.java b/src/main/java/com/hbm/creativetabs/NukeTab.java index dc7af22cb..ee0f5d7cf 100644 --- a/src/main/java/com/hbm/creativetabs/NukeTab.java +++ b/src/main/java/com/hbm/creativetabs/NukeTab.java @@ -15,11 +15,7 @@ public class NukeTab extends CreativeTabs { @Override public Item getTabIconItem() { - if(ModBlocks.float_bomb != null) - { - return Item.getItemFromBlock(ModBlocks.float_bomb); - } - + if(ModBlocks.nuke_man != null) return Item.getItemFromBlock(ModBlocks.nuke_man); return Items.iron_pickaxe; } diff --git a/src/main/java/com/hbm/entity/mob/EntityMaskMan.java b/src/main/java/com/hbm/entity/mob/EntityMaskMan.java index b8ab2d9c4..558b2ef21 100644 --- a/src/main/java/com/hbm/entity/mob/EntityMaskMan.java +++ b/src/main/java/com/hbm/entity/mob/EntityMaskMan.java @@ -7,6 +7,7 @@ import com.hbm.entity.mob.ai.EntityAIMaskmanLasergun; import com.hbm.entity.mob.ai.EntityAIMaskmanMinigun; import com.hbm.items.ModItems; import com.hbm.main.MainRegistry; +import com.hbm.util.ArmorUtil; import api.hbm.entity.IRadiationImmune; import net.minecraft.entity.SharedMonsterAttributes; @@ -21,6 +22,7 @@ import net.minecraft.entity.monster.EntityMob; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.projectile.EntityEgg; import net.minecraft.init.Items; +import net.minecraft.item.ItemStack; import net.minecraft.util.DamageSource; import net.minecraft.util.EntityDamageSourceIndirect; import net.minecraft.world.World; @@ -118,8 +120,12 @@ public class EntityMaskMan extends EntityMob implements IBossDisplayData, IRadia protected void dropFewItems(boolean bool, int i) { if(!worldObj.isRemote) { + + ItemStack mask = new ItemStack(ModItems.gas_mask_m65); + ArmorUtil.installGasMaskFilter(mask, new ItemStack(ModItems.gas_mask_filter_combo)); + + this.entityDropItem(mask, 0F); this.dropItem(ModItems.coin_maskman, 1); - this.dropItem(ModItems.gas_mask_m65, 1); this.dropItem(ModItems.v1, 1); this.dropItem(Items.skull, 1); } diff --git a/src/main/java/com/hbm/handler/HazmatRegistry.java b/src/main/java/com/hbm/handler/HazmatRegistry.java index 7e4e2c4d6..1d48da6e8 100644 --- a/src/main/java/com/hbm/handler/HazmatRegistry.java +++ b/src/main/java/com/hbm/handler/HazmatRegistry.java @@ -1,10 +1,21 @@ package com.hbm.handler; +import java.io.File; +import java.io.FileReader; +import java.io.FileWriter; +import java.io.IOException; import java.util.HashMap; +import java.util.Map.Entry; +import com.google.gson.Gson; +import com.google.gson.JsonArray; +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import com.google.gson.stream.JsonWriter; import com.hbm.items.ModItems; import com.hbm.items.armor.ItemModCladding; import com.hbm.lib.Library; +import com.hbm.main.MainRegistry; import com.hbm.potion.HbmPotion; import com.hbm.util.Compat; @@ -15,7 +26,7 @@ import net.minecraft.item.ItemStack; public class HazmatRegistry { - public static void registerHazmats() { + public static void initDefault() { //assuming coefficient of 10 //real coefficient turned out to be 5 @@ -249,4 +260,80 @@ public class HazmatRegistry { } + public static final Gson gson = new Gson(); + public static void registerHazmats() { + File folder = MainRegistry.configHbmDir; + + File config = new File(folder.getAbsolutePath() + File.separatorChar + "hbmRadResist.json"); + File template = new File(folder.getAbsolutePath() + File.separatorChar + "_hbmRadResist.json"); + + initDefault(); + + if(!config.exists()) { + writeDefault(template); + } else { + HashMap conf = readConfig(config); + + if(conf != null) { + entries.clear(); + entries.putAll(conf); + } + } + } + + private static void writeDefault(File file) { + + try { + JsonWriter writer = new JsonWriter(new FileWriter(file)); + writer.setIndent(" "); //pretty formatting + writer.beginObject(); //initial '{' + writer.name("comment").value("Template file, remove the underscore ('_') from the name to enable the config."); + writer.name("entries").beginArray(); //all recipes are stored in an array called "entries" + + for(Entry entry : entries.entrySet()) { + writer.beginObject(); //begin object for a single recipe + writer.name("item").value(Item.itemRegistry.getNameForObject(entry.getKey())); + writer.name("resistance").value(entry.getValue()); + writer.endObject(); //end recipe object + } + + writer.endArray(); //end recipe array + writer.endObject(); //final '}' + writer.close(); + } catch(IOException e) { + e.printStackTrace(); + } + } + + private static HashMap readConfig(File config) { + + try { + JsonObject json = gson.fromJson(new FileReader(config), JsonObject.class); + JsonArray array = json.get("entries").getAsJsonArray(); + HashMap conf = new HashMap(); + + for(JsonElement element : array) { + JsonObject object = (JsonObject) element; + + try { + String name = object.get("item").getAsString(); + Item item = (Item) Item.itemRegistry.getObject(name); + double resistance = object.get("resistance").getAsDouble(); + if(item != null) { + conf.put(item, resistance); + } else { + MainRegistry.logger.error("Tried loading unknown item " + name + " for hazmat entry."); + } + } catch(Exception ex) { + MainRegistry.logger.error("Encountered " + ex + " trying to read hazmat entry " + element.toString()); + } + } + return conf; + + } catch(Exception ex) { + ex.printStackTrace(); + } + + return null; + } } diff --git a/src/main/java/com/hbm/handler/ToolAbility.java b/src/main/java/com/hbm/handler/ToolAbility.java index 60bdb43d5..6710a7af3 100644 --- a/src/main/java/com/hbm/handler/ToolAbility.java +++ b/src/main/java/com/hbm/handler/ToolAbility.java @@ -11,6 +11,7 @@ import com.hbm.explosion.ExplosionNT; import com.hbm.explosion.ExplosionNT.ExAttrib; import com.hbm.inventory.recipes.CentrifugeRecipes; import com.hbm.inventory.recipes.CrystallizerRecipes; +import com.hbm.inventory.recipes.CrystallizerRecipes.CrystallizerRecipe; import com.hbm.inventory.recipes.ShredderRecipes; import com.hbm.items.ModItems; import com.hbm.items.tool.IItemAbility; @@ -439,11 +440,11 @@ public abstract class ToolAbility { block = Blocks.redstone_ore; ItemStack stack = new ItemStack(block, 1, meta); - ItemStack result = CrystallizerRecipes.getOutput(stack); + CrystallizerRecipe result = CrystallizerRecipes.getOutput(stack); if(result != null) { world.setBlockToAir(x, y, z); - world.spawnEntityInWorld(new EntityItem(world, x + 0.5, y + 0.5, z + 0.5, result.copy())); + world.spawnEntityInWorld(new EntityItem(world, x + 0.5, y + 0.5, z + 0.5, result.output.copy())); player.getHeldItem().damageItem(1, player); } diff --git a/src/main/java/com/hbm/handler/imc/IMCCrystallizer.java b/src/main/java/com/hbm/handler/imc/IMCCrystallizer.java index be7f19592..b96155dea 100644 --- a/src/main/java/com/hbm/handler/imc/IMCCrystallizer.java +++ b/src/main/java/com/hbm/handler/imc/IMCCrystallizer.java @@ -2,7 +2,10 @@ package com.hbm.handler.imc; import java.util.HashMap; +import com.hbm.inventory.FluidStack; import com.hbm.inventory.RecipesCommon; +import com.hbm.inventory.fluid.Fluids; +import com.hbm.inventory.recipes.CrystallizerRecipes.CrystallizerRecipe; import cpw.mods.fml.common.event.FMLInterModComms.IMCMessage; import net.minecraft.item.ItemStack; @@ -10,7 +13,7 @@ import net.minecraft.nbt.NBTTagCompound; public class IMCCrystallizer extends IMCHandler { - public static HashMap buffer = new HashMap(); + public static HashMap buffer = new HashMap(); @Override public void process(IMCMessage message) { @@ -28,13 +31,24 @@ public class IMCCrystallizer extends IMCHandler { NBTTagCompound input = data.getCompoundTag("input"); ItemStack in = ItemStack.loadItemStackFromNBT(input); + int time = data.getInteger("duration"); + FluidStack acid = new FluidStack(Fluids.fromID(data.getInteger("acid")), data.getInteger("amount")); + + if(time <= 0) + time = 600; + + if(acid.type == Fluids.NONE) + acid = new FluidStack(Fluids.ACID, 500); + + CrystallizerRecipe recipe = new CrystallizerRecipe(out, time, acid); + if(in != null) { - buffer.put(new RecipesCommon.ComparableStack(in), out); + buffer.put(new RecipesCommon.ComparableStack(in), recipe); } else { String dict = data.getString("oredict"); if(!dict.isEmpty()) { - buffer.put(dict, out); + buffer.put(dict, recipe); } else { this.printError(message, "Input stack could not be read!"); } diff --git a/src/main/java/com/hbm/handler/imc/package-info.java b/src/main/java/com/hbm/handler/imc/package-info.java index 996427811..c12f23192 100644 --- a/src/main/java/com/hbm/handler/imc/package-info.java +++ b/src/main/java/com/hbm/handler/imc/package-info.java @@ -20,9 +20,14 @@ package com.hbm.handler.imc; - Set another tag compound like the output called "output". This will make the input a fixed item. - Set a string called "oredict". This will make the input an ore dict entry and allow processing of genericized items. + [OPTIONAL] + The input has a few parameters that can be added: + - Setting an integer "acid" will change the acid requirement to the fluid with that ID, in this case "amount" also has to be set to determine the fluid amount in mB. The default uses 500mB of hydrogen peroxide. + - Setting an integer "duration" will change the base process time of this recipe in ticks, the default is 600 (30s). + EXAMPLES: - Recipe with fixed item, acidizing an alloy chestplate into 8 ingots: + Recipe with fixed item, acidizing an alloy chestplate into 8 ingots, taking 500 ticks and using 50mB of steam: NBTTagCompound msg0 = new NBTTagCompound(); NBTTagCompound ing0 = new NBTTagCompound(); new ItemStack(ModItems.alloy_plate).writeToNBT(ing0); @@ -30,9 +35,12 @@ package com.hbm.handler.imc; NBTTagCompound out0 = new NBTTagCompound(); new ItemStack(ModItems.ingot_advanced_alloy, 8).writeToNBT(out0); msg0.setTag("output", out0); + msg0.setInteger("acid", 2); + msg0.setInteger("amount", 50); + msg0.setInteger("duration", 500); FMLInterModComms.sendMessage("hbm", "crystallizer", msg0); - Recipe with an ore dict item, acidizing all "plateSteel" into a steel ingot: + Recipe with an ore dict item, acidizing all "plateSteel" into a steel ingot, with all optional values omitted: NBTTagCompound msg1 = new NBTTagCompound(); msg1.setString("oredict", "plateSteel"); NBTTagCompound out1 = new NBTTagCompound(); diff --git a/src/main/java/com/hbm/handler/nei/CrystallizerRecipeHandler.java b/src/main/java/com/hbm/handler/nei/CrystallizerRecipeHandler.java index 7785087e0..a3789f8cd 100644 --- a/src/main/java/com/hbm/handler/nei/CrystallizerRecipeHandler.java +++ b/src/main/java/com/hbm/handler/nei/CrystallizerRecipeHandler.java @@ -1,191 +1,27 @@ package com.hbm.handler.nei; import java.awt.Rectangle; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; -import java.util.Map; -import com.hbm.inventory.fluid.Fluids; +import com.hbm.blocks.ModBlocks; import com.hbm.inventory.gui.GUICrystallizer; import com.hbm.inventory.recipes.CrystallizerRecipes; -import com.hbm.inventory.recipes.MachineRecipes; -import com.hbm.items.ModItems; -import com.hbm.items.machine.ItemFluidIcon; -import com.hbm.tileentity.machine.TileEntityMachineCrystallizer; -import codechicken.nei.NEIServerUtils; -import codechicken.nei.PositionedStack; -import codechicken.nei.recipe.TemplateRecipeHandler; -import net.minecraft.client.gui.inventory.GuiContainer; -import net.minecraft.item.ItemStack; +public class CrystallizerRecipeHandler extends NEIUniversalHandler { -public class CrystallizerRecipeHandler extends TemplateRecipeHandler { - - public static ArrayList batteries; - - public class RecipeSet extends TemplateRecipeHandler.CachedRecipe { - PositionedStack input; - PositionedStack acid; - PositionedStack result; - - public RecipeSet(Object input, ItemStack result) { - this.input = new PositionedStack(input, 75, 24); - this.acid = new PositionedStack(ItemFluidIcon.addQuantity(new ItemStack(ModItems.fluid_icon, 1, Fluids.ACID.getID()), TileEntityMachineCrystallizer.acidRequired), 39, 24); - this.result = new PositionedStack(result, 135, 24); - } - - @Override - public List getIngredients() { - return getCycledIngredients(cycleticks / 48, Arrays.asList(input, acid)); - } - - @Override - public PositionedStack getOtherStack() { - return batteries.get((cycleticks / 48) % batteries.size()).stack; - } - - @Override - public PositionedStack getResult() { - return result; - } - } - - public static class Fuel { - public Fuel(ItemStack ingred) { - - this.stack = new PositionedStack(ingred, 3, 42, false); - } - - public PositionedStack stack; - } - - @Override - public String getRecipeName() { - return "Ore Acidizer"; + public CrystallizerRecipeHandler() { + super("Acidizer", ModBlocks.machine_crystallizer, CrystallizerRecipes.getRecipes()); } @Override - public String getGuiTexture() { - return GUICrystallizer.texture.toString(); + public String getKey() { + return "ntmCrystallizer"; } - @Override - public void loadCraftingRecipes(String outputId, Object... results) { - - if ((outputId.equals("hbm_crystallizer")) && getClass() == CrystallizerRecipeHandler.class) { - - Map recipes = CrystallizerRecipes.getRecipes(); - - for (Map.Entry recipe : recipes.entrySet()) { - - if(recipe.getKey() instanceof ItemStack && ((ItemStack)recipe.getKey()).getItem() == ModItems.scrap_plastic) - continue; - - this.arecipes.add(new RecipeSet(recipe.getKey(), (ItemStack)recipe.getValue())); - } - - } else { - super.loadCraftingRecipes(outputId, results); - } - } - - @Override - public void loadCraftingRecipes(ItemStack result) { - - Map recipes = CrystallizerRecipes.getRecipes(); - - for (Map.Entry recipe : recipes.entrySet()) { - - if(NEIServerUtils.areStacksSameTypeCrafting((ItemStack)recipe.getValue(), result)) { - - if(recipe.getKey() instanceof ItemStack && ((ItemStack)recipe.getKey()).getItem() == ModItems.scrap_plastic) - continue; - - this.arecipes.add(new RecipeSet(recipe.getKey(), (ItemStack)recipe.getValue())); - } - } - } - - @Override - public void loadUsageRecipes(String inputId, Object... ingredients) { - - if ((inputId.equals("hbm_crystallizer")) && getClass() == CrystallizerRecipeHandler.class) { - - loadCraftingRecipes("hbm_crystallizer", new Object[0]); - - } else { - super.loadUsageRecipes(inputId, ingredients); - } - } - - @Override - public void loadUsageRecipes(ItemStack ingredient) { - - if(ingredient.getItem() == ModItems.scrap_plastic) - return; - - Map recipes = CrystallizerRecipes.getRecipes(); - - for (Map.Entry recipe : recipes.entrySet()) { - - if(NEIServerUtils.areStacksSameTypeCrafting(ingredient, ItemFluidIcon.addQuantity( - new ItemStack(ModItems.fluid_icon, 1, Fluids.ACID.getID()), TileEntityMachineCrystallizer.acidRequired))) { - - if(recipe.getKey() instanceof ItemStack) { - this.arecipes.add(new RecipeSet(recipe.getKey(), (ItemStack)recipe.getValue())); - - } else if (recipe.getKey() instanceof ArrayList) { - for(Object o : (ArrayList)recipe.getKey()) { - ItemStack stack = (ItemStack)o; - this.arecipes.add(new RecipeSet(stack, (ItemStack) recipe.getValue())); - } - } - - } else if(recipe.getKey() instanceof ItemStack) { - - if (NEIServerUtils.areStacksSameTypeCrafting(ingredient, (ItemStack)recipe.getKey())) - this.arecipes.add(new RecipeSet(recipe.getKey(), (ItemStack)recipe.getValue())); - - } else if (recipe.getKey() instanceof ArrayList) { - - for(Object o : (ArrayList)recipe.getKey()) { - ItemStack stack = (ItemStack)o; - - if (NEIServerUtils.areStacksSameTypeCrafting(ingredient, stack)) - this.arecipes.add(new RecipeSet(stack, (ItemStack) recipe.getValue())); - } - } - } - } - - @Override - public Class getGuiClass() { - return GUICrystallizer.class; - } - @Override public void loadTransferRects() { - transferRects.add(new RecipeTransferRect(new Rectangle(104 - 5, 34 - 11, 24, 18), "hbm_crystallizer")); + super.loadTransferRects(); + transferRectsGui.add(new RecipeTransferRect(new Rectangle(80 - 5, 47 - 11, 27, 12), "ntmCrystallizer")); + guiGui.add(GUICrystallizer.class); + RecipeTransferRectHandler.registerRectsToGuis(guiGui, transferRectsGui); } - - @Override - public void drawExtras(int recipe) { - - drawProgressBar(99, 23, 192, 0, 22, 16, 600, 0); - drawProgressBar(3, 6, 176, 0, 16, 34, 60, 7); - } - - @Override - public TemplateRecipeHandler newInstance() { - - if(batteries == null) - batteries = new ArrayList(); - - for(ItemStack i : MachineRecipes.instance().getBatteries()) { - batteries.add(new Fuel(i)); - } - return super.newInstance(); - } - } diff --git a/src/main/java/com/hbm/inventory/container/ContainerCrystallizer.java b/src/main/java/com/hbm/inventory/container/ContainerCrystallizer.java index 07a2d03cb..61196d62a 100644 --- a/src/main/java/com/hbm/inventory/container/ContainerCrystallizer.java +++ b/src/main/java/com/hbm/inventory/container/ContainerCrystallizer.java @@ -2,8 +2,10 @@ package com.hbm.inventory.container; import com.hbm.inventory.SlotMachineOutput; import com.hbm.inventory.SlotUpgrade; +import com.hbm.items.machine.IItemFluidIdentifier; import com.hbm.tileentity.machine.TileEntityMachineCrystallizer; +import api.hbm.energy.IBatteryItem; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.InventoryPlayer; import net.minecraft.inventory.Container; @@ -29,15 +31,17 @@ public class ContainerCrystallizer extends Container { //Upgrades this.addSlotToContainer(new SlotUpgrade(tedf, 5, 80, 18)); this.addSlotToContainer(new SlotUpgrade(tedf, 6, 98, 18)); + //Fluid ID + this.addSlotToContainer(new Slot(tedf, 7, 35, 72)); for(int i = 0; i < 3; i++) { for(int j = 0; j < 9; j++) { - this.addSlotToContainer(new Slot(invPlayer, j + i * 9 + 9, 8 + j * 18, 84 + i * 18)); + this.addSlotToContainer(new Slot(invPlayer, j + i * 9 + 9, 8 + j * 18, 122 + i * 18)); } } for(int i = 0; i < 9; i++) { - this.addSlotToContainer(new Slot(invPlayer, i, 8 + i * 18, 142)); + this.addSlotToContainer(new Slot(invPlayer, i, 8 + i * 18, 180)); } } @@ -56,11 +60,20 @@ public class ContainerCrystallizer extends Container { return null; } } else { - - if(!this.mergeItemStack(var5, 0, 2, false)) - if(!this.mergeItemStack(var5, 3, 4, false)) - if(!this.mergeItemStack(var5, 5, 7, false)) - return null; + + if(var3.getItem() instanceof IBatteryItem) { + if(!this.mergeItemStack(var5, 1, 2, false)) { + return null; + } + } else if(var3.getItem() instanceof IItemFluidIdentifier) { + if(!this.mergeItemStack(var5, 7, 8, false)) { + return null; + } + } else { + if(!this.mergeItemStack(var5, 0, 1, false)) { + return null; + } + } } if(var5.stackSize == 0) { diff --git a/src/main/java/com/hbm/inventory/gui/GUICrystallizer.java b/src/main/java/com/hbm/inventory/gui/GUICrystallizer.java index 020eb1bef..5794c5382 100644 --- a/src/main/java/com/hbm/inventory/gui/GUICrystallizer.java +++ b/src/main/java/com/hbm/inventory/gui/GUICrystallizer.java @@ -29,7 +29,7 @@ public class GUICrystallizer extends GuiInfoContainer { public void drawScreen(int mouseX, int mouseY, float f) { super.drawScreen(mouseX, mouseY, f); - this.drawElectricityInfo(this, mouseX, mouseY, guiLeft + 152, guiTop + 18, 16, 34, acidomatic.power, acidomatic.maxPower); + this.drawElectricityInfo(this, mouseX, mouseY, guiLeft + 152, guiTop + 18, 16, 52, acidomatic.power, acidomatic.maxPower); acidomatic.tank.renderTankInfo(this, mouseX, mouseY, guiLeft + 35, guiTop + 18, 16, 52); String[] upgradeText = new String[4]; diff --git a/src/main/java/com/hbm/inventory/gui/GUITurretSentry.java b/src/main/java/com/hbm/inventory/gui/GUITurretSentry.java new file mode 100644 index 000000000..f2188952e --- /dev/null +++ b/src/main/java/com/hbm/inventory/gui/GUITurretSentry.java @@ -0,0 +1,20 @@ +package com.hbm.inventory.gui; + +import com.hbm.lib.RefStrings; +import com.hbm.tileentity.turret.TileEntityTurretBaseNT; + +import net.minecraft.entity.player.InventoryPlayer; +import net.minecraft.util.ResourceLocation; + +public class GUITurretSentry extends GUITurretBase { + + private static ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/weapon/gui_turret_sentry.png"); + + public GUITurretSentry(InventoryPlayer invPlayer, TileEntityTurretBaseNT tedf) { + super(invPlayer, tedf); + } + + protected ResourceLocation getTexture() { + return texture; + } +} diff --git a/src/main/java/com/hbm/inventory/recipes/CentrifugeRecipes.java b/src/main/java/com/hbm/inventory/recipes/CentrifugeRecipes.java index bdf747ca5..67a0a2113 100644 --- a/src/main/java/com/hbm/inventory/recipes/CentrifugeRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/CentrifugeRecipes.java @@ -448,6 +448,6 @@ public class CentrifugeRecipes extends SerializableRecipe { @Override public String getComment() { - return "Outputs have to be an array of four item stacks. The centrifuge can't handle recipes with a smaller output as of now."; + return "Outputs have to be an array of up to four item stacks. Fewer aren't used by default recipes, but should work anyway."; } } diff --git a/src/main/java/com/hbm/inventory/recipes/CrystallizerRecipes.java b/src/main/java/com/hbm/inventory/recipes/CrystallizerRecipes.java index a1280397d..af984ce03 100644 --- a/src/main/java/com/hbm/inventory/recipes/CrystallizerRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/CrystallizerRecipes.java @@ -2,7 +2,6 @@ package com.hbm.inventory.recipes; import java.util.HashMap; import java.util.List; -import java.util.Map; import java.util.Map.Entry; import static com.hbm.inventory.OreDictManager.*; @@ -10,13 +9,18 @@ import com.hbm.blocks.ModBlocks; import com.hbm.handler.imc.IMCCrystallizer; import com.hbm.inventory.FluidStack; import com.hbm.inventory.RecipesCommon.ComparableStack; +import com.hbm.inventory.RecipesCommon.OreDictStack; +import com.hbm.inventory.fluid.Fluids; import com.hbm.items.ModItems; +import com.hbm.items.machine.ItemFluidIcon; import com.hbm.items.special.ItemBedrockOre.EnumBedrockOre; import com.hbm.items.special.ItemPlasticScrap.ScrapType; import com.hbm.main.MainRegistry; +import net.minecraft.block.Block; import net.minecraft.init.Blocks; import net.minecraft.init.Items; +import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraftforge.oredict.OreDictionary; @@ -25,73 +29,76 @@ import net.minecraftforge.oredict.OreDictionary; public class CrystallizerRecipes { //'Object' is either a ComparableStack or the key for the ore dict - private static HashMap recipes = new HashMap(); + private static HashMap recipes = new HashMap(); public static void register() { - recipes.put(COAL.ore(), new ItemStack(ModItems.crystal_coal)); - recipes.put(IRON.ore(), new ItemStack(ModItems.crystal_iron)); - recipes.put(GOLD.ore(), new ItemStack(ModItems.crystal_gold)); - recipes.put(REDSTONE.ore(), new ItemStack(ModItems.crystal_redstone)); - recipes.put(LAPIS.ore(), new ItemStack(ModItems.crystal_lapis)); - recipes.put(DIAMOND.ore(), new ItemStack(ModItems.crystal_diamond)); - recipes.put(U.ore(), new ItemStack(ModItems.crystal_uranium)); - recipes.put(TH232.ore(), new ItemStack(ModItems.crystal_thorium)); - recipes.put(PU.ore(), new ItemStack(ModItems.crystal_plutonium)); - recipes.put(TI.ore(), new ItemStack(ModItems.crystal_titanium)); - recipes.put(S.ore(), new ItemStack(ModItems.crystal_sulfur)); - recipes.put(KNO.ore(), new ItemStack(ModItems.crystal_niter)); - recipes.put(CU.ore(), new ItemStack(ModItems.crystal_copper)); - recipes.put(W.ore(), new ItemStack(ModItems.crystal_tungsten)); - recipes.put(AL.ore(), new ItemStack(ModItems.crystal_aluminium)); - recipes.put(F.ore(), new ItemStack(ModItems.crystal_fluorite)); - recipes.put(BE.ore(), new ItemStack(ModItems.crystal_beryllium)); - recipes.put(PB.ore(), new ItemStack(ModItems.crystal_lead)); - recipes.put(SA326.ore(), new ItemStack(ModItems.crystal_schrabidium)); - recipes.put(LI.ore(), new ItemStack(ModItems.crystal_lithium)); - recipes.put(STAR.ore(), new ItemStack(ModItems.crystal_starmetal)); - recipes.put(CO.ore(), new ItemStack(ModItems.crystal_cobalt)); - - recipes.put("oreRareEarth", new ItemStack(ModItems.crystal_rare)); - recipes.put("oreCinnabar", new ItemStack(ModItems.crystal_cinnebar)); - - recipes.put(new ComparableStack(ModBlocks.ore_nether_fire), new ItemStack(ModItems.crystal_phosphorus)); - recipes.put(new ComparableStack(ModBlocks.ore_tikite), new ItemStack(ModItems.crystal_trixite)); - recipes.put(new ComparableStack(ModBlocks.gravel_diamond), new ItemStack(ModItems.crystal_diamond)); - recipes.put(SRN.ingot(), new ItemStack(ModItems.crystal_schraranium)); - - recipes.put("sand", new ItemStack(ModItems.ingot_fiberglass)); - recipes.put(REDSTONE.block(), new ItemStack(ModItems.ingot_mercury)); - recipes.put(CINNABAR.crystal(), new ItemStack(ModItems.ingot_mercury, 3)); - recipes.put(BORAX.dust(), new ItemStack(ModItems.powder_boron_tiny, 3)); - recipes.put(COAL.block(), new ItemStack(ModBlocks.block_graphite)); + int baseTime = 600; + int utilityTime = 100; + FluidStack sulfur = new FluidStack(Fluids.SULFURIC_ACID, 500); - recipes.put(new ComparableStack(Blocks.cobblestone), new ItemStack(ModBlocks.reinforced_stone)); - recipes.put(new ComparableStack(ModBlocks.gravel_obsidian), new ItemStack(ModBlocks.brick_obsidian)); - recipes.put(new ComparableStack(Items.rotten_flesh), new ItemStack(Items.leather)); - recipes.put(new ComparableStack(ModItems.coal_infernal), new ItemStack(ModItems.solid_fuel)); - recipes.put(new ComparableStack(ModBlocks.stone_gneiss), new ItemStack(ModItems.powder_lithium)); + registerRecipe(COAL.ore(), new CrystallizerRecipe(ModItems.crystal_coal, baseTime)); + registerRecipe(IRON.ore(), new CrystallizerRecipe(ModItems.crystal_iron, baseTime)); + registerRecipe(GOLD.ore(), new CrystallizerRecipe(ModItems.crystal_gold, baseTime)); + registerRecipe(REDSTONE.ore(), new CrystallizerRecipe(ModItems.crystal_redstone, baseTime)); + registerRecipe(LAPIS.ore(), new CrystallizerRecipe(ModItems.crystal_lapis, baseTime)); + registerRecipe(DIAMOND.ore(), new CrystallizerRecipe(ModItems.crystal_diamond, baseTime)); + registerRecipe(U.ore(), new CrystallizerRecipe(ModItems.crystal_uranium, baseTime, sulfur)); + registerRecipe(TH232.ore(), new CrystallizerRecipe(ModItems.crystal_thorium, baseTime, sulfur)); + registerRecipe(PU.ore(), new CrystallizerRecipe(ModItems.crystal_plutonium, baseTime, sulfur)); + registerRecipe(TI.ore(), new CrystallizerRecipe(ModItems.crystal_titanium, baseTime, sulfur)); + registerRecipe(S.ore(), new CrystallizerRecipe(ModItems.crystal_sulfur, baseTime)); + registerRecipe(KNO.ore(), new CrystallizerRecipe(ModItems.crystal_niter, baseTime)); + registerRecipe(CU.ore(), new CrystallizerRecipe(ModItems.crystal_copper, baseTime)); + registerRecipe(W.ore(), new CrystallizerRecipe(ModItems.crystal_tungsten, baseTime, sulfur)); + registerRecipe(AL.ore(), new CrystallizerRecipe(ModItems.crystal_aluminium, baseTime)); + registerRecipe(F.ore(), new CrystallizerRecipe(ModItems.crystal_fluorite, baseTime)); + registerRecipe(BE.ore(), new CrystallizerRecipe(ModItems.crystal_beryllium, baseTime)); + registerRecipe(PB.ore(), new CrystallizerRecipe(ModItems.crystal_lead, baseTime)); + registerRecipe(SA326.ore(), new CrystallizerRecipe(ModItems.crystal_schrabidium, baseTime, sulfur)); + registerRecipe(LI.ore(), new CrystallizerRecipe(ModItems.crystal_lithium, baseTime, sulfur)); + registerRecipe(STAR.ore(), new CrystallizerRecipe(ModItems.crystal_starmetal, baseTime, sulfur)); + registerRecipe(CO.ore(), new CrystallizerRecipe(ModItems.crystal_cobalt, baseTime, sulfur)); - recipes.put(DIAMOND.dust(), new ItemStack(Items.diamond)); - recipes.put(EMERALD.dust(), new ItemStack(Items.emerald)); - recipes.put(LAPIS.dust(), new ItemStack(Items.dye, 1, 4)); - recipes.put(new ComparableStack(ModItems.powder_semtex_mix), new ItemStack(ModItems.ingot_semtex)); - recipes.put(new ComparableStack(ModItems.powder_desh_ready), new ItemStack(ModItems.ingot_desh)); - recipes.put(new ComparableStack(ModItems.powder_meteorite), new ItemStack(ModItems.fragment_meteorite, 1)); + registerRecipe("oreRareEarth", new CrystallizerRecipe(ModItems.crystal_rare, baseTime, sulfur)); + registerRecipe("oreCinnabar", new CrystallizerRecipe(ModItems.crystal_cinnebar, baseTime)); - recipes.put(new ComparableStack(ModItems.meteorite_sword_treated), new ItemStack(ModItems.meteorite_sword_etched, 1)); + registerRecipe(new ComparableStack(ModBlocks.ore_nether_fire), new CrystallizerRecipe(ModItems.crystal_phosphorus, baseTime)); + 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)); - recipes.put(new ComparableStack(ModItems.powder_impure_osmiridium), new ItemStack(ModItems.crystal_osmiridium)); + registerRecipe("sand", new CrystallizerRecipe(ModItems.ingot_fiberglass, utilityTime)); + 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)); + registerRecipe(COAL.block(), new CrystallizerRecipe(ModBlocks.block_graphite, baseTime)); + + registerRecipe(new ComparableStack(Blocks.cobblestone), new CrystallizerRecipe(ModBlocks.reinforced_stone, utilityTime)); + registerRecipe(new ComparableStack(ModBlocks.gravel_obsidian), new CrystallizerRecipe(ModBlocks.brick_obsidian, utilityTime)); + registerRecipe(new ComparableStack(Items.rotten_flesh), new CrystallizerRecipe(Items.leather, utilityTime)); + registerRecipe(new ComparableStack(ModItems.coal_infernal), new CrystallizerRecipe(ModItems.solid_fuel, utilityTime)); + registerRecipe(new ComparableStack(ModBlocks.stone_gneiss), new CrystallizerRecipe(ModItems.powder_lithium, utilityTime)); + + registerRecipe(DIAMOND.dust(), new CrystallizerRecipe(Items.diamond, utilityTime)); + registerRecipe(EMERALD.dust(), new CrystallizerRecipe(Items.emerald, utilityTime)); + registerRecipe(LAPIS.dust(), new CrystallizerRecipe(new ItemStack(Items.dye, 1, 4), utilityTime)); + registerRecipe(new ComparableStack(ModItems.powder_semtex_mix), new CrystallizerRecipe(ModItems.ingot_semtex, baseTime)); + registerRecipe(new ComparableStack(ModItems.powder_desh_ready), new CrystallizerRecipe(ModItems.ingot_desh, baseTime)); + registerRecipe(new ComparableStack(ModItems.powder_meteorite), new CrystallizerRecipe(ModItems.fragment_meteorite, utilityTime)); + + registerRecipe(new ComparableStack(ModItems.meteorite_sword_treated), new CrystallizerRecipe(ModItems.meteorite_sword_etched, baseTime)); + registerRecipe(new ComparableStack(ModItems.powder_impure_osmiridium), new CrystallizerRecipe(ModItems.crystal_osmiridium, baseTime, new FluidStack(Fluids.SCHRABIDIC, 1_000))); for(int i = 0; i < ScrapType.values().length; i++) { - recipes.put(new ComparableStack(ModItems.scrap_plastic, 1, i), new ItemStack(ModItems.circuit_star_piece, 1, i)); + registerRecipe(new ComparableStack(ModItems.scrap_plastic, 1, i), new CrystallizerRecipe(new ItemStack(ModItems.circuit_star_piece, 1, i), baseTime)); } for(EnumBedrockOre ore : EnumBedrockOre.values()) { int i = ore.ordinal(); - recipes.put(new ComparableStack(ModItems.ore_centrifuged, 1, i), new ItemStack(ModItems.ore_cleaned, 1, i)); - recipes.put(new ComparableStack(ModItems.ore_separated, 1, i), new ItemStack(ModItems.ore_purified, 1, i)); + registerRecipe(new ComparableStack(ModItems.ore_centrifuged, 1, i), new CrystallizerRecipe(new ItemStack(ModItems.ore_cleaned, 1, i), baseTime, sulfur)); + registerRecipe(new ComparableStack(ModItems.ore_separated, 1, i), new CrystallizerRecipe(new ItemStack(ModItems.ore_purified, 1, i), baseTime)); } List quartz = OreDictionary.getOres("crystalCertusQuartz"); @@ -99,7 +106,7 @@ public class CrystallizerRecipes { if(quartz != null && !quartz.isEmpty()) { ItemStack qItem = quartz.get(0).copy(); qItem.stackSize = 12; - recipes.put("oreCertusQuartz", qItem); + registerRecipe("oreCertusQuartz", new CrystallizerRecipe(qItem, baseTime)); } if(!IMCCrystallizer.buffer.isEmpty()) { @@ -109,7 +116,7 @@ public class CrystallizerRecipes { } } - public static ItemStack getOutput(ItemStack stack) { + public static CrystallizerRecipe getOutput(ItemStack stack) { if(stack == null || stack.getItem() == null) return null; @@ -117,30 +124,34 @@ public class CrystallizerRecipes { ComparableStack comp = new ComparableStack(stack.getItem(), 1, stack.getItemDamage()); if(recipes.containsKey(comp)) - return recipes.get(comp).copy(); + return recipes.get(comp); String[] dictKeys = comp.getDictKeys(); for(String key : dictKeys) { if(recipes.containsKey(key)) - return recipes.get(key).copy(); + return recipes.get(key); } return null; } - public static Map getRecipes() { + public static HashMap getRecipes() { - Map recipes = new HashMap(); + HashMap recipes = new HashMap(); - for(Entry entry : CrystallizerRecipes.recipes.entrySet()) { + for(Entry entry : CrystallizerRecipes.recipes.entrySet()) { + + CrystallizerRecipe recipe = entry.getValue(); if(entry.getKey() instanceof String) { - List ingredients = OreDictionary.getOres((String)entry.getKey()); - recipes.put(ingredients, entry.getValue()); + OreDictStack stack = new OreDictStack((String) entry.getKey()); + recipes.put(new Object[] {ItemFluidIcon.make(recipe.acid), stack}, recipe.output); } else { - recipes.put(((ComparableStack)entry.getKey()).toStack(), entry.getValue()); + ComparableStack stack = (ComparableStack) entry.getKey(); + if(stack.item == ModItems.scrap_plastic) continue; + recipes.put(new Object[] {ItemFluidIcon.make(recipe.acid), stack}, recipe.output); } } @@ -148,19 +159,20 @@ public class CrystallizerRecipes { } // NYI - public void registerRecipe(Object input, CrystallizerRecipe recipe) { - //recipes.put(input, recipe); + public static void registerRecipe(Object input, CrystallizerRecipe recipe) { + recipes.put(input, recipe); } - // NYI public static class CrystallizerRecipe { public FluidStack acid; public int duration; public ItemStack output; - public CrystallizerRecipe(ItemStack output, int duration) { - this(output, duration, null); - } + public CrystallizerRecipe(Block output, int duration) { this(new ItemStack(output), duration, new FluidStack(Fluids.ACID, 500)); } + public CrystallizerRecipe(Item output, int duration) { this(new ItemStack(output), duration, new FluidStack(Fluids.ACID, 500)); } + public CrystallizerRecipe(ItemStack output, int duration) { this(output, duration, new FluidStack(Fluids.ACID, 500)); } + public CrystallizerRecipe(Block output, int duration, FluidStack acid) { this(new ItemStack(output), duration, acid); } + public CrystallizerRecipe(Item output, int duration, FluidStack acid) { this(new ItemStack(output), duration, acid); } public CrystallizerRecipe(ItemStack output, int duration, FluidStack acid) { this.output = output; diff --git a/src/main/java/com/hbm/inventory/recipes/loader/SerializableRecipe.java b/src/main/java/com/hbm/inventory/recipes/loader/SerializableRecipe.java index 4ef548a37..dd3de7222 100644 --- a/src/main/java/com/hbm/inventory/recipes/loader/SerializableRecipe.java +++ b/src/main/java/com/hbm/inventory/recipes/loader/SerializableRecipe.java @@ -60,6 +60,9 @@ public abstract class SerializableRecipe { } } + File info = new File(recDir.getAbsolutePath() + File.separatorChar + "REMOVE UNDERSCORE TO ENABLE RECIPE LOADING - RECIPES WILL RESET TO DEFAULT OTHERWISE"); + try { info.createNewFile(); } catch(IOException e) { } + MainRegistry.logger.info("Starting recipe init!"); for(SerializableRecipe recipe : recipeHandlers) { diff --git a/src/main/java/com/hbm/items/tool/ItemWandD.java b/src/main/java/com/hbm/items/tool/ItemWandD.java index 010561a30..e98c71ad1 100644 --- a/src/main/java/com/hbm/items/tool/ItemWandD.java +++ b/src/main/java/com/hbm/items/tool/ItemWandD.java @@ -4,6 +4,7 @@ import java.util.List; import com.hbm.blocks.ModBlocks; import com.hbm.blocks.generic.BlockBedrockOreTE.TileEntityBedrockOre; +import com.hbm.config.WorldConfig; import com.hbm.entity.effect.EntityNukeTorex; import com.hbm.entity.logic.EntityNukeExplosionMK5; import com.hbm.entity.logic.EntityTomBlast; @@ -14,9 +15,11 @@ import com.hbm.items.ModItems; import com.hbm.items.special.ItemBookLore; import com.hbm.items.special.ItemBookLore.BookLoreType; import com.hbm.items.special.ItemKitCustom; +import com.hbm.items.special.ItemBedrockOre.EnumBedrockOre; import com.hbm.lib.Library; import com.hbm.saveddata.TomSaveData; import com.hbm.world.feature.OilSpot; +import com.hbm.world.generator.DungeonToolbox; import cpw.mods.fml.relauncher.ReflectionHelper; import net.minecraft.entity.EntityLiving; @@ -47,11 +50,11 @@ public class ItemWandD extends Item { if(pos != null) { - /*TomSaveData data = TomSaveData.forWorld(world); + TomSaveData data = TomSaveData.forWorld(world); data.impact = false; data.fire = 0F; data.dust = 0F; - data.markDirty();*/ + data.markDirty(); /*EntityTomBlast tom = new EntityTomBlast(world); tom.posX = pos.blockX; @@ -87,23 +90,7 @@ public class ItemWandD extends Item { entry.blocksDistanceThreshold = 1000; world.spawnEntityInWorld(EntityNukeExplosionMK5.statFacNoRad(world, 150, pos.blockX, pos.blockY + 1, pos.blockZ));*/ - int x = pos.blockX; - int z = pos.blockZ; - int type = world.rand.nextInt(10); - - for(int i = 0; i < 1; i++) { - int ix = (int) Math.floor(x + world.rand.nextGaussian() * 0); - int iz = (int) Math.floor(z + world.rand.nextGaussian() * 0); - - world.setBlock(ix, 0, iz, ModBlocks.ore_bedrock); - TileEntityBedrockOre ore = (TileEntityBedrockOre) world.getTileEntity(ix, 0, iz); - ore.resource = new ItemStack(ModBlocks.stone_resource, 1, 2); - ore.color = 0xCF6722; - ore.shape = type; - ore.acidRequirement = new FluidStack(Fluids.SULFURIC_ACID, 1000); - world.markBlockForUpdate(ix, 0, iz); - world.markTileEntityChunkModified(ix, 0, iz, ore); - } + //DungeonToolbox.generateBedrockOreWithChance(world, world.rand, pos.blockX, pos.blockZ, EnumBedrockOre.TITANIUM, new FluidStack(Fluids.SULFURIC_ACID, 500), 2, 1); /*EntitySiegeTunneler tunneler = new EntitySiegeTunneler(world); tunneler.setPosition(pos.blockX, pos.blockY + 1, pos.blockZ); diff --git a/src/main/java/com/hbm/lib/Library.java b/src/main/java/com/hbm/lib/Library.java index e4b840948..90d63b9dc 100644 --- a/src/main/java/com/hbm/lib/Library.java +++ b/src/main/java/com/hbm/lib/Library.java @@ -640,9 +640,12 @@ public class Library { } public static boolean isObstructed(World world, double x, double y, double z, double a, double b, double c) { - MovingObjectPosition pos = world.rayTraceBlocks(Vec3.createVectorHelper(x, y, z), Vec3.createVectorHelper(a, b, c)); - + return pos != null; + } + + public static boolean isObstructedOpaque(World world, double x, double y, double z, double a, double b, double c) { + MovingObjectPosition pos = world.func_147447_a(Vec3.createVectorHelper(x, y, z), Vec3.createVectorHelper(a, b, c), false, true, false); return pos != null; } diff --git a/src/main/java/com/hbm/lib/RefStrings.java b/src/main/java/com/hbm/lib/RefStrings.java index 20cdfa37f..70e7fc984 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 (4476)"; + public static final String VERSION = "1.0.27 BETA (4480)"; //HBM's Beta Naming Convention: //V T (X) //V -> next release version diff --git a/src/main/java/com/hbm/main/ClientProxy.java b/src/main/java/com/hbm/main/ClientProxy.java index 8d205dfd3..44a786906 100644 --- a/src/main/java/com/hbm/main/ClientProxy.java +++ b/src/main/java/com/hbm/main/ClientProxy.java @@ -192,6 +192,7 @@ public class ClientProxy extends ServerProxy { ClientRegistry.bindTileEntitySpecialRenderer(TileEntityTurretBrandon.class, new RenderTurretBrandon()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityTurretArty.class, new RenderTurretArty()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityTurretHIMARS.class, new RenderTurretHIMARS()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityTurretSentry.class, new RenderTurretSentry()); //mines ClientRegistry.bindTileEntitySpecialRenderer(TileEntityLandmine.class, new RenderLandmine()); //machines diff --git a/src/main/java/com/hbm/main/ResourceManager.java b/src/main/java/com/hbm/main/ResourceManager.java index c09cd9599..bd328c11d 100644 --- a/src/main/java/com/hbm/main/ResourceManager.java +++ b/src/main/java/com/hbm/main/ResourceManager.java @@ -54,6 +54,7 @@ public class ResourceManager { public static final IModelCustom turret_brandon = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/turrets/turret_brandon.obj")); public static final IModelCustom turret_arty = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/turrets/turret_arty.obj")).asDisplayList(); // test! public static final IModelCustom turret_himars = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/turrets/turret_himars.obj")).asDisplayList(); + public static final IModelCustom turret_sentry = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/turrets/turret_sentry.obj")); public static final IModelCustom turret_howard_damaged = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/turrets/turret_howard_damaged.obj")); @@ -378,6 +379,7 @@ public class ResourceManager { public static final ResourceLocation turret_brandon_tex = new ResourceLocation(RefStrings.MODID, "textures/models/turrets/brandon.png"); public static final ResourceLocation turret_arty_tex = new ResourceLocation(RefStrings.MODID, "textures/models/turrets/arty.png"); public static final ResourceLocation turret_himars_tex = new ResourceLocation(RefStrings.MODID, "textures/models/turrets/himars.png"); + public static final ResourceLocation turret_sentry_tex = new ResourceLocation(RefStrings.MODID, "textures/models/turrets/sentry.png"); public static final ResourceLocation himars_standard_tex = new ResourceLocation(RefStrings.MODID, "textures/models/projectiles/himars_standard.png"); public static final ResourceLocation himars_single_tex = new ResourceLocation(RefStrings.MODID, "textures/models/projectiles/himars_single.png"); diff --git a/src/main/java/com/hbm/render/tileentity/RenderCore.java b/src/main/java/com/hbm/render/tileentity/RenderCore.java index b2796f0a3..c024d36e5 100644 --- a/src/main/java/com/hbm/render/tileentity/RenderCore.java +++ b/src/main/java/com/hbm/render/tileentity/RenderCore.java @@ -81,7 +81,7 @@ public class RenderCore extends TileEntitySpecialRenderer { public void renderOrb(TileEntityCore tile, double x, double y, double z) { GL11.glPushMatrix(); - GL11.glTranslated(x + 0.5, y + 0.5, z + 0.5); + //GL11.glTranslated(x + 0.5, y + 0.5, z + 0.5); int color = tile.color; diff --git a/src/main/java/com/hbm/render/tileentity/RenderTurretSentry.java b/src/main/java/com/hbm/render/tileentity/RenderTurretSentry.java new file mode 100644 index 000000000..480de1536 --- /dev/null +++ b/src/main/java/com/hbm/render/tileentity/RenderTurretSentry.java @@ -0,0 +1,84 @@ +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.turret.TileEntityTurretSentry; + +import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; +import net.minecraft.item.Item; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.Vec3; +import net.minecraftforge.client.IItemRenderer; + +public class RenderTurretSentry extends TileEntitySpecialRenderer implements IItemRendererProvider { + + @Override + public void renderTileEntityAt(TileEntity te, double x, double y, double z, float interp) { + + TileEntityTurretSentry turret = (TileEntityTurretSentry)te; + Vec3 pos = turret.getHorizontalOffset(); + + GL11.glPushMatrix(); + GL11.glTranslated(x + pos.xCoord, y, z + pos.zCoord); + GL11.glEnable(GL11.GL_LIGHTING); + GL11.glEnable(GL11.GL_CULL_FACE); + GL11.glShadeModel(GL11.GL_SMOOTH); + + bindTexture(ResourceManager.turret_sentry_tex); + ResourceManager.turret_sentry.renderPart("Base"); + + double yaw = -Math.toDegrees(turret.lastRotationYaw + (turret.rotationYaw - turret.lastRotationYaw) * interp); + double pitch = Math.toDegrees(turret.lastRotationPitch + (turret.rotationPitch - turret.lastRotationPitch) * interp); + + GL11.glRotated(yaw, 0, 1, 0); + ResourceManager.turret_sentry.renderPart("Pivot"); + + GL11.glTranslated(0, 1.25, 0); + GL11.glRotated(-pitch, 1, 0, 0); + GL11.glTranslated(0, -1.25, 0); + ResourceManager.turret_sentry.renderPart("Body"); + ResourceManager.turret_sentry.renderPart("Drum"); + + GL11.glPushMatrix(); + GL11.glTranslated(0, 0, (turret.lastBarrelLeftPos + (turret.barrelLeftPos - turret.lastBarrelLeftPos) * interp) * -0.5); + ResourceManager.turret_sentry.renderPart("BarrelL"); + GL11.glPopMatrix(); + + GL11.glPushMatrix(); + GL11.glTranslated(0, 0, (turret.lastBarrelRightPos + (turret.barrelRightPos - turret.lastBarrelRightPos) * interp) * -0.5); + ResourceManager.turret_sentry.renderPart("BarrelR"); + GL11.glPopMatrix(); + + GL11.glShadeModel(GL11.GL_FLAT); + GL11.glPopMatrix(); + } + + @Override + public Item getItemForRenderer() { + return Item.getItemFromBlock(ModBlocks.turret_sentry); + } + + @Override + public IItemRenderer getRenderer() { + return new ItemRenderBase() { + public void renderInventory() { + GL11.glTranslated(0, -4, 0); + GL11.glScaled(7, 7, 7); + } + public void renderCommon() { + GL11.glRotated(90, 0, 1, 0); + bindTexture(ResourceManager.turret_sentry_tex); + GL11.glShadeModel(GL11.GL_SMOOTH); + ResourceManager.turret_sentry.renderPart("Base"); + ResourceManager.turret_sentry.renderPart("Pivot"); + ResourceManager.turret_sentry.renderPart("Body"); + ResourceManager.turret_sentry.renderPart("Drum"); + ResourceManager.turret_sentry.renderPart("BarrelL"); + ResourceManager.turret_sentry.renderPart("BarrelR"); + GL11.glShadeModel(GL11.GL_FLAT); + }}; + } +} diff --git a/src/main/java/com/hbm/tileentity/TileMappings.java b/src/main/java/com/hbm/tileentity/TileMappings.java index 055caf475..2d5f8fffa 100644 --- a/src/main/java/com/hbm/tileentity/TileMappings.java +++ b/src/main/java/com/hbm/tileentity/TileMappings.java @@ -240,6 +240,7 @@ public class TileMappings { put(TileEntityTurretBrandon.class, "tileentity_turret_brandon"); put(TileEntityTurretArty.class, "tileentity_turret_arty"); put(TileEntityTurretHIMARS.class, "tileentity_turret_himars"); + put(TileEntityTurretSentry.class, "tileentity_turret_sentry"); } private static void putMachines() { diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityCondenser.java b/src/main/java/com/hbm/tileentity/machine/TileEntityCondenser.java index 75b5a3b19..d1839125c 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityCondenser.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityCondenser.java @@ -10,6 +10,7 @@ import com.hbm.inventory.fluid.Fluids; import com.hbm.inventory.fluid.tank.FluidTank; import com.hbm.lib.Library; import com.hbm.main.MainRegistry; +import com.hbm.saveddata.TomSaveData; import com.hbm.tileentity.INBTPacketReceiver; import com.hbm.tileentity.TileEntityLoadedBase; @@ -53,7 +54,7 @@ public class TileEntityCondenser extends TileEntityLoadedBase implements IFluidA int light = this.worldObj.getSavedLightValue(EnumSkyBlock.Sky, this.xCoord, this.yCoord, this.zCoord); - if(MainRegistry.proxy.getImpactFire(worldObj) > 0 && light > 7) { // Make both steam and water evaporate during firestorms... + if(TomSaveData.forWorld(worldObj).fire > 1e-5 && light > 7) { // Make both steam and water evaporate during firestorms... tanks[1].setFill(tanks[1].getFill() - convert); } else { tanks[1].setFill(tanks[1].getFill() + convert); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityHeatBoiler.java b/src/main/java/com/hbm/tileentity/machine/TileEntityHeatBoiler.java index fcfafd053..f93c6f8c9 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityHeatBoiler.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityHeatBoiler.java @@ -21,6 +21,7 @@ import com.hbm.inventory.fluid.trait.FT_Heatable.HeatingStep; import com.hbm.inventory.fluid.trait.FT_Heatable.HeatingType; import com.hbm.lib.Library; import com.hbm.main.MainRegistry; +import com.hbm.saveddata.TomSaveData; import com.hbm.tileentity.IConfigurableMachine; import com.hbm.tileentity.INBTPacketReceiver; import com.hbm.tileentity.TileEntityLoadedBase; @@ -69,8 +70,8 @@ public class TileEntityHeatBoiler extends TileEntityLoadedBase implements IFluid int lastHeat = this.heat; int light = this.worldObj.getSavedLightValue(EnumSkyBlock.Sky, this.xCoord, this.yCoord, this.zCoord); - if(light > 7 && MainRegistry.proxy.getImpactFire(worldObj) > 0) { - this.heat += ((maxHeat - heat) * 0.5D); //constantly heat up 50% of the remaining heat buffer for rampant but diminishing heating + if(light > 7 && TomSaveData.forWorld(worldObj).fire > 1e-5) { + this.heat += ((maxHeat - heat) * 0.000005D); //constantly heat up 0.0005% of the remaining heat buffer for rampant but diminishing heating } data.setInteger("heat", lastHeat); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCentrifuge.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCentrifuge.java index 2f56a8feb..606d992f1 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCentrifuge.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCentrifuge.java @@ -90,7 +90,7 @@ public class TileEntityMachineCentrifuge extends TileEntityMachineBase implement return false; } - for(int i = 0; i < 4; i++) { + for(int i = 0; i < Math.min(4, out.length); i++) { //either the slot is null, the output is null or the output can be added to the existing slot if(slots[i + 2] == null) @@ -111,7 +111,7 @@ public class TileEntityMachineCentrifuge extends TileEntityMachineBase implement private void processItem() { ItemStack[] out = CentrifugeRecipes.getOutput(slots[0]); - for(int i = 0; i < 4; i++) { + for(int i = 0; i < Math.min(4, out.length); i++) { if(out[i] == null) continue; diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCrystallizer.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCrystallizer.java index 62e19ca68..d30396f96 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCrystallizer.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCrystallizer.java @@ -6,6 +6,7 @@ import com.hbm.inventory.fluid.FluidType; import com.hbm.inventory.fluid.Fluids; import com.hbm.inventory.fluid.tank.FluidTank; import com.hbm.inventory.recipes.CrystallizerRecipes; +import com.hbm.inventory.recipes.CrystallizerRecipes.CrystallizerRecipe; import com.hbm.items.ModItems; import com.hbm.items.machine.ItemMachineUpgrade; import com.hbm.lib.Library; @@ -28,7 +29,6 @@ public class TileEntityMachineCrystallizer extends TileEntityMachineBase impleme public long power; public static final long maxPower = 1000000; public static final int demand = 1000; - public static final int acidRequired = 500; public short progress; public short duration = 600; @@ -38,8 +38,8 @@ public class TileEntityMachineCrystallizer extends TileEntityMachineBase impleme public FluidTank tank; public TileEntityMachineCrystallizer() { - super(7); - tank = new FluidTank(Fluids.ACID, 8000, 0); + super(8); + tank = new FluidTank(Fluids.ACID, 8000); } @Override @@ -55,6 +55,7 @@ public class TileEntityMachineCrystallizer extends TileEntityMachineBase impleme this.updateConnections(); power = Library.chargeTEFromItems(slots, 1, power, maxPower); + tank.setType(7, slots); tank.loadTank(3, 4, slots); for(int i = 0; i < getCycleCount(); i++) { @@ -66,7 +67,6 @@ public class TileEntityMachineCrystallizer extends TileEntityMachineBase impleme if(progress > getDuration()) { progress = 0; - tank.setFill(tank.getFill() - getRequiredAcid()); processItem(); this.markDirty(); @@ -77,12 +77,11 @@ public class TileEntityMachineCrystallizer extends TileEntityMachineBase impleme } } - tank.updateTank(xCoord, yCoord, zCoord, this.worldObj.provider.dimensionId); - NBTTagCompound data = new NBTTagCompound(); data.setShort("progress", progress); data.setShort("duration", getDuration()); data.setLong("power", power); + tank.writeToNBT(data, "t"); this.networkPack(data, 25); } else { @@ -135,19 +134,24 @@ public class TileEntityMachineCrystallizer extends TileEntityMachineBase impleme this.power = data.getLong("power"); this.progress = data.getShort("progress"); this.duration = data.getShort("duration"); + this.tank.readFromNBT(data, "t"); } private void processItem() { - ItemStack result = CrystallizerRecipes.getOutput(slots[0]); + CrystallizerRecipe result = CrystallizerRecipes.getOutput(slots[0]); if(result == null) //never happens but you can't be sure enough return; + ItemStack stack = result.output.copy(); + if(slots[2] == null) - slots[2] = result; - else if(slots[2].stackSize + result.stackSize <= slots[2].getMaxStackSize()) - slots[2].stackSize += result.stackSize; + slots[2] = stack; + else if(slots[2].stackSize + stack.stackSize <= slots[2].getMaxStackSize()) + slots[2].stackSize += stack.stackSize; + + tank.setFill(tank.getFill() - result.acid.fill); float freeChance = this.getFreeChance(); @@ -164,41 +168,41 @@ public class TileEntityMachineCrystallizer extends TileEntityMachineBase impleme if(power < getPowerRequired()) return false; - if(tank.getFill() < getRequiredAcid()) - return false; - - ItemStack result = CrystallizerRecipes.getOutput(slots[0]); + CrystallizerRecipe result = CrystallizerRecipes.getOutput(slots[0]); //Or output? if(result == null) return false; + if(tank.getTankType() != result.acid.type) return false; + if(tank.getFill() < result.acid.fill) return false; + + ItemStack stack = result.output.copy(); + //Does the output not match? - if(slots[2] != null && (slots[2].getItem() != result.getItem() || slots[2].getItemDamage() != result.getItemDamage())) + if(slots[2] != null && (slots[2].getItem() != stack.getItem() || slots[2].getItemDamage() != stack.getItemDamage())) return false; //Or is the output slot already full? - if(slots[2] != null && slots[2].stackSize + result.stackSize > slots[2].getMaxStackSize()) + if(slots[2] != null && slots[2].stackSize + stack.stackSize > slots[2].getMaxStackSize()) return false; return true; } - public int getRequiredAcid() { - - int extra = 0; + public int getRequiredAcid(int base) { for(int i = 5; i <= 6; i++) { if(slots[i] != null && slots[i].getItem() == ModItems.upgrade_effect_1) - extra += 1000; + base *= 3; if(slots[i] != null && slots[i].getItem() == ModItems.upgrade_effect_2) - extra += 2000; + base *= 4; if(slots[i] != null && slots[i].getItem() == ModItems.upgrade_effect_3) - extra += 3000; + base *= 5; } - return acidRequired + Math.min(extra, 3000); + return base; } public float getFreeChance() { @@ -221,6 +225,9 @@ public class TileEntityMachineCrystallizer extends TileEntityMachineBase impleme public short getDuration() { float durationMod = 1; + CrystallizerRecipe result = CrystallizerRecipes.getOutput(slots[0]); + + int base = result != null ? result.duration : 600; for(int i = 5; i <= 6; i++) { @@ -232,7 +239,7 @@ public class TileEntityMachineCrystallizer extends TileEntityMachineBase impleme durationMod -= 0.75F; } - return (short) (600 * Math.max(durationMod, 0.25F)); + return (short) Math.ceil((base * Math.max(durationMod, 0.25F))); } public int getPowerRequired() { @@ -277,21 +284,14 @@ public class TileEntityMachineCrystallizer extends TileEntityMachineBase impleme return (progress * i) / duration; } - @Override - public void setFillForSync(int fill, int index) { - tank.setFill(fill); - } + @Override public void setFillForSync(int fill, int index) { } + @Override public void setTypeForSync(FluidType type, int index) { } @Override public void setFluidFill(int fill, FluidType type) { tank.setFill(fill); } - @Override - public void setTypeForSync(FluidType type, int index) { - tank.setTankType(type); - } - @Override public int getFluidFill(FluidType type) { return tank.getFill(); @@ -336,8 +336,10 @@ public class TileEntityMachineCrystallizer extends TileEntityMachineBase impleme @Override public boolean isItemValidForSlot(int i, ItemStack itemStack) { - if(i == 0 && CrystallizerRecipes.getOutput(itemStack) != null) - return true; + CrystallizerRecipe recipe = CrystallizerRecipes.getOutput(itemStack); + if(i == 0 && recipe != null) { + return recipe.acid.type == tank.getTankType(); + } if(i == 1 && itemStack.getItem() instanceof IBatteryItem) return true; diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineMiningLaser.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineMiningLaser.java index 7ad5f1698..7adb7a7c6 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineMiningLaser.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineMiningLaser.java @@ -14,6 +14,7 @@ import com.hbm.inventory.fluid.Fluids; import com.hbm.inventory.fluid.tank.FluidTank; import com.hbm.inventory.recipes.CentrifugeRecipes; import com.hbm.inventory.recipes.CrystallizerRecipes; +import com.hbm.inventory.recipes.CrystallizerRecipes.CrystallizerRecipe; import com.hbm.inventory.recipes.ShredderRecipes; import com.hbm.items.ModItems; import com.hbm.items.machine.ItemMachineUpgrade; @@ -253,9 +254,9 @@ public class TileEntityMachineMiningLaser extends TileEntityMachineBase implemen if(stack != null && stack.getItem() != null) { if(hasCrystallizer()) { - ItemStack result = CrystallizerRecipes.getOutput(stack); - if(result != null && result.getItem() != ModItems.scrap) { - worldObj.spawnEntityInWorld(new EntityItem(worldObj, targetX + 0.5, targetY + 0.5, targetZ + 0.5, result.copy())); + CrystallizerRecipe result = CrystallizerRecipes.getOutput(stack); + if(result != null && result.output.getItem() != ModItems.scrap) { + worldObj.spawnEntityInWorld(new EntityItem(worldObj, targetX + 0.5, targetY + 0.5, targetZ + 0.5, result.output.copy())); normal = false; } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineMixer.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineMixer.java index 11b07406c..87d2fcc4c 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineMixer.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineMixer.java @@ -59,6 +59,7 @@ public class TileEntityMachineMixer extends TileEntityMachineBase implements INB if(!worldObj.isRemote) { + this.power = Library.chargeTEFromItems(slots, 0, power, maxPower); tanks[2].setType(2, slots); UpgradeManager.eval(slots, 3, 4); diff --git a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKBase.java b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKBase.java index a6c516f7f..2674b87bf 100644 --- a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKBase.java +++ b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKBase.java @@ -18,6 +18,7 @@ import com.hbm.main.MainRegistry; import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.NBTPacket; import com.hbm.packet.PacketDispatcher; +import com.hbm.saveddata.TomSaveData; import com.hbm.tileentity.INBTPacketReceiver; import com.hbm.tileentity.IOverpressurable; import com.hbm.tileentity.TileEntityLoadedBase; @@ -227,8 +228,8 @@ public abstract class TileEntityRBMKBase extends TileEntityLoadedBase implements } protected void coolPassively() { - - if(MainRegistry.proxy.getImpactFire(worldObj) > 1e-5) { + + if(TomSaveData.forWorld(worldObj).fire > 1e-5) { double light = this.worldObj.getSavedLightValue(EnumSkyBlock.Sky, this.xCoord, this.yCoord, this.zCoord) / 15D; if(heat < 20 + (480 * light)) { this.heat += this.passiveCooling() * 2; 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 307379f94..2dce4df9c 100644 --- a/src/main/java/com/hbm/tileentity/machine/storage/TileEntityBarrel.java +++ b/src/main/java/com/hbm/tileentity/machine/storage/TileEntityBarrel.java @@ -14,7 +14,7 @@ import com.hbm.inventory.fluid.trait.FT_Corrosive; import com.hbm.inventory.fluid.Fluids; import com.hbm.inventory.fluid.tank.FluidTank; import com.hbm.lib.Library; -import com.hbm.main.MainRegistry; +import com.hbm.saveddata.TomSaveData; import com.hbm.tileentity.IPersistentNBT; import com.hbm.tileentity.TileEntityMachineBase; import com.hbm.util.fauxpointtwelve.DirPos; @@ -208,7 +208,7 @@ public class TileEntityBarrel extends TileEntityMachineBase implements IFluidAcc } //For when Tom's firestorm hits a barrel full of water - if(tank.getTankType() == Fluids.WATER && MainRegistry.proxy.getImpactFire(worldObj) > 0) { + if(tank.getTankType() == Fluids.WATER && TomSaveData.forWorld(worldObj).fire > 1e-5) { int light = this.worldObj.getSavedLightValue(EnumSkyBlock.Sky, this.xCoord, this.yCoord, this.zCoord); if(light > 7) { diff --git a/src/main/java/com/hbm/tileentity/turret/TileEntityTurretBaseNT.java b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretBaseNT.java index 877851407..b6ad4f7b4 100644 --- a/src/main/java/com/hbm/tileentity/turret/TileEntityTurretBaseNT.java +++ b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretBaseNT.java @@ -551,7 +551,7 @@ public abstract class TileEntityTurretBaseNT extends TileEntityMachineBase imple if(pitchDeg < -this.getTurretDepression() || pitchDeg > this.getTurretElevation()) return false; - return !Library.isObstructed(worldObj, ent.xCoord, ent.yCoord, ent.zCoord, pos.xCoord, pos.yCoord, pos.zCoord); + return !Library.isObstructedOpaque(worldObj, ent.xCoord, ent.yCoord, ent.zCoord, pos.xCoord, pos.yCoord, pos.zCoord); } /** diff --git a/src/main/java/com/hbm/tileentity/turret/TileEntityTurretSentry.java b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretSentry.java new file mode 100644 index 000000000..1b8bd59e2 --- /dev/null +++ b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretSentry.java @@ -0,0 +1,237 @@ +package com.hbm.tileentity.turret; + +import java.util.ArrayList; +import java.util.List; + +import com.hbm.handler.BulletConfigSyncingUtil; +import com.hbm.handler.BulletConfiguration; +import com.hbm.inventory.container.ContainerTurretBase; +import com.hbm.inventory.gui.GUITurretSentry; +import com.hbm.packet.AuxParticlePacketNT; +import com.hbm.packet.PacketDispatcher; +import com.hbm.tileentity.IGUIProvider; + +import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.client.gui.GuiScreen; +import net.minecraft.entity.Entity; +import net.minecraft.entity.player.EntityPlayer; +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; + +public class TileEntityTurretSentry extends TileEntityTurretBaseNT implements IGUIProvider { + + private boolean didJustShootLeft = false; + private boolean retractingLeft = false; + public double barrelLeftPos = 0; + public double lastBarrelLeftPos = 0; + private boolean didJustShootRight = false; + private boolean retractingRight = false; + public double barrelRightPos = 0; + public double lastBarrelRightPos = 0; + + static List configs = new ArrayList(); + + static { + configs.add(BulletConfigSyncingUtil.R5_NORMAL); + configs.add(BulletConfigSyncingUtil.R5_EXPLOSIVE); + configs.add(BulletConfigSyncingUtil.R5_DU); + configs.add(BulletConfigSyncingUtil.R5_STAR); + configs.add(BulletConfigSyncingUtil.CHL_R5); + } + + @Override + protected List getAmmoList() { + return configs; + } + + @Override + public String getName() { + return "container.turretSentry"; + } + + @Override + public double getTurretDepression() { + return 20D; + } + + @Override + public double getTurretElevation() { + return 20D; + } + + @Override + public int getDecetorInterval() { + return 10; + } + + @Override + public double getDecetorRange() { + return 24D; + } + + @Override + public double getDecetorGrace() { + return 2D; + } + + @Override + public long getMaxPower() { + return 1_000; + } + + @Override + public long getConsumption() { + return 5; + } + + @Override + public double getBarrelLength() { + return 1.25D; + } + + @Override + public double getAcceptableInaccuracy() { + return 15; + } + + @Override + public boolean hasThermalVision() { + return false; + } + + @Override + public Vec3 getHorizontalOffset() { + return Vec3.createVectorHelper(0.5, 0, 0.5); + } + + @Override + public void updateEntity() { + + if(worldObj.isRemote) { + this.lastBarrelLeftPos = this.barrelLeftPos; + this.lastBarrelRightPos = this.barrelRightPos; + + float retractSpeed = 0.5F; + float pushSpeed = 0.25F; + + if(this.retractingLeft) { + this.barrelLeftPos += retractSpeed; + + if(this.barrelLeftPos >= 1) { + this.retractingLeft = false; + } + + } else { + this.barrelLeftPos -= pushSpeed; + if(this.barrelLeftPos < 0) { + this.barrelLeftPos = 0; + } + } + + if(this.retractingRight) { + this.barrelRightPos += retractSpeed; + + if(this.barrelRightPos >= 1) { + this.retractingRight = false; + } + + } else { + this.barrelRightPos -= pushSpeed; + if(this.barrelRightPos < 0) { + this.barrelRightPos = 0; + } + } + } + + super.updateEntity(); + } + + boolean shotSide = false; + int timer; + + @Override + public void updateFiringTick() { + + timer++; + + if(timer % 10 == 0) { + + BulletConfiguration conf = this.getFirstConfigLoaded(); + + if(conf != null) { + this.spawnBullet(conf); + this.conusmeAmmo(conf.ammo); + this.worldObj.playSoundEffect(xCoord, yCoord, zCoord, "hbm:turret.sentry_fire", 2.0F, 1.0F); + + Vec3 pos = this.getTurretPos(); + Vec3 vec = Vec3.createVectorHelper(this.getBarrelLength(), 0, 0); + vec.rotateAroundZ((float) -this.rotationPitch); + vec.rotateAroundY((float) -(this.rotationYaw + Math.PI * 0.5)); + + Vec3 side = Vec3.createVectorHelper(0.125 * (shotSide ? 1 : -1), 0, 0); + side.rotateAroundY((float) -(this.rotationYaw)); + + NBTTagCompound data = new NBTTagCompound(); + data.setString("type", "vanillaExt"); + data.setString("mode", "largeexplode"); + data.setFloat("size", 1F); + data.setByte("count", (byte)1); + PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(data, pos.xCoord + vec.xCoord + side.xCoord, pos.yCoord + vec.yCoord, pos.zCoord + vec.zCoord + side.zCoord), new TargetPoint(worldObj.provider.dimensionId, xCoord, yCoord, zCoord, 50)); + + if(shotSide) { + this.didJustShootLeft = true; + } else { + this.didJustShootRight = true; + } + shotSide = !shotSide; + } + } + } + + @Override + protected void seekNewTarget() { + Entity lastTarget = this.target; + super.seekNewTarget(); + + if(lastTarget != this.target && this.target != null) { + worldObj.playSoundAtEntity(target, "hbm:turret.sentry_lockon", 2.0F, 1.5F); + } + } + + @Override + protected NBTTagCompound writePacket() { + NBTTagCompound data = super.writePacket(); + if(didJustShootLeft) data.setBoolean("justShotLeft", didJustShootLeft); + if(didJustShootRight) data.setBoolean("justShotRight", didJustShootRight); + didJustShootLeft = false; + didJustShootRight = false; + return data; + } + + @Override + public void networkUnpack(NBTTagCompound nbt) { + super.networkUnpack(nbt); + if(nbt.getBoolean("justShotLeft")) this.retractingLeft = true; + if(nbt.getBoolean("justShotRight")) this.retractingRight = true; + } + + protected void updateConnections() { + this.trySubscribe(worldObj, xCoord, yCoord - 1, zCoord, ForgeDirection.DOWN); + } + + @Override + public Container provideContainer(int ID, EntityPlayer player, World world, int x, int y, int z) { + return new ContainerTurretBase(player.inventory, this); + } + + @Override + @SideOnly(Side.CLIENT) + public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { + return new GUITurretSentry(player.inventory, this); + } +} diff --git a/src/main/java/com/hbm/world/generator/DungeonToolbox.java b/src/main/java/com/hbm/world/generator/DungeonToolbox.java index 2454c125a..f8a739378 100644 --- a/src/main/java/com/hbm/world/generator/DungeonToolbox.java +++ b/src/main/java/com/hbm/world/generator/DungeonToolbox.java @@ -99,7 +99,7 @@ public class DungeonToolbox { } public static void generateBedrockOreWithChance(World world, Random rand, int chunkX, int chunkZ, EnumBedrockOre ore, FluidStack stack, int tier, int chance) { - if(chance > 0 && rand.nextInt(chance) == 0) generateBedrockOre(world, rand, chunkX, chunkZ, ore, null, tier); + if(chance > 0 && rand.nextInt(chance) == 0) generateBedrockOre(world, rand, chunkX, chunkZ, ore, stack, tier); } public static void generateBedrockOre(World world, Random rand, int chunkX, int chunkZ, EnumBedrockOre ore, int tier) { diff --git a/src/main/resources/assets/hbm/lang/de_DE.lang b/src/main/resources/assets/hbm/lang/de_DE.lang index 4dfde67dd..b2e15f7cc 100644 --- a/src/main/resources/assets/hbm/lang/de_DE.lang +++ b/src/main/resources/assets/hbm/lang/de_DE.lang @@ -396,6 +396,7 @@ container.turretHoward=Howard container.turretJeremy=Jeremy container.turretMaxwell=Maxwell container.turretRichard=Richard +container.turretSentry=Brown container.turretTauon=Tauon container.uf6_tank=UF6 Tank container.wasteDrum=Abklingbecken-Trommel @@ -4073,6 +4074,7 @@ tile.turret_maxwell.name=Hochenergie-MASER-Geschütz "Maxwell" tile.turret_rocket.name=Raketengeschütz tile.turret_richard.name=Raketenwerfergeschütz "Richard" tile.turret_spitfire.name=Geschütz für das ich noch keinen Namen habe [WIP] +tile.turret_sentry.name=Selbstschussanlage "Brown" tile.turret_tau.name=Tauonengeschütz tile.turret_tauon.name=XVL1456-Prototypengeschütz "Tauon" tile.vacuum.name=Vakuum diff --git a/src/main/resources/assets/hbm/lang/en_US.lang b/src/main/resources/assets/hbm/lang/en_US.lang index 0cf051f43..f00beea77 100644 --- a/src/main/resources/assets/hbm/lang/en_US.lang +++ b/src/main/resources/assets/hbm/lang/en_US.lang @@ -717,6 +717,7 @@ container.turretHoward=Howard container.turretJeremy=Jeremy container.turretMaxwell=Maxwell container.turretRichard=Richard +container.turretSentry=Brown container.turretTauon=Tauon container.uf6_tank=UF6 Tank container.wasteDrum=Spent Fuel Pool Drum @@ -2894,7 +2895,7 @@ item.pill_iodine.desc=Removes negative effects item.pill_herbal.name=Herbal Paste item.pill_herbal.desc=Effective treatment against lung disease and mild radiation poisoning$Comes with side effects item.pin.name=Bobby Pin -item.pin.desc="*Unmodified* success rate of picking a standard lock is ~10%. +item.pin.desc=Standard success rate of picking a regular lock is ~10%%. item.pipes_steel.name=Steel Pipes item.pipes_steel.desc=Uncrafting was omitted due to tax evasion. item.piston_selenium.name=Combustion Engine Piston @@ -4654,6 +4655,7 @@ tile.turret_maxwell.name=High-Energy MASER Turret "Maxwell" tile.turret_rocket.name=Rocket Turret tile.turret_richard.name=Rocket Launcher Turret "Richard" tile.turret_spitfire.name=Turret I have no name for right now [WIP] +tile.turret_sentry.name=Sentry Turret "Brown" tile.turret_tau.name=Tauon Turret tile.turret_tauon.name=XVL1456 Prototype Turret "Tauon" tile.vacuum.name=Vacuum diff --git a/src/main/resources/assets/hbm/lang/zh_CN.lang b/src/main/resources/assets/hbm/lang/zh_CN.lang index 7ad501afd..c182cfeef 100644 --- a/src/main/resources/assets/hbm/lang/zh_CN.lang +++ b/src/main/resources/assets/hbm/lang/zh_CN.lang @@ -221,7 +221,6 @@ book.rbmk.title8=碳化钨中子反射器 book.rbmk.page8=反应堆中的 §l碳化钨中子反射器§r 将阻止中子的通过, 相反,中子将被反射回它们来自的燃料棒上. 这对于使用中子是有用的, 否则这些中子一旦离开反应堆就会被浪费掉. book.rbmk.title9=硼中子吸收器 book.rbmk.page9=§l硼中子吸收器§r 只是阻挡中子. 被吸收的中子不会产生热量,会被有效地吸收. 这有助于防止燃料棒发生过度反应从而超出临界值. - book.rbmk.title10=石墨慢化剂 book.rbmk.page10=§l石墨慢化剂§r 把穿过它的快中子转换成慢中子. 大多数核燃料反应释放出快中子, 而引起裂变需要慢中子, 所以强烈建议使用慢化剂. book.rbmk.title11=结构柱 @@ -313,52 +312,87 @@ book_lore.test.page.2=他在我怀里睡着时,我正在打字。我怎么才 book_lore.test.page.3=3 book_lore.test.page.4=4 book_lore.test.page.5=5 -book_lore.book_iodine.name=Note -book_lore.book_iodine.author=Dave +book_lore.book_iodine.name=笔记 +book_lore.book_iodine.author=戴夫 book_lore.book_iodine.page.1=alright you will not believe this, but old man weathervane finally managed to show up again since he left two weeks ago and what's more surprising is the fact that he actually decided to spill the beans on what they were doing in the canyon: book_lore.book_iodine.page.2=apparently the morons from R&D discovered a compound that is mostly inorganic, pretty much like a toxin in nature, but get this: the dying cells will reproduce said toxin and excrete it through the skin, creating an aerosol that is highly contagious. book_lore.book_iodine.page.3=it's just like a virus, but not a virus. the composition is weird, you can mix it in any household bottle but you do have to get the order right. the doc told me that the first ingredient which is just powdered iodine crystals goes into slot %d -book_lore.book_phosphorous.name=Note -book_lore.book_phosphorous.author=Dave +book_lore.book_phosphorous.name=笔记 +book_lore.book_phosphorous.author=戴夫 book_lore.book_phosphorous.page.1=heyo, it's me again. i assume you got my last memo, the doc wasn't too happy about it. i'll have to do this quick, the dunderheads from R&D are currently moaning again, probably over money. again. anyway, doc weathervane found that the second book_lore.book_phosphorous.page.2=ingredient is red phosphorous, whihc has to be mixed into slot %d -book_lore.book_dust.name=Note -book_lore.book_dust.author=Dave +book_lore.book_dust.name=笔记 +book_lore.book_dust.author=戴夫 book_lore.book_dust.page.1=the doc was furious when he found out that the R&D dorks kept the one remaining sample, ranting about gross negligence this and a doomsday scenario that. i told him to chill for a minute, getting all worked up isn't good for his blood pressure, not book_lore.book_dust.page.2=that he has much blood left to begin with. one of the R&D morons slipped some more info into last week's circular, they call their little concoction \"MKU\" whatever that means, and that it contains actual household lint. can you believe that? one of the most book_lore.book_dust.page.3=dangerous inventions of theirs and it contains dust. strangely they also mentioned that it goes into slot %d -book_lore.book_mercury.name=Note -book_lore.book_mercury.author=Dave +book_lore.book_mercury.name=笔记 +book_lore.book_mercury.author=戴夫 book_lore.book_mercury.page.1=well that settles that. not counting the vomitting blood part, the toxicological report mostly resembles that of mercury poisoning. why? because our little mix also contains mercury! i just wonder where all that stuff comes from when being book_lore.book_mercury.page.2=replicated by the body? whatever, the mercury goes into slot %d -book_lore.book_flower.name=Note -book_lore.book_flower.author=Dave +book_lore.book_flower.name=笔记 +book_lore.book_flower.author=戴夫 book_lore.book_flower.page.1=remember when i mentioned in my first memo that the compound is mostly anorganic? well guess what, the old man shared the fourth ingredient: ipomoea nil, a genus of flower. morning glory! it might be due to its low sulfur content, whatever might be the case, book_lore.book_flower.page.2=it does not work with other flowers. the morning glory goes into slot %d -book_lore.book_syringe.name=Note -book_lore.book_syringe.author=Dave +book_lore.book_syringe.name=笔记 +book_lore.book_syringe.author=戴夫 book_lore.book_syringe.page.1=a little addendum to my fifth message, obviously you have to store this MKU stuff in a container. the R&D nuts used regular metal syringes that they got from medical. surplus ware i presume, they got thousands of needles just lying around. the metal book_lore.book_syringe.page.2=syringe goes into slot %d -book_lore.resignation_note.name=Letter of Resignation -book_lore.resignation_note.author=Kosma +book_lore.resignation_note.name=辞职信 +book_lore.resignation_note.author=科斯马 book_lore.resignation_note.page.1=Management downsized our department again yesterday. Those idiots only have themselves to blame, I don't know what they were expecting after that fiasco. Who the hell leaks that sort of information? We're losing millions and book_lore.resignation_note.page.2=it's ME who's the one out of a job now. I'M the one being asked to resign. I hope you asshats finally learn from your overabundance of mistakes and take that stick out of your ass. book_lore.resignation_note.page.3=I'm not coming back on Friday. Just send the paycheck. -book_lore.memo_stocks.name=Intracorporate Memorandum +book_lore.memo_stocks.name=公司内部备忘录 book_lore.memo_stocks.page.1=Investor Relations - $ $ There's been some glaring discrepancies in the figures provided for the latest quarterly report. It would be prudent for the financial department to make some adjustments, so there won't be any concern. -book_lore.memo_schrab_gsa.name=Internal Memorandum +book_lore.memo_schrab_gsa.name=内部备忘录 book_lore.memo_schrab_gsa.page.1=Contract Management - $ $ Legal has made a breakthrough with the DLA. They've awarded us with a 45 BILLION GSA Schedule for further procurement and research of saralloy. At current estimates, that would be at minimum book_lore.memo_schrab_gsa.page.2=a 40%% profit on related operations, let alone the possibility of future contracts. Due to the confidential nature, all fiscal evidence is to remain private. -book_lore.memo_schrab_rd.name=Internal Memorandum +book_lore.memo_schrab_rd.name=内部备忘录 book_lore.memo_schrab_rd.page.1=Research & Development - $ $ Our main production method of saralloy has been through the new particle accelerator. However, the energy costs are exorbitantly high compared to the amount of output. book_lore.memo_schrab_rd.page.2=Doctor Schrabauer, however, has discovered a new interaction - called "Strange Lepton Oscillation" - that could significantly reduce costs. Through a not entirely understood process, supplied electrons are transmuted into extremely book_lore.memo_schrab_rd.page.3=high-energy photons, through a strange charm. This is an extreme exception to many established particle conversion laws, but preliminary experiments have proved that these protons transmute into up and down quarks, eventually creating saralloy. book_lore.memo_schrab_rd.page.4=Strangely, the prototype requires Tungsten alloyed with small amounts of saralloy. In addition, a special capacitor is required to negate the leftover positive charge. -book_lore.memo_schrab_nuke.name=Research Report +book_lore.memo_schrab_nuke.name=研究报告 book_lore.memo_schrab_nuke.author=Doctor Schrabauer book_lore.memo_schrab_nuke.page.1=Our most recent investigation led us to the effects of nuclear explosions on materials. Thanks to our grant money, we *accidentally* tested our theory on direct saralloy synthesis from uranium. book_lore.memo_schrab_nuke.page.2=Only our cyclotron has actually created saralloy previously. However, at our underground shot at Everwerpen, miniscule traces of saralloy were found in uranium ore at the site. All pure, metallic uranium nearby had fissioned. book_lore.memo_schrab_nuke.page.3=As such, given enough uranium ore concentrated around an explosive, or perhaps even a dirty bomb rich in waste containing fissionable material, one could hypothetically create enough saralloy to collect manually. +book_lore.insanity_1.name=Torn Page +book_lore.insanity_1.author=D Ferguson +book_lore.insanity_1.page.1=August 6th $ $ Months, no, years worth of dicking about wrestling with investors and operating the greatest energy hog in the northern hemisphere has finally paid off. +book_lore.insanity_1.page.2=While we aren't entirely sure what exactly we found - given we ran gigavolt collisions on particles that were still poorly documented - the results couldn't have been more exciting. +book_lore.insanity_1.page.3=We haven't found a name for whatever it is we've found, nor are we sure if we're looking at a new type of particle, a wormhole leading into another dimension, or satan's anus, but I'm sure our PR people can come up with something. +book_lore.insanity_2.name=Torn Page +book_lore.insanity_2.author=D Ferguson +book_lore.insanity_2.page.1=August 8th $ $ We've kept "The Thing" (yes that's what we call it for now) in magnetic isolation for the past days. Spectroscopy tests ended up breaking our spectrometer, but we managed to gain some useful data. +book_lore.insanity_2.page.2=For starters, this thing glows like a christmas tree, radiation photons of about every wavelength you could think of enveloped by a powerful infrared corona. The logical conclusion is that looking at it with your naked +book_lore.insanity_2.page.3=eye would most likely kill you. Now that begs the question: How can a particle this tiny radiate such immense energy? What are you hiding, little man? +book_lore.insanity_3.name=Torn Page +book_lore.insanity_3.author=D Ferguson +book_lore.insanity_3.page.1=August 22nd $ $ I haven't slept right in days. Doc said he couldn't find anything. Been on all sorts of medication now, but the headaches only get worse. Lab boys suspect it might be contamination from the incident two weeks ago. +book_lore.insanity_3.page.2=Doc said it's not that likely, ARS is different. I might need to take some time off if this continues. The Thing is still in containment, the lab boys speculate if the field goes down, the entire complex turns into a mushroom cloud. +book_lore.insanity_3.page.3=I'm not sure how administration can keep this calm, but i don't get paid enough to waste thoughts on that. +book_lore.insanity_4.name=Torn Page +book_lore.insanity_4.author=D Ferguson +book_lore.insanity_4.page.1=August 28th $ $ They denied my request for leave and I've been pushing through the past few days. Headaches are getting worse. I'm not the only one who's feeling it, either. Some of the lab boys are in a similar situation. +book_lore.insanity_4.page.2=All the while The Thing has left the complex - GOOD. Some suits came in yesterday and had it shipped off, god knows where. One of the lab boys, Zachary, said they're probably burying the containment vessel in the desert, slowly +book_lore.insanity_4.page.3=trying to "fizzle out" The Thing far off from civilization. I say let's shoot it into space. Needless to say, our investors cut all funding for the time being. I should start looking for another job. +book_lore.insanity_5.name=Torn Page +book_lore.insanity_5.author=D Ferguson +book_lore.insanity_5.page.1=September 11th $ $ I'm having this re-occurring nightmare. I'm walking around in an open space and there's these people everywhere, people in rubber suits and freakishly deformed faces. It's always the same nightmare, +book_lore.insanity_5.page.2=and one of the guys from the lab I've spoken with lately has had the same dream. Meanwhile my post has been rather boring, the accelerator has been shut down, all ongoing projects are on halt and our budget is slowly melting away. +book_lore.insanity_5.page.3=Something is telling me that The Thing is still out there somewhere. I can feel it. +book_lore.insanity_6.name=Torn Page +book_lore.insanity_6.author=D Ferguson +book_lore.insanity_6.page.1=October 3rd $ $ Half the staff is dead, most of the rest is in the ICU. My condition hasn't changed in the past weeks, for better or worse. +book_lore.insanity_6.page.2=Reality is starting to feel less and less real however. Sometimes I look up into the sky at night and hallucinate that thing we discovered all those weeks ago. +book_lore.insanity_6.page.3=That same brilliant sheen of crimson that our spectrometer spat out. My doc says it's delirium and stress caused by the incident, and perhaps hes right, but the meds aren't working at all. +book_lore.insanity_7.name=Torn Page +book_lore.insanity_7.author=D Ferguson +book_lore.insanity_7.page.1=December 12th $ $ I've been out of a job, but to be honest I'm somewhat thankful about it. My old workplace has gone up in flames - or so they say. +book_lore.insanity_7.page.2=The seismological observatory a couple miles south recorded constant earthquakes for days on end, not that anyone else would have noticed this deep in the desert. +book_lore.insanity_7.page.3=I have concluded that this place was cursed, making everyone sick and then descending into hell like some sort of Edgar Allan Poe story. Good riddance. cannery.f1=[按F1键获取帮助] cannery.centrifuge=气体离心机 cannery.centrifuge.0=气体离心机可以使用通用流体管道传输流体。 @@ -545,6 +579,7 @@ container.fluidtank=储罐 container.fileCabinet=文件柜 container.forceField=力场发生器 container.frackingTower=水力压裂塔 +container.furnaceCombination=复式炼焦炉 container.furnaceIron=铁炉 container.furnaceSteel=钢炉 container.fusionMultiblock=大型聚变反应堆 @@ -554,6 +589,7 @@ container.gasFlare=高架火炬 container.generator=研究型反应堆 container.hadron=粒子加速器 container.heaterFirebox=燃烧室 +container.heaterHeatex=热交换器 container.heaterOilburner=流体燃烧器 container.heaterOven=加热炉 container.iGenerator=工业发电机 @@ -570,6 +606,7 @@ container.machineFEL=FEL自由电子激光器 container.machineITER=聚变反应堆 container.machineLargeTurbine=工业汽轮机 container.machineLiquefactor=液化机 +container.machineMixer=工业搅拌机 container.machineRefinery=炼油厂 container.machineSelenium=星型发动机 container.machineShredder=粉碎机 @@ -647,6 +684,17 @@ container.uf6_tank=六氟化铀储罐 container.wasteDrum=乏燃料池 container.watzPowerplant=Watz发电厂 container.zirnox=锆诺克斯核反应堆 +crucible.aa=高级合金生产 +crucible.ferro=铀铁合金生产 +crucible.hematite=赤铁矿炼铁 +crucible.hss=高速钢生产 +crucible.malachite=孔雀石炼铜 +crucible.redcopper=紫铜生产 +crucible.steel=钢铁生产 +crucible.steelMeteoric=陨铁炼钢 +crucible.steelPig=生铁炼钢 +crucible.steelWrought=锻铁炼钢 +crucible.tcalloy=锝钢合金生产 death.attack.acid=%1$s 掉进了酸里 death.attack.acidPlayer=%1$s 被 %2$s 溶解 death.attack.ams=%1$s 沐浴在尚未被人类科学命名的致命粒子中 @@ -703,9 +751,7 @@ death.attack.taint=%1$s 死于恶性肿瘤 death.attack.tau=%1$s 被 %2$s 用带负电荷的陶子射穿 death.attack.tauBlast=%1$s 对XVL1456充能时间过长,被炸成碎片 death.attack.teleporter=%1$s 被传送到虚空 -desc.item.pileRod=§e使用钻孔石墨插入$§E使用螺丝刀拔出$ - - +desc.item.pileRod=§e使用钻孔石墨插入$§E使用螺丝刀拔出$ desc.item.rtgDecay=衰变为:%s desc.item.rtgHeat=功率级别:%s desc.item.wasteCooling=在乏燃料池中冷却 @@ -836,6 +882,7 @@ hbmfluid.biofuel=生物燃料 hbmfluid.biogas=沼气 hbmfluid.bitumen=沥青 hbmfluid.carbondioxide=二氧化碳 +hbmfluid.coalcreosote=煤焦杂酚油 hbmfluid.coalgas=煤汽油 hbmfluid.coalgas_leaded=含铅煤汽油 hbmfluid.coaloil=煤液化油 @@ -891,6 +938,7 @@ hbmfluid.reclaimed=再生油 hbmfluid.salient=绿色液体 hbmfluid.sas3=三硫化Sa hbmfluid.schrabidic=Sa酸 +hbmfluid.seedslurry=播种浆料 hbmfluid.smear=工业油 hbmfluid.spentsteam=低压蒸汽 hbmfluid.steam=蒸汽 @@ -904,6 +952,7 @@ hbmfluid.wastefluid=液态核废料 hbmfluid.wastegas=气态核废料 hbmfluid.water=水 hbmfluid.watz=毒泥浆 +hbmfluid.woodoil=木油 hbmfluid.xenon=氙气 hbmfluid.xpjuice=经验汁 hbmpseudofluid.none=空 @@ -958,12 +1007,14 @@ hbmmat.lignite=褐煤 hbmmat.lithium=锂 hbmmat.magnetizedtungsten=磁化钨 hbmmat.malachite=孔雀石 +hbmmat.meteoriciron=陨铁 hbmmat.mingrade=工业级铜 hbmmat.neptunium237=镎-237 hbmmat.niobium=铌 hbmmat.obsidian=黑曜岩 hbmmat.osmiridium=铱锇合金 hbmmat.petcoke=石油焦炭 +hbmmat.pigiron=生铁 hbmmat.plutonium=钚 hbmmat.plutonium238=钚-238 hbmmat.plutonium239=钚-239 @@ -999,6 +1050,7 @@ hbmmat.uranium235=铀-235 hbmmat.uranium238=铀-238 hbmmat.whitephosphorus=白磷 hbmmat.workersalloy=Desh +hbmmat.wroughtiron=锻铁 matshape.block=%s 块 matshape.blocks=%s 块 matshape.ingot=%s 锭 @@ -1017,6 +1069,7 @@ info.template_out=输出: info.template_out_p=输出: info.template_seconds=秒 info.template_time=生产耗时: +item.acetylene_torch.name=乙炔焊罐 item.ajr_boots.name=AJR 动力装甲靴子 item.ajr_helmet.name=AJR 动力装甲头盔 item.ajr_legs.name=AJR 动力装甲护腿 @@ -1134,9 +1187,9 @@ item.ammo_arty_phosphorus.name=16英寸磷炮弹 item.ammo_arty_phosphorus_multi.name=16英寸多弹头磷炮弹 item.ammo_cell.name=能量单元 item.ammo_container.name=万能弹药盒 -item.ammo_dart.name=塑料镖(凋零) +item.ammo_dart.name=塑料镖[凋零] item.ammo_dart_nerf.name=NERF 飞镖 -item.ammo_dart_nuclear.name=塑料镖(定时炸药) +item.ammo_dart_nuclear.name=塑料镖[定时炸药] item.ammo_dgk.name=双联守门员近防系统200发弹药 item.ammo_fireext.name=灭火器 水罐 item.ammo_fireext_foam.name=灭火器 泡沫罐 @@ -1189,7 +1242,6 @@ item.ammo_rocket_sleek.name=84mm火箭弹[IF-R&D] item.ammo_rocket_toxic.name=84mm火箭弹[化学] item.ammo_shell.name=240mm炮弹 item.ammo_shell_apfsds_du.name=240mm 贫铀尾翼稳定脱壳穿甲弹 - item.ammo_shell_apfsds_t.name=240mm 钨心尾翼稳定脱壳穿甲弹 item.ammo_shell_explosive.name=240mm 高爆炮弹 item.ammo_shell_w9.name=240mm W9核子炮弹 @@ -1399,6 +1451,7 @@ item.blades_iron.name=铁制刀片 item.blades_schrabidium.name=Sa326刀片 item.blades_steel.name=钢制刀片 item.blades_titanium.name=钛制刀片 +item.blowtorch.name=喷灯 item.board_copper.name=铜片 item.bobmazon_hidden.name=隐藏目录 item.bobmazon_machines.name=Bobmazon: 方块和机器 @@ -1433,7 +1486,9 @@ item.boy_kit.name=小男孩 套件 item.boy_propellant.name=炸药 item.boy_shielding.name=中子屏蔽罩 item.boy_target.name=次临界铀-235标靶 -item.briquette_lignite.name=褐煤煤球 +item.briquette.coal.name=煤球 +item.briquette.lignite.name=褐煤煤球 +item.briquette.wood.name=木屑球 item.bucket_acid.name=一桶酸 item.bucket_mud.name=一桶毒泥 item.bucket_schrabidic_acid.name=一桶Sa酸 @@ -1555,6 +1610,7 @@ item.chernobylsign.name=辐射警告标志战斧 item.chlorine_pinwheel.name=氯气转轮 item.chlorophyte_pickaxe.name=叶绿镐 item.chocolate.name=“我是-镭牌”巧克力 +item.chocolate.desc=镭巧克力?我很确定这是冰毒。 item.chocolate_milk.name=巧克力牛奶 item.chopper.name=猎人直升机 item.chopper_blades.name=猎人直升机旋翼 @@ -1756,6 +1812,7 @@ item.debris_metal.name=断裂金属棒 item.debris_shrapnel.name=走道碎片 item.definitelyfood.name=完全不脏牌军粮 item.defuser.name=高科技拆弹装置 +item.defuser_gold.name=黄金剪线钳 item.demon_core_closed.name=封闭的恶魔核心 item.demon_core_open.name=打开的恶魔核心 item.desh_axe.name=工人合金斧 @@ -1791,6 +1848,12 @@ item.door_bunker.name=仓门 item.door_metal.name=金属门 item.door_office.name=办公室门 item.dosimeter.name=剂量计 +item.drillbit_desh.name=Desh钻头 +item.drillbit_desh_diamond.name=Desh钻头(镶钻) +item.drillbit_hss.name=高速钢钻头 +item.drillbit_hss_diamond.name=高速钢钻头(镶钻) +item.drillbit_steel.name=钢钻头 +item.drillbit_steel_diamond.name=钢钻头(镶钻) item.drill_titanium.name=钛钻头 item.drax.name=采掘钻 item.drax_mk2.name=强化型采掘钻 @@ -1845,6 +1908,7 @@ item.fins_quad_titanium.name=小型钛翼 item.fins_small_steel.name=小型钢栅格翼 item.fins_tri_steel.name=大型钢翼 item.five_htp.name=5-羟色胺药丸 +item.five_htp.desc=移除所有迪伽马辐射,并获得10分钟稳定效果 item.flame_conspiracy.name=阴谋论 item.flame_conspiracy.desc=钢梁不能熔化喷气燃料! item.flame_opinion.name=个人观点 @@ -1877,6 +1941,7 @@ item.fluid_tank_lead_full.name=危险品罐: item.fluorite.name=氟石粉 item.flywheel_beryllium.name=铍制飞轮 item.fmn.name=氟硝西泮片 +item.fmn.desc=移除2000mDRX以上的所有迪伽马辐射 item.folly_bullet.name=128mm星辉弹头 item.folly_bullet_du.name=128mm贫铀弹头 item.folly_bullet_nuclear.name=128mm核弹头 @@ -1919,6 +1984,7 @@ item.gas_mask_m65.name=M65-Z防毒面具 item.gas_mask_mono.name=防一氧化碳面罩 item.gas_mask_olde.name=皮革防毒面具 item.gas_petroleum.name=石油气罐 +item.gas_tester.name=气体传感器 item.gear_large.name=大型齿轮 item.gear_large_steel.name=大型钢齿轮 item.geiger_counter.name=手持盖革计数器 @@ -2226,7 +2292,6 @@ item.ingot_smore.name=S'more 锭 item.ingot_solinium.name=Sa327锭 item.ingot_sr90.name=锶-90锭 item.ingot_starmetal.name=§9星辉锭§r - item.ingot_steel.name=钢锭 item.ingot_steel_dusted.name=粉末钢锭 item.ingot_tantalium.name=钽锭 @@ -2647,6 +2712,21 @@ item.oil_detector.noOil=未发现油田 item.oil_tar.coal.name=煤焦油 item.oil_tar.crude.name=焦油 item.oil_tar.crack.name=裂化焦油 +item.oil_tar.wood.name=木馏油 +item.ore.asbestos=石棉 +item.ore.borax=硼砂 +item.ore.copper=铜 +item.ore.gold=金 +item.ore.iron=铁 +item.ore.niobium=铌 +item.ore.titanium=钛 +item.ore.tungsten=钨 +item.ore_bedrock.name=基岩%s矿 +item.ore_centrifuged.name=离心%s矿 +item.ore_cleaned.name=清洁%s矿 +item.ore_enriched.name=富集%s矿 +item.ore_purified.name=净化%s矿 +item.ore_separated.name=分离%s矿 item.overfuse.name=奇异螺丝刀 item.overfuse.desc=说啥? item.oxy_mask.name=氧气面罩 @@ -2755,14 +2835,20 @@ item.pile_rod_source.desc=§d[中子源棒] item.pile_rod_uranium.name=芝加哥反应堆 铀棒 item.pile_rod_uranium.desc=§a[可反应核燃料]$§e使用手钻取堆芯样本 item.pill_iodine.name=碘丸 +item.pill_iodine.desc=消除负面buff item.pill_herbal.name=草药膏 +item.pill_herbal.desc=有效治疗肺部疾病和轻度辐射中毒$有副作用 item.pin.name=发夹 item.pin.desc=“*未修改*撬开标准锁的成功率约为10%。 item.pipes_steel.name=钢管 item.pipes_steel.desc=为了避免合成冲突,所以造价如此高昂 -item.pirfenidone.name=吡咯菲酮 item.piston_selenium.name=星型发动机活塞 +item.piston_set_desh.name=Desh活塞组 +item.piston_set_dura.name=高速钢活塞组 +item.piston_set_starmetal.name=星辉活塞组 +item.piston_set_steel.name=钢活塞组 item.plan_c.name=C计划 +item.plan_c.desc=致死 item.plant_item.rope.name=麻绳 item.plant_item.tobacco.name=烟叶 item.plate_advanced_alloy.name=高级合金板 @@ -2924,6 +3010,7 @@ item.radaway.name=消辐宁 item.radaway_flush.name=超级消辐宁 item.radaway_strong.name=强效消辐宁 item.radx.name=防辐射药 +item.radx.desc=在3分钟内增加0.2(37%)的抗辐射能力 item.rag.name=布 item.rag_damp.name=湿布 item.rag_piss.name=沾有尿的布 @@ -3268,6 +3355,7 @@ item.singularity_counter_resonant.name=可控反振谐奇点 item.singularity_spark.name=Spark奇点 item.singularity_super_heated.name=超热共振奇点 item.siox.name=SiOX抗癌药物 +item.siox.desc=使用石棉的力量逆转间皮瘤! item.siren_track.name=警报声轨 item.smashing_hammer.name=粉碎锤 item.solid_fuel.name=固体燃料 @@ -3529,6 +3617,7 @@ item.wrench.name=管道扳手 item.wrench_archineer.name=Archineer扳手 item.wrench_flipped.name=刺刀扳手 item.xanax.name=NAXA 抗迪伽马药物 +item.xanax.desc=移除500mDRX迪伽马辐射 item.zirconium_legs.name=锆质护腿 itemGroup.tabBlocks=HBM 矿石和方块 itemGroup.tabConsumable=HBM 食物和装备 @@ -3664,6 +3753,9 @@ tile.block_cap_sparkle.name=核子可乐瓶盖方块 tile.block_cap_star.name=夕阳沙士星星瓶盖方块 tile.block_cap_sunset.name=夕阳沙士瓶盖方块 tile.block_cobalt.name=钴块 +tile.block_coke.coal.name=煤焦炭块 +tile.block_coke.lignite.name=褐煤焦炭块 +tile.block_coke.petroleum.name=石油焦炭块 tile.block_coltan.name=钽块 tile.block_combine_steel.name=CMB钢块 tile.block_copper.name=铜块 @@ -3939,8 +4031,8 @@ tile.dirt_dead.name=泥渣 tile.dirt_oily.name=油泥 tile.drill_pipe.name=钻杆 tile.door_bunker.name=仓门 -tile.door_office.name=办公室门 tile.door_metal.name=金属门 +tile.door_office.name=办公室门 tile.ducrete.name=高密度贫铀混凝土瓷砖 tile.ducrete_stairs.name=高密度贫铀混凝土瓷砖楼梯 tile.ducrete_smooth.name=高密度贫铀混凝土 @@ -3973,7 +4065,10 @@ tile.flame_war.name=盒中论战 tile.float_bomb.name=悬浮炸弹 tile.fluid_duct.name=通用流体管道 tile.fluid_duct_box.name=通用流体管道(方形) +tile.fluid_duct_gauge.name=流量计管 +tile.fluid_duct_gauge.desc=显示每个游戏刻在管网有多少流体移动的管道$由桶或罐连接的分离网络被视为一个共享网络。 tile.fluid_duct_neo.name=通用流体管道 +tile.fluid_duct_paintable.name=可喷漆涂层通用流体导管 tile.fluid_duct_solid.name=带涂层的通用流体导管 tile.foam_layer.name=泡沫层 tile.foundry_basin.name=铸造水池 @@ -3986,6 +4081,8 @@ tile.frozen_dirt.name=冰冻土 tile.frozen_grass.name=冰冻草 tile.frozen_log.name=冰冻原木 tile.frozen_planks.name=冰冻木板 +tile.furnace_combination.name=复式炼焦炉 +tile.furnace_combination.desc=一种可以生产木炭和煤焦炭的大熔炉$产生流体副产品$传热速率:ΔT*0.25 TU/T tile.furnace_iron.name=铁炉 tile.furnace_iron.desc=更大、效率更高的炉子,在闲置时不会浪费燃料。 tile.furnace_steel.name=钢炉 @@ -4059,6 +4156,8 @@ tile.heater_electric.name=电加热器 tile.heater_electric.desc=利用电能产生热量$以85%的效率接受来自底部的热量$可使用螺丝刀进行配置。 tile.heater_firebox.name=燃烧室 tile.heater_firebox.desc=燃烧固体燃料以产生热量。 +tile.heater_heatex.name=换热加热器 +tile.heater_heatex.desc=从热流体中产生热量。 tile.heater_oilburner.name=流体燃烧器 tile.heater_oilburner.desc=燃烧可燃液体产生热量。 tile.heater_oven.name=加热炉 @@ -4110,6 +4209,7 @@ tile.machine_chungus.desc=效率: 85%% tile.machine_coal_off.name=火力发电机 tile.machine_coal_on.name=火力发电机 tile.machine_combine_factory.name=CMB炼钢炉 +tile.machine_combustion_engine.name=工业内燃机 tile.machine_condenser.name=蒸汽冷凝器 tile.machine_controller.name=反应堆遥控模块 tile.machine_converter_he_rf.name=HE→RF转换器 @@ -4130,6 +4230,7 @@ tile.machine_drill.name=自动采矿钻机 tile.machine_electric_furnace_off.name=电炉 tile.machine_electric_furnace_on.name=电炉 tile.machine_epress.name=电动锻压机 +tile.machine_excavator.name=大型采矿钻机 tile.machine_fel.name=FEL自由电子激光器 tile.machine_fensu.name=FEnSU飞轮储能系统 tile.machine_flare.name=高架火炬 @@ -4151,6 +4252,7 @@ tile.machine_microwave.name=微波炉 tile.machine_mining_laser.name=采矿激光 tile.machine_minirtg.name=放射性同位素电池 tile.machine_missile_assembly.name=导弹装配台 +tile.machine_mixer.name=工业搅拌机 tile.machine_nuke_furnace_off.name=核熔炉 tile.machine_nuke_furnace_on.name=核熔炉 tile.machine_orbus.name=重型磁约束储罐 @@ -4248,6 +4350,7 @@ tile.ore_alexandrite.name=亚历山大变石矿 tile.ore_aluminium.name=铝矿石 tile.ore_asbestos.name=石棉矿 tile.ore_australium.name=奥斯矿石 +tile.ore_bedrock.name=基岩矿石 tile.ore_bedrock_coltan.name=基岩钶钽铁矿 tile.ore_bedrock_oil.name=基岩油层 tile.ore_beryllium.name=铍矿石 @@ -4321,7 +4424,7 @@ tile.pink_slab.name=粉色木半砖 tile.pink_stairs.name=粉色木台阶 tile.plant_dead.name=死亡植物 tile.plant_flower.foxglove.name=毛地黄 -tile.plant_flower.nightshade.name=致命茄 +tile.plant_flower.nightshade.name=颠茄 tile.plant_flower.tobacco.name=烟草 tile.plant_flower.weed.name=大麻 tile.plant_reeds.name=芦苇 @@ -4376,6 +4479,7 @@ tile.reactor_inserter.name=反应堆燃料插入器 tile.red_barrel.name=炸药桶 tile.red_cable.name=紫铜电线 tile.red_cable_classic.name=紫铜电缆(经典型) +tile.red_cable_paintable.name=可涂漆紫铜线 tile.red_connector.name=电力连接器 tile.red_pylon.name=电线杆 tile.red_pylon_large.name=大型输电塔 @@ -4536,7 +4640,7 @@ trait.rbmk.depletion=燃料消耗: %s trait.rbmk.diffusion=扩散度: %s trait.rbmk.fluxFunc=中子放射函数: %s trait.rbmk.funcType=中子放射函数类型: %s -trait.rbmk.heat=满功率时每刻产生的热量: %s +trait.rbmk.heat=每接受一个中子产生的热量: %s trait.rbmk.melt=熔点: %s trait.rbmk.neutron.any=所有中子 trait.rbmk.neutron.fast=快中子 @@ -4553,7 +4657,7 @@ trait.rbmx.depletion=衰变: %s trait.rbmx.diffusion=能量潮涌: %s trait.rbmx.fluxFunc=F迪伽马粒子放射函数: %s trait.rbmx.funcType=F迪伽马粒子放射函数类型: %s -trait.rbmx.heat=满功率时每刻产生的热量: %s +trait.rbmx.heat=满功率下每刻产生的热量: %s trait.rbmx.melt=崩溃深度: %s trait.rbmk.neutron.any.x=所有非欧几里德形时空平面 trait.rbmk.neutron.fast.x=椭圆非欧几里德形时空平面 diff --git a/src/main/resources/assets/hbm/models/turrets/turret_sentry.obj b/src/main/resources/assets/hbm/models/turrets/turret_sentry.obj new file mode 100644 index 000000000..24cf1ae35 --- /dev/null +++ b/src/main/resources/assets/hbm/models/turrets/turret_sentry.obj @@ -0,0 +1,2533 @@ +# Blender v2.79 (sub 0) OBJ File: 'turret_sentry.blend' +# www.blender.org +o Pivot +v 0.125000 1.000000 0.125000 +v 0.000000 1.125000 0.125000 +v 0.125000 1.000000 -0.125000 +v 0.000000 1.125000 -0.125000 +v 0.125000 1.250000 -0.125000 +v 0.125000 1.338388 -0.088388 +v 0.125000 1.375000 0.000000 +v 0.125000 1.338388 0.088388 +v 0.125000 1.250000 0.125000 +v 0.000000 1.375000 0.000000 +v 0.000000 1.338388 -0.088388 +v 0.000000 1.250000 -0.125000 +v 0.000000 1.338388 0.088388 +v 0.000000 1.250000 0.125000 +v -0.125000 1.000000 0.125000 +v -0.125000 1.000000 -0.125000 +v -0.125000 1.125000 -0.125000 +v -0.125000 1.125000 0.125000 +v 0.156250 1.250000 -0.062500 +v 0.156250 1.294194 -0.044194 +v 0.156250 1.312500 0.000000 +v 0.156250 1.294194 0.044194 +v 0.156250 1.250000 0.062500 +v 0.156250 1.205806 0.044194 +v 0.156250 1.187500 -0.000000 +v 0.156250 1.205806 -0.044194 +v -0.156250 1.250000 -0.062500 +v -0.156250 1.294194 -0.044194 +v -0.156250 1.312500 0.000000 +v -0.156250 1.294194 0.044194 +v -0.156250 1.250000 0.062500 +v -0.156250 1.205806 0.044194 +v -0.156250 1.187500 -0.000000 +v -0.156250 1.205806 -0.044194 +v 0.125000 1.125000 -0.125000 +v 0.125000 1.125000 0.125000 +v 0.132583 0.875000 -0.132583 +v 0.187500 0.875000 -0.000000 +v 0.132583 0.875000 0.132583 +v 0.000000 0.875000 0.187500 +v -0.132583 0.875000 0.132583 +v -0.187500 0.875000 0.000000 +v 0.000000 0.875000 -0.187500 +v -0.132583 0.875000 -0.132583 +v 0.132583 1.000000 -0.132583 +v 0.187500 1.000000 -0.000000 +v 0.132583 1.000000 0.132583 +v 0.000000 1.000000 0.187500 +v -0.132583 1.000000 0.132583 +v -0.187500 1.000000 0.000000 +v -0.132583 1.000000 -0.132583 +v 0.000000 1.000000 -0.187500 +v -0.156250 1.205806 -0.044194 +v -0.156250 1.187500 -0.000000 +v -0.156250 1.205806 0.044194 +v -0.156250 1.250000 0.062500 +v -0.156250 1.294194 0.044194 +v -0.156250 1.312500 0.000000 +v -0.156250 1.294194 -0.044194 +v -0.156250 1.250000 -0.062500 +v 0.156250 1.205806 -0.044194 +v 0.156250 1.187500 -0.000000 +v 0.156250 1.205806 0.044194 +v 0.156250 1.250000 0.062500 +v 0.156250 1.294194 0.044194 +v 0.156250 1.312500 0.000000 +v 0.156250 1.294194 -0.044194 +v 0.156250 1.250000 -0.062500 +v 0.132583 0.875000 -0.132583 +v 0.187500 0.875000 -0.000000 +v 0.132583 0.875000 0.132583 +v 0.000000 0.875000 0.187500 +v -0.132583 0.875000 0.132583 +v -0.187500 0.875000 0.000000 +v 0.000000 0.875000 -0.187500 +v -0.132583 0.875000 -0.132583 +v 0.132583 1.000000 -0.132583 +v 0.187500 1.000000 -0.000000 +v 0.132583 1.000000 0.132583 +v 0.000000 1.000000 0.187500 +v -0.132583 1.000000 0.132583 +v -0.187500 1.000000 0.000000 +v -0.132583 1.000000 -0.132583 +v 0.000000 1.000000 -0.187500 +v 0.125000 1.125000 0.125000 +v 0.125000 1.125000 -0.125000 +v 0.000000 1.250000 0.125000 +v 0.000000 1.338388 0.088388 +v 0.000000 1.250000 -0.125000 +v 0.000000 1.338388 -0.088388 +v 0.000000 1.375000 0.000000 +v 0.125000 1.250000 0.125000 +v 0.125000 1.338388 0.088388 +v 0.125000 1.375000 0.000000 +v 0.125000 1.338388 -0.088388 +v 0.125000 1.250000 -0.125000 +v 0.000000 1.125000 -0.125000 +v 0.000000 1.125000 0.125000 +vt 0.325674 0.214932 +vt 0.333122 0.249997 +vt 0.282262 0.249997 +vt 0.230769 0.250000 +vt 0.205128 0.350000 +vt 0.205128 0.250000 +vt 0.256410 0.350000 +vt 0.256410 0.250000 +vt 0.078644 0.525000 +vt 0.089744 0.503355 +vt 0.100843 0.525000 +vt 0.168387 0.525000 +vt 0.179487 0.503355 +vt 0.190587 0.525000 +vt 0.205128 0.150000 +vt 0.230769 0.200000 +vt 0.410256 0.250000 +vt 0.384615 0.200000 +vt 0.410256 0.150000 +vt 0.282256 0.049881 +vt 0.333183 0.000227 +vt 0.333183 0.049881 +vt 0.075924 0.725000 +vt 0.038462 0.798051 +vt 0.000999 0.725000 +vt 0.038462 0.851949 +vt 0.075924 0.925000 +vt 0.038462 0.998051 +vt 0.333122 0.299586 +vt 0.282262 0.299586 +vt 0.289710 0.214932 +vt 0.307692 0.200408 +vt 0.230769 0.350000 +vt 0.097592 0.540305 +vt 0.089744 0.546645 +vt 0.081895 0.540305 +vt 0.081895 0.509695 +vt 0.097592 0.509695 +vt 0.179487 0.546645 +vt 0.171638 0.540305 +vt 0.171638 0.509695 +vt 0.187336 0.509695 +vt 0.187336 0.540305 +vt 0.230769 0.150000 +vt 0.384615 0.250000 +vt 0.384615 0.150000 +vt 0.333183 0.099536 +vt 0.325725 0.134647 +vt 0.307719 0.149191 +vt 0.289714 0.134647 +vt 0.282256 0.099536 +vt 0.282256 0.000227 +vt 0.011972 0.673345 +vt 0.038462 0.651949 +vt 0.064951 0.673345 +vt 0.064951 0.776655 +vt 0.011972 0.776655 +vt 0.011972 0.976655 +vt 0.000999 0.925000 +vt 0.011972 0.873345 +vt 0.064951 0.873345 +vt 0.064951 0.976655 +vt 0.384615 0.150000 +vt 0.358974 0.200000 +vt 0.358974 0.150000 +vt 0.256410 0.150000 +vt 0.230769 0.200000 +vt 0.230769 0.150000 +vt 0.333333 0.150000 +vt 0.307692 0.200000 +vt 0.282051 0.150000 +vt 0.307692 0.150000 +vt 0.333333 0.200000 +vt 0.282051 0.200000 +vt 0.166667 0.625000 +vt 0.102564 0.600000 +vt 0.166667 0.600000 +vt 0.166667 0.575000 +vt 0.102564 0.550000 +vt 0.166667 0.550000 +vt 0.166667 0.525000 +vt 0.102564 0.500000 +vt 0.166667 0.500000 +vt 0.166667 0.675000 +vt 0.102564 0.650000 +vt 0.166667 0.650000 +vt 0.102564 0.625000 +vt 0.102564 0.575000 +vt 0.102564 0.525000 +vt 0.166667 0.700000 +vt 0.102564 0.675000 +vt 0.025641 0.850000 +vt 0.051282 0.800000 +vt 0.051282 0.850000 +vt 0.076923 0.850000 +vt 0.102564 0.800000 +vt 0.102564 0.850000 +vt 0.128205 0.850000 +vt 0.153846 0.800000 +vt 0.153846 0.850000 +vt 0.179487 0.850000 +vt 0.205128 0.800000 +vt 0.205128 0.850000 +vt 0.000000 0.850000 +vt 0.025641 0.800000 +vt 0.076923 0.800000 +vt 0.128205 0.800000 +vt 0.179487 0.800000 +vt 0.384615 0.200000 +vt 0.256410 0.200000 +vt 0.102564 0.700000 +vt 0.000000 0.800000 +vn -1.0000 0.0000 0.0000 +vn 0.0000 1.0000 0.0000 +vn 1.0000 0.0000 0.0000 +vn 0.0000 0.0000 1.0000 +vn 0.0000 0.0000 -1.0000 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 0.1951 -0.9808 +vn 0.0000 0.1951 0.9808 +vn 0.0000 0.7071 -0.7071 +vn 0.0000 0.7071 0.7071 +vn 0.0000 -0.7071 0.7071 +vn 0.0000 -0.7071 -0.7071 +vn -0.7071 0.0000 -0.7071 +vn -0.7071 0.0000 0.7071 +vn 0.7071 0.0000 0.7071 +vn 0.7071 0.0000 -0.7071 +s off +f 11/1/1 12/2/1 14/3/1 +f 18/4/1 16/5/1 15/6/1 +f 4/7/2 18/4/2 2/8/2 +f 23/9/3 25/10/3 19/11/3 +f 27/12/1 33/13/1 31/14/1 +f 1/15/4 2/16/4 15/6/4 +f 16/17/5 4/18/5 3/19/5 +f 36/20/3 3/21/3 35/22/3 +f 38/23/6 40/24/6 42/25/6 +f 48/26/2 46/27/2 52/28/2 +f 12/2/1 4/29/1 2/30/1 +f 2/30/1 14/3/1 12/2/1 +f 14/3/1 13/31/1 11/1/1 +f 13/31/1 10/32/1 11/1/1 +f 18/4/1 17/33/1 16/5/1 +f 4/7/2 17/33/2 18/4/2 +f 19/11/3 20/34/3 21/35/3 +f 21/35/3 22/36/3 23/9/3 +f 23/9/3 24/37/3 25/10/3 +f 25/10/3 26/38/3 19/11/3 +f 19/11/3 21/35/3 23/9/3 +f 29/39/1 28/40/1 27/12/1 +f 27/12/1 34/41/1 33/13/1 +f 33/13/1 32/42/1 31/14/1 +f 31/14/1 30/43/1 29/39/1 +f 29/39/1 27/12/1 31/14/1 +f 36/44/4 2/16/4 1/15/4 +f 2/16/4 18/4/4 15/6/4 +f 17/45/5 4/18/5 16/17/5 +f 4/18/5 35/46/5 3/19/5 +f 5/47/3 6/48/3 7/49/3 +f 7/49/3 8/50/3 9/51/3 +f 36/20/3 1/52/3 3/21/3 +f 7/49/3 9/51/3 5/47/3 +f 9/51/3 36/20/3 5/47/3 +f 35/22/3 5/47/3 36/20/3 +f 42/25/6 44/53/6 43/54/6 +f 43/54/6 37/55/6 38/23/6 +f 38/23/6 39/56/6 40/24/6 +f 40/24/6 41/57/6 42/25/6 +f 42/25/6 43/54/6 38/23/6 +f 52/28/2 51/58/2 50/59/2 +f 50/59/2 49/60/2 48/26/2 +f 48/26/2 47/61/2 46/27/2 +f 46/27/2 45/62/2 52/28/2 +f 52/28/2 50/59/2 48/26/2 +s 1 +f 86/63/5 89/64/7 96/65/7 +f 92/66/8 98/67/4 85/68/4 +f 89/64/7 95/69/9 96/65/7 +f 91/70/2 93/71/10 94/72/2 +f 90/73/9 94/72/2 95/69/9 +f 88/74/10 92/66/8 93/71/10 +f 67/75/9 58/76/2 66/77/2 +f 65/78/10 56/79/4 64/80/4 +f 63/81/11 54/82/6 62/83/6 +f 61/84/12 60/85/5 68/86/5 +f 68/86/5 59/87/9 67/75/9 +f 66/77/2 57/88/10 65/78/10 +f 64/80/4 55/89/11 63/81/11 +f 62/90/6 53/91/12 61/84/12 +f 83/92/13 74/93/1 82/94/1 +f 81/95/14 72/96/4 80/97/4 +f 79/98/15 70/99/3 78/100/3 +f 77/101/16 75/102/5 84/103/5 +f 84/104/5 76/105/13 83/92/13 +f 82/94/1 73/106/14 81/95/14 +f 80/97/4 71/107/15 79/98/15 +f 78/100/3 69/108/16 77/101/16 +f 86/63/5 97/109/5 89/64/7 +f 92/66/8 87/110/8 98/67/4 +f 89/64/7 90/73/9 95/69/9 +f 91/70/2 88/74/10 93/71/10 +f 90/73/9 91/70/2 94/72/2 +f 88/74/10 87/110/8 92/66/8 +f 67/75/9 59/87/9 58/76/2 +f 65/78/10 57/88/10 56/79/4 +f 63/81/11 55/89/11 54/82/6 +f 61/84/12 53/91/12 60/85/5 +f 68/86/5 60/85/5 59/87/9 +f 66/77/2 58/76/2 57/88/10 +f 64/80/4 56/79/4 55/89/11 +f 62/90/6 54/111/6 53/91/12 +f 83/92/13 76/105/13 74/93/1 +f 81/95/14 73/106/14 72/96/4 +f 79/98/15 71/107/15 70/99/3 +f 77/101/16 69/108/16 75/102/5 +f 84/104/5 75/112/5 76/105/13 +f 82/94/1 74/93/1 73/106/14 +f 80/97/4 72/96/4 71/107/15 +f 78/100/3 70/99/3 69/108/16 +o Body +v 0.250000 1.375000 -0.250000 +v 0.250000 1.375000 0.250000 +v -0.250000 1.375000 0.250000 +v -0.250000 1.375000 -0.250000 +v 0.250000 1.625000 -0.250000 +v 0.250000 1.625000 0.250000 +v -0.250000 1.625000 0.250000 +v -0.250000 1.625000 -0.250000 +v 0.000000 1.625000 -0.250000 +v -0.088388 1.588388 -0.250000 +v -0.125000 1.500000 -0.250000 +v -0.088388 1.411612 -0.250000 +v 0.000000 1.375000 -0.250000 +v 0.088388 1.411612 -0.250000 +v 0.125000 1.500000 -0.250000 +v 0.088388 1.588388 -0.250000 +v 0.000000 1.625000 -0.500000 +v -0.088388 1.588388 -0.500000 +v -0.125000 1.500000 -0.500000 +v -0.088388 1.411612 -0.500000 +v 0.000000 1.375000 -0.500000 +v 0.088388 1.411612 -0.500000 +v 0.125000 1.500000 -0.500000 +v 0.088388 1.588388 -0.500000 +v 0.125000 1.375000 -0.500000 +v -0.125000 1.375000 -0.500000 +v -0.125000 1.375000 0.125000 +v 0.125000 1.625000 -0.500000 +v -0.125000 1.625000 -0.500000 +v 0.000000 1.250000 0.125000 +v 0.250000 1.375000 -0.625000 +v -0.250000 1.375000 -0.625000 +v -0.250000 1.625000 -0.625000 +v 0.250000 1.625000 -0.625000 +v 0.000000 1.250000 -0.125000 +v 0.250000 1.375000 -0.750000 +v -0.250000 1.375000 -0.750000 +v -0.250000 1.625000 -0.750000 +v 0.250000 1.625000 -0.750000 +v 0.000000 1.161612 0.088388 +v 0.000000 1.125000 -0.000000 +v 0.000000 1.161612 -0.088388 +v -0.125000 1.250000 -0.125000 +v -0.125000 1.375000 -0.125000 +v 0.000000 1.375000 0.125000 +v 0.000000 1.375000 -0.125000 +v -0.125000 1.250000 0.125000 +v -0.125000 1.161612 0.088388 +v -0.125000 1.125000 -0.000000 +v -0.125000 1.161612 -0.088388 +v -0.125000 1.687500 -0.125000 +v -0.187500 1.687500 -0.125000 +v -0.187500 1.812500 -0.125000 +v -0.125000 1.812500 -0.125000 +v -0.125000 1.687500 -0.062500 +v -0.187500 1.687500 -0.062500 +v -0.187500 1.875000 -0.062500 +v -0.125000 1.875000 -0.062500 +v -0.125000 1.875000 -0.687500 +v -0.125000 1.812500 -0.625000 +v -0.187500 1.812500 -0.625000 +v -0.187500 1.875000 -0.687500 +v -0.187500 1.625000 -0.687500 +v -0.125000 1.625000 -0.687500 +v -0.125000 1.625000 -0.625000 +v -0.187500 1.625000 -0.625000 +v 0.125000 1.750000 0.250000 +v 0.125000 1.750000 -0.250000 +v -0.125000 1.750000 0.250000 +v -0.125000 1.750000 -0.250000 +v -0.187500 1.562500 0.250000 +v -0.062500 1.437500 0.250000 +v -0.187500 1.437500 0.250000 +v -0.062500 1.562500 0.250000 +v 0.000000 1.625000 0.500000 +v 0.000000 1.375000 0.500000 +v -0.187500 1.437500 0.312500 +v 0.062500 1.562500 0.250000 +v -0.187500 1.562500 0.312500 +v 0.187500 1.562500 0.312500 +v 0.062500 1.437500 0.250000 +v 0.187500 1.437500 0.312500 +v -0.062500 1.437500 0.437500 +v 0.187500 1.437500 0.250000 +v -0.062500 1.562500 0.437500 +v 0.062500 1.562500 0.437500 +v 0.187500 1.562500 0.250000 +v 0.062500 1.437500 0.437500 +v -0.250000 1.437500 0.125000 +v -0.250000 1.562500 0.125000 +v -0.250000 1.437500 -0.125000 +v -0.250000 1.562500 -0.125000 +v -0.375000 1.437500 -0.125000 +v -0.375000 1.437500 0.125000 +v -0.375000 1.562500 0.125000 +v -0.375000 1.562500 -0.125000 +v -0.375000 1.562500 -0.187500 +v -0.375000 1.562500 0.187500 +v -0.330806 1.544194 -0.187500 +v -0.330806 1.544194 0.187500 +v -0.312500 1.500000 -0.187500 +v -0.312500 1.500000 0.187500 +v -0.330806 1.455806 -0.187500 +v -0.330806 1.455806 0.187500 +v -0.375000 1.437500 -0.187500 +v -0.375000 1.437500 0.187500 +v -0.419194 1.455806 -0.187500 +v -0.419194 1.455806 0.187500 +v -0.437500 1.500000 -0.187500 +v -0.437500 1.500000 0.187500 +v -0.419194 1.544194 -0.187500 +v -0.419194 1.544194 0.187500 +v -0.125000 1.562500 0.500000 +v -0.169194 1.544194 0.500000 +v -0.187500 1.500000 0.500000 +v -0.169194 1.455806 0.500000 +v -0.125000 1.437500 0.500000 +v -0.080806 1.455806 0.500000 +v -0.062500 1.500000 0.500000 +v -0.080806 1.544194 0.500000 +v -0.419194 1.544194 0.187500 +v -0.419194 1.544194 -0.187500 +v -0.437500 1.500000 0.187500 +v -0.437500 1.500000 -0.187500 +v -0.419194 1.455806 0.187500 +v -0.419194 1.455806 -0.187500 +v -0.375000 1.437500 0.187500 +v -0.375000 1.437500 -0.187500 +v 0.169194 1.544194 0.500000 +v 0.187500 1.500000 0.500000 +v 0.169194 1.455806 0.500000 +v 0.125000 1.437500 0.500000 +v 0.080806 1.455806 0.500000 +v 0.062500 1.500000 0.500000 +v 0.080806 1.544194 0.500000 +v 0.125000 1.562500 0.500000 +v -0.330806 1.455806 0.187500 +v -0.330806 1.455806 -0.187500 +v -0.312500 1.500000 0.187500 +v -0.312500 1.500000 -0.187500 +v -0.330806 1.544194 0.187500 +v -0.330806 1.544194 -0.187500 +v -0.375000 1.562500 0.187500 +v -0.375000 1.562500 -0.187500 +v -0.125000 1.161612 -0.088388 +v -0.125000 1.125000 -0.000000 +v -0.125000 1.161612 0.088388 +v -0.125000 1.250000 0.125000 +v 0.000000 1.375000 -0.125000 +v 0.000000 1.375000 0.125000 +v -0.125000 1.375000 -0.125000 +v -0.125000 1.250000 -0.125000 +v 0.000000 1.161612 -0.088388 +v 0.000000 1.125000 -0.000000 +v 0.000000 1.161612 0.088388 +v 0.000000 1.250000 -0.125000 +v 0.000000 1.250000 0.125000 +v -0.125000 1.375000 0.125000 +v -0.125000 1.562500 0.250000 +v -0.169194 1.544194 0.250000 +v -0.187500 1.500000 0.250000 +v -0.169194 1.455806 0.250000 +v -0.125000 1.437500 0.250000 +v -0.080806 1.455806 0.250000 +v -0.062500 1.500000 0.250000 +v -0.080806 1.544194 0.250000 +v -0.125000 1.562500 0.500000 +v -0.169194 1.544194 0.500000 +v -0.187500 1.500000 0.500000 +v -0.169194 1.455806 0.500000 +v -0.125000 1.437500 0.500000 +v -0.080806 1.455806 0.500000 +v -0.062500 1.500000 0.500000 +v -0.080806 1.544194 0.500000 +v 0.169194 1.544194 0.500000 +v 0.187500 1.500000 0.500000 +v 0.169194 1.455806 0.500000 +v 0.125000 1.437500 0.500000 +v 0.080806 1.455806 0.500000 +v 0.062500 1.500000 0.500000 +v 0.080806 1.544194 0.500000 +v 0.125000 1.562500 0.500000 +v 0.169194 1.544194 0.250000 +v 0.187500 1.500000 0.250000 +v 0.169194 1.455806 0.250000 +v 0.125000 1.437500 0.250000 +v 0.080806 1.455806 0.250000 +v 0.062500 1.500000 0.250000 +v 0.080806 1.544194 0.250000 +v 0.125000 1.562500 0.250000 +vt 0.692308 0.300000 +vt 0.769231 0.350000 +vt 0.666667 0.450000 +vt 0.615385 0.100000 +vt 0.666667 0.300000 +vt 0.615385 0.300000 +vt 0.820513 0.300000 +vt 0.769231 0.100000 +vt 0.820513 0.100000 +vt 0.641026 0.725000 +vt 0.653846 0.675000 +vt 0.653846 0.725000 +vt 0.615385 0.625000 +vt 0.628205 0.400000 +vt 0.628205 0.650000 +vt 0.564103 0.200000 +vt 0.512821 0.100000 +vt 0.564103 0.100000 +vt 0.512821 0.200000 +vt 0.487179 0.100000 +vt 0.333156 0.350167 +vt 0.307681 0.399844 +vt 0.282206 0.350167 +vt 0.589744 0.200000 +vt 0.589744 -0.000000 +vt 0.487179 0.400000 +vt 0.589744 0.300000 +vt 0.589744 0.400000 +vt 0.487179 0.200000 +vt 0.461538 0.100000 +vt 0.589744 0.100000 +vt 0.615385 0.200000 +vt 0.487179 0.300000 +vt 0.325650 0.464995 +vt 0.333092 0.500029 +vt 0.282276 0.500029 +vt 0.628205 0.725000 +vt 0.615385 0.675000 +vt 0.666667 0.650000 +vt 0.769231 0.450000 +vt 0.769231 0.650000 +vt 0.666667 0.675000 +vt 0.666667 0.425000 +vt 0.653846 0.625000 +vt 0.653846 0.425000 +vt 0.641026 0.300000 +vt 0.653846 0.375000 +vt 0.641026 0.400000 +vt 0.628205 0.300000 +vt 0.615385 0.375000 +vt 0.615385 0.300000 +vt 0.666667 0.300000 +vt 0.653846 0.300000 +vt 0.641026 0.650000 +vt 0.743590 0.100000 +vt 0.743590 0.300000 +vt 0.769231 0.300000 +vt 0.666667 0.100000 +vt 0.820513 -0.000000 +vt 0.807692 0.075000 +vt 0.807692 0.025000 +vt 0.166667 0.625000 +vt 0.179487 0.675000 +vt 0.166667 0.675000 +vt 0.628205 0.075000 +vt 0.653846 0.075000 +vt 0.782051 0.075000 +vt 0.769231 -0.000000 +vt 0.782051 0.025000 +vt 0.615385 -0.000000 +vt 0.628205 0.025000 +vt 0.666667 -0.000000 +vt 0.179487 0.700000 +vt 0.205128 0.675000 +vt 0.205128 0.750000 +vt 0.205128 0.625000 +vt 0.243590 0.675000 +vt 0.717949 0.750000 +vt 0.179487 0.625000 +vt 0.653846 0.025000 +vt 0.179487 0.600000 +vt 0.320513 0.675000 +vt 0.307692 0.625000 +vt 0.320513 0.625000 +vt 0.307692 0.675000 +vt 0.282051 0.625000 +vt 0.243590 0.675000 +vt 0.243590 0.625000 +vt 0.307692 0.600000 +vt 0.282051 0.675000 +vt 0.307692 0.700000 +vt 0.282051 0.750000 +vt 0.692308 0.100000 +vt 0.717949 -0.000000 +vt 0.384615 0.450000 +vt 0.410256 0.400000 +vt 0.410256 0.450000 +vt 0.461538 0.450000 +vt 0.487179 0.400000 +vt 0.487179 0.450000 +vt 0.461538 0.400000 +vt 0.538462 0.400000 +vt 0.538462 0.450000 +vt 0.437618 0.475000 +vt 0.448718 0.453355 +vt 0.459817 0.475000 +vt 0.357254 0.475000 +vt 0.354003 0.490305 +vt 0.338305 0.459695 +vt 0.474359 0.550649 +vt 0.486846 0.574999 +vt 0.474359 0.599350 +vt 0.474359 0.550649 +vt 0.486846 0.574999 +vt 0.474359 0.599350 +vt 0.666667 0.350000 +vt 0.615385 0.425000 +vt 0.282206 0.300490 +vt 0.333156 0.300490 +vt 0.325695 0.385294 +vt 0.289667 0.385294 +vt 0.487179 0.050000 +vt 0.487179 -0.000000 +vt 0.589744 0.050000 +vt 0.461538 0.200000 +vt 0.615385 0.100000 +vt 0.589744 0.250000 +vt 0.487179 0.250000 +vt 0.333092 0.549575 +vt 0.282276 0.549575 +vt 0.289718 0.464995 +vt 0.307684 0.450484 +vt 0.615385 0.725000 +vt 0.666667 0.725000 +vt 0.666667 0.625000 +vt 0.666667 0.375000 +vt 0.243590 0.625000 +vt 0.205128 0.550000 +vt 0.282051 0.550000 +vt 0.384615 0.400000 +vt 0.456566 0.490305 +vt 0.448718 0.496645 +vt 0.440869 0.490305 +vt 0.440869 0.459695 +vt 0.456566 0.459695 +vt 0.346154 0.496645 +vt 0.338305 0.490305 +vt 0.335054 0.475000 +vt 0.346154 0.453355 +vt 0.354003 0.459695 +vt 0.465529 0.592218 +vt 0.461872 0.574999 +vt 0.465529 0.557781 +vt 0.483189 0.557781 +vt 0.483189 0.592218 +vt 0.465529 0.592218 +vt 0.461872 0.574999 +vt 0.465529 0.557781 +vt 0.483189 0.557781 +vt 0.483189 0.592218 +vt 0.461538 0.100000 +vt 0.410256 0.150000 +vt 0.410256 0.100000 +vt 0.461538 -0.000000 +vt 0.410256 0.050000 +vt 0.410256 -0.000000 +vt 0.461538 0.300000 +vt 0.410256 0.350000 +vt 0.410256 0.300000 +vt 0.461538 0.200000 +vt 0.410256 0.250000 +vt 0.410256 0.200000 +vt 0.461538 0.150000 +vt 0.461538 0.050000 +vt 0.461538 0.350000 +vt 0.410256 0.400000 +vt 0.461538 0.250000 +vt 0.435897 0.525000 +vt 0.358974 0.550000 +vt 0.358974 0.525000 +vt 0.435897 0.500000 +vt 0.358974 0.500000 +vt 0.435897 0.475000 +vt 0.358974 0.475000 +vt 0.435897 0.450000 +vt 0.358974 0.450000 +vt 0.435897 0.625000 +vt 0.358974 0.650000 +vt 0.358974 0.625000 +vt 0.435897 0.600000 +vt 0.358974 0.600000 +vt 0.435897 0.575000 +vt 0.358974 0.575000 +vt 0.435897 0.550000 +vt 0.538462 0.450000 +vt 0.525641 0.550000 +vt 0.525641 0.450000 +vt 0.564103 0.450000 +vt 0.551282 0.550000 +vt 0.551282 0.450000 +vt 0.487179 0.450000 +vt 0.474359 0.550000 +vt 0.474359 0.450000 +vt 0.512821 0.450000 +vt 0.500000 0.550000 +vt 0.500000 0.450000 +vt 0.512821 0.550000 +vt 0.538462 0.550000 +vt 0.461538 0.550000 +vt 0.461538 0.450000 +vt 0.487179 0.550000 +vt 0.256410 0.450000 +vt 0.230769 0.400000 +vt 0.256410 0.400000 +vt 0.358974 0.400000 +vt 0.384615 0.450000 +vt 0.358974 0.450000 +vt 0.282051 0.400000 +vt 0.333333 0.400000 +vt 0.307692 0.450000 +vt 0.307692 0.400000 +vt 0.282051 0.450000 +vt 0.333333 0.450000 +vt 0.538462 0.450000 +vt 0.525641 0.550000 +vt 0.525641 0.450000 +vt 0.564103 0.450000 +vt 0.551282 0.550000 +vt 0.551282 0.450000 +vt 0.487179 0.450000 +vt 0.474359 0.550000 +vt 0.474359 0.450000 +vt 0.512821 0.450000 +vt 0.500000 0.550000 +vt 0.500000 0.450000 +vt 0.512821 0.550000 +vt 0.538462 0.550000 +vt 0.461538 0.550000 +vt 0.461538 0.450000 +vt 0.487179 0.550000 +vt 0.461538 0.400000 +vt 0.435897 0.650000 +vt 0.564103 0.550000 +vt 0.230769 0.450000 +vt 0.384615 0.400000 +vt 0.564103 0.550000 +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.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.5774 0.5774 0.5774 +vn 0.5774 0.5774 0.5774 +vn 0.0000 0.8944 0.4472 +vn 0.7071 -0.7071 0.0000 +vn -0.7071 -0.7071 0.0000 +vn 0.0000 -0.1951 -0.9808 +vn 0.0000 -0.1951 0.9808 +vn 0.0000 -0.7071 -0.7071 +vn 0.0000 -0.7071 0.7071 +s off +f 168/113/17 103/114/17 102/115/17 +f 101/116/18 106/117/18 102/118/18 +f 99/119/19 104/120/19 100/121/19 +f 154/122/18 151/123/18 150/124/18 +f 152/125/19 157/126/19 156/127/19 +f 126/128/20 124/129/20 123/130/20 +f 127/131/21 130/132/21 124/129/21 +f 128/133/19 139/134/19 133/135/19 +f 123/130/22 132/136/22 126/128/22 +f 124/129/23 134/137/23 123/130/23 +f 135/138/17 137/139/17 134/140/17 +f 131/141/18 135/142/18 130/132/18 +f 129/143/19 137/144/19 132/136/19 +f 126/128/24 136/145/24 127/131/24 +f 146/146/18 145/147/18 141/148/18 +f 153/149/19 152/150/19 156/127/19 +f 101/151/23 99/152/23 100/153/23 +f 152/154/17 150/124/17 151/123/17 +f 158/155/23 151/156/23 159/157/23 +f 161/158/18 159/159/18 160/160/18 +f 161/158/17 157/126/17 162/161/17 +f 162/161/19 158/162/19 163/163/19 +f 163/164/20 159/159/20 164/165/20 +f 155/166/20 153/149/20 156/127/20 +f 160/160/24 156/127/24 157/126/24 +f 168/113/24 165/167/24 166/168/24 +f 103/169/25 165/167/25 104/120/25 +f 155/166/18 159/157/18 151/156/18 +f 105/170/26 168/113/26 106/117/26 +f 174/171/22 180/172/22 186/173/22 +f 175/174/19 169/175/19 177/176/19 +f 104/120/22 180/172/22 100/121/22 +f 105/170/21 175/177/21 177/178/21 +f 178/179/22 173/180/22 184/181/22 +f 175/177/21 174/182/21 181/183/21 +f 177/178/21 173/184/21 105/170/21 +f 177/185/23 172/186/23 183/187/23 +f 170/188/18 183/189/18 172/186/18 +f 100/153/23 174/190/23 101/151/23 +f 171/191/20 172/186/20 169/175/20 +f 174/182/21 183/192/21 181/183/21 +f 175/193/24 170/188/24 171/191/24 +f 178/194/18 182/195/18 180/196/18 +f 185/197/20 179/198/20 182/195/20 +f 179/198/19 184/199/19 186/200/19 +f 179/198/24 180/201/24 182/195/24 +f 176/202/23 178/203/23 184/204/23 +f 173/180/22 186/173/22 184/181/22 +f 105/170/27 173/184/27 167/205/27 +f 104/120/28 165/167/28 173/180/28 +f 167/205/29 173/206/29 165/167/29 +f 189/207/17 194/208/17 190/209/17 +f 188/210/20 192/211/20 187/212/20 +f 190/209/24 193/213/24 188/210/24 +f 187/212/23 191/214/23 189/215/23 +f 208/216/20 204/217/20 200/218/20 +f 207/219/17 209/220/17 201/221/17 +f 215/222/20 217/223/20 211/224/20 +f 230/225/20 228/226/20 234/227/20 +f 102/115/17 106/228/17 168/113/17 +f 168/113/17 166/168/17 103/114/17 +f 103/114/17 99/152/17 102/115/17 +f 101/116/18 105/170/18 106/117/18 +f 99/119/19 103/169/19 104/120/19 +f 154/122/18 155/166/18 151/123/18 +f 152/125/19 158/229/19 157/126/19 +f 126/128/20 127/131/20 124/129/20 +f 127/131/21 131/141/21 130/132/21 +f 144/230/19 143/231/19 128/133/19 +f 128/133/19 138/232/19 139/134/19 +f 139/134/19 140/233/19 133/135/19 +f 133/135/19 144/230/19 128/133/19 +f 123/130/22 129/143/22 132/136/22 +f 124/129/23 130/234/23 135/235/23 +f 135/235/23 134/137/23 124/129/23 +f 134/137/23 129/236/23 123/130/23 +f 135/138/17 136/145/17 137/139/17 +f 131/141/18 136/237/18 135/142/18 +f 129/143/19 134/238/19 137/144/19 +f 126/128/24 132/239/24 137/139/24 +f 137/139/24 136/145/24 126/128/24 +f 136/145/24 131/240/24 127/131/24 +f 145/147/18 125/241/18 142/242/18 +f 142/242/18 141/148/18 145/147/18 +f 141/148/18 148/243/18 146/146/18 +f 148/243/18 147/244/18 146/146/18 +f 153/149/19 149/245/19 152/150/19 +f 101/151/23 102/115/23 99/152/23 +f 152/154/17 149/246/17 150/124/17 +f 158/155/23 152/247/23 151/156/23 +f 161/158/18 164/165/18 159/159/18 +f 161/158/17 160/160/17 157/126/17 +f 162/161/19 157/126/19 158/162/19 +f 163/164/20 158/248/20 159/159/20 +f 155/166/20 154/122/20 153/149/20 +f 160/160/24 155/166/24 156/127/24 +f 168/113/24 167/205/24 165/167/24 +f 103/169/25 166/168/25 165/167/25 +f 155/166/18 160/160/18 159/157/18 +f 105/170/26 167/205/26 168/113/26 +f 174/171/22 100/121/22 180/172/22 +f 175/174/19 171/191/19 169/175/19 +f 104/120/22 178/179/22 180/172/22 +f 105/170/21 101/116/21 175/177/21 +f 178/179/22 104/120/22 173/180/22 +f 175/177/21 101/116/21 174/182/21 +f 177/178/21 183/192/21 173/184/21 +f 177/185/23 169/175/23 172/186/23 +f 170/188/18 181/249/18 183/189/18 +f 171/191/20 170/188/20 172/186/20 +f 174/182/21 173/184/21 183/192/21 +f 175/193/24 181/250/24 170/188/24 +f 178/194/18 185/197/18 182/195/18 +f 185/197/20 176/202/20 179/198/20 +f 179/198/19 176/202/19 184/199/19 +f 179/198/24 186/251/24 180/201/24 +f 176/202/23 185/197/23 178/203/23 +f 173/180/22 174/171/22 186/173/22 +f 189/207/17 191/252/17 194/208/17 +f 188/210/20 193/213/20 192/211/20 +f 190/209/24 194/208/24 193/213/24 +f 187/212/23 192/211/23 191/214/23 +f 200/218/20 198/253/20 196/254/20 +f 196/254/20 210/255/20 208/216/20 +f 208/216/20 206/256/20 204/217/20 +f 204/217/20 202/257/20 200/218/20 +f 200/218/20 196/254/20 208/216/20 +f 209/220/17 195/258/17 197/259/17 +f 197/259/17 199/260/17 209/220/17 +f 199/260/17 201/221/17 209/220/17 +f 201/221/17 203/261/17 205/262/17 +f 205/262/17 207/219/17 201/221/17 +f 211/224/20 212/263/20 213/264/20 +f 213/264/20 214/265/20 215/222/20 +f 215/222/20 216/266/20 217/223/20 +f 217/223/20 218/267/20 211/224/20 +f 211/224/20 213/264/20 215/222/20 +f 234/227/20 233/268/20 232/269/20 +f 232/269/20 231/270/20 230/225/20 +f 230/225/20 229/271/20 228/226/20 +f 228/226/20 227/272/20 234/227/20 +f 234/227/20 232/269/20 230/225/20 +s 1 +f 121/273/19 114/274/25 113/275/19 +f 119/276/23 112/277/30 111/278/23 +f 117/279/18 110/280/31 109/281/18 +f 115/282/24 108/283/26 107/284/24 +f 122/285/25 107/284/24 114/274/25 +f 120/286/30 113/275/19 112/277/30 +f 118/287/31 111/288/23 110/280/31 +f 116/289/26 109/281/18 108/283/26 +f 219/290/26 242/291/24 220/292/26 +f 221/293/18 220/292/26 222/294/18 +f 223/295/31 222/294/18 224/296/31 +f 225/297/23 224/296/31 226/298/23 +f 235/299/30 226/300/23 236/301/30 +f 237/302/19 236/301/30 238/303/19 +f 239/304/25 238/303/19 240/305/25 +f 241/306/24 240/305/25 242/291/24 +f 259/307/18 266/308/26 258/309/26 +f 261/310/23 268/311/31 260/312/31 +f 263/313/19 270/314/30 262/315/30 +f 257/316/24 272/317/25 264/318/25 +f 258/309/26 265/319/24 257/316/24 +f 260/312/31 267/320/18 259/307/18 +f 262/315/30 269/321/23 261/322/23 +f 264/318/25 271/323/19 263/313/19 +f 250/324/32 247/325/17 254/326/32 +f 255/327/33 256/328/20 246/329/33 +f 251/330/34 250/324/32 254/326/32 +f 253/331/35 244/332/23 252/333/23 +f 252/333/23 243/334/34 251/330/34 +f 255/327/33 245/335/35 253/331/35 +f 286/336/18 279/337/26 287/338/26 +f 284/339/23 277/340/31 285/341/31 +f 282/342/19 275/343/30 283/344/30 +f 288/345/24 273/346/25 281/347/25 +f 287/338/26 280/348/24 288/345/24 +f 285/341/31 278/349/18 286/336/18 +f 283/344/30 276/350/23 284/351/23 +f 281/347/25 274/352/19 282/342/19 +f 121/273/19 122/285/25 114/274/25 +f 119/276/23 120/286/30 112/277/30 +f 117/279/18 118/287/31 110/280/31 +f 115/282/24 116/289/26 108/283/26 +f 122/285/25 115/282/24 107/284/24 +f 120/286/30 121/273/19 113/275/19 +f 118/287/31 119/353/23 111/288/23 +f 116/289/26 117/279/18 109/281/18 +f 219/290/26 241/306/24 242/291/24 +f 221/293/18 219/290/26 220/292/26 +f 223/295/31 221/293/18 222/294/18 +f 225/297/23 223/295/31 224/296/31 +f 235/299/30 225/354/23 226/300/23 +f 237/302/19 235/299/30 236/301/30 +f 239/304/25 237/302/19 238/303/19 +f 241/306/24 239/304/25 240/305/25 +f 259/307/18 267/320/18 266/308/26 +f 261/310/23 269/355/23 268/311/31 +f 263/313/19 271/323/19 270/314/30 +f 257/316/24 265/319/24 272/317/25 +f 258/309/26 266/308/26 265/319/24 +f 260/312/31 268/311/31 267/320/18 +f 262/315/30 270/314/30 269/321/23 +f 264/318/25 272/317/25 271/323/19 +f 250/324/32 249/356/17 247/325/17 +f 255/327/33 248/357/20 256/328/20 +f 251/330/34 243/334/34 250/324/32 +f 253/331/35 245/335/35 244/332/23 +f 252/333/23 244/332/23 243/334/34 +f 255/327/33 246/329/33 245/335/35 +f 286/336/18 278/349/18 279/337/26 +f 284/339/23 276/358/23 277/340/31 +f 282/342/19 274/352/19 275/343/30 +f 288/345/24 280/348/24 273/346/25 +f 287/338/26 279/337/26 280/348/24 +f 285/341/31 277/340/31 278/349/18 +f 283/344/30 275/343/30 276/350/23 +f 281/347/25 273/346/25 274/352/19 +o Drum +v 0.536937 1.474437 -0.187500 +v 0.437500 1.515625 -0.187500 +v 0.437500 1.562500 -0.187500 +v 0.437500 1.562500 0.187500 +v 0.570082 1.507582 -0.187500 +v 0.570082 1.507582 0.187500 +v 0.625000 1.375000 -0.187500 +v 0.625000 1.375000 0.187500 +v 0.570082 1.242417 -0.187500 +v 0.570082 1.242417 0.187500 +v 0.437500 1.187500 -0.187500 +v 0.437500 1.187500 0.187500 +v 0.304917 1.242417 -0.187500 +v 0.304917 1.242417 0.187500 +v 0.250000 1.375000 -0.187500 +v 0.250000 1.375000 0.187500 +v 0.304917 1.507582 -0.187500 +v 0.304917 1.507582 0.187500 +v 0.578125 1.375000 -0.187500 +v 0.536937 1.275563 -0.187500 +v 0.437500 1.234375 -0.187500 +v 0.338063 1.275563 -0.187500 +v 0.296875 1.375000 -0.187500 +v 0.338063 1.474437 -0.187500 +v 0.437500 1.468750 -0.187500 +v 0.503791 1.441291 -0.187500 +v 0.531250 1.375000 -0.187500 +v 0.503791 1.308709 -0.187500 +v 0.437500 1.281250 -0.187500 +v 0.371209 1.308709 -0.187500 +v 0.343750 1.375000 -0.187500 +v 0.371209 1.441291 -0.187500 +v 0.536937 1.474437 0.187500 +v 0.437500 1.515625 0.187500 +v 0.578125 1.375000 0.187500 +v 0.536937 1.275563 0.187500 +v 0.437500 1.234375 0.187500 +v 0.338063 1.275563 0.187500 +v 0.296875 1.375000 0.187500 +v 0.338063 1.474437 0.187500 +v 0.437500 1.468750 0.187500 +v 0.503791 1.441291 0.187500 +v 0.531250 1.375000 0.187500 +v 0.503791 1.308709 0.187500 +v 0.437500 1.281250 0.187500 +v 0.371209 1.308709 0.187500 +v 0.343750 1.375000 0.187500 +v 0.371209 1.441291 0.187500 +v 0.371209 1.441291 0.177500 +v 0.437500 1.468750 0.177500 +v 0.343750 1.375000 0.177500 +v 0.338063 1.474437 0.177500 +v 0.437500 1.515625 0.177500 +v 0.296875 1.375000 0.177500 +v 0.371209 1.308709 0.177500 +v 0.338063 1.275563 0.177500 +v 0.437500 1.281250 0.177500 +v 0.437500 1.234375 0.177500 +v 0.503791 1.308709 0.177500 +v 0.536937 1.275563 0.177500 +v 0.531250 1.375000 0.177500 +v 0.578125 1.375000 0.177500 +v 0.503791 1.441291 0.177500 +v 0.536937 1.474437 0.177500 +v 0.371209 1.441291 -0.177500 +v 0.437500 1.468750 -0.177500 +v 0.343750 1.375000 -0.177500 +v 0.338063 1.474437 -0.177500 +v 0.437500 1.515625 -0.177500 +v 0.296875 1.375000 -0.177500 +v 0.371209 1.308709 -0.177500 +v 0.338063 1.275563 -0.177500 +v 0.437500 1.281250 -0.177500 +v 0.437500 1.234375 -0.177500 +v 0.503791 1.308709 -0.177500 +v 0.536937 1.275563 -0.177500 +v 0.531250 1.375000 -0.177500 +v 0.578125 1.375000 -0.177500 +v 0.503791 1.441291 -0.177500 +v 0.536937 1.474437 -0.177500 +v 0.437500 1.500000 0.156250 +v 0.437500 1.500000 -0.156250 +v 0.312500 1.562500 0.156250 +v 0.312500 1.562500 -0.156250 +v 0.312500 1.500000 0.156250 +v 0.312500 1.500000 -0.156250 +v 0.250000 1.562500 0.156250 +v 0.250000 1.562500 -0.156250 +v 0.250000 1.500000 0.156250 +v 0.250000 1.500000 -0.156250 +v 0.536937 1.474437 -0.187500 +v 0.437500 1.515625 -0.187500 +v 0.437500 1.562500 -0.187500 +v 0.437500 1.562500 0.187500 +v 0.570082 1.507582 -0.187500 +v 0.570082 1.507582 0.187500 +v 0.625000 1.375000 -0.187500 +v 0.625000 1.375000 0.187500 +v 0.570082 1.242417 -0.187500 +v 0.570082 1.242417 0.187500 +v 0.437500 1.187500 -0.187500 +v 0.437500 1.187500 0.187500 +v 0.304917 1.242417 -0.187500 +v 0.304917 1.242417 0.187500 +v 0.250000 1.375000 -0.187500 +v 0.250000 1.375000 0.187500 +v 0.304917 1.507582 -0.187500 +v 0.304917 1.507582 0.187500 +v 0.578125 1.375000 -0.187500 +v 0.536937 1.275563 -0.187500 +v 0.437500 1.234375 -0.187500 +v 0.338063 1.275563 -0.187500 +v 0.296875 1.375000 -0.187500 +v 0.338063 1.474437 -0.187500 +v 0.437500 1.468750 -0.187500 +v 0.503791 1.441291 -0.187500 +v 0.531250 1.375000 -0.187500 +v 0.503791 1.308709 -0.187500 +v 0.437500 1.281250 -0.187500 +v 0.371209 1.308709 -0.187500 +v 0.343750 1.375000 -0.187500 +v 0.371209 1.441291 -0.187500 +v 0.536937 1.474437 0.187500 +v 0.437500 1.515625 0.187500 +v 0.578125 1.375000 0.187500 +v 0.536937 1.275563 0.187500 +v 0.437500 1.234375 0.187500 +v 0.338063 1.275563 0.187500 +v 0.296875 1.375000 0.187500 +v 0.338063 1.474437 0.187500 +v 0.437500 1.468750 0.187500 +v 0.503791 1.441291 0.187500 +v 0.531250 1.375000 0.187500 +v 0.503791 1.308709 0.187500 +v 0.437500 1.281250 0.187500 +v 0.371209 1.308709 0.187500 +v 0.343750 1.375000 0.187500 +v 0.371209 1.441291 0.187500 +v 0.371209 1.441291 0.177500 +v 0.437500 1.468750 0.177500 +v 0.343750 1.375000 0.177500 +v 0.338063 1.474437 0.177500 +v 0.437500 1.515625 0.177500 +v 0.296875 1.375000 0.177500 +v 0.371209 1.308709 0.177500 +v 0.338063 1.275563 0.177500 +v 0.437500 1.281250 0.177500 +v 0.437500 1.234375 0.177500 +v 0.503791 1.308709 0.177500 +v 0.536937 1.275563 0.177500 +v 0.531250 1.375000 0.177500 +v 0.578125 1.375000 0.177500 +v 0.503791 1.441291 0.177500 +v 0.536937 1.474437 0.177500 +v 0.371209 1.441291 -0.177500 +v 0.437500 1.468750 -0.177500 +v 0.343750 1.375000 -0.177500 +v 0.338063 1.474437 -0.177500 +v 0.437500 1.515625 -0.177500 +v 0.296875 1.375000 -0.177500 +v 0.371209 1.308709 -0.177500 +v 0.338063 1.275563 -0.177500 +v 0.437500 1.281250 -0.177500 +v 0.437500 1.234375 -0.177500 +v 0.503791 1.308709 -0.177500 +v 0.536937 1.275563 -0.177500 +v 0.531250 1.375000 -0.177500 +v 0.578125 1.375000 -0.177500 +v 0.503791 1.441291 -0.177500 +v 0.536937 1.474437 -0.177500 +vt 0.860168 0.512500 +vt 0.878205 0.477327 +vt 0.896242 0.512500 +vt 0.961538 0.050000 +vt 0.948718 0.100000 +vt 0.948718 0.050000 +vt 0.961538 0.000000 +vt 0.948718 0.000000 +vt 0.961538 0.400000 +vt 0.948718 0.350000 +vt 0.961538 0.350000 +vt 0.948718 0.300000 +vt 0.961538 0.300000 +vt 0.948718 0.250000 +vt 0.961538 0.250000 +vt 0.961538 0.100000 +vt 0.948718 0.150000 +vt 0.961538 0.200000 +vt 0.948718 0.200000 +vt 0.839743 0.477327 +vt 0.857781 0.512500 +vt 0.839743 0.547673 +vt 0.871795 0.150000 +vt 0.858974 0.200000 +vt 0.858974 0.150000 +vt 0.858974 0.100000 +vt 0.871795 0.100000 +vt 0.858974 0.050000 +vt 0.871795 0.050000 +vt 0.858974 0.000000 +vt 0.871795 -0.000000 +vt 0.871795 0.400000 +vt 0.858974 0.350000 +vt 0.871795 0.350000 +vt 0.871795 0.300000 +vt 0.858974 0.300000 +vt 0.858974 0.250000 +vt 0.871795 0.250000 +vt 0.871795 0.200000 +vt 0.833333 0.150000 +vt 0.846154 0.200000 +vt 0.833333 0.175000 +vt 0.833333 0.100000 +vt 0.846154 0.150000 +vt 0.833333 0.125000 +vt 0.846154 0.050000 +vt 0.833333 0.075000 +vt 0.833333 0.050000 +vt 0.846154 0.000000 +vt 0.833333 0.025000 +vt 0.833333 0.000000 +vt 0.833333 0.350000 +vt 0.846154 0.400000 +vt 0.833333 0.375000 +vt 0.833333 0.300000 +vt 0.846154 0.350000 +vt 0.833333 0.325000 +vt 0.846154 0.250000 +vt 0.833333 0.275000 +vt 0.833333 0.250000 +vt 0.833333 0.225000 +vt 0.833333 0.200000 +vt 0.987179 0.075000 +vt 0.974359 0.050000 +vt 0.987179 0.050000 +vt 0.987179 0.100000 +vt 0.974359 0.150000 +vt 0.974359 0.100000 +vt 0.987179 0.350000 +vt 0.974359 0.400000 +vt 0.974359 0.350000 +vt 0.987179 0.300000 +vt 0.974359 0.300000 +vt 0.987179 0.275000 +vt 0.974359 0.250000 +vt 0.987179 0.250000 +vt 0.987179 0.225000 +vt 0.974359 0.200000 +vt 0.987179 0.200000 +vt 0.987179 0.025000 +vt 0.974359 0.000000 +vt 0.987179 -0.000000 +vt 0.987179 0.150000 +vt 0.897436 0.400000 +vt 0.833333 0.450000 +vt 0.833333 0.400000 +vt 0.820513 0.450000 +vt 0.897436 0.450000 +vt 0.910256 0.450000 +vt 0.820513 0.475000 +vt 0.974359 0.450000 +vt 0.910256 0.475000 +vt 0.897436 0.475000 +vt 0.833333 0.475000 +vt 0.890959 0.537371 +vt 0.878205 0.547673 +vt 0.865451 0.537371 +vt 0.865451 0.487629 +vt 0.890959 0.487629 +vt 0.948718 0.400000 +vt 0.961538 0.150000 +vt 0.826989 0.537371 +vt 0.821706 0.512500 +vt 0.826989 0.487629 +vt 0.852498 0.487629 +vt 0.852498 0.537371 +vt 0.858974 0.400000 +vt 0.846154 0.100000 +vt 0.846154 0.300000 +vt 0.987179 0.125000 +vt 0.987179 0.375000 +vt 0.987179 0.325000 +vt 0.987179 0.175000 +vt 0.974359 0.475000 +vt 0.961538 0.000000 +vt 0.974359 0.050000 +vt 0.961538 0.050000 +vt 0.961538 0.250000 +vt 0.974359 0.300000 +vt 0.961538 0.300000 +vt 0.871795 0.200000 +vt 0.948718 0.150000 +vt 0.948718 0.200000 +vt 0.871795 0.150000 +vt 0.948718 0.100000 +vt 1.000000 0.175000 +vt 0.987179 0.150000 +vt 1.000000 0.150000 +vt 0.871795 0.100000 +vt 0.948718 0.050000 +vt 1.000000 0.025000 +vt 0.987179 -0.000000 +vt 1.000000 -0.000000 +vt 0.871795 0.050000 +vt 0.948718 0.000000 +vt 0.961538 0.200000 +vt 0.974359 0.250000 +vt 0.871795 0.400000 +vt 0.948718 0.350000 +vt 0.948718 0.400000 +vt 0.974359 0.100000 +vt 0.961538 0.100000 +vt 0.871795 0.350000 +vt 0.948718 0.300000 +vt 0.871795 0.300000 +vt 0.948718 0.250000 +vt 0.974359 0.350000 +vt 0.961538 0.350000 +vt 1.000000 0.275000 +vt 0.987179 0.250000 +vt 1.000000 0.250000 +vt 0.871795 0.250000 +vt 0.858974 0.200000 +vt 0.846154 0.150000 +vt 0.858974 0.150000 +vt 0.820513 0.200000 +vt 0.833333 0.225000 +vt 0.820513 0.225000 +vt 0.858974 0.400000 +vt 0.846154 0.350000 +vt 0.858974 0.350000 +vt 0.820513 0.150000 +vt 0.833333 0.175000 +vt 0.820513 0.175000 +vt 0.820513 0.350000 +vt 0.833333 0.375000 +vt 0.820513 0.375000 +vt 0.846154 0.100000 +vt 0.858974 0.100000 +vt 0.846154 0.300000 +vt 0.858974 0.300000 +vt 0.820513 0.100000 +vt 0.833333 0.125000 +vt 0.820513 0.125000 +vt 0.820513 0.000000 +vt 0.833333 0.025000 +vt 0.820513 0.025000 +vt 0.820513 0.250000 +vt 0.833333 0.275000 +vt 0.820513 0.275000 +vt 0.858974 0.050000 +vt 0.846154 0.000000 +vt 0.858974 0.000000 +vt 0.858974 0.250000 +vt 0.846154 0.200000 +vt 0.820513 0.050000 +vt 0.833333 0.075000 +vt 0.820513 0.075000 +vt 0.846154 0.250000 +vt 0.846154 0.050000 +vt 0.820513 0.300000 +vt 0.833333 0.325000 +vt 0.820513 0.325000 +vt 0.961538 0.150000 +vt 0.974359 0.200000 +vt 1.000000 0.375000 +vt 0.987179 0.350000 +vt 1.000000 0.350000 +vt 1.000000 0.125000 +vt 0.987179 0.100000 +vt 1.000000 0.100000 +vt 1.000000 0.225000 +vt 0.987179 0.200000 +vt 1.000000 0.200000 +vt 0.974359 0.400000 +vt 0.961538 0.400000 +vt 0.974359 0.150000 +vt 1.000000 0.325000 +vt 0.987179 0.300000 +vt 1.000000 0.300000 +vt 1.000000 0.075000 +vt 0.987179 0.050000 +vt 1.000000 0.050000 +vt 0.974359 0.000000 +vt 0.987179 0.175000 +vt 0.987179 0.025000 +vt 0.871795 -0.000000 +vt 0.987179 0.275000 +vt 0.833333 0.200000 +vt 0.846154 0.400000 +vt 0.833333 0.150000 +vt 0.833333 0.350000 +vt 0.833333 0.100000 +vt 0.833333 0.000000 +vt 0.833333 0.250000 +vt 0.833333 0.050000 +vt 0.833333 0.300000 +vt 0.987179 0.375000 +vt 0.987179 0.125000 +vt 0.987179 0.225000 +vt 0.987179 0.325000 +vt 0.987179 0.075000 +vn 0.0000 0.0000 -1.0000 +vn 0.0000 0.0000 1.0000 +vn 0.4472 0.8944 0.0000 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 1.0000 0.0000 +vn -0.7071 0.7071 0.0000 +vn 0.7071 -0.7071 0.0000 +vn 1.0000 0.0000 0.0000 +vn 0.7071 0.7071 0.0000 +vn -0.7071 -0.7071 0.0000 +vn -1.0000 0.0000 0.0000 +s off +f 315/359/36 317/360/36 319/361/36 +f 308/362/36 295/363/36 297/364/36 +f 309/365/36 297/364/36 299/366/36 +f 309/367/36 301/368/36 310/369/36 +f 310/369/36 303/370/36 311/371/36 +f 311/371/36 305/372/36 312/373/36 +f 307/374/36 293/375/36 295/363/36 +f 290/376/36 305/372/36 291/377/36 +f 293/375/36 290/376/36 291/377/36 +f 333/378/37 331/379/37 329/380/37 +f 294/381/37 322/382/37 321/383/37 +f 294/381/37 323/384/37 296/385/37 +f 296/385/37 324/386/37 298/387/37 +f 298/387/37 325/388/37 300/389/37 +f 300/390/37 326/391/37 302/392/37 +f 304/393/37 326/391/37 327/394/37 +f 304/393/37 328/395/37 306/396/37 +f 306/396/37 322/382/37 292/397/37 +f 351/398/37 341/399/37 338/400/37 +f 349/401/37 352/402/37 351/403/37 +f 348/404/37 349/405/37 347/406/37 +f 346/407/37 347/408/37 345/409/37 +f 343/410/37 346/411/37 345/412/37 +f 339/413/37 344/414/37 343/415/37 +f 340/416/37 339/417/37 337/418/37 +f 341/399/37 337/419/37 338/420/37 +f 365/421/36 364/422/36 363/423/36 +f 365/424/36 368/425/36 366/426/36 +f 359/427/36 362/428/36 360/429/36 +f 355/430/36 360/429/36 358/431/36 +f 355/432/36 356/433/36 353/434/36 +f 353/435/36 357/436/36 354/437/36 +f 363/438/36 362/439/36 361/440/36 +f 367/441/36 357/436/36 368/425/36 +f 370/442/38 371/443/38 369/444/38 +f 369/444/37 371/443/37 373/445/37 +f 372/446/36 370/442/36 374/447/36 +f 371/443/37 377/448/37 373/445/37 +f 373/449/39 378/450/39 374/447/39 +f 374/447/36 376/451/36 372/446/36 +f 372/446/40 375/452/40 371/443/40 +f 319/361/36 320/453/36 313/454/36 +f 313/454/36 314/455/36 315/359/36 +f 315/359/36 316/456/36 317/360/36 +f 317/360/36 318/457/36 319/361/36 +f 319/361/36 313/454/36 315/359/36 +f 308/362/36 307/374/36 295/363/36 +f 309/365/36 308/362/36 297/364/36 +f 309/367/36 299/458/36 301/368/36 +f 310/369/36 301/368/36 303/370/36 +f 311/371/36 303/370/36 305/372/36 +f 307/374/36 289/459/36 293/375/36 +f 290/376/36 312/373/36 305/372/36 +f 293/375/36 289/459/36 290/376/36 +f 329/380/37 336/460/37 335/461/37 +f 335/461/37 334/462/37 333/378/37 +f 333/378/37 332/463/37 331/379/37 +f 331/379/37 330/464/37 329/380/37 +f 329/380/37 335/461/37 333/378/37 +f 294/381/37 292/397/37 322/382/37 +f 294/381/37 321/383/37 323/384/37 +f 296/385/37 323/384/37 324/386/37 +f 298/387/37 324/386/37 325/388/37 +f 300/390/37 325/465/37 326/391/37 +f 304/393/37 302/392/37 326/391/37 +f 304/393/37 327/394/37 328/395/37 +f 306/396/37 328/395/37 322/382/37 +f 351/398/37 352/402/37 341/399/37 +f 349/401/37 350/466/37 352/402/37 +f 348/404/37 350/466/37 349/405/37 +f 346/407/37 348/404/37 347/408/37 +f 343/410/37 344/414/37 346/411/37 +f 339/413/37 342/467/37 344/414/37 +f 340/416/37 342/467/37 339/417/37 +f 341/399/37 340/416/37 337/419/37 +f 365/421/36 366/426/36 364/422/36 +f 365/424/36 367/468/36 368/425/36 +f 359/427/36 361/469/36 362/428/36 +f 355/430/36 359/470/36 360/429/36 +f 355/432/36 358/431/36 356/433/36 +f 353/435/36 356/433/36 357/436/36 +f 363/438/36 364/422/36 362/439/36 +f 367/441/36 354/471/36 357/436/36 +f 370/442/38 372/446/38 371/443/38 +f 371/443/37 375/452/37 377/448/37 +f 373/449/39 377/472/39 378/450/39 +f 374/447/36 378/450/36 376/451/36 +f 372/446/40 376/451/40 375/452/40 +s 1 +f 399/473/40 454/474/41 398/475/41 +f 402/476/42 448/477/43 401/478/43 +f 382/479/40 383/480/44 381/481/40 +f 384/482/44 385/483/43 383/480/44 +f 403/484/40 457/485/44 404/486/44 +f 386/487/43 387/488/42 385/483/43 +f 406/489/42 451/490/39 407/491/39 +f 388/492/42 389/493/39 387/488/42 +f 380/494/39 446/495/42 402/476/42 +f 390/496/39 391/497/45 389/498/39 +f 398/475/41 456/499/46 397/500/46 +f 392/501/45 393/502/46 391/497/45 +f 394/503/46 395/504/41 393/502/46 +f 401/478/43 450/505/44 400/506/44 +f 409/507/46 443/508/41 410/509/41 +f 396/510/41 381/481/40 395/504/41 +f 412/511/39 442/512/45 411/513/45 +f 419/514/40 427/515/41 426/516/41 +f 415/517/40 434/518/44 416/519/44 +f 420/520/44 428/521/40 419/522/40 +f 424/523/45 435/524/39 423/525/39 +f 411/513/45 440/526/46 413/527/46 +f 416/519/44 432/528/43 417/529/43 +f 421/530/43 441/531/44 420/532/44 +f 423/533/39 437/534/42 422/535/42 +f 426/536/41 429/537/46 425/538/46 +f 414/539/41 436/540/40 415/541/40 +f 418/542/42 431/543/39 412/511/39 +f 422/544/42 439/545/43 421/546/43 +f 417/529/43 430/547/42 418/542/42 +f 413/527/46 438/548/41 414/539/41 +f 425/549/46 433/550/45 424/551/45 +f 379/552/45 447/553/39 380/494/39 +f 407/554/39 449/555/45 408/556/45 +f 404/557/44 455/558/43 405/559/43 +f 410/560/41 444/561/40 403/562/40 +f 400/506/44 452/563/40 399/564/40 +f 397/500/46 458/565/45 379/552/45 +f 408/566/45 445/567/46 409/568/46 +f 405/569/43 453/570/42 406/571/42 +f 399/473/40 452/572/40 454/474/41 +f 402/476/42 446/495/42 448/477/43 +f 382/479/40 384/482/44 383/480/44 +f 384/482/44 386/487/43 385/483/43 +f 403/484/40 444/573/40 457/485/44 +f 386/487/43 388/492/42 387/488/42 +f 406/489/42 453/574/42 451/490/39 +f 388/492/42 390/575/39 389/493/39 +f 380/494/39 447/553/39 446/495/42 +f 390/496/39 392/501/45 391/497/45 +f 398/475/41 454/474/41 456/499/46 +f 392/501/45 394/503/46 393/502/46 +f 394/503/46 396/510/41 395/504/41 +f 401/478/43 448/477/43 450/505/44 +f 409/507/46 445/576/46 443/508/41 +f 396/510/41 382/479/40 381/481/40 +f 412/511/39 431/543/39 442/512/45 +f 419/514/40 428/577/40 427/515/41 +f 415/517/40 436/578/40 434/518/44 +f 420/520/44 441/579/44 428/521/40 +f 424/523/45 433/580/45 435/524/39 +f 411/513/45 442/512/45 440/526/46 +f 416/519/44 434/518/44 432/528/43 +f 421/530/43 439/581/43 441/531/44 +f 423/533/39 435/582/39 437/534/42 +f 426/536/41 427/583/41 429/537/46 +f 414/539/41 438/548/41 436/540/40 +f 418/542/42 430/547/42 431/543/39 +f 422/544/42 437/584/42 439/545/43 +f 417/529/43 432/528/43 430/547/42 +f 413/527/46 440/526/46 438/548/41 +f 425/549/46 429/585/46 433/550/45 +f 379/552/45 458/565/45 447/553/39 +f 407/554/39 451/586/39 449/555/45 +f 404/557/44 457/587/44 455/558/43 +f 410/560/41 443/588/41 444/561/40 +f 400/506/44 450/505/44 452/563/40 +f 397/500/46 456/499/46 458/565/45 +f 408/566/45 449/589/45 445/567/46 +f 405/569/43 455/590/43 453/570/42 +o BarrelR +v -0.125000 1.546875 1.000000 +v -0.158146 1.533146 1.000000 +v -0.171875 1.500000 1.000000 +v -0.158146 1.466854 1.000000 +v -0.125000 1.453125 1.000000 +v -0.091854 1.466854 1.000000 +v -0.078125 1.500000 1.000000 +v -0.091854 1.533146 1.000000 +v -0.125000 1.562500 1.000000 +v -0.169194 1.544194 1.000000 +v -0.187500 1.500000 1.000000 +v -0.169194 1.455806 1.000000 +v -0.125000 1.437500 1.000000 +v -0.080806 1.455806 1.000000 +v -0.062500 1.500000 1.000000 +v -0.080806 1.544194 1.000000 +v -0.125000 1.562500 1.250000 +v -0.169194 1.544194 1.250000 +v -0.187500 1.500000 1.250000 +v -0.169194 1.455806 1.250000 +v -0.125000 1.437500 1.250000 +v -0.080806 1.455806 1.250000 +v -0.062500 1.500000 1.250000 +v -0.080806 1.544194 1.250000 +v -0.125000 1.531250 1.250000 +v -0.147097 1.522097 1.250000 +v -0.156250 1.500000 1.250000 +v -0.147097 1.477903 1.250000 +v -0.125000 1.468750 1.250000 +v -0.102903 1.477903 1.250000 +v -0.093750 1.500000 1.250000 +v -0.102903 1.522097 1.250000 +v -0.125000 1.531250 1.000000 +v -0.147097 1.522097 1.000000 +v -0.156250 1.500000 1.000000 +v -0.147097 1.477903 1.000000 +v -0.125000 1.468750 1.000000 +v -0.102903 1.477903 1.000000 +v -0.093750 1.500000 1.000000 +v -0.102903 1.522097 1.000000 +v -0.125000 1.546875 0.500000 +v -0.158146 1.533146 0.500000 +v -0.171875 1.500000 0.500000 +v -0.158146 1.466854 0.500000 +v -0.125000 1.453125 0.500000 +v -0.091854 1.466854 0.500000 +v -0.078125 1.500000 0.500000 +v -0.091854 1.533146 0.500000 +v -0.125000 1.546875 1.000000 +v -0.158146 1.533146 1.000000 +v -0.171875 1.500000 1.000000 +v -0.158146 1.466854 1.000000 +v -0.125000 1.453125 1.000000 +v -0.091854 1.466854 1.000000 +v -0.078125 1.500000 1.000000 +v -0.091854 1.533146 1.000000 +v -0.125000 1.562500 1.000000 +v -0.169194 1.544194 1.000000 +v -0.187500 1.500000 1.000000 +v -0.169194 1.455806 1.000000 +v -0.125000 1.437500 1.000000 +v -0.080806 1.455806 1.000000 +v -0.062500 1.500000 1.000000 +v -0.080806 1.544194 1.000000 +v -0.125000 1.562500 1.250000 +v -0.169194 1.544194 1.250000 +v -0.187500 1.500000 1.250000 +v -0.169194 1.455806 1.250000 +v -0.125000 1.437500 1.250000 +v -0.080806 1.455806 1.250000 +v -0.062500 1.500000 1.250000 +v -0.080806 1.544194 1.250000 +v -0.125000 1.531250 1.250000 +v -0.147097 1.522097 1.250000 +v -0.156250 1.500000 1.250000 +v -0.147097 1.477903 1.250000 +v -0.125000 1.468750 1.250000 +v -0.102903 1.477903 1.250000 +v -0.093750 1.500000 1.250000 +v -0.102903 1.522097 1.250000 +v -0.125000 1.531250 1.000000 +v -0.147097 1.522097 1.000000 +v -0.156250 1.500000 1.000000 +v -0.147097 1.477903 1.000000 +v -0.125000 1.468750 1.000000 +v -0.102903 1.477903 1.000000 +v -0.093750 1.500000 1.000000 +v -0.102903 1.522097 1.000000 +vt 0.551282 0.750000 +vt 0.564103 0.775000 +vt 0.551282 0.775000 +vt 0.538462 0.775000 +vt 0.538462 0.750000 +vt 0.525641 0.750000 +vt 0.525641 0.775000 +vt 0.512821 0.775000 +vt 0.512821 0.750000 +vt 0.500000 0.750000 +vt 0.500000 0.775000 +vt 0.487179 0.775000 +vt 0.487179 0.750000 +vt 0.576923 0.750000 +vt 0.589744 0.775000 +vt 0.576923 0.775000 +vt 0.564103 0.750000 +vt 0.512821 0.875000 +vt 0.525641 0.900000 +vt 0.512821 0.900000 +vt 0.487179 0.875000 +vt 0.500000 0.900000 +vt 0.487179 0.900000 +vt 0.564103 0.875000 +vt 0.576923 0.900000 +vt 0.564103 0.900000 +vt 0.538462 0.875000 +vt 0.551282 0.900000 +vt 0.538462 0.900000 +vt 0.525641 0.875000 +vt 0.500000 0.875000 +vt 0.589744 0.875000 +vt 0.576923 0.875000 +vt 0.551282 0.875000 +vt 0.480769 0.601677 +vt 0.486319 0.612500 +vt 0.480769 0.623322 +vt 0.589744 0.750000 +vt 0.589744 0.900000 +vt 0.476845 0.620152 +vt 0.475219 0.612500 +vt 0.476845 0.604847 +vt 0.484694 0.604847 +vt 0.484694 0.620152 +vt 0.589744 0.900000 +vt 0.576923 1.000000 +vt 0.576923 0.900000 +vt 0.512821 0.900000 +vt 0.500000 1.000000 +vt 0.500000 0.900000 +vt 0.538462 0.900000 +vt 0.525641 1.000000 +vt 0.525641 0.900000 +vt 0.551282 0.900000 +vt 0.538462 1.000000 +vt 0.564103 1.000000 +vt 0.564103 0.900000 +vt 0.487179 1.000000 +vt 0.487179 0.900000 +vt 0.512821 1.000000 +vt 0.551282 1.000000 +vt 0.576923 0.775000 +vt 0.564103 0.875000 +vt 0.564103 0.775000 +vt 0.500000 0.775000 +vt 0.487179 0.875000 +vt 0.487179 0.775000 +vt 0.525641 0.775000 +vt 0.512821 0.875000 +vt 0.512821 0.775000 +vt 0.551282 0.875000 +vt 0.551282 0.775000 +vt 0.589744 0.775000 +vt 0.576923 0.875000 +vt 0.500000 0.875000 +vt 0.538462 0.775000 +vt 0.525641 0.875000 +vt 0.538462 0.875000 +vt 0.500000 0.550000 +vt 0.487179 0.750000 +vt 0.487179 0.550000 +vt 0.525641 0.550000 +vt 0.512821 0.750000 +vt 0.512821 0.550000 +vt 0.564103 0.550000 +vt 0.551282 0.750000 +vt 0.551282 0.550000 +vt 0.589744 0.550000 +vt 0.576923 0.750000 +vt 0.576923 0.550000 +vt 0.500000 0.750000 +vt 0.538462 0.550000 +vt 0.525641 0.750000 +vt 0.538462 0.750000 +vt 0.564103 0.750000 +vt 0.589744 1.000000 +vt 0.589744 0.875000 +vt 0.589744 0.750000 +vn 0.0000 0.0000 -1.0000 +vn 0.0000 0.0000 1.0000 +vn 0.0000 1.0000 0.0000 +vn 0.7071 0.7071 0.0000 +vn -1.0000 0.0000 0.0000 +vn -0.7071 0.7071 0.0000 +vn 0.0000 -1.0000 0.0000 +vn -0.7071 -0.7071 0.0000 +vn 0.7071 -0.7071 0.0000 +vn 1.0000 0.0000 0.0000 +s off +f 460/591/47 469/592/47 468/593/47 +f 460/591/47 467/594/47 459/595/47 +f 466/596/47 467/594/47 474/597/47 +f 466/596/47 473/598/47 465/599/47 +f 464/600/47 473/598/47 472/601/47 +f 464/600/47 471/602/47 463/603/47 +f 462/604/47 471/605/47 470/606/47 +f 462/604/47 469/592/47 461/607/47 +f 481/608/48 490/609/48 489/610/48 +f 479/611/48 488/612/48 487/613/48 +f 477/614/48 486/615/48 485/616/48 +f 475/617/48 484/618/48 483/619/48 +f 475/617/48 490/609/48 482/620/48 +f 481/608/48 488/612/48 480/621/48 +f 479/622/48 486/615/48 478/623/48 +f 477/614/48 484/618/48 476/624/48 +f 495/625/48 497/626/48 491/627/48 +f 460/591/47 461/607/47 469/592/47 +f 460/591/47 468/593/47 467/594/47 +f 466/596/47 459/595/47 467/594/47 +f 466/596/47 474/597/47 473/598/47 +f 464/600/47 465/599/47 473/598/47 +f 464/600/47 472/601/47 471/602/47 +f 462/604/47 463/628/47 471/605/47 +f 462/604/47 470/606/47 469/592/47 +f 481/608/48 482/620/48 490/609/48 +f 479/611/48 480/621/48 488/612/48 +f 477/614/48 478/623/48 486/615/48 +f 475/617/48 476/624/48 484/618/48 +f 475/617/48 483/619/48 490/609/48 +f 481/608/48 489/610/48 488/612/48 +f 479/622/48 487/629/48 486/615/48 +f 477/614/48 485/616/48 484/618/48 +f 491/627/48 492/630/48 493/631/48 +f 493/631/48 494/632/48 495/625/48 +f 495/625/48 496/633/48 497/626/48 +f 497/626/48 498/634/48 491/627/48 +f 491/627/48 493/631/48 495/625/48 +s 1 +f 535/635/49 542/636/50 534/637/50 +f 537/638/51 544/639/52 536/640/52 +f 531/641/53 546/642/54 538/643/54 +f 532/644/55 539/645/53 531/641/53 +f 534/637/50 541/646/56 533/647/56 +f 536/640/52 543/648/49 535/649/49 +f 538/643/54 545/650/51 537/638/51 +f 533/647/56 540/651/55 532/644/55 +f 518/652/54 525/653/51 517/654/51 +f 520/655/55 527/656/53 519/657/53 +f 522/658/50 529/659/56 521/660/56 +f 517/654/51 524/661/52 516/662/52 +f 519/663/53 526/664/54 518/652/54 +f 521/660/56 528/665/55 520/655/55 +f 515/666/49 530/667/50 522/658/50 +f 516/662/52 523/668/49 515/666/49 +f 504/669/55 511/670/53 503/671/53 +f 506/672/50 513/673/56 505/674/56 +f 501/675/51 508/676/52 500/677/52 +f 503/678/53 510/679/54 502/680/54 +f 505/674/56 512/681/55 504/669/55 +f 499/682/49 514/683/50 506/672/50 +f 500/677/52 507/684/49 499/682/49 +f 502/680/54 509/685/51 501/675/51 +f 535/635/49 543/686/49 542/636/50 +f 537/638/51 545/650/51 544/639/52 +f 531/641/53 539/645/53 546/642/54 +f 532/644/55 540/651/55 539/645/53 +f 534/637/50 542/636/50 541/646/56 +f 536/640/52 544/639/52 543/648/49 +f 538/643/54 546/642/54 545/650/51 +f 533/647/56 541/646/56 540/651/55 +f 518/652/54 526/664/54 525/653/51 +f 520/655/55 528/665/55 527/656/53 +f 522/658/50 530/667/50 529/659/56 +f 517/654/51 525/653/51 524/661/52 +f 519/663/53 527/687/53 526/664/54 +f 521/660/56 529/659/56 528/665/55 +f 515/666/49 523/668/49 530/667/50 +f 516/662/52 524/661/52 523/668/49 +f 504/669/55 512/681/55 511/670/53 +f 506/672/50 514/683/50 513/673/56 +f 501/675/51 509/685/51 508/676/52 +f 503/678/53 511/688/53 510/679/54 +f 505/674/56 513/673/56 512/681/55 +f 499/682/49 507/684/49 514/683/50 +f 500/677/52 508/676/52 507/684/49 +f 502/680/54 510/679/54 509/685/51 +o BarrelL +v 0.147097 1.522097 1.000000 +v 0.156250 1.500000 1.000000 +v 0.147097 1.477903 1.000000 +v 0.125000 1.468750 1.000000 +v 0.102903 1.477903 1.000000 +v 0.093750 1.500000 1.000000 +v 0.102903 1.522097 1.000000 +v 0.125000 1.531250 1.000000 +v 0.147097 1.522097 1.250000 +v 0.156250 1.500000 1.250000 +v 0.147097 1.477903 1.250000 +v 0.125000 1.468750 1.250000 +v 0.102903 1.477903 1.250000 +v 0.093750 1.500000 1.250000 +v 0.102903 1.522097 1.250000 +v 0.125000 1.531250 1.250000 +v 0.169194 1.544194 1.250000 +v 0.187500 1.500000 1.250000 +v 0.169194 1.455806 1.250000 +v 0.125000 1.437500 1.250000 +v 0.080806 1.455806 1.250000 +v 0.062500 1.500000 1.250000 +v 0.080806 1.544194 1.250000 +v 0.125000 1.562500 1.250000 +v 0.169194 1.544194 1.000000 +v 0.187500 1.500000 1.000000 +v 0.169194 1.455806 1.000000 +v 0.125000 1.437500 1.000000 +v 0.080806 1.455806 1.000000 +v 0.062500 1.500000 1.000000 +v 0.080806 1.544194 1.000000 +v 0.125000 1.562500 1.000000 +v 0.158146 1.533146 1.000000 +v 0.171875 1.500000 1.000000 +v 0.158146 1.466854 1.000000 +v 0.125000 1.453125 1.000000 +v 0.091854 1.466854 1.000000 +v 0.078125 1.500000 1.000000 +v 0.091854 1.533146 1.000000 +v 0.125000 1.546875 1.000000 +v 0.147097 1.522097 1.000000 +v 0.156250 1.500000 1.000000 +v 0.147097 1.477903 1.000000 +v 0.125000 1.468750 1.000000 +v 0.102903 1.477903 1.000000 +v 0.093750 1.500000 1.000000 +v 0.102903 1.522097 1.000000 +v 0.125000 1.531250 1.000000 +v 0.147097 1.522097 1.250000 +v 0.156250 1.500000 1.250000 +v 0.147097 1.477903 1.250000 +v 0.125000 1.468750 1.250000 +v 0.102903 1.477903 1.250000 +v 0.093750 1.500000 1.250000 +v 0.102903 1.522097 1.250000 +v 0.125000 1.531250 1.250000 +v 0.169194 1.544194 1.250000 +v 0.187500 1.500000 1.250000 +v 0.169194 1.455806 1.250000 +v 0.125000 1.437500 1.250000 +v 0.080806 1.455806 1.250000 +v 0.062500 1.500000 1.250000 +v 0.080806 1.544194 1.250000 +v 0.125000 1.562500 1.250000 +v 0.169194 1.544194 1.000000 +v 0.187500 1.500000 1.000000 +v 0.169194 1.455806 1.000000 +v 0.125000 1.437500 1.000000 +v 0.080806 1.455806 1.000000 +v 0.062500 1.500000 1.000000 +v 0.080806 1.544194 1.000000 +v 0.125000 1.562500 1.000000 +v 0.158146 1.533146 1.000000 +v 0.171875 1.500000 1.000000 +v 0.158146 1.466854 1.000000 +v 0.125000 1.453125 1.000000 +v 0.091854 1.466854 1.000000 +v 0.078125 1.500000 1.000000 +v 0.091854 1.533146 1.000000 +v 0.125000 1.546875 1.000000 +v 0.158146 1.533146 0.500000 +v 0.171875 1.500000 0.500000 +v 0.158146 1.466854 0.500000 +v 0.125000 1.453125 0.500000 +v 0.091854 1.466854 0.500000 +v 0.078125 1.500000 0.500000 +v 0.091854 1.533146 0.500000 +v 0.125000 1.546875 0.500000 +vt 0.480769 0.601677 +vt 0.486319 0.612500 +vt 0.480769 0.623322 +vt 0.564103 0.875000 +vt 0.551282 0.900000 +vt 0.551282 0.875000 +vt 0.589744 0.875000 +vt 0.576923 0.900000 +vt 0.576923 0.875000 +vt 0.512821 0.875000 +vt 0.500000 0.900000 +vt 0.500000 0.875000 +vt 0.538462 0.875000 +vt 0.525641 0.900000 +vt 0.525641 0.875000 +vt 0.538462 0.900000 +vt 0.564103 0.900000 +vt 0.487179 0.875000 +vt 0.487179 0.900000 +vt 0.512821 0.900000 +vt 0.576923 0.750000 +vt 0.564103 0.775000 +vt 0.564103 0.750000 +vt 0.589744 0.775000 +vt 0.576923 0.775000 +vt 0.500000 0.750000 +vt 0.487179 0.775000 +vt 0.487179 0.750000 +vt 0.512821 0.775000 +vt 0.500000 0.775000 +vt 0.525641 0.750000 +vt 0.512821 0.750000 +vt 0.538462 0.750000 +vt 0.525641 0.775000 +vt 0.551282 0.750000 +vt 0.538462 0.775000 +vt 0.551282 0.775000 +vt 0.476845 0.620152 +vt 0.475219 0.612500 +vt 0.476845 0.604847 +vt 0.484694 0.604847 +vt 0.484694 0.620152 +vt 0.589744 0.900000 +vt 0.589744 0.750000 +vt 0.564103 0.900000 +vt 0.551282 1.000000 +vt 0.551282 0.900000 +vt 0.525641 0.900000 +vt 0.512821 1.000000 +vt 0.512821 0.900000 +vt 0.500000 0.900000 +vt 0.487179 1.000000 +vt 0.487179 0.900000 +vt 0.576923 0.900000 +vt 0.564103 1.000000 +vt 0.538462 1.000000 +vt 0.538462 0.900000 +vt 0.525641 1.000000 +vt 0.500000 1.000000 +vt 0.589744 0.900000 +vt 0.576923 1.000000 +vt 0.576923 0.775000 +vt 0.564103 0.875000 +vt 0.564103 0.775000 +vt 0.500000 0.775000 +vt 0.487179 0.875000 +vt 0.487179 0.775000 +vt 0.525641 0.775000 +vt 0.512821 0.875000 +vt 0.512821 0.775000 +vt 0.551282 0.875000 +vt 0.551282 0.775000 +vt 0.589744 0.775000 +vt 0.576923 0.875000 +vt 0.500000 0.875000 +vt 0.538462 0.775000 +vt 0.525641 0.875000 +vt 0.538462 0.875000 +vt 0.500000 0.550000 +vt 0.487179 0.750000 +vt 0.487179 0.550000 +vt 0.525641 0.550000 +vt 0.512821 0.750000 +vt 0.512821 0.550000 +vt 0.564103 0.550000 +vt 0.551282 0.750000 +vt 0.551282 0.550000 +vt 0.589744 0.550000 +vt 0.576923 0.750000 +vt 0.576923 0.550000 +vt 0.500000 0.750000 +vt 0.538462 0.550000 +vt 0.525641 0.750000 +vt 0.538462 0.750000 +vt 0.564103 0.750000 +vt 0.589744 1.000000 +vt 0.589744 0.875000 +vt 0.589744 0.750000 +vn 0.0000 0.0000 1.0000 +vn 0.0000 0.0000 -1.0000 +vn 1.0000 0.0000 0.0000 +vn 0.7071 -0.7071 0.0000 +vn -0.7071 -0.7071 0.0000 +vn -1.0000 0.0000 0.0000 +vn -0.7071 0.7071 0.0000 +vn 0.0000 1.0000 0.0000 +vn 0.7071 0.7071 0.0000 +vn 0.0000 -1.0000 0.0000 +s off +f 550/689/57 548/690/57 554/691/57 +f 568/692/57 561/693/57 569/694/57 +f 566/695/57 559/696/57 567/697/57 +f 564/698/57 557/699/57 565/700/57 +f 570/701/57 555/702/57 563/703/57 +f 570/701/57 561/693/57 562/704/57 +f 568/692/57 559/696/57 560/705/57 +f 566/706/57 557/699/57 558/707/57 +f 564/698/57 555/702/57 556/708/57 +f 583/709/58 576/710/58 584/711/58 +f 583/709/58 574/712/58 575/713/58 +f 581/714/58 574/715/58 582/716/58 +f 581/714/58 572/717/58 573/718/58 +f 579/719/58 572/717/58 580/720/58 +f 586/721/58 571/722/58 579/719/58 +f 585/723/58 578/724/58 586/721/58 +f 585/723/58 576/710/58 577/725/58 +f 554/691/57 553/726/57 552/727/57 +f 552/727/57 551/728/57 550/689/57 +f 550/689/57 549/729/57 548/690/57 +f 548/690/57 547/730/57 554/691/57 +f 554/691/57 552/727/57 550/689/57 +f 568/692/57 560/705/57 561/693/57 +f 566/695/57 558/731/57 559/696/57 +f 564/698/57 556/708/57 557/699/57 +f 570/701/57 562/704/57 555/702/57 +f 570/701/57 569/694/57 561/693/57 +f 568/692/57 567/697/57 559/696/57 +f 566/706/57 565/700/57 557/699/57 +f 564/698/57 563/703/57 555/702/57 +f 583/709/58 575/713/58 576/710/58 +f 583/709/58 582/732/58 574/712/58 +f 581/714/58 573/718/58 574/715/58 +f 581/714/58 580/720/58 572/717/58 +f 579/719/58 571/722/58 572/717/58 +f 586/721/58 578/724/58 571/722/58 +f 585/723/58 577/725/58 578/724/58 +f 585/723/58 584/711/58 576/710/58 +s 1 +f 600/733/59 593/734/60 601/735/60 +f 595/736/61 588/737/62 596/738/62 +f 597/739/63 590/740/64 598/741/64 +f 599/742/65 592/743/59 600/733/59 +f 601/735/60 594/744/66 602/745/66 +f 602/745/66 587/746/61 595/736/61 +f 596/738/62 589/747/63 597/739/63 +f 598/748/64 591/749/65 599/742/65 +f 615/750/61 608/751/62 616/752/62 +f 613/753/60 606/754/66 614/755/66 +f 611/756/65 604/757/59 612/758/59 +f 616/752/62 609/759/63 617/760/63 +f 614/761/66 607/762/61 615/750/61 +f 612/758/59 605/763/60 613/753/60 +f 618/764/64 603/765/65 611/756/65 +f 617/760/63 610/766/64 618/764/64 +f 629/767/60 622/768/66 630/769/66 +f 627/770/65 620/771/59 628/772/59 +f 632/773/62 625/774/63 633/775/63 +f 630/776/66 623/777/61 631/778/61 +f 628/772/59 621/779/60 629/767/60 +f 634/780/64 619/781/65 627/770/65 +f 633/775/63 626/782/64 634/780/64 +f 631/778/61 624/783/62 632/773/62 +f 600/733/59 592/743/59 593/734/60 +f 595/736/61 587/746/61 588/737/62 +f 597/739/63 589/747/63 590/740/64 +f 599/742/65 591/749/65 592/743/59 +f 601/735/60 593/734/60 594/744/66 +f 602/745/66 594/744/66 587/746/61 +f 596/738/62 588/737/62 589/747/63 +f 598/748/64 590/784/64 591/749/65 +f 615/750/61 607/762/61 608/751/62 +f 613/753/60 605/763/60 606/754/66 +f 611/756/65 603/765/65 604/757/59 +f 616/752/62 608/751/62 609/759/63 +f 614/761/66 606/785/66 607/762/61 +f 612/758/59 604/757/59 605/763/60 +f 618/764/64 610/766/64 603/765/65 +f 617/760/63 609/759/63 610/766/64 +f 629/767/60 621/779/60 622/768/66 +f 627/770/65 619/781/65 620/771/59 +f 632/773/62 624/783/62 625/774/63 +f 630/776/66 622/786/66 623/777/61 +f 628/772/59 620/771/59 621/779/60 +f 634/780/64 626/782/64 619/781/65 +f 633/775/63 625/774/63 626/782/64 +f 631/778/61 623/777/61 624/783/62 +o Base +v -0.500000 0.000000 0.500000 +v 0.500000 0.000000 0.500000 +v -0.500000 0.000000 -0.500000 +v 0.500000 0.000000 -0.500000 +v -0.500000 0.000000 -0.250000 +v -0.500000 0.000000 0.250000 +v -0.250000 0.000000 0.500000 +v 0.250000 0.000000 0.500000 +v 0.500000 0.000000 0.250000 +v 0.500000 0.000000 -0.250000 +v 0.250000 0.000000 -0.500000 +v -0.250000 0.000000 -0.500000 +v -0.250000 0.000000 0.250000 +v -0.250000 0.000000 -0.250000 +v 0.250000 0.000000 0.250000 +v 0.250000 0.000000 -0.250000 +v -0.500000 0.125000 0.250000 +v -0.500000 0.125000 0.500000 +v 0.250000 0.125000 0.500000 +v 0.500000 0.125000 0.500000 +v 0.500000 0.125000 -0.250000 +v 0.500000 0.125000 -0.500000 +v -0.250000 0.125000 -0.500000 +v -0.500000 0.125000 -0.500000 +v -0.500000 0.125000 -0.250000 +v -0.250000 0.125000 0.500000 +v 0.500000 0.125000 0.250000 +v 0.250000 0.125000 -0.500000 +v -0.250000 0.125000 -0.250000 +v -0.250000 0.125000 0.250000 +v 0.250000 0.125000 -0.250000 +v 0.250000 0.125000 0.250000 +v -0.437500 0.125000 0.312500 +v -0.437500 0.125000 0.437500 +v 0.312500 0.125000 0.437500 +v 0.437500 0.125000 0.437500 +v 0.437500 0.125000 -0.312500 +v 0.437500 0.125000 -0.437500 +v -0.312500 0.125000 -0.437500 +v -0.437500 0.125000 -0.437500 +v -0.437500 0.125000 -0.312500 +v -0.312500 0.125000 0.437500 +v 0.437500 0.125000 0.312500 +v 0.312500 0.125000 -0.437500 +v -0.312500 0.125000 -0.312500 +v -0.312500 0.125000 0.312500 +v 0.312500 0.125000 -0.312500 +v 0.312500 0.125000 0.312500 +v -0.125000 0.875000 0.000000 +v -0.125000 0.875000 0.125000 +v 0.000000 0.875000 0.125000 +v 0.125000 0.875000 0.125000 +v 0.125000 0.875000 -0.125000 +v 0.000000 0.875000 -0.125000 +v -0.125000 0.875000 -0.125000 +v 0.125000 0.875000 0.000000 +v 0.000000 0.875000 0.000000 +v 0.000000 0.875000 -0.187500 +v -0.132583 0.875000 -0.132583 +v -0.187500 0.875000 0.000000 +v -0.132583 0.875000 0.132583 +v 0.000000 0.875000 0.187500 +v 0.132583 0.875000 0.132583 +v 0.187500 0.875000 -0.000000 +v 0.132583 0.875000 -0.132583 +v -0.132583 0.750000 -0.132583 +v 0.000000 0.750000 -0.187500 +v -0.187500 0.750000 0.000000 +v -0.132583 0.750000 0.132583 +v 0.000000 0.750000 0.187500 +v 0.132583 0.750000 0.132583 +v 0.187500 0.750000 -0.000000 +v 0.132583 0.750000 -0.132583 +v 0.000000 0.875000 -0.187500 +v -0.132583 0.875000 -0.132583 +v -0.187500 0.875000 0.000000 +v -0.132583 0.875000 0.132583 +v 0.000000 0.875000 0.187500 +v 0.132583 0.875000 0.132583 +v 0.187500 0.875000 -0.000000 +v 0.132583 0.875000 -0.132583 +v -0.132583 0.750000 -0.132583 +v 0.000000 0.750000 -0.187500 +v -0.187500 0.750000 0.000000 +v -0.132583 0.750000 0.132583 +v 0.000000 0.750000 0.187500 +v 0.132583 0.750000 0.132583 +v 0.187500 0.750000 -0.000000 +v 0.132583 0.750000 -0.132583 +vt 0.025641 0.000000 +vt 0.076923 0.100000 +vt 0.025641 0.100000 +vt 0.025641 0.000000 +vt 0.076923 0.100000 +vt 0.025641 0.100000 +vt 0.025641 0.000000 +vt 0.076923 0.100000 +vt 0.025641 0.100000 +vt 0.025641 0.000000 +vt 0.076923 0.100000 +vt 0.025641 0.100000 +vt 0.025641 0.250000 +vt 0.064103 0.225000 +vt 0.076923 0.250000 +vt 0.025641 0.150000 +vt 0.038462 0.225000 +vt 0.025641 0.250000 +vt 0.076923 0.250000 +vt 0.064103 0.175000 +vt 0.076923 0.150000 +vt 0.076923 0.250000 +vt 0.064103 0.175000 +vt 0.076923 0.150000 +vt -0.000000 0.150000 +vt -0.000000 0.250000 +vt 0.025641 0.300000 +vt 0.076923 0.300000 +vt -0.000000 0.150000 +vt 0.025641 0.250000 +vt -0.000000 0.250000 +vt -0.000000 0.150000 +vt -0.000000 0.250000 +vt 0.025641 0.300000 +vt 0.076923 0.300000 +vt 0.025641 0.150000 +vt 0.025641 0.150000 +vt 0.102564 0.250000 +vt 0.076923 0.150000 +vt 0.102564 0.150000 +vt 0.025641 0.300000 +vt 0.076923 0.250000 +vt 0.076923 0.300000 +vt 0.025641 0.300000 +vt 0.076923 0.300000 +vt -0.000000 0.150000 +vt 0.025641 0.250000 +vt -0.000000 0.250000 +vt 0.102564 0.250000 +vt 0.076923 0.150000 +vt 0.102564 0.150000 +vt 0.025641 0.150000 +vt 0.102564 0.250000 +vt 0.102564 0.150000 +vt 0.102564 0.250000 +vt 0.102564 0.150000 +vt 0.205128 -0.000000 +vt 0.179487 0.300000 +vt 0.179487 -0.000000 +vt 0.128205 -0.000000 +vt 0.153846 0.300000 +vt 0.128205 0.300000 +vt 0.179487 -0.000000 +vt 0.153846 0.300000 +vt 0.153846 0.000000 +vt 0.102564 -0.000000 +vt 0.038462 0.225000 +vt 0.038462 0.225000 +vt 0.064103 0.225000 +vt 0.038462 0.175000 +vt 0.038462 0.175000 +vt 0.064103 0.175000 +vt 0.064103 0.225000 +vt 0.064103 0.225000 +vt 0.038462 0.225000 +vt 0.038462 0.175000 +vt 0.064103 0.175000 +vt 0.038462 0.175000 +vt 0.102564 -0.000000 +vt 0.128205 0.300000 +vt 0.102564 0.300000 +vt 0.128205 -0.000000 +vt 0.153846 0.300000 +vt 0.128205 0.300000 +vt 0.205128 -0.000000 +vt 0.179487 0.300000 +vt 0.179487 -0.000000 +vt 0.128205 -0.000000 +vt 0.128205 0.300000 +vt 0.102564 -0.000000 +vt 0.128205 -0.000000 +vt 0.153846 0.300000 +vt 0.205128 -0.000000 +vt 0.179487 0.300000 +vt 0.179487 -0.000000 +vt 0.153846 0.000000 +vt 0.205128 -0.000000 +vt 0.179487 0.300000 +vt 0.153846 0.000000 +vt 0.102564 -0.000000 +vt 0.153846 0.000000 +vt 0.038462 0.501949 +vt 0.075924 0.575000 +vt 0.038462 0.648051 +vt 0.075924 0.375000 +vt 0.038462 0.448051 +vt 0.000999 0.375000 +vt 0.076923 0.000000 +vt 0.076923 0.000000 +vt 0.076923 0.000000 +vt 0.076923 0.000000 +vt 0.205128 0.300000 +vt 0.011972 0.626655 +vt 0.000999 0.575000 +vt 0.011972 0.523345 +vt 0.064951 0.523345 +vt 0.064951 0.626655 +vt 0.011972 0.323345 +vt 0.038462 0.301949 +vt 0.064951 0.323345 +vt 0.064951 0.426655 +vt 0.011972 0.426655 +vt 0.153846 0.500000 +vt 0.179487 0.450000 +vt 0.179487 0.500000 +vt 0.102564 0.500000 +vt 0.128205 0.450000 +vt 0.128205 0.500000 +vt 0.051282 0.500000 +vt 0.076923 0.450000 +vt 0.076923 0.500000 +vt 0.000000 0.500000 +vt 0.025641 0.450000 +vt 0.025641 0.500000 +vt 0.205128 0.450000 +vt 0.205128 0.500000 +vt 0.153846 0.450000 +vt 0.102564 0.450000 +vt 0.051282 0.450000 +vt 0.000000 0.450000 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 1.0000 0.0000 +vn -1.0000 0.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +vn 0.0000 0.0000 1.0000 +vn 1.0000 0.0000 0.0000 +vn 0.9231 -0.3846 0.0000 +vn -0.9231 0.3846 0.0000 +vn 0.0000 0.3846 -0.9231 +vn 0.0000 -0.3846 -0.9231 +vn 0.0000 0.3846 0.9231 +vn 0.0000 -0.3846 0.9231 +vn 0.9231 0.3846 0.0000 +vn -0.9231 -0.3846 0.0000 +vn 0.7071 0.0000 -0.7071 +vn 0.7071 0.0000 0.7071 +vn -0.7071 0.0000 0.7071 +vn -0.7071 0.0000 -0.7071 +s off +f 645/787/67 644/788/67 650/789/67 +f 637/790/67 648/791/67 639/792/67 +f 640/793/67 641/794/67 635/795/67 +f 649/796/67 636/797/67 642/798/67 +f 658/799/68 673/800/68 657/801/68 +f 665/802/68 678/803/68 662/804/68 +f 656/805/68 671/806/68 655/807/68 +f 664/808/68 676/809/68 660/810/68 +f 650/811/69 662/804/69 645/812/69 +f 637/813/70 657/801/70 646/814/70 +f 642/815/69 666/816/69 649/817/69 +f 639/818/69 658/799/69 637/819/69 +f 640/820/70 664/808/70 647/821/70 +f 641/794/71 652/822/71 635/795/71 +f 648/791/71 659/823/71 639/792/71 +f 643/824/72 654/825/72 636/826/72 +f 649/827/70 661/828/70 643/829/70 +f 645/830/70 656/805/70 638/831/70 +f 635/832/69 651/833/69 640/834/69 +f 644/788/71 665/802/71 650/789/71 +f 646/835/72 663/836/72 648/837/72 +f 636/797/71 653/838/71 642/798/71 +f 647/839/72 660/810/72 641/840/72 +f 638/841/72 655/807/72 644/842/72 +f 680/843/73 685/844/73 676/845/73 +f 667/846/74 684/847/74 683/848/74 +f 678/849/75 687/850/75 672/851/75 +f 683/848/76 680/852/76 667/846/76 +f 653/838/68 682/853/68 666/816/68 +f 659/823/68 674/854/68 658/799/68 +f 651/833/68 680/855/68 664/808/68 +f 660/810/68 668/856/68 652/822/68 +f 663/836/68 675/857/68 659/823/68 +f 661/828/68 670/858/68 654/825/68 +f 666/816/68 677/859/68 661/828/68 +f 662/804/68 672/860/68 656/805/68 +f 652/822/68 667/861/68 651/833/68 +f 655/807/68 681/862/68 665/802/68 +f 657/801/68 679/863/68 663/836/68 +f 654/825/68 669/864/68 653/838/68 +f 679/865/73 688/866/73 691/867/73 +f 669/868/77 686/869/77 685/870/77 +f 679/871/78 683/872/78 675/873/78 +f 687/850/79 671/874/79 672/851/79 +f 690/875/78 681/876/78 671/874/78 +f 673/877/75 689/878/75 688/866/75 +f 682/879/76 690/880/76 677/881/76 +f 675/873/74 689/878/74 674/882/74 +f 681/883/80 688/884/80 678/849/80 +f 676/845/77 684/847/77 668/885/77 +f 685/870/80 682/886/80 669/868/80 +f 677/881/79 686/869/79 670/887/79 +f 696/888/68 698/889/68 692/890/68 +f 706/891/67 704/892/67 702/893/67 +f 645/787/67 638/894/67 644/788/67 +f 637/790/67 646/895/67 648/791/67 +f 640/793/67 647/896/67 641/794/67 +f 649/796/67 643/897/67 636/797/67 +f 658/799/68 674/854/68 673/800/68 +f 665/802/68 681/862/68 678/803/68 +f 656/805/68 672/860/68 671/806/68 +f 664/808/68 680/855/68 676/809/68 +f 650/811/69 665/802/69 662/804/69 +f 637/813/70 658/799/70 657/801/70 +f 642/815/69 653/838/69 666/816/69 +f 639/818/69 659/823/69 658/799/69 +f 640/820/70 651/833/70 664/808/70 +f 641/794/71 660/810/71 652/822/71 +f 648/791/71 663/836/71 659/823/71 +f 643/824/72 661/828/72 654/825/72 +f 649/827/70 666/816/70 661/828/70 +f 645/830/70 662/804/70 656/805/70 +f 635/832/69 652/822/69 651/833/69 +f 644/788/71 655/807/71 665/802/71 +f 646/835/72 657/801/72 663/836/72 +f 636/797/71 654/825/71 653/838/71 +f 647/839/72 664/808/72 660/810/72 +f 638/841/72 656/805/72 655/807/72 +f 680/843/73 691/898/73 685/844/73 +f 667/846/74 668/885/74 684/847/74 +f 678/849/75 688/884/75 687/850/75 +f 683/848/76 691/867/76 680/852/76 +f 653/838/68 669/864/68 682/853/68 +f 659/823/68 675/857/68 674/854/68 +f 651/833/68 667/861/68 680/855/68 +f 660/810/68 676/809/68 668/856/68 +f 663/836/68 679/863/68 675/857/68 +f 661/828/68 677/859/68 670/858/68 +f 666/816/68 682/853/68 677/859/68 +f 662/804/68 678/803/68 672/860/68 +f 652/822/68 668/856/68 667/861/68 +f 655/807/68 671/806/68 681/862/68 +f 657/801/68 673/800/68 679/863/68 +f 654/825/68 670/858/68 669/864/68 +f 679/865/73 673/877/73 688/866/73 +f 669/868/77 670/887/77 686/869/77 +f 679/871/78 691/898/78 683/872/78 +f 687/850/79 690/875/79 671/874/79 +f 690/875/78 691/867/78 681/876/78 +f 673/877/75 674/882/75 689/878/75 +f 682/879/76 691/898/76 690/880/76 +f 675/873/74 683/872/74 689/878/74 +f 681/883/80 691/898/80 688/884/80 +f 676/845/77 685/844/77 684/847/77 +f 685/870/80 691/867/80 682/886/80 +f 677/881/79 690/880/79 686/869/79 +f 692/890/68 693/899/68 694/900/68 +f 694/900/68 695/901/68 696/888/68 +f 696/888/68 697/902/68 698/889/68 +f 698/889/68 699/903/68 692/890/68 +f 692/890/68 694/900/68 696/888/68 +f 702/893/67 700/904/67 701/905/67 +f 701/905/67 707/906/67 706/891/67 +f 706/891/67 705/907/67 704/892/67 +f 704/892/67 703/908/67 702/893/67 +f 702/893/67 701/905/67 706/891/67 +s 1 +f 714/909/72 723/910/81 715/911/81 +f 712/912/71 721/913/82 713/914/82 +f 710/915/69 719/916/83 711/917/83 +f 708/918/70 716/919/84 709/920/84 +f 715/911/81 717/921/70 708/922/70 +f 713/914/82 722/923/72 714/909/72 +f 711/917/83 720/924/71 712/912/71 +f 709/920/84 718/925/69 710/915/69 +f 714/909/72 722/923/72 723/910/81 +f 712/912/71 720/924/71 721/913/82 +f 710/915/69 718/925/69 719/916/83 +f 708/918/70 717/926/70 716/919/84 +f 715/911/81 723/910/81 717/921/70 +f 713/914/82 721/913/82 722/923/72 +f 711/917/83 719/916/83 720/924/71 +f 709/920/84 716/919/84 718/925/69 diff --git a/src/main/resources/assets/hbm/sounds.json b/src/main/resources/assets/hbm/sounds.json index 66ac89908..08ec96c69 100644 --- a/src/main/resources/assets/hbm/sounds.json +++ b/src/main/resources/assets/hbm/sounds.json @@ -180,6 +180,8 @@ "turret.richard_fire": {"category": "block", "sounds": [{"name": "turret/richard_fire", "stream": false}]}, "turret.howard_fire": {"category": "block", "sounds": [{"name": "turret/howard_fire", "stream": false}]}, "turret.howard_reload": {"category": "block", "sounds": [{"name": "turret/howard_reload", "stream": false}]}, + "turret.sentry_fire": {"category": "block", "sounds": [{"name": "turret/sentry_fire", "stream": false}]}, + "turret.sentry_lockon": {"category": "block", "sounds": [{"name": "turret/sentry_lockon", "stream": false}]}, "turret.mortarWhistle": {"category": "block", "sounds": [{"name": "weapon/mortarWhistle", "stream": false}]}, "entity.chopperFlyingLoop": {"category": "hostile", "sounds": [{"name": "entity/chopperFlyingLoop", "stream": true}]}, diff --git a/src/main/resources/assets/hbm/sounds/turret/sentry_fire.ogg b/src/main/resources/assets/hbm/sounds/turret/sentry_fire.ogg new file mode 100644 index 0000000000000000000000000000000000000000..d94087211708c0a0a51f3ca79676377bfe6bab61 GIT binary patch literal 21261 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 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/gui/processing/gui_crystallizer_alt.png b/src/main/resources/assets/hbm/textures/gui/processing/gui_crystallizer_alt.png index fb90b4c8b22b4faa8b72020526a253a9d04df832..55f2452331ad574954cdd22652c8cae5d3380d0e 100644 GIT binary patch delta 2469 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 delta 2464 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 QKmY&$07*qoM6N<$g7RqGI{*Lx literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/items/ammo_5mm_alt2.png b/src/main/resources/assets/hbm/textures/items/ammo_5mm_alt2.png new file mode 100644 index 0000000000000000000000000000000000000000..a8f597739d1a2af78164f854d9486606ae7c68d7 GIT binary patch literal 485 zcmV6o$WXEw%`TxyUG)!c?1LQv`%dx?wPoCzvNlSh8+u zFK8A0o~PUGHjPGu z&1S>#;U$k>e71gvyWKAJdY$ojT=a_w^ZDEYG{EuUC8y_Sz(hyOBevTu1{OjPhM_hl zMFeB={o{lOuFaSCZ;6&iNGY*xyMXgNM=4drsa)2ehra&dBc&{$BuS7`qLgB>Sg=~H zEP#V51AV7+(QG!cEDNnQLI{KqBuT=0y)NKV1S8wFNz;_wZiiBeJkJqAAf+tLmJEE~ z*R58Ie!pKbnNFviJo@^_{6Q6L7UsGxaU4^t)rjMmH_z|m2LbnfrWaT5zCA7dU^bgs zH@6LtrYR5au2_Ef#Or4hPS4MH^~9|_HUPpf)T7Zz-@Lp*4}JBrtp`2+4jWaStugs0 bypMhXSro9W?P5o500000NkvXXu0mjfN_^Mv literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/models/chemplant_base_new.png b/src/main/resources/assets/hbm/textures/models/chemplant_base_new.png index d6816b7dcacd3c1e3694c22e5f7a85c1f5b1a11f..2b70a04d68a685486134458da556321d64c26e04 100644 GIT binary patch literal 11818 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

w3t%^3E7Ej;M+!u!YXJ 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 KMNUMnLSTaM171!5 delta 905 zcmV;419trI1)m3yB!2{RLP=Bz2nYy#2xN!=00UM@L_t(oh0U0|j^soXhCi3fZjbxo z={CbQyQ2k>pbZcrV?!iFKmuB6MMTCE@Blml??Ai}2`M5#BaxvAR@z`-R|`TjJJZwM z({5kO1l^unm4_bsvXs>N?BA!XQ|I)lQ!@PD#^Xm{l#f6AxPN@zepEvM#98sW{Wu>I zz;kTAeDrylMHudq*c%-Zb4Si8F7Bmi zq7W<7HHV5qAuNlcPzWGSQf$j2&2ntZq9dgi>QkjwrfUxQ$$(rqxap8Wx~Oc7?RYq9 zOzyZ#r|jQ!&7s|{g^FU_mIKo%Lrc&j!tz~26m33byMG-Ayo}P7Y;9${oZ7tIESL%# z--ic-!IgcY3U!^nbjte847*t{N>lE3a~czyelus3W(18~tC%X(b^6jNYmib-GCWrx z#u=^<*yD^|+ol|4n@`zazb9;OOGd8}{GKEmCQJg!@E|4#&>Aa%Y`*0&c{!%J+ct7lsWDaMUKo~Iw~r2U zdTmr` z>#VXQvdLpX5?MyB^Y~%h7=L>f@n+BA`LoQ(YO=n(+v#<-nnSw*ycpZu4>BW7Uns!* f<>J5S*T+8_a@x=%vT+vx0000|hU*G=ozeduUA`@`1lg>)K_5p$`7lWb7=b;zj$p8SLd|4ZsFf4+> zVAuX?wK^b4`0xPNq|xh9An!&HH;S+#ZrJbu?d5sXmg=yfY22s~c2nTFc;Uyb`znm* z<>h6h-$NxM(!m(ME|H_qQ!kLv10Y$Ry*U-F6hmttm30 z#C-nM#{>ZGe9-;@M#9z2j9OAG z7IAWNqWeL;gd9fF=ygMFIiAx9M_zR&ot3Dj?L9l-enHyr@CysuB=#dLE-nttAvvy& z(530L-wc%S^D{Bi(HXY9>*&39;n=H+Xi_isq+YLgJt(5lsO}gPOucG69w(Jbh5Hcg zvm%BK1MHF*`;cE9F`9;6HSY2D3U_&LuJ3l0*VL<;k!ICL;WUr6yTsklveIP@k+<@) z*WF<1RUdviC-BNSVfUU)CP}w6>fc9?Nbcwezlco6zzrM65+yIg~!Z;+O{Y&060X2oJL-Sfu#d_M0=>a_RlK-${c zA{SSOTHAxfJ=~2=;X&daxf`3p(ZQcu->r!RHa0e-k=^A20I$~zzu&KGQ&knsW>dRo zmnvHw5k*RoNjMzF#g*9jQmKTLB9oqXxz-e!u+I*(+%#tm_GwH0< zw_Pqb=4&>aI_=`Y=p1&^IcZIi36Ch=M@=a*v9lE!iA35OM<ISzxve(PE zOGX%Noj>3;wP|KZDKfG1mod$&o}Qj^BXznQtajAR;x;>(1Fzla6pT<+RexVI4_iL_ zX5MsM&vBd`N6>GG#BVHm$w5f5@OWM3FiKzzznSUKJBPWBF?2uG2p++ibXMBh z;%mJbI=t#Afs*F+dUXfeN3oO6N=B1G?H$kVvE%J})oQhhlp>RnB@Va_fZ0RDacnEk zrOowSseD;O`Lc%1^<8OOdCs-5PImV@yebckMnk)9wOSo*W*Ahi3fTW|2s=Kd$Rsim j!IfZjq+Bi|rO4zBq|@omX)F?+00000NkvXXu0mjfe=x{h literal 0 HcmV?d00001 diff --git a/src/main/resources/mcmod.info b/src/main/resources/mcmod.info index 5daf0d24b..213ba0ecf 100755 --- a/src/main/resources/mcmod.info +++ b/src/main/resources/mcmod.info @@ -3,7 +3,7 @@ "modid": "hbm", "name": "Hbm's Nuclear Tech", "description": "A mod that adds weapons, nuclear themed stuff and machines", - "version":"1.0.27_X4476", + "version":"1.0.27_X4480", "mcversion": "1.7.10", "url": "", "updateUrl": "",