From 24e0aff405c66ca540daf7d3c3c94db3e3ca9b0b Mon Sep 17 00:00:00 2001 From: Bob Date: Sat, 23 Nov 2024 23:01:38 +0100 Subject: [PATCH 01/24] trotty did nothing wrong --- .../projectile/EntityBulletBeamBase.java | 2 +- src/main/java/com/hbm/items/ModItems.java | 5 +- .../weapon/sedna/factory/GunFactory.java | 3 +- .../sedna/factory/GunFactoryClient.java | 5 + .../weapon/sedna/factory/LegoClient.java | 15 + .../weapon/sedna/factory/Orchestras.java | 9 +- .../weapon/sedna/factory/XFactoryFolly.java | 66 + src/main/java/com/hbm/main/ClientProxy.java | 1 - .../java/com/hbm/main/ResourceManager.java | 2 + .../render/entity/projectile/RenderBeam.java | 5 + .../item/weapon/ItemRenderOverkill.java | 35 - .../item/weapon/sedna/ItemRenderFolly.java | 237 + .../item/weapon/sedna/ItemRenderSTG77.java | 6 +- .../weapon/sedna/ItemRenderWeaponBase.java | 1 + .../java/com/hbm/render/model/ModelFolly.java | 322 -- .../weapons/{moonlight.obj => folly.obj} | 3943 +++++++++-------- src/main/resources/assets/hbm/sounds.json | 2 + .../assets/hbm/sounds/weapon/fire/vstar.ogg | Bin 0 -> 24183 bytes .../hbm/textures/models/weapons/moonlight.png | Bin 3037 -> 5220 bytes 19 files changed, 2362 insertions(+), 2297 deletions(-) create mode 100644 src/main/java/com/hbm/items/weapon/sedna/factory/XFactoryFolly.java create mode 100644 src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderFolly.java delete mode 100644 src/main/java/com/hbm/render/model/ModelFolly.java rename src/main/resources/assets/hbm/models/weapons/{moonlight.obj => folly.obj} (54%) create mode 100644 src/main/resources/assets/hbm/sounds/weapon/fire/vstar.ogg diff --git a/src/main/java/com/hbm/entity/projectile/EntityBulletBeamBase.java b/src/main/java/com/hbm/entity/projectile/EntityBulletBeamBase.java index aeee12735..3746b9f7d 100644 --- a/src/main/java/com/hbm/entity/projectile/EntityBulletBeamBase.java +++ b/src/main/java/com/hbm/entity/projectile/EntityBulletBeamBase.java @@ -61,7 +61,7 @@ public class EntityBulletBeamBase extends Entity implements IEntityAdditionalSpa this.headingZ = (double) (MathHelper.cos(this.rotationYaw / 180.0F * (float) Math.PI) * MathHelper.cos(this.rotationPitch / 180.0F * (float) Math.PI)); this.headingY = (double) (-MathHelper.sin((this.rotationPitch) / 180.0F * (float) Math.PI)); - double range = 150D; + double range = 250D; this.headingX *= range; this.headingY *= range; this.headingZ *= range; diff --git a/src/main/java/com/hbm/items/ModItems.java b/src/main/java/com/hbm/items/ModItems.java index 82ad7d0f2..2a00269cb 100644 --- a/src/main/java/com/hbm/items/ModItems.java +++ b/src/main/java/com/hbm/items/ModItems.java @@ -1523,7 +1523,6 @@ public class ModItems { public static Item gun_ar15; public static Item gun_calamity; public static Item gun_lacunae; - public static Item gun_folly; public static Item gun_proto; public static Item gun_mirv; public static Item gun_bf; @@ -1624,6 +1623,7 @@ public class ModItems { public static Item gun_coilgun; public static Item gun_hangman; public static Item gun_bolter; + public static Item gun_folly; public static Item ammo_standard; @@ -4064,7 +4064,6 @@ public class ModItems { gun_ar15 = new ItemGunBase(Gun50BMGFactory.getAR15Config(), Gun50BMGFactory.getAR15BurstConfig()).setUnlocalizedName("gun_ar15").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_ar15"); gun_calamity = new ItemGunBase(Gun762mmFactory.getCalamityConfig()).setUnlocalizedName("gun_calamity").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_calamity"); gun_lacunae = new ItemGunLacunae(Gun5mmFactory.getLacunaeConfig()).setUnlocalizedName("gun_lacunae").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_lacunae"); - gun_folly = new GunFolly().setUnlocalizedName("gun_folly").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_folly"); gun_proto = new ItemGunBase(GunFatmanFactory.getProtoConfig()).setUnlocalizedName("gun_proto").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_fatman"); gun_mirv = new ItemGunBase(GunFatmanFactory.getMIRVConfig()).setUnlocalizedName("gun_mirv").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_mirv"); gun_bf = new ItemGunBase(GunFatmanFactory.getBELConfig()).setUnlocalizedName("gun_bf").setCreativeTab(null).setTextureName(RefStrings.MODID + ":gun_bf"); @@ -6878,7 +6877,6 @@ public class ModItems { GameRegistry.registerItem(gun_ar15, gun_ar15.getUnlocalizedName()); GameRegistry.registerItem(gun_calamity, gun_calamity.getUnlocalizedName()); GameRegistry.registerItem(gun_lacunae, gun_lacunae.getUnlocalizedName()); - GameRegistry.registerItem(gun_folly, gun_folly.getUnlocalizedName()); GameRegistry.registerItem(gun_b92, gun_b92.getUnlocalizedName()); GameRegistry.registerItem(gun_b93, gun_b93.getUnlocalizedName()); GameRegistry.registerItem(gun_rpg, gun_rpg.getUnlocalizedName()); @@ -6972,6 +6970,7 @@ public class ModItems { GameRegistry.registerItem(gun_coilgun, gun_coilgun.getUnlocalizedName()); GameRegistry.registerItem(gun_hangman, gun_hangman.getUnlocalizedName()); GameRegistry.registerItem(gun_bolter, gun_bolter.getUnlocalizedName()); + GameRegistry.registerItem(gun_folly, gun_folly.getUnlocalizedName()); GameRegistry.registerItem(ammo_standard, ammo_standard.getUnlocalizedName()); diff --git a/src/main/java/com/hbm/items/weapon/sedna/factory/GunFactory.java b/src/main/java/com/hbm/items/weapon/sedna/factory/GunFactory.java index 7f9446a36..694aeea66 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/factory/GunFactory.java +++ b/src/main/java/com/hbm/items/weapon/sedna/factory/GunFactory.java @@ -41,7 +41,7 @@ public class GunFactory { .mag(new MagazineFullReload(0, 12).addConfigs(ammo_debug, ammo_debug_buckshot)) .offset(0.75, -0.0625, -0.3125D) .canFire(Lego.LAMBDA_STANDARD_CAN_FIRE).fire(Lego.LAMBDA_STANDARD_FIRE)) - .pp(Lego.LAMBDA_STANDARD_CLICK_PRIMARY) .pr(Lego.LAMBDA_STANDARD_RELOAD) .pt(Lego.LAMBDA_TOGGLE_AIM) + .pp(Lego.LAMBDA_STANDARD_CLICK_PRIMARY).pr(Lego.LAMBDA_STANDARD_RELOAD).pt(Lego.LAMBDA_TOGGLE_AIM) .decider(GunStateDecider.LAMBDA_STANDARD_DECIDER) .anim(Lego.LAMBDA_DEBUG_ANIMS) ).setUnlocalizedName("gun_debug"); @@ -62,6 +62,7 @@ public class GunFactory { XFactoryAccelerator.init(); XFactoryCatapult.init(); XFactory75Bolt.init(); + XFactoryFolly.init(); /// PROXY BULLSHIT /// MainRegistry.proxy.registerGunCfg(); diff --git a/src/main/java/com/hbm/items/weapon/sedna/factory/GunFactoryClient.java b/src/main/java/com/hbm/items/weapon/sedna/factory/GunFactoryClient.java index 09f753aa5..eb116b874 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/factory/GunFactoryClient.java +++ b/src/main/java/com/hbm/items/weapon/sedna/factory/GunFactoryClient.java @@ -15,6 +15,7 @@ import static com.hbm.items.weapon.sedna.factory.XFactoryAccelerator.*; import static com.hbm.items.weapon.sedna.factory.XFactoryBlackPowder.*; import static com.hbm.items.weapon.sedna.factory.XFactoryCatapult.*; import static com.hbm.items.weapon.sedna.factory.XFactoryEnergy.*; +import static com.hbm.items.weapon.sedna.factory.XFactoryFolly.*; import static com.hbm.items.weapon.sedna.factory.XFactoryRocket.*; import java.util.function.BiConsumer; @@ -71,6 +72,7 @@ public class GunFactoryClient { MinecraftForgeClient.registerItemRenderer(ModItems.gun_coilgun, new ItemRenderCoilgun()); MinecraftForgeClient.registerItemRenderer(ModItems.gun_hangman, new ItemRenderHangman()); MinecraftForgeClient.registerItemRenderer(ModItems.gun_bolter, new ItemRenderBolter()); + MinecraftForgeClient.registerItemRenderer(ModItems.gun_folly, new ItemRenderFolly()); //PROJECTILES ammo_debug.setRenderer(LegoClient.RENDER_STANDARD_BULLET); ammo_debug_buckshot.setRenderer(LegoClient.RENDER_STANDARD_BULLET); @@ -159,6 +161,8 @@ public class GunFactoryClient { setRendererBulk(LegoClient.RENDER_AP_BULLET, coil_tungsten, coil_ferrouranium); + folly_sm.setRendererBeam(LegoClient.RENDER_FOLLY); + //HUDS ((ItemGunBaseNT) ModItems.gun_debug) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO); ((ItemGunBaseNT) ModItems.gun_pepperbox) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO); @@ -196,6 +200,7 @@ public class GunFactoryClient { ((ItemGunBaseNT) ModItems.gun_coilgun) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO); ((ItemGunBaseNT) ModItems.gun_hangman) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO); ((ItemGunBaseNT) ModItems.gun_bolter) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO); + ((ItemGunBaseNT) ModItems.gun_folly) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_AMMO); ((ItemGunBaseNT) ModItems.gun_light_revolver_dani) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY_MIRROR, LegoClient.HUD_COMPONENT_AMMO_MIRROR); ((ItemGunBaseNT) ModItems.gun_light_revolver_dani) .getConfig(null, 1).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO); diff --git a/src/main/java/com/hbm/items/weapon/sedna/factory/LegoClient.java b/src/main/java/com/hbm/items/weapon/sedna/factory/LegoClient.java index 72a6e83c3..a9cb9c42f 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/factory/LegoClient.java +++ b/src/main/java/com/hbm/items/weapon/sedna/factory/LegoClient.java @@ -319,6 +319,21 @@ public class LegoClient { RenderArcFurnace.fullbright(false); }; + public static BiConsumer RENDER_FOLLY = (bullet, interp) -> { + + RenderArcFurnace.fullbright(true); + GL11.glPushMatrix(); + GL11.glRotatef(180 - bullet.rotationYaw, 0, 1F, 0); + GL11.glRotatef(-bullet.rotationPitch - 90, 1F, 0, 0); + Vec3 delta = Vec3.createVectorHelper(0, bullet.beamLength, 0); + double age = MathHelper.clamp_double(1D - ((double) bullet.ticksExisted - 2 + interp) / (double) bullet.getBulletConfig().expires, 0, 1); + GL11.glScaled((1 - age) * 25 + 2.5, 1, (1 - age) * 25 + 2.5); + int colorInner = ((int)(0x20 * age) << 16) | ((int)(0x20 * age) << 8) | (int) (0x20 * age); + BeamPronter.prontBeam(delta, EnumWaveType.RANDOM, EnumBeamType.SOLID, colorInner, colorInner, bullet.ticksExisted / 3, (int)(bullet.beamLength / 2 + 1), 0F, 8, 0.0625F); + GL11.glPopMatrix(); + RenderArcFurnace.fullbright(false); + }; + public static BiConsumer RENDER_NUKE = (bullet, interp) -> { GL11.glPushMatrix(); diff --git a/src/main/java/com/hbm/items/weapon/sedna/factory/Orchestras.java b/src/main/java/com/hbm/items/weapon/sedna/factory/Orchestras.java index e029e28b5..4f0230091 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/factory/Orchestras.java +++ b/src/main/java/com/hbm/items/weapon/sedna/factory/Orchestras.java @@ -1146,9 +1146,16 @@ public class Orchestras { } if(type == AnimType.RELOAD) { - if(timer == 5) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.magRemove", 1F, 1F); if(timer == 26) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.magInsert", 1F, 1F); } }; + + public static BiConsumer ORCHESTRA_FOLLY = (stack, ctx) -> { + EntityLivingBase entity = ctx.entity; + if(entity.worldObj.isRemote) return; + AnimType type = ItemGunBaseNT.getLastAnim(stack, ctx.configIndex); + int timer = ItemGunBaseNT.getAnimTimer(stack, ctx.configIndex); + boolean aiming = ItemGunBaseNT.getIsAiming(stack); + }; } diff --git a/src/main/java/com/hbm/items/weapon/sedna/factory/XFactoryFolly.java b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactoryFolly.java new file mode 100644 index 000000000..6c7c039fd --- /dev/null +++ b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactoryFolly.java @@ -0,0 +1,66 @@ +package com.hbm.items.weapon.sedna.factory; + +import java.util.function.BiConsumer; +import java.util.function.BiFunction; + +import com.hbm.items.ModItems; +import com.hbm.items.weapon.sedna.BulletConfig; +import com.hbm.items.weapon.sedna.Crosshair; +import com.hbm.items.weapon.sedna.GunConfig; +import com.hbm.items.weapon.sedna.ItemGunBaseNT; +import com.hbm.items.weapon.sedna.Receiver; +import com.hbm.items.weapon.sedna.ItemGunBaseNT.GunState; +import com.hbm.items.weapon.sedna.ItemGunBaseNT.LambdaContext; +import com.hbm.items.weapon.sedna.ItemGunBaseNT.WeaponQuality; +import com.hbm.items.weapon.sedna.factory.GunFactory.EnumAmmo; +import com.hbm.items.weapon.sedna.mags.MagazineSingleReload; +import com.hbm.render.anim.BusAnimation; +import com.hbm.render.anim.BusAnimationSequence; +import com.hbm.render.anim.BusAnimationKeyframe.IType; +import com.hbm.render.anim.HbmAnimations.AnimType; + +import net.minecraft.item.ItemStack; + +public class XFactoryFolly { + + public static BulletConfig folly_sm; + + public static void init() { + + folly_sm = new BulletConfig().setItem(EnumAmmo.G26_FLARE).setLife(100).setVel(2F).setGrav(0.015D).setRenderRotations(false); + + ModItems.gun_folly = new ItemGunBaseNT(WeaponQuality.A_SIDE, new GunConfig() + .dura(100).draw(40).crosshair(Crosshair.NONE) + .rec(new Receiver(0) + .dmg(15F).delay(26).dry(5).reload(160).jam(0).sound("hbm:weapon.fire.loudestNoiseOnEarth", 100.0F, 1.0F) + .mag(new MagazineSingleReload(0, 1).addConfigs(folly_sm)) + .offset(0.75, -0.0625, -0.1875D) + .setupBeamFire().recoil(Lego.LAMBDA_STANDARD_RECOIL)) + .setupStandardConfiguration().pt(LAMBDA_TOGGLE_AIM) + .anim(LAMBDA_FOLLY_ANIMS).orchestra(Orchestras.ORCHESTRA_FOLLY) + ).setUnlocalizedName("gun_folly"); + } + + public static BiConsumer LAMBDA_TOGGLE_AIM = (stack, ctx) -> { + if(ItemGunBaseNT.getState(stack, ctx.configIndex) == GunState.IDLE) { + ItemGunBaseNT.setIsAiming(stack, !ItemGunBaseNT.getIsAiming(stack)); + } + }; + + @SuppressWarnings("incomplete-switch") public static BiFunction LAMBDA_FOLLY_ANIMS = (stack, type) -> { + switch(type) { + case EQUIP: return new BusAnimation() + .addBus("EQUIP", new BusAnimationSequence().addPos(-60, 0, 0, 0).addPos(5, 0, 0, 1500, IType.SIN_DOWN).addPos(0, 0, 0, 500, IType.SIN_FULL)); + case CYCLE: return new BusAnimation() + .addBus("RECOIL", new BusAnimationSequence().addPos(0, 0, -4.5, 50).addPos(0, 0, -4.5, 500).addPos(0, 0, 0, 500, IType.SIN_UP)) + .addBus("LOAD", new BusAnimationSequence().addPos(0, 0, 0, 50).addPos(-25, 0, 0, 250, IType.SIN_DOWN).addPos(0, 0, 0, 1000, IType.SIN_FULL)); + case RELOAD: return new BusAnimation() + .addBus("LOAD", new BusAnimationSequence().addPos(60, 0, 0, 1000, IType.SIN_FULL).addPos(60, 0, 0, 6000).addPos(0, 0, 0, 1000, IType.SIN_FULL)) + .addBus("SCREW", new BusAnimationSequence().addPos(0, 0, 0, 1000).addPos(0, 0, -135, 1000, IType.SIN_FULL).addPos(0, 0, -135, 4000).addPos(0, 0, 0, 1000, IType.SIN_FULL)) + .addBus("BREECH", new BusAnimationSequence().addPos(0, 0, 0, 1000).addPos(0, 0, -0.5, 1000, IType.SIN_FULL).addPos(0, -4, -0.5, 1000, IType.SIN_FULL).addPos(0, -4, -0.5, 2000).addPos(0, 0, -0.5, 1000, IType.SIN_FULL).addPos(0, 0, 0, 1000, IType.SIN_FULL)) + .addBus("SHELL", new BusAnimationSequence().addPos(0, -4, -4.5, 0).addPos(0, -4, -4.5, 3000).addPos(0, 0, -4.5, 1000, IType.SIN_FULL).addPos(0, 0, 0, 500, IType.SIN_UP)); + } + + return null; + }; +} diff --git a/src/main/java/com/hbm/main/ClientProxy.java b/src/main/java/com/hbm/main/ClientProxy.java index bcc7f4d77..18b47cd21 100644 --- a/src/main/java/com/hbm/main/ClientProxy.java +++ b/src/main/java/com/hbm/main/ClientProxy.java @@ -574,7 +574,6 @@ public class ClientProxy extends ServerProxy { MinecraftForgeClient.registerItemRenderer(ModItems.gun_uzi_saturnite_silencer, new ItemRenderUZI()); MinecraftForgeClient.registerItemRenderer(ModItems.gun_calamity, new ItemRenderWeaponFFMG42()); MinecraftForgeClient.registerItemRenderer(ModItems.gun_lacunae, new ItemRenderOverkill()); - MinecraftForgeClient.registerItemRenderer(ModItems.gun_folly, new ItemRenderOverkill()); MinecraftForgeClient.registerItemRenderer(ModItems.gun_hk69, new ItemRenderWeaponObj()); MinecraftForgeClient.registerItemRenderer(ModItems.gun_bio_revolver, new ItemRenderBioRevolver()); MinecraftForgeClient.registerItemRenderer(ModItems.gun_deagle, new ItemRenderWeaponObj()); diff --git a/src/main/java/com/hbm/main/ResourceManager.java b/src/main/java/com/hbm/main/ResourceManager.java index 48b137806..e21358251 100644 --- a/src/main/java/com/hbm/main/ResourceManager.java +++ b/src/main/java/com/hbm/main/ResourceManager.java @@ -865,6 +865,7 @@ public class ResourceManager { public static final IModelCustom fatman = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/weapons/fatman.obj")).asVBO(); public static final IModelCustom lasrifle = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/weapons/lasrifle.obj")).asVBO(); public static final IModelCustom hangman = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/weapons/hangman.obj")).asVBO(); + public static final IModelCustom folly = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/weapons/folly.obj")).asVBO(); public static final HashMap python_anim = AnimationLoader.load(new ResourceLocation(RefStrings.MODID, "models/weapons/animations/python.json")); public static final HashMap cursed_anim = AnimationLoader.load(new ResourceLocation(RefStrings.MODID, "models/weapons/animations/cursed.json")); @@ -1003,6 +1004,7 @@ public class ResourceManager { public static final ResourceLocation fatman_mininuke_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/fatman_mininuke.png"); public static final ResourceLocation lasrifle_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/lasrifle.png"); public static final ResourceLocation hangman_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/hangman.png"); + public static final ResourceLocation folly_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/moonlight.png"); public static final ResourceLocation lance_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/lance.png"); diff --git a/src/main/java/com/hbm/render/entity/projectile/RenderBeam.java b/src/main/java/com/hbm/render/entity/projectile/RenderBeam.java index 10db6d628..b1d3bf5cc 100644 --- a/src/main/java/com/hbm/render/entity/projectile/RenderBeam.java +++ b/src/main/java/com/hbm/render/entity/projectile/RenderBeam.java @@ -20,6 +20,9 @@ public class RenderBeam extends Render { GL11.glPushMatrix(); GL11.glTranslatef((float) x, (float) y, (float) z); + boolean fog = GL11.glIsEnabled(GL11.GL_FOG); + GL11.glDisable(GL11.GL_FOG); + if(bullet.config.renderRotations) { GL11.glRotatef(bullet.prevRotationYaw + (bullet.rotationYaw - bullet.prevRotationYaw) * interp - 90.0F, 0.0F, 1.0F, 0.0F); GL11.glRotatef(bullet.prevRotationPitch + (bullet.rotationPitch - bullet.prevRotationPitch) * interp + 180, 0.0F, 0.0F, 1.0F); @@ -29,6 +32,8 @@ public class RenderBeam extends Render { bullet.config.rendererBeam.accept(bullet, interp); } + if(fog) GL11.glDisable(GL11.GL_FOG); + GL11.glPopMatrix(); } diff --git a/src/main/java/com/hbm/render/item/weapon/ItemRenderOverkill.java b/src/main/java/com/hbm/render/item/weapon/ItemRenderOverkill.java index bccd1c411..b2e9e2d6e 100644 --- a/src/main/java/com/hbm/render/item/weapon/ItemRenderOverkill.java +++ b/src/main/java/com/hbm/render/item/weapon/ItemRenderOverkill.java @@ -3,12 +3,10 @@ package com.hbm.render.item.weapon; import org.lwjgl.opengl.GL11; import com.hbm.items.ModItems; -import com.hbm.items.weapon.GunFolly; import com.hbm.items.weapon.ItemGunBase; import com.hbm.lib.RefStrings; import com.hbm.render.model.ModelDefabricator; import com.hbm.render.model.ModelEuthanasia; -import com.hbm.render.model.ModelFolly; import com.hbm.render.model.ModelHP; import com.hbm.render.model.ModelJack; import com.hbm.render.model.ModelLacunae; @@ -29,7 +27,6 @@ public class ItemRenderOverkill implements IItemRenderer { protected ModelEuthanasia euthanasia; protected ModelDefabricator defab; protected ModelLacunae lacunae; - protected ModelFolly folly; public ItemRenderOverkill() { powerJack = new ModelJack(); @@ -38,7 +35,6 @@ public class ItemRenderOverkill implements IItemRenderer { euthanasia = new ModelEuthanasia(); defab = new ModelDefabricator(); lacunae = new ModelLacunae(); - folly = new ModelFolly(); } @Override @@ -91,8 +87,6 @@ public class ItemRenderOverkill implements IItemRenderer { Minecraft.getMinecraft().renderEngine.bindTexture(new ResourceLocation(RefStrings.MODID +":textures/models/ModelPipRed.png")); if(item.getItem() == ModItems.gun_lacunae) Minecraft.getMinecraft().renderEngine.bindTexture(new ResourceLocation(RefStrings.MODID +":textures/models/ModelLacunaeReal.png")); - if(item.getItem() == ModItems.gun_folly) - Minecraft.getMinecraft().renderEngine.bindTexture(new ResourceLocation(RefStrings.MODID +":textures/models/ModelFolly.png")); GL11.glRotatef(-135.0F, 0.0F, 0.0F, 1.0F); GL11.glTranslatef(-0.5F, 0.0F, -0.2F); @@ -122,12 +116,6 @@ public class ItemRenderOverkill implements IItemRenderer { GL11.glTranslatef(0.5F, 0.3F, -0.2F); } - if(item.getItem() == ModItems.gun_folly) { - GL11.glRotatef(-20.0F, 0.0F, 0.0F, 1.0F); - GL11.glRotatef(5.0F, 0.0F, 1.0F, 0.0F); - GL11.glTranslatef(-0.2F, 0.0F, -0.2F); - } - if(item.getItem() == ModItems.gun_jack) powerJack.render((Entity)data[1], 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F); if(item.getItem() == ModItems.gun_spark) @@ -142,12 +130,6 @@ public class ItemRenderOverkill implements IItemRenderer { if(item.getItem() == ModItems.gun_lacunae) lacunae.render((Entity)data[1], 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F, ItemGunBase.readNBT(item, "rot")); - if(item.getItem() == ModItems.gun_folly) { - int state = GunFolly.getState(item); - int time = GunFolly.getTimer(item); - folly.render((Entity)data[1], 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F, state, time); - } - GL11.glPopMatrix(); break; case EQUIPPED: @@ -175,8 +157,6 @@ public class ItemRenderOverkill implements IItemRenderer { Minecraft.getMinecraft().renderEngine.bindTexture(new ResourceLocation(RefStrings.MODID +":textures/models/ModelPipRed.png")); if(item.getItem() == ModItems.gun_lacunae) Minecraft.getMinecraft().renderEngine.bindTexture(new ResourceLocation(RefStrings.MODID +":textures/models/ModelLacunaeReal.png")); - if(item.getItem() == ModItems.gun_folly) - Minecraft.getMinecraft().renderEngine.bindTexture(new ResourceLocation(RefStrings.MODID +":textures/models/ModelFolly.png")); GL11.glRotatef(-200.0F, 0.0F, 0.0F, 1.0F); GL11.glRotatef(75.0F, 0.0F, 1.0F, 0.0F); @@ -208,9 +188,6 @@ public class ItemRenderOverkill implements IItemRenderer { GL11.glRotatef(185, 0, 1, 0); GL11.glTranslatef(0.5F, 0.6F, 0.2F); } - if(item.getItem() == ModItems.gun_folly) { - GL11.glTranslatef(0.6F, 0.0F, 0.0F); - } if(item.getItem() == ModItems.gun_jack) powerJack.render((Entity)data[1], 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F); @@ -226,11 +203,6 @@ public class ItemRenderOverkill implements IItemRenderer { if(item.getItem() == ModItems.gun_lacunae) lacunae.render((Entity)data[1], 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F, f); - if(item.getItem() == ModItems.gun_folly) { - int state = GunFolly.getState(item); - int time = GunFolly.getTimer(item); - folly.render((Entity)data[1], 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F, state, time); - } GL11.glPopMatrix(); break; case ENTITY: @@ -258,8 +230,6 @@ public class ItemRenderOverkill implements IItemRenderer { Minecraft.getMinecraft().renderEngine.bindTexture(new ResourceLocation(RefStrings.MODID +":textures/models/ModelPipRed.png")); if(item.getItem() == ModItems.gun_lacunae) Minecraft.getMinecraft().renderEngine.bindTexture(new ResourceLocation(RefStrings.MODID +":textures/models/ModelLacunaeReal.png")); - if(item.getItem() == ModItems.gun_folly) - Minecraft.getMinecraft().renderEngine.bindTexture(new ResourceLocation(RefStrings.MODID +":textures/models/ModelFolly.png")); GL11.glRotatef(180.0F, 1.0F, 0.0F, 0.0F); @@ -293,11 +263,6 @@ public class ItemRenderOverkill implements IItemRenderer { if(item.getItem() == ModItems.gun_lacunae) lacunae.render((Entity)data[1], 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F, f); - if(item.getItem() == ModItems.gun_folly) { - int state = GunFolly.getState(item); - int time = GunFolly.getTimer(item); - folly.render((Entity)data[1], 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F, state, time); - } GL11.glPopMatrix(); break; default: break; diff --git a/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderFolly.java b/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderFolly.java new file mode 100644 index 000000000..282dcbb8f --- /dev/null +++ b/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderFolly.java @@ -0,0 +1,237 @@ +package com.hbm.render.item.weapon.sedna; + +import java.awt.Color; +import java.util.ArrayList; +import java.util.List; + +import org.lwjgl.opengl.GL11; + +import com.hbm.items.weapon.sedna.ItemGunBaseNT; +import com.hbm.items.weapon.sedna.mags.IMagazine; +import com.hbm.main.MainRegistry; +import com.hbm.main.ResourceManager; +import com.hbm.render.anim.HbmAnimations; + +import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.FontRenderer; +import net.minecraft.client.renderer.OpenGlHelper; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; +import net.minecraft.util.EnumChatFormatting; +import net.minecraft.util.MathHelper; + +public class ItemRenderFolly extends ItemRenderWeaponBase { + + public static long timeAiming; + public static boolean jingle = false; + public static boolean wasAiming = false; + + @Override + protected float getTurnMagnitude(ItemStack stack) { return ItemGunBaseNT.getIsAiming(stack) ? 2F : 2.5F; } + + @Override + public float getViewFOV(ItemStack stack, float fov) { + float aimingProgress = ItemGunBaseNT.prevAimingProgress + (ItemGunBaseNT.aimingProgress - ItemGunBaseNT.prevAimingProgress) * interp; + return fov * (1 - aimingProgress * 0.33F); + } + + @Override + public void setupFirstPerson(ItemStack stack) { + GL11.glTranslated(0, 0, 0.875); + + float offset = 0.8F; + float aim = 0.75F; + standardAimingTransform(stack, + -2.5F * offset, -1.5F * offset, 2.75F * offset, + -2 * aim, -1 * aim, 2.25F * offset); + } + + @Override + public void renderFirstPerson(ItemStack stack) { + + ItemGunBaseNT gun = (ItemGunBaseNT) stack.getItem(); + EntityPlayer player = Minecraft.getMinecraft().thePlayer; + Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.folly_tex); + double scale = 0.75D; + GL11.glScaled(scale, scale, scale); + + double[] equip = HbmAnimations.getRelevantTransformation("EQUIP"); + double[] recoil = HbmAnimations.getRelevantTransformation("RECOIL"); + double[] load = HbmAnimations.getRelevantTransformation("LOAD"); + double[] shell = HbmAnimations.getRelevantTransformation("SHELL"); + double[] screw = HbmAnimations.getRelevantTransformation("SCREW"); + double[] breech = HbmAnimations.getRelevantTransformation("BREECH"); + + GL11.glTranslated(0, 1, -4); + GL11.glRotated(-equip[0], 1, 0, 0); + GL11.glTranslated(0, -1, 4); + + GL11.glTranslated(0, -2, -2); + GL11.glRotated(load[0], 1, 0, 0); + GL11.glTranslated(0, 2, 2); + + GL11.glShadeModel(GL11.GL_SMOOTH); + + ResourceManager.folly.renderPart("Cannon"); + + GL11.glPushMatrix(); + GL11.glTranslated(recoil[0], recoil[1], recoil[2]); + ResourceManager.folly.renderPart("Barrel"); + GL11.glPopMatrix(); + + GL11.glPushMatrix(); + GL11.glTranslated(shell[0], shell[1], shell[2]); + ResourceManager.folly.renderPart("Shell"); + GL11.glPopMatrix(); + + GL11.glPushMatrix(); + GL11.glTranslated(breech[0], breech[1], breech[2]); + ResourceManager.folly.renderPart("Breech"); + GL11.glTranslated(0, 1, 0); + GL11.glRotated(screw[2], 0, 0, 1); + GL11.glTranslated(0, -1, 0); + ResourceManager.folly.renderPart("Cog"); + GL11.glPopMatrix(); + + + boolean isAiming = gun.prevAimingProgress >= 1F && gun.aimingProgress >= 1F; + if(isAiming & !wasAiming) timeAiming = System.currentTimeMillis(); + + if(isAiming) { + + String splash = getBootSplash(); + + if(!jingle && !splash.isEmpty()) { + MainRegistry.proxy.playSoundClient(player.posX, player.posY, player.posZ, "hbm:weapon.fire.vstar", 0.5F, 1F); + jingle = true; + } + + GL11.glPushMatrix(); + GL11.glPushAttrib(GL11.GL_LIGHTING_BIT); + GL11.glDisable(GL11.GL_LIGHTING); + GL11.glDisable(GL11.GL_CULL_FACE); + OpenGlHelper.glBlendFunc(770, 771, 1, 0); + OpenGlHelper.setLightmapTextureCoords(OpenGlHelper.lightmapTexUnit, 240F, 240F); + FontRenderer font = Minecraft.getMinecraft().fontRenderer; + float variance = 0.85F + player.getRNG().nextFloat() * 0.15F; + + if(System.currentTimeMillis() - timeAiming > 5000 && load[0] == 0) { + IMagazine mag = gun.getConfig(stack, 0).getReceivers(stack)[0].getMagazine(stack); + String msg = mag.getAmount(stack, player.inventory) > 0 ? "+" : "No ammo"; + GL11.glPushMatrix(); + float crosshairSize = 0.01F; + GL11.glTranslatef((font.getStringWidth(msg) / 2) * crosshairSize + 2, 1F + font.FONT_HEIGHT * crosshairSize / 2F, -2.75F); + GL11.glScalef(crosshairSize, -crosshairSize, crosshairSize); + GL11.glRotated(180D, 0, 1, 0); + GL11.glNormal3f(0.0F, 0.0F, -1.0F * crosshairSize); + font.drawString(msg, 0, 0, new Color(variance, variance * 0.5F, 0F).getRGB()); + GL11.glPopMatrix(); + } + + GL11.glPushMatrix(); + float splashSize = 0.02F; + GL11.glTranslatef((font.getStringWidth(splash) / 2) * splashSize + 2, 1F + font.FONT_HEIGHT * splashSize / 2F, -2.75F); + GL11.glScalef(splashSize, -splashSize, splashSize); + GL11.glRotated(180D, 0, 1, 0); + GL11.glNormal3f(0.0F, 0.0F, -1.0F * splashSize); + font.drawString(splash, 0, 0, new Color(variance, variance * 0.5F, 0F).getRGB()); + GL11.glPopMatrix(); + + List tty = getTTY(); + if(!tty.isEmpty()) { + GL11.glPushMatrix(); + float fontSize = 0.005F; + GL11.glTranslatef(2.5F, 1.375F, -2.75F); + GL11.glScalef(fontSize, -fontSize, fontSize); + GL11.glRotated(180D, 0, 1, 0); + GL11.glNormal3f(0.0F, 0.0F, -1.0F * fontSize); + for(String line : tty) { + font.drawString(line, 0, 0, new Color(variance, variance * 0.5F, 0F).getRGB()); + GL11.glTranslated(0, (font.FONT_HEIGHT + 2), 0); + } + GL11.glPopMatrix(); + } + + GL11.glColor3f(1F, 1F, 1F); + + GL11.glEnable(GL11.GL_LIGHTING); + GL11.glEnable(GL11.GL_CULL_FACE); + GL11.glPopAttrib(); + GL11.glPopMatrix(); + + int brightness = player.worldObj.getLightBrightnessForSkyBlocks(MathHelper.floor_double(player.posX), MathHelper.floor_double(player.posY), MathHelper.floor_double(player.posZ), 0); + int j = brightness % 65536; + int k = brightness / 65536; + OpenGlHelper.setLightmapTextureCoords(OpenGlHelper.lightmapTexUnit, (float) j / 1.0F, (float) k / 1.0F); + } else { + jingle = false; + } + + wasAiming = isAiming; + + GL11.glShadeModel(GL11.GL_FLAT); + } + + @Override + public void setupThirdPerson(ItemStack stack) { + super.setupThirdPerson(stack); + double scale = 3D; + GL11.glScaled(scale, scale, scale); + GL11.glTranslated(-0.25, 0.5, 3); + + } + + @Override + public void setupInv(ItemStack stack) { + super.setupInv(stack); + double scale = 1.25D; + GL11.glScaled(scale, scale, scale); + GL11.glRotated(25, 1, 0, 0); + GL11.glRotated(45, 0, 1, 0); + GL11.glTranslated(0, -0.5, 0); + } + + @Override + public void renderOther(ItemStack stack, ItemRenderType type) { + GL11.glEnable(GL11.GL_LIGHTING); + + GL11.glShadeModel(GL11.GL_SMOOTH); + Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.folly_tex); + ResourceManager.folly.renderAll(); + GL11.glShadeModel(GL11.GL_FLAT); + } + + public static String getBootSplash() { + long now = System.currentTimeMillis(); + if(timeAiming + 5000 < now) return ""; + if(timeAiming + 3000 > now) return ""; + int splashIndex = (int)((now - timeAiming - 3000) * 35 / 2000) - 10; + //use the StringBuilder this, can't eat the drywall that, this used to be a free country + char[] letters = "VStarOS".toCharArray(); + String splash = ""; + for(int i = 0; i < letters.length; i++) { + if(i < splashIndex - 1) splash += EnumChatFormatting.LIGHT_PURPLE; + if(i == splashIndex - 1) splash += EnumChatFormatting.AQUA; + if(i == splashIndex) splash += EnumChatFormatting.WHITE; + if(i == splashIndex + 1) splash += EnumChatFormatting.AQUA; + if(i == splashIndex + 2) splash += EnumChatFormatting.LIGHT_PURPLE; + if(i > splashIndex + 2) splash += EnumChatFormatting.BLACK; + splash += letters[i]; + } + return splash; + } + + public static List getTTY() { + List tty = new ArrayList(); + long now = System.currentTimeMillis(); + int time = (int)((now - timeAiming)); + if(time > 3000) return tty; + if(time > 250) tty.add(EnumChatFormatting.GREEN + "POST successful - Code 0"); + if(time > 500) tty.add(EnumChatFormatting.GREEN + "8,388,608 bytes of RAM installed"); + if(time > 500) tty.add(EnumChatFormatting.GREEN + "5,187,427 bytes available"); + if(time > 750) tty.add(EnumChatFormatting.GREEN + "Reticulating splines..."); + if(time > 1500) tty.add(EnumChatFormatting.GREEN + "No keyboard found!"); + if(time > 2000) tty.add(EnumChatFormatting.GREEN + "Booting from /dev/sda1..."); + return tty; + } +} diff --git a/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderSTG77.java b/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderSTG77.java index b2d674e0c..a7f3bf9cd 100644 --- a/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderSTG77.java +++ b/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderSTG77.java @@ -12,7 +12,7 @@ import net.minecraft.item.ItemStack; public class ItemRenderSTG77 extends ItemRenderWeaponBase { @Override - protected float getTurnMagnitude(ItemStack stack) { return ItemGunBaseNT.getIsAiming(stack) ? 2.5F : -0.25F; } + protected float getTurnMagnitude(ItemStack stack) { return ItemGunBaseNT.getIsAiming(stack) ? 0.5F : -0.25F; } @Override public void setupFirstPerson(ItemStack stack) { @@ -21,7 +21,7 @@ public class ItemRenderSTG77 extends ItemRenderWeaponBase { float offset = 0.8F; standardAimingTransform(stack, -1.5F * offset, -1F * offset, 2.5F * offset, - 0, -5.75 / 8D, 1); + 0, -5.75 / 8D, 2); } @Override @@ -33,7 +33,7 @@ public class ItemRenderSTG77 extends ItemRenderWeaponBase { @Override protected float getBaseFOV(ItemStack stack) { float aimingProgress = ItemGunBaseNT.prevAimingProgress + (ItemGunBaseNT.aimingProgress - ItemGunBaseNT.prevAimingProgress) * interp; - return 70F - aimingProgress * 55; + return 70F - aimingProgress * 65; } @Override diff --git a/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderWeaponBase.java b/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderWeaponBase.java index a97f4425c..bd4f3d2c1 100644 --- a/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderWeaponBase.java +++ b/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderWeaponBase.java @@ -48,6 +48,7 @@ public abstract class ItemRenderWeaponBase implements IItemRenderer { @Override public void renderItem(ItemRenderType type, ItemStack item, Object... data) { GL11.glPushMatrix(); + GL11.glEnable(GL11.GL_CULL_FACE); switch(type) { case EQUIPPED_FIRST_PERSON: setupFirstPerson(item); renderFirstPerson(item); break; case EQUIPPED: setupThirdPerson(item); renderEquipped(item); break; diff --git a/src/main/java/com/hbm/render/model/ModelFolly.java b/src/main/java/com/hbm/render/model/ModelFolly.java deleted file mode 100644 index cdf189d7d..000000000 --- a/src/main/java/com/hbm/render/model/ModelFolly.java +++ /dev/null @@ -1,322 +0,0 @@ -// Date: 13.01.2019 13:32:43 -// Template version 1.1 -// Java generated by Techne -// Keep in mind that you still need to fill in some blanks -// - ZeuX - -package com.hbm.render.model; - -import org.lwjgl.opengl.GL11; - -import net.minecraft.client.model.ModelBase; -import net.minecraft.client.model.ModelRenderer; -import net.minecraft.client.renderer.Tessellator; -import net.minecraft.entity.Entity; - -public class ModelFolly extends ModelBase { - // fields - ModelRenderer SB1; - ModelRenderer SB2; - ModelRenderer SB3; - ModelRenderer SB4; - ModelRenderer SB5; - ModelRenderer SB6; - ModelRenderer SB7; - ModelRenderer SB8; - ModelRenderer SP; - ModelRenderer B1; - ModelRenderer B2; - ModelRenderer B3; - ModelRenderer SF1; - ModelRenderer SF2; - ModelRenderer SF3; - ModelRenderer SF4; - ModelRenderer P1; - ModelRenderer P2; - ModelRenderer P3; - ModelRenderer P4; - ModelRenderer Grip; - ModelRenderer SPointer; - - public ModelFolly() { - textureWidth = 64; - textureHeight = 64; - - SB1 = new ModelRenderer(this, 0, 0); - SB1.addBox(-16F, -1F, 0F, 16, 1, 3); - SB1.setRotationPoint(0F, 4F, -1.5F); - SB1.setTextureSize(64, 32); - SB1.mirror = true; - setRotation(SB1, 0F, 0F, 0F); - SB2 = new ModelRenderer(this, 0, 16); - SB2.addBox(-16F, -1.5F, 0F, 16, 1, 1); - SB2.setRotationPoint(0F, 4F, 1F); - SB2.setTextureSize(64, 32); - SB2.mirror = true; - setRotation(SB2, 0F, 0F, 0F); - SB3 = new ModelRenderer(this, 0, 18); - SB3.addBox(-16F, -1.5F, 0F, 16, 1, 1); - SB3.setRotationPoint(0F, 4F, -2F); - SB3.setTextureSize(64, 32); - SB3.mirror = true; - setRotation(SB3, 0F, 0F, 0F); - SB4 = new ModelRenderer(this, 0, 8); - SB4.addBox(-16F, -4F, 0F, 16, 3, 1); - SB4.setRotationPoint(0F, 4F, -2.5F); - SB4.setTextureSize(64, 32); - SB4.mirror = true; - setRotation(SB4, 0F, 0F, 0F); - SB5 = new ModelRenderer(this, 0, 12); - SB5.addBox(-16F, -4F, 0F, 16, 3, 1); - SB5.setRotationPoint(0F, 4F, 1.5F); - SB5.setTextureSize(64, 32); - SB5.mirror = true; - setRotation(SB5, 0F, 0F, 0F); - SB6 = new ModelRenderer(this, 0, 20); - SB6.addBox(-16F, -4.5F, 0F, 16, 1, 1); - SB6.setRotationPoint(0F, 4F, 1F); - SB6.setTextureSize(64, 32); - SB6.mirror = true; - setRotation(SB6, 0F, 0F, 0F); - SB7 = new ModelRenderer(this, 0, 22); - SB7.addBox(-16F, -4.5F, 0F, 16, 1, 1); - SB7.setRotationPoint(0F, 4F, -2F); - SB7.setTextureSize(64, 32); - SB7.mirror = true; - setRotation(SB7, 0F, 0F, 0F); - SB8 = new ModelRenderer(this, 0, 4); - SB8.addBox(-16F, -5F, 0F, 16, 1, 3); - SB8.setRotationPoint(0F, 4F, -1.5F); - SB8.setTextureSize(64, 32); - SB8.mirror = true; - setRotation(SB8, 0F, 0F, 0F); - SP = new ModelRenderer(this, 58, 0); - SP.addBox(0F, -4F, 0F, 0, 3, 3); - SP.setRotationPoint(-0.5F, 4F, -1.5F); - SP.setTextureSize(64, 32); - SP.mirror = true; - setRotation(SP, 0F, 0F, 0F); - B1 = new ModelRenderer(this, 0, 40); - B1.addBox(0F, 0F, 0F, 5, 5, 3); - B1.setRotationPoint(0F, -1F, -1.5F); - B1.setTextureSize(64, 32); - B1.mirror = true; - setRotation(B1, 0F, 0F, 0F); - B2 = new ModelRenderer(this, 0, 48); - B2.addBox(0F, 0F, 0F, 5, 3, 5); - B2.setRotationPoint(0F, 0F, -2.5F); - B2.setTextureSize(64, 32); - B2.mirror = true; - setRotation(B2, 0F, 0F, 0F); - B3 = new ModelRenderer(this, 0, 56); - B3.addBox(0F, 0F, 0F, 5, 4, 4); - B3.setRotationPoint(0F, -0.5F, -2F); - B3.setTextureSize(64, 32); - B3.mirror = true; - setRotation(B3, 0F, 0F, 0F); - SF1 = new ModelRenderer(this, 0, 24); - SF1.addBox(-32F, -1.5F, 0F, 16, 1, 3); - SF1.setRotationPoint(0F, 4F, -1.5F); - SF1.setTextureSize(64, 32); - SF1.mirror = true; - setRotation(SF1, 0F, 0F, 0F); - SF2 = new ModelRenderer(this, 0, 28); - SF2.addBox(-32F, -4.5F, 0F, 16, 1, 3); - SF2.setRotationPoint(0F, 4F, -1.5F); - SF2.setTextureSize(64, 32); - SF2.mirror = true; - setRotation(SF2, 0F, 0F, 0F); - SF3 = new ModelRenderer(this, 0, 32); - SF3.addBox(-32F, -4F, 0F, 16, 3, 1); - SF3.setRotationPoint(0F, 4F, -2F); - SF3.setTextureSize(64, 32); - SF3.mirror = true; - setRotation(SF3, 0F, 0F, 0F); - SF4 = new ModelRenderer(this, 0, 36); - SF4.addBox(-32F, -4F, 0F, 16, 3, 1); - SF4.setRotationPoint(0F, 4F, 1F); - SF4.setTextureSize(64, 32); - SF4.mirror = true; - setRotation(SF4, 0F, 0F, 0F); - P1 = new ModelRenderer(this, 58, 6); - P1.addBox(0F, 0F, 0F, 1, 4, 2); - P1.setRotationPoint(5F, 1F, -1F); - P1.setTextureSize(64, 32); - P1.mirror = true; - setRotation(P1, 0F, 0F, 0F); - P2 = new ModelRenderer(this, 52, 0); - P2.addBox(-1F, -2F, 0F, 1, 2, 2); - P2.setRotationPoint(6F, 1F, -1F); - P2.setTextureSize(64, 32); - P2.mirror = true; - setRotation(P2, 0F, 0F, -0.5235988F); - P3 = new ModelRenderer(this, 42, 0); - P3.addBox(0F, 0F, 0F, 1, 1, 4); - P3.setRotationPoint(4.5F, 1F, -2F); - P3.setTextureSize(64, 32); - P3.mirror = true; - setRotation(P3, 0F, 0F, 0F); - P4 = new ModelRenderer(this, 44, 5); - P4.addBox(0F, 0F, 0F, 5, 1, 2); - P4.setRotationPoint(0F, 4F, -1F); - P4.setTextureSize(64, 32); - P4.mirror = true; - setRotation(P4, 0F, 0F, 0F); - Grip = new ModelRenderer(this, 52, 8); - Grip.addBox(0F, 0F, 0F, 2, 4, 1); - Grip.setRotationPoint(2F, 5F, -0.5F); - Grip.setTextureSize(64, 32); - Grip.mirror = true; - setRotation(Grip, 0F, 0F, -0.2617994F); - SPointer = new ModelRenderer(this, 56, 13); - SPointer.addBox(-32F, -0.5F, 0F, 3, 1, 1); - SPointer.setRotationPoint(0F, 4F, -0.5F); - SPointer.setTextureSize(64, 32); - SPointer.mirror = true; - setRotation(SPointer, 0F, 0F, 0F); - } - - public void render(Entity entity, float f, float f1, float f2, float f3, float f4, float f5) { - super.render(entity, f, f1, f2, f3, f4, f5); - setRotationAngles(f, f1, f2, f3, f4, f5, entity); - SB1.render(f5); - SB2.render(f5); - SB3.render(f5); - SB4.render(f5); - SB5.render(f5); - SB6.render(f5); - SB7.render(f5); - SB8.render(f5); - SP.render(f5); - B1.render(f5); - B2.render(f5); - B3.render(f5); - SF1.render(f5); - SF2.render(f5); - SF3.render(f5); - SF4.render(f5); - P1.render(f5); - P2.render(f5); - P3.render(f5); - P4.render(f5); - Grip.render(f5); - SPointer.render(f5); - } - - public void render(Entity entity, float f, float f1, float f2, float f3, float f4, float f5, int state, int timer) { - super.render(entity, f, f1, f2, f3, f4, f5); - setRotationAngles(f, f1, f2, f3, f4, f5, entity); - - float rotate = (float) (Math.PI * -70D / 180D); - - if(state == 1 || state == 2) { - SB1.rotateAngleZ = rotate; - SB2.rotateAngleZ = rotate; - SB3.rotateAngleZ = rotate; - SB4.rotateAngleZ = rotate; - SB5.rotateAngleZ = rotate; - SB6.rotateAngleZ = rotate; - SB7.rotateAngleZ = rotate; - SB8.rotateAngleZ = rotate; - SP.rotateAngleZ = rotate; - SPointer.rotateAngleZ = rotate; - SF1.rotateAngleZ = rotate; - SF2.rotateAngleZ = rotate; - SF3.rotateAngleZ = rotate; - SF4.rotateAngleZ = rotate; - } else { - SB1.rotateAngleZ = 0; - SB2.rotateAngleZ = 0; - SB3.rotateAngleZ = 0; - SB4.rotateAngleZ = 0; - SB5.rotateAngleZ = 0; - SB6.rotateAngleZ = 0; - SB7.rotateAngleZ = 0; - SB8.rotateAngleZ = 0; - SP.rotateAngleZ = 0; - SPointer.rotateAngleZ = 0; - SF1.rotateAngleZ = 0; - SF2.rotateAngleZ = 0; - SF3.rotateAngleZ = 0; - SF4.rotateAngleZ = 0; - } - - SB1.render(f5); - SB2.render(f5); - SB3.render(f5); - SB4.render(f5); - SB5.render(f5); - SB6.render(f5); - SB7.render(f5); - SB8.render(f5); - - if(state == 2 || state == 3) { - SP.render(f5); - } - - B1.render(f5); - B2.render(f5); - B3.render(f5); - SF1.render(f5); - SF2.render(f5); - SF3.render(f5); - SF4.render(f5); - P1.render(f5); - P2.render(f5); - P3.render(f5); - P4.render(f5); - Grip.render(f5); - SPointer.render(f5); - - if(state == 3 && timer > -1) { - GL11.glPushMatrix(); - GL11.glDisable(GL11.GL_TEXTURE_2D); - GL11.glDisable(GL11.GL_LIGHTING); - - Tessellator tessellator = Tessellator.instance; - int color = 0x00FF00; - - if(timer == 0) - color = 0xFF0000; - - tessellator.startDrawing(3); - tessellator.setColorOpaque_I(color); - tessellator.addVertex(-32F / 16F, 0 + 4F / 16F, 0); - tessellator.addVertex(-150, timer, 0); - tessellator.draw(); - - tessellator.startDrawing(3); - tessellator.setColorOpaque_I(color); - tessellator.addVertex(-32F / 16F, 0 + 4F / 16F, 0); - tessellator.addVertex(-150, -timer, 0); - tessellator.draw(); - - tessellator.startDrawing(3); - tessellator.setColorOpaque_I(color); - tessellator.addVertex(-32F / 16F, 0 + 4F / 16F, 0); - tessellator.addVertex(-150, 0, timer); - tessellator.draw(); - - tessellator.startDrawing(3); - tessellator.setColorOpaque_I(color); - tessellator.addVertex(-32F / 16F, 0 + 4F / 16F, 0); - tessellator.addVertex(-150, 0, -timer); - tessellator.draw(); - - GL11.glEnable(GL11.GL_LIGHTING); - GL11.glEnable(GL11.GL_TEXTURE_2D); - GL11.glPopMatrix(); - } - } - - private void setRotation(ModelRenderer model, float x, float y, float z) { - model.rotateAngleX = x; - model.rotateAngleY = y; - model.rotateAngleZ = z; - } - - public void setRotationAngles(float f, float f1, float f2, float f3, float f4, float f5, Entity entity) { - super.setRotationAngles(f, f1, f2, f3, f4, f5, entity); - } - -} diff --git a/src/main/resources/assets/hbm/models/weapons/moonlight.obj b/src/main/resources/assets/hbm/models/weapons/folly.obj similarity index 54% rename from src/main/resources/assets/hbm/models/weapons/moonlight.obj rename to src/main/resources/assets/hbm/models/weapons/folly.obj index aa4bfc765..814647aec 100644 --- a/src/main/resources/assets/hbm/models/weapons/moonlight.obj +++ b/src/main/resources/assets/hbm/models/weapons/folly.obj @@ -1,6 +1,1449 @@ -# Blender v2.79 (sub 0) OBJ File: 'nice_try_shitass' +# Blender v2.79 (sub 0) OBJ File: 'folly.blend' # www.blender.org -o Circle +o Cog +v 0.382683 1.923880 -4.500000 +v 0.707107 1.707107 -4.500000 +v 0.923880 1.382684 -4.500000 +v 1.000000 1.000000 -4.500000 +v 0.923880 0.617316 -4.500000 +v 0.707107 0.292893 -4.500000 +v 0.382683 0.076120 -4.500000 +v 0.000000 0.000000 -4.500000 +v -0.382683 0.076120 -4.500000 +v -0.707107 0.292893 -4.500000 +v -0.923880 0.617316 -4.500000 +v -1.000000 1.000000 -4.500000 +v -0.923880 1.382683 -4.500000 +v -0.707107 1.707107 -4.500000 +v -0.382683 1.923880 -4.500000 +v 0.000000 2.000000 -4.500000 +v 0.000000 2.000000 -3.500000 +v -0.382683 1.923880 -3.500000 +v -0.707107 1.707107 -3.500000 +v -0.923880 1.382683 -3.500000 +v -1.000000 1.000000 -3.500000 +v -0.923880 0.617316 -3.500000 +v -0.707107 0.292893 -3.500000 +v -0.382683 0.076120 -3.500000 +v 0.000000 0.000000 -3.500000 +v 0.382683 0.076120 -3.500000 +v 0.707107 0.292893 -3.500000 +v 0.923880 0.617316 -3.500000 +v 1.000000 1.000000 -3.500000 +v 0.923880 1.382684 -3.500000 +v 0.707107 1.707107 -3.500000 +v 0.382683 1.923880 -3.500000 +v 1.250000 0.750000 -4.375000 +v -1.250000 0.750000 -4.375000 +v 1.250000 1.250000 -4.375000 +v -1.250000 1.250000 -4.375000 +v -1.250000 1.250000 -4.125000 +v 1.250000 1.250000 -4.125000 +v -1.250000 0.750000 -4.125000 +v 1.250000 0.750000 -4.125000 +v 0.250000 2.250000 -4.125000 +v 0.250000 -0.250000 -4.125000 +v -0.250000 2.250000 -4.125000 +v -0.250000 -0.250000 -4.125000 +v -0.250000 -0.250000 -4.375000 +v -0.250000 2.250000 -4.375000 +v 0.250000 -0.250000 -4.375000 +v 0.250000 2.250000 -4.375000 +v -0.707107 2.060660 -4.125000 +v 1.060660 0.292893 -4.125000 +v -1.060660 1.707107 -4.125000 +v 0.707107 -0.060660 -4.125000 +v 0.707107 -0.060660 -4.375000 +v -1.060660 1.707107 -4.375000 +v 1.060660 0.292893 -4.375000 +v -0.707107 2.060660 -4.375000 +v 1.060660 1.707107 -4.375000 +v -0.707107 -0.060660 -4.375000 +v 0.707107 2.060660 -4.375000 +v -1.060660 0.292893 -4.375000 +v -1.060660 0.292893 -4.125000 +v 0.707107 2.060660 -4.125000 +v -0.707107 -0.060660 -4.125000 +v 1.060660 1.707107 -4.125000 +vt 0.668136 0.865446 +vt 0.629147 0.797819 +vt 0.645297 0.634554 +vt 0.705005 0.634623 +vt 0.743971 0.702209 +vt 0.727831 0.865378 +vt 0.126866 0.765625 +vt 0.134328 0.828125 +vt 0.126866 0.828125 +vt 0.216418 0.828125 +vt 0.208955 0.765625 +vt 0.216418 0.765625 +vt 0.134328 0.671875 +vt 0.208955 0.734375 +vt 0.134328 0.734375 +vt 0.208955 0.765625 +vt 0.134328 0.828125 +vt 0.134328 0.765625 +vt 0.134328 0.859375 +vt 0.208955 0.828125 +vt 0.208955 0.859375 +vt 0.216418 0.828125 +vt 0.216418 0.765625 +vt 0.126866 0.765625 +vt 0.126866 0.828125 +vt 0.134328 0.859375 +vt 0.208955 0.828125 +vt 0.208955 0.859375 +vt 0.208955 0.734375 +vt 0.134328 0.765625 +vt 0.134328 0.734375 +vt 0.134328 0.671875 +vt 0.126866 0.765625 +vt 0.134328 0.828125 +vt 0.126866 0.828125 +vt 0.216418 0.828125 +vt 0.208955 0.765625 +vt 0.216418 0.765625 +vt 0.134328 0.859375 +vt 0.208955 0.828125 +vt 0.208955 0.859375 +vt 0.208955 0.734375 +vt 0.134328 0.765625 +vt 0.134328 0.734375 +vt 0.134328 0.671875 +vt 0.134328 0.671875 +vt 0.208955 0.734375 +vt 0.134328 0.734375 +vt 0.134328 0.765625 +vt 0.208955 0.828125 +vt 0.134328 0.828125 +vt 0.134328 0.859375 +vt 0.208955 0.859375 +vt 0.216418 0.828125 +vt 0.208955 0.765625 +vt 0.216418 0.765625 +vt 0.126866 0.765625 +vt 0.126866 0.828125 +vt 0.656716 0.874957 +vt 0.645297 0.865445 +vt 0.635616 0.838358 +vt 0.626876 0.750000 +vt 0.629147 0.702181 +vt 0.635616 0.661642 +vt 0.656716 0.625043 +vt 0.668136 0.634554 +vt 0.677817 0.661642 +vt 0.684285 0.702181 +vt 0.686557 0.750000 +vt 0.684285 0.797819 +vt 0.677817 0.838358 +vt 0.716418 0.874884 +vt 0.705005 0.865378 +vt 0.695330 0.838306 +vt 0.688865 0.797791 +vt 0.686595 0.750000 +vt 0.688865 0.702209 +vt 0.695330 0.661694 +vt 0.716418 0.625117 +vt 0.727831 0.634623 +vt 0.737506 0.661694 +vt 0.746241 0.750000 +vt 0.743971 0.797791 +vt 0.737506 0.838306 +vt 0.208955 0.671875 +vt 0.208955 0.671875 +vt 0.208955 0.671875 +vt 0.208955 0.671875 +vt 0.776119 0.562500 +vt 0.746269 0.515625 +vt 0.776119 0.515625 +vt 0.776119 0.187500 +vt 0.746269 0.140625 +vt 0.776119 0.140625 +vt 0.776119 0.609375 +vt 0.746269 0.562500 +vt 0.776119 0.234375 +vt 0.746269 0.187500 +vt 0.776119 0.656250 +vt 0.746269 0.609375 +vt 0.776119 0.281250 +vt 0.746269 0.234375 +vt 0.776119 0.703125 +vt 0.746269 0.656250 +vt 0.776119 0.328125 +vt 0.746269 0.281250 +vt 0.776119 0.750000 +vt 0.746269 0.703125 +vt 0.776119 0.421875 +vt 0.746269 0.375000 +vt 0.776119 0.375000 +vt 0.746269 0.328125 +vt 0.776119 0.046875 +vt 0.746269 -0.000000 +vt 0.776119 -0.000000 +vt 0.776119 0.468750 +vt 0.746269 0.421875 +vt 0.776119 0.093750 +vt 0.746269 0.046875 +vt 0.746269 0.468750 +vt 0.746269 0.093750 +vt 0.746269 0.750000 +vn 0.0000 0.0000 1.0000 +vn 0.0000 0.0000 -1.0000 +vn 0.0000 1.0000 0.0000 +vn 0.0000 -1.0000 0.0000 +vn -1.0000 0.0000 0.0000 +vn 1.0000 0.0000 0.0000 +vn -0.7071 0.7071 0.0000 +vn 0.7071 -0.7071 0.0000 +vn -0.7071 -0.7071 0.0000 +vn 0.7071 0.7071 0.0000 +vn -0.9239 0.3827 0.0000 +vn 0.9239 -0.3827 0.0000 +vn -0.9239 -0.3827 0.0000 +vn 0.9239 0.3827 0.0000 +vn -0.3827 -0.9239 0.0000 +vn 0.3827 0.9239 0.0000 +vn -0.3827 0.9239 0.0000 +vn 0.3827 -0.9239 0.0000 +s off +f 32/1/1 20/2/1 24/3/1 +f 7/4/2 11/5/2 15/6/2 +f 41/7/3 46/8/3 43/9/3 +f 44/10/4 47/11/4 42/12/4 +f 38/13/1 39/14/1 40/15/1 +f 34/16/2 35/17/2 33/18/2 +f 39/14/4 33/18/4 40/15/4 +f 38/19/3 36/20/3 37/21/3 +f 37/22/5 34/16/5 39/23/5 +f 40/24/6 35/17/6 38/25/6 +f 43/26/5 45/27/5 44/28/5 +f 42/29/6 48/30/6 41/31/6 +f 47/11/2 46/8/2 48/30/2 +f 43/32/1 42/29/1 41/31/1 +f 49/33/7 54/34/7 51/35/7 +f 52/36/8 55/37/8 50/38/8 +f 51/39/9 53/40/9 52/41/9 +f 50/42/10 56/43/10 49/44/10 +f 55/37/2 54/34/2 56/43/2 +f 51/45/1 50/42/1 49/44/1 +f 62/46/1 63/47/1 64/48/1 +f 57/49/2 60/50/2 59/51/2 +f 63/47/8 57/49/8 64/48/8 +f 62/52/7 60/50/7 61/53/7 +f 61/54/9 58/55/9 63/56/9 +f 64/57/10 59/51/10 62/58/10 +f 32/1/1 17/59/1 18/60/1 +f 18/60/1 19/61/1 32/1/1 +f 19/61/1 20/2/1 32/1/1 +f 20/2/1 21/62/1 22/63/1 +f 22/63/1 23/64/1 20/2/1 +f 23/64/1 24/3/1 20/2/1 +f 24/3/1 25/65/1 26/66/1 +f 26/66/1 27/67/1 28/68/1 +f 28/68/1 29/69/1 32/1/1 +f 29/69/1 30/70/1 32/1/1 +f 30/70/1 31/71/1 32/1/1 +f 24/3/1 26/66/1 32/1/1 +f 26/66/1 28/68/1 32/1/1 +f 15/6/2 16/72/2 1/73/2 +f 1/73/2 2/74/2 3/75/2 +f 3/75/2 4/76/2 7/4/2 +f 4/76/2 5/77/2 7/4/2 +f 5/77/2 6/78/2 7/4/2 +f 7/4/2 8/79/2 9/80/2 +f 9/80/2 10/81/2 7/4/2 +f 10/81/2 11/5/2 7/4/2 +f 11/5/2 12/82/2 13/83/2 +f 13/83/2 14/84/2 11/5/2 +f 14/84/2 15/6/2 11/5/2 +f 15/6/2 1/73/2 7/4/2 +f 1/73/2 3/75/2 7/4/2 +f 41/7/3 48/30/3 46/8/3 +f 44/10/4 45/27/4 47/11/4 +f 38/13/1 37/85/1 39/14/1 +f 34/16/2 36/20/2 35/17/2 +f 39/14/4 34/16/4 33/18/4 +f 38/19/3 35/17/3 36/20/3 +f 37/22/5 36/20/5 34/16/5 +f 40/24/6 33/18/6 35/17/6 +f 43/26/5 46/8/5 45/27/5 +f 42/29/6 47/11/6 48/30/6 +f 47/11/2 45/27/2 46/8/2 +f 43/32/1 44/86/1 42/29/1 +f 49/33/7 56/43/7 54/34/7 +f 52/36/8 53/40/8 55/37/8 +f 51/39/9 54/34/9 53/40/9 +f 50/42/10 55/37/10 56/43/10 +f 55/37/2 53/40/2 54/34/2 +f 51/45/1 52/87/1 50/42/1 +f 62/46/1 61/88/1 63/47/1 +f 57/49/2 58/55/2 60/50/2 +f 63/47/8 58/55/8 57/49/8 +f 62/52/7 59/51/7 60/50/7 +f 61/54/9 60/50/9 58/55/9 +f 64/57/10 57/49/10 59/51/10 +s 1 +f 12/89/5 20/90/11 13/91/11 +f 4/92/6 28/93/12 5/94/12 +f 11/95/13 21/96/5 12/89/5 +f 3/97/14 29/98/6 4/92/6 +f 10/99/9 22/100/13 11/95/13 +f 2/101/10 30/102/14 3/97/14 +f 9/103/15 23/104/9 10/99/9 +f 1/105/16 31/106/10 2/101/10 +f 8/107/4 24/108/15 9/103/15 +f 15/109/17 17/110/3 16/111/3 +f 16/111/3 32/112/16 1/105/16 +f 7/113/18 25/114/4 8/115/4 +f 14/116/7 18/117/17 15/109/17 +f 6/118/8 26/119/18 7/113/18 +f 13/91/11 19/120/7 14/116/7 +f 5/94/12 27/121/8 6/118/8 +f 12/89/5 21/96/5 20/90/11 +f 4/92/6 29/98/6 28/93/12 +f 11/95/13 22/100/13 21/96/5 +f 3/97/14 30/102/14 29/98/6 +f 10/99/9 23/104/9 22/100/13 +f 2/101/10 31/106/10 30/102/14 +f 9/103/15 24/108/15 23/104/9 +f 1/105/16 32/112/16 31/106/10 +f 8/107/4 25/122/4 24/108/15 +f 15/109/17 18/117/17 17/110/3 +f 16/111/3 17/110/3 32/112/16 +f 7/113/18 26/119/18 25/114/4 +f 14/116/7 19/120/7 18/117/17 +f 6/118/8 27/121/8 26/119/18 +f 13/91/11 20/90/11 19/120/7 +f 5/94/12 28/93/12 27/121/8 +o Breech +v -0.500000 0.000000 -6.000000 +v 0.500000 0.000000 -6.000000 +v -0.500000 0.000000 -7.000000 +v 0.500000 0.000000 -7.000000 +v -0.500000 -0.250000 -7.250000 +v 0.500000 -0.250000 -7.250000 +v -0.500000 -0.250000 -5.750000 +v 0.500000 -0.250000 -5.750000 +v 0.250000 0.125000 -7.187500 +v -0.250000 0.125000 -7.187500 +v 0.250000 0.125000 -5.812500 +v -0.250000 0.125000 -5.812500 +v -0.500000 -0.250000 -5.625000 +v 0.500000 -0.250000 -5.625000 +v -0.500000 0.125000 -5.625000 +v 0.500000 0.125000 -5.625000 +v 0.500000 -0.250000 -7.375000 +v -0.500000 -0.250000 -7.375000 +v 0.500000 0.125000 -7.375000 +v -0.500000 0.125000 -7.375000 +v 0.250000 0.375000 -5.812500 +v 0.250000 0.375000 -7.187500 +v -0.250000 0.375000 -7.187500 +v -0.250000 0.375000 -5.812500 +v 0.000000 2.000000 -4.500000 +v -0.382683 1.923880 -4.500000 +v -0.707107 1.707107 -4.500000 +v -0.923880 1.382683 -4.500000 +v -1.000000 1.000000 -4.500000 +v -0.923880 0.617316 -4.500000 +v -0.707107 0.292893 -4.500000 +v -0.382683 0.076120 -4.500000 +v 0.000000 0.000000 -4.500000 +v 0.382683 0.076120 -4.500000 +v 0.707107 0.292893 -4.500000 +v 0.923880 0.617316 -4.500000 +v 1.000000 1.000000 -4.500000 +v 0.923880 1.382684 -4.500000 +v 0.707107 1.707107 -4.500000 +v 0.382683 1.923880 -4.500000 +v 0.000000 1.750000 -5.500000 +v -0.287013 1.692910 -5.500000 +v -0.530330 1.530330 -5.500000 +v -0.692910 1.287013 -5.500000 +v -0.750000 1.000000 -5.500000 +v -0.692910 0.712987 -5.500000 +v -0.530330 0.469670 -5.500000 +v -0.287013 0.307090 -5.500000 +v 0.000000 0.250000 -5.500000 +v 0.287013 0.307090 -5.500000 +v 0.530330 0.469670 -5.500000 +v 0.692910 0.712987 -5.500000 +v 0.750000 1.000000 -5.500000 +v 0.692910 1.287013 -5.500000 +v 0.530330 1.530330 -5.500000 +v 0.287012 1.692910 -5.500000 +v 0.000000 1.750000 -7.500000 +v -0.287013 1.692910 -7.500000 +v -0.530330 1.530330 -7.500000 +v -0.692910 1.287013 -7.500000 +v -0.750000 1.000000 -7.500000 +v -0.692910 0.712987 -7.500000 +v -0.530330 0.469670 -7.500000 +v -0.287013 0.307090 -7.500000 +v 0.000000 0.250000 -7.500000 +v 0.287013 0.307090 -7.500000 +v 0.530330 0.469670 -7.500000 +v 0.692910 0.712987 -7.500000 +v 0.750000 1.000000 -7.500000 +v 0.692910 1.287013 -7.500000 +v 0.530330 1.530330 -7.500000 +v 0.287012 1.692910 -7.500000 +v 0.000000 1.500000 -8.000000 +v -0.191342 1.461940 -8.000000 +v -0.353553 1.353553 -8.000000 +v -0.461940 1.191342 -8.000000 +v -0.500000 1.000000 -8.000000 +v -0.461940 0.808658 -8.000000 +v -0.353553 0.646447 -8.000000 +v -0.191342 0.538060 -8.000000 +v 0.000000 0.500000 -8.000000 +v 0.191341 0.538060 -8.000000 +v 0.353553 0.646446 -8.000000 +v 0.461940 0.808658 -8.000000 +v 0.500000 1.000000 -8.000000 +v 0.461940 1.191342 -8.000000 +v 0.353553 1.353554 -8.000000 +v 0.191341 1.461940 -8.000000 +vt 0.085821 0.796875 +vt 0.115672 0.671875 +vt 0.115672 0.796875 +vt 0.078358 0.796875 +vt 0.085821 0.671875 +vt 0.123134 0.671875 +vt 0.022388 0.656250 +vt 0.063433 0.671875 +vt 0.011194 0.671875 +vt 0.011194 0.796875 +vt 0.014925 0.843750 +vt 0.022388 0.812500 +vt 0.078358 0.625000 +vt 0.063433 0.656250 +vt 0.063433 0.625000 +vt 0.000000 0.796875 +vt 0.000000 0.671875 +vt 0.126866 0.796875 +vt 0.123134 0.796875 +vt 0.175373 0.625000 +vt 0.134328 0.656250 +vt 0.134328 0.625000 +vt 0.119403 0.625000 +vt 0.078358 0.656250 +vt 0.063433 0.796875 +vt 0.074627 0.671875 +vt 0.074627 0.796875 +vt 0.078358 0.671875 +vt 0.119403 0.656250 +vt 0.810345 0.643319 +vt 0.831446 0.643319 +vt 0.831446 0.731681 +vt 0.014925 0.625000 +vt 0.059701 0.625000 +vt 0.063433 0.625000 +vt 0.059701 0.843750 +vt 0.052239 0.812500 +vt 0.052239 0.656250 +vt 0.011194 0.843750 +vt 0.126866 0.671875 +vt 0.175373 0.656250 +vt 0.826605 0.745225 +vt 0.820895 0.749981 +vt 0.815185 0.745225 +vt 0.810345 0.731681 +vt 0.807110 0.711411 +vt 0.805975 0.687500 +vt 0.807110 0.663589 +vt 0.815185 0.629775 +vt 0.820895 0.625019 +vt 0.826605 0.629775 +vt 0.834680 0.663589 +vt 0.835816 0.687500 +vt 0.834680 0.711411 +vt 0.011194 0.625000 +vt 0.063433 0.843750 +vt 0.776119 0.281250 +vt 0.805970 0.234375 +vt 0.805970 0.273438 +vt 0.776119 0.656250 +vt 0.805970 0.695312 +vt 0.776119 0.703125 +vt 0.805970 0.320312 +vt 0.776119 0.328125 +vt 0.805970 0.742188 +vt 0.776119 0.750000 +vt 0.776119 0.421875 +vt 0.805970 0.375000 +vt 0.805970 0.414062 +vt 0.805970 0.367188 +vt 0.776119 0.375000 +vt 0.776119 0.046875 +vt 0.805970 -0.000000 +vt 0.805970 0.039062 +vt 0.776119 0.468750 +vt 0.805970 0.421875 +vt 0.805970 0.460938 +vt 0.805970 0.085938 +vt 0.776119 0.093750 +vt 0.776119 0.515625 +vt 0.805970 0.468750 +vt 0.805970 0.507812 +vt 0.805970 0.132812 +vt 0.776119 0.140625 +vt 0.805970 0.554688 +vt 0.776119 0.562500 +vt 0.805970 0.179688 +vt 0.776119 0.187500 +vt 0.776119 0.609375 +vt 0.805970 0.562500 +vt 0.805970 0.601562 +vt 0.776119 0.234375 +vt 0.805970 0.187500 +vt 0.805970 0.226562 +vt 0.805970 0.648438 +vt 0.805970 0.117188 +vt 0.865672 0.156250 +vt 0.805970 0.156250 +vt 0.805970 0.468750 +vt 0.865672 0.507812 +vt 0.805970 0.507812 +vt 0.865672 0.195312 +vt 0.805970 0.195312 +vt 0.865672 0.546875 +vt 0.805970 0.546875 +vt 0.865672 0.234375 +vt 0.805970 0.234375 +vt 0.865672 0.585938 +vt 0.805970 0.585938 +vt 0.865672 0.273438 +vt 0.805970 0.273438 +vt 0.865672 0.625000 +vt 0.805970 0.625000 +vt 0.805970 0.312500 +vt 0.865672 0.351562 +vt 0.805970 0.351562 +vt 0.865672 0.312500 +vt 0.865672 0.039062 +vt 0.865672 0.390625 +vt 0.805970 0.390625 +vt 0.865672 0.078125 +vt 0.805970 0.078125 +vt 0.865672 0.429688 +vt 0.805970 0.429688 +vt 0.865672 0.117188 +vt 0.865672 0.468750 +vt 0.880597 0.203125 +vt 0.880597 0.242188 +vt 0.880597 0.281250 +vt 0.880597 0.320312 +vt 0.880597 0.359375 +vt 0.880597 0.421875 +vt 0.880597 0.437500 +vt 0.880597 0.500000 +vt 0.880597 0.515625 +vt 0.880597 0.578125 +vt 0.880597 0.593750 +vt 0.865672 -0.000000 +vt 0.880597 0.031250 +vt 0.880597 0.070312 +vt 0.880597 0.085938 +vt 0.880597 0.125000 +vt 0.880597 0.187500 +vt 0.805970 0.656250 +vt 0.805970 0.281250 +vt 0.805970 0.703125 +vt 0.805970 0.328125 +vt 0.776119 -0.000000 +vt 0.805970 0.046875 +vt 0.805970 0.093750 +vt 0.805970 0.515625 +vt 0.805970 0.140625 +vt 0.805970 0.609375 +vt 0.880597 0.226562 +vt 0.880597 0.265625 +vt 0.880597 0.304688 +vt 0.880597 0.343750 +vt 0.880597 0.382812 +vt 0.880597 0.398438 +vt 0.880597 0.460938 +vt 0.880597 0.476562 +vt 0.880597 0.539062 +vt 0.880597 0.554688 +vt 0.880597 0.617188 +vt 0.880597 0.007812 +vt 0.880597 0.046875 +vt 0.880597 0.109375 +vt 0.880597 0.148438 +vt 0.880597 0.164062 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 -0.7071 0.7071 +vn 0.0000 -0.7071 -0.7071 +vn 1.0000 0.0000 0.0000 +vn 0.0000 1.0000 0.0000 +vn -1.0000 0.0000 0.0000 +vn 0.0000 0.0000 1.0000 +vn 0.0000 0.0000 -1.0000 +vn 0.6860 0.6860 -0.2425 +vn 0.8963 0.3713 -0.2425 +vn -0.6860 -0.6860 -0.2425 +vn -0.3713 -0.8963 -0.2425 +vn 0.3713 0.8963 -0.2425 +vn -0.0000 -0.9701 -0.2425 +vn -0.3713 0.8963 -0.2425 +vn -0.0000 0.9701 -0.2425 +vn 0.3713 -0.8963 -0.2425 +vn -0.6860 0.6860 -0.2425 +vn 0.6860 -0.6860 -0.2425 +vn -0.8963 0.3713 -0.2425 +vn 0.8963 -0.3713 -0.2425 +vn -0.9701 -0.0000 -0.2425 +vn 0.9701 0.0000 -0.2425 +vn -0.8963 -0.3713 -0.2425 +vn 0.9239 -0.3827 0.0000 +vn -0.9239 -0.3827 0.0000 +vn 0.9239 0.3827 0.0000 +vn -0.7071 -0.7071 0.0000 +vn 0.7071 0.7071 0.0000 +vn -0.3827 -0.9239 0.0000 +vn 0.3827 0.9239 0.0000 +vn -0.3827 0.9239 0.0000 +vn 0.3827 -0.9239 0.0000 +vn -0.7071 0.7071 0.0000 +vn 0.7071 -0.7071 0.0000 +vn -0.9239 0.3827 0.0000 +vn 0.8263 0.3423 -0.4472 +vn 0.6325 0.6325 -0.4472 +vn 0.3423 0.8263 -0.4472 +vn -0.0000 0.8944 -0.4472 +vn -0.3423 0.8263 -0.4472 +vn -0.6325 0.6325 -0.4472 +vn -0.8263 0.3423 -0.4472 +vn -0.8944 -0.0000 -0.4472 +vn -0.8263 -0.3423 -0.4472 +vn -0.6325 -0.6325 -0.4472 +vn -0.3423 -0.8263 -0.4472 +vn -0.0000 -0.8944 -0.4472 +vn 0.3423 -0.8263 -0.4472 +vn 0.6325 -0.6325 -0.4472 +vn 0.8263 -0.3423 -0.4472 +vn 0.8944 -0.0000 -0.4472 +s off +f 67/123/19 66/124/19 65/125/19 +f 69/126/20 68/127/20 67/123/20 +f 72/128/21 65/125/21 66/124/21 +f 66/129/22 83/130/22 80/131/22 +f 83/130/23 79/132/23 80/131/23 +f 71/133/24 79/132/24 65/134/24 +f 75/135/25 88/136/25 76/137/25 +f 80/131/25 77/138/25 78/139/25 +f 72/128/19 77/140/19 71/141/19 +f 76/142/24 87/143/24 74/144/24 +f 73/145/22 85/146/22 75/135/22 +f 84/147/26 81/148/26 82/149/26 +f 69/126/19 81/148/19 70/150/19 +f 74/144/26 86/151/26 73/145/26 +f 147/152/26 143/153/26 139/154/26 +f 80/131/22 72/155/22 66/129/22 +f 83/130/22 70/156/22 81/157/22 +f 84/147/24 69/158/24 67/159/24 +f 79/132/24 67/159/24 65/134/24 +f 67/123/19 68/127/19 66/124/19 +f 69/126/20 70/150/20 68/127/20 +f 72/128/21 71/141/21 65/125/21 +f 66/129/22 68/160/22 83/130/22 +f 83/130/23 84/147/23 79/132/23 +f 71/133/24 77/161/24 79/132/24 +f 75/135/25 85/146/25 88/136/25 +f 80/131/25 79/132/25 77/138/25 +f 72/128/19 78/162/19 77/140/19 +f 76/142/24 88/163/24 87/143/24 +f 73/145/22 86/151/22 85/146/22 +f 84/147/26 83/130/26 81/148/26 +f 69/126/19 82/149/19 81/148/19 +f 74/144/26 87/143/26 86/151/26 +f 139/154/26 138/164/26 137/165/26 +f 137/165/26 152/166/26 139/154/26 +f 152/166/26 151/167/26 139/154/26 +f 151/167/26 150/168/26 149/169/26 +f 149/169/26 148/170/26 147/152/26 +f 147/152/26 146/171/26 143/153/26 +f 146/171/26 145/172/26 143/153/26 +f 145/172/26 144/173/26 143/153/26 +f 143/153/26 142/174/26 141/175/26 +f 141/175/26 140/176/26 139/154/26 +f 151/167/26 149/169/26 139/154/26 +f 149/169/26 147/152/26 139/154/26 +f 143/153/26 141/175/26 139/154/26 +f 80/131/22 78/177/22 72/155/22 +f 83/130/22 68/160/22 70/156/22 +f 84/147/24 82/178/24 69/158/24 +f 79/132/24 84/147/24 67/159/24 +s 1 +f 103/179/27 118/180/28 119/181/27 +f 95/182/29 112/183/30 96/184/30 +f 103/179/27 120/185/31 104/186/31 +f 96/184/30 113/187/32 97/188/32 +f 90/189/33 105/190/34 106/191/33 +f 104/186/31 105/192/34 89/193/34 +f 98/194/35 113/195/32 114/196/35 +f 91/197/36 106/198/33 107/199/36 +f 98/194/35 115/200/37 99/201/37 +f 92/202/38 107/203/36 108/204/38 +f 99/201/37 116/205/39 100/206/39 +f 92/202/38 109/207/40 93/208/40 +f 100/206/39 117/209/41 101/210/41 +f 94/211/42 109/212/40 110/213/42 +f 102/214/28 117/215/41 118/216/28 +f 94/211/42 111/217/29 95/182/29 +f 116/218/43 133/219/22 117/220/22 +f 109/221/24 126/222/44 110/223/44 +f 117/220/22 134/224/45 118/225/45 +f 110/223/44 127/226/46 111/227/46 +f 118/225/45 135/228/47 119/229/47 +f 111/227/46 128/230/48 112/231/48 +f 119/229/47 136/232/49 120/233/49 +f 112/231/48 129/234/19 113/235/19 +f 105/236/23 122/237/50 106/238/50 +f 120/233/49 121/239/23 105/236/23 +f 113/195/19 130/240/51 114/196/51 +f 106/238/50 123/241/52 107/242/52 +f 114/196/51 131/243/53 115/244/53 +f 107/242/52 124/245/54 108/246/54 +f 115/244/53 132/247/43 116/218/43 +f 108/246/54 125/248/24 109/221/24 +f 150/249/55 135/228/56 134/224/55 +f 151/250/56 136/232/57 135/228/56 +f 152/251/57 121/239/58 136/232/57 +f 137/252/58 122/237/59 121/239/58 +f 138/253/59 123/241/60 122/237/59 +f 123/241/60 140/254/61 124/245/61 +f 140/255/61 125/248/62 124/245/61 +f 125/248/62 142/256/63 126/222/63 +f 142/257/63 127/226/64 126/222/63 +f 127/226/64 144/258/65 128/230/65 +f 144/259/65 129/234/66 128/230/65 +f 129/260/66 146/261/67 130/240/67 +f 130/240/67 147/262/68 131/243/68 +f 147/263/68 132/247/69 131/243/68 +f 148/264/69 133/219/70 132/247/69 +f 133/219/70 150/265/55 134/224/55 +f 103/179/27 102/214/28 118/180/28 +f 95/182/29 111/266/29 112/183/30 +f 103/179/27 119/267/27 120/185/31 +f 96/184/30 112/268/30 113/187/32 +f 90/189/33 89/193/34 105/190/34 +f 104/186/31 120/269/31 105/192/34 +f 98/194/35 97/270/32 113/195/32 +f 91/197/36 90/189/33 106/198/33 +f 98/194/35 114/271/35 115/200/37 +f 92/202/38 91/197/36 107/203/36 +f 99/201/37 115/272/37 116/205/39 +f 92/202/38 108/273/38 109/207/40 +f 100/206/39 116/274/39 117/209/41 +f 94/211/42 93/208/40 109/212/40 +f 102/214/28 101/210/41 117/215/41 +f 94/211/42 110/275/42 111/217/29 +f 116/218/43 132/247/43 133/219/22 +f 109/221/24 125/248/24 126/222/44 +f 117/220/22 133/219/22 134/224/45 +f 110/223/44 126/222/44 127/226/46 +f 118/225/45 134/224/45 135/228/47 +f 111/227/46 127/226/46 128/230/48 +f 119/229/47 135/228/47 136/232/49 +f 112/231/48 128/230/48 129/234/19 +f 105/236/23 121/239/23 122/237/50 +f 120/233/49 136/232/49 121/239/23 +f 113/195/19 129/260/19 130/240/51 +f 106/238/50 122/237/50 123/241/52 +f 114/196/51 130/240/51 131/243/53 +f 107/242/52 123/241/52 124/245/54 +f 115/244/53 131/243/53 132/247/43 +f 108/246/54 124/245/54 125/248/24 +f 150/249/55 151/276/56 135/228/56 +f 151/250/56 152/277/57 136/232/57 +f 152/251/57 137/278/58 121/239/58 +f 137/252/58 138/279/59 122/237/59 +f 138/253/59 139/280/60 123/241/60 +f 123/241/60 139/281/60 140/254/61 +f 140/255/61 141/282/62 125/248/62 +f 125/248/62 141/283/62 142/256/63 +f 142/257/63 143/284/64 127/226/64 +f 127/226/64 143/285/64 144/258/65 +f 144/259/65 145/286/66 129/234/66 +f 129/260/66 145/287/66 146/261/67 +f 130/240/67 146/288/67 147/262/68 +f 147/263/68 148/289/69 132/247/69 +f 148/264/69 149/290/70 133/219/70 +f 133/219/70 149/291/70 150/265/55 +o Shell +v 0.000000 1.562500 -3.500000 +v -0.215260 1.519682 -3.500000 +v -0.397748 1.397748 -3.500000 +v -0.519682 1.215260 -3.500000 +v -0.562500 1.000000 -3.500000 +v -0.519682 0.784740 -3.500000 +v -0.397748 0.602252 -3.500000 +v -0.215260 0.480318 -3.500000 +v 0.000000 0.437500 -3.500000 +v 0.215260 0.480318 -3.500000 +v 0.397747 0.602252 -3.500000 +v 0.519682 0.784740 -3.500000 +v 0.562500 1.000000 -3.500000 +v 0.519682 1.215260 -3.500000 +v 0.397747 1.397748 -3.500000 +v 0.215259 1.519682 -3.500000 +v 0.287012 1.692909 -3.250000 +v 0.530330 1.530331 -3.250000 +v 0.692910 1.287012 -3.250000 +v 0.750000 1.000000 -3.250000 +v 0.692910 0.712988 -3.250000 +v 0.530330 0.469669 -3.250000 +v 0.287013 0.307091 -3.250000 +v 0.000000 0.250000 -3.250000 +v -0.287013 0.307091 -3.250000 +v -0.530330 0.469669 -3.250000 +v -0.692910 0.712988 -3.250000 +v -0.750000 1.000000 -3.250000 +v -0.692910 1.287012 -3.250000 +v -0.530330 1.530331 -3.250000 +v -0.287013 1.692909 -3.250000 +v 0.000000 1.750000 -3.250000 +v 0.287012 1.692909 -1.000000 +v 0.530330 1.530331 -1.000000 +v 0.692910 1.287012 -1.000000 +v 0.750000 1.000000 -1.000000 +v 0.692910 0.712988 -1.000000 +v 0.530330 0.469669 -1.000000 +v 0.287013 0.307091 -1.000000 +v 0.000000 0.250000 -1.000000 +v -0.287013 0.307091 -1.000000 +v -0.530330 0.469669 -1.000000 +v -0.692910 0.712988 -1.000000 +v -0.750000 1.000000 -1.000000 +v -0.692910 1.287012 -1.000000 +v -0.530330 1.530331 -1.000000 +v -0.287013 1.692909 -1.000000 +v 0.000000 1.750000 -1.000000 +v 0.179382 1.433068 0.000000 +v 0.331456 1.331457 0.000000 +v 0.433069 1.179382 0.000000 +v 0.468750 1.000000 0.000000 +v 0.433069 0.820618 0.000000 +v 0.331456 0.668543 0.000000 +v 0.179383 0.566932 0.000000 +v 0.000000 0.531250 0.000000 +v -0.179383 0.566932 0.000000 +v -0.331456 0.668543 0.000000 +v -0.433069 0.820618 0.000000 +v -0.468750 1.000000 0.000000 +v -0.433069 1.179382 0.000000 +v -0.331456 1.331457 0.000000 +v -0.179383 1.433068 0.000000 +v 0.000000 1.468750 0.000000 +v 0.000000 1.000000 0.500000 +vt 0.864481 0.745016 +vt 0.840742 0.745016 +vt 0.840743 0.645609 +vt 0.846188 0.630372 +vt 0.852612 0.625022 +vt 0.859036 0.630372 +vt 0.864481 0.645610 +vt 0.868120 0.668414 +vt 0.869398 0.695313 +vt 0.868120 0.722212 +vt 0.859036 0.760253 +vt 0.852612 0.765604 +vt 0.846188 0.760253 +vt 0.837104 0.722212 +vt 0.835826 0.695313 +vt 0.837104 0.668414 +vt 1.000000 0.242188 +vt 0.992537 0.273438 +vt 0.992537 0.234375 +vt 1.000000 0.007812 +vt 0.992537 0.039062 +vt 0.992537 0.000000 +vt 0.992537 0.351562 +vt 1.000000 0.382812 +vt 0.992537 0.390625 +vt 1.000000 0.554688 +vt 0.992537 0.585938 +vt 0.992537 0.546875 +vt 1.000000 0.320312 +vt 0.992537 0.312500 +vt 1.000000 0.164062 +vt 0.992537 0.195312 +vt 0.992537 0.156250 +vt 1.000000 0.617188 +vt 0.992537 0.625000 +vt 1.000000 0.398438 +vt 0.992537 0.429688 +vt 0.992537 0.078125 +vt 1.000000 0.109375 +vt 0.992537 0.117188 +vt 1.000000 0.476562 +vt 0.992537 0.507812 +vt 0.992537 0.468750 +vt 1.000000 0.539062 +vt 1.000000 0.148438 +vt 1.000000 0.304688 +vt 1.000000 0.203125 +vt 1.000000 0.070312 +vt 1.000000 0.460938 +vt 0.925373 0.156250 +vt 0.925373 0.078125 +vt 0.925373 0.585938 +vt 0.925373 0.468750 +vt 0.925373 0.390625 +vt 0.925373 0.507812 +vt 0.925373 0.234375 +vt 0.925373 0.117188 +vt 0.925373 0.000000 +vt 0.925373 0.273438 +vt 0.925373 0.351562 +vt 0.925373 0.195312 +vt 0.925373 0.546875 +vt 0.925373 0.429688 +vt 0.925373 0.312500 +vt 0.925373 0.039062 +vt 0.895522 0.007812 +vt 0.895522 0.320312 +vt 0.895522 0.539062 +vt 0.895522 0.515625 +vt 0.895522 0.164062 +vt 0.895522 0.304688 +vt 0.895522 0.281250 +vt 0.895522 0.226562 +vt 0.895522 0.203125 +vt 0.895522 0.554688 +vt 0.895522 0.070312 +vt 0.895522 0.046875 +vt 0.895522 0.617188 +vt 0.895522 0.593750 +vt 0.895522 0.085938 +vt 0.895522 0.398438 +vt 0.895522 0.242188 +vt 0.895522 0.125000 +vt 0.895522 0.437500 +vt 0.895522 0.382812 +vt 0.895522 0.359375 +vt 0.895522 0.476562 +vt 0.895522 0.460938 +vt 0.880597 0.445312 +vt 0.880597 0.367188 +vt 0.895522 0.031250 +vt 0.880597 0.015625 +vt 0.895522 0.343750 +vt 0.880597 0.328125 +vt 0.880597 0.523438 +vt 0.895522 0.187500 +vt 0.880597 0.171875 +vt 0.880597 0.289062 +vt 0.880597 0.210938 +vt 0.895522 0.578125 +vt 0.880597 0.562500 +vt 0.880597 0.054688 +vt 0.880597 0.601562 +vt 0.895522 0.109375 +vt 0.880597 0.093750 +vt 0.895522 0.421875 +vt 0.880597 0.406250 +vt 0.895522 0.265625 +vt 0.880597 0.250000 +vt 0.895522 0.148438 +vt 0.880597 0.132812 +vt 0.895522 0.500000 +vt 0.880597 0.484375 +vt 1.000000 0.265625 +vt 1.000000 0.031250 +vt 1.000000 0.359375 +vt 1.000000 0.578125 +vt 1.000000 0.343750 +vt 1.000000 0.187500 +vt 1.000000 0.593750 +vt 1.000000 0.421875 +vt 1.000000 0.085938 +vt 1.000000 0.500000 +vt 1.000000 0.515625 +vt 1.000000 0.125000 +vt 1.000000 0.281250 +vt 1.000000 0.226562 +vt 1.000000 0.046875 +vt 1.000000 0.437500 +vt 0.925373 0.625000 +vn 0.0000 0.0000 -1.0000 +vn 0.5657 0.5657 -0.6000 +vn 0.3061 0.7391 -0.6000 +vn 0.0000 -0.8000 -0.6000 +vn 0.3061 -0.7391 -0.6000 +vn -0.3061 0.7391 -0.6000 +vn -0.5657 0.5657 -0.6000 +vn -0.5657 -0.5657 -0.6000 +vn -0.3061 -0.7391 -0.6000 +vn 0.0000 0.8000 -0.6000 +vn 0.8000 0.0000 -0.6000 +vn 0.7391 0.3061 -0.6000 +vn -0.7391 0.3061 -0.6000 +vn 0.5657 -0.5657 -0.6000 +vn 0.7391 -0.3061 -0.6000 +vn -0.8000 -0.0000 -0.6000 +vn -0.7391 -0.3061 -0.6000 +vn 0.9239 0.3827 0.0000 +vn 1.0000 -0.0000 0.0000 +vn 0.9239 -0.3827 0.0000 +vn 0.7071 -0.7071 0.0000 +vn -0.0000 -1.0000 0.0000 +vn -0.3827 -0.9239 0.0000 +vn -0.9239 -0.3827 0.0000 +vn -1.0000 0.0000 0.0000 +vn -0.9239 0.3827 0.0000 +vn -0.7071 0.7071 0.0000 +vn -0.7071 -0.7071 0.0000 +vn 0.3827 0.9239 0.0000 +vn 0.7071 0.7071 0.0000 +vn 0.3827 -0.9239 0.0000 +vn 0.0000 1.0000 0.0000 +vn -0.3827 0.9239 0.0000 +vn 0.3684 -0.8894 0.2707 +vn 0.0000 -0.8777 0.4792 +vn 0.0000 -0.9627 0.2707 +vn -0.3684 0.8894 0.2707 +vn 0.0000 0.8777 0.4792 +vn 0.0000 0.9627 0.2707 +vn -0.8894 -0.3684 0.2707 +vn -0.6206 -0.6207 0.4792 +vn -0.8109 -0.3359 0.4792 +vn 0.8894 0.3684 0.2707 +vn 0.8777 0.0000 0.4792 +vn 0.9627 0.0000 0.2707 +vn 0.3684 0.8894 0.2707 +vn 0.3359 0.8109 0.4792 +vn 0.6206 0.6207 0.4792 +vn 0.8109 0.3359 0.4792 +vn -0.3684 -0.8894 0.2707 +vn -0.6807 -0.6807 0.2707 +vn 0.6206 -0.6207 0.4792 +vn 0.3359 -0.8109 0.4792 +vn -0.3359 -0.8109 0.4792 +vn 0.8894 -0.3684 0.2707 +vn 0.6807 -0.6807 0.2707 +vn -0.8894 0.3684 0.2707 +vn -0.6206 0.6207 0.4792 +vn -0.6807 0.6807 0.2707 +vn 0.6807 0.6807 0.2707 +vn 0.8109 -0.3359 0.4792 +vn -0.9627 -0.0000 0.2707 +vn -0.8109 0.3359 0.4792 +vn -0.3359 0.8109 0.4792 +vn -0.8777 -0.0000 0.4792 +vn -0.0000 -0.0000 1.0000 +s off +f 155/292/71 167/293/71 163/294/71 +f 163/294/71 162/295/71 161/296/71 +f 161/296/71 160/297/71 163/294/71 +f 160/297/71 159/298/71 163/294/71 +f 159/298/71 158/299/71 157/300/71 +f 157/300/71 156/301/71 155/292/71 +f 155/292/71 154/302/71 167/293/71 +f 154/302/71 153/303/71 167/293/71 +f 153/303/71 168/304/71 167/293/71 +f 167/293/71 166/305/71 165/306/71 +f 165/306/71 164/307/71 163/294/71 +f 159/298/71 157/300/71 163/294/71 +f 157/300/71 155/292/71 163/294/71 +f 167/293/71 165/306/71 163/294/71 +s 1 +f 167/308/72 169/309/73 170/310/72 +f 161/311/74 175/312/75 176/313/74 +f 183/314/76 155/315/77 182/316/77 +f 159/317/78 177/318/79 178/319/78 +f 153/320/80 183/314/76 184/321/80 +f 165/322/81 171/323/82 172/324/81 +f 177/318/79 161/325/74 176/326/74 +f 155/327/77 181/328/83 182/316/77 +f 174/329/84 164/330/85 173/331/85 +f 157/332/86 179/333/87 180/334/86 +f 179/333/87 159/335/78 178/319/78 +f 173/331/85 165/336/81 172/324/81 +f 169/309/73 153/337/80 184/321/80 +f 166/338/82 170/310/72 171/323/82 +f 175/312/75 163/339/84 174/329/84 +f 181/328/83 157/340/86 180/334/86 +f 171/323/88 188/341/89 172/324/89 +f 173/331/90 190/342/91 174/329/91 +f 176/326/92 193/343/93 177/318/93 +f 179/333/94 196/344/95 180/334/95 +f 181/328/96 198/345/97 182/316/97 +f 178/319/98 195/346/94 179/333/94 +f 169/309/99 186/347/100 170/310/100 +f 172/324/89 189/348/90 173/331/90 +f 175/312/101 192/349/92 176/313/92 +f 184/321/102 185/350/99 169/309/99 +f 182/316/97 199/351/103 183/314/103 +f 170/310/100 187/352/88 171/323/88 +f 177/318/93 194/353/98 178/319/98 +f 180/334/95 197/354/96 181/328/96 +f 183/314/103 200/355/102 184/321/102 +f 174/329/91 191/356/101 175/312/101 +f 191/356/104 208/357/105 192/349/106 +f 199/351/107 216/358/108 200/355/109 +f 195/346/110 210/359/111 211/360/112 +f 187/352/113 204/361/114 188/341/115 +f 185/350/116 216/362/108 201/363/117 +f 187/352/113 202/364/118 203/365/119 +f 193/343/120 210/366/111 194/353/121 +f 191/356/104 206/367/122 207/368/123 +f 193/343/120 208/369/105 209/370/124 +f 189/348/125 206/371/122 190/342/126 +f 197/354/127 214/372/128 198/345/129 +f 185/350/116 202/373/118 186/347/130 +f 188/341/115 205/374/131 189/348/125 +f 196/344/132 213/375/133 197/354/127 +f 199/351/107 214/376/128 215/377/134 +f 195/346/110 212/378/135 196/344/132 +f 212/379/135 217/380/136 213/375/133 +f 214/376/128 217/381/136 215/377/134 +f 207/382/123 217/383/136 208/357/105 +f 215/384/134 217/385/136 216/358/108 +f 210/359/111 217/386/136 211/360/112 +f 203/387/119 217/388/136 204/361/114 +f 216/362/108 217/389/136 201/363/117 +f 202/364/118 217/390/136 203/365/119 +f 209/391/124 217/392/136 210/366/111 +f 206/367/122 217/393/136 207/368/123 +f 208/369/105 217/394/136 209/370/124 +f 205/395/131 217/396/136 206/371/122 +f 213/397/133 217/398/136 214/372/128 +f 201/399/117 217/400/136 202/373/118 +f 204/401/114 217/402/136 205/374/131 +f 211/403/112 217/404/136 212/378/135 +f 167/308/72 168/405/73 169/309/73 +f 161/311/74 162/406/75 175/312/75 +f 183/314/76 154/407/76 155/315/77 +f 159/317/78 160/408/79 177/318/79 +f 153/320/80 154/409/76 183/314/76 +f 165/322/81 166/410/82 171/323/82 +f 177/318/79 160/411/79 161/325/74 +f 155/327/77 156/412/83 181/328/83 +f 174/329/84 163/413/84 164/330/85 +f 157/332/86 158/414/87 179/333/87 +f 179/333/87 158/415/87 159/335/78 +f 173/331/85 164/416/85 165/336/81 +f 169/309/73 168/417/73 153/337/80 +f 166/338/82 167/418/72 170/310/72 +f 175/312/75 162/419/75 163/339/84 +f 181/328/83 156/420/83 157/340/86 +f 171/323/88 187/352/88 188/341/89 +f 173/331/90 189/348/90 190/342/91 +f 176/326/92 192/421/92 193/343/93 +f 179/333/94 195/346/94 196/344/95 +f 181/328/96 197/354/96 198/345/97 +f 178/319/98 194/353/98 195/346/94 +f 169/309/99 185/350/99 186/347/100 +f 172/324/89 188/341/89 189/348/90 +f 175/312/101 191/356/101 192/349/92 +f 184/321/102 200/355/102 185/350/99 +f 182/316/97 198/345/97 199/351/103 +f 170/310/100 186/347/100 187/352/88 +f 177/318/93 193/343/93 194/353/98 +f 180/334/95 196/344/95 197/354/96 +f 183/314/103 199/351/103 200/355/102 +f 174/329/91 190/342/91 191/356/101 +f 191/356/104 207/382/123 208/357/105 +f 199/351/107 215/384/134 216/358/108 +f 195/346/110 194/353/121 210/359/111 +f 187/352/113 203/387/119 204/361/114 +f 185/350/116 200/355/109 216/362/108 +f 187/352/113 186/347/130 202/364/118 +f 193/343/120 209/391/124 210/366/111 +f 191/356/104 190/342/126 206/367/122 +f 193/343/120 192/421/106 208/369/105 +f 189/348/125 205/395/131 206/371/122 +f 197/354/127 213/397/133 214/372/128 +f 185/350/116 201/399/117 202/373/118 +f 188/341/115 204/401/114 205/374/131 +f 196/344/132 212/379/135 213/375/133 +f 199/351/107 198/345/129 214/376/128 +f 195/346/110 211/403/112 212/378/135 +o Barrel +v 0.000000 2.000000 8.000000 +v -0.382683 1.923880 8.000000 +v -0.707107 1.707107 8.000000 +v -0.923880 1.382683 8.000000 +v -1.000000 1.000000 8.000000 +v -0.923880 0.617316 8.000000 +v -0.707107 0.292893 8.000000 +v -0.382683 0.076120 8.000000 +v 0.000000 0.000000 8.000000 +v 0.382683 0.076120 8.000000 +v 0.707107 0.292893 8.000000 +v 0.923880 0.617316 8.000000 +v 1.000000 1.000000 8.000000 +v 0.923880 1.382684 8.000000 +v 0.707107 1.707107 8.000000 +v 0.382683 1.923880 8.000000 +v 0.000000 2.000000 0.500000 +v -0.382683 1.923880 0.500000 +v -0.707107 1.707107 0.500000 +v -0.923880 1.382683 0.500000 +v -1.000000 1.000000 0.500000 +v -0.923880 0.617316 0.500000 +v -0.707107 0.292893 0.500000 +v -0.382683 0.076120 0.500000 +v 0.000000 0.000000 0.500000 +v 0.382683 0.076120 0.500000 +v 0.707107 0.292893 0.500000 +v 0.923880 0.617316 0.500000 +v 1.000000 1.000000 0.500000 +v 0.923880 1.382684 0.500000 +v 0.707107 1.707107 0.500000 +v 0.382683 1.923880 0.500000 +v 0.287012 1.692910 0.500000 +v 0.530330 1.530330 0.500000 +v 0.692910 1.287013 0.500000 +v 0.750000 1.000000 0.500000 +v 0.692910 0.712987 0.500000 +v 0.530330 0.469670 0.500000 +v 0.287013 0.307090 0.500000 +v 0.000000 0.250000 0.500000 +v -0.287013 0.307090 0.500000 +v -0.530330 0.469670 0.500000 +v -0.692910 0.712987 0.500000 +v -0.750000 1.000000 0.500000 +v -0.692910 1.287013 0.500000 +v -0.530330 1.530330 0.500000 +v -0.287013 1.692910 0.500000 +v 0.000000 1.750000 0.500000 +v 0.000000 1.750000 8.000000 +v -0.287013 1.692910 8.000000 +v -0.530330 1.530330 8.000000 +v -0.692910 1.287013 8.000000 +v -0.750000 1.000000 8.000000 +v -0.692910 0.712987 8.000000 +v -0.530330 0.469670 8.000000 +v -0.287013 0.307090 8.000000 +v 0.000000 0.250000 8.000000 +v 0.287013 0.307090 8.000000 +v 0.530330 0.469670 8.000000 +v 0.692910 0.712987 8.000000 +v 0.750000 1.000000 8.000000 +v 0.692910 1.287013 8.000000 +v 0.530330 1.530330 8.000000 +v 0.287012 1.692910 8.000000 +vt 0.231343 0.468750 +vt 0.223881 0.507812 +vt 0.223881 0.468750 +vt 0.231343 0.093750 +vt 0.223881 0.046875 +vt 0.231343 0.046875 +vt 0.223881 0.421875 +vt 0.231343 0.421875 +vt 0.231343 -0.000000 +vt 0.223881 0.039062 +vt 0.223881 0.000000 +vt 0.223881 0.375000 +vt 0.231343 0.375000 +vt 0.231343 0.703125 +vt 0.223881 0.742188 +vt 0.223881 0.703125 +vt 0.223881 0.328125 +vt 0.231343 0.328125 +vt 0.231343 0.656250 +vt 0.223881 0.695312 +vt 0.223881 0.656250 +vt 0.223881 0.281250 +vt 0.231343 0.281250 +vt 0.231343 0.609375 +vt 0.223881 0.648438 +vt 0.223881 0.609375 +vt 0.223881 0.234375 +vt 0.231343 0.234375 +vt 0.231343 0.562500 +vt 0.223881 0.601562 +vt 0.223881 0.562500 +vt 0.231343 0.187500 +vt 0.223881 0.226562 +vt 0.223881 0.187500 +vt 0.223881 0.140625 +vt 0.231343 0.140625 +vt 0.223881 0.515625 +vt 0.231343 0.515625 +vt 0.223881 0.132812 +vt 0.223881 0.093750 +vt 0.223881 0.085938 +vt 0.223881 0.460938 +vt 0.223881 0.414062 +vt 0.231343 0.750000 +vt 0.223881 0.367188 +vt 0.223881 0.320312 +vt 0.223881 0.273438 +vt 0.223881 0.179688 +vt 0.223881 0.554688 +vt 0.000000 0.156250 +vt 0.223881 0.195312 +vt 0.000000 0.195312 +vt 0.000000 -0.000000 +vt 0.223881 0.039062 +vt 0.000000 0.039062 +vt 0.000000 0.507812 +vt 0.223881 0.546875 +vt 0.000000 0.546875 +vt 0.000000 0.351562 +vt 0.223881 0.390625 +vt 0.000000 0.390625 +vt 0.223881 0.234375 +vt 0.000000 0.234375 +vt 0.223881 0.078125 +vt 0.000000 0.078125 +vt 0.223881 0.585938 +vt 0.000000 0.585938 +vt 0.223881 0.429688 +vt 0.000000 0.429688 +vt 0.223881 0.273438 +vt 0.000000 0.273438 +vt 0.223881 0.117188 +vt 0.000000 0.117188 +vt 0.223881 0.625000 +vt 0.000000 0.625000 +vt 0.223881 0.468750 +vt 0.000000 0.468750 +vt 0.000000 0.312500 +vt 0.223881 0.351562 +vt 0.223881 0.507812 +vt 0.223881 0.156250 +vt 0.223881 0.312500 +vt 0.455224 0.046875 +vt 0.455224 0.468750 +vt 0.455224 0.093750 +vt 0.455224 0.515625 +vt 0.455224 0.140625 +vt 0.455224 0.562500 +vt 0.455224 0.187500 +vt 0.455224 0.609375 +vt 0.455224 0.234375 +vt 0.455224 0.656250 +vt 0.455224 0.281250 +vt 0.455224 0.703125 +vt 0.455224 0.375000 +vt 0.455224 0.328125 +vt 0.455224 -0.000000 +vt 0.455224 0.421875 +vt 0.223881 -0.000000 +vt 0.455224 0.750000 +vn 0.0000 0.0000 1.0000 +vn 1.0000 -0.0000 0.0000 +vn 0.9239 -0.3827 0.0000 +vn 0.0000 1.0000 0.0000 +vn 0.3827 0.9239 0.0000 +vn -0.9239 0.3827 0.0000 +vn -0.7071 0.7071 0.0000 +vn -0.3827 -0.9239 0.0000 +vn -0.7071 -0.7071 0.0000 +vn 0.7071 -0.7071 0.0000 +vn 0.7071 0.7071 0.0000 +vn -0.3827 0.9239 0.0000 +vn -0.9239 -0.3827 0.0000 +vn 0.3827 -0.9239 0.0000 +vn 0.9239 0.3827 0.0000 +vn -1.0000 -0.0000 0.0000 +vn 0.0000 -1.0000 0.0000 +s off +f 220/422/137 269/423/137 268/424/137 +f 228/425/137 275/426/137 227/427/137 +f 220/422/137 267/428/137 219/429/137 +f 226/430/137 275/431/137 274/432/137 +f 219/429/137 266/433/137 218/434/137 +f 225/435/137 274/436/137 273/437/137 +f 218/434/137 281/438/137 233/439/137 +f 224/440/137 273/441/137 272/442/137 +f 233/439/137 280/443/137 232/444/137 +f 223/445/137 272/446/137 271/447/137 +f 232/444/137 279/448/137 231/449/137 +f 222/450/137 271/451/137 270/452/137 +f 230/453/137 279/454/137 278/455/137 +f 230/453/137 277/456/137 229/457/137 +f 222/450/137 269/458/137 221/459/137 +f 228/425/137 277/460/137 276/461/137 +f 220/422/137 221/459/137 269/423/137 +f 228/425/137 276/462/137 275/426/137 +f 220/422/137 268/463/137 267/428/137 +f 226/430/137 227/427/137 275/431/137 +f 219/429/137 267/464/137 266/433/137 +f 225/435/137 226/465/137 274/436/137 +f 218/434/137 266/466/137 281/438/137 +f 224/440/137 225/435/137 273/441/137 +f 233/439/137 281/467/137 280/443/137 +f 223/445/137 224/440/137 272/446/137 +f 232/444/137 280/468/137 279/448/137 +f 222/450/137 223/445/137 271/451/137 +f 230/453/137 231/449/137 279/454/137 +f 230/453/137 278/469/137 277/456/137 +f 222/450/137 270/470/137 269/458/137 +f 228/425/137 229/457/137 277/460/137 +s 1 +f 270/471/138 262/472/139 269/473/139 +f 274/474/140 258/475/141 273/476/141 +f 277/477/142 255/478/143 276/479/143 +f 281/480/144 251/481/145 280/482/145 +f 269/473/139 263/483/146 268/484/146 +f 273/476/141 259/485/147 272/486/147 +f 276/479/143 256/487/148 275/488/148 +f 280/482/145 252/489/149 279/490/149 +f 268/484/146 264/491/150 267/492/150 +f 272/486/147 260/493/151 271/494/151 +f 275/488/148 257/495/140 274/496/140 +f 279/490/149 253/497/152 278/498/152 +f 266/499/153 250/500/144 281/480/144 +f 278/498/152 254/501/142 277/477/142 +f 271/494/151 261/502/138 270/471/138 +f 267/492/150 265/503/153 266/499/153 +f 243/504/150 228/425/146 227/427/150 +f 236/505/143 221/459/142 220/422/143 +f 244/506/146 229/457/139 228/425/146 +f 237/507/142 222/450/152 221/459/142 +f 245/508/139 230/453/138 229/457/139 +f 238/509/152 223/445/149 222/450/152 +f 246/510/138 231/449/151 230/453/138 +f 239/511/149 224/440/145 223/445/149 +f 247/512/151 232/444/147 231/449/151 +f 240/513/145 225/435/144 224/440/145 +f 248/514/147 233/439/141 232/444/147 +f 241/515/144 226/465/153 225/435/144 +f 234/516/140 219/429/148 218/434/140 +f 249/517/141 218/434/140 233/439/141 +f 242/518/153 227/427/150 226/430/153 +f 235/519/148 220/422/143 219/429/148 +f 270/471/138 261/502/138 262/472/139 +f 274/474/140 257/520/140 258/475/141 +f 277/477/142 254/501/142 255/478/143 +f 281/480/144 250/500/144 251/481/145 +f 269/473/139 262/472/139 263/483/146 +f 273/476/141 258/475/141 259/485/147 +f 276/479/143 255/478/143 256/487/148 +f 280/482/145 251/481/145 252/489/149 +f 268/484/146 263/483/146 264/491/150 +f 272/486/147 259/485/147 260/493/151 +f 275/488/148 256/487/148 257/495/140 +f 279/490/149 252/489/149 253/497/152 +f 266/499/153 265/503/153 250/500/144 +f 278/498/152 253/497/152 254/501/142 +f 271/494/151 260/493/151 261/502/138 +f 267/492/150 264/491/150 265/503/153 +f 243/504/150 244/506/146 228/425/146 +f 236/505/143 237/507/142 221/459/142 +f 244/506/146 245/508/139 229/457/139 +f 237/507/142 238/509/152 222/450/152 +f 245/508/139 246/510/138 230/453/138 +f 238/509/152 239/511/149 223/445/149 +f 246/510/138 247/512/151 231/449/151 +f 239/511/149 240/513/145 224/440/145 +f 247/512/151 248/514/147 232/444/147 +f 240/513/145 241/515/144 225/435/144 +f 248/514/147 249/517/141 233/439/141 +f 241/515/144 242/521/153 226/465/153 +f 234/516/140 235/519/148 219/429/148 +f 249/517/141 234/516/140 218/434/140 +f 242/518/153 243/504/150 227/427/150 +f 235/519/148 236/505/143 220/422/143 +o Cannon v 0.000000 2.000000 0.500000 v -0.382683 1.923880 0.500000 v -0.707107 1.707107 0.500000 @@ -81,22 +1524,6 @@ v 1.000000 1.000000 -4.000000 v 0.923880 1.382684 -4.000000 v 0.707107 1.707107 -4.000000 v 0.382683 1.923880 -4.000000 -v 0.382683 1.923880 -4.500000 -v 0.707107 1.707107 -4.500000 -v 0.923880 1.382684 -4.500000 -v 1.000000 1.000000 -4.500000 -v 0.923880 0.617316 -4.500000 -v 0.707107 0.292893 -4.500000 -v 0.382683 0.076120 -4.500000 -v 0.000000 0.000000 -4.500000 -v -0.382683 0.076120 -4.500000 -v -0.707107 0.292893 -4.500000 -v -0.923880 0.617316 -4.500000 -v -1.000000 1.000000 -4.500000 -v -0.923880 1.382683 -4.500000 -v -0.707107 1.707107 -4.500000 -v -0.382683 1.923880 -4.500000 -v 0.000000 2.000000 -4.500000 v 0.000000 2.000000 -3.500000 v -0.382683 1.923880 -3.500000 v -0.707107 1.707107 -3.500000 @@ -113,158 +1540,6 @@ v 1.000000 1.000000 -3.500000 v 0.923880 1.382684 -3.500000 v 0.707107 1.707107 -3.500000 v 0.382683 1.923880 -3.500000 -v -0.500000 0.000000 -6.000000 -v 0.500000 0.000000 -6.000000 -v -0.500000 0.000000 -7.000000 -v 0.500000 0.000000 -7.000000 -v -0.500000 -0.250000 -7.250000 -v 0.500000 -0.250000 -7.250000 -v -0.500000 -0.250000 -5.750000 -v 0.500000 -0.250000 -5.750000 -v 0.250000 0.125000 -7.187500 -v -0.250000 0.125000 -7.187500 -v 0.250000 0.125000 -5.812500 -v -0.250000 0.125000 -5.812500 -v -0.500000 -0.250000 -5.625000 -v 0.500000 -0.250000 -5.625000 -v -0.500000 0.125000 -5.625000 -v 0.500000 0.125000 -5.625000 -v 0.500000 -0.250000 -7.375000 -v -0.500000 -0.250000 -7.375000 -v 0.500000 0.125000 -7.375000 -v -0.500000 0.125000 -7.375000 -v 0.250000 0.375000 -5.812500 -v 0.250000 0.375000 -7.187500 -v -0.250000 0.375000 -7.187500 -v -0.250000 0.375000 -5.812500 -v 1.250000 0.750000 -4.375000 -v -1.250000 0.750000 -4.375000 -v 1.250000 1.250000 -4.375000 -v -1.250000 1.250000 -4.375000 -v -1.250000 1.250000 -4.125000 -v 1.250000 1.250000 -4.125000 -v -1.250000 0.750000 -4.125000 -v 1.250000 0.750000 -4.125000 -v 0.250000 2.250000 -4.125000 -v 0.250000 -0.250000 -4.125000 -v -0.250000 2.250000 -4.125000 -v -0.250000 -0.250000 -4.125000 -v -0.250000 -0.250000 -4.375000 -v -0.250000 2.250000 -4.375000 -v 0.250000 -0.250000 -4.375000 -v 0.250000 2.250000 -4.375000 -v -0.707107 2.060660 -4.125000 -v 1.060660 0.292893 -4.125000 -v -1.060660 1.707107 -4.125000 -v 0.707107 -0.060660 -4.125000 -v 0.707107 -0.060660 -4.375000 -v -1.060660 1.707107 -4.375000 -v 1.060660 0.292893 -4.375000 -v -0.707107 2.060660 -4.375000 -v 1.060660 1.707107 -4.375000 -v -0.707107 -0.060660 -4.375000 -v 0.707107 2.060660 -4.375000 -v -1.060660 0.292893 -4.375000 -v -1.060660 0.292893 -4.125000 -v 0.707107 2.060660 -4.125000 -v -0.707107 -0.060660 -4.125000 -v 1.060660 1.707107 -4.125000 -v 0.000000 2.000000 -4.500000 -v -0.382683 1.923880 -4.500000 -v -0.707107 1.707107 -4.500000 -v -0.923880 1.382683 -4.500000 -v -1.000000 1.000000 -4.500000 -v -0.923880 0.617316 -4.500000 -v -0.707107 0.292893 -4.500000 -v -0.382683 0.076120 -4.500000 -v 0.000000 0.000000 -4.500000 -v 0.382683 0.076120 -4.500000 -v 0.707107 0.292893 -4.500000 -v 0.923880 0.617316 -4.500000 -v 1.000000 1.000000 -4.500000 -v 0.923880 1.382684 -4.500000 -v 0.707107 1.707107 -4.500000 -v 0.382683 1.923880 -4.500000 -v 0.000000 1.750000 -5.500000 -v -0.287013 1.692910 -5.500000 -v -0.530330 1.530330 -5.500000 -v -0.692910 1.287013 -5.500000 -v -0.750000 1.000000 -5.500000 -v -0.692910 0.712987 -5.500000 -v -0.530330 0.469670 -5.500000 -v -0.287013 0.307090 -5.500000 -v 0.000000 0.250000 -5.500000 -v 0.287013 0.307090 -5.500000 -v 0.530330 0.469670 -5.500000 -v 0.692910 0.712987 -5.500000 -v 0.750000 1.000000 -5.500000 -v 0.692910 1.287013 -5.500000 -v 0.530330 1.530330 -5.500000 -v 0.287012 1.692910 -5.500000 -v 0.000000 1.750000 -7.500000 -v -0.287013 1.692910 -7.500000 -v -0.530330 1.530330 -7.500000 -v -0.692910 1.287013 -7.500000 -v -0.750000 1.000000 -7.500000 -v -0.692910 0.712987 -7.500000 -v -0.530330 0.469670 -7.500000 -v -0.287013 0.307090 -7.500000 -v 0.000000 0.250000 -7.500000 -v 0.287013 0.307090 -7.500000 -v 0.530330 0.469670 -7.500000 -v 0.692910 0.712987 -7.500000 -v 0.750000 1.000000 -7.500000 -v 0.692910 1.287013 -7.500000 -v 0.530330 1.530330 -7.500000 -v 0.287012 1.692910 -7.500000 -v 0.000000 1.500000 -8.000000 -v -0.191342 1.461940 -8.000000 -v -0.353553 1.353553 -8.000000 -v -0.461940 1.191342 -8.000000 -v -0.500000 1.000000 -8.000000 -v -0.461940 0.808658 -8.000000 -v -0.353553 0.646447 -8.000000 -v -0.191342 0.538060 -8.000000 -v 0.000000 0.500000 -8.000000 -v 0.191341 0.538060 -8.000000 -v 0.353553 0.646446 -8.000000 -v 0.461940 0.808658 -8.000000 -v 0.500000 1.000000 -8.000000 -v 0.461940 1.191342 -8.000000 -v 0.353553 1.353554 -8.000000 -v 0.191341 1.461940 -8.000000 -v 0.000000 2.000000 -3.500000 -v -0.382683 1.923880 -3.500000 -v -0.707107 1.707107 -3.500000 -v -0.923880 1.382683 -3.500000 -v -1.000000 1.000000 -3.500000 -v -0.923880 0.617316 -3.500000 -v -0.707107 0.292893 -3.500000 -v -0.382683 0.076120 -3.500000 -v 0.000000 0.000000 -3.500000 -v 0.382683 0.076120 -3.500000 -v 0.707107 0.292893 -3.500000 -v 0.923880 0.617316 -3.500000 -v 1.000000 1.000000 -3.500000 -v 0.923880 1.382684 -3.500000 -v 0.707107 1.707107 -3.500000 -v 0.382683 1.923880 -3.500000 -v 0.000000 1.562500 -3.500000 -v -0.215260 1.519682 -3.500000 -v -0.397748 1.397748 -3.500000 -v -0.519682 1.215260 -3.500000 -v -0.562500 1.000000 -3.500000 -v -0.519682 0.784740 -3.500000 -v -0.397748 0.602252 -3.500000 -v -0.215260 0.480318 -3.500000 -v 0.000000 0.437500 -3.500000 -v 0.215260 0.480318 -3.500000 -v 0.397747 0.602252 -3.500000 -v 0.519682 0.784740 -3.500000 -v 0.562500 1.000000 -3.500000 -v 0.519682 1.215260 -3.500000 -v 0.397747 1.397748 -3.500000 -v 0.215259 1.519682 -3.500000 v -0.250000 -0.375000 -2.000000 v 0.250000 -0.375000 -2.000000 v -0.250000 -0.375000 -3.000000 @@ -393,70 +1668,6 @@ v 1.375000 1.500000 -2.687500 v 1.375000 0.500000 -2.687500 v 2.625000 1.500000 -2.687500 v 2.625000 0.500000 -2.687500 -v 0.287012 1.692909 -3.250000 -v 0.530330 1.530331 -3.250000 -v 0.692910 1.287012 -3.250000 -v 0.750000 1.000000 -3.250000 -v 0.692910 0.712988 -3.250000 -v 0.530330 0.469669 -3.250000 -v 0.287013 0.307091 -3.250000 -v 0.000000 0.250000 -3.250000 -v -0.287013 0.307091 -3.250000 -v -0.530330 0.469669 -3.250000 -v -0.692910 0.712988 -3.250000 -v -0.750000 1.000000 -3.250000 -v -0.692910 1.287012 -3.250000 -v -0.530330 1.530331 -3.250000 -v -0.287013 1.692909 -3.250000 -v 0.000000 1.750000 -3.250000 -v 0.000000 2.000000 8.000000 -v -0.382683 1.923880 8.000000 -v -0.707107 1.707107 8.000000 -v -0.923880 1.382683 8.000000 -v -1.000000 1.000000 8.000000 -v -0.923880 0.617316 8.000000 -v -0.707107 0.292893 8.000000 -v -0.382683 0.076120 8.000000 -v 0.000000 0.000000 8.000000 -v 0.382683 0.076120 8.000000 -v 0.707107 0.292893 8.000000 -v 0.923880 0.617316 8.000000 -v 1.000000 1.000000 8.000000 -v 0.923880 1.382684 8.000000 -v 0.707107 1.707107 8.000000 -v 0.382683 1.923880 8.000000 -v 0.000000 2.000000 0.500000 -v -0.382683 1.923880 0.500000 -v -0.707107 1.707107 0.500000 -v -0.923880 1.382683 0.500000 -v -1.000000 1.000000 0.500000 -v -0.923880 0.617316 0.500000 -v -0.707107 0.292893 0.500000 -v -0.382683 0.076120 0.500000 -v 0.000000 0.000000 0.500000 -v 0.382683 0.076120 0.500000 -v 0.707107 0.292893 0.500000 -v 0.923880 0.617316 0.500000 -v 1.000000 1.000000 0.500000 -v 0.923880 1.382684 0.500000 -v 0.707107 1.707107 0.500000 -v 0.382683 1.923880 0.500000 -v 0.287012 1.692910 0.500000 -v 0.530330 1.530330 0.500000 -v 0.692910 1.287013 0.500000 -v 0.750000 1.000000 0.500000 -v 0.692910 0.712987 0.500000 -v 0.530330 0.469670 0.500000 -v 0.287013 0.307090 0.500000 -v 0.000000 0.250000 0.500000 -v -0.287013 0.307090 0.500000 -v -0.530330 0.469670 0.500000 -v -0.692910 0.712987 0.500000 -v -0.750000 1.000000 0.500000 -v -0.692910 1.287013 0.500000 -v -0.530330 1.530330 0.500000 -v -0.287013 1.692910 0.500000 -v 0.000000 1.750000 0.500000 v 1.500000 1.375000 -1.250000 v 1.500000 0.625000 -1.250000 v 1.500000 1.375000 -2.250000 @@ -585,22 +1796,6 @@ v 0.000000 2.312500 -2.000000 v 0.478354 2.154849 -2.000000 v 0.883883 1.883883 -2.000000 v 0.000000 2.312500 -1.875000 -v 0.000000 1.750000 8.000000 -v -0.287013 1.692910 8.000000 -v -0.530330 1.530330 8.000000 -v -0.692910 1.287013 8.000000 -v -0.750000 1.000000 8.000000 -v -0.692910 0.712987 8.000000 -v -0.530330 0.469670 8.000000 -v -0.287013 0.307090 8.000000 -v 0.000000 0.250000 8.000000 -v 0.287013 0.307090 8.000000 -v 0.530330 0.469670 8.000000 -v 0.692910 0.712987 8.000000 -v 0.750000 1.000000 8.000000 -v 0.692910 1.287013 8.000000 -v 0.530330 1.530330 8.000000 -v 0.287012 1.692910 8.000000 v 0.000000 1.750000 -3.500000 v -0.287013 1.692910 -3.500000 v -0.530330 1.530330 -3.500000 @@ -617,39 +1812,6 @@ v 0.750000 1.000000 -3.500000 v 0.692910 1.287013 -3.500000 v 0.530330 1.530330 -3.500000 v 0.287012 1.692910 -3.500000 -v 0.287012 1.692909 -1.000000 -v 0.530330 1.530331 -1.000000 -v 0.692910 1.287012 -1.000000 -v 0.750000 1.000000 -1.000000 -v 0.692910 0.712988 -1.000000 -v 0.530330 0.469669 -1.000000 -v 0.287013 0.307091 -1.000000 -v 0.000000 0.250000 -1.000000 -v -0.287013 0.307091 -1.000000 -v -0.530330 0.469669 -1.000000 -v -0.692910 0.712988 -1.000000 -v -0.750000 1.000000 -1.000000 -v -0.692910 1.287012 -1.000000 -v -0.530330 1.530331 -1.000000 -v -0.287013 1.692909 -1.000000 -v 0.000000 1.750000 -1.000000 -v 0.179382 1.433068 0.000000 -v 0.331456 1.331457 0.000000 -v 0.433069 1.179382 0.000000 -v 0.468750 1.000000 0.000000 -v 0.433069 0.820618 0.000000 -v 0.331456 0.668543 0.000000 -v 0.179383 0.566932 0.000000 -v 0.000000 0.531250 0.000000 -v -0.179383 0.566932 0.000000 -v -0.331456 0.668543 0.000000 -v -0.433069 0.820618 0.000000 -v -0.468750 1.000000 0.000000 -v -0.433069 1.179382 0.000000 -v -0.331456 1.331457 0.000000 -v -0.179383 1.433068 0.000000 -v 0.000000 1.468750 0.000000 -v 0.000000 1.000000 0.500000 vt 0.455224 0.320312 vt 0.462687 0.375000 vt 0.455224 0.367188 @@ -727,96 +1889,6 @@ vt 0.597015 0.125000 vt 0.604478 0.179688 vt 0.597015 0.187500 vt 0.604478 0.195312 -vt 0.668136 0.865446 -vt 0.629147 0.797819 -vt 0.645297 0.634554 -vt 0.705005 0.634623 -vt 0.743971 0.702209 -vt 0.727831 0.865378 -vt 0.085821 0.796875 -vt 0.115672 0.671875 -vt 0.115672 0.796875 -vt 0.078358 0.796875 -vt 0.085821 0.671875 -vt 0.123134 0.671875 -vt 0.022388 0.656250 -vt 0.063433 0.671875 -vt 0.011194 0.671875 -vt 0.011194 0.796875 -vt 0.014925 0.843750 -vt 0.022388 0.812500 -vt 0.078358 0.625000 -vt 0.063433 0.656250 -vt 0.063433 0.625000 -vt 0.000000 0.796875 -vt 0.000000 0.671875 -vt 0.126866 0.796875 -vt 0.123134 0.796875 -vt 0.175373 0.625000 -vt 0.134328 0.656250 -vt 0.134328 0.625000 -vt 0.119403 0.625000 -vt 0.078358 0.656250 -vt 0.063433 0.796875 -vt 0.074627 0.671875 -vt 0.074627 0.796875 -vt 0.078358 0.671875 -vt 0.119403 0.656250 -vt 0.126866 0.765625 -vt 0.134328 0.828125 -vt 0.126866 0.828125 -vt 0.216418 0.828125 -vt 0.208955 0.765625 -vt 0.216418 0.765625 -vt 0.134328 0.671875 -vt 0.208955 0.734375 -vt 0.134328 0.734375 -vt 0.208955 0.765625 -vt 0.134328 0.828125 -vt 0.134328 0.765625 -vt 0.134328 0.859375 -vt 0.208955 0.828125 -vt 0.208955 0.859375 -vt 0.216418 0.828125 -vt 0.216418 0.765625 -vt 0.126866 0.765625 -vt 0.126866 0.828125 -vt 0.134328 0.859375 -vt 0.208955 0.828125 -vt 0.208955 0.859375 -vt 0.208955 0.734375 -vt 0.134328 0.765625 -vt 0.134328 0.734375 -vt 0.134328 0.671875 -vt 0.126866 0.765625 -vt 0.134328 0.828125 -vt 0.126866 0.828125 -vt 0.216418 0.828125 -vt 0.208955 0.765625 -vt 0.216418 0.765625 -vt 0.134328 0.859375 -vt 0.208955 0.828125 -vt 0.208955 0.859375 -vt 0.208955 0.734375 -vt 0.134328 0.765625 -vt 0.134328 0.734375 -vt 0.134328 0.671875 -vt 0.134328 0.671875 -vt 0.208955 0.734375 -vt 0.134328 0.734375 -vt 0.134328 0.765625 -vt 0.208955 0.828125 -vt 0.134328 0.828125 -vt 0.134328 0.859375 -vt 0.208955 0.859375 -vt 0.216418 0.828125 -vt 0.208955 0.765625 -vt 0.216418 0.765625 -vt 0.126866 0.765625 -vt 0.126866 0.828125 -vt 0.810345 0.643319 -vt 0.831446 0.643319 -vt 0.831446 0.731681 vt 0.626866 0.421875 vt 0.619403 0.468750 vt 0.619403 0.421875 @@ -969,46 +2041,6 @@ vt 0.871269 0.812500 vt 0.865672 0.929688 vt 0.865672 0.820312 vt 0.794776 0.914062 -vt 0.231343 0.468750 -vt 0.223881 0.507812 -vt 0.223881 0.468750 -vt 0.231343 0.093750 -vt 0.223881 0.046875 -vt 0.231343 0.046875 -vt 0.223881 0.421875 -vt 0.231343 0.421875 -vt 0.231343 -0.000000 -vt 0.223881 0.039062 -vt 0.223881 0.000000 -vt 0.223881 0.375000 -vt 0.231343 0.375000 -vt 0.231343 0.703125 -vt 0.223881 0.742188 -vt 0.223881 0.703125 -vt 0.223881 0.328125 -vt 0.231343 0.328125 -vt 0.231343 0.656250 -vt 0.223881 0.695312 -vt 0.223881 0.656250 -vt 0.223881 0.281250 -vt 0.231343 0.281250 -vt 0.231343 0.609375 -vt 0.223881 0.648438 -vt 0.223881 0.609375 -vt 0.223881 0.234375 -vt 0.231343 0.234375 -vt 0.231343 0.562500 -vt 0.223881 0.601562 -vt 0.223881 0.562500 -vt 0.231343 0.187500 -vt 0.223881 0.226562 -vt 0.223881 0.187500 -vt 0.223881 0.140625 -vt 0.231343 0.140625 -vt 0.223881 0.515625 -vt 0.231343 0.515625 -vt 0.223881 0.132812 -vt 0.223881 0.093750 vt 0.313433 0.796875 vt 0.343284 0.890625 vt 0.313433 0.890625 @@ -1104,14 +2136,6 @@ vt 0.044776 0.875000 vt 0.074627 0.843750 vt 0.059701 0.851562 vt 0.059701 0.843750 -vt 0.014925 0.625000 -vt 0.059701 0.625000 -vt 0.063433 0.625000 -vt 0.059701 0.843750 -vt 0.052239 0.812500 -vt 0.864481 0.745016 -vt 0.840742 0.745016 -vt 0.840743 0.645609 vt 0.044776 0.851562 vt 0.029851 0.843750 vt 0.044776 0.843750 @@ -1144,53 +2168,6 @@ vt 0.604478 0.054688 vt 0.604478 0.117188 vt 0.604478 0.132812 vt 0.604478 0.242188 -vt 0.656716 0.874957 -vt 0.645297 0.865445 -vt 0.635616 0.838358 -vt 0.626876 0.750000 -vt 0.629147 0.702181 -vt 0.635616 0.661642 -vt 0.656716 0.625043 -vt 0.668136 0.634554 -vt 0.677817 0.661642 -vt 0.684285 0.702181 -vt 0.686557 0.750000 -vt 0.684285 0.797819 -vt 0.677817 0.838358 -vt 0.716418 0.874884 -vt 0.705005 0.865378 -vt 0.695330 0.838306 -vt 0.688865 0.797791 -vt 0.686595 0.750000 -vt 0.688865 0.702209 -vt 0.695330 0.661694 -vt 0.716418 0.625117 -vt 0.727831 0.634623 -vt 0.737506 0.661694 -vt 0.746241 0.750000 -vt 0.743971 0.797791 -vt 0.737506 0.838306 -vt 0.052239 0.656250 -vt 0.011194 0.843750 -vt 0.126866 0.671875 -vt 0.175373 0.656250 -vt 0.208955 0.671875 -vt 0.208955 0.671875 -vt 0.208955 0.671875 -vt 0.208955 0.671875 -vt 0.826605 0.745225 -vt 0.820895 0.749981 -vt 0.815185 0.745225 -vt 0.810345 0.731681 -vt 0.807110 0.711411 -vt 0.805975 0.687500 -vt 0.807110 0.663589 -vt 0.815185 0.629775 -vt 0.820895 0.625019 -vt 0.826605 0.629775 -vt 0.834680 0.663589 -vt 0.835816 0.687500 -vt 0.834680 0.711411 vt 0.626866 0.460938 vt 0.626866 0.328125 vt 0.626866 0.273438 @@ -1239,15 +2216,6 @@ vt 0.152985 0.882812 vt 0.792910 0.953125 vt 0.828358 0.835938 vt 0.828358 0.914062 -vt 0.223881 0.085938 -vt 0.223881 0.460938 -vt 0.223881 0.414062 -vt 0.231343 0.750000 -vt 0.223881 0.367188 -vt 0.223881 0.320312 -vt 0.223881 0.273438 -vt 0.223881 0.179688 -vt 0.223881 0.554688 vt 0.354478 0.796875 vt 0.302239 0.890625 vt 0.313433 0.750000 @@ -1284,175 +2252,7 @@ vt 0.059701 0.875000 vt 0.059701 0.875000 vt 0.014925 0.851562 vt 0.074627 0.851562 -vt 0.011194 0.625000 -vt 0.063433 0.843750 -vt 0.846188 0.630372 -vt 0.852612 0.625022 -vt 0.859036 0.630372 -vt 0.864481 0.645610 -vt 0.868120 0.668414 -vt 0.869398 0.695313 -vt 0.868120 0.722212 -vt 0.859036 0.760253 -vt 0.852612 0.765604 -vt 0.846188 0.760253 -vt 0.837104 0.722212 -vt 0.835826 0.695313 -vt 0.837104 0.668414 vt 0.014925 0.851562 -vt 0.000000 0.156250 -vt 0.223881 0.195312 -vt 0.000000 0.195312 -vt 0.000000 -0.000000 -vt 0.223881 0.039062 -vt 0.000000 0.039062 -vt 0.000000 0.507812 -vt 0.223881 0.546875 -vt 0.000000 0.546875 -vt 0.000000 0.351562 -vt 0.223881 0.390625 -vt 0.000000 0.390625 -vt 0.223881 0.234375 -vt 0.000000 0.234375 -vt 0.223881 0.078125 -vt 0.000000 0.078125 -vt 0.223881 0.585938 -vt 0.000000 0.585938 -vt 0.223881 0.429688 -vt 0.000000 0.429688 -vt 0.223881 0.273438 -vt 0.000000 0.273438 -vt 0.223881 0.117188 -vt 0.000000 0.117188 -vt 0.223881 0.625000 -vt 0.000000 0.625000 -vt 0.223881 0.468750 -vt 0.000000 0.468750 -vt 0.000000 0.312500 -vt 0.223881 0.351562 -vt 0.223881 0.507812 -vt 0.223881 0.156250 -vt 0.223881 0.312500 -vt 0.776119 0.562500 -vt 0.746269 0.515625 -vt 0.776119 0.515625 -vt 0.776119 0.187500 -vt 0.746269 0.140625 -vt 0.776119 0.140625 -vt 0.776119 0.609375 -vt 0.746269 0.562500 -vt 0.776119 0.234375 -vt 0.746269 0.187500 -vt 0.776119 0.656250 -vt 0.746269 0.609375 -vt 0.776119 0.281250 -vt 0.746269 0.234375 -vt 0.776119 0.703125 -vt 0.746269 0.656250 -vt 0.776119 0.328125 -vt 0.746269 0.281250 -vt 0.776119 0.750000 -vt 0.746269 0.703125 -vt 0.776119 0.421875 -vt 0.746269 0.375000 -vt 0.776119 0.375000 -vt 0.746269 0.328125 -vt 0.776119 0.046875 -vt 0.746269 -0.000000 -vt 0.776119 -0.000000 -vt 0.776119 0.468750 -vt 0.746269 0.421875 -vt 0.776119 0.093750 -vt 0.746269 0.046875 -vt 0.746269 0.468750 -vt 0.746269 0.093750 -vt 0.776119 0.281250 -vt 0.805970 0.234375 -vt 0.805970 0.273438 -vt 0.776119 0.656250 -vt 0.805970 0.695312 -vt 0.776119 0.703125 -vt 0.805970 0.320312 -vt 0.776119 0.328125 -vt 0.805970 0.742188 -vt 0.776119 0.750000 -vt 0.776119 0.421875 -vt 0.805970 0.375000 -vt 0.805970 0.414062 -vt 0.805970 0.367188 -vt 0.776119 0.375000 -vt 0.776119 0.046875 -vt 0.805970 -0.000000 -vt 0.805970 0.039062 -vt 0.776119 0.468750 -vt 0.805970 0.421875 -vt 0.805970 0.460938 -vt 0.805970 0.085938 -vt 0.776119 0.093750 -vt 0.776119 0.515625 -vt 0.805970 0.468750 -vt 0.805970 0.507812 -vt 0.805970 0.132812 -vt 0.776119 0.140625 -vt 0.805970 0.554688 -vt 0.776119 0.562500 -vt 0.805970 0.179688 -vt 0.776119 0.187500 -vt 0.776119 0.609375 -vt 0.805970 0.562500 -vt 0.805970 0.601562 -vt 0.776119 0.234375 -vt 0.805970 0.187500 -vt 0.805970 0.226562 -vt 0.805970 0.648438 -vt 0.805970 0.117188 -vt 0.865672 0.156250 -vt 0.805970 0.156250 -vt 0.805970 0.468750 -vt 0.865672 0.507812 -vt 0.805970 0.507812 -vt 0.865672 0.195312 -vt 0.805970 0.195312 -vt 0.865672 0.546875 -vt 0.805970 0.546875 -vt 0.865672 0.234375 -vt 0.805970 0.234375 -vt 0.865672 0.585938 -vt 0.805970 0.585938 -vt 0.865672 0.273438 -vt 0.805970 0.273438 -vt 0.865672 0.625000 -vt 0.805970 0.625000 -vt 0.805970 0.312500 -vt 0.865672 0.351562 -vt 0.805970 0.351562 -vt 0.865672 0.312500 -vt 0.865672 0.039062 -vt 0.865672 0.390625 -vt 0.805970 0.390625 -vt 0.865672 0.078125 -vt 0.805970 0.078125 -vt 0.865672 0.429688 -vt 0.805970 0.429688 -vt 0.865672 0.117188 -vt 0.865672 0.468750 -vt 0.880597 0.203125 -vt 0.880597 0.242188 -vt 0.880597 0.281250 -vt 0.880597 0.320312 -vt 0.880597 0.359375 -vt 0.880597 0.421875 -vt 0.880597 0.437500 -vt 0.880597 0.500000 -vt 0.880597 0.515625 -vt 0.880597 0.578125 -vt 0.880597 0.593750 -vt 0.865672 -0.000000 -vt 0.880597 0.031250 -vt 0.880597 0.070312 -vt 0.880597 0.085938 -vt 0.880597 0.125000 -vt 0.880597 0.187500 vt 0.604478 0.000000 vt 0.604478 0.046875 vt 0.604478 0.421875 @@ -1470,39 +2270,6 @@ vt 0.604478 0.703125 vt 0.604478 0.328125 vt 0.604478 0.750000 vt 0.604478 0.375000 -vt 1.000000 0.242188 -vt 0.992537 0.273438 -vt 0.992537 0.234375 -vt 1.000000 0.007812 -vt 0.992537 0.039062 -vt 0.992537 0.000000 -vt 0.992537 0.351562 -vt 1.000000 0.382812 -vt 0.992537 0.390625 -vt 1.000000 0.554688 -vt 0.992537 0.585938 -vt 0.992537 0.546875 -vt 1.000000 0.320312 -vt 0.992537 0.312500 -vt 1.000000 0.164062 -vt 0.992537 0.195312 -vt 0.992537 0.156250 -vt 1.000000 0.617188 -vt 0.992537 0.625000 -vt 1.000000 0.398438 -vt 0.992537 0.429688 -vt 0.992537 0.078125 -vt 1.000000 0.109375 -vt 0.992537 0.117188 -vt 1.000000 0.476562 -vt 0.992537 0.507812 -vt 0.992537 0.468750 -vt 1.000000 0.539062 -vt 1.000000 0.148438 -vt 1.000000 0.304688 -vt 1.000000 0.203125 -vt 1.000000 0.070312 -vt 1.000000 0.460938 vt 0.746269 0.773438 vt 0.753731 0.765625 vt 0.753731 0.773438 @@ -1544,22 +2311,6 @@ vt 0.789179 0.781250 vt 0.789179 0.796875 vt 0.789179 0.843750 vt 0.789179 0.875000 -vt 0.455224 0.046875 -vt 0.455224 0.468750 -vt 0.455224 0.093750 -vt 0.455224 0.515625 -vt 0.455224 0.140625 -vt 0.455224 0.562500 -vt 0.455224 0.187500 -vt 0.455224 0.609375 -vt 0.455224 0.234375 -vt 0.455224 0.656250 -vt 0.455224 0.281250 -vt 0.455224 0.703125 -vt 0.455224 0.375000 -vt 0.455224 0.328125 -vt 0.455224 -0.000000 -vt 0.455224 0.421875 vt 0.919776 0.695312 vt 0.919776 0.718750 vt 0.919776 0.671875 @@ -1627,117 +2378,8 @@ vt 0.746269 0.117188 vt 0.746269 0.507812 vt 0.746269 0.390625 vt 0.746269 0.585938 -vt 0.925373 0.156250 -vt 0.925373 0.078125 -vt 0.925373 0.585938 -vt 0.925373 0.468750 -vt 0.925373 0.390625 -vt 0.925373 0.507812 -vt 0.925373 0.234375 -vt 0.925373 0.117188 -vt 0.925373 0.000000 -vt 0.925373 0.273438 -vt 0.925373 0.351562 -vt 0.925373 0.195312 -vt 0.925373 0.546875 -vt 0.925373 0.429688 -vt 0.925373 0.312500 -vt 0.925373 0.039062 -vt 0.895522 0.007812 -vt 0.895522 0.320312 -vt 0.895522 0.539062 -vt 0.895522 0.515625 -vt 0.895522 0.164062 -vt 0.895522 0.304688 -vt 0.895522 0.281250 -vt 0.895522 0.226562 -vt 0.895522 0.203125 -vt 0.895522 0.554688 -vt 0.895522 0.070312 -vt 0.895522 0.046875 -vt 0.895522 0.617188 -vt 0.895522 0.593750 -vt 0.895522 0.085938 -vt 0.895522 0.398438 -vt 0.895522 0.242188 -vt 0.895522 0.125000 -vt 0.895522 0.437500 -vt 0.895522 0.382812 -vt 0.895522 0.359375 -vt 0.895522 0.476562 -vt 0.895522 0.460938 -vt 0.880597 0.445312 -vt 0.880597 0.367188 -vt 0.895522 0.031250 -vt 0.880597 0.015625 -vt 0.895522 0.343750 -vt 0.880597 0.328125 -vt 0.880597 0.523438 -vt 0.895522 0.187500 -vt 0.880597 0.171875 -vt 0.880597 0.289062 -vt 0.880597 0.210938 -vt 0.895522 0.578125 -vt 0.880597 0.562500 -vt 0.880597 0.054688 -vt 0.880597 0.601562 -vt 0.895522 0.109375 -vt 0.880597 0.093750 -vt 0.895522 0.421875 -vt 0.880597 0.406250 -vt 0.895522 0.265625 -vt 0.880597 0.250000 -vt 0.895522 0.148438 -vt 0.880597 0.132812 -vt 0.895522 0.500000 -vt 0.880597 0.484375 -vt 0.223881 -0.000000 -vt 0.746269 0.750000 -vt 0.805970 0.656250 -vt 0.805970 0.281250 -vt 0.805970 0.703125 -vt 0.805970 0.328125 -vt 0.776119 -0.000000 -vt 0.805970 0.046875 -vt 0.805970 0.093750 -vt 0.805970 0.515625 -vt 0.805970 0.140625 -vt 0.805970 0.609375 -vt 0.880597 0.226562 -vt 0.880597 0.265625 -vt 0.880597 0.304688 -vt 0.880597 0.343750 -vt 0.880597 0.382812 -vt 0.880597 0.398438 -vt 0.880597 0.460938 -vt 0.880597 0.476562 -vt 0.880597 0.539062 -vt 0.880597 0.554688 -vt 0.880597 0.617188 -vt 0.880597 0.007812 -vt 0.880597 0.046875 -vt 0.880597 0.109375 -vt 0.880597 0.148438 -vt 0.880597 0.164062 -vt 1.000000 0.265625 -vt 1.000000 0.031250 -vt 1.000000 0.359375 -vt 1.000000 0.578125 -vt 1.000000 0.343750 -vt 1.000000 0.187500 -vt 1.000000 0.593750 -vt 1.000000 0.421875 -vt 1.000000 0.085938 -vt 1.000000 0.500000 -vt 1.000000 0.515625 -vt 1.000000 0.125000 -vt 1.000000 0.281250 -vt 1.000000 0.226562 -vt 1.000000 0.046875 -vt 1.000000 0.437500 vt 0.753731 0.750000 vt 0.789179 0.750000 -vt 0.455224 0.750000 vt 0.919776 0.796875 vt 0.869403 0.781250 vt 0.869403 0.640625 @@ -1748,21 +2390,14 @@ vt 0.869403 0.664062 vt 0.869403 0.710938 vt 0.869403 0.734375 vt 0.746269 0.000000 -vt 0.925373 0.625000 vn 0.0000 0.0000 1.0000 vn 0.0000 0.0000 -1.0000 vn 0.0000 -1.0000 0.0000 -vn 0.0000 -0.7071 0.7071 -vn 0.0000 -0.7071 -0.7071 vn 1.0000 0.0000 0.0000 -vn 0.0000 1.0000 0.0000 vn -1.0000 0.0000 0.0000 -vn -0.7071 0.7071 0.0000 -vn 0.7071 -0.7071 0.0000 -vn -0.7071 -0.7071 0.0000 -vn 0.7071 0.7071 0.0000 vn 0.0000 0.1414 -0.9899 vn 0.0000 -0.1414 0.9899 +vn 0.0000 1.0000 0.0000 vn 0.7035 -0.1005 0.7035 vn 0.7035 0.1005 -0.7035 vn -0.7035 0.1005 -0.7035 @@ -1773,62 +2408,18 @@ vn -0.5000 -0.8660 0.0000 vn 0.5000 0.8660 0.0000 vn -0.8660 0.5000 -0.0000 vn 0.0000 0.7071 -0.7071 -vn 0.9239 -0.3827 0.0000 -vn 0.3827 0.9239 0.0000 vn -0.9239 0.3827 0.0000 -vn -0.3827 -0.9239 0.0000 -vn -0.3827 0.9239 0.0000 +vn 0.9239 -0.3827 0.0000 vn -0.9239 -0.3827 0.0000 -vn 0.3827 -0.9239 0.0000 vn 0.9239 0.3827 0.0000 -vn 0.6860 0.6860 -0.2425 -vn 0.8963 0.3713 -0.2425 -vn -0.6860 -0.6860 -0.2425 -vn -0.3713 -0.8963 -0.2425 -vn 0.3713 0.8963 -0.2425 -vn -0.0000 -0.9701 -0.2425 -vn -0.3713 0.8963 -0.2425 -vn -0.0000 0.9701 -0.2425 -vn 0.3713 -0.8963 -0.2425 -vn -0.6860 0.6860 -0.2425 -vn 0.6860 -0.6860 -0.2425 -vn -0.8963 0.3713 -0.2425 -vn 0.8963 -0.3713 -0.2425 -vn -0.9701 -0.0000 -0.2425 -vn 0.9701 0.0000 -0.2425 -vn -0.8963 -0.3713 -0.2425 -vn 0.8263 0.3423 -0.4472 -vn 0.6325 0.6325 -0.4472 -vn 0.3423 0.8263 -0.4472 -vn -0.0000 0.8944 -0.4472 -vn -0.3423 0.8263 -0.4472 -vn -0.6325 0.6325 -0.4472 -vn -0.8263 0.3423 -0.4472 -vn -0.8944 -0.0000 -0.4472 -vn -0.8263 -0.3423 -0.4472 -vn -0.6325 -0.6325 -0.4472 -vn -0.3423 -0.8263 -0.4472 -vn -0.0000 -0.8944 -0.4472 -vn 0.3423 -0.8263 -0.4472 -vn 0.6325 -0.6325 -0.4472 -vn 0.8263 -0.3423 -0.4472 -vn 0.8944 -0.0000 -0.4472 -vn 0.5657 0.5657 -0.6000 -vn 0.3061 0.7391 -0.6000 -vn 0.0000 -0.8000 -0.6000 -vn 0.3061 -0.7391 -0.6000 -vn -0.3061 0.7391 -0.6000 -vn -0.5657 0.5657 -0.6000 -vn -0.5657 -0.5657 -0.6000 -vn -0.3061 -0.7391 -0.6000 -vn 0.0000 0.8000 -0.6000 -vn 0.8000 0.0000 -0.6000 -vn 0.7391 0.3061 -0.6000 -vn -0.7391 0.3061 -0.6000 -vn 0.5657 -0.5657 -0.6000 -vn 0.7391 -0.3061 -0.6000 -vn -0.8000 -0.0000 -0.6000 -vn -0.7391 -0.3061 -0.6000 +vn -0.7071 -0.7071 0.0000 +vn 0.7071 0.7071 0.0000 +vn -0.3827 -0.9239 0.0000 +vn 0.3827 0.9239 0.0000 +vn -0.3827 0.9239 0.0000 +vn 0.3827 -0.9239 0.0000 +vn -0.7071 0.7071 0.0000 +vn 0.7071 -0.7071 0.0000 vn 0.3536 0.6124 -0.7071 vn 0.5738 0.8140 0.0899 vn 0.1205 0.7727 -0.6233 @@ -1851,1071 +2442,563 @@ vn -0.1205 -0.7727 0.6233 vn -0.5738 -0.8140 -0.0899 vn 0.1951 0.9808 -0.0000 vn 0.9808 0.1951 0.0000 -vn 0.3684 -0.8894 0.2707 -vn 0.0000 -0.8777 0.4792 -vn 0.0000 -0.9627 0.2707 -vn -0.3684 0.8894 0.2707 -vn 0.0000 0.8777 0.4792 -vn 0.0000 0.9627 0.2707 -vn -0.8894 -0.3684 0.2707 -vn -0.6206 -0.6207 0.4792 -vn -0.8109 -0.3359 0.4792 -vn 0.8894 0.3684 0.2707 -vn 0.8777 0.0000 0.4792 -vn 0.9627 0.0000 0.2707 -vn 0.3684 0.8894 0.2707 -vn 0.3359 0.8109 0.4792 -vn 0.6206 0.6207 0.4792 -vn 0.8109 0.3359 0.4792 -vn -0.3684 -0.8894 0.2707 -vn -0.6807 -0.6807 0.2707 -vn 0.6206 -0.6207 0.4792 -vn 0.3359 -0.8109 0.4792 -vn -0.3359 -0.8109 0.4792 -vn 0.8894 -0.3684 0.2707 -vn 0.6807 -0.6807 0.2707 -vn -0.8894 0.3684 0.2707 -vn -0.6206 0.6207 0.4792 -vn -0.6807 0.6807 0.2707 -vn 0.6807 0.6807 0.2707 -vn 0.8109 -0.3359 0.4792 -vn -0.9627 -0.0000 0.2707 -vn -0.8109 0.3359 0.4792 -vn -0.3359 0.8109 0.4792 -vn -0.8777 -0.0000 0.4792 s off -f 14/1/1 47/2/1 15/3/1 -f 15/4/1 48/5/1 16/6/1 -f 48/5/1 1/7/1 16/8/1 -f 33/9/1 2/10/1 1/11/1 -f 34/12/1 3/13/1 2/14/1 -f 35/15/1 4/16/1 3/17/1 -f 4/18/1 37/19/1 5/20/1 -f 37/19/1 6/21/1 5/22/1 -f 6/23/1 39/24/1 7/25/1 -f 39/24/1 8/26/1 7/27/1 -f 8/28/1 41/29/1 9/30/1 -f 9/31/1 42/32/1 10/33/1 -f 42/32/1 11/34/1 10/35/1 -f 43/36/1 12/37/1 11/38/1 -f 44/39/1 13/40/1 12/41/1 -f 45/42/1 14/43/1 13/44/1 -f 77/45/2 62/46/2 61/47/2 -f 78/48/2 63/49/2 62/46/2 -f 79/50/2 64/51/2 63/49/2 -f 64/51/2 65/52/2 49/53/2 -f 49/53/2 66/54/2 50/55/2 -f 66/56/2 51/57/2 50/55/2 -f 67/58/2 52/59/2 51/57/2 -f 68/60/2 53/61/2 52/59/2 -f 69/62/2 54/63/2 53/61/2 -f 70/64/2 55/65/2 54/63/2 -f 71/66/2 56/67/2 55/65/2 -f 72/68/2 57/69/2 56/67/2 -f 73/70/2 58/71/2 57/72/2 -f 74/73/2 59/74/2 58/71/2 -f 59/74/2 76/75/2 60/76/2 -f 76/77/2 61/47/2 60/76/2 -f 112/78/1 100/79/1 104/80/1 -f 87/81/2 91/82/2 95/83/2 -f 115/84/3 114/85/3 113/86/3 -f 117/87/4 116/88/4 115/84/4 -f 120/89/5 113/86/5 114/85/5 -f 114/90/6 131/91/6 128/92/6 -f 131/91/7 127/93/7 128/92/7 -f 119/94/8 127/93/8 113/95/8 -f 123/96/1 136/97/1 124/98/1 -f 128/92/1 125/99/1 126/100/1 -f 120/89/3 125/101/3 119/102/3 -f 124/103/8 135/104/8 122/105/8 -f 121/106/6 133/107/6 123/96/6 -f 132/108/2 129/109/2 130/110/2 -f 117/87/3 129/109/3 118/111/3 -f 122/105/2 134/112/2 121/106/2 -f 145/113/7 150/114/7 147/115/7 -f 148/116/3 151/117/3 146/118/3 -f 142/119/1 143/120/1 144/121/1 -f 138/122/2 139/123/2 137/124/2 -f 143/120/3 137/124/3 144/121/3 -f 142/125/7 140/126/7 141/127/7 -f 141/128/8 138/122/8 143/129/8 -f 144/130/6 139/123/6 142/131/6 -f 147/132/8 149/133/8 148/134/8 -f 146/135/6 152/136/6 145/137/6 -f 151/117/2 150/114/2 152/136/2 -f 147/138/1 146/135/1 145/137/1 -f 153/139/9 158/140/9 155/141/9 -f 156/142/10 159/143/10 154/144/10 -f 155/145/11 157/146/11 156/147/11 -f 154/148/12 160/149/12 153/150/12 -f 159/143/2 158/140/2 160/149/2 -f 155/151/1 154/148/1 153/150/1 -f 166/152/1 167/153/1 168/154/1 -f 161/155/2 164/156/2 163/157/2 -f 167/153/10 161/155/10 168/154/10 -f 166/158/9 164/156/9 165/159/9 -f 165/160/11 162/161/11 167/162/11 -f 168/163/12 163/157/12 166/164/12 -f 227/165/2 223/166/2 219/167/2 -f 602/168/2 235/169/2 234/170/2 -f 248/171/2 601/172/2 233/173/2 -f 614/174/2 247/175/2 246/176/2 -f 612/177/2 245/178/2 244/179/2 -f 610/180/2 243/181/2 242/182/2 -f 608/183/2 241/184/2 240/185/2 -f 606/186/2 239/187/2 238/188/2 -f 604/189/2 237/190/2 236/191/2 -f 241/192/2 610/193/2 242/182/2 -f 239/187/2 608/194/2 240/185/2 -f 237/190/2 606/195/2 238/188/2 -f 235/169/2 604/196/2 236/191/2 -f 233/173/2 602/197/2 234/170/2 -f 615/198/2 248/171/2 247/175/2 -f 245/178/2 614/199/2 246/176/2 -f 243/181/2 612/200/2 244/179/2 -f 267/201/3 266/202/3 265/203/3 -f 267/201/2 272/204/2 268/205/2 -f 266/202/1 269/206/1 265/203/1 -f 268/205/6 270/207/6 266/202/6 -f 265/203/8 271/208/8 267/201/8 -f 275/209/3 273/210/3 274/211/3 -f 288/212/13 290/213/13 285/214/13 -f 282/215/14 294/216/14 283/217/14 -f 279/218/7 278/219/7 280/220/7 -f 287/221/6 293/222/6 296/223/6 -f 294/216/15 284/224/15 283/217/15 -f 288/212/16 296/223/16 295/225/16 -f 285/214/17 289/226/17 286/227/17 -f 291/228/18 281/229/18 292/230/18 -f 286/227/8 292/230/8 281/229/8 -f 278/219/8 274/231/8 280/220/8 -f 277/232/2 275/233/2 278/219/2 -f 279/218/6 276/234/6 277/232/6 -f 280/220/1 273/235/1 279/218/1 -f 299/236/14 298/237/14 297/238/14 -f 302/239/13 304/240/13 303/241/13 -f 299/242/8 303/241/8 304/240/8 -f 307/243/19 306/244/19 305/245/19 -f 300/246/6 302/239/6 298/237/6 -f 305/247/8 312/248/8 307/243/8 -f 314/249/20 315/250/20 313/251/20 -f 308/252/6 309/253/6 306/254/6 -f 307/243/3 311/255/3 308/252/3 -f 314/249/21 320/256/21 316/257/21 -f 315/250/2 320/258/2 317/259/2 -f 313/251/1 319/260/1 314/249/1 -f 315/250/22 318/261/22 313/251/22 -f 350/262/23 359/263/23 358/264/23 -f 348/265/23 357/266/23 356/267/23 -f 346/268/23 355/269/23 354/270/23 -f 351/271/23 360/272/23 359/263/23 -f 350/273/23 357/274/23 349/275/23 -f 348/276/23 355/269/23 347/277/23 -f 346/278/23 353/279/23 345/280/23 -f 352/281/23 353/279/23 360/272/23 -f 365/282/20 367/283/20 361/284/20 -f 370/285/6 371/286/6 369/287/6 -f 386/288/8 390/289/8 389/290/8 -f 369/287/1 375/291/1 370/285/1 -f 370/285/3 376/292/3 372/293/3 -f 371/286/7 374/294/7 369/287/7 -f 372/293/2 373/295/2 371/286/2 -f 392/296/6 388/297/6 391/298/6 -f 389/299/7 388/297/7 386/288/7 -f 380/300/7 383/301/7 384/302/7 -f 379/303/6 378/304/6 380/305/6 -f 385/306/3 392/307/3 390/308/3 -f 380/300/2 386/288/2 379/309/2 -f 381/310/2 387/311/2 384/302/2 -f 379/309/2 388/297/2 381/310/2 -f 384/302/2 385/306/2 380/300/2 -f 377/312/1 390/289/1 378/304/1 -f 383/313/1 391/314/1 382/315/1 -f 382/315/1 389/290/1 377/312/1 -f 378/304/1 392/316/1 383/313/1 -f 383/313/8 381/317/8 384/318/8 -f 382/319/3 379/309/3 381/310/3 -f 411/320/1 588/321/1 587/322/1 -f 419/323/1 594/324/1 418/325/1 -f 411/320/1 586/326/1 410/327/1 -f 417/328/1 594/329/1 593/330/1 -f 410/327/1 585/331/1 409/332/1 -f 416/333/1 593/334/1 592/335/1 -f 409/332/1 600/336/1 424/337/1 -f 415/338/1 592/339/1 591/340/1 -f 424/337/1 599/341/1 423/342/1 -f 414/343/1 591/344/1 590/345/1 -f 423/342/1 598/346/1 422/347/1 -f 413/348/1 590/349/1 589/350/1 -f 421/351/1 598/352/1 597/353/1 -f 421/351/1 596/354/1 420/355/1 -f 413/348/1 588/356/1 412/357/1 -f 419/323/1 596/358/1 595/359/1 -f 458/360/6 459/361/6 457/362/6 -f 472/363/6 466/364/6 468/365/6 -f 460/366/2 461/367/2 459/361/2 -f 457/362/1 463/368/1 458/360/1 -f 458/360/3 464/369/3 460/366/3 -f 459/361/7 462/370/7 457/362/7 -f 469/371/8 467/372/8 465/373/8 -f 471/374/7 468/365/7 467/372/7 -f 470/375/3 465/376/3 466/364/3 -f 480/377/6 474/378/6 476/379/6 -f 477/380/8 475/381/8 473/382/8 -f 479/383/7 476/379/7 475/381/7 -f 478/384/3 473/385/3 474/378/3 -f 488/386/6 482/387/6 484/388/6 -f 485/389/8 483/390/8 481/391/8 -f 487/392/7 484/388/7 483/390/7 -f 486/393/3 481/394/3 482/387/3 -f 490/395/7 491/396/7 489/397/7 -f 492/398/24 493/399/24 491/396/24 -f 489/397/1 495/400/1 490/395/1 -f 492/398/6 495/401/6 496/402/6 -f 491/396/8 494/403/8 489/397/8 -f 512/404/1 535/405/1 536/406/1 -f 503/407/2 507/408/2 511/409/2 -f 525/410/1 527/411/1 521/412/1 -f 502/413/1 529/414/1 531/415/1 -f 508/416/1 533/417/1 534/418/1 -f 512/404/1 530/419/1 498/420/1 -f 498/420/1 529/421/1 500/422/1 -f 502/413/1 532/423/1 504/424/1 -f 508/416/1 535/425/1 510/426/1 -f 504/424/1 533/427/1 506/428/1 -f 541/429/1 540/430/1 539/431/1 -f 555/432/1 558/433/1 554/434/1 -f 551/435/2 562/436/2 550/437/2 -f 578/438/2 567/439/2 579/440/2 -f 559/441/1 552/442/1 553/443/1 -f 558/433/1 553/443/1 554/434/1 -f 560/444/1 556/445/1 552/442/1 -f 564/446/2 549/447/2 548/448/2 -f 563/449/2 547/450/2 564/446/2 -f 562/436/2 546/451/2 563/449/2 -f 574/452/1 571/453/1 575/454/1 -f 128/92/6 120/455/6 114/90/6 -f 131/91/6 118/456/6 129/457/6 -f 132/108/8 117/458/8 115/459/8 -f 127/93/8 115/459/8 113/95/8 -f 251/460/2 263/461/2 259/462/2 -f 570/463/1 577/464/1 576/465/1 -f 571/453/1 576/465/1 575/454/1 -f 569/466/1 573/467/1 577/464/1 -f 565/468/2 580/469/2 581/470/2 -f 566/471/2 582/472/2 565/468/2 -f 567/439/2 583/473/2 566/471/2 -f 14/1/1 46/474/1 47/2/1 -f 15/4/1 47/2/1 48/5/1 -f 48/5/1 33/9/1 1/7/1 -f 33/9/1 34/12/1 2/10/1 -f 34/12/1 35/15/1 3/13/1 -f 35/15/1 36/475/1 4/16/1 -f 4/18/1 36/475/1 37/19/1 -f 37/19/1 38/476/1 6/21/1 -f 6/23/1 38/476/1 39/24/1 -f 39/24/1 40/477/1 8/26/1 -f 8/28/1 40/477/1 41/29/1 -f 9/31/1 41/478/1 42/32/1 -f 42/32/1 43/36/1 11/34/1 -f 43/36/1 44/39/1 12/37/1 -f 44/39/1 45/42/1 13/40/1 -f 45/42/1 46/474/1 14/43/1 -f 77/45/2 78/479/2 62/46/2 -f 78/48/2 79/480/2 63/49/2 -f 79/50/2 80/481/2 64/51/2 -f 64/51/2 80/482/2 65/52/2 -f 49/53/2 65/483/2 66/54/2 -f 66/56/2 67/484/2 51/57/2 -f 67/58/2 68/485/2 52/59/2 -f 68/60/2 69/486/2 53/61/2 -f 69/62/2 70/487/2 54/63/2 -f 70/64/2 71/488/2 55/65/2 -f 71/66/2 72/489/2 56/67/2 -f 72/68/2 73/490/2 57/69/2 -f 73/70/2 74/491/2 58/71/2 -f 74/73/2 75/492/2 59/74/2 -f 59/74/2 75/493/2 76/75/2 -f 76/77/2 77/494/2 61/47/2 -f 112/78/1 97/495/1 98/496/1 -f 98/496/1 99/497/1 112/78/1 -f 99/497/1 100/79/1 112/78/1 -f 100/79/1 101/498/1 102/499/1 -f 102/499/1 103/500/1 100/79/1 -f 103/500/1 104/80/1 100/79/1 -f 104/80/1 105/501/1 106/502/1 -f 106/502/1 107/503/1 108/504/1 -f 108/504/1 109/505/1 112/78/1 -f 109/505/1 110/506/1 112/78/1 -f 110/506/1 111/507/1 112/78/1 -f 104/80/1 106/502/1 112/78/1 -f 106/502/1 108/504/1 112/78/1 -f 95/83/2 96/508/2 81/509/2 -f 81/509/2 82/510/2 83/511/2 -f 83/511/2 84/512/2 87/81/2 -f 84/512/2 85/513/2 87/81/2 -f 85/513/2 86/514/2 87/81/2 -f 87/81/2 88/515/2 89/516/2 -f 89/516/2 90/517/2 87/81/2 -f 90/517/2 91/82/2 87/81/2 -f 91/82/2 92/518/2 93/519/2 -f 93/519/2 94/520/2 91/82/2 -f 94/520/2 95/83/2 91/82/2 -f 95/83/2 81/509/2 87/81/2 -f 81/509/2 83/511/2 87/81/2 -f 115/84/3 116/88/3 114/85/3 -f 117/87/4 118/111/4 116/88/4 -f 120/89/5 119/102/5 113/86/5 -f 114/90/6 116/521/6 131/91/6 -f 131/91/7 132/108/7 127/93/7 -f 119/94/8 125/522/8 127/93/8 -f 123/96/1 133/107/1 136/97/1 -f 128/92/1 127/93/1 125/99/1 -f 120/89/3 126/523/3 125/101/3 -f 124/103/8 136/524/8 135/104/8 -f 121/106/6 134/112/6 133/107/6 -f 132/108/2 131/91/2 129/109/2 -f 117/87/3 130/110/3 129/109/3 -f 122/105/2 135/104/2 134/112/2 -f 145/113/7 152/136/7 150/114/7 -f 148/116/3 149/133/3 151/117/3 -f 142/119/1 141/525/1 143/120/1 -f 138/122/2 140/126/2 139/123/2 -f 143/120/3 138/122/3 137/124/3 -f 142/125/7 139/123/7 140/126/7 -f 141/128/8 140/126/8 138/122/8 -f 144/130/6 137/124/6 139/123/6 -f 147/132/8 150/114/8 149/133/8 -f 146/135/6 151/117/6 152/136/6 -f 151/117/2 149/133/2 150/114/2 -f 147/138/1 148/526/1 146/135/1 -f 153/139/9 160/149/9 158/140/9 -f 156/142/10 157/146/10 159/143/10 -f 155/145/11 158/140/11 157/146/11 -f 154/148/12 159/143/12 160/149/12 -f 159/143/2 157/146/2 158/140/2 -f 155/151/1 156/527/1 154/148/1 -f 166/152/1 165/528/1 167/153/1 -f 161/155/2 162/161/2 164/156/2 -f 167/153/10 162/161/10 161/155/10 -f 166/158/9 163/157/9 164/156/9 -f 165/160/11 164/156/11 162/161/11 -f 168/163/12 161/155/12 163/157/12 -f 219/167/2 218/529/2 217/530/2 -f 217/530/2 232/531/2 219/167/2 -f 232/531/2 231/532/2 219/167/2 -f 231/532/2 230/533/2 229/534/2 -f 229/534/2 228/535/2 227/165/2 -f 227/165/2 226/536/2 223/166/2 -f 226/536/2 225/537/2 223/166/2 -f 225/537/2 224/538/2 223/166/2 -f 223/166/2 222/539/2 221/540/2 -f 221/540/2 220/541/2 219/167/2 -f 231/532/2 229/534/2 219/167/2 -f 229/534/2 227/165/2 219/167/2 -f 223/166/2 221/540/2 219/167/2 -f 602/168/2 603/542/2 235/169/2 -f 248/171/2 616/543/2 601/172/2 -f 614/174/2 615/544/2 247/175/2 -f 612/177/2 613/545/2 245/178/2 -f 610/180/2 611/546/2 243/181/2 -f 608/183/2 609/547/2 241/184/2 -f 606/186/2 607/548/2 239/187/2 -f 604/189/2 605/549/2 237/190/2 -f 241/192/2 609/550/2 610/193/2 -f 239/187/2 607/551/2 608/194/2 -f 237/190/2 605/552/2 606/195/2 -f 235/169/2 603/553/2 604/196/2 -f 233/173/2 601/554/2 602/197/2 -f 615/198/2 616/555/2 248/171/2 -f 245/178/2 613/556/2 614/199/2 -f 243/181/2 611/557/2 612/200/2 -f 267/201/3 268/205/3 266/202/3 -f 267/201/2 271/558/2 272/204/2 -f 266/202/1 270/559/1 269/206/1 -f 268/205/6 272/560/6 270/207/6 -f 265/203/8 269/561/8 271/208/8 -f 275/209/3 276/234/3 273/210/3 -f 288/212/13 295/225/13 290/213/13 -f 282/215/14 291/562/14 294/216/14 -f 279/218/7 277/232/7 278/219/7 -f 287/221/6 284/224/6 293/222/6 -f 294/216/15 293/222/15 284/224/15 -f 288/212/16 287/221/16 296/223/16 -f 285/214/17 290/213/17 289/226/17 -f 291/228/18 282/563/18 281/229/18 -f 286/227/8 289/226/8 292/230/8 -f 278/219/8 275/564/8 274/231/8 -f 277/232/2 276/565/2 275/233/2 -f 279/218/6 273/210/6 276/234/6 -f 280/220/1 274/566/1 273/235/1 -f 299/236/14 300/246/14 298/237/14 -f 302/239/13 301/567/13 304/240/13 -f 299/242/8 297/568/8 303/241/8 -f 307/243/19 308/252/19 306/244/19 -f 300/246/6 301/567/6 302/239/6 -f 305/247/8 310/569/8 312/248/8 -f 314/249/20 316/257/20 315/250/20 -f 308/252/6 311/255/6 309/253/6 -f 307/243/3 312/248/3 311/255/3 -f 314/249/21 319/570/21 320/256/21 -f 315/250/2 316/257/2 320/258/2 -f 313/251/1 318/571/1 319/260/1 -f 315/250/22 317/572/22 318/261/22 -f 350/262/23 351/573/23 359/263/23 -f 348/265/23 349/574/23 357/266/23 -f 346/268/23 347/575/23 355/269/23 -f 351/271/23 352/576/23 360/272/23 -f 350/273/23 358/264/23 357/274/23 -f 348/276/23 356/267/23 355/269/23 -f 346/278/23 354/270/23 353/279/23 -f 352/281/23 345/577/23 353/279/23 -f 361/284/20 362/578/20 363/579/20 -f 363/579/20 364/580/20 365/282/20 -f 365/282/20 366/581/20 367/283/20 -f 367/283/20 368/582/20 361/284/20 -f 361/284/20 363/579/20 365/282/20 -f 370/285/6 372/293/6 371/286/6 -f 386/288/8 385/306/8 390/289/8 -f 369/287/1 374/583/1 375/291/1 -f 370/285/3 375/584/3 376/292/3 -f 371/286/7 373/585/7 374/294/7 -f 372/293/2 376/586/2 373/295/2 -f 392/296/6 387/311/6 388/297/6 -f 389/299/7 391/587/7 388/297/7 -f 380/300/7 378/588/7 383/301/7 -f 379/303/6 377/312/6 378/304/6 -f 385/306/3 387/311/3 392/307/3 -f 380/300/2 385/306/2 386/288/2 -f 381/310/2 388/297/2 387/311/2 -f 379/309/2 386/288/2 388/297/2 -f 384/302/2 387/311/2 385/306/2 -f 377/312/1 389/290/1 390/289/1 -f 383/313/1 392/316/1 391/314/1 -f 382/315/1 391/314/1 389/290/1 -f 378/304/1 390/289/1 392/316/1 -f 383/313/8 382/315/8 381/317/8 -f 382/319/3 377/589/3 379/309/3 -f 411/320/1 412/357/1 588/321/1 -f 419/323/1 595/590/1 594/324/1 -f 411/320/1 587/591/1 586/326/1 -f 417/328/1 418/325/1 594/329/1 -f 410/327/1 586/592/1 585/331/1 -f 416/333/1 417/593/1 593/334/1 -f 409/332/1 585/594/1 600/336/1 -f 415/338/1 416/333/1 592/339/1 -f 424/337/1 600/595/1 599/341/1 -f 414/343/1 415/338/1 591/344/1 -f 423/342/1 599/596/1 598/346/1 -f 413/348/1 414/343/1 590/349/1 -f 421/351/1 422/347/1 598/352/1 -f 421/351/1 597/597/1 596/354/1 -f 413/348/1 589/598/1 588/356/1 -f 419/323/1 420/355/1 596/358/1 -f 458/360/6 460/366/6 459/361/6 -f 472/363/6 470/375/6 466/364/6 -f 460/366/2 464/599/2 461/367/2 -f 457/362/1 462/600/1 463/368/1 -f 458/360/3 463/601/3 464/369/3 -f 459/361/7 461/602/7 462/370/7 -f 469/371/8 471/374/8 467/372/8 -f 471/374/7 472/363/7 468/365/7 -f 470/375/3 469/603/3 465/376/3 -f 480/377/6 478/384/6 474/378/6 -f 477/380/8 479/383/8 475/381/8 -f 479/383/7 480/377/7 476/379/7 -f 478/384/3 477/604/3 473/385/3 -f 488/386/6 486/393/6 482/387/6 -f 485/389/8 487/392/8 483/390/8 -f 487/392/7 488/386/7 484/388/7 -f 486/393/3 485/605/3 481/394/3 -f 490/395/7 492/398/7 491/396/7 -f 492/398/24 496/606/24 493/399/24 -f 489/397/1 494/607/1 495/400/1 -f 492/398/6 490/395/6 495/401/6 -f 491/396/8 493/608/8 494/403/8 -f 512/404/1 510/426/1 535/405/1 -f 511/409/2 497/609/2 499/610/2 -f 499/610/2 501/611/2 511/409/2 -f 501/611/2 503/407/2 511/409/2 -f 503/407/2 505/612/2 507/408/2 -f 507/408/2 509/613/2 511/409/2 -f 521/412/1 522/614/1 523/615/1 -f 523/615/1 524/616/1 525/410/1 -f 525/410/1 526/617/1 527/411/1 -f 527/411/1 528/618/1 521/412/1 -f 521/412/1 523/615/1 525/410/1 -f 502/413/1 500/422/1 529/414/1 -f 508/416/1 506/619/1 533/417/1 -f 512/404/1 536/620/1 530/419/1 -f 498/420/1 530/621/1 529/421/1 -f 502/413/1 531/622/1 532/423/1 -f 508/416/1 534/623/1 535/425/1 -f 504/424/1 532/624/1 533/427/1 -f 539/431/1 537/625/1 538/626/1 -f 538/626/1 544/627/1 539/431/1 -f 544/627/1 543/628/1 539/431/1 -f 543/628/1 542/629/1 539/431/1 -f 542/629/1 541/429/1 539/431/1 -f 555/432/1 557/630/1 558/433/1 -f 551/435/2 561/631/2 562/436/2 -f 578/438/2 568/632/2 567/439/2 -f 559/441/1 560/444/1 552/442/1 -f 558/433/1 559/441/1 553/443/1 -f 560/444/1 545/633/1 556/445/1 -f 564/446/2 547/450/2 549/447/2 -f 563/449/2 546/451/2 547/450/2 -f 562/436/2 561/631/2 546/451/2 -f 574/452/1 572/634/1 571/453/1 -f 128/92/6 126/635/6 120/455/6 -f 131/91/6 116/521/6 118/456/6 -f 132/108/8 130/636/8 117/458/8 -f 127/93/8 132/108/8 115/459/8 -f 259/462/2 258/637/2 257/638/2 -f 257/638/2 256/639/2 259/462/2 -f 256/639/2 255/640/2 259/462/2 -f 255/640/2 254/641/2 253/642/2 -f 253/642/2 252/643/2 251/460/2 -f 251/460/2 250/644/2 263/461/2 -f 250/644/2 249/645/2 263/461/2 -f 249/645/2 264/646/2 263/461/2 -f 263/461/2 262/647/2 261/648/2 -f 261/648/2 260/649/2 259/462/2 -f 255/640/2 253/642/2 259/462/2 -f 253/642/2 251/460/2 259/462/2 -f 263/461/2 261/648/2 259/462/2 -f 570/463/1 569/466/1 577/464/1 -f 571/453/1 570/463/1 576/465/1 -f 569/466/1 584/650/1 573/467/1 -f 565/468/2 582/472/2 580/469/2 -f 566/471/2 583/473/2 582/472/2 -f 567/439/2 568/632/2 583/473/2 +f 295/522/154 328/523/154 296/524/154 +f 296/525/154 329/526/154 297/527/154 +f 329/526/154 282/528/154 297/529/154 +f 314/530/154 283/531/154 282/532/154 +f 315/533/154 284/534/154 283/535/154 +f 316/536/154 285/537/154 284/538/154 +f 285/539/154 318/540/154 286/541/154 +f 318/540/154 287/542/154 286/543/154 +f 287/544/154 320/545/154 288/546/154 +f 320/545/154 289/547/154 288/548/154 +f 289/549/154 322/550/154 290/551/154 +f 290/552/154 323/553/154 291/554/154 +f 323/553/154 292/555/154 291/556/154 +f 324/557/154 293/558/154 292/559/154 +f 325/560/154 294/561/154 293/562/154 +f 326/563/154 295/564/154 294/565/154 +f 358/566/155 343/567/155 342/568/155 +f 359/569/155 344/570/155 343/567/155 +f 360/571/155 345/572/155 344/570/155 +f 345/572/155 346/573/155 330/574/155 +f 330/574/155 347/575/155 331/576/155 +f 347/577/155 332/578/155 331/576/155 +f 348/579/155 333/580/155 332/578/155 +f 349/581/155 334/582/155 333/580/155 +f 350/583/155 335/584/155 334/582/155 +f 351/585/155 336/586/155 335/584/155 +f 352/587/155 337/588/155 336/586/155 +f 353/589/155 338/590/155 337/588/155 +f 354/591/155 339/592/155 338/593/155 +f 355/594/155 340/595/155 339/592/155 +f 340/595/155 357/596/155 341/597/155 +f 357/598/155 342/568/155 341/597/155 +f 635/599/155 364/600/155 363/601/155 +f 377/602/155 634/603/155 362/604/155 +f 647/605/155 376/606/155 375/607/155 +f 645/608/155 374/609/155 373/610/155 +f 643/611/155 372/612/155 371/613/155 +f 641/614/155 370/615/155 369/616/155 +f 639/617/155 368/618/155 367/619/155 +f 637/620/155 366/621/155 365/622/155 +f 370/623/155 643/624/155 371/613/155 +f 368/618/155 641/625/155 369/616/155 +f 366/621/155 639/626/155 367/619/155 +f 364/600/155 637/627/155 365/622/155 +f 362/604/155 635/628/155 363/601/155 +f 648/629/155 377/602/155 376/606/155 +f 374/609/155 647/630/155 375/607/155 +f 372/612/155 645/631/155 373/610/155 +f 380/632/156 379/633/156 378/634/156 +f 380/632/155 385/635/155 381/636/155 +f 379/633/154 382/637/154 378/634/154 +f 381/636/157 383/638/157 379/633/157 +f 378/634/158 384/639/158 380/632/158 +f 388/640/156 386/641/156 387/642/156 +f 401/643/159 403/644/159 398/645/159 +f 395/646/160 407/647/160 396/648/160 +f 392/649/161 391/650/161 393/651/161 +f 400/652/157 406/653/157 409/654/157 +f 407/647/162 397/655/162 396/648/162 +f 401/643/163 409/654/163 408/656/163 +f 398/645/164 402/657/164 399/658/164 +f 404/659/165 394/660/165 405/661/165 +f 399/658/158 405/661/158 394/660/158 +f 391/650/158 387/662/158 393/651/158 +f 390/663/155 388/664/155 391/650/155 +f 392/649/157 389/665/157 390/663/157 +f 393/651/154 386/666/154 392/649/154 +f 412/667/160 411/668/160 410/669/160 +f 415/670/159 417/671/159 416/672/159 +f 412/673/158 416/672/158 417/671/158 +f 420/674/166 419/675/166 418/676/166 +f 413/677/157 415/670/157 411/668/157 +f 418/678/158 425/679/158 420/674/158 +f 427/680/167 428/681/167 426/682/167 +f 421/683/157 422/684/157 419/685/157 +f 420/674/156 424/686/156 421/683/156 +f 427/680/168 433/687/168 429/688/168 +f 428/681/155 433/689/155 430/690/155 +f 426/682/154 432/691/154 427/680/154 +f 428/681/169 431/692/169 426/682/169 +f 463/693/170 472/694/170 471/695/170 +f 461/696/170 470/697/170 469/698/170 +f 459/699/170 468/700/170 467/701/170 +f 464/702/170 473/703/170 472/694/170 +f 463/704/170 470/705/170 462/706/170 +f 461/707/170 468/700/170 460/708/170 +f 459/709/170 466/710/170 458/711/170 +f 465/712/170 466/710/170 473/703/170 +f 478/713/167 480/714/167 474/715/167 +f 483/716/157 484/717/157 482/718/157 +f 499/719/158 503/720/158 502/721/158 +f 482/718/154 488/722/154 483/716/154 +f 483/716/156 489/723/156 485/724/156 +f 484/717/161 487/725/161 482/718/161 +f 485/724/155 486/726/155 484/717/155 +f 505/727/157 501/728/157 504/729/157 +f 502/730/161 501/728/161 499/719/161 +f 493/731/161 496/732/161 497/733/161 +f 492/734/157 491/735/157 493/736/157 +f 498/737/156 505/738/156 503/739/156 +f 493/731/155 499/719/155 492/740/155 +f 494/741/155 500/742/155 497/733/155 +f 492/740/155 501/728/155 494/741/155 +f 497/733/155 498/737/155 493/731/155 +f 490/743/154 503/720/154 491/735/154 +f 496/744/154 504/745/154 495/746/154 +f 495/746/154 502/721/154 490/743/154 +f 491/735/154 505/747/154 496/744/154 +f 496/744/158 494/748/158 497/749/158 +f 495/750/156 492/740/156 494/741/156 +f 507/751/157 508/752/157 506/753/157 +f 521/754/157 515/755/157 517/756/157 +f 509/757/155 510/758/155 508/752/155 +f 506/753/154 512/759/154 507/751/154 +f 507/751/156 513/760/156 509/757/156 +f 508/752/161 511/761/161 506/753/161 +f 518/762/158 516/763/158 514/764/158 +f 520/765/161 517/756/161 516/763/161 +f 519/766/156 514/767/156 515/755/156 +f 529/768/157 523/769/157 525/770/157 +f 526/771/158 524/772/158 522/773/158 +f 528/774/161 525/770/161 524/772/161 +f 527/775/156 522/776/156 523/769/156 +f 537/777/157 531/778/157 533/779/157 +f 534/780/158 532/781/158 530/782/158 +f 536/783/161 533/779/161 532/781/161 +f 535/784/156 530/785/156 531/778/156 +f 539/786/161 540/787/161 538/788/161 +f 541/789/171 542/790/171 540/787/171 +f 538/788/154 544/791/154 539/786/154 +f 541/789/157 544/792/157 545/793/157 +f 540/787/158 543/794/158 538/788/158 +f 561/795/154 584/796/154 585/797/154 +f 552/798/155 556/799/155 560/800/155 +f 574/801/154 576/802/154 570/803/154 +f 551/804/154 578/805/154 580/806/154 +f 557/807/154 582/808/154 583/809/154 +f 561/795/154 579/810/154 547/811/154 +f 547/811/154 578/812/154 549/813/154 +f 551/804/154 581/814/154 553/815/154 +f 557/807/154 584/816/154 559/817/154 +f 553/815/154 582/818/154 555/819/154 +f 590/820/154 589/821/154 588/822/154 +f 604/823/154 607/824/154 603/825/154 +f 600/826/155 611/827/155 599/828/155 +f 627/829/155 616/830/155 628/831/155 +f 608/832/154 601/833/154 602/834/154 +f 607/824/154 602/834/154 603/825/154 +f 609/835/154 605/836/154 601/833/154 +f 613/837/155 598/838/155 597/839/155 +f 612/840/155 596/841/155 613/837/155 +f 611/827/155 595/842/155 612/840/155 +f 623/843/154 620/844/154 624/845/154 +f 619/846/154 626/847/154 625/848/154 +f 620/844/154 625/848/154 624/845/154 +f 618/849/154 622/850/154 626/847/154 +f 614/851/155 629/852/155 630/853/155 +f 615/854/155 631/855/155 614/851/155 +f 616/830/155 632/856/155 615/854/155 +f 295/522/154 327/857/154 328/523/154 +f 296/525/154 328/523/154 329/526/154 +f 329/526/154 314/530/154 282/528/154 +f 314/530/154 315/533/154 283/531/154 +f 315/533/154 316/536/154 284/534/154 +f 316/536/154 317/858/154 285/537/154 +f 285/539/154 317/858/154 318/540/154 +f 318/540/154 319/859/154 287/542/154 +f 287/544/154 319/859/154 320/545/154 +f 320/545/154 321/860/154 289/547/154 +f 289/549/154 321/860/154 322/550/154 +f 290/552/154 322/861/154 323/553/154 +f 323/553/154 324/557/154 292/555/154 +f 324/557/154 325/560/154 293/558/154 +f 325/560/154 326/563/154 294/561/154 +f 326/563/154 327/857/154 295/564/154 +f 358/566/155 359/862/155 343/567/155 +f 359/569/155 360/863/155 344/570/155 +f 360/571/155 361/864/155 345/572/155 +f 345/572/155 361/865/155 346/573/155 +f 330/574/155 346/866/155 347/575/155 +f 347/577/155 348/867/155 332/578/155 +f 348/579/155 349/868/155 333/580/155 +f 349/581/155 350/869/155 334/582/155 +f 350/583/155 351/870/155 335/584/155 +f 351/585/155 352/871/155 336/586/155 +f 352/587/155 353/872/155 337/588/155 +f 353/589/155 354/873/155 338/590/155 +f 354/591/155 355/874/155 339/592/155 +f 355/594/155 356/875/155 340/595/155 +f 340/595/155 356/876/155 357/596/155 +f 357/598/155 358/877/155 342/568/155 +f 635/599/155 636/878/155 364/600/155 +f 377/602/155 649/879/155 634/603/155 +f 647/605/155 648/880/155 376/606/155 +f 645/608/155 646/881/155 374/609/155 +f 643/611/155 644/882/155 372/612/155 +f 641/614/155 642/883/155 370/615/155 +f 639/617/155 640/884/155 368/618/155 +f 637/620/155 638/885/155 366/621/155 +f 370/623/155 642/886/155 643/624/155 +f 368/618/155 640/887/155 641/625/155 +f 366/621/155 638/888/155 639/626/155 +f 364/600/155 636/889/155 637/627/155 +f 362/604/155 634/890/155 635/628/155 +f 648/629/155 649/891/155 377/602/155 +f 374/609/155 646/892/155 647/630/155 +f 372/612/155 644/893/155 645/631/155 +f 380/632/156 381/636/156 379/633/156 +f 380/632/155 384/894/155 385/635/155 +f 379/633/154 383/895/154 382/637/154 +f 381/636/157 385/896/157 383/638/157 +f 378/634/158 382/897/158 384/639/158 +f 388/640/156 389/665/156 386/641/156 +f 401/643/159 408/656/159 403/644/159 +f 395/646/160 404/898/160 407/647/160 +f 392/649/161 390/663/161 391/650/161 +f 400/652/157 397/655/157 406/653/157 +f 407/647/162 406/653/162 397/655/162 +f 401/643/163 400/652/163 409/654/163 +f 398/645/164 403/644/164 402/657/164 +f 404/659/165 395/899/165 394/660/165 +f 399/658/158 402/657/158 405/661/158 +f 391/650/158 388/900/158 387/662/158 +f 390/663/155 389/901/155 388/664/155 +f 392/649/157 386/641/157 389/665/157 +f 393/651/154 387/902/154 386/666/154 +f 412/667/160 413/677/160 411/668/160 +f 415/670/159 414/903/159 417/671/159 +f 412/673/158 410/904/158 416/672/158 +f 420/674/166 421/683/166 419/675/166 +f 413/677/157 414/903/157 415/670/157 +f 418/678/158 423/905/158 425/679/158 +f 427/680/167 429/688/167 428/681/167 +f 421/683/157 424/686/157 422/684/157 +f 420/674/156 425/679/156 424/686/156 +f 427/680/168 432/906/168 433/687/168 +f 428/681/155 429/688/155 433/689/155 +f 426/682/154 431/907/154 432/691/154 +f 428/681/169 430/908/169 431/692/169 +f 463/693/170 464/909/170 472/694/170 +f 461/696/170 462/910/170 470/697/170 +f 459/699/170 460/911/170 468/700/170 +f 464/702/170 465/912/170 473/703/170 +f 463/704/170 471/695/170 470/705/170 +f 461/707/170 469/698/170 468/700/170 +f 459/709/170 467/701/170 466/710/170 +f 465/712/170 458/913/170 466/710/170 +f 474/715/167 475/914/167 476/915/167 +f 476/915/167 477/916/167 478/713/167 +f 478/713/167 479/917/167 480/714/167 +f 480/714/167 481/918/167 474/715/167 +f 474/715/167 476/915/167 478/713/167 +f 483/716/157 485/724/157 484/717/157 +f 499/719/158 498/737/158 503/720/158 +f 482/718/154 487/919/154 488/722/154 +f 483/716/156 488/920/156 489/723/156 +f 484/717/161 486/921/161 487/725/161 +f 485/724/155 489/922/155 486/726/155 +f 505/727/157 500/742/157 501/728/157 +f 502/730/161 504/923/161 501/728/161 +f 493/731/161 491/924/161 496/732/161 +f 492/734/157 490/743/157 491/735/157 +f 498/737/156 500/742/156 505/738/156 +f 493/731/155 498/737/155 499/719/155 +f 494/741/155 501/728/155 500/742/155 +f 492/740/155 499/719/155 501/728/155 +f 497/733/155 500/742/155 498/737/155 +f 490/743/154 502/721/154 503/720/154 +f 496/744/154 505/747/154 504/745/154 +f 495/746/154 504/745/154 502/721/154 +f 491/735/154 503/720/154 505/747/154 +f 496/744/158 495/746/158 494/748/158 +f 495/750/156 490/925/156 492/740/156 +f 507/751/157 509/757/157 508/752/157 +f 521/754/157 519/766/157 515/755/157 +f 509/757/155 513/926/155 510/758/155 +f 506/753/154 511/927/154 512/759/154 +f 507/751/156 512/928/156 513/760/156 +f 508/752/161 510/929/161 511/761/161 +f 518/762/158 520/765/158 516/763/158 +f 520/765/161 521/754/161 517/756/161 +f 519/766/156 518/930/156 514/767/156 +f 529/768/157 527/775/157 523/769/157 +f 526/771/158 528/774/158 524/772/158 +f 528/774/161 529/768/161 525/770/161 +f 527/775/156 526/931/156 522/776/156 +f 537/777/157 535/784/157 531/778/157 +f 534/780/158 536/783/158 532/781/158 +f 536/783/161 537/777/161 533/779/161 +f 535/784/156 534/932/156 530/785/156 +f 539/786/161 541/789/161 540/787/161 +f 541/789/171 545/933/171 542/790/171 +f 538/788/154 543/934/154 544/791/154 +f 541/789/157 539/786/157 544/792/157 +f 540/787/158 542/935/158 543/794/158 +f 561/795/154 559/817/154 584/796/154 +f 560/800/155 546/936/155 548/937/155 +f 548/937/155 550/938/155 560/800/155 +f 550/938/155 552/798/155 560/800/155 +f 552/798/155 554/939/155 556/799/155 +f 556/799/155 558/940/155 560/800/155 +f 570/803/154 571/941/154 572/942/154 +f 572/942/154 573/943/154 574/801/154 +f 574/801/154 575/944/154 576/802/154 +f 576/802/154 577/945/154 570/803/154 +f 570/803/154 572/942/154 574/801/154 +f 551/804/154 549/813/154 578/805/154 +f 557/807/154 555/946/154 582/808/154 +f 561/795/154 585/947/154 579/810/154 +f 547/811/154 579/948/154 578/812/154 +f 551/804/154 580/949/154 581/814/154 +f 557/807/154 583/950/154 584/816/154 +f 553/815/154 581/951/154 582/818/154 +f 588/822/154 586/952/154 587/953/154 +f 587/953/154 593/954/154 588/822/154 +f 593/954/154 592/955/154 588/822/154 +f 592/955/154 591/956/154 588/822/154 +f 591/956/154 590/820/154 588/822/154 +f 604/823/154 606/957/154 607/824/154 +f 600/826/155 610/958/155 611/827/155 +f 627/829/155 617/959/155 616/830/155 +f 608/832/154 609/835/154 601/833/154 +f 607/824/154 608/832/154 602/834/154 +f 609/835/154 594/960/154 605/836/154 +f 613/837/155 596/841/155 598/838/155 +f 612/840/155 595/842/155 596/841/155 +f 611/827/155 610/958/155 595/842/155 +f 623/843/154 621/961/154 620/844/154 +f 619/846/154 618/849/154 626/847/154 +f 620/844/154 619/846/154 625/848/154 +f 618/849/154 633/962/154 622/850/154 +f 614/851/155 631/855/155 629/852/155 +f 615/854/155 632/856/155 631/855/155 +f 616/830/155 617/959/155 632/856/155 s 1 -f 589/651/6 453/652/25 588/653/25 -f 593/654/7 449/655/26 592/656/26 -f 596/657/27 446/658/9 595/659/9 -f 600/660/28 442/661/11 599/662/11 -f 588/653/25 454/663/10 587/664/10 -f 592/656/26 450/665/12 591/666/12 -f 595/659/9 447/667/29 594/668/29 -f 599/662/11 443/669/30 598/670/30 -f 587/664/10 455/671/31 586/672/31 -f 591/666/12 451/673/32 590/674/32 -f 594/668/29 448/675/7 593/676/7 -f 598/670/30 444/677/8 597/678/8 -f 585/679/3 441/680/28 600/660/28 -f 597/678/8 445/681/27 596/657/27 -f 590/674/32 452/682/6 589/651/6 -f 586/672/31 456/683/3 585/679/3 -f 36/475/27 53/61/8 37/19/8 -f 44/39/25 61/47/6 45/42/6 -f 37/19/8 54/63/30 38/476/30 -f 45/42/6 62/46/32 46/474/32 -f 38/476/30 55/65/11 39/24/11 -f 46/474/32 63/49/12 47/2/12 -f 39/24/11 56/67/28 40/477/28 -f 47/2/12 64/51/26 48/5/26 -f 40/477/28 57/69/3 41/29/3 -f 33/9/7 50/55/29 34/12/29 -f 48/5/26 49/53/7 33/9/7 -f 41/478/3 58/71/31 42/32/31 -f 34/12/29 51/57/9 35/15/9 -f 42/32/31 59/74/10 43/36/10 -f 35/15/9 52/59/27 36/475/27 -f 43/36/10 60/76/25 44/39/25 -f 92/684/8 100/685/27 93/686/27 -f 84/687/6 108/688/25 85/689/25 -f 91/690/30 101/691/8 92/684/8 -f 83/692/32 109/693/6 84/687/6 -f 90/694/11 102/695/30 91/690/30 -f 82/696/12 110/697/32 83/692/32 -f 89/698/28 103/699/11 90/694/11 -f 81/700/26 111/701/12 82/696/12 -f 88/702/3 104/703/28 89/698/28 -f 95/704/29 97/705/7 96/706/7 -f 96/706/7 112/707/26 81/700/26 -f 87/708/31 105/709/3 88/710/3 -f 94/711/9 98/712/29 95/704/29 -f 86/713/10 106/714/31 87/708/31 -f 93/686/27 99/715/9 94/711/9 -f 85/689/25 107/716/10 86/713/10 -f 183/717/33 198/718/34 199/719/33 -f 175/720/35 192/721/36 176/722/36 -f 183/717/33 200/723/37 184/724/37 -f 176/722/36 193/725/38 177/726/38 -f 170/727/39 185/728/40 186/729/39 -f 184/724/37 185/730/40 169/731/40 -f 178/732/41 193/733/38 194/734/41 -f 171/735/42 186/736/39 187/737/42 -f 178/732/41 195/738/43 179/739/43 -f 172/740/44 187/741/42 188/742/44 -f 179/739/43 196/743/45 180/744/45 -f 172/740/44 189/745/46 173/746/46 -f 180/744/45 197/747/47 181/748/47 -f 174/749/48 189/750/46 190/751/48 -f 182/752/34 197/753/47 198/754/34 -f 174/749/48 191/755/35 175/720/35 -f 196/756/25 213/757/6 197/758/6 -f 189/759/8 206/760/30 190/761/30 -f 197/758/6 214/762/32 198/763/32 -f 190/761/30 207/764/11 191/765/11 -f 198/763/32 215/766/12 199/767/12 -f 191/765/11 208/768/28 192/769/28 -f 199/767/12 216/770/26 200/771/26 -f 192/769/28 209/772/3 193/773/3 -f 185/774/7 202/775/29 186/776/29 -f 200/771/26 201/777/7 185/774/7 -f 193/733/3 210/778/31 194/734/31 -f 186/776/29 203/779/9 187/780/9 -f 194/734/31 211/781/10 195/782/10 -f 187/780/9 204/783/27 188/784/27 -f 195/782/10 212/785/25 196/756/25 -f 188/784/27 205/786/8 189/759/8 -f 230/787/49 215/766/50 214/762/49 -f 231/788/50 216/770/51 215/766/50 -f 232/789/51 201/777/52 216/770/51 -f 217/790/52 202/775/53 201/777/52 -f 218/791/53 203/779/54 202/775/53 -f 203/779/54 220/792/55 204/783/55 -f 220/793/55 205/786/56 204/783/55 -f 205/786/56 222/794/57 206/760/57 -f 222/795/57 207/764/58 206/760/57 -f 207/764/58 224/796/59 208/768/59 -f 224/797/59 209/772/60 208/768/59 -f 209/798/60 226/799/61 210/778/61 -f 210/778/61 227/800/62 211/781/62 -f 227/801/62 212/785/63 211/781/62 -f 228/802/63 213/757/64 212/785/63 -f 213/757/64 230/803/49 214/762/49 -f 73/804/7 242/182/29 74/805/29 -f 66/806/31 235/169/10 67/807/10 -f 74/805/29 243/181/9 75/808/9 -f 67/807/10 236/191/25 68/809/25 -f 75/808/9 244/179/27 76/810/27 -f 68/809/25 237/190/6 69/811/6 -f 76/810/27 245/178/8 77/812/8 -f 69/811/6 238/188/32 70/813/32 -f 77/812/8 246/176/30 78/814/30 -f 70/813/32 239/187/12 71/815/12 -f 78/814/30 247/175/11 79/816/11 -f 71/815/12 240/185/26 72/817/26 -f 79/816/11 248/171/28 80/818/28 -f 72/817/26 241/184/7 73/819/7 -f 65/820/3 234/170/31 66/806/31 -f 80/818/28 233/173/3 65/820/3 -f 263/821/65 393/822/66 394/823/65 -f 257/824/67 399/825/68 400/826/67 -f 407/827/69 251/828/70 406/829/70 -f 255/830/71 401/831/72 402/832/71 -f 249/833/73 407/827/69 408/834/73 -f 261/835/74 395/836/75 396/837/74 -f 401/831/72 257/838/67 400/839/67 -f 251/840/70 405/841/76 406/829/70 -f 398/842/77 260/843/78 397/844/78 -f 253/845/79 403/846/80 404/847/79 -f 403/846/80 255/848/71 402/832/71 -f 397/844/78 261/849/74 396/837/74 -f 393/822/66 249/850/73 408/834/73 -f 262/851/75 394/823/65 395/836/75 -f 399/825/68 259/852/77 398/842/77 -f 405/841/76 253/853/79 404/847/79 -f 322/854/81 331/855/82 330/856/83 -f 327/857/21 336/858/84 335/859/85 -f 326/860/86 333/861/87 325/862/1 -f 324/863/88 331/855/82 323/864/22 -f 321/865/2 330/856/83 329/866/89 -f 321/865/2 336/858/84 328/867/90 -f 326/860/86 335/859/85 334/868/91 -f 325/869/1 332/870/92 324/863/88 -f 334/868/91 341/871/93 333/861/87 -f 331/855/82 340/872/94 339/873/95 -f 329/866/89 338/874/96 337/875/97 -f 329/866/89 344/876/98 336/858/84 -f 335/859/85 342/877/99 334/868/91 -f 332/870/92 341/878/93 340/872/94 -f 330/856/83 339/873/95 338/874/96 -f 336/858/84 343/879/100 335/859/85 -f 343/879/100 352/880/90 351/881/21 -f 341/871/93 350/882/86 349/883/1 -f 339/873/95 348/265/88 347/884/22 -f 337/875/97 346/885/81 345/886/2 -f 337/875/97 352/880/90 344/876/98 -f 342/877/99 351/881/21 350/882/86 -f 341/878/93 348/265/88 340/872/94 -f 339/873/95 346/885/81 338/874/96 -f 354/270/81 361/887/2 353/279/2 -f 353/279/2 368/888/90 360/272/90 -f 359/263/21 366/889/86 358/264/86 -f 357/266/1 364/890/88 356/267/88 -f 354/270/81 363/891/22 362/892/81 -f 359/263/21 368/888/90 367/893/21 -f 357/274/1 366/889/86 365/894/1 -f 356/267/88 363/891/22 355/269/22 -f 434/895/31 419/323/10 418/325/31 -f 427/896/9 412/357/27 411/320/9 -f 435/897/10 420/355/25 419/323/10 -f 428/898/27 413/348/8 412/357/27 -f 436/899/25 421/351/6 420/355/25 -f 429/900/8 414/343/30 413/348/8 -f 437/901/6 422/347/32 421/351/6 -f 430/902/30 415/338/11 414/343/30 -f 438/903/32 423/342/12 422/347/32 -f 431/904/11 416/333/28 415/338/11 -f 439/905/12 424/337/26 423/342/12 -f 432/906/28 417/593/3 416/333/28 -f 425/907/7 410/327/29 409/332/7 -f 440/908/26 409/332/7 424/337/26 -f 433/909/3 418/325/31 417/328/3 -f 426/910/29 411/320/9 410/327/29 -f 498/420/7 499/911/12 497/912/7 -f 500/422/12 501/913/6 499/911/12 -f 502/413/6 503/914/10 501/913/6 -f 504/424/10 505/915/3 503/914/10 -f 506/619/3 507/916/11 505/917/3 -f 508/416/11 509/918/8 507/916/11 -f 510/426/8 511/919/9 509/918/8 -f 512/404/9 497/912/7 511/919/9 -f 513/920/7 528/921/12 520/922/12 -f 519/923/6 526/924/10 518/925/10 -f 517/926/3 524/927/11 516/928/11 -f 515/929/8 522/930/9 514/931/9 -f 520/922/12 527/932/6 519/923/6 -f 518/925/10 525/933/3 517/934/3 -f 516/928/11 523/935/8 515/929/8 -f 514/931/9 521/936/7 513/920/7 -f 534/623/11 543/937/8 535/425/8 -f 532/624/10 541/938/3 533/427/3 -f 529/414/12 539/939/6 531/415/6 -f 535/405/8 544/940/9 536/406/9 -f 533/417/3 542/941/11 534/418/11 -f 531/622/6 540/942/10 532/423/10 -f 530/621/7 537/943/12 529/421/12 -f 536/620/9 538/944/7 530/419/7 -f 560/444/26 548/448/101 545/633/101 -f 557/630/102 562/436/32 558/433/32 -f 558/433/32 563/449/12 559/441/12 -f 559/441/12 564/446/26 560/444/26 -f 18/945/31 601/946/3 17/947/3 -f 20/948/25 603/949/10 19/950/10 -f 22/951/32 605/952/6 21/953/6 -f 17/947/3 616/954/28 32/955/28 -f 26/956/29 609/957/7 25/958/7 -f 21/953/6 604/959/25 20/948/25 -f 24/960/26 607/961/12 23/962/12 -f 30/963/30 613/964/8 29/965/8 -f 31/966/11 614/967/30 30/963/30 -f 25/968/7 608/969/26 24/960/26 -f 19/950/10 602/970/31 18/945/31 -f 28/971/27 611/972/9 27/973/9 -f 23/962/12 606/974/32 22/951/32 -f 29/965/8 612/975/27 28/971/27 -f 32/955/28 615/976/11 31/966/11 -f 27/973/9 610/977/29 26/956/29 -f 395/836/32 620/978/6 396/837/6 -f 397/844/25 622/979/10 398/842/10 -f 400/839/3 625/980/28 401/831/28 -f 403/846/30 628/981/8 404/847/8 -f 405/841/27 630/982/9 406/829/9 -f 402/832/11 627/983/30 403/846/30 -f 393/822/26 618/984/12 394/823/12 -f 396/837/6 621/985/25 397/844/25 -f 399/825/31 624/986/3 400/826/3 -f 408/834/7 617/987/26 393/822/26 -f 406/829/9 631/988/29 407/827/29 -f 394/823/12 619/989/32 395/836/32 -f 401/831/28 626/990/11 402/832/11 -f 404/847/8 629/991/27 405/841/27 -f 407/827/29 632/992/7 408/834/7 -f 398/842/10 623/993/31 399/825/31 -f 623/993/103 640/994/104 624/986/105 -f 631/988/106 648/995/107 632/992/108 -f 627/983/109 642/996/110 643/997/111 -f 619/989/112 636/998/113 620/978/114 -f 617/987/115 648/999/107 633/1000/116 -f 619/989/112 634/1001/117 635/1002/118 -f 625/980/119 642/1003/110 626/990/120 -f 623/993/103 638/1004/121 639/1005/122 -f 625/980/119 640/1006/104 641/1007/123 -f 621/985/124 638/1008/121 622/979/125 -f 629/991/126 646/1009/127 630/982/128 -f 617/987/115 634/1010/117 618/984/129 -f 620/978/114 637/1011/130 621/985/124 -f 628/981/131 645/1012/132 629/991/126 -f 631/988/106 646/1013/127 647/1014/133 -f 627/983/109 644/1015/134 628/981/131 -f 644/1016/134 649/1017/1 645/1012/132 -f 646/1013/127 649/1018/1 647/1014/133 -f 639/1019/122 649/1020/1 640/994/104 -f 647/1021/133 649/1022/1 648/995/107 -f 642/996/110 649/1023/1 643/997/111 -f 635/1024/118 649/1025/1 636/998/113 -f 648/999/107 649/1026/1 633/1000/116 -f 634/1001/117 649/1027/1 635/1002/118 -f 641/1028/123 649/1029/1 642/1003/110 -f 638/1004/121 649/1030/1 639/1005/122 -f 640/1006/104 649/1031/1 641/1007/123 -f 637/1032/130 649/1033/1 638/1008/121 -f 645/1034/132 649/1035/1 646/1009/127 -f 633/1036/116 649/1037/1 634/1010/117 -f 636/1038/113 649/1039/1 637/1011/130 -f 643/1040/111 649/1041/1 644/1015/134 -f 569/466/26 581/470/101 584/650/101 -f 572/634/102 567/439/32 571/453/32 -f 571/453/32 566/471/12 570/463/12 -f 570/463/12 565/468/26 569/466/26 -f 589/651/6 452/682/6 453/652/25 -f 593/654/7 448/1042/7 449/655/26 -f 596/657/27 445/681/27 446/658/9 -f 600/660/28 441/680/28 442/661/11 -f 588/653/25 453/652/25 454/663/10 -f 592/656/26 449/655/26 450/665/12 -f 595/659/9 446/658/9 447/667/29 -f 599/662/11 442/661/11 443/669/30 -f 587/664/10 454/663/10 455/671/31 -f 591/666/12 450/665/12 451/673/32 -f 594/668/29 447/667/29 448/675/7 -f 598/670/30 443/669/30 444/677/8 -f 585/679/3 456/683/3 441/680/28 -f 597/678/8 444/677/8 445/681/27 -f 590/674/32 451/673/32 452/682/6 -f 586/672/31 455/671/31 456/683/3 -f 36/475/27 52/59/27 53/61/8 -f 44/39/25 60/76/25 61/47/6 -f 37/19/8 53/61/8 54/63/30 -f 45/42/6 61/47/6 62/46/32 -f 38/476/30 54/63/30 55/65/11 -f 46/474/32 62/46/32 63/49/12 -f 39/24/11 55/65/11 56/67/28 -f 47/2/12 63/49/12 64/51/26 -f 40/477/28 56/67/28 57/69/3 -f 33/9/7 49/53/7 50/55/29 -f 48/5/26 64/51/26 49/53/7 -f 41/478/3 57/72/3 58/71/31 -f 34/12/29 50/55/29 51/57/9 -f 42/32/31 58/71/31 59/74/10 -f 35/15/9 51/57/9 52/59/27 -f 43/36/10 59/74/10 60/76/25 -f 92/684/8 101/691/8 100/685/27 -f 84/687/6 109/693/6 108/688/25 -f 91/690/30 102/695/30 101/691/8 -f 83/692/32 110/697/32 109/693/6 -f 90/694/11 103/699/11 102/695/30 -f 82/696/12 111/701/12 110/697/32 -f 89/698/28 104/703/28 103/699/11 -f 81/700/26 112/707/26 111/701/12 -f 88/702/3 105/1043/3 104/703/28 -f 95/704/29 98/712/29 97/705/7 -f 96/706/7 97/705/7 112/707/26 -f 87/708/31 106/714/31 105/709/3 -f 94/711/9 99/715/9 98/712/29 -f 86/713/10 107/716/10 106/714/31 -f 93/686/27 100/685/27 99/715/9 -f 85/689/25 108/688/25 107/716/10 -f 183/717/33 182/752/34 198/718/34 -f 175/720/35 191/1044/35 192/721/36 -f 183/717/33 199/1045/33 200/723/37 -f 176/722/36 192/1046/36 193/725/38 -f 170/727/39 169/731/40 185/728/40 -f 184/724/37 200/1047/37 185/730/40 -f 178/732/41 177/1048/38 193/733/38 -f 171/735/42 170/727/39 186/736/39 -f 178/732/41 194/1049/41 195/738/43 -f 172/740/44 171/735/42 187/741/42 -f 179/739/43 195/1050/43 196/743/45 -f 172/740/44 188/1051/44 189/745/46 -f 180/744/45 196/1052/45 197/747/47 -f 174/749/48 173/746/46 189/750/46 -f 182/752/34 181/748/47 197/753/47 -f 174/749/48 190/1053/48 191/755/35 -f 196/756/25 212/785/25 213/757/6 -f 189/759/8 205/786/8 206/760/30 -f 197/758/6 213/757/6 214/762/32 -f 190/761/30 206/760/30 207/764/11 -f 198/763/32 214/762/32 215/766/12 -f 191/765/11 207/764/11 208/768/28 -f 199/767/12 215/766/12 216/770/26 -f 192/769/28 208/768/28 209/772/3 -f 185/774/7 201/777/7 202/775/29 -f 200/771/26 216/770/26 201/777/7 -f 193/733/3 209/798/3 210/778/31 -f 186/776/29 202/775/29 203/779/9 -f 194/734/31 210/778/31 211/781/10 -f 187/780/9 203/779/9 204/783/27 -f 195/782/10 211/781/10 212/785/25 -f 188/784/27 204/783/27 205/786/8 -f 230/787/49 231/1054/50 215/766/50 -f 231/788/50 232/1055/51 216/770/51 -f 232/789/51 217/1056/52 201/777/52 -f 217/790/52 218/1057/53 202/775/53 -f 218/791/53 219/1058/54 203/779/54 -f 203/779/54 219/1059/54 220/792/55 -f 220/793/55 221/1060/56 205/786/56 -f 205/786/56 221/1061/56 222/794/57 -f 222/795/57 223/1062/58 207/764/58 -f 207/764/58 223/1063/58 224/796/59 -f 224/797/59 225/1064/60 209/772/60 -f 209/798/60 225/1065/60 226/799/61 -f 210/778/61 226/1066/61 227/800/62 -f 227/801/62 228/1067/63 212/785/63 -f 228/802/63 229/1068/64 213/757/64 -f 213/757/64 229/1069/64 230/803/49 -f 73/804/7 241/192/7 242/182/29 -f 66/806/31 234/170/31 235/169/10 -f 74/805/29 242/182/29 243/181/9 -f 67/807/10 235/169/10 236/191/25 -f 75/808/9 243/181/9 244/179/27 -f 68/809/25 236/191/25 237/190/6 -f 76/810/27 244/179/27 245/178/8 -f 69/811/6 237/190/6 238/188/32 -f 77/812/8 245/178/8 246/176/30 -f 70/813/32 238/188/32 239/187/12 -f 78/814/30 246/176/30 247/175/11 -f 71/815/12 239/187/12 240/185/26 -f 79/816/11 247/175/11 248/171/28 -f 72/817/26 240/185/26 241/184/7 -f 65/820/3 233/173/3 234/170/31 -f 80/818/28 248/171/28 233/173/3 -f 263/821/65 264/1070/66 393/822/66 -f 257/824/67 258/1071/68 399/825/68 -f 407/827/69 250/1072/69 251/828/70 -f 255/830/71 256/1073/72 401/831/72 -f 249/833/73 250/1074/69 407/827/69 -f 261/835/74 262/1075/75 395/836/75 -f 401/831/72 256/1076/72 257/838/67 -f 251/840/70 252/1077/76 405/841/76 -f 398/842/77 259/1078/77 260/843/78 -f 253/845/79 254/1079/80 403/846/80 -f 403/846/80 254/1080/80 255/848/71 -f 397/844/78 260/1081/78 261/849/74 -f 393/822/66 264/1082/66 249/850/73 -f 262/851/75 263/1083/65 394/823/65 -f 399/825/68 258/1084/68 259/852/77 -f 405/841/76 252/1085/76 253/853/79 -f 322/854/81 323/864/22 331/855/82 -f 327/857/21 328/867/90 336/858/84 -f 326/860/86 334/868/91 333/861/87 -f 324/863/88 332/870/92 331/855/82 -f 321/865/2 322/854/81 330/856/83 -f 321/865/2 329/866/89 336/858/84 -f 326/860/86 327/857/21 335/859/85 -f 325/869/1 333/1086/87 332/870/92 -f 334/868/91 342/877/99 341/871/93 -f 331/855/82 332/870/92 340/872/94 -f 329/866/89 330/856/83 338/874/96 -f 329/866/89 337/875/97 344/876/98 -f 335/859/85 343/879/100 342/877/99 -f 332/870/92 333/1086/87 341/878/93 -f 330/856/83 331/855/82 339/873/95 -f 336/858/84 344/876/98 343/879/100 -f 343/879/100 344/876/98 352/880/90 -f 341/871/93 342/877/99 350/882/86 -f 339/873/95 340/872/94 348/265/88 -f 337/875/97 338/874/96 346/885/81 -f 337/875/97 345/886/2 352/880/90 -f 342/877/99 343/879/100 351/881/21 -f 341/878/93 349/574/1 348/265/88 -f 339/873/95 347/884/22 346/885/81 -f 354/270/81 362/892/81 361/887/2 -f 353/279/2 361/887/2 368/888/90 -f 359/263/21 367/893/21 366/889/86 -f 357/266/1 365/1087/1 364/890/88 -f 354/270/81 355/269/22 363/891/22 -f 359/263/21 360/272/90 368/888/90 -f 357/274/1 358/264/86 366/889/86 -f 356/267/88 364/890/88 363/891/22 -f 434/895/31 435/897/10 419/323/10 -f 427/896/9 428/898/27 412/357/27 -f 435/897/10 436/899/25 420/355/25 -f 428/898/27 429/900/8 413/348/8 -f 436/899/25 437/901/6 421/351/6 -f 429/900/8 430/902/30 414/343/30 -f 437/901/6 438/903/32 422/347/32 -f 430/902/30 431/904/11 415/338/11 -f 438/903/32 439/905/12 423/342/12 -f 431/904/11 432/906/28 416/333/28 -f 439/905/12 440/908/26 424/337/26 -f 432/906/28 433/1088/3 417/593/3 -f 425/907/7 426/910/29 410/327/29 -f 440/908/26 425/907/7 409/332/7 -f 433/909/3 434/895/31 418/325/31 -f 426/910/29 427/896/9 411/320/9 -f 498/420/7 500/422/12 499/911/12 -f 500/422/12 502/413/6 501/913/6 -f 502/413/6 504/424/10 503/914/10 -f 504/424/10 506/428/3 505/915/3 -f 506/619/3 508/416/11 507/916/11 -f 508/416/11 510/426/8 509/918/8 -f 510/426/8 512/404/9 511/919/9 -f 512/404/9 498/420/7 497/912/7 -f 513/920/7 521/936/7 528/921/12 -f 519/923/6 527/932/6 526/924/10 -f 517/926/3 525/1089/3 524/927/11 -f 515/929/8 523/935/8 522/930/9 -f 520/922/12 528/921/12 527/932/6 -f 518/925/10 526/924/10 525/933/3 -f 516/928/11 524/927/11 523/935/8 -f 514/931/9 522/930/9 521/936/7 -f 534/623/11 542/1090/11 543/937/8 -f 532/624/10 540/1091/10 541/938/3 -f 529/414/12 537/1092/12 539/939/6 -f 535/405/8 543/1093/8 544/940/9 -f 533/417/3 541/1094/3 542/941/11 -f 531/622/6 539/1095/6 540/942/10 -f 530/621/7 538/1096/7 537/943/12 -f 536/620/9 544/1097/9 538/944/7 -f 560/444/26 564/446/26 548/448/101 -f 557/630/102 550/437/102 562/436/32 -f 558/433/32 562/436/32 563/449/12 -f 559/441/12 563/449/12 564/446/26 -f 18/945/31 602/970/31 601/946/3 -f 20/948/25 604/959/25 603/949/10 -f 22/951/32 606/974/32 605/952/6 -f 17/947/3 601/946/3 616/954/28 -f 26/956/29 610/977/29 609/957/7 -f 21/953/6 605/952/6 604/959/25 -f 24/960/26 608/969/26 607/961/12 -f 30/963/30 614/967/30 613/964/8 -f 31/966/11 615/976/11 614/967/30 -f 25/968/7 609/1098/7 608/969/26 -f 19/950/10 603/949/10 602/970/31 -f 28/971/27 612/975/27 611/972/9 -f 23/962/12 607/961/12 606/974/32 -f 29/965/8 613/964/8 612/975/27 -f 32/955/28 616/954/28 615/976/11 -f 27/973/9 611/972/9 610/977/29 -f 395/836/32 619/989/32 620/978/6 -f 397/844/25 621/985/25 622/979/10 -f 400/839/3 624/1099/3 625/980/28 -f 403/846/30 627/983/30 628/981/8 -f 405/841/27 629/991/27 630/982/9 -f 402/832/11 626/990/11 627/983/30 -f 393/822/26 617/987/26 618/984/12 -f 396/837/6 620/978/6 621/985/25 -f 399/825/31 623/993/31 624/986/3 -f 408/834/7 632/992/7 617/987/26 -f 406/829/9 630/982/9 631/988/29 -f 394/823/12 618/984/12 619/989/32 -f 401/831/28 625/980/28 626/990/11 -f 404/847/8 628/981/8 629/991/27 -f 407/827/29 631/988/29 632/992/7 -f 398/842/10 622/979/10 623/993/31 -f 623/993/103 639/1019/122 640/994/104 -f 631/988/106 647/1021/133 648/995/107 -f 627/983/109 626/990/120 642/996/110 -f 619/989/112 635/1024/118 636/998/113 -f 617/987/115 632/992/108 648/999/107 -f 619/989/112 618/984/129 634/1001/117 -f 625/980/119 641/1028/123 642/1003/110 -f 623/993/103 622/979/125 638/1004/121 -f 625/980/119 624/1099/105 640/1006/104 -f 621/985/124 637/1032/130 638/1008/121 -f 629/991/126 645/1034/132 646/1009/127 -f 617/987/115 633/1036/116 634/1010/117 -f 620/978/114 636/1038/113 637/1011/130 -f 628/981/131 644/1016/134 645/1012/132 -f 631/988/106 630/982/128 646/1013/127 -f 627/983/109 643/1040/111 644/1015/134 -f 569/466/26 565/468/26 581/470/101 -f 572/634/102 579/440/102 567/439/32 -f 571/453/32 567/439/32 566/471/12 -f 570/463/12 566/471/12 565/468/26 +f 317/858/172 334/582/158 318/540/158 +f 325/560/173 342/568/157 326/563/157 +f 318/540/158 335/584/174 319/859/174 +f 326/563/157 343/567/175 327/857/175 +f 319/859/174 336/586/176 320/545/176 +f 327/857/175 344/570/177 328/523/177 +f 320/545/176 337/588/178 321/860/178 +f 328/523/177 345/572/179 329/526/179 +f 321/860/178 338/590/156 322/550/156 +f 314/530/161 331/576/180 315/533/180 +f 329/526/179 330/574/161 314/530/161 +f 322/861/156 339/592/181 323/553/181 +f 315/533/180 332/578/182 316/536/182 +f 323/553/181 340/595/183 324/557/183 +f 316/536/182 333/580/172 317/858/172 +f 324/557/183 341/597/173 325/560/173 +f 354/963/161 371/613/180 355/964/180 +f 347/965/181 364/600/183 348/966/183 +f 355/964/180 372/612/182 356/967/182 +f 348/966/183 365/622/173 349/968/173 +f 356/967/182 373/610/172 357/969/172 +f 349/968/173 366/621/157 350/970/157 +f 357/969/172 374/609/158 358/971/158 +f 350/970/157 367/619/175 351/972/175 +f 358/971/158 375/607/174 359/973/174 +f 351/972/175 368/618/177 352/974/177 +f 359/973/174 376/606/176 360/975/176 +f 352/974/177 369/616/179 353/976/179 +f 360/975/176 377/602/178 361/977/178 +f 353/976/179 370/615/161 354/978/161 +f 346/979/156 363/601/181 347/965/181 +f 361/977/178 362/604/156 346/979/156 +f 435/980/184 444/981/185 443/982/186 +f 440/983/168 449/984/187 448/985/188 +f 439/986/189 446/987/190 438/988/154 +f 437/989/191 444/981/185 436/990/169 +f 434/991/155 443/982/186 442/992/192 +f 434/991/155 449/984/187 441/993/193 +f 439/986/189 448/985/188 447/994/194 +f 438/995/154 445/996/195 437/989/191 +f 447/994/194 454/997/196 446/987/190 +f 444/981/185 453/998/197 452/999/198 +f 442/992/192 451/1000/199 450/1001/200 +f 442/992/192 457/1002/201 449/984/187 +f 448/985/188 455/1003/202 447/994/194 +f 445/996/195 454/1004/196 453/998/197 +f 443/982/186 452/999/198 451/1000/199 +f 449/984/187 456/1005/203 448/985/188 +f 456/1005/203 465/1006/193 464/1007/168 +f 454/997/196 463/1008/189 462/1009/154 +f 452/999/198 461/696/191 460/1010/169 +f 450/1001/200 459/1011/184 458/1012/155 +f 450/1001/200 465/1006/193 457/1002/201 +f 455/1003/202 464/1007/168 463/1008/189 +f 454/1004/196 461/696/191 453/998/197 +f 452/999/198 459/1011/184 451/1000/199 +f 467/701/184 474/1013/155 466/710/155 +f 466/710/155 481/1014/193 473/703/193 +f 472/694/168 479/1015/189 471/695/189 +f 470/697/154 477/1016/191 469/698/191 +f 467/701/184 476/1017/169 475/1018/184 +f 472/694/168 481/1014/193 480/1019/168 +f 470/705/154 479/1015/189 478/1020/154 +f 469/698/191 476/1017/169 468/700/169 +f 547/811/161 548/1021/177 546/1022/161 +f 549/813/177 550/1023/157 548/1021/177 +f 551/804/157 552/1024/183 550/1023/157 +f 553/815/183 554/1025/156 552/1024/183 +f 555/946/156 556/1026/176 554/1027/156 +f 557/807/176 558/1028/158 556/1026/176 +f 559/817/158 560/1029/182 558/1028/158 +f 561/795/182 546/1022/161 560/1029/182 +f 562/1030/161 577/1031/177 569/1032/177 +f 568/1033/157 575/1034/183 567/1035/183 +f 566/1036/156 573/1037/176 565/1038/176 +f 564/1039/158 571/1040/182 563/1041/182 +f 569/1032/177 576/1042/157 568/1033/157 +f 567/1035/183 574/1043/156 566/1044/156 +f 565/1038/176 572/1045/158 564/1039/158 +f 563/1041/182 570/1046/161 562/1030/161 +f 583/950/176 592/1047/158 584/816/158 +f 581/951/183 590/1048/156 582/818/156 +f 578/805/177 588/1049/157 580/806/157 +f 584/796/158 593/1050/182 585/797/182 +f 582/808/156 591/1051/176 583/809/176 +f 580/949/157 589/1052/183 581/814/183 +f 579/948/161 586/1053/177 578/812/177 +f 585/947/182 587/1054/161 579/810/161 +f 609/835/179 597/839/204 594/960/204 +f 606/957/205 611/827/175 607/824/175 +f 607/824/175 612/840/177 608/832/177 +f 608/832/177 613/837/179 609/835/179 +f 299/1055/181 634/1056/156 298/1057/156 +f 301/1058/173 636/1059/183 300/1060/183 +f 303/1061/175 638/1062/157 302/1063/157 +f 298/1057/156 649/1064/178 313/1065/178 +f 307/1066/180 642/1067/161 306/1068/161 +f 302/1063/157 637/1069/173 301/1058/173 +f 305/1070/179 640/1071/177 304/1072/177 +f 311/1073/174 646/1074/158 310/1075/158 +f 312/1076/176 647/1077/174 311/1073/174 +f 306/1078/161 641/1079/179 305/1070/179 +f 300/1060/183 635/1080/181 299/1055/181 +f 309/1081/172 644/1082/182 308/1083/182 +f 304/1072/177 639/1084/175 303/1061/175 +f 310/1075/158 645/1085/172 309/1081/172 +f 313/1065/178 648/1086/176 312/1076/176 +f 308/1083/182 643/1087/180 307/1066/180 +f 618/849/179 630/853/204 633/962/204 +f 621/961/205 616/830/175 620/844/175 +f 620/844/175 615/854/177 619/846/177 +f 619/846/177 614/851/179 618/849/179 +f 317/858/172 333/580/172 334/582/158 +f 325/560/173 341/597/173 342/568/157 +f 318/540/158 334/582/158 335/584/174 +f 326/563/157 342/568/157 343/567/175 +f 319/859/174 335/584/174 336/586/176 +f 327/857/175 343/567/175 344/570/177 +f 320/545/176 336/586/176 337/588/178 +f 328/523/177 344/570/177 345/572/179 +f 321/860/178 337/588/178 338/590/156 +f 314/530/161 330/574/161 331/576/180 +f 329/526/179 345/572/179 330/574/161 +f 322/861/156 338/593/156 339/592/181 +f 315/533/180 331/576/180 332/578/182 +f 323/553/181 339/592/181 340/595/183 +f 316/536/182 332/578/182 333/580/172 +f 324/557/183 340/595/183 341/597/173 +f 354/963/161 370/623/161 371/613/180 +f 347/965/181 363/601/181 364/600/183 +f 355/964/180 371/613/180 372/612/182 +f 348/966/183 364/600/183 365/622/173 +f 356/967/182 372/612/182 373/610/172 +f 349/968/173 365/622/173 366/621/157 +f 357/969/172 373/610/172 374/609/158 +f 350/970/157 366/621/157 367/619/175 +f 358/971/158 374/609/158 375/607/174 +f 351/972/175 367/619/175 368/618/177 +f 359/973/174 375/607/174 376/606/176 +f 352/974/177 368/618/177 369/616/179 +f 360/975/176 376/606/176 377/602/178 +f 353/976/179 369/616/179 370/615/161 +f 346/979/156 362/604/156 363/601/181 +f 361/977/178 377/602/178 362/604/156 +f 435/980/184 436/990/169 444/981/185 +f 440/983/168 441/993/193 449/984/187 +f 439/986/189 447/994/194 446/987/190 +f 437/989/191 445/996/195 444/981/185 +f 434/991/155 435/980/184 443/982/186 +f 434/991/155 442/992/192 449/984/187 +f 439/986/189 440/983/168 448/985/188 +f 438/995/154 446/1088/190 445/996/195 +f 447/994/194 455/1003/202 454/997/196 +f 444/981/185 445/996/195 453/998/197 +f 442/992/192 443/982/186 451/1000/199 +f 442/992/192 450/1001/200 457/1002/201 +f 448/985/188 456/1005/203 455/1003/202 +f 445/996/195 446/1088/190 454/1004/196 +f 443/982/186 444/981/185 452/999/198 +f 449/984/187 457/1002/201 456/1005/203 +f 456/1005/203 457/1002/201 465/1006/193 +f 454/997/196 455/1003/202 463/1008/189 +f 452/999/198 453/998/197 461/696/191 +f 450/1001/200 451/1000/199 459/1011/184 +f 450/1001/200 458/1012/155 465/1006/193 +f 455/1003/202 456/1005/203 464/1007/168 +f 454/1004/196 462/910/154 461/696/191 +f 452/999/198 460/1010/169 459/1011/184 +f 467/701/184 475/1018/184 474/1013/155 +f 466/710/155 474/1013/155 481/1014/193 +f 472/694/168 480/1019/168 479/1015/189 +f 470/697/154 478/1089/154 477/1016/191 +f 467/701/184 468/700/169 476/1017/169 +f 472/694/168 473/703/193 481/1014/193 +f 470/705/154 471/695/189 479/1015/189 +f 469/698/191 477/1016/191 476/1017/169 +f 547/811/161 549/813/177 548/1021/177 +f 549/813/177 551/804/157 550/1023/157 +f 551/804/157 553/815/183 552/1024/183 +f 553/815/183 555/819/156 554/1025/156 +f 555/946/156 557/807/176 556/1026/176 +f 557/807/176 559/817/158 558/1028/158 +f 559/817/158 561/795/182 560/1029/182 +f 561/795/182 547/811/161 546/1022/161 +f 562/1030/161 570/1046/161 577/1031/177 +f 568/1033/157 576/1042/157 575/1034/183 +f 566/1036/156 574/1090/156 573/1037/176 +f 564/1039/158 572/1045/158 571/1040/182 +f 569/1032/177 577/1031/177 576/1042/157 +f 567/1035/183 575/1034/183 574/1043/156 +f 565/1038/176 573/1037/176 572/1045/158 +f 563/1041/182 571/1040/182 570/1046/161 +f 583/950/176 591/1091/176 592/1047/158 +f 581/951/183 589/1092/183 590/1048/156 +f 578/805/177 586/1093/177 588/1049/157 +f 584/796/158 592/1094/158 593/1050/182 +f 582/808/156 590/1095/156 591/1051/176 +f 580/949/157 588/1096/157 589/1052/183 +f 579/948/161 587/1097/161 586/1053/177 +f 585/947/182 593/1098/182 587/1054/161 +f 609/835/179 613/837/179 597/839/204 +f 606/957/205 599/828/205 611/827/175 +f 607/824/175 611/827/175 612/840/177 +f 608/832/177 612/840/177 613/837/179 +f 299/1055/181 635/1080/181 634/1056/156 +f 301/1058/173 637/1069/173 636/1059/183 +f 303/1061/175 639/1084/175 638/1062/157 +f 298/1057/156 634/1056/156 649/1064/178 +f 307/1066/180 643/1087/180 642/1067/161 +f 302/1063/157 638/1062/157 637/1069/173 +f 305/1070/179 641/1079/179 640/1071/177 +f 311/1073/174 647/1077/174 646/1074/158 +f 312/1076/176 648/1086/176 647/1077/174 +f 306/1078/161 642/1099/161 641/1079/179 +f 300/1060/183 636/1059/183 635/1080/181 +f 309/1081/172 645/1085/172 644/1082/182 +f 304/1072/177 640/1071/177 639/1084/175 +f 310/1075/158 646/1074/158 645/1085/172 +f 313/1065/178 649/1064/178 648/1086/176 +f 308/1083/182 644/1082/182 643/1087/180 +f 618/849/179 614/851/179 630/853/204 +f 621/961/205 628/831/205 616/830/175 +f 620/844/175 616/830/175 615/854/177 +f 619/846/177 615/854/177 614/851/179 diff --git a/src/main/resources/assets/hbm/sounds.json b/src/main/resources/assets/hbm/sounds.json index bc5a0237e..6db942cc1 100644 --- a/src/main/resources/assets/hbm/sounds.json +++ b/src/main/resources/assets/hbm/sounds.json @@ -233,6 +233,8 @@ "weapon.fire.tauRelease": {"category": "player", "sounds": ["weapon/fire/tauRelease1", "weapon/fire/tauRelease2", "weapon/fire/tauRelease3"]}, "weapon.fire.fatman": {"category": "player", "sounds": ["weapon/fire/fatman"]}, "weapon.fire.smack": {"category": "player", "sounds": ["weapon/fire/smack"]}, + "weapon.fire.vstar": {"category": "player", "sounds": ["weapon/fire/vstar"]}, + "weapon.fire.loudestNoiseOnEarth": {"category": "player", "sounds": ["weapon/fire/loudestNoiseOnEarth"]}, "weapon.reload.boltClose": {"category": "player", "sounds": ["weapon/reload/boltClose"]}, "weapon.reload.boltOpen": {"category": "player", "sounds": ["weapon/reload/boltOpen"]}, diff --git a/src/main/resources/assets/hbm/sounds/weapon/fire/vstar.ogg b/src/main/resources/assets/hbm/sounds/weapon/fire/vstar.ogg new file mode 100644 index 0000000000000000000000000000000000000000..346ffe2eb5ce5baaa5b3f3e10de09dbe18ab2ac2 GIT binary patch literal 24183 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%0DTmS&jlmMV=2dBsN>jOy(1C!gzCNZJA z_T6yj_plxujBrB>YNGBq<(&$?{Wedf^B(X%`|$q%K9u$*dd+|@g>VSdN5>$^$k5NS zZF9<-z#TR9v@l(ngaLG7X;r2n_Rp`s$9?#WY21=C-9izu#o^jHnGEx>y^+Vy6mum& zHrc*VFV#_d`RwdWxWUL??}(HboA{RjJr|gd)h86sL$>~kj{oUy z$Qoc8*t{5ESb$wpQZJ1Sl;^NN0HFNz7X*9lx`MBu!E>hjlWzg=|Nj6R=hAX^`LDjM zqNkvS=YjA(02&ISLn4fKeh2vqEF_UHNxHiU0+l2HEC7BepWa5#Q{JQs{HKNbK0zBa@zB1e8e2U&jFkdO(6_&`w+s)@b<07T&IyZGz>TSA(J73k#$ zl8&|=Bf?q@vjhMDQ~HN-0q&GKj&DU0!COWC! zWp-Y5?w(iJxotNl`VQha3YJZy=cK5YJhs-(@Krwmm=MOabdwNeYdjv565M_Oa zj#%A@Bixt0=H5@ll?{+r0^P?1V%uV(kN4lVs{sJYUtb#JZUA8a62Mmw0AT-YC;)&U z@Hb-t03i1#R1W9B>@)zebKunHr_L$*6v!k%e|wTFVGRPXq`BZz0G^pWgivSzj7b6d zaRMcEVUl`G5+V8VHo!rR`r1$dKtGO+B(MQ=U3-J1`$<2AUM~OuzBZ)7=K^FjERe;m z4GED#CqM@|+&2IK+KfBhu#XPcU~D$pT4x(I*H!HV000#L;5JVz_Q@&xc#TE3$4R-J z5Zm@Tn`GCPp}sa>tggRBc)dO!(>6M0AB1)J;PCl;2r`}e712RDfFf98tza)q~N6sHy+)>^ju+pEy-hb(qUQX8cL0>RlDHKYXX$6MreVf3j5c)l%6v z6jS@N8S;zB{3bwE6_a({JqCEz?51IIJA7}4nFK+x^fb~<{{zNA(Aj&#p(p?x0>J62 zYTQp10Fb8>005X@z`O%u4uJj|z}L^?-zCWX$rk32003mGKLh}92f!Gi&*w6E018Oow!h_LZohv1 za9eBu0NyqvW6jthf+4FWi$5C@GA5PK7W9yVzX1S5O6%2FmTOxwgt5(LN!v!NnQ=rX z008I*AOS7^*2W3vU;X34y=skwZ&FU}OpRf``n9-z#-o=BH8E(`lo-W=to{AuuDKaD zeS1a*Gh%@0%uCgsEwK(mrCSuB&DW#mP;jR54nlI1RSb|fgqsNVQ#Sy@^7M>|1W6CR z)&{u%C$*0<>&__R$@f;n{X5J;%*PLrdiWjB)y@@Xt{&FDs-1ja_hvbPh}Vo?l$@cv zKR=xv(N)v?&9A9$J_7*v&Nc$q*jlhbH5-tqx9jw-^h}g>*a=+^03 zuC9W+uYSJ_ISzQc`}W_T(*pni2&Vv$=gxetq6YxLhz5X$cx?{=S^^`ea=$%y6hJa^Sl929|0NRWb>CB06sRP+qt-0(-wP)7!r72H4#EDCMRd)hG;NS?jVsbF!i^ z2m_-v2%|U)s65j{PY+B_Pu3M{+RM7E&#r{&L0m859++CKKEA#$6B!UMKR%`(Y{J=_ zQmg{3%1Ynl8@)%Ewsw!^kR?=e05^vH=9H@N5Qvw!|4?-+1o!I9z1eR+F& I+Hy}D0HpsGYXATM literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/models/weapons/moonlight.png b/src/main/resources/assets/hbm/textures/models/weapons/moonlight.png index b4303c8c8d82d4dfc954aa34406dd60743c3277e..36b7c8dc77d30859c3c81ee16e1a89bcad4f2325 100644 GIT binary patch literal 5220 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 From e3d8919df5ed4d33b9c742d6fe763097f9aa79c8 Mon Sep 17 00:00:00 2001 From: Bob Date: Sun, 24 Nov 2024 15:44:40 +0100 Subject: [PATCH 02/24] bullets now determine projectile type, not the guns --- src/main/java/com/hbm/items/ModItems.java | 4 +- .../hbm/items/weapon/sedna/BulletConfig.java | 9 +++ .../com/hbm/items/weapon/sedna/Receiver.java | 1 - .../weapon/sedna/factory/GunFactory.java | 7 ++- .../hbm/items/weapon/sedna/factory/Lego.java | 53 ++++-------------- .../weapon/sedna/factory/Orchestras.java | 10 ++++ .../weapon/sedna/factory/XFactory12ga.java | 3 +- .../weapon/sedna/factory/XFactory44.java | 3 +- .../sedna/factory/XFactoryAccelerator.java | 6 +- .../weapon/sedna/factory/XFactoryEnergy.java | 16 +++--- .../weapon/sedna/factory/XFactoryFolly.java | 18 ++++-- src/main/resources/assets/hbm/sounds.json | 1 + .../assets/hbm/sounds/weapon/reload/screw.ogg | Bin 0 -> 10690 bytes .../assets/hbm/textures/items/ammo.png | Bin 16931 -> 17198 bytes ...n.png => ammo_secret.bmg50_equestrian.png} | Bin .../textures/items/ammo_secret.folly_sm.png | Bin 0 -> 400 bytes ...ian.png => ammo_secret.g12_equestrian.png} | Bin ...ian.png => ammo_secret.m44_equestrian.png} | Bin 18 files changed, 68 insertions(+), 63 deletions(-) create mode 100644 src/main/resources/assets/hbm/sounds/weapon/reload/screw.ogg rename src/main/resources/assets/hbm/textures/items/{ammo_standard.bmg50_equestrian.png => ammo_secret.bmg50_equestrian.png} (100%) create mode 100644 src/main/resources/assets/hbm/textures/items/ammo_secret.folly_sm.png rename src/main/resources/assets/hbm/textures/items/{ammo_standard.g12_equestrian.png => ammo_secret.g12_equestrian.png} (100%) rename src/main/resources/assets/hbm/textures/items/{ammo_standard.m44_equestrian.png => ammo_secret.m44_equestrian.png} (100%) diff --git a/src/main/java/com/hbm/items/ModItems.java b/src/main/java/com/hbm/items/ModItems.java index 2a00269cb..0aa30001a 100644 --- a/src/main/java/com/hbm/items/ModItems.java +++ b/src/main/java/com/hbm/items/ModItems.java @@ -1624,8 +1624,9 @@ public class ModItems { public static Item gun_hangman; public static Item gun_bolter; public static Item gun_folly; - + public static Item ammo_standard; + public static Item ammo_secret; public static Item crucible; @@ -6973,6 +6974,7 @@ public class ModItems { GameRegistry.registerItem(gun_folly, gun_folly.getUnlocalizedName()); GameRegistry.registerItem(ammo_standard, ammo_standard.getUnlocalizedName()); + GameRegistry.registerItem(ammo_secret, ammo_secret.getUnlocalizedName()); //Ammo GameRegistry.registerItem(gun_b92_ammo, gun_b92_ammo.getUnlocalizedName()); diff --git a/src/main/java/com/hbm/items/weapon/sedna/BulletConfig.java b/src/main/java/com/hbm/items/weapon/sedna/BulletConfig.java index fadc8ee17..d280a085c 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/BulletConfig.java +++ b/src/main/java/com/hbm/items/weapon/sedna/BulletConfig.java @@ -11,6 +11,7 @@ import com.hbm.interfaces.NotableComments; import com.hbm.inventory.RecipesCommon.ComparableStack; import com.hbm.items.ModItems; import com.hbm.items.weapon.sedna.factory.GunFactory.EnumAmmo; +import com.hbm.items.weapon.sedna.factory.GunFactory.EnumAmmoSecret; import com.hbm.lib.ModDamageSource; import com.hbm.particle.SpentCasing; import com.hbm.util.BobMathUtil; @@ -42,6 +43,7 @@ public class BulletConfig implements Cloneable { public float wear = 1F; public int projectilesMin = 1; public int projectilesMax = 1; + public ProjectileType pType = ProjectileType.BULLET; public float damageMult = 1.0F; public float armorPiercingPercent = 0.0F; @@ -90,8 +92,10 @@ public class BulletConfig implements Cloneable { return this; } + public BulletConfig setBeam() { this.pType = ProjectileType.BEAM; return this; } public BulletConfig setItem(Item ammo) { this.ammo = new ComparableStack(ammo); return this; } public BulletConfig setItem(EnumAmmo ammo) { this.ammo = new ComparableStack(ModItems.ammo_standard, 1, ammo.ordinal()); return this; } + public BulletConfig setItem(EnumAmmoSecret ammo) { this.ammo = new ComparableStack(ModItems.ammo_secret, 1, ammo.ordinal()); return this; } public BulletConfig setReloadCount(int ammoReloadCount) { this.ammoReloadCount = ammoReloadCount; return this; } public BulletConfig setVel(float velocity) { this.velocity = velocity; return this; } public BulletConfig setSpread(float spread) { this.spread = spread; return this; } @@ -125,6 +129,11 @@ public class BulletConfig implements Cloneable { public BulletConfig setOnBeamImpact(BiConsumer lambda) { this.onImpactBeam = lambda; return this; } public BulletConfig setOnEntityHit(BiConsumer lambda) { this.onEntityHit = lambda; return this; } + public static enum ProjectileType { + BULLET, + BEAM + } + public DamageSource getDamage(Entity projectile, EntityLivingBase shooter, boolean bypass) { DamageSource dmg; diff --git a/src/main/java/com/hbm/items/weapon/sedna/Receiver.java b/src/main/java/com/hbm/items/weapon/sedna/Receiver.java index 65428c895..ee46d89ea 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/Receiver.java +++ b/src/main/java/com/hbm/items/weapon/sedna/Receiver.java @@ -138,6 +138,5 @@ public class Receiver { } public Receiver setupStandardFire() { return this.canFire(Lego.LAMBDA_STANDARD_CAN_FIRE) .fire(Lego.LAMBDA_STANDARD_FIRE); } - public Receiver setupBeamFire() { return this.canFire(Lego.LAMBDA_STANDARD_CAN_FIRE) .fire(Lego.LAMBDA_BEAM_FIRE); } public Receiver setupLockonFire() { return this.canFire(Lego.LAMBDA_LOCKON_CAN_FIRE) .fire(Lego.LAMBDA_STANDARD_FIRE); } } diff --git a/src/main/java/com/hbm/items/weapon/sedna/factory/GunFactory.java b/src/main/java/com/hbm/items/weapon/sedna/factory/GunFactory.java index 694aeea66..f75a882fd 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/factory/GunFactory.java +++ b/src/main/java/com/hbm/items/weapon/sedna/factory/GunFactory.java @@ -28,6 +28,7 @@ public class GunFactory { /// AMMO ITEMS /// ModItems.ammo_debug = new Item().setUnlocalizedName("ammo_debug").setTextureName(RefStrings.MODID + ":ammo_45"); ModItems.ammo_standard = new ItemEnumMulti(EnumAmmo.class, true, true).setUnlocalizedName("ammo_standard").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":ammo_standard"); + ModItems.ammo_secret = new ItemEnumMulti(EnumAmmoSecret.class, true, true).setUnlocalizedName("ammo_secret").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":ammo_secret"); /// BULLLET CFGS /// ammo_debug = new BulletConfig().setItem(ModItems.ammo_debug).setSpread(0.01F).setRicochetAngle(45).setCasing(CASING44.clone().register("DEBUG0")); @@ -86,7 +87,11 @@ public class GunFactory { CAPACITOR, CAPACITOR_OVERCHARGE, CAPACITOR_BLACKLIGHTNING, TAU_URANIUM, COIL_TUNGSTEN, COIL_FERROURANIUM, - NUKE_STANDARD, NUKE_DEMO, NUKE_HIGH, NUKE_TOTS, NUKE_HIVE, + NUKE_STANDARD, NUKE_DEMO, NUKE_HIGH, NUKE_TOTS, NUKE_HIVE + } + + public static enum EnumAmmoSecret { + FOLLY_SM, M44_EQUESTRIAN, G12_EQUESTRIAN, BMG50_EQUESTRIAN } } diff --git a/src/main/java/com/hbm/items/weapon/sedna/factory/Lego.java b/src/main/java/com/hbm/items/weapon/sedna/factory/Lego.java index 5cabffb60..f76d707dd 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/factory/Lego.java +++ b/src/main/java/com/hbm/items/weapon/sedna/factory/Lego.java @@ -13,6 +13,7 @@ import com.hbm.explosion.vanillant.standard.ExplosionEffectWeapon; import com.hbm.explosion.vanillant.standard.PlayerProcessorStandard; import com.hbm.interfaces.NotableComments; import com.hbm.items.weapon.sedna.BulletConfig; +import com.hbm.items.weapon.sedna.BulletConfig.ProjectileType; import com.hbm.items.weapon.sedna.GunConfig; import com.hbm.items.weapon.sedna.ItemGunBaseNT; import com.hbm.items.weapon.sedna.ItemGunBaseNT.GunState; @@ -194,9 +195,6 @@ public class Lego { doStandardFire(stack, ctx, AnimType.CYCLE, true); ItemGunBaseNT.setIsLockedOn(stack, false); }; - public static BiConsumer LAMBDA_BEAM_FIRE = (stack, ctx) -> { - doBeamFire(stack, ctx, AnimType.CYCLE, true); - }; public static void doStandardFire(ItemStack stack, LambdaContext ctx, AnimType anim, boolean calcWear) { EntityLivingBase entity = ctx.entity; @@ -224,45 +222,16 @@ public class Lego { for(int i = 0; i < projectiles; i++) { float damage = calcDamage(ctx, stack, primary, calcWear, index); float spread = calcSpread(ctx, stack, primary, calcWear, index, aim); - EntityBulletBaseMK4 mk4 = new EntityBulletBaseMK4(entity, config, damage, spread, sideOffset, heightOffset, forwardOffset); - if(ItemGunBaseNT.getIsLockedOn(stack)) mk4.lockonTarget = entity.worldObj.getEntityByID(ItemGunBaseNT.getLockonTarget(stack)); - if(i == 0 && config.blackPowder) BlackPowderHelper.composeEffect(entity.worldObj, mk4.posX, mk4.posY, mk4.posZ, mk4.motionX, mk4.motionY, mk4.motionZ, 10, 0.25F, 0.5F, 10, 0.25F); - entity.worldObj.spawnEntityInWorld(mk4); - } - - mag.useUpAmmo(stack, ctx.inventory, 1); - if(calcWear) ItemGunBaseNT.setWear(stack, index, Math.min(ItemGunBaseNT.getWear(stack, index) + config.wear, ctx.config.getDurability(stack))); - } - - //shittily copy pasted because god damn this sucks ass why do projectiles need this much fucking setup jesus christ have mercy - public static void doBeamFire(ItemStack stack, LambdaContext ctx, AnimType anim, boolean calcWear) { - EntityLivingBase entity = ctx.entity; - EntityPlayer player = ctx.getPlayer(); - int index = ctx.configIndex; - if(anim != null) ItemGunBaseNT.playAnimation(player, stack, anim, ctx.configIndex); - - float aim = ItemGunBaseNT.getIsAiming(stack) ? 0.25F : 1F; - Receiver primary = ctx.config.getReceivers(stack)[0]; - IMagazine mag = primary.getMagazine(stack); - BulletConfig config = (BulletConfig) mag.getType(stack, ctx.inventory); - - Vec3 offset = primary.getProjectileOffset(stack); - double forwardOffset = offset.xCoord; - double heightOffset = offset.yCoord; - double sideOffset = ItemGunBaseNT.getIsAiming(stack) ? 0 : offset.zCoord; - - /*forwardOffset = 0.75; - heightOffset = -0.0625 * 1.5; - sideOffset = -0.1875D;*/ - - int projectiles = config.projectilesMin; - if(config.projectilesMax > config.projectilesMin) projectiles += entity.getRNG().nextInt(config.projectilesMax - config.projectilesMin + 1); - - for(int i = 0; i < projectiles; i++) { - float damage = calcDamage(ctx, stack, primary, calcWear, index); - float spread = calcSpread(ctx, stack, primary, calcWear, index, aim); - EntityBulletBeamBase mk4 = new EntityBulletBeamBase(entity, config, damage, spread, sideOffset, heightOffset, forwardOffset); - entity.worldObj.spawnEntityInWorld(mk4); + + if(config.pType == ProjectileType.BULLET) { + EntityBulletBaseMK4 mk4 = new EntityBulletBaseMK4(entity, config, damage, spread, sideOffset, heightOffset, forwardOffset); + if(ItemGunBaseNT.getIsLockedOn(stack)) mk4.lockonTarget = entity.worldObj.getEntityByID(ItemGunBaseNT.getLockonTarget(stack)); + if(i == 0 && config.blackPowder) BlackPowderHelper.composeEffect(entity.worldObj, mk4.posX, mk4.posY, mk4.posZ, mk4.motionX, mk4.motionY, mk4.motionZ, 10, 0.25F, 0.5F, 10, 0.25F); + entity.worldObj.spawnEntityInWorld(mk4); + } else if(config.pType == ProjectileType.BEAM) { + EntityBulletBeamBase mk4 = new EntityBulletBeamBase(entity, config, damage, spread, sideOffset, heightOffset, forwardOffset); + entity.worldObj.spawnEntityInWorld(mk4); + } } mag.useUpAmmo(stack, ctx.inventory, 1); diff --git a/src/main/java/com/hbm/items/weapon/sedna/factory/Orchestras.java b/src/main/java/com/hbm/items/weapon/sedna/factory/Orchestras.java index 4f0230091..9eaa6c60a 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/factory/Orchestras.java +++ b/src/main/java/com/hbm/items/weapon/sedna/factory/Orchestras.java @@ -1157,5 +1157,15 @@ public class Orchestras { AnimType type = ItemGunBaseNT.getLastAnim(stack, ctx.configIndex); int timer = ItemGunBaseNT.getAnimTimer(stack, ctx.configIndex); boolean aiming = ItemGunBaseNT.getIsAiming(stack); + + if(type == AnimType.CYCLE_DRY) { + if(timer == 0) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.dryFireClick", 1F, 0.75F); + } + + if(type == AnimType.RELOAD) { + if(timer == 20) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.screw", 1F, 1F); + if(timer == 80) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.insertRocket", 1F, 1F); + if(timer == 120) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.screw", 1F, 1F); + } }; } diff --git a/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory12ga.java b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory12ga.java index 680fc7ed7..0a1d142df 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory12ga.java +++ b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory12ga.java @@ -14,6 +14,7 @@ import com.hbm.items.weapon.sedna.ItemGunBaseNT.GunState; import com.hbm.items.weapon.sedna.ItemGunBaseNT.LambdaContext; import com.hbm.items.weapon.sedna.ItemGunBaseNT.WeaponQuality; import com.hbm.items.weapon.sedna.factory.GunFactory.EnumAmmo; +import com.hbm.items.weapon.sedna.factory.GunFactory.EnumAmmoSecret; import com.hbm.items.weapon.sedna.mags.MagazineFullReload; import com.hbm.items.weapon.sedna.mags.MagazineSingleReload; import com.hbm.main.MainRegistry; @@ -60,7 +61,7 @@ public class XFactory12ga { g12_explosive = new BulletConfig().setItem(EnumAmmo.G12_EXPLOSIVE).setOnImpact(LAMBDA_STANDARD_EXPLODE).setSpread(0F).setRicochetAngle(15).setCasing(new SpentCasing(CasingType.SHOTGUN).setColor(0xDA4127, SpentCasing.COLOR_CASE_12GA).setScale(0.75F).register("12GA_EXPLOSIVE")); g12_phosphorus = new BulletConfig().setItem(EnumAmmo.G12_PHOSPHORUS).setProjectiles(8).setSpread(0.015F).setRicochetAngle(15).setCasing(new SpentCasing(CasingType.SHOTGUN).setColor(0x910001, SpentCasing.COLOR_CASE_12GA).setScale(0.75F).register("12GA_PHOSPHORUS")); g12_anthrax = new BulletConfig().setItem(EnumAmmo.G12_ANTHRAX).setProjectiles(8).setSpread(0.015F).setRicochetAngle(15).setCasing(new SpentCasing(CasingType.SHOTGUN).setColor(0x749300, SpentCasing.COLOR_CASE_12GA).setScale(0.75F).register("12GA_ANTHRAX")); - g12_equestrian = new BulletConfig().setItem(EnumAmmo.G12_EQUESTRIAN).setDamage(0F).setCasing(new SpentCasing(CasingType.SHOTGUN).setColor(SpentCasing.COLOR_CASE_EQUESTRIAN, SpentCasing.COLOR_CASE_12GA).setScale(0.75F).register("12gaEquestrian")); + g12_equestrian = new BulletConfig().setItem(EnumAmmoSecret.G12_EQUESTRIAN).setDamage(0F).setCasing(new SpentCasing(CasingType.SHOTGUN).setColor(SpentCasing.COLOR_CASE_EQUESTRIAN, SpentCasing.COLOR_CASE_12GA).setScale(0.75F).register("12gaEquestrian")); BulletConfig[] all = new BulletConfig[] {g12_bp, g12_bp_magnum, g12_bp_slug, g12, g12_slug, g12_flechette, g12_magnum, g12_explosive, g12_phosphorus, g12_anthrax}; diff --git a/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory44.java b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory44.java index 48ad36d65..6620e5fa4 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory44.java +++ b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory44.java @@ -13,6 +13,7 @@ import com.hbm.items.weapon.sedna.ItemGunBaseNT.GunState; import com.hbm.items.weapon.sedna.ItemGunBaseNT.LambdaContext; import com.hbm.items.weapon.sedna.ItemGunBaseNT.WeaponQuality; import com.hbm.items.weapon.sedna.factory.GunFactory.EnumAmmo; +import com.hbm.items.weapon.sedna.factory.GunFactory.EnumAmmoSecret; import com.hbm.items.weapon.sedna.mags.MagazineFullReload; import com.hbm.items.weapon.sedna.mags.MagazineSingleReload; import com.hbm.lib.RefStrings; @@ -52,7 +53,7 @@ public class XFactory44 { .setCasing(casing44.clone().setColor(SpentCasing.COLOR_CASE_44).register("m44ap")); m44_express = new BulletConfig().setItem(EnumAmmo.M44_EXPRESS).setDoesPenetrate(true).setDamage(1.5F).setArmorPiercing(0.1F).setWear(1.5F) .setCasing(casing44.clone().register("m44express")); - m44_equestrian = new BulletConfig().setItem(EnumAmmo.M44_EQUESTRIAN).setDamage(0F) + m44_equestrian = new BulletConfig().setItem(EnumAmmoSecret.M44_EQUESTRIAN).setDamage(0F) .setCasing(casing44.clone().setColor(SpentCasing.COLOR_CASE_EQUESTRIAN).register("m44equestrian")); ModItems.gun_henry = new ItemGunBaseNT(WeaponQuality.A_SIDE, new GunConfig() diff --git a/src/main/java/com/hbm/items/weapon/sedna/factory/XFactoryAccelerator.java b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactoryAccelerator.java index 34653bd18..616d8f651 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/factory/XFactoryAccelerator.java +++ b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactoryAccelerator.java @@ -79,9 +79,9 @@ public class XFactoryAccelerator { public static void init() { - tau_uranium = new BulletConfig().setItem(EnumAmmo.TAU_URANIUM).setLife(5).setRenderRotations(false).setDoesPenetrate(true).setDamageFalloutByPen(false) + tau_uranium = new BulletConfig().setItem(EnumAmmo.TAU_URANIUM).setBeam().setLife(5).setRenderRotations(false).setDoesPenetrate(true).setDamageFalloutByPen(false) .setOnBeamImpact(BulletConfig.LAMBDA_BEAM_HIT); - tau_uranium_charge = new BulletConfig().setItem(EnumAmmo.TAU_URANIUM).setLife(5).setRenderRotations(false).setDoesPenetrate(true).setDamageFalloutByPen(false).setSpectral(true) + tau_uranium_charge = new BulletConfig().setItem(EnumAmmo.TAU_URANIUM).setBeam().setLife(5).setRenderRotations(false).setDoesPenetrate(true).setDamageFalloutByPen(false).setSpectral(true) .setOnBeamImpact(BulletConfig.LAMBDA_BEAM_HIT); coil_tungsten = new BulletConfig().setItem(EnumAmmo.COIL_TUNGSTEN).setVel(7.5F).setLife(50).setDoesPenetrate(true).setDamageFalloutByPen(false).setSpectral(true) @@ -97,7 +97,7 @@ public class XFactoryAccelerator { .dmg(10F).delay(4).auto(true).spread(0F) .mag(new MagazineBelt().addConfigs(tau_uranium)) .offset(1, -0.0625 * 2.5, -0.25D) - .setupBeamFire().recoil(Lego.LAMBDA_STANDARD_RECOIL)) + .setupStandardFire().recoil(Lego.LAMBDA_STANDARD_RECOIL)) .pp(Lego.LAMBDA_STANDARD_CLICK_PRIMARY) .rp(LAMBDA_TAU_PRIMARY_RELEASE) .ps(LAMBDA_TAU_SECONDARY_PRESS) diff --git a/src/main/java/com/hbm/items/weapon/sedna/factory/XFactoryEnergy.java b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactoryEnergy.java index 3b2104f0d..b0d2f3018 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/factory/XFactoryEnergy.java +++ b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactoryEnergy.java @@ -88,16 +88,16 @@ public class XFactoryEnergy { public static void init() { - energy_tesla = new BulletConfig().setItem(EnumAmmo.CAPACITOR).setSpread(0.0F).setLife(5).setRenderRotations(false).setDoesPenetrate(true) + energy_tesla = new BulletConfig().setItem(EnumAmmo.CAPACITOR).setBeam().setSpread(0.0F).setLife(5).setRenderRotations(false).setDoesPenetrate(true) .setOnBeamImpact(LAMBDA_LIGHTNING_HIT); - energy_tesla_overcharge = new BulletConfig().setItem(EnumAmmo.CAPACITOR_OVERCHARGE).setSpread(0.0F).setLife(5).setRenderRotations(false).setDoesPenetrate(true) + energy_tesla_overcharge = new BulletConfig().setItem(EnumAmmo.CAPACITOR_OVERCHARGE).setBeam().setSpread(0.0F).setLife(5).setRenderRotations(false).setDoesPenetrate(true) .setDamage(1.5F).setOnBeamImpact(LAMBDA_LIGHTNING_HIT); - energy_tesla_blacklightning = new BulletConfig().setItem(EnumAmmo.CAPACITOR_BLACKLIGHTNING).setSpread(0.0F).setLife(5).setRenderRotations(false).setDoesPenetrate(true) + energy_tesla_blacklightning = new BulletConfig().setItem(EnumAmmo.CAPACITOR_BLACKLIGHTNING).setBeam().setSpread(0.0F).setLife(5).setRenderRotations(false).setDoesPenetrate(true) .setDamage(5F).setOnBeamImpact(LAMBDA_LIGHTNING_HIT); - energy_las = new BulletConfig().setItem(EnumAmmo.CAPACITOR).setSpread(0.0F).setLife(5).setRenderRotations(false).setOnBeamImpact(BulletConfig.LAMBDA_STANDARD_BEAM_HIT); - energy_las_overcharge = new BulletConfig().setItem(EnumAmmo.CAPACITOR_OVERCHARGE).setSpread(0.0F).setLife(5).setRenderRotations(false).setDoesPenetrate(true).setOnBeamImpact(BulletConfig.LAMBDA_STANDARD_BEAM_HIT); - energy_las_blacklightning = new BulletConfig().setItem(EnumAmmo.CAPACITOR_BLACKLIGHTNING).setSpread(0.0F).setLife(5).setRenderRotations(false).setDoesPenetrate(true).setOnBeamImpact(BulletConfig.LAMBDA_STANDARD_BEAM_HIT); + energy_las = new BulletConfig().setItem(EnumAmmo.CAPACITOR).setBeam().setSpread(0.0F).setLife(5).setRenderRotations(false).setOnBeamImpact(BulletConfig.LAMBDA_STANDARD_BEAM_HIT); + energy_las_overcharge = new BulletConfig().setItem(EnumAmmo.CAPACITOR_OVERCHARGE).setBeam().setSpread(0.0F).setLife(5).setRenderRotations(false).setDoesPenetrate(true).setOnBeamImpact(BulletConfig.LAMBDA_STANDARD_BEAM_HIT); + energy_las_blacklightning = new BulletConfig().setItem(EnumAmmo.CAPACITOR_BLACKLIGHTNING).setBeam().setSpread(0.0F).setLife(5).setRenderRotations(false).setDoesPenetrate(true).setOnBeamImpact(BulletConfig.LAMBDA_STANDARD_BEAM_HIT); ModItems.gun_tesla_cannon = new ItemGunBaseNT(WeaponQuality.A_SIDE, new GunConfig() .dura(2_000).draw(10).inspect(33).reloadSequential(true).crosshair(Crosshair.CIRCLE) @@ -105,7 +105,7 @@ public class XFactoryEnergy { .dmg(15F).delay(20).reload(44).jam(19).sound("hbm:weapon.fire.blackPowder", 1.0F, 1.0F) .mag(new MagazineBelt().addConfigs(energy_tesla, energy_tesla_overcharge, energy_tesla_blacklightning)) .offset(0.75, 0, -0.375) - .setupBeamFire().recoil(Lego.LAMBDA_STANDARD_RECOIL)) + .setupStandardFire().recoil(Lego.LAMBDA_STANDARD_RECOIL)) .setupStandardConfiguration() .anim(LAMBDA_TESLA_ANIMS).orchestra(Orchestras.ORCHESTRA_TESLA) ).setUnlocalizedName("gun_tesla_cannon"); @@ -116,7 +116,7 @@ public class XFactoryEnergy { .dmg(15F).delay(8).reload(44).jam(36).sound("hbm:weapon.fire.blackPowder", 1.0F, 1.0F) .mag(new MagazineFullReload(0, 24).addConfigs(energy_las, energy_las_overcharge, energy_las_blacklightning)) .offset(0.75, -0.0625 * 1.5, -0.1875) - .setupBeamFire().recoil(Lego.LAMBDA_STANDARD_RECOIL)) + .setupStandardFire().recoil(Lego.LAMBDA_STANDARD_RECOIL)) .setupStandardConfiguration() .anim(LAMBDA_LASRIFLE).orchestra(Orchestras.ORCHESTRA_LASRIFLE) ).setUnlocalizedName("gun_lasrifle"); diff --git a/src/main/java/com/hbm/items/weapon/sedna/factory/XFactoryFolly.java b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactoryFolly.java index 6c7c039fd..e10b32e50 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/factory/XFactoryFolly.java +++ b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactoryFolly.java @@ -12,7 +12,7 @@ import com.hbm.items.weapon.sedna.Receiver; import com.hbm.items.weapon.sedna.ItemGunBaseNT.GunState; import com.hbm.items.weapon.sedna.ItemGunBaseNT.LambdaContext; import com.hbm.items.weapon.sedna.ItemGunBaseNT.WeaponQuality; -import com.hbm.items.weapon.sedna.factory.GunFactory.EnumAmmo; +import com.hbm.items.weapon.sedna.factory.GunFactory.EnumAmmoSecret; import com.hbm.items.weapon.sedna.mags.MagazineSingleReload; import com.hbm.render.anim.BusAnimation; import com.hbm.render.anim.BusAnimationSequence; @@ -27,15 +27,15 @@ public class XFactoryFolly { public static void init() { - folly_sm = new BulletConfig().setItem(EnumAmmo.G26_FLARE).setLife(100).setVel(2F).setGrav(0.015D).setRenderRotations(false); + folly_sm = new BulletConfig().setItem(EnumAmmoSecret.FOLLY_SM).setBeam().setLife(100).setVel(2F).setGrav(0.015D).setRenderRotations(false); ModItems.gun_folly = new ItemGunBaseNT(WeaponQuality.A_SIDE, new GunConfig() .dura(100).draw(40).crosshair(Crosshair.NONE) .rec(new Receiver(0) - .dmg(15F).delay(26).dry(5).reload(160).jam(0).sound("hbm:weapon.fire.loudestNoiseOnEarth", 100.0F, 1.0F) + .dmg(15F).delay(26).dry(10).reload(160).jam(0).sound("hbm:weapon.fire.loudestNoiseOnEarth", 100.0F, 1.0F) .mag(new MagazineSingleReload(0, 1).addConfigs(folly_sm)) .offset(0.75, -0.0625, -0.1875D) - .setupBeamFire().recoil(Lego.LAMBDA_STANDARD_RECOIL)) + .canFire(LAMBDA_CAN_FIRE).fire(Lego.LAMBDA_STANDARD_FIRE).recoil(Lego.LAMBDA_STANDARD_RECOIL)) .setupStandardConfiguration().pt(LAMBDA_TOGGLE_AIM) .anim(LAMBDA_FOLLY_ANIMS).orchestra(Orchestras.ORCHESTRA_FOLLY) ).setUnlocalizedName("gun_folly"); @@ -43,9 +43,17 @@ public class XFactoryFolly { public static BiConsumer LAMBDA_TOGGLE_AIM = (stack, ctx) -> { if(ItemGunBaseNT.getState(stack, ctx.configIndex) == GunState.IDLE) { - ItemGunBaseNT.setIsAiming(stack, !ItemGunBaseNT.getIsAiming(stack)); + boolean wasAiming = ItemGunBaseNT.getIsAiming(stack); + ItemGunBaseNT.setIsAiming(stack, !wasAiming); + if(!wasAiming) ItemGunBaseNT.playAnimation(ctx.getPlayer(), stack, AnimType.SPINUP, ctx.configIndex); } }; + + public static BiFunction LAMBDA_CAN_FIRE = (stack, ctx) -> { + if(ItemGunBaseNT.getLastAnim(stack, ctx.configIndex) != AnimType.SPINUP) return false; + if(ItemGunBaseNT.getAnimTimer(stack, ctx.configIndex) < 100) return false; + return ItemGunBaseNT.getIsAiming(stack) && ctx.config.getReceivers(stack)[0].getMagazine(stack).getAmount(stack, ctx.inventory) > 0; + }; @SuppressWarnings("incomplete-switch") public static BiFunction LAMBDA_FOLLY_ANIMS = (stack, type) -> { switch(type) { diff --git a/src/main/resources/assets/hbm/sounds.json b/src/main/resources/assets/hbm/sounds.json index 6db942cc1..3090f9d63 100644 --- a/src/main/resources/assets/hbm/sounds.json +++ b/src/main/resources/assets/hbm/sounds.json @@ -263,6 +263,7 @@ "weapon.reload.tubeFwoomp": {"category": "player", "sounds": ["weapon/reload/tubeFwoomp"]}, "weapon.reload.impact": {"category": "player", "sounds": ["weapon/reload/impact1", "weapon/reload/impact2", "weapon/reload/impact3"]}, "weapon.reload.fatmanFull": {"category": "player", "sounds": ["weapon/reload/fatmanFull"]}, + "weapon.reload.screw": {"category": "player", "sounds": ["weapon/reload/screw"]}, "weapon.foley.gunWhack": {"category": "player", "sounds": ["weapon/foley/gunWhack", "weapon/foley/gunWhack2"]}, diff --git a/src/main/resources/assets/hbm/sounds/weapon/reload/screw.ogg b/src/main/resources/assets/hbm/sounds/weapon/reload/screw.ogg new file mode 100644 index 0000000000000000000000000000000000000000..e6dd7e05c4d49623b05dd6bc00426ab1bd75be2e GIT binary patch literal 10690 zcmb_?cQ{;M*Y-g~34$OKL`FA47@ZJi^b&~?!jQrcUG$nLAqb<7644o=M;X1ODbb^h zAPAyG2_b3{?-_Z1&-1+BAK&%;@ty0;nYH)5_u6~iYwfl7oNI2_*cbxjz`rgRmA}F{ zjv75OE;6r&ZkBfLq$)BVnqTIi%`r%7hg9!8(R;kkSYwSYU^g_4pnut zu(P>p_|Vx71J!uw>1^fZ3pFHtgC#c`YpBc>aWcxkQ{+Rc8j}Gk002QU3R9M0VidYq zxv>{=vyt7f&Wp%F?mRx#2!#&mP6$S`!738@A$Ty(2q1OH=e&K>O02df#!Aa&k@IgIRLY7Khy#G^ z9HGcLAqGbFDq5fm02ozVSv2EWbSpV~KJw91)08V<6ymHcA3jl5!u(Z3dP@VJxeMNm=C^Anj=Br5p-ZYacG^~^y2m*jp zU^_a^N|x(ed;>oe2e$vu`|q$&005o{SwSfNaRD_q`vuhu6tg)k8b z1@@F5Gh|qbpyqz`U1@LH|NCDTFam%Di(Eu-Cm%I;s3nV_nri_Rlot3*x_y`VsHZ|0 zk@e~RJq=)w6DmL(UqeF~kzgC}0n5jsv|t6PmXWYdPWN7TCp3gkVmUieU*SW3g1$mG zUtSE#0Y+dk)T>-z!;}$->FyN>7zPXPfc)pddqM+fFyrY9R&n42Ls?Fgx`FyQ|C$AY zq_xJWj^fjFohZJJ+o^)Icj|;*?NlL zbccB7&Y0)_zE4aKIt2v9d<9ttZ>^YoE!q?3#E}7vKv14sj~IT_1OdBb8{gzY z-?W#{xK5gYjsaN%ub|u$xAB=K7uaPMlAK*!99d9QTx_3KVE2E&$#b|%0DuMnE_S+d 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 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/items/ammo.png b/src/main/resources/assets/hbm/textures/items/ammo.png index 815edf6312723c870e0c2a64198bc0c0147dec22..5dfb80710231a4f54f48ddd2a1df3d17002e3258 100644 GIT binary patch literal 17198 zcmXwh1y~f{|Me{0DIpzFA|;(mi-LlHbb}y`h&1d{(h@2tT}qdLbV(}R(%re_0?YCr zzQ6b7VV_}UckkS}_kQY}bBWY?@r0OwjsO4v;-_lL+TgJb03ZM!4*1u)k`FF;zYyAP5mJE{g7+*ZHg)X-2m7o;nDGLI zvCHedW<6WdUH0wGgPHf%t^2?Bzt^M&{;c`c=rr5CY2~~hXro?BsPsM6>M2GxDjtIW z74k$&UghNG#@d^CVYC0+w-Y(c{+P7QRUuLdyTOyDp|lg<7Fhb!?iqDfM>z|<{MPMn ze!LE%gjz7XAIVc(Fzo_vylN0p?1nFV{uvLuWiJ~aYSSCP`GEs1NG&CrQQ{w#Q z6-^LsiDA`;y!`wQC$SEz%BBEJ!to(djLqo%e$jFx*7!a+pLI^hI$Sso>!7@Ml#O0=(u!rJ#29i!3pz6>Izx0MK`kp!_|Wa5MV@Q2}=|`kSd;AU9DSkSxC0k0-j(39~mTrKXGX$lFA|F zn_#oGt~8S+hU|K(N<9>sY6-6d3&J4l*$1~sgoZWdOj*O(#G&yetgd| zaNry>s+&1AJ<1>-ZaJ+LR4~oD<^d&i>8(4s007Lr(Q#^O@c(x z>`y)d@I34+DbTQ3mbRaLdLHKw)W322yZ!*mOrjQ&P%&w$kCcNyt*UfP|K`8O1fPdYB89(r z!;g2-s**)OfK;#e)jcegmoLfT%LnAn90nfxdrx#X+=&d*yBWXKo1n_hN~cVWJ`9IG zFa_M`Zf9y7yZ8x#r!?GBQbwrOvN95|UtL{YTL%Z-ospDOLx0#YMxxS1?HH}z@xrTi zsT_4C0rpL0jO)FlPUeL}2Y+|WAE@eJ2bz{dL|^PbO7rKJdc{=K(b$@Dmk%5q9XUj0 zmmE;;5Ta_4>_#gn6Aa1PG?fxMS!<@Vhx2lEN+_nGLCXKA9oHL$=&5`&!luHiwYu2s zSNjH~^q~x|hAm!q6&#gLUm-L&PX&u!_cISGR?!_~MfyZEzmK=YmK^*)a<+|l7*d)4 zLGE5i-ZDoX57?6ZQqS#1ZhJ!ppJFKz`)7T}KdhN)rn}wNM3Vp#uqNBNi(6b=+>w!y zARe6`ZB~^Q7YFnFiolZgiQnTu0#P=+Z?~w|*>pYlq9Q<4w`S}|Iuh9+icDEtUOIvr z|4Ag{bJ{P*eALkvVyTg%Sv0g_fu8Y1wpVrgXUSo8J!0gpm=+^j#xHh03@wF_%8}`n z8gbC^@P>*ncq=hb7L;DDA8}$Jlsz5_t(Vmo+#X4=Z7Q#vFm{+SOuqTdvWe;D=;460 zHkG4-7GmGAm}{UGV{w9s1=pTy_c_zTBe;i_cTc6xuWD%E*pRUet9<7tr<(rq4!y?* zG2-Y9Sw9mJK5p)KO~;0Ht_KeQU?yD7W%&d2ZDp1JCZTv>pufKi0Qc|&f89=AvCAV% z5ErMX5jZ6uZndqlJCV%(M+$2j8*HMY6W5YE*b0@{Zlzt94u|I}8gsP*IzNYgW-Ag? z!QJ`Fex2jM_00oboi1i`b8~B%2CAzQ>J6ph8tW(5m5;bww8iKAuxP2GkZ3fUyV#`K zfx#Rdd0k9u=u9=fnLdv#x@^bUS(qCe3&Caf*YXI`(uwx+@KB3^ii%Q+r9St_JohB2 zHDx)OeUCgTeG&fnq)ej>S53&k%V;H|KSb8=oJCfa5kBT^7^hK_#iqSO;uBI@Oh|)+ zQ|H4rSaz{};WfQ40b33}KMujWbIk_kfj|-Q*L7{ymj#mH#tl@b^l0C|e`gw6 z)&rzGkeIm~!CPBzy54PJ43oQAs901Q$k0_V94O0U?yYYQV`sr<#ZBA7f*{prXOWqy zuJ;>{T^DZU2F>f>Ev_@2q&_und;Bbbyvp#%$npsMOB*}JL}X<*ea2SlxJ;}h1^2ZA z4(Rl{_M3$GWCgWASKrIH{KmhcHb^K|Sc{IfYSWDu@JWiO{Lp2EIJB7TvDYwvX>7bZ zCUP)=!9fnVeLL0-<{}?{r=jJ}l@5BK!|huY!^iqSpF~`2d72ljN`qm vvg>oUIt6Yx1$ZhdDyKb# z8^q0goTpvi9`(PR@Y#UE482{=!`8ap7efL>Q!c@tR2V!u#`T-Hf)qlW@n>dc>T-Xt z@j})D? zn(xN{5+|K0z4IcvmTgRTpE7xhA!)Og}rKE{4- zM@sNUQZ#c}O2_@9B06b{6h`(8 zSBoV!ZQCCCf7n5E=U^J6JQ%5bCKeu@eV5?!cnwftFMA9z2cl1}9T;fl&!FNNJ^=Tof?zhze=Iew#Q^B&=5T}Ev zSy`J=Nsz+(G~xBy1Tp2&S{X0@HMCqdY==GecW&Gx_DO2HwDv{5QM}40%!aCFH)t%G zOQ_tDfM(mL;cnct?$*FdQRDzF=GH!={LnN+=4~w;H5Kuu=@Fd(an9`?Kxc&Y=OQGT zKX-HQ=)8+C`N8bXCT^FroqHAL13nmj4v;)oz3BHW<+X{uQA;D@@zL^IE%toFHesVLF=eAday8tey|Ij|+R4A>^yq^)UqoI@I$ccu4M z)8=4wDJIp>_2zY0S2Jc_%X$k;;VS1T04FhyTbtvHWi;@AM*&IWlYiIe)<#aH z0Os&QLhtEj)OR~O-z@t5WqFa`=*Lx4LaXR=@H&_@F60*{uGb`swRK7zQ|PE}Qy(py zuC?@*fT^x>w2)g96aRhzqPDiyI$+I(KhWwVIR_!Vck{I|FRao3l3urJdQUFTJygDt zp}85ez;*x0kfGhcH@{h*%A`hb%i%6TVVAd_k{l=!=1aTF%SSjk{5iKM7Bk*`m3Qhi zVCQL|3FK3`;Im%g^8fx!E#OX**JV8xf-rDf)p*b!bL?GC4PH<%lA*9wwY;jPH^C_` zK`g>(f8T_&Rye)@$}ml?pr*XRbgjAg5_MHLV1=UgM~vmQ3f>x~^;5!%3xh@g{xy;E zs4e!(VAq2mC~BVGg!A;dtehN0Kz?*|v_j5ZT)eg5EDc`!SMA&hbA#W0dBeC=FFPv> z{&m1ssQk9c=VWUtca*}Zo;A4ol*GbqczR8|S|Zwecu-KZAnk8*A&z^_ z`y~2-`Ee*$>?OK0f5{>Tqp-tH4JzWb)Q`d#OZWQP;8m}^i}z%%hDfDgx1S61zUyDp z0&l2k__DLQHETCPw^gvP!IJQfEde7uPc=V_4;L6g9zuzhW#Qwb?_>XQ{Ny%ikoSwL zAsp&=t;;)Gx8x+;quQ z6|la9&7-R38~7y1ihVpg$pZ;}6- z3h?yYEyds)$p^z#{lCM@lQe37@a%Q87Yvk|_(XSHTN3deQ4@YJ!dY?o@`O*~ROJ&H zl}|_?%V{eq&~}8Gi=#L)yta3UOx2Y1=-#YpB_2X@Kaa%F4wC2rD34SenVXr9jUQMk zqzJF~iB3s`XP#s-w|v-fW)1b!X}S0enczwr%RU~zI1YN$Xu!75#7du-0_B*^s*@_{ z@dhUGcD*Lsns_Obh^dOErq9GPsT9DXhk$@UOG|6XGg8NVcwd4`S!G_H&M0W%UD+b3 zSzYL=bADJoPvu%#KN$z=1@omo+$?M=bpa`BhkJBWP3T?uPcrP8o&ObXnkl0f1|ooH z2`fE6S-^cuVmY1`WrFefWlXWwSh_Yp9I@5!LgIq=E z@J&5@L}JW8f_F-s{<3z4z{Bi@I`k0GtM1&nb6se0(l1Gha})B3y0Rd8 zayD9LmRz3cepE6S!4GfI@_Hd9kF$kAGkBY>la$P1N`F~GoIdHXY2QB+p&e+%k)Z?V zs?eb-%L!V_k1o#Q*v$WIJt;2zP^G@lkWOmPeT0A5AAT2n7zgzYp8sHvdCKXH9#rgYH`VRxo&GWShx0 zYh&Y?0W8qVBG#N_vf|6=9}rg|Q;Z1LJvrvJ4intDh>L1-60;u3Q2~pCE@Rhb>^2@C zW%$`2WYF?^4A9#Y#79L(cTHIR{rflTv$o1T_yNJbw1E;X9NSBDwMv$!jxV1nbN^}k z=L+?${l>|#i!JuPh;6`edi^+-%fc^Cy>cbfjGVo__j>gwo7sS^L?OBje%fZ!hGU(9CtQpk5Qxnk9Il#gUxJ^XZ)2xg{H1ePyvKV5-4j zIEkK3jno9OgL8375Q9Gk0Vb39pOzk!d3sH;^|BmZRnStc=4Z`Q5lkY3EZOsmdn!bw zu$?7=h;GeK_9JC4Jv>Cfi2;W|IioMtqMl~soo4dtW_f|QBJ9MpNgj6fnCWWbhY%$M zyYwbsFjy-zRc@qmCh*Z$ujVQD4{Qr{<(ifQBJ~K~NXzliw!w36Ovko+Amn4^oSB+R z7~K_|m`DLWWVGW)9)xZerp$$hq@YS8^w!|yi*mf|-}&r_2t3q=COH5Xb({n%Hj1Xx z{N=-`62p+h#Kdgt@C%v@S$3Hs3#UfjvX0d)T(@*}!#xSOr|k6Mdazby=V$F(b9+DC znA;#+CbC=eMo&J*Q;Hda;h9Vl_&Qkmkr`uxofse2eJj{c2c5Oj+Cl*ASj7`j5v+Y> z<>gN_HRI}hS?4$TNA~Gq+%%tY+8cRIVl%PRv5N`{$o_qPd_dHalY{Z?+qb=6i;K@I zPL4sG4Gb!iWv0C6Q`2ZDkQ}skzCX*M$ivI4q^FmZw=wkhucD#hH}6MbQ}k^OY$sQ% zxEPu5!i1rf(uNbF{5{-9`3B5K@l7#())YfG{AF=qfW$6C&K*a%JWA zZGDS4T8m$o+5X+>E}y15Kxsk~1?i1rYcD4h?bb$<@C(1>5QT^N9=d*K2$nqKTQ% z{h3}n=dJ1=jc1U5WyI2gNncolm`JluFh7`Uv#s+E%zXa*xgZKRp44;xOL-6G77D)R zX9Q@*;SOI)!9tN&j|-*Bq`V1&6KWsv4-gSYjZlzb65)2e!H_hI9h#ybuQ|)%a?Fm!>l@ z{Bfd4DKQ`s>owo-K4l6gOF_tJ5(h}rNe3r9(2!o9B&40ihugC;eb=HzF6Doy>=eg3S?-kWb)~)dP`f*uokE(CoKX#b6d%-5dhQw(b0}67x`+%3c81+gF z0E48vGAdKl=6f%H5)AamG^@Dql9ETj(H_y}Pz~hYSGa}IfA^E`w-r9PIn=F2IZ%Km z>bCb!C`S*AkY?e@*(=jF3yQCVM6l7g0?XF?De|L%Jej+^&8oFIV z2Gh_XeS_vq&?isjfyYGnL7G^yvKYR;Sjx&|FY#p9w&<=jdMe1qBbL6|Wk3W?)cf+~ zt*xv~Bo2@nP1ftB!BeMOM#^p7SZ~N7^psgDSWX&ns4{qStyiK>D3WkYDEgYhU!zLi zCum?Ytl1BGci7t6u9$8(l1>X9A&iqEQyuV>o8*@Gr2eX(2Q&?YFX<$MGug9v4GM}D zstZPG>frLj05V(e%~p{$$Io4Rez@`m3Xp#43;(OphqAJ!b6hZc6~@)^Bhgymp1Y=o z8T+ZY`2oJvBpVX3n7niWm4J75tM+He()WC1?5K(a@vqj7rzKU8^z?K9{^N&gNt2ug zmA=VCJd*L`nUSA45q(r?RPB}4thC-&hWv88!CpWf6_rnHf3E3$P1QlnOe25*M*mhY z`oFe&d)4mRj*X4QBPQ-@gC94TJ~Ie6w5rXos-m1SXa0aj%T4${42Ej_4SCtY#;S`2 zYqXE#l%rDcGFyn?*Z%Dr^)sHZcas|adr_4khOJ_D|97QzPj4_b;qbqI5$0mh;O8Ud z?Jl*L4{<^UgUa6F6o3u;*%4V7j!}t->$e-H)r)d1$5T7Ohc`W-`0O2BRMpAer|lthO($HL_?ZuUL2;o|&OCCJOmOXWY1 zLB=)A*GzKj1Zu3xr8MR~{137t22UrIYiP1sFI972YVRH$uj6sHXk(LU_;d7LHeoD9 z;R2|`G3G5HND$Esvk$K?nGdVF4 zwzucB@)Ao55FE?8^BK+;kI0%82Jpk{P=ADlh5t;J8mqVt`|->442aVbS^0V>9Z#9~ z=Z>hI?@hD&h8R7f<|jw`-n1-0%`3pf$o*p8i(N*B0T`a0jV>$Wum1JR*9G5$JO7C| z7sJYn=Opr0GDaY{>$qIiUCtre@L!)!uuV-(w{~`ZpKgz-u!3J%>7p@z0KNR9iD8D- zg46XTOc^*`M*QH+&+5(%%lwDpkg}$*R6`rRy96`4AF3DYSCGZSOaTe67Y$7)8gu`k zS=UxZ^`uAmbmYU_{E`N^zrei2!^5MFK?#pl2H#V^%tZ2(Ed~-WODEa~k1QO6^R#v? zWiyP!yiH!cJ8+c?n6?t3vlO8da$S)5oRm~_KyrC~70{le65Tsj{|*A!4W_m4*Dij< zW%33pD=Q`Zk%A-)5^#BH1xriT><`baG1jtLaU8&25DS}$Y!KU{`i!hq!5&BNCbY~VfvGn4JF)>7d zyopH~Qry4@Lq6qqJQ~MB;-SU@1~5vkOnfh7g$HFyiDRYCVl&P{x%2z_GqR`bMz()L z`_=k&aJsY?0idR;`r#{;xu&rwplMun(k=AXHggYt)tLpJW_w}~)Psy=fOKVh0hn!UMt9SQFv7Wgu7^6Qsa zb#3ixTM(wfPaAwOmpO@|DZ$Y@fP2eMgOGm+`*On>lV=E<)$TF=VaLf`L6_LnBm>Un zQ?T}ZX^na$)^TwhuzVeSH$E#XR^Y^F$laXk9Ir$RByMcjQaE)(eV2NNG@04vdr}t{ zGyV0j+P!a{Y4zo^c_X@L{^Vx{KBR-Ol#(t9$W2`V>lJ>csq8_8oBv-6z^irHa+P}x zE*6NiAU_XJ_Nj4w^Ia5t!*#AM;qH;}CU=>MTbM`%KO(C)NdG%gCN7aK zf7p9mRdvv5gxu541Pw*Hn!4pb8(IA@$XtI05wqp^1cr5Z_Pwbl^q!=oqzxF_*~}en zw`g2r*nqlK2pC^^9zE&=*BD+KGwIUq*|qPjM+}3(khZHpFIL+`^86$Wn{>{g@alE! zTyjfuGvhA1*E__t0TABI{4Tk=V583(vh}1C&%Zg){4n!lf)co-Et{X&CrNlIegz~b zSLAM|tP{hNK}0win`SN>gtNSt!)P9Kcl5QQho4ZaZZ3l$7AqIm6DyQ$mErs3-l^S- zGxRpCVTB`R-j5%@ox~br#p5+XX0FPYt|@PWs!iy|RL9il=hpFwq7Gm{v_4E=|qN#&=GMQ=5x9#r8NpKQvUcYYtAI~qAN?cf280AP1 zQAT!$Q!Qp9N%L&zm1{%H_svTiIE%sjS5Mk(qF=y47Q{Zp?Ki4;f9uqShew&eoTvED zjkO{OcKUAng@;%`jvu^15%gKj6_^Zny;=@hwxIKJ8Kp31sXrV5Yl?TW%CM957HH

1)slUSIVH7qli0*y`N84F^kvNIaSL_2(6HUoPtN`+|68OuzM{9Ig=Dj3w6}&-y*Q zUEg%9GtD+^xg6teEi37&-QLtee7UM7Ck_kkB6A4V#k1B*m}pG5k&T_*YJT6M%1yX` zG_Kh`Z6Oiq!BXL?kyS|3XXX+FAf-x%KHr>Lg?PMC03{3wFq1d}3YfPnQyZ1kqA+YA zMN}D`aB}7i7kapui2zoq92B|Eyn%FR+5d|={y|QF&yM%cx{$tD@h~#?aJZa}@lm#N9SJthAG)Ugz7{IbX-MfPZwY4*YKtQl;Y4~7ANsQhYn z%!9nn`^XR};NQMyiE%9n=ch<$feju`2xObks>>T-GAPvpMI!D#@Etsv-T=RT+p0C^ z@>-(Nk`a*NA6=(?WAA<~3ut8RNY43^yiJ&5=NQadaQ$vZ#(mqHz>Y^s8ve&-WrIr$ z7I`+6))q4zsb)@AT!;cAByFs!9J!$X^WjVOZh=RS9=O-8gG($j{9(Y*G1yV%oFx8a zTAu=;r!ucnI zG8b7&yfP@98NTY7GV!Ls%q~QMdIpeVq&s6~!UZN0o})L$bR)(&QdBXw74b;Ga^(}) zX7YQC|JA+2lam{79faMxWFLsI-bqK=;P2~pmAc-xtUnlJE>AczebG&qorF3^Z&a}@ z4PX~_KrI?Y$C1-Ba^m7NAj`Qj) zU?S2AmY|B9P`P8ELN$gM*J5%K3m* zg!QQtF}F+$K2wSG{umo6`VQ{~8t{T4V13Qa&#&s@!Vhd30Uojd;6j`kJc&e*N?)VL zmw47bXl8@u(~NbkFlu09WB2y;DS=_9+Ba;6mJzH;_jI}TF)9@fG8z<)3tv18KIw79 zdWbRQq7{$qxRz#;$CrZHTsrNW85nF)bmpuL4INL<$R1Qae*jKo=)BkboQN!weEB6N zjni!gBdw12$)Vl##a`Q2MKlG`FlfkViOpTmuwf>5W-E==Uv@vxa`g1+CnilW$oPWv zdi17%)%?fzg7c1wqoWT3d_5QxfV9hf{jU_{G(NH*byVP5^{xgB1O{v_!HkrY^ogsh zKv7Xqol$TTlD@a&e&kmnY4Y^gfdZMy!3heYfupuJB2i{pGJFaqz6^$_+%7!v(A=qo z=%Q9#L=BcyF!jn6a9xz5vI^U#`Bax!ucxbvcYSe46MMV={JjY(XY$=|W>T@}?$&KD z;X0%e0?0v}{K9hn;`}@N)=y0Y9bUyW$==tE-)TSG+%pr_S+M&@6aAfrQb#8N!%mAJ zYmhk;r>p7YO**F>an$8H;glsvgS*J3Z{)d0~x9}e?xwa&!JXTFC zXFpp0Wq47`Th(fs{a$|u0SO3zzg*eHBk}h5a8gUY%Qh@D1E%`4aSB4dS_2a##Au{P z0&Xc9gNa%_hZx_{k2ijKob#vNo*2loxng>b>ZcV3+8&oHQZ6zy5&>F) zxhj-U`)(&d-rDFBXGwz<1V@NrQXV<>YM`BJ|3wy~5EisG%<&%l0j*oXmy_E60{ zF2~rQfrIR9PIfk^!Hnarer<*w*mQw|a&x8zc}xVGytheq>ftXoAue2yepYaH=4+Fb z^?BG#EX*80rP+dbKv$GLb?B=9X7b;vbxcI2WnSu9+spOEq;KDzfOENT{i$ zrH%U=Zck#Oc;bM7B4mpk492ef58HAbBmTUFH-b17UVEL<}OxXm*ohW`D9xiW?M#9113Jl*Pt$_6eKHhG4`c=|$<7*FQ zN#o(uJ*Yv^&OfjdBQus9`BL9`%oxrC*I+k%fyd=OUsEOG4$fyNngBfG>nk+|_@C_T z96a4xta!QG^KSmi8VsPEFM*lWhq4J|S>4P%FhO;g6=?f;RJ!kcEbrV5z2fOcM%W-7DOG{!#;<+#3xDxfVDYy@!gJ z=S9)nnvST|fg11AHr^uRU>YF1w44+a@c?gJ@#Su-wVS$c5C16EtW$=yDqFVJT1V^| zln+ng(pt7qGe|g)8%dX70ZDc?>P8ro|De(i2=5G?biL&&0lu|ghba)?TCX+c$>KcL zBOf~2+$6Xe=De-)et-sB7yt??PnwC zr9y_?Sj2yF>-O?M265|!)?0gwlNBEgEEPw7Q9j!6a`8wHbH|Kb=e=K-Z*7np?v&{O zg37s_o7mDgz1J7Z%GM<#yk|G_mJd{piYvHLYc4H8HRbCajkKRzlA}9#L0I(VT5*^^ zQCqMb5leU?d7$U`iYN8ck2HX#t--x)Oh+@haJ;#ju;0H@taUpaJ>PJ!-@8H3J2u%m zo{O9Ri714&PB@&U@XhGA7^Ur06C9#S)$RpN3c*Kx3dvheYS~b0=7dKpsn~(b(XAm$ z%DHiOsICA45VoWJbBiiVTw6$g;(j>D4xV?#(X~kTr&-<`+H^%14^bz46OL)Qd>Km{ z+?xq&>csSZ>?`W;6`wi8?60RB!~%d(H4c|n2i<>Pb<{WW)!by-v`;9DTA&8mRW5F@ z(ief@!`4ip8T4N6z*Ijm8S)w(dvSf3NX5p*6@FxELHMABgi$75#2oaAp}y`#18vl5 zD2pdxrO+dVu8prCR98p|^7Qx1gOfRzM<{cpSOK#{7xPi-*Z;`L~A(`{xs=eV}eas|bSl zmH)zV2$dC00n0B8kh||%)1jm}Ty|GUI*BvA_T$&Lk~HrvP~e0oOU@gIkb`=q2kV!c z5Mb!`2|zX}&5|xs{@nLqNNbvOZ^uG(mS_gC=>GTMG79pJY1-X;N*Y0#W z*?+@z4Va+PwpI?wtni0ak9)F+{aXqOtfcBMQz41i7C7)QyT_ujPlJh%<&cpdFr#_~ zo|@$pk(yWN)VFZ|<1Sb^Nn$Q>yJlBa#KH{}%KFxNpCxr+(kxIgm~NR17hQzB8RfVr zNa^D7-gZ<8Y~P@Ng{Vn_O$1#nn8#+_jZ< zkr7rt5WV+65^?CSS*+|1FEi1h5ZiKK;Aa0z>WSs!`?hpWK4>aJkU&cFkPidI1f)E; zgQS@NJVBTT^!n2^(GB{VN`aYFaN$znFz(P5nZj(A&AdeqZRzG}VV$i#HV;}_TpaqN zA5cP~qGrPC85Wi>jT5qC67SyG)s+Aee^hVZzD+?QE`BA>qB%&wqr(bp(=xuWR_fMa zIhiiE*R)St%VEu=z#6Xw9cX?jg(O!@H8nr(APwqIlcW^38@yLLJ2NwWvg)XY`pu(e zKr2_B`=uJqVJ5m5PfQ_(TW8rDav)6_;(zi)z?9&_Edf?yngsEm$d>?I8*XFVT=H^h z`QnhIeu?td&edO?sj;|&cX9PXs>upt$uH0wc)-t30=Vsr^9z`=u#RJ(rClhI_+ing4QmWHPXR5 z4B_UpzV;+CyA@P*#aF#=MXabI2!{2{m#7?=~CF` zd=Qo>I037rrG(MP^PICSLvLq%!AHRrl7sv7qiI%K(vbgMSX0g?OQg&l9-fQ+urYRI z^hsI)Y)mW3zqxm)pfLx1L5f)97YBfi{*PS&_w#*_QX=vUm@)E!-r1$4#Q87MF|x8b z-aMx?ipx;h9jOA4#u$D)q3R_0?U*RO_AwU4+%plnlytcxIwK5A^;vN?Xzl@lt2#Go zYjH+v@gD@J6Id02sTYONCn{9%V=OAmUm6k*zRvK5-Kx{Gj*ELPWxw`(?$3zQax$8K zA3ncNvW0fzyEX*h$rf52M{_N1Atxk4QY4|?or?&bLZRB#~ThGgz zPn^%`)LTftxa|^lZiH*zSTc_urzaRP@YditJ3C_mXm3AyXshV+H(@8=|1m4BCj5$y za}@{!XLVZ|Vsc$b?t|?E=0Osz&9y0~_GHUcyY?7>CL0lUn*aGlcxY%=R+dG{rIfCG zC3coKgiIUuFZ{Dp2rc`gADsG|iH}f-bFqEYq{uR9HX`NnTpMpH&>^p|9~6S}{t(N@ zcadEN+k6^ozkx}nsHlkgGbKcER10k__y0b=u^L(4L5bQQf~xxaIGhxJDDQaUwy|kf zTeEfn;^1cQ%&7bsAn=JmH$g(aF0uwo*DZ6;4$ z`Ub*aipNawfIoR0m*d`>I!@TVge_~2W6N3JJRj>9w+Z>DepW_Kv-OBj@>3zte;?T+ zAY{LNEl5_Xpz@!668J_4C@8!Ogye{FziCo9W_twgQ3!dT4{mSSj;VRTo4(8W(MyhA zxAVT{G8W~%PD)aRb{uR(r&5fa8kRhB%W5d*F6kp>r!)xXr>AGnb=UHTP9j^sv8(Du zn*S7>=0Z1LEEGo_zSBy`3<>V$eQ?uxY!VM{1@K1ZN*cJmd-yS6A%comZ|P{cgIhr0 zVkX~X8TK+9TReZoCV)_mw|H%XKJc191Luf8%i%k%By2sqyuxFf!~bkT)WFhyW#hur zMA6KQN$zTkeQ%+8mUnS8iw%m49s8ti?w-z-%yD|?edG^>h+c_75J>k(Fpx~JkzMko z-`%>5Fg@l3lSVfheyp>2!z@G0LO1vxV>}9e%xv$_HTpf7j9g)OjJ<#wvL0?ipak9p zRP2Mw;h^!Kc7k4;PffA(@85Hc_+!KNZgWsYSsCkhM~7%Mi-^bLGQ#GM##nn-z*xIL zaAMe>2dvA+q2ZJuGv`7+=Xcl)QoNSkG55a;S>rr*I$YI;30##-G~ksz=JpNId-V#x zCyp89$w__v{FeVm2Hqj<;5Mg|nf#KX5~>#a?asC~>@;SHII#b2rdu}s&z`n9Kg3BA zfGFN)G34Q-YjY?t7IqpK!O8xC}o#YtNCNq z*Dr}}1Nqj$lx}oTfy|HiATNrtKTvd$W2E%(^jv9jOG(x2!Ez1=`06Z}HR6IhmAaBG zqyT!zx_$GNqiI-8(B^X?MoJTRiP+nIXxfUFDf$)h7c>h9{n?bG}!;rBh>9}kZtn!seM8Nza!>*d}M-#pn*;00)huO+diZ9xGbv5KrORo@}ADg zPeS-u<_!s?y?+WDP*i0tk&mCB9C_HWDpFu{nocjTkp`*KrqCTaXD2@C z3QR8Y3G_nQiMezkVyl81^iFWG6lh0CmqdIWkhyOI+xq-~S5T8l=Ov%%Fkc0W%U0BW zqlrM{8tV3|N9gYBb@9oyN44So0-mu+K;4)EHgUkhZjR}A%C>lew_ess zMp#qS{LlV!`UNaMrMv@QvzsA;c7*p!bXN9YR9CHlu4(j7wqEnpfdM;}3Pit*OW;gu zzKX!G*TO9$m?=@puw|KMf%l5Iesd9Cdh?{1gZ7I8Lx6Qkn!~+Sh(qyqgTV8y?EuHQRk&|v6LoS_*p|O3U=3Ye3=Y15YhJ}7Baz|+%FaMip$aD z*wQc=1(!LQSu{oWSE8x;`w25H$`vQ?vH1OI;51$)JNoS6Z1U;Su5I8o(e6C#c>0%% z^^h|XJAH^bE>!gzn>Or_G@(Nj`K!d^*wFBM)(#BIN@(KId4mv(AVbgN`iQK z7Z*{8k0S*)Pa0LSH#6P5^+f;j{;e23HKmP>+))t>1_9Pi3qimQXR%fEHGz-g-+L2N ztec1bDns`ERVoR?Hl*Ue?Vdu)jI>$nQ{0!}Z!@#!SKSF~6G*a*d0k}>p{RO6}rkga5 z#YORZN4HI!><{@KX|;}&$!bNY0wX{^245A`f5fVNkP_{{zy){h!!GP;`YTyh?_6~ z-(ou=;mCchL^r*kz#vhz{t$og6Y{|!uqGZSy^;;bp2<{wqRwF%EU2*z+ zdIzPx*~fefZ-O}2VBFmoarJm9gBesR0HC;b>mId~F7PU{&9*9%EerK|o7u|V5+P7)M>0B)sI|c{Zh z{nfBO-0IF#Xp!$p>ai^sJL4DNX``|5&0X=wJ7!Db{WHZgP|_J?ary5WoFN!0Sd(J; zus_e=Thj5OFVqBdOZuzG!7`Z zu>kQLi@&Zy-rTq#?ZJFDoxKSpio7PEU`y{~{y}=v%rC4nac{e7NKPHpUUp4qf%}$# z!D&`eoxBfD@lS=w@>RIHq`)a3$ydAY?GffSrI`$S(kQTJe(AH;<1LkmlK#G{O-24= zoC4(i8NhubDn18WlflPALH?e-^lR1_mwWNzy**gR)2xgK3Lz`=#Qr|E4s-h_o^qn4 z16ZQlHHPE{V!AA)S#;nwhBldr-OJ_<^~((9VUP0?{T43r0-nWBcpltJ8RUx2URZAF z1nUDt?K;$L~(tYEc@ZEJ5YbilR)eRExj zKuhxB;ZoOc0 zY{L{5^&xrKpw{SL!+YNOwW2#AjLPca{(e}yg*>>es?5kB@MGpcz#=c~u+kF(7+OBN z7YhY<>Ikl@nm8^40LH-G{{^U3Q~2mbE@%;!XA`l|Mh6{|+;SD<;EI?skHuUo9CGRT zCTw>{2ZG6Yy!q|b6vXkUouJEp_`?SrP#!%JF_95N=i=ulJ^AEda!pKO=eyQ)NWGz$5UW#Qeh7oV4$G$SYh=K?cvA-h2a204FPV0df{^V6Su!)#fEX59O^ z*Yh`rq;(>NAdmEbkMFsNmDwV*c|f@TvJO9>Jm8L=@Fn3}FE=6M^|S_^dU2sYC?R!! z_pZyR72KguPEIcIb_HuNO%k)K5)NAylNMR>5mOsz0G`oC-e;+8k-zJ&Lr<}lPXFwe zqlxHo8o70h;W-MVHd?J(SttL6%GwxjQ; z*L_I|U}{att5?$25^zn%#PktV>;i3@nXr#gbVaw$2n5s1G)o>!Uj~SyDS%#rdm=~p zTbr6pvP_xvu)xxxC)+eRy-LaYUS_E^9%y@uP0lRfVNHW``F+qiSEhTb&#XK@lg1r> zL=JAi(*^gX-9brG$&49M)sLJwgv-la0X_~4`@ubN1QGyT6C$EOLkLTT-b<-_er9!b{*kzyO}A LyihJvvfKb@vzb1&`b}l{G8>vLx#%f40cT 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 ThW~<3eE{^d9%|O8+eiL?G3cuN diff --git a/src/main/resources/assets/hbm/textures/items/ammo_standard.bmg50_equestrian.png b/src/main/resources/assets/hbm/textures/items/ammo_secret.bmg50_equestrian.png similarity index 100% rename from src/main/resources/assets/hbm/textures/items/ammo_standard.bmg50_equestrian.png rename to src/main/resources/assets/hbm/textures/items/ammo_secret.bmg50_equestrian.png diff --git a/src/main/resources/assets/hbm/textures/items/ammo_secret.folly_sm.png b/src/main/resources/assets/hbm/textures/items/ammo_secret.folly_sm.png new file mode 100644 index 0000000000000000000000000000000000000000..30efa4d03e8a65f8da4b46c2b817662b255f298a GIT binary patch literal 400 zcmV;B0dM|^P)b+z(1D&n9t|M`^A307mWd>R56)MkWvC* zjNx{>H9}g?jg%7Gwy|v+DJ6r!pfa;x0b>l8%Y`&eO9WuOUe_Wekmosho@0z5O;gV2 zGoI(6wXQ|V8kJIo>$(6u9uGXv!}on0$03emq9|gqSp4Y8OF$`Abi3X1XMkR>SBtd1 zA5N!}7>z~@heMJi0U${d?)N*>>9n#O>pi77j#rN3Ec^XFS(ef1bjY#{Aq1}LVp$gB z@pySW9#@sXUy(}S6LL5l&|1@Ox0fF$EeL{QHk*|VjiLzO_t|VVgkdNe&HEF%Uax4a u+3j|OVc6*H3$opAiy#O-j(08c9{U2>0h>y)w9%vh0000 Date: Sun, 24 Nov 2024 21:12:41 +0100 Subject: [PATCH 03/24] now you're prepped to commit homicide --- .../projectile/EntityBulletBeamBase.java | 2 + .../entity/projectile/EntityThrowableNT.java | 2 +- src/main/java/com/hbm/items/ModItems.java | 135 +- .../java/com/hbm/items/armor/ArmorFSB.java | 215 +- .../hbm/items/weapon/sedna/BulletConfig.java | 41 +- .../sedna/factory/GunFactoryClient.java | 3 + .../weapon/sedna/factory/Orchestras.java | 37 +- .../weapon/sedna/factory/XFactory9mm.java | 32 +- .../weapon/sedna/factory/XFactoryFolly.java | 69 +- src/main/java/com/hbm/main/ClientProxy.java | 3 - src/main/java/com/hbm/main/MainRegistry.java | 3 + .../java/com/hbm/main/ResourceManager.java | 2 - .../hbm/render/entity/item/RenderBomber.java | 40 +- .../item/weapon/sedna/ItemRenderFolly.java | 27 +- .../sedna/ItemRenderMareslegAkimbo.java | 2 + .../weapon/sedna/ItemRenderUziAkimbo.java | 204 + .../com/hbm/util/DamageResistanceHandler.java | 68 +- .../java/com/hbm/util/EntityDamageUtil.java | 47 +- src/main/resources/assets/hbm/lang/de_DE.lang | 10 +- src/main/resources/assets/hbm/lang/en_US.lang | 10 +- .../assets/hbm/models/weapons/uzi.obj | 3983 ++++++++++++----- .../assets/hbm/textures/models/SteelBeam.png | Bin 311 -> 0 bytes .../hbm/textures/models/SteelCorner.png | Bin 811 -> 0 bytes .../hbm/textures/models/SteelScaffold.png | Bin 437 -> 0 bytes .../assets/hbm/textures/models/SteelWall.png | Bin 653 -> 0 bytes .../assets/hbm/textures/models/dornier_0.png | Bin 27524 -> 0 bytes .../assets/hbm/textures/models/dornier_3.png | Bin 17118 -> 0 bytes .../textures/models/test_container_double.png | Bin 786 -> 0 bytes .../textures/models/test_container_single.png | Bin 629 -> 0 bytes 29 files changed, 3461 insertions(+), 1474 deletions(-) create mode 100644 src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderUziAkimbo.java delete mode 100644 src/main/resources/assets/hbm/textures/models/SteelBeam.png delete mode 100644 src/main/resources/assets/hbm/textures/models/SteelCorner.png delete mode 100644 src/main/resources/assets/hbm/textures/models/SteelScaffold.png delete mode 100644 src/main/resources/assets/hbm/textures/models/SteelWall.png delete mode 100644 src/main/resources/assets/hbm/textures/models/dornier_0.png delete mode 100644 src/main/resources/assets/hbm/textures/models/dornier_3.png delete mode 100644 src/main/resources/assets/hbm/textures/models/test_container_double.png delete mode 100644 src/main/resources/assets/hbm/textures/models/test_container_single.png diff --git a/src/main/java/com/hbm/entity/projectile/EntityBulletBeamBase.java b/src/main/java/com/hbm/entity/projectile/EntityBulletBeamBase.java index 3746b9f7d..614d7be07 100644 --- a/src/main/java/com/hbm/entity/projectile/EntityBulletBeamBase.java +++ b/src/main/java/com/hbm/entity/projectile/EntityBulletBeamBase.java @@ -95,6 +95,8 @@ public class EntityBulletBeamBase extends Entity implements IEntityAdditionalSpa return; } + if(config.onUpdate != null) config.onUpdate.accept(this); + super.onUpdate(); if(!worldObj.isRemote && this.ticksExisted > config.expires) this.setDead(); diff --git a/src/main/java/com/hbm/entity/projectile/EntityThrowableNT.java b/src/main/java/com/hbm/entity/projectile/EntityThrowableNT.java index f3b70f6a6..31a3c2392 100644 --- a/src/main/java/com/hbm/entity/projectile/EntityThrowableNT.java +++ b/src/main/java/com/hbm/entity/projectile/EntityThrowableNT.java @@ -193,7 +193,7 @@ public abstract class EntityThrowableNT extends Entity implements IProjectile { for(int j = 0; j < list.size(); ++j) { Entity entity = (Entity) list.get(j); - if(entity.canBeCollidedWith() && (entity != thrower || this.ticksInAir >= this.selfDamageDelay())) { + if(entity.canBeCollidedWith() && (entity != thrower || this.ticksInAir >= this.selfDamageDelay()) && entity.isEntityAlive()) { double hitbox = 0.3F; AxisAlignedBB aabb = entity.boundingBox.expand(hitbox, hitbox, hitbox); MovingObjectPosition hitMop = aabb.calculateIntercept(pos, nextPos); diff --git a/src/main/java/com/hbm/items/ModItems.java b/src/main/java/com/hbm/items/ModItems.java index 0aa30001a..a4afc5f24 100644 --- a/src/main/java/com/hbm/items/ModItems.java +++ b/src/main/java/com/hbm/items/ModItems.java @@ -1603,6 +1603,7 @@ public class ModItems { public static Item gun_congolake; public static Item gun_flamer; public static Item gun_uzi; + public static Item gun_uzi_akimbo; public static Item gun_spas12; public static Item gun_panzerschreck; public static Item gun_g3; @@ -4573,69 +4574,68 @@ public class ModItems { beta = new ItemDrop().setUnlocalizedName("beta").setMaxStackSize(1).setTextureName(RefStrings.MODID + ":beta"); //oxy_mask = new ArmorModel(ArmorMaterial.IRON, 7, 0).setUnlocalizedName("oxy_mask").setMaxStackSize(1).setTextureName(RefStrings.MODID + ":oxy_mask"); - schrabidium_helmet = new ArmorFSB(MainRegistry.aMatSchrab, 0, RefStrings.MODID + ":textures/armor/schrabidium_1.png").setCap(4F).setMod(0.1F) + schrabidium_helmet = new ArmorFSB(MainRegistry.aMatSchrab, 0, RefStrings.MODID + ":textures/armor/schrabidium_1.png") .addEffect(new PotionEffect(Potion.digSpeed.id, 20, 2)) .addEffect(new PotionEffect(Potion.damageBoost.id, 20, 2)) .addEffect(new PotionEffect(Potion.jump.id, 20, 1)) .addEffect(new PotionEffect(Potion.moveSpeed.id, 20, 2)) - .setFireproof(true).setUnlocalizedName("schrabidium_helmet").setTextureName(RefStrings.MODID + ":schrabidium_helmet"); + .setUnlocalizedName("schrabidium_helmet").setTextureName(RefStrings.MODID + ":schrabidium_helmet"); schrabidium_plate = new ArmorFSB(MainRegistry.aMatSchrab, 1, RefStrings.MODID + ":textures/armor/schrabidium_1.png").cloneStats((ArmorFSB) schrabidium_helmet).setUnlocalizedName("schrabidium_plate").setTextureName(RefStrings.MODID + ":schrabidium_plate"); - schrabidium_legs = new ArmorFSB(MainRegistry.aMatSchrab, 2, RefStrings.MODID + ":textures/armor/schrabidium_2.png").cloneStats((ArmorFSB) schrabidium_helmet).setCap(4F).setMod(0.1F).setUnlocalizedName("schrabidium_legs").setTextureName(RefStrings.MODID + ":schrabidium_legs"); - schrabidium_boots = new ArmorFSB(MainRegistry.aMatSchrab, 3, RefStrings.MODID + ":textures/armor/schrabidium_1.png").cloneStats((ArmorFSB) schrabidium_helmet).setCap(4F).setMod(0.1F).setUnlocalizedName("schrabidium_boots").setTextureName(RefStrings.MODID + ":schrabidium_boots"); - bismuth_helmet = new ArmorBismuth(MainRegistry.aMatBismuth, 0, RefStrings.MODID + ":textures/armor/starmetal_1.png").setCap(8F).setMod(0.3F) - .addResistance("fall", 0) + schrabidium_legs = new ArmorFSB(MainRegistry.aMatSchrab, 2, RefStrings.MODID + ":textures/armor/schrabidium_2.png").cloneStats((ArmorFSB) schrabidium_helmet).setUnlocalizedName("schrabidium_legs").setTextureName(RefStrings.MODID + ":schrabidium_legs"); + schrabidium_boots = new ArmorFSB(MainRegistry.aMatSchrab, 3, RefStrings.MODID + ":textures/armor/schrabidium_1.png").cloneStats((ArmorFSB) schrabidium_helmet).setUnlocalizedName("schrabidium_boots").setTextureName(RefStrings.MODID + ":schrabidium_boots"); + bismuth_helmet = new ArmorBismuth(MainRegistry.aMatBismuth, 0, RefStrings.MODID + ":textures/armor/starmetal_1.png") .addEffect(new PotionEffect(Potion.jump.id, 20, 6)) .addEffect(new PotionEffect(Potion.moveSpeed.id, 20, 6)) .addEffect(new PotionEffect(Potion.regeneration.id, 20, 1)) .addEffect(new PotionEffect(Potion.nightVision.id, 15 * 20, 0)) .setDashCount(3) .setUnlocalizedName("bismuth_helmet").setTextureName(RefStrings.MODID + ":bismuth_helmet"); - bismuth_plate = new ArmorBismuth(MainRegistry.aMatBismuth, 1, RefStrings.MODID + ":textures/armor/starmetal_2.png").cloneStats((ArmorFSB) bismuth_helmet).setCap(8F).setMod(0.3F).setUnlocalizedName("bismuth_plate").setTextureName(RefStrings.MODID + ":bismuth_plate"); - bismuth_legs = new ArmorBismuth(MainRegistry.aMatBismuth, 2, RefStrings.MODID + ":textures/armor/starmetal_1.png").cloneStats((ArmorFSB) bismuth_helmet).setCap(8F).setMod(0.3F).setUnlocalizedName("bismuth_legs").setTextureName(RefStrings.MODID + ":bismuth_legs"); - bismuth_boots = new ArmorBismuth(MainRegistry.aMatBismuth, 3, RefStrings.MODID + ":textures/armor/starmetal_1.png").cloneStats((ArmorFSB) bismuth_helmet).setCap(8F).setMod(0.3F).setUnlocalizedName("bismuth_boots").setTextureName(RefStrings.MODID + ":bismuth_boots"); - titanium_helmet = new ArmorFSB(MainRegistry.aMatTitan, 0, RefStrings.MODID + ":textures/armor/titanium_1.png").setMod(0.85F).setUnlocalizedName("titanium_helmet").setMaxStackSize(1).setTextureName(RefStrings.MODID + ":titanium_helmet"); + bismuth_plate = new ArmorBismuth(MainRegistry.aMatBismuth, 1, RefStrings.MODID + ":textures/armor/starmetal_2.png").cloneStats((ArmorFSB) bismuth_helmet).setUnlocalizedName("bismuth_plate").setTextureName(RefStrings.MODID + ":bismuth_plate"); + bismuth_legs = new ArmorBismuth(MainRegistry.aMatBismuth, 2, RefStrings.MODID + ":textures/armor/starmetal_1.png").cloneStats((ArmorFSB) bismuth_helmet).setUnlocalizedName("bismuth_legs").setTextureName(RefStrings.MODID + ":bismuth_legs"); + bismuth_boots = new ArmorBismuth(MainRegistry.aMatBismuth, 3, RefStrings.MODID + ":textures/armor/starmetal_1.png").cloneStats((ArmorFSB) bismuth_helmet).setUnlocalizedName("bismuth_boots").setTextureName(RefStrings.MODID + ":bismuth_boots"); + titanium_helmet = new ArmorFSB(MainRegistry.aMatTitan, 0, RefStrings.MODID + ":textures/armor/titanium_1.png").setUnlocalizedName("titanium_helmet").setMaxStackSize(1).setTextureName(RefStrings.MODID + ":titanium_helmet"); titanium_plate = new ArmorFSB(MainRegistry.aMatTitan, 1, RefStrings.MODID + ":textures/armor/titanium_1.png").cloneStats((ArmorFSB) titanium_helmet).setUnlocalizedName("titanium_plate").setMaxStackSize(1).setTextureName(RefStrings.MODID + ":titanium_plate"); titanium_legs = new ArmorFSB(MainRegistry.aMatTitan, 2, RefStrings.MODID + ":textures/armor/titanium_2.png").cloneStats((ArmorFSB) titanium_helmet).setUnlocalizedName("titanium_legs").setMaxStackSize(1).setTextureName(RefStrings.MODID + ":titanium_legs"); titanium_boots = new ArmorFSB(MainRegistry.aMatTitan, 3, RefStrings.MODID + ":textures/armor/titanium_1.png").cloneStats((ArmorFSB) titanium_helmet).setUnlocalizedName("titanium_boots").setTextureName(RefStrings.MODID + ":titanium_boots"); - steel_helmet = new ArmorFSB(MainRegistry.aMatSteel, 0, RefStrings.MODID + ":textures/armor/steel_1.png").setMod(0.9F).setUnlocalizedName("steel_helmet").setTextureName(RefStrings.MODID + ":steel_helmet"); + steel_helmet = new ArmorFSB(MainRegistry.aMatSteel, 0, RefStrings.MODID + ":textures/armor/steel_1.png").setUnlocalizedName("steel_helmet").setTextureName(RefStrings.MODID + ":steel_helmet"); steel_plate = new ArmorFSB(MainRegistry.aMatSteel, 1, RefStrings.MODID + ":textures/armor/steel_1.png").cloneStats((ArmorFSB) steel_helmet).setUnlocalizedName("steel_plate").setTextureName(RefStrings.MODID + ":steel_plate"); steel_legs = new ArmorFSB(MainRegistry.aMatSteel, 2, RefStrings.MODID + ":textures/armor/steel_2.png").cloneStats((ArmorFSB) steel_helmet).setUnlocalizedName("steel_legs").setTextureName(RefStrings.MODID + ":steel_legs"); steel_boots = new ArmorFSB(MainRegistry.aMatSteel, 3, RefStrings.MODID + ":textures/armor/steel_1.png").cloneStats((ArmorFSB) steel_helmet).setUnlocalizedName("steel_boots").setTextureName(RefStrings.MODID + ":steel_boots"); - alloy_helmet = new ArmorFSB(MainRegistry.aMatAlloy, 0, RefStrings.MODID + ":textures/armor/alloy_1.png").setMod(0.75F).setUnlocalizedName("alloy_helmet").setTextureName(RefStrings.MODID + ":alloy_helmet"); + alloy_helmet = new ArmorFSB(MainRegistry.aMatAlloy, 0, RefStrings.MODID + ":textures/armor/alloy_1.png").setUnlocalizedName("alloy_helmet").setTextureName(RefStrings.MODID + ":alloy_helmet"); alloy_plate = new ArmorFSB(MainRegistry.aMatAlloy, 1, RefStrings.MODID + ":textures/armor/alloy_1.png").cloneStats((ArmorFSB) alloy_helmet).setUnlocalizedName("alloy_plate").setTextureName(RefStrings.MODID + ":alloy_plate"); alloy_legs = new ArmorFSB(MainRegistry.aMatAlloy, 2, RefStrings.MODID + ":textures/armor/alloy_2.png").cloneStats((ArmorFSB) alloy_helmet).setUnlocalizedName("alloy_legs").setTextureName(RefStrings.MODID + ":alloy_legs"); alloy_boots = new ArmorFSB(MainRegistry.aMatAlloy, 3, RefStrings.MODID + ":textures/armor/alloy_1.png").cloneStats((ArmorFSB) alloy_helmet).setUnlocalizedName("alloy_boots").setTextureName(RefStrings.MODID + ":alloy_boots"); - cmb_helmet = new ArmorFSB(MainRegistry.aMatCMB, 0, RefStrings.MODID + ":textures/armor/cmb_1.png").setCap(2F).setThreshold(2F).setMod(0.05F) + cmb_helmet = new ArmorFSB(MainRegistry.aMatCMB, 0, RefStrings.MODID + ":textures/armor/cmb_1.png") .addEffect(new PotionEffect(Potion.moveSpeed.id, 20, 2)) .addEffect(new PotionEffect(Potion.digSpeed.id, 20, 2)) .addEffect(new PotionEffect(Potion.damageBoost.id, 20, 4)) - .setFireproof(true).setUnlocalizedName("cmb_helmet").setTextureName(RefStrings.MODID + ":cmb_helmet"); + .setUnlocalizedName("cmb_helmet").setTextureName(RefStrings.MODID + ":cmb_helmet"); cmb_plate = new ArmorFSB(MainRegistry.aMatCMB, 1, RefStrings.MODID + ":textures/armor/cmb_1.png").cloneStats((ArmorFSB) cmb_helmet).setUnlocalizedName("cmb_plate").setTextureName(RefStrings.MODID + ":cmb_plate"); cmb_legs = new ArmorFSB(MainRegistry.aMatCMB, 2, RefStrings.MODID + ":textures/armor/cmb_2.png").cloneStats((ArmorFSB) cmb_helmet).setUnlocalizedName("cmb_legs").setTextureName(RefStrings.MODID + ":cmb_legs"); cmb_boots = new ArmorFSB(MainRegistry.aMatCMB, 3, RefStrings.MODID + ":textures/armor/cmb_1.png").cloneStats((ArmorFSB) cmb_helmet).setUnlocalizedName("cmb_boots").setTextureName(RefStrings.MODID + ":cmb_boots"); - paa_plate = new ArmorFSB(MainRegistry.aMatPaa, 1, RefStrings.MODID + ":textures/armor/paa_1.png").setCap(6F).setMod(0.3F).setNoHelmet(true) + paa_plate = new ArmorFSB(MainRegistry.aMatPaa, 1, RefStrings.MODID + ":textures/armor/paa_1.png").setNoHelmet(true) .addEffect(new PotionEffect(Potion.digSpeed.id, 20, 0)).setUnlocalizedName("paa_plate").setTextureName(RefStrings.MODID + ":paa_plate"); paa_legs = new ArmorFSB(MainRegistry.aMatPaa, 2, RefStrings.MODID + ":textures/armor/paa_2.png").cloneStats((ArmorFSB) paa_plate).setUnlocalizedName("paa_legs").setTextureName(RefStrings.MODID + ":paa_legs"); paa_boots = new ArmorFSB(MainRegistry.aMatPaa, 3, RefStrings.MODID + ":textures/armor/paa_1.png").cloneStats((ArmorFSB) paa_plate).setUnlocalizedName("paa_boots").setTextureName(RefStrings.MODID + ":paa_boots"); - asbestos_helmet = new ArmorFSB(MainRegistry.aMatAsbestos, 0, RefStrings.MODID + ":textures/armor/asbestos_1.png").setFireproof(true).setOverlay(RefStrings.MODID + ":textures/misc/overlay_asbestos.png").setUnlocalizedName("asbestos_helmet").setTextureName(RefStrings.MODID + ":asbestos_helmet"); - asbestos_plate = new ArmorFSB(MainRegistry.aMatAsbestos, 1, RefStrings.MODID + ":textures/armor/asbestos_1.png").setFireproof(true).setUnlocalizedName("asbestos_plate").setTextureName(RefStrings.MODID + ":asbestos_plate"); - asbestos_legs = new ArmorFSB(MainRegistry.aMatAsbestos, 2, RefStrings.MODID + ":textures/armor/asbestos_2.png").setFireproof(true).setUnlocalizedName("asbestos_legs").setTextureName(RefStrings.MODID + ":asbestos_legs"); - asbestos_boots = new ArmorFSB(MainRegistry.aMatAsbestos, 3, RefStrings.MODID + ":textures/armor/asbestos_1.png").setFireproof(true).setUnlocalizedName("asbestos_boots").setTextureName(RefStrings.MODID + ":asbestos_boots"); - security_helmet = new ArmorFSB(MainRegistry.aMatSecurity, 0, RefStrings.MODID + ":textures/armor/security_1.png").setMod(0.65F).setProjectileProtection(0.5F).setUnlocalizedName("security_helmet").setTextureName(RefStrings.MODID + ":security_helmet"); + asbestos_helmet = new ArmorFSB(MainRegistry.aMatAsbestos, 0, RefStrings.MODID + ":textures/armor/asbestos_1.png").setOverlay(RefStrings.MODID + ":textures/misc/overlay_asbestos.png").setUnlocalizedName("asbestos_helmet").setTextureName(RefStrings.MODID + ":asbestos_helmet"); + asbestos_plate = new ArmorFSB(MainRegistry.aMatAsbestos, 1, RefStrings.MODID + ":textures/armor/asbestos_1.png").setUnlocalizedName("asbestos_plate").setTextureName(RefStrings.MODID + ":asbestos_plate"); + asbestos_legs = new ArmorFSB(MainRegistry.aMatAsbestos, 2, RefStrings.MODID + ":textures/armor/asbestos_2.png").setUnlocalizedName("asbestos_legs").setTextureName(RefStrings.MODID + ":asbestos_legs"); + asbestos_boots = new ArmorFSB(MainRegistry.aMatAsbestos, 3, RefStrings.MODID + ":textures/armor/asbestos_1.png").setUnlocalizedName("asbestos_boots").setTextureName(RefStrings.MODID + ":asbestos_boots"); + security_helmet = new ArmorFSB(MainRegistry.aMatSecurity, 0, RefStrings.MODID + ":textures/armor/security_1.png").setUnlocalizedName("security_helmet").setTextureName(RefStrings.MODID + ":security_helmet"); security_plate = new ArmorFSB(MainRegistry.aMatSecurity, 1, RefStrings.MODID + ":textures/armor/security_1.png").cloneStats((ArmorFSB) security_helmet).setUnlocalizedName("security_plate").setTextureName(RefStrings.MODID + ":security_plate"); security_legs = new ArmorFSB(MainRegistry.aMatSecurity, 2, RefStrings.MODID + ":textures/armor/security_2.png").cloneStats((ArmorFSB) security_helmet).setUnlocalizedName("security_legs").setTextureName(RefStrings.MODID + ":security_legs"); security_boots = new ArmorFSB(MainRegistry.aMatSecurity, 3, RefStrings.MODID + ":textures/armor/security_1.png").cloneStats((ArmorFSB) security_helmet).setUnlocalizedName("security_boots").setTextureName(RefStrings.MODID + ":security_boots"); - cobalt_helmet = new ArmorFSB(MainRegistry.aMatCobalt, 0, RefStrings.MODID + ":textures/armor/cobalt_1.png").setMod(0.7F).setUnlocalizedName("cobalt_helmet").setTextureName(RefStrings.MODID + ":cobalt_helmet"); + cobalt_helmet = new ArmorFSB(MainRegistry.aMatCobalt, 0, RefStrings.MODID + ":textures/armor/cobalt_1.png").setUnlocalizedName("cobalt_helmet").setTextureName(RefStrings.MODID + ":cobalt_helmet"); cobalt_plate = new ArmorFSB(MainRegistry.aMatCobalt, 1, RefStrings.MODID + ":textures/armor/cobalt_1.png").cloneStats((ArmorFSB) cobalt_helmet).setUnlocalizedName("cobalt_plate").setTextureName(RefStrings.MODID + ":cobalt_plate"); cobalt_legs = new ArmorFSB(MainRegistry.aMatCobalt, 2, RefStrings.MODID + ":textures/armor/cobalt_2.png").cloneStats((ArmorFSB) cobalt_helmet).setUnlocalizedName("cobalt_legs").setTextureName(RefStrings.MODID + ":cobalt_legs"); cobalt_boots = new ArmorFSB(MainRegistry.aMatCobalt, 3, RefStrings.MODID + ":textures/armor/cobalt_1.png").cloneStats((ArmorFSB) cobalt_helmet).setUnlocalizedName("cobalt_boots").setTextureName(RefStrings.MODID + ":cobalt_boots"); - starmetal_helmet = new ArmorFSB(MainRegistry.aMatStarmetal, 0, RefStrings.MODID + ":textures/armor/starmetal_1.png").setMod(0.5F).setCap(15F) - .setFireproof(true).setUnlocalizedName("starmetal_helmet").setTextureName(RefStrings.MODID + ":starmetal_helmet"); + starmetal_helmet = new ArmorFSB(MainRegistry.aMatStarmetal, 0, RefStrings.MODID + ":textures/armor/starmetal_1.png") + .setUnlocalizedName("starmetal_helmet").setTextureName(RefStrings.MODID + ":starmetal_helmet"); starmetal_plate = new ArmorFSB(MainRegistry.aMatStarmetal, 1, RefStrings.MODID + ":textures/armor/starmetal_1.png").cloneStats((ArmorFSB) starmetal_helmet).setUnlocalizedName("starmetal_plate").setTextureName(RefStrings.MODID + ":starmetal_plate"); starmetal_legs = new ArmorFSB(MainRegistry.aMatStarmetal, 2, RefStrings.MODID + ":textures/armor/starmetal_2.png").cloneStats((ArmorFSB) starmetal_helmet).setUnlocalizedName("starmetal_legs").setTextureName(RefStrings.MODID + ":starmetal_legs"); starmetal_boots = new ArmorFSB(MainRegistry.aMatStarmetal, 3, RefStrings.MODID + ":textures/armor/starmetal_1.png").cloneStats((ArmorFSB) starmetal_helmet).setUnlocalizedName("starmetal_boots").setTextureName(RefStrings.MODID + ":starmetal_boots"); - robes_helmet = new ArmorFSB(ArmorMaterial.CHAIN, 0, RefStrings.MODID + ":textures/armor/robes_1.png").setThreshold(1.0F).setUnlocalizedName("robes_helmet").setTextureName(RefStrings.MODID + ":robes_helmet"); + robes_helmet = new ArmorFSB(ArmorMaterial.CHAIN, 0, RefStrings.MODID + ":textures/armor/robes_1.png").setUnlocalizedName("robes_helmet").setTextureName(RefStrings.MODID + ":robes_helmet"); robes_plate = new ArmorFSB(ArmorMaterial.CHAIN, 1, RefStrings.MODID + ":textures/armor/robes_1.png").cloneStats((ArmorFSB) robes_helmet).setUnlocalizedName("robes_plate").setTextureName(RefStrings.MODID + ":robes_plate"); robes_legs = new ArmorFSB(ArmorMaterial.CHAIN, 2, RefStrings.MODID + ":textures/armor/robes_2.png").cloneStats((ArmorFSB) robes_helmet).setUnlocalizedName("robes_legs").setTextureName(RefStrings.MODID + ":robes_legs"); robes_boots = new ArmorFSB(ArmorMaterial.CHAIN, 3, RefStrings.MODID + ":textures/armor/robes_1.png").cloneStats((ArmorFSB) robes_helmet).setUnlocalizedName("robes_boots").setTextureName(RefStrings.MODID + ":robes_boots"); @@ -4647,27 +4647,23 @@ public class ModItems { ArmorMaterial aMatZirconium = EnumHelper.addArmorMaterial("HBM_ZIRCONIUM", 1000, new int[] { 2, 5, 3, 1 }, 100); aMatZirconium.customCraftingMaterial = ModItems.ingot_zirconium; - zirconium_legs = new ArmorFSB(aMatZirconium, 2, RefStrings.MODID + ":textures/armor/zirconium_2.png").setMod(0.0F).setUnlocalizedName("zirconium_legs").setTextureName(RefStrings.MODID + ":zirconium_legs"); + zirconium_legs = new ArmorFSB(aMatZirconium, 2, RefStrings.MODID + ":textures/armor/zirconium_2.png").setUnlocalizedName("zirconium_legs").setTextureName(RefStrings.MODID + ":zirconium_legs"); ArmorMaterial aMatDNT = EnumHelper.addArmorMaterial("HBM_DNT_LOLOLOL", 3, new int[] { 1, 1, 1, 1 }, 0); aMatDNT.customCraftingMaterial = ModItems.ingot_dineutronium; dnt_helmet = new ArmorFSB(aMatDNT, 0, RefStrings.MODID + ":textures/armor/dnt_1.png") - .setMod(5F).setUnlocalizedName("dnt_helmet").setTextureName(RefStrings.MODID + ":dnt_helmet"); + .setUnlocalizedName("dnt_helmet").setTextureName(RefStrings.MODID + ":dnt_helmet"); dnt_plate = new ArmorFSB(aMatDNT, 1, RefStrings.MODID + ":textures/armor/dnt_1.png").cloneStats((ArmorFSB) dnt_helmet).setUnlocalizedName("dnt_plate").setTextureName(RefStrings.MODID + ":dnt_plate"); dnt_legs = new ArmorFSB(aMatDNT, 2, RefStrings.MODID + ":textures/armor/dnt_2.png").cloneStats((ArmorFSB) dnt_helmet).setUnlocalizedName("dnt_legs").setTextureName(RefStrings.MODID + ":dnt_legs"); dnt_boots = new ArmorFSB(aMatDNT, 3, RefStrings.MODID + ":textures/armor/dnt_1.png").cloneStats((ArmorFSB) dnt_helmet).setUnlocalizedName("dnt_boots").setTextureName(RefStrings.MODID + ":dnt_boots"); ArmorMaterial aMatT45 = EnumHelper.addArmorMaterial("HBM_T45", 150, new int[] { 3, 8, 6, 3 }, 0); aMatT45.customCraftingMaterial = ModItems.plate_armor_titanium; - t45_helmet = new ArmorT45(aMatT45, 0, 1000000, 10000, 1000, 5).setCap(10F).setMod(0.5F) - .setFireproof(true) + t45_helmet = new ArmorT45(aMatT45, 0, 1000000, 10000, 1000, 5) .enableVATS(true) .setHasGeigerSound(true) .setHasHardLanding(true) .addEffect(new PotionEffect(Potion.damageBoost.id, 20, 0)) - .setBlastProtection(0.5F) - .addResistance("monoxide", 0F) - .addResistance("fall", 0) .hides(EnumPlayerPart.HAT) .setUnlocalizedName("t45_helmet").setMaxStackSize(1).setTextureName(RefStrings.MODID + ":t45_helmet"); t45_plate = new ArmorT45(aMatT45, 1, 1000000, 10000, 1000, 5).cloneStats((ArmorFSB) t45_helmet).setUnlocalizedName("t45_plate").setMaxStackSize(1).setTextureName(RefStrings.MODID + ":t45_plate"); @@ -4676,13 +4672,9 @@ public class ModItems { ArmorMaterial aMatDesh = EnumHelper.addArmorMaterial("HBM_DESH", 150, new int[] { 3, 8, 6, 3 }, 0); aMatDesh.customCraftingMaterial = ModItems.ingot_desh; - steamsuit_helmet = new ArmorDesh(aMatDesh, 0, RefStrings.MODID + ":textures/armor/starmetal_1.png", Fluids.STEAM, 64_000, 500, 50, 1).setThreshold(5F).setMod(0.8F) - .setFireproof(true) + steamsuit_helmet = new ArmorDesh(aMatDesh, 0, RefStrings.MODID + ":textures/armor/starmetal_1.png", Fluids.STEAM, 64_000, 500, 50, 1) .setHasHardLanding(true) .addEffect(new PotionEffect(Potion.digSpeed.id, 20, 4)) - .setBlastProtection(0.5F) - .addResistance("monoxide", 0F) - .addResistance("fall", 0) .hides(EnumPlayerPart.HAT) .setUnlocalizedName("steamsuit_helmet").setMaxStackSize(1).setTextureName(RefStrings.MODID + ":steamsuit_helmet"); steamsuit_plate = new ArmorDesh(aMatDesh, 1, RefStrings.MODID + ":textures/armor/starmetal_1.png", Fluids.STEAM, 64_000, 500, 50, 1).cloneStats((ArmorFSB) steamsuit_helmet).setUnlocalizedName("steamsuit_plate").setMaxStackSize(1).setTextureName(RefStrings.MODID + ":steamsuit_plate"); @@ -4691,12 +4683,11 @@ public class ModItems { ArmorMaterial aMatDiesel = EnumHelper.addArmorMaterial("HBM_BNUUY", 150, new int[] { 3, 8, 6, 3 }, 0); aMatDiesel.customCraftingMaterial = ModItems.plate_copper; - dieselsuit_helmet = new ArmorDiesel(aMatDiesel, 0, RefStrings.MODID + ":textures/armor/starmetal_1.png", Fluids.DIESEL, 64_000, 500, 50, 1).setThreshold(2F).setMod(0.7F) + dieselsuit_helmet = new ArmorDiesel(aMatDiesel, 0, RefStrings.MODID + ":textures/armor/starmetal_1.png", Fluids.DIESEL, 64_000, 500, 50, 1) .addEffect(new PotionEffect(Potion.moveSpeed.id, 20, 2)) .addEffect(new PotionEffect(Potion.jump.id, 20, 2)) .enableThermalSight(true) .enableVATS(true) - .addResistance("fall", 0) .setUnlocalizedName("dieselsuit_helmet").setMaxStackSize(1).setTextureName(RefStrings.MODID + ":dieselsuit_helmet"); dieselsuit_plate = new ArmorDiesel(aMatDiesel, 1, RefStrings.MODID + ":textures/armor/starmetal_1.png", Fluids.DIESEL, 64_000, 500, 50, 1).cloneStats((ArmorFSB) dieselsuit_helmet).setUnlocalizedName("dieselsuit_plate").setMaxStackSize(1).setTextureName(RefStrings.MODID + ":dieselsuit_plate"); dieselsuit_legs = new ArmorDiesel(aMatDiesel, 2, RefStrings.MODID + ":textures/armor/starmetal_2.png", Fluids.DIESEL, 64_000, 500, 50, 1).cloneStats((ArmorFSB) dieselsuit_helmet).setUnlocalizedName("dieselsuit_legs").setMaxStackSize(1).setTextureName(RefStrings.MODID + ":dieselsuit_legs"); @@ -4704,57 +4695,40 @@ public class ModItems { ArmorMaterial aMatAJR = EnumHelper.addArmorMaterial("HBM_T45AJR", 150, new int[] { 3, 8, 6, 3 }, 100); aMatAJR.customCraftingMaterial = ModItems.plate_armor_ajr; - ajr_helmet = new ArmorAJR(aMatAJR, 0, RefStrings.MODID + ":textures/armor/starmetal_1.png", 2500000, 10000, 2000, 25).setMod(0.25F).setCap(6.0F).setThreshold(4F) - .setFireproof(true) + ajr_helmet = new ArmorAJR(aMatAJR, 0, RefStrings.MODID + ":textures/armor/starmetal_1.png", 2500000, 10000, 2000, 25) .enableVATS(true) .setHasGeigerSound(true) .setHasHardLanding(true) .addEffect(new PotionEffect(Potion.jump.id, 20, 0)) .addEffect(new PotionEffect(Potion.damageBoost.id, 20, 0)) - .setBlastProtection(0.25F) - .setStep("hbm:step.metal") - .setJump("hbm:step.iron_jump") - .setFall("hbm:step.iron_land") - .addResistance("monoxide", 0F) - .addResistance("fall", 0) + .setStep("hbm:step.metal").setJump("hbm:step.iron_jump").setFall("hbm:step.iron_land") .hides(EnumPlayerPart.HAT) .setUnlocalizedName("ajr_helmet").setTextureName(RefStrings.MODID + ":ajr_helmet"); ajr_plate = new ArmorAJR(aMatAJR, 1, RefStrings.MODID + ":textures/armor/starmetal_1.png", 2500000, 10000, 2000, 25).cloneStats((ArmorFSB) ajr_helmet).setUnlocalizedName("ajr_plate").setTextureName(RefStrings.MODID + ":ajr_plate"); ajr_legs = new ArmorAJR(aMatAJR, 2, RefStrings.MODID + ":textures/armor/starmetal_2.png", 2500000, 10000, 2000, 25).cloneStats((ArmorFSB) ajr_helmet).setUnlocalizedName("ajr_legs").setTextureName(RefStrings.MODID + ":ajr_legs"); ajr_boots = new ArmorAJR(aMatAJR, 3, RefStrings.MODID + ":textures/armor/starmetal_1.png", 2500000, 10000, 2000, 25).cloneStats((ArmorFSB) ajr_helmet).setUnlocalizedName("ajr_boots").setTextureName(RefStrings.MODID + ":ajr_boots"); - ajro_helmet = new ArmorAJRO(aMatAJR, 0, RefStrings.MODID + ":textures/armor/starmetal_1.png", 2500000, 10000, 2000, 25).setMod(0.25F).setCap(6.0F).setThreshold(4F) - .setFireproof(true) + ajro_helmet = new ArmorAJRO(aMatAJR, 0, RefStrings.MODID + ":textures/armor/starmetal_1.png", 2500000, 10000, 2000, 25) .enableVATS(true) .setHasGeigerSound(true) .setHasHardLanding(true) .addEffect(new PotionEffect(Potion.jump.id, 20, 0)) .addEffect(new PotionEffect(Potion.damageBoost.id, 20, 0)) - .setBlastProtection(0.25F) - .setStep("hbm:step.metal") - .setJump("hbm:step.iron_jump") - .setFall("hbm:step.iron_land") - .addResistance("monoxide", 0F) - .addResistance("fall", 0) + .setStep("hbm:step.metal").setJump("hbm:step.iron_jump").setFall("hbm:step.iron_land") .hides(EnumPlayerPart.HAT) .setUnlocalizedName("ajro_helmet").setTextureName(RefStrings.MODID + ":ajro_helmet"); ajro_plate = new ArmorAJRO(aMatAJR, 1, RefStrings.MODID + ":textures/armor/starmetal_1.png", 2500000, 10000, 2000, 25).cloneStats((ArmorFSB) ajro_helmet).setUnlocalizedName("ajro_plate").setTextureName(RefStrings.MODID + ":ajro_plate"); ajro_legs = new ArmorAJRO(aMatAJR, 2, RefStrings.MODID + ":textures/armor/starmetal_2.png", 2500000, 10000, 2000, 25).cloneStats((ArmorFSB) ajro_helmet).setUnlocalizedName("ajro_legs").setTextureName(RefStrings.MODID + ":ajro_legs"); ajro_boots = new ArmorAJRO(aMatAJR, 3, RefStrings.MODID + ":textures/armor/starmetal_1.png", 2500000, 10000, 2000, 25).cloneStats((ArmorFSB) ajro_helmet).setUnlocalizedName("ajro_boots").setTextureName(RefStrings.MODID + ":ajro_boots"); - rpa_helmet = new ArmorRPA(aMatAJR, 0, RefStrings.MODID + ":textures/armor/starmetal_1.png", 2500000, 10000, 2000, 25).setMod(0.1F).setCap(6.0F).setThreshold(20F) - .setFireproof(true) + rpa_helmet = new ArmorRPA(aMatAJR, 0, RefStrings.MODID + ":textures/armor/starmetal_1.png", 2500000, 10000, 2000, 25) .enableVATS(true) .setHasGeigerSound(true) .setHasHardLanding(true) .addEffect(new PotionEffect(Potion.damageBoost.id, 20, 3)) - .setBlastProtection(0.25F) - .setProjectileProtection(0.25F) - .setProtectionLevel(1500) .setStep("hbm:step.powered") .setJump("hbm:step.powered") .setFall("hbm:step.powered") - .addResistance("fall", 0) .hides(EnumPlayerPart.HAT) .setUnlocalizedName("rpa_helmet").setTextureName(RefStrings.MODID + ":rpa_helmet"); rpa_plate = new ArmorRPA(aMatAJR, 1, RefStrings.MODID + ":textures/armor/starmetal_1.png", 2500000, 10000, 2000, 25).cloneStats((ArmorFSB) rpa_helmet).setUnlocalizedName("rpa_plate").setTextureName(RefStrings.MODID + ":rpa_plate"); @@ -4763,8 +4737,7 @@ public class ModItems { ArmorMaterial aMatBJ = EnumHelper.addArmorMaterial("HBM_BLACKJACK", 150, new int[] { 3, 8, 6, 3 }, 100); aMatBJ.customCraftingMaterial = ModItems.plate_armor_lunar; - bj_helmet = new ArmorBJ(aMatBJ, 0, RefStrings.MODID + ":textures/armor/starmetal_1.png", 10000000, 10000, 1000, 100).setMod(0.25F).setCap(4.0F).setThreshold(4F) - .setFireproof(true) + bj_helmet = new ArmorBJ(aMatBJ, 0, RefStrings.MODID + ":textures/armor/starmetal_1.png", 10000000, 10000, 1000, 100) .enableVATS(true) .enableThermalSight(true) .setHasGeigerSound(true) @@ -4773,12 +4746,9 @@ public class ModItems { .addEffect(new PotionEffect(Potion.jump.id, 20, 0)) .addEffect(new PotionEffect(Potion.field_76443_y.id, 20, 0)) .addEffect(new PotionEffect(HbmPotion.radx.id, 20, 0)) - .setBlastProtection(0.5F) - .setProtectionLevel(500F) .setStep("hbm:step.metal") .setJump("hbm:step.iron_jump") - .setFall("hbm:step.iron_land") - .addResistance("fall", 0).setUnlocalizedName("bj_helmet").setTextureName(RefStrings.MODID + ":bj_helmet"); + .setFall("hbm:step.iron_land").setUnlocalizedName("bj_helmet").setTextureName(RefStrings.MODID + ":bj_helmet"); bj_plate = new ArmorBJ(aMatBJ, 1, RefStrings.MODID + ":textures/armor/starmetal_1.png", 10000000, 10000, 1000, 100).cloneStats((ArmorFSB) bj_helmet).setUnlocalizedName("bj_plate").setTextureName(RefStrings.MODID + ":bj_plate"); bj_plate_jetpack = new ArmorBJJetpack(aMatBJ, 1, RefStrings.MODID + ":textures/armor/starmetal_1.png", 10000000, 10000, 1000, 100).cloneStats((ArmorFSB) bj_helmet).setUnlocalizedName("bj_plate_jetpack").setTextureName(RefStrings.MODID + ":bj_plate_jetpack"); bj_legs = new ArmorBJ(aMatBJ, 2, RefStrings.MODID + ":textures/armor/starmetal_2.png", 10000000, 10000, 1000, 100).cloneStats((ArmorFSB) bj_helmet).setUnlocalizedName("bj_legs").setTextureName(RefStrings.MODID + ":bj_legs"); @@ -4786,12 +4756,9 @@ public class ModItems { ArmorMaterial aMatEnv = EnumHelper.addArmorMaterial("HBM_ENV", 150, new int[] { 3, 8, 6, 3 }, 100); aMatEnv.customCraftingMaterial = ModItems.plate_armor_hev; - envsuit_helmet = new ArmorEnvsuit(aMatEnv, 0, RefStrings.MODID + ":textures/armor/starmetal_1.png", 100_000, 1_000, 250, 0).setMod(0.5F).setThreshold(2.0F) + envsuit_helmet = new ArmorEnvsuit(aMatEnv, 0, RefStrings.MODID + ":textures/armor/starmetal_1.png", 100_000, 1_000, 250, 0) .addEffect(new PotionEffect(Potion.moveSpeed.id, 20, 1)) .addEffect(new PotionEffect(Potion.jump.id, 20, 0)) - .addResistance("fall", 0.25F) - .addResistance("monoxide", 0F) - .addResistance("onFire", 0F) .hides(EnumPlayerPart.HAT) .setUnlocalizedName("envsuit_helmet").setTextureName(RefStrings.MODID + ":envsuit_helmet"); envsuit_plate = new ArmorEnvsuit(aMatEnv, 1, RefStrings.MODID + ":textures/armor/starmetal_1.png", 100_000, 1_000, 250, 0).cloneStats((ArmorFSB) envsuit_helmet).setUnlocalizedName("envsuit_plate").setTextureName(RefStrings.MODID + ":envsuit_plate"); @@ -4800,16 +4767,11 @@ public class ModItems { ArmorMaterial aMatHEV = EnumHelper.addArmorMaterial("HBM_HEV", 150, new int[] { 3, 8, 6, 3 }, 100); aMatHEV.customCraftingMaterial = ModItems.plate_armor_hev; - hev_helmet = new ArmorHEV(aMatHEV, 0, RefStrings.MODID + ":textures/armor/starmetal_1.png", 1000000, 10000, 2500, 0).setMod(0.20F).setCap(4.0F).setThreshold(2.0F) + hev_helmet = new ArmorHEV(aMatHEV, 0, RefStrings.MODID + ":textures/armor/starmetal_1.png", 1000000, 10000, 2500, 0) .addEffect(new PotionEffect(Potion.moveSpeed.id, 20, 1)) .addEffect(new PotionEffect(Potion.jump.id, 20, 0)) - .setBlastProtection(0.25F) - .setProtectionLevel(500F) .setHasGeigerSound(true) .setHasCustomGeiger(true) - .addResistance("fall", 0.5F) - .addResistance("monoxide", 0F) - .addResistance("onFire", 0F) .hides(EnumPlayerPart.HAT) .setUnlocalizedName("hev_helmet").setTextureName(RefStrings.MODID + ":hev_helmet"); hev_plate = new ArmorHEV(aMatHEV, 1, RefStrings.MODID + ":textures/armor/starmetal_1.png", 1000000, 10000, 2500, 0).cloneStats((ArmorFSB) hev_helmet).setUnlocalizedName("hev_plate").setTextureName(RefStrings.MODID + ":hev_plate"); @@ -4821,20 +4783,14 @@ public class ModItems { ArmorMaterial aMatFau = EnumHelper.addArmorMaterial("HBM_DIGAMMA", 150, new int[] { 3, 8, 6, 3 }, 100); aMatFau.customCraftingMaterial = ModItems.plate_armor_fau; - fau_helmet = new ArmorDigamma(aMatFau, 0, RefStrings.MODID + ":textures/armor/starmetal_1.png", 10000000, 10000, 2500, 0).setMod(0.25F).setCap(4.0F).setThreshold(2.0F) + fau_helmet = new ArmorDigamma(aMatFau, 0, RefStrings.MODID + ":textures/armor/starmetal_1.png", 10000000, 10000, 2500, 0) .addEffect(new PotionEffect(Potion.jump.id, 20, 1)) - .setBlastProtection(0.05F) - .setMod(0.05F) .setHasGeigerSound(true) .enableThermalSight(true) .setHasHardLanding(true) .setStep("hbm:step.metal") .setJump("hbm:step.iron_jump") .setFall("hbm:step.iron_land") - .setProtectionLevel(1000F) - .addResistance("fall", 0F) - .addResistance("monoxide", 0F) - .setFireproof(true) .hides(EnumPlayerPart.HAT) .setUnlocalizedName("fau_helmet").setTextureName(RefStrings.MODID + ":fau_helmet"); fau_plate = new ArmorDigamma(aMatFau, 1, RefStrings.MODID + ":textures/armor/starmetal_1.png", 10000000, 10000, 2500, 0).cloneStats((ArmorFSB) fau_helmet).setFullSetForHide().setUnlocalizedName("fau_plate").setTextureName(RefStrings.MODID + ":fau_plate"); @@ -4854,7 +4810,6 @@ public class ModItems { .setStep("hbm:step.metal") .setJump("hbm:step.iron_jump") .setFall("hbm:step.iron_land") - .setFireproof(true) .hides(EnumPlayerPart.HAT) .setUnlocalizedName("dns_helmet").setTextureName(RefStrings.MODID + ":dns_helmet"); dns_plate = new ArmorDNT(aMatDNS, 1, RefStrings.MODID + ":textures/armor/starmetal_1.png", 1000000000, 1000000, 100000, 115).cloneStats((ArmorFSB) dns_helmet).setUnlocalizedName("dns_plate").setTextureName(RefStrings.MODID + ":dns_plate"); @@ -4863,14 +4818,12 @@ public class ModItems { ArmorMaterial aMatTrench = EnumHelper.addArmorMaterial("HBM_TRENCH", 150, new int[] { 3, 8, 6, 3 }, 100); aMatTrench.customCraftingMaterial = ModItems.plate_iron; - trenchmaster_helmet = new ArmorTrenchmaster(aMatTrench, 0, RefStrings.MODID + ":textures/armor/starmetal_1.png").setMod(0.125F).setThreshold(5.0F) + trenchmaster_helmet = new ArmorTrenchmaster(aMatTrench, 0, RefStrings.MODID + ":textures/armor/starmetal_1.png") .addEffect(new PotionEffect(Potion.damageBoost.id, 20, 2)) .addEffect(new PotionEffect(Potion.digSpeed.id, 20, 1)) .addEffect(new PotionEffect(Potion.jump.id, 20, 1)) .addEffect(new PotionEffect(Potion.moveSpeed.id, 20, 0)) .enableVATS(true) - .addResistance("fall", 0F) - .setFireproof(true) .setStepSize(1) .hides(EnumPlayerPart.HAT) .setUnlocalizedName("trenchmaster_helmet").setTextureName(RefStrings.MODID + ":trenchmaster_helmet"); @@ -5243,12 +5196,12 @@ public class ModItems { hazmat_legs_red = new ArmorHazmat(MainRegistry.aMatHaz2, 2, RefStrings.MODID + ":textures/armor/hazmat_2_red.png").setUnlocalizedName("hazmat_legs_red").setTextureName(RefStrings.MODID + ":hazmat_legs_red"); hazmat_boots_red = new ArmorHazmat(MainRegistry.aMatHaz2, 3, RefStrings.MODID + ":textures/armor/hazmat_1_red.png").setUnlocalizedName("hazmat_boots_red").setTextureName(RefStrings.MODID + ":hazmat_boots_red"); hazmat_helmet_grey = new ArmorHazmatMask(MainRegistry.aMatHaz3, 0, "hbm:textures/models/ModelHazGrey.png") - .setFireproof(true).setUnlocalizedName("hazmat_helmet_grey").setTextureName(RefStrings.MODID + ":hazmat_helmet_grey"); + .setUnlocalizedName("hazmat_helmet_grey").setTextureName(RefStrings.MODID + ":hazmat_helmet_grey"); hazmat_plate_grey = new ArmorHazmat(MainRegistry.aMatHaz3, 1, RefStrings.MODID + ":textures/armor/hazmat_1_grey.png").cloneStats((ArmorFSB) hazmat_helmet_grey).setUnlocalizedName("hazmat_plate_grey").setTextureName(RefStrings.MODID + ":hazmat_plate_grey"); hazmat_legs_grey = new ArmorHazmat(MainRegistry.aMatHaz3, 2, RefStrings.MODID + ":textures/armor/hazmat_2_grey.png").cloneStats((ArmorFSB) hazmat_helmet_grey).setUnlocalizedName("hazmat_legs_grey").setTextureName(RefStrings.MODID + ":hazmat_legs_grey"); hazmat_boots_grey = new ArmorHazmat(MainRegistry.aMatHaz3, 3, RefStrings.MODID + ":textures/armor/hazmat_1_grey.png").cloneStats((ArmorFSB) hazmat_helmet_grey).setUnlocalizedName("hazmat_boots_grey").setTextureName(RefStrings.MODID + ":hazmat_boots_grey"); hazmat_paa_helmet = new ArmorHazmatMask(MainRegistry.aMatPaa, 0, RefStrings.MODID + ":textures/armor/hazmat_paa_1.png") - .setFireproof(true).setUnlocalizedName("hazmat_paa_helmet").setTextureName(RefStrings.MODID + ":hazmat_paa_helmet"); + .setUnlocalizedName("hazmat_paa_helmet").setTextureName(RefStrings.MODID + ":hazmat_paa_helmet"); hazmat_paa_plate = new ArmorHazmat(MainRegistry.aMatPaa, 1, RefStrings.MODID + ":textures/armor/hazmat_paa_1.png").cloneStats((ArmorFSB) hazmat_paa_helmet).setUnlocalizedName("hazmat_paa_plate").setTextureName(RefStrings.MODID + ":hazmat_paa_plate"); hazmat_paa_legs = new ArmorHazmat(MainRegistry.aMatPaa, 2, RefStrings.MODID + ":textures/armor/hazmat_paa_2.png").cloneStats((ArmorFSB) hazmat_paa_helmet).setUnlocalizedName("hazmat_paa_legs").setTextureName(RefStrings.MODID + ":hazmat_paa_legs"); hazmat_paa_boots = new ArmorHazmat(MainRegistry.aMatPaa, 3, RefStrings.MODID + ":textures/armor/hazmat_paa_1.png").cloneStats((ArmorFSB) hazmat_paa_helmet).setUnlocalizedName("hazmat_paa_boots").setTextureName(RefStrings.MODID + ":hazmat_paa_boots"); @@ -5256,9 +5209,6 @@ public class ModItems { ArmorMaterial aMatLiquidator = EnumHelper.addArmorMaterial("HBM_LIQUIDATOR", 750, new int[] { 3, 8, 6, 3 }, 10); aMatLiquidator.customCraftingMaterial = ModItems.plate_lead; liquidator_helmet = new ArmorLiquidatorMask(aMatLiquidator, 0, RefStrings.MODID + ":textures/armor/liquidator_helmet.png") - .setThreshold(1.0F) - .setBlastProtection(0.25F) - .setFireproof(true) .setStep("hbm:step.metal") .setJump("hbm:step.iron_jump") .setFall("hbm:step.iron_land").setUnlocalizedName("liquidator_helmet").setMaxStackSize(1).setTextureName(RefStrings.MODID + ":liquidator_helmet"); @@ -6951,6 +6901,7 @@ public class ModItems { GameRegistry.registerItem(gun_congolake, gun_congolake.getUnlocalizedName()); GameRegistry.registerItem(gun_flamer, gun_flamer.getUnlocalizedName()); GameRegistry.registerItem(gun_uzi, gun_uzi.getUnlocalizedName()); + GameRegistry.registerItem(gun_uzi_akimbo, gun_uzi_akimbo.getUnlocalizedName()); GameRegistry.registerItem(gun_spas12, gun_spas12.getUnlocalizedName()); GameRegistry.registerItem(gun_panzerschreck, gun_panzerschreck.getUnlocalizedName()); GameRegistry.registerItem(gun_g3, gun_g3.getUnlocalizedName()); diff --git a/src/main/java/com/hbm/items/armor/ArmorFSB.java b/src/main/java/com/hbm/items/armor/ArmorFSB.java index 115c298fb..c42961138 100644 --- a/src/main/java/com/hbm/items/armor/ArmorFSB.java +++ b/src/main/java/com/hbm/items/armor/ArmorFSB.java @@ -3,10 +3,8 @@ package com.hbm.items.armor; import java.lang.reflect.Field; import java.util.ArrayList; import java.util.Collections; -import java.util.HashMap; import java.util.HashSet; import java.util.List; -import java.util.Map.Entry; import org.lwjgl.opengl.GL11; @@ -28,7 +26,6 @@ import net.minecraft.client.renderer.OpenGlHelper; import net.minecraft.client.renderer.Tessellator; import net.minecraft.client.resources.I18n; import net.minecraft.entity.Entity; -import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.item.EntityItem; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemArmor; @@ -51,14 +48,6 @@ public class ArmorFSB extends ItemArmor implements IArmorDisableModel { private String texture = ""; private ResourceLocation overlay = null; public List effects = new ArrayList(); - public HashMap resistance = new HashMap(); - public float blastProtection = -1; - public float projectileProtection = -1; - public float damageCap = -1; - public float damageMod = -1; - public float damageThreshold = 0; - public float protectionYield = 100F; - public boolean fireproof = false; public boolean noHelmet = false; public boolean vats = false; public boolean thermal = false; @@ -82,46 +71,6 @@ public class ArmorFSB extends ItemArmor implements IArmorDisableModel { return this; } - public ArmorFSB addResistance(String damage, float mod) { - resistance.put(damage, mod); - return this; - } - - public ArmorFSB setCap(float cap) { - this.damageCap = cap; - return this; - } - - public ArmorFSB setMod(float mod) { - this.damageMod = mod; - return this; - } - - public ArmorFSB setThreshold(float threshold) { - this.damageThreshold = threshold; - return this; - } - - public ArmorFSB setProtectionLevel(float damageYield) { - this.protectionYield = damageYield; - return this; - } - - public ArmorFSB setBlastProtection(float blastProtection) { - this.blastProtection = blastProtection; - return this; - } - - public ArmorFSB setProjectileProtection(float projectileProtection) { - this.projectileProtection = projectileProtection; - return this; - } - - public ArmorFSB setFireproof(boolean fire) { - this.fireproof = fire; - return this; - } - public ArmorFSB setNoHelmet(boolean noHelmet) { this.noHelmet = noHelmet; return this; @@ -191,14 +140,6 @@ public class ArmorFSB extends ItemArmor implements IArmorDisableModel { //lists aren't being modified after instantiation, so there's no need to dereference this.effects = original.effects; - this.resistance = original.resistance; - this.damageCap = original.damageCap; - this.damageMod = original.damageMod; - this.damageThreshold = original.damageThreshold; - this.protectionYield = original.protectionYield; - this.blastProtection = original.blastProtection; - this.projectileProtection = original.projectileProtection; - this.fireproof = original.fireproof; this.noHelmet = original.noHelmet; this.vats = original.vats; this.thermal = original.thermal; @@ -226,82 +167,19 @@ public class ArmorFSB extends ItemArmor implements IArmorDisableModel { list.add(EnumChatFormatting.GOLD + I18nUtil.resolveKey("armor.fullSetBonus")); if(!effects.isEmpty()) { - for(PotionEffect effect : effects) { list.add(EnumChatFormatting.AQUA + " " + I18n.format(Potion.potionTypes[effect.getPotionID()].getName())); } } - if(!resistance.isEmpty()) { - - for(Entry struct : resistance.entrySet()) { - - if(struct.getValue() != 0) - list.add(EnumChatFormatting.YELLOW + " " + I18nUtil.resolveKey("armor.damageModifier", struct.getValue(), I18n.format(struct.getKey()))); - else - list.add(EnumChatFormatting.RED + " " + I18nUtil.resolveKey("armor.nullDamage", I18n.format(struct.getKey()))); - } - } - - if(blastProtection != -1) { - list.add(EnumChatFormatting.YELLOW + " " + I18nUtil.resolveKey("armor.blastProtection", blastProtection)); - } - - if(projectileProtection != -1) { - list.add(EnumChatFormatting.YELLOW + " " + I18nUtil.resolveKey("armor.projectileProtection", projectileProtection)); - } - - if(damageCap != -1) { - list.add(EnumChatFormatting.YELLOW + " " + I18nUtil.resolveKey("armor.cap", damageCap)); - } - - if(damageMod != -1) { - list.add(EnumChatFormatting.YELLOW + " " + I18nUtil.resolveKey("armor.modifier", damageMod)); - } - - if(damageThreshold > 0) { - list.add(EnumChatFormatting.YELLOW + " " + I18nUtil.resolveKey("armor.threshold", damageThreshold)); - } - - if(fireproof) { - list.add(EnumChatFormatting.RED + " " + I18nUtil.resolveKey("armor.fireproof")); - } - - if(geigerSound) { - list.add(EnumChatFormatting.GOLD + " " + I18nUtil.resolveKey("armor.geigerSound")); - } - - if(customGeiger) { - list.add(EnumChatFormatting.GOLD + " " + I18nUtil.resolveKey("armor.geigerHUD")); - } - - if(vats) { - list.add(EnumChatFormatting.RED + " " + I18nUtil.resolveKey("armor.vats")); - } - - if(thermal) { - list.add(EnumChatFormatting.RED + " " + I18nUtil.resolveKey("armor.thermal")); - } - - if(hardLanding) { - list.add(EnumChatFormatting.RED + " " + I18nUtil.resolveKey("armor.hardLanding")); - } - - if(gravity != 0) { - list.add(EnumChatFormatting.BLUE + " " + I18nUtil.resolveKey("armor.gravity", gravity)); - } - - if(stepSize != 0) { - list.add(EnumChatFormatting.BLUE + " " + I18nUtil.resolveKey("armor.stepSize", stepSize)); - } - - if(dashCount > 0) { - list.add(EnumChatFormatting.AQUA + " " + I18nUtil.resolveKey("armor.dash", dashCount)); - } - - if(protectionYield != 100F) { - list.add(EnumChatFormatting.BLUE + " " + I18nUtil.resolveKey("armor.yield", protectionYield)); - } + if(geigerSound) list.add(EnumChatFormatting.GOLD + " " + I18nUtil.resolveKey("armor.geigerSound")); + if(customGeiger) list.add(EnumChatFormatting.GOLD + " " + I18nUtil.resolveKey("armor.geigerHUD")); + if(vats) list.add(EnumChatFormatting.RED + " " + I18nUtil.resolveKey("armor.vats")); + if(thermal) list.add(EnumChatFormatting.RED + " " + I18nUtil.resolveKey("armor.thermal")); + if(hardLanding) list.add(EnumChatFormatting.RED + " " + I18nUtil.resolveKey("armor.hardLanding")); + if(gravity != 0) list.add(EnumChatFormatting.BLUE + " " + I18nUtil.resolveKey("armor.gravity", gravity)); + if(stepSize != 0) list.add(EnumChatFormatting.BLUE + " " + I18nUtil.resolveKey("armor.stepSize", stepSize)); + if(dashCount > 0) list.add(EnumChatFormatting.AQUA + " " + I18nUtil.resolveKey("armor.dash", dashCount)); } public static boolean hasFSBArmor(EntityPlayer player) { @@ -359,80 +237,6 @@ public class ArmorFSB extends ItemArmor implements IArmorDisableModel { return false; } - public void handleAttack(LivingAttackEvent event) { - - EntityLivingBase e = event.entityLiving; - - if(e instanceof EntityPlayer) { - EntityPlayer player = (EntityPlayer) e; - - if(ArmorFSB.hasFSBArmor(player)) { - - ItemStack plate = player.inventory.armorInventory[2]; - - ArmorFSB chestplate = (ArmorFSB) plate.getItem(); - - if(chestplate.damageThreshold >= event.ammount && !event.source.isUnblockable()) { - event.setCanceled(true); - } - - if(chestplate.fireproof && event.source.isFireDamage()) { - player.extinguish(); - event.setCanceled(true); - } - - if(chestplate.resistance.get(event.source.getDamageType()) != null && chestplate.resistance.get(event.source.getDamageType()) <= 0) { - event.setCanceled(true); - } - } - } - } - - public void handleHurt(LivingHurtEvent event) { - - EntityLivingBase e = event.entityLiving; - - if(e instanceof EntityPlayer) { - EntityPlayer player = (EntityPlayer) e; - - if(ArmorFSB.hasFSBArmor(player)) { - - ArmorFSB chestplate = (ArmorFSB) player.inventory.armorInventory[2].getItem(); - - //store any damage above the yield - float overFlow = Math.max(0, event.ammount - chestplate.protectionYield); - //reduce the damage to the yield cap if it exceeds the yield - event.ammount = Math.min(event.ammount, chestplate.protectionYield); - - if(!event.source.isUnblockable()) - event.ammount -= chestplate.damageThreshold; - - if(chestplate.damageMod != -1) { - event.ammount *= chestplate.damageMod; - } - - if(chestplate.resistance.get(event.source.getDamageType()) != null) { - event.ammount *= chestplate.resistance.get(event.source.getDamageType()); - } - - if(chestplate.blastProtection != -1 && event.source.isExplosion()) { - event.ammount *= chestplate.blastProtection; - } - - if(chestplate.projectileProtection != -1 && event.source.isProjectile()) { - event.ammount *= chestplate.projectileProtection; - } - - if(chestplate.damageCap != -1) { - event.ammount = Math.min(event.ammount, chestplate.damageCap); - } - - //add back anything that was above the protection yield before - event.ammount += overFlow; - } - } - } - public void handleTick(TickEvent.PlayerTickEvent event) { EntityPlayer player = event.player; @@ -624,4 +428,7 @@ public class ArmorFSB extends ItemArmor implements IArmorDisableModel { public boolean disablesPart(EntityPlayer player, ItemStack stack, EnumPlayerPart part) { return hidden.contains(part) && (!needsFullSet || hasFSBArmorIgnoreCharge(player)); } + + public void handleAttack(LivingAttackEvent event) { } + public void handleHurt(LivingHurtEvent event) { } } diff --git a/src/main/java/com/hbm/items/weapon/sedna/BulletConfig.java b/src/main/java/com/hbm/items/weapon/sedna/BulletConfig.java index d280a085c..8b4357cd7 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/BulletConfig.java +++ b/src/main/java/com/hbm/items/weapon/sedna/BulletConfig.java @@ -46,7 +46,9 @@ public class BulletConfig implements Cloneable { public ProjectileType pType = ProjectileType.BULLET; public float damageMult = 1.0F; + public float armorThresholdNegation = 0.0F; public float armorPiercingPercent = 0.0F; + public float knockbackMult = 1.0F; public float headshotMult = 1.0F; public String damageType = ModDamageSource.s_bullet; @@ -103,7 +105,9 @@ public class BulletConfig implements Cloneable { public BulletConfig setProjectiles(int amount) { this.projectilesMin = this.projectilesMax = amount; return this; } public BulletConfig setProjectiles(int min, int max) { this.projectilesMin = min; this.projectilesMax = max; return this; } public BulletConfig setDamage(float damageMult) { this.damageMult = damageMult; return this; } + public BulletConfig setThresholdNegation(float armorThresholdNegation) { this.armorThresholdNegation = armorThresholdNegation; return this; } public BulletConfig setArmorPiercing(float armorPiercingPercent) { this.armorPiercingPercent = armorPiercingPercent; return this; } + public BulletConfig setKnockback(float knockbackMult) { this.knockbackMult = knockbackMult; return this; } public BulletConfig setHeadshot(float headshotMult) { this.headshotMult = headshotMult; return this; } public BulletConfig setDamageType(String type) { this.damageType = type; return this; } public BulletConfig setupDamageClass(boolean proj, boolean fire, boolean explosion, boolean bypass) { this.dmgProj = proj; this.dmgFire = fire; this.dmgExplosion = explosion; this.dmgBypass = bypass; return this; } @@ -193,22 +197,17 @@ public class BulletConfig implements Cloneable { if(entity == bullet.getThrower() && bullet.ticksExisted < bullet.selfDamageDelay()) return; if(entity instanceof EntityLivingBase && ((EntityLivingBase) entity).getHealth() <= 0) return; - DamageSource damageCalc = bullet.config.getDamage(bullet, bullet.getThrower(), false); + DamageSource source = bullet.config.getDamage(bullet, bullet.getThrower(), false); if(!(entity instanceof EntityLivingBase)) { - EntityDamageUtil.attackEntityFromIgnoreIFrame(entity, damageCalc, bullet.damage); + EntityDamageUtil.attackEntityFromIgnoreIFrame(entity, source, bullet.damage); return; } EntityLivingBase living = (EntityLivingBase) entity; float prevHealth = living.getHealth(); - if(bullet.config.armorPiercingPercent == 0) { - EntityDamageUtil.attackEntityFromIgnoreIFrame(entity, damageCalc, bullet.damage); - } else { - DamageSource damagePiercing = bullet.config.getDamage(bullet, bullet.getThrower(), true); - EntityDamageUtil.attackArmorPiercing(living, damageCalc, damagePiercing, bullet.damage, bullet.config.armorPiercingPercent); - } + EntityDamageUtil.attackEntityFromNT(living, source, bullet.damage, true, false, bullet.config.knockbackMult, bullet.config.armorThresholdNegation, bullet.config.armorPiercingPercent); float newHealth = living.getHealth(); @@ -226,22 +225,16 @@ public class BulletConfig implements Cloneable { Entity entity = mop.entityHit; if(entity instanceof EntityLivingBase && ((EntityLivingBase) entity).getHealth() <= 0) return; - - DamageSource damageCalc = bullet.config.getDamage(bullet, bullet.getThrower(), false); + + DamageSource source = bullet.config.getDamage(bullet, bullet.getThrower(), false); if(!(entity instanceof EntityLivingBase)) { - EntityDamageUtil.attackEntityFromIgnoreIFrame(entity, damageCalc, bullet.damage); + EntityDamageUtil.attackEntityFromIgnoreIFrame(entity, source, bullet.damage); return; } EntityLivingBase living = (EntityLivingBase) entity; - - if(bullet.config.armorPiercingPercent == 0) { - EntityDamageUtil.attackEntityFromIgnoreIFrame(entity, damageCalc, bullet.damage); - } else { - DamageSource damagePiercing = bullet.config.getDamage(bullet, bullet.getThrower(), true); - EntityDamageUtil.attackArmorPiercing(living, damageCalc, damagePiercing, bullet.damage, bullet.config.armorPiercingPercent); - } + EntityDamageUtil.attackEntityFromNT(living, source, bullet.damage, true, false, bullet.config.knockbackMult, bullet.config.armorThresholdNegation, bullet.config.armorPiercingPercent); } }; @@ -252,21 +245,15 @@ public class BulletConfig implements Cloneable { if(entity instanceof EntityLivingBase && ((EntityLivingBase) entity).getHealth() <= 0) return; - DamageSource damageCalc = beam.config.getDamage(beam, beam.thrower, false); + DamageSource source = beam.config.getDamage(beam, beam.thrower, false); if(!(entity instanceof EntityLivingBase)) { - EntityDamageUtil.attackEntityFromIgnoreIFrame(entity, damageCalc, beam.damage); + EntityDamageUtil.attackEntityFromIgnoreIFrame(entity, source, beam.damage); return; } EntityLivingBase living = (EntityLivingBase) entity; - - if(beam.config.armorPiercingPercent == 0) { - EntityDamageUtil.attackEntityFromIgnoreIFrame(entity, damageCalc, beam.damage); - } else { - DamageSource damagePiercing = beam.config.getDamage(beam, beam.thrower, true); - EntityDamageUtil.attackArmorPiercing(living, damageCalc, damagePiercing, beam.damage, beam.config.armorPiercingPercent); - } + EntityDamageUtil.attackEntityFromNT(living, source, beam.damage, true, false, beam.config.knockbackMult, beam.config.armorThresholdNegation, beam.config.armorPiercingPercent); } }; diff --git a/src/main/java/com/hbm/items/weapon/sedna/factory/GunFactoryClient.java b/src/main/java/com/hbm/items/weapon/sedna/factory/GunFactoryClient.java index eb116b874..6dc100e1b 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/factory/GunFactoryClient.java +++ b/src/main/java/com/hbm/items/weapon/sedna/factory/GunFactoryClient.java @@ -53,6 +53,7 @@ public class GunFactoryClient { MinecraftForgeClient.registerItemRenderer(ModItems.gun_flamer, new ItemRenderFlamer()); MinecraftForgeClient.registerItemRenderer(ModItems.gun_lag, new ItemRenderLAG()); MinecraftForgeClient.registerItemRenderer(ModItems.gun_uzi, new ItemRenderUzi()); + MinecraftForgeClient.registerItemRenderer(ModItems.gun_uzi_akimbo, new ItemRenderUziAkimbo()); MinecraftForgeClient.registerItemRenderer(ModItems.gun_spas12, new ItemRenderSPAS12()); MinecraftForgeClient.registerItemRenderer(ModItems.gun_panzerschreck, new ItemRenderPanzerschreck()); MinecraftForgeClient.registerItemRenderer(ModItems.gun_g3, new ItemRenderG3()); @@ -206,6 +207,8 @@ public class GunFactoryClient { ((ItemGunBaseNT) ModItems.gun_light_revolver_dani) .getConfig(null, 1).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO); ((ItemGunBaseNT) ModItems.gun_maresleg_akimbo) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY_MIRROR, LegoClient.HUD_COMPONENT_AMMO_MIRROR); ((ItemGunBaseNT) ModItems.gun_maresleg_akimbo) .getConfig(null, 1).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO); + ((ItemGunBaseNT) ModItems.gun_uzi_akimbo) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY_MIRROR, LegoClient.HUD_COMPONENT_AMMO_MIRROR); + ((ItemGunBaseNT) ModItems.gun_uzi_akimbo) .getConfig(null, 1).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO); } public static void setRendererBulk(BiConsumer renderer, BulletConfig... configs) { for(BulletConfig config : configs) config.setRenderer(renderer); } diff --git a/src/main/java/com/hbm/items/weapon/sedna/factory/Orchestras.java b/src/main/java/com/hbm/items/weapon/sedna/factory/Orchestras.java index 9eaa6c60a..f6d06a7b0 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/factory/Orchestras.java +++ b/src/main/java/com/hbm/items/weapon/sedna/factory/Orchestras.java @@ -613,6 +613,38 @@ public class Orchestras { } }; + public static BiConsumer ORCHESTRA_UZI_AKIMBO = (stack, ctx) -> { + EntityLivingBase entity = ctx.entity; + if(entity.worldObj.isRemote) return; + AnimType type = ItemGunBaseNT.getLastAnim(stack, ctx.configIndex); + int timer = ItemGunBaseNT.getAnimTimer(stack, ctx.configIndex); + + if(type == AnimType.EQUIP) { + if(timer == 8) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.openLatch", 1F, 1.25F); + } + if(type == AnimType.CYCLE) { + if(timer == 1) { + int mult = ctx.configIndex == 0 ? -1 : 1; + SpentCasing casing = ctx.config.getReceivers(stack)[0].getMagazine(stack).getCasing(stack, ctx.inventory); + if(casing != null) CasingCreator.composeEffect(entity.worldObj, entity, 0.375, -0.125, -0.375D * mult, 0, 0.18, -0.12 * mult, 0.01, casing.getName()); + } + } + if(type == AnimType.CYCLE_DRY) { + if(timer == 0) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.dryFireClick", 1F, 1F); + if(timer == 8) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.pistolCock", 1F, 1F); + + } + if(type == AnimType.RELOAD) { + if(timer == 4) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.magRemove", 1F, 1F); + if(timer == 26) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.magInsert", 1F, 1F); + if(timer == 36) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.pistolCock", 1F, 1F); + } + if(type == AnimType.JAMMED) { + if(timer == 17) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.pistolCock", 1F, 1F); + if(timer == 31) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.pistolCock", 1F, 1F); + } + }; + public static BiConsumer ORCHESTRA_SPAS = (stack, ctx) -> { EntityLivingBase entity = ctx.entity; if(entity.worldObj.isRemote) return; @@ -1156,11 +1188,6 @@ public class Orchestras { if(entity.worldObj.isRemote) return; AnimType type = ItemGunBaseNT.getLastAnim(stack, ctx.configIndex); int timer = ItemGunBaseNT.getAnimTimer(stack, ctx.configIndex); - boolean aiming = ItemGunBaseNT.getIsAiming(stack); - - if(type == AnimType.CYCLE_DRY) { - if(timer == 0) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.dryFireClick", 1F, 0.75F); - } if(type == AnimType.RELOAD) { if(timer == 20) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.screw", 1F, 1F); diff --git a/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory9mm.java b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory9mm.java index 72bc5ca49..ef727c811 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory9mm.java +++ b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory9mm.java @@ -9,6 +9,7 @@ import com.hbm.items.weapon.sedna.Crosshair; import com.hbm.items.weapon.sedna.GunConfig; import com.hbm.items.weapon.sedna.ItemGunBaseNT; import com.hbm.items.weapon.sedna.Receiver; +import com.hbm.items.weapon.sedna.ItemGunBaseNT.GunState; import com.hbm.items.weapon.sedna.ItemGunBaseNT.LambdaContext; import com.hbm.items.weapon.sedna.ItemGunBaseNT.WeaponQuality; import com.hbm.items.weapon.sedna.factory.GunFactory.EnumAmmo; @@ -73,10 +74,39 @@ public class XFactory9mm { .setupStandardConfiguration() .anim(LAMBDA_UZI_ANIMS).orchestra(Orchestras.ORCHESTRA_UZI) ).setUnlocalizedName("gun_uzi"); + ModItems.gun_uzi_akimbo = new ItemGunBaseNT(WeaponQuality.B_SIDE, + new GunConfig().dura(3_000).draw(15).inspect(31).crosshair(Crosshair.CIRCLE).smoke(LAMBDA_SMOKE) + .rec(new Receiver(0) + .dmg(7.5F).delay(2).dry(25).auto(true).spread(0.005F).reload(55).jam(50).sound("hbm:weapon.fire.blackPowder", 1.0F, 1.0F) + .mag(new MagazineFullReload(0, 30).addConfigs(p9_sp, p9_fmj, p9_jhp, p9_ap)) + .offset(1, -0.0625 * 2.5, 0.375D) + .setupStandardFire().recoil(Lego.LAMBDA_STANDARD_RECOIL)) + .pp(Lego.LAMBDA_STANDARD_CLICK_PRIMARY).pr(Lego.LAMBDA_STANDARD_RELOAD) + .decider(GunStateDecider.LAMBDA_STANDARD_DECIDER) + .anim(LAMBDA_UZI_ANIMS).orchestra(Orchestras.ORCHESTRA_UZI_AKIMBO), + new GunConfig().dura(3_000).draw(15).inspect(31).crosshair(Crosshair.CIRCLE).smoke(LAMBDA_SMOKE) + .rec(new Receiver(0) + .dmg(7.5F).delay(2).dry(25).auto(true).spread(0.005F).reload(55).jam(50).sound("hbm:weapon.fire.blackPowder", 1.0F, 1.0F) + .mag(new MagazineFullReload(1, 30).addConfigs(p9_sp, p9_fmj, p9_jhp, p9_ap)) + .offset(1, -0.0625 * 2.5, -0.375D) + .setupStandardFire().recoil(Lego.LAMBDA_STANDARD_RECOIL)) + .ps(Lego.LAMBDA_STANDARD_CLICK_PRIMARY).pr(Lego.LAMBDA_STANDARD_RELOAD) + .decider(LAMBDA_SECOND_UZI) + .anim(LAMBDA_UZI_ANIMS).orchestra(Orchestras.ORCHESTRA_UZI_AKIMBO) + ).setUnlocalizedName("gun_uzi_akimbo"); } + public static BiConsumer LAMBDA_SECOND_UZI = (stack, ctx) -> { + int index = ctx.configIndex; + GunState lastState = ItemGunBaseNT.getState(stack, index); + GunStateDecider.deciderStandardFinishDraw(stack, lastState, index); + GunStateDecider.deciderStandardClearJam(stack, lastState, index); + GunStateDecider.deciderStandardReload(stack, ctx, lastState, 0, index); + GunStateDecider.deciderAutoRefire(stack, ctx, lastState, 0, index, () -> { return ItemGunBaseNT.getSecondary(stack, index) && ItemGunBaseNT.getMode(stack, ctx.configIndex) == 0; }); + }; + public static BiConsumer LAMBDA_SMOKE = (stack, ctx) -> { - Lego.handleStandardSmoke(ctx.entity, stack, 2000, 0.05D, 1.1D, 0); + Lego.handleStandardSmoke(ctx.entity, stack, 2000, 0.05D, 1.1D, ctx.configIndex); }; @SuppressWarnings("incomplete-switch") public static BiFunction LAMBDA_GREASEGUN_ANIMS = (stack, type) -> { diff --git a/src/main/java/com/hbm/items/weapon/sedna/factory/XFactoryFolly.java b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactoryFolly.java index e10b32e50..f21af90be 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/factory/XFactoryFolly.java +++ b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactoryFolly.java @@ -1,8 +1,11 @@ package com.hbm.items.weapon.sedna.factory; +import java.util.List; import java.util.function.BiConsumer; import java.util.function.BiFunction; +import java.util.function.Consumer; +import com.hbm.entity.projectile.EntityBulletBeamBase; import com.hbm.items.ModItems; import com.hbm.items.weapon.sedna.BulletConfig; import com.hbm.items.weapon.sedna.Crosshair; @@ -14,28 +17,79 @@ import com.hbm.items.weapon.sedna.ItemGunBaseNT.LambdaContext; import com.hbm.items.weapon.sedna.ItemGunBaseNT.WeaponQuality; import com.hbm.items.weapon.sedna.factory.GunFactory.EnumAmmoSecret; import com.hbm.items.weapon.sedna.mags.MagazineSingleReload; +import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toclient.AuxParticlePacketNT; import com.hbm.render.anim.BusAnimation; import com.hbm.render.anim.BusAnimationSequence; import com.hbm.render.anim.BusAnimationKeyframe.IType; import com.hbm.render.anim.HbmAnimations.AnimType; +import com.hbm.util.ContaminationUtil; +import com.hbm.util.EntityDamageUtil; +import com.hbm.util.Vec3NT; +import com.hbm.util.ContaminationUtil.ContaminationType; +import com.hbm.util.ContaminationUtil.HazardType; +import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; +import net.minecraft.entity.Entity; +import net.minecraft.init.Blocks; import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.AxisAlignedBB; public class XFactoryFolly { public static BulletConfig folly_sm; + public static Consumer LAMBDA_SM_UPDATE = (entity) -> { + if(entity.worldObj.isRemote) return; + EntityBulletBeamBase beam = (EntityBulletBeamBase) entity; + Vec3NT dir = new Vec3NT(beam.headingX, beam.headingY, beam.headingZ).normalizeSelf(); + + if(beam.ticksExisted < 50) { + double spacing = 10; + double dist = beam.ticksExisted * spacing; + NBTTagCompound data = new NBTTagCompound(); + data.setString("type", "plasmablast"); + data.setFloat("r", 0.75F); + data.setFloat("g", 0.75F); + data.setFloat("b", 0.75F); + data.setFloat("pitch", (float) beam.rotationPitch + 90); + data.setFloat("yaw", (float) -beam.rotationYaw); + data.setFloat("scale", 2F + beam.ticksExisted / (float)(beam.beamLength / spacing) * 3F); + PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(data, beam.posX + dir.xCoord * dist, beam.posY + dir.yCoord * dist, beam.posZ + dir.zCoord * dist), new TargetPoint(beam.dimension, beam.posX, beam.posY, beam.posZ, 250)); + } + + if(entity.ticksExisted != 2) return; + + if(beam.thrower != null) ContaminationUtil.contaminate(beam.thrower, HazardType.RADIATION, ContaminationType.CREATIVE, 150F); + + List entities = beam.worldObj.getEntitiesWithinAABBExcludingEntity(beam, beam.boundingBox.addCoord(beam.headingX, beam.headingY, beam.headingZ).expand(1.0D, 1.0D, 1.0D)); + + for(int i = 1; i < beam.beamLength; i += 2) { + int x = (int) Math.floor(beam.posX + dir.xCoord * i); + int y = (int) Math.floor(beam.posY + dir.yCoord * i); + int z = (int) Math.floor(beam.posZ + dir.zCoord * i); + + for(int ix = x - 1; ix <= x + 1; ix++) for(int iy = y - 1; iy <= y + 1; iy++) for(int iz = z - 1; iz <= z + 1; iz++) { + if(iy > 0 && iy < 256) beam.worldObj.setBlock(ix, iy, iz, Blocks.air); + AxisAlignedBB aabb = AxisAlignedBB.getBoundingBox(ix - 1, iy - 1, iz - 1, ix + 2, iy + 2, iz + 2); + for(Entity e : entities) if(e != beam.thrower && e.boundingBox.intersectsWith(aabb)) EntityDamageUtil.attackEntityFromIgnoreIFrame(e, beam.config.getDamage(beam, beam.thrower, true), beam.damage); + } + } + }; + public static void init() { - folly_sm = new BulletConfig().setItem(EnumAmmoSecret.FOLLY_SM).setBeam().setLife(100).setVel(2F).setGrav(0.015D).setRenderRotations(false); + folly_sm = new BulletConfig().setItem(EnumAmmoSecret.FOLLY_SM).setBeam().setLife(100).setVel(2F).setGrav(0.015D).setRenderRotations(false).setSpectral(true).setDoesPenetrate(true) + .setOnUpdate(LAMBDA_SM_UPDATE); ModItems.gun_folly = new ItemGunBaseNT(WeaponQuality.A_SIDE, new GunConfig() - .dura(100).draw(40).crosshair(Crosshair.NONE) + .dura(0).draw(40).crosshair(Crosshair.NONE) .rec(new Receiver(0) - .dmg(15F).delay(26).dry(10).reload(160).jam(0).sound("hbm:weapon.fire.loudestNoiseOnEarth", 100.0F, 1.0F) + .dmg(15F).delay(26).dryfire(false).reload(160).jam(0).sound("hbm:weapon.fire.loudestNoiseOnEarth", 100.0F, 1.0F) .mag(new MagazineSingleReload(0, 1).addConfigs(folly_sm)) .offset(0.75, -0.0625, -0.1875D) - .canFire(LAMBDA_CAN_FIRE).fire(Lego.LAMBDA_STANDARD_FIRE).recoil(Lego.LAMBDA_STANDARD_RECOIL)) + .canFire(LAMBDA_CAN_FIRE).fire(LAMBDA_FIRE).recoil(Lego.LAMBDA_STANDARD_RECOIL)) .setupStandardConfiguration().pt(LAMBDA_TOGGLE_AIM) .anim(LAMBDA_FOLLY_ANIMS).orchestra(Orchestras.ORCHESTRA_FOLLY) ).setUnlocalizedName("gun_folly"); @@ -49,10 +103,15 @@ public class XFactoryFolly { } }; + public static BiConsumer LAMBDA_FIRE = (stack, ctx) -> { + Lego.doStandardFire(stack, ctx, AnimType.CYCLE, false); + }; + public static BiFunction LAMBDA_CAN_FIRE = (stack, ctx) -> { + if(!ItemGunBaseNT.getIsAiming(stack)) return false; if(ItemGunBaseNT.getLastAnim(stack, ctx.configIndex) != AnimType.SPINUP) return false; if(ItemGunBaseNT.getAnimTimer(stack, ctx.configIndex) < 100) return false; - return ItemGunBaseNT.getIsAiming(stack) && ctx.config.getReceivers(stack)[0].getMagazine(stack).getAmount(stack, ctx.inventory) > 0; + return ctx.config.getReceivers(stack)[0].getMagazine(stack).getAmount(stack, ctx.inventory) > 0; }; @SuppressWarnings("incomplete-switch") public static BiFunction LAMBDA_FOLLY_ANIMS = (stack, type) -> { diff --git a/src/main/java/com/hbm/main/ClientProxy.java b/src/main/java/com/hbm/main/ClientProxy.java index 18b47cd21..5a5adea00 100644 --- a/src/main/java/com/hbm/main/ClientProxy.java +++ b/src/main/java/com/hbm/main/ClientProxy.java @@ -560,11 +560,8 @@ public class ClientProxy extends ServerProxy { MinecraftForgeClient.registerItemRenderer(ModItems.gun_hp, new ItemRenderOverkill()); MinecraftForgeClient.registerItemRenderer(ModItems.gun_euthanasia, new ItemRenderOverkill()); MinecraftForgeClient.registerItemRenderer(ModItems.gun_defabricator, new ItemRenderOverkill()); - MinecraftForgeClient.registerItemRenderer(ModItems.gun_lever_action, new ItemRenderWeaponFFMaresLeg(ResourceManager.ff_gun_bright, ResourceManager.ff_wood)); MinecraftForgeClient.registerItemRenderer(ModItems.gun_bolt_action, new ItemRenderWeaponFFBolt(ResourceManager.rem700, ResourceManager.rem700_tex)); - MinecraftForgeClient.registerItemRenderer(ModItems.gun_lever_action_dark, new ItemRenderWeaponFFMaresLeg(ResourceManager.ff_gun_normal, ResourceManager.ff_wood_red)); MinecraftForgeClient.registerItemRenderer(ModItems.gun_bolt_action_green, new ItemRenderWeaponFFBolt(ResourceManager.rem700poly, ResourceManager.rem700poly_tex)); - MinecraftForgeClient.registerItemRenderer(ModItems.gun_lever_action_sonata, new ItemRenderGunAnim()); MinecraftForgeClient.registerItemRenderer(ModItems.gun_bolt_action_saturnite, new ItemRenderGunAnim()); MinecraftForgeClient.registerItemRenderer(ModItems.gun_bolt_action_saturnite, new ItemRenderWeaponFFBolt(ResourceManager.rem700sat, ResourceManager.rem700sat_tex)); MinecraftForgeClient.registerItemRenderer(ModItems.gun_b92, new ItemRenderGunAnim()); diff --git a/src/main/java/com/hbm/main/MainRegistry.java b/src/main/java/com/hbm/main/MainRegistry.java index f1ec80bfc..59d487550 100644 --- a/src/main/java/com/hbm/main/MainRegistry.java +++ b/src/main/java/com/hbm/main/MainRegistry.java @@ -921,6 +921,9 @@ public class MainRegistry { PollutionHandler pollution = new PollutionHandler(); MinecraftForge.EVENT_BUS.register(pollution); FMLCommonHandler.instance().bus().register(pollution); + + DamageResistanceHandler dmgHandler = new DamageResistanceHandler(); + MinecraftForge.EVENT_BUS.register(dmgHandler); if(event.getSide() == Side.CLIENT) { HbmKeybinds.register(); diff --git a/src/main/java/com/hbm/main/ResourceManager.java b/src/main/java/com/hbm/main/ResourceManager.java index e21358251..6a90d5a77 100644 --- a/src/main/java/com/hbm/main/ResourceManager.java +++ b/src/main/java/com/hbm/main/ResourceManager.java @@ -1249,10 +1249,8 @@ public class ResourceManager { public static final ResourceLocation casings_tex = new ResourceLocation(RefStrings.MODID, "textures/particle/casings.png"); //Bomber - public static final ResourceLocation dornier_0_tex = new ResourceLocation(RefStrings.MODID, "textures/models/dornier_0.png"); public static final ResourceLocation dornier_1_tex = new ResourceLocation(RefStrings.MODID, "textures/models/dornier_1.png"); public static final ResourceLocation dornier_2_tex = new ResourceLocation(RefStrings.MODID, "textures/models/dornier_2.png"); - public static final ResourceLocation dornier_3_tex = new ResourceLocation(RefStrings.MODID, "textures/models/dornier_3.png"); public static final ResourceLocation dornier_4_tex = new ResourceLocation(RefStrings.MODID, "textures/models/dornier_4.png"); public static final ResourceLocation b29_0_tex = new ResourceLocation(RefStrings.MODID, "textures/models/b29_0.png"); public static final ResourceLocation b29_1_tex = new ResourceLocation(RefStrings.MODID, "textures/models/b29_1.png"); diff --git a/src/main/java/com/hbm/render/entity/item/RenderBomber.java b/src/main/java/com/hbm/render/entity/item/RenderBomber.java index 16d32f88f..4cc33a349 100644 --- a/src/main/java/com/hbm/render/entity/item/RenderBomber.java +++ b/src/main/java/com/hbm/render/entity/item/RenderBomber.java @@ -28,36 +28,16 @@ public class RenderBomber extends Render { int i = entity.getDataWatcher().getWatchableObjectByte(16); switch(i) { - case 0: - bindTexture(ResourceManager.dornier_0_tex); - break; - case 1: - bindTexture(ResourceManager.dornier_1_tex); - break; - case 2: - bindTexture(ResourceManager.dornier_2_tex); - break; - case 3: - bindTexture(ResourceManager.dornier_3_tex); - break; - case 4: - bindTexture(ResourceManager.dornier_4_tex); - break; - case 5: - bindTexture(ResourceManager.b29_0_tex); - break; - case 6: - bindTexture(ResourceManager.b29_1_tex); - break; - case 7: - bindTexture(ResourceManager.b29_2_tex); - break; - case 8: - bindTexture(ResourceManager.b29_3_tex); - break; - default: - bindTexture(ResourceManager.dornier_1_tex); - break; + case 0: bindTexture(ResourceManager.dornier_1_tex); break; + case 1: bindTexture(ResourceManager.dornier_1_tex); break; + case 2: bindTexture(ResourceManager.dornier_2_tex); break; + case 3: bindTexture(ResourceManager.dornier_1_tex); break; + case 4: bindTexture(ResourceManager.dornier_4_tex); break; + case 5: bindTexture(ResourceManager.b29_0_tex); break; + case 6: bindTexture(ResourceManager.b29_1_tex); break; + case 7: bindTexture(ResourceManager.b29_2_tex); break; + case 8: bindTexture(ResourceManager.b29_3_tex); break; + default: bindTexture(ResourceManager.dornier_1_tex); break; } GL11.glRotatef((float) Math.sin((entity.ticksExisted + interp) * 0.05) * 10, 1F, 0F, 0F); diff --git a/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderFolly.java b/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderFolly.java index 282dcbb8f..a38c70419 100644 --- a/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderFolly.java +++ b/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderFolly.java @@ -11,6 +11,7 @@ import com.hbm.items.weapon.sedna.mags.IMagazine; import com.hbm.main.MainRegistry; import com.hbm.main.ResourceManager; import com.hbm.render.anim.HbmAnimations; +import com.hbm.util.EntityDamageUtil; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.FontRenderer; @@ -19,6 +20,7 @@ import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; import net.minecraft.util.EnumChatFormatting; import net.minecraft.util.MathHelper; +import net.minecraft.util.MovingObjectPosition; public class ItemRenderFolly extends ItemRenderWeaponBase { @@ -225,13 +227,24 @@ public class ItemRenderFolly extends ItemRenderWeaponBase { List tty = new ArrayList(); long now = System.currentTimeMillis(); int time = (int)((now - timeAiming)); - if(time > 3000) return tty; - if(time > 250) tty.add(EnumChatFormatting.GREEN + "POST successful - Code 0"); - if(time > 500) tty.add(EnumChatFormatting.GREEN + "8,388,608 bytes of RAM installed"); - if(time > 500) tty.add(EnumChatFormatting.GREEN + "5,187,427 bytes available"); - if(time > 750) tty.add(EnumChatFormatting.GREEN + "Reticulating splines..."); - if(time > 1500) tty.add(EnumChatFormatting.GREEN + "No keyboard found!"); - if(time > 2000) tty.add(EnumChatFormatting.GREEN + "Booting from /dev/sda1..."); + if(time < 3000) { + if(time > 250) tty.add(EnumChatFormatting.GREEN + "POST successful - Code 0"); + if(time > 500) tty.add(EnumChatFormatting.GREEN + "8,388,608 bytes of RAM installed"); + if(time > 500) tty.add(EnumChatFormatting.GREEN + "5,187,427 bytes available"); + if(time > 750) tty.add(EnumChatFormatting.GREEN + "Reticulating splines..."); + if(time > 1500) tty.add(EnumChatFormatting.GREEN + "No keyboard found!"); + if(time > 2000) tty.add(EnumChatFormatting.GREEN + "Booting from /dev/sda1..."); + } + if(time > 5000) { + EntityPlayer player = MainRegistry.proxy.me(); + MovingObjectPosition mop = EntityDamageUtil.getMouseOver(player, 250); + String target = EnumChatFormatting.GREEN + "Target: "; + if(mop.typeOfHit == mop.typeOfHit.MISS) target += "N/A"; + if(mop.typeOfHit == mop.typeOfHit.BLOCK) target += mop.blockX + "/" + mop.blockY + "/" + mop.blockZ; + if(mop.typeOfHit == mop.typeOfHit.ENTITY) target += mop.entityHit.getCommandSenderName(); + tty.add(target); + tty.add(EnumChatFormatting.GREEN + "Angle: " + ((int)(-player.rotationPitch * 100) / 100D)); + } return tty; } } diff --git a/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderMareslegAkimbo.java b/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderMareslegAkimbo.java index 367d6a62c..5a60a4aaf 100644 --- a/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderMareslegAkimbo.java +++ b/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderMareslegAkimbo.java @@ -127,6 +127,8 @@ public class ItemRenderMareslegAkimbo extends ItemRenderWeaponBase { @Override public void setupInv(ItemStack stack) { + GL11.glAlphaFunc(GL11.GL_GREATER, 0F); + GL11.glEnable(GL11.GL_ALPHA_TEST); GL11.glScaled(1, 1, -1); GL11.glTranslated(8, 8, 0); double scale = 2.5D; diff --git a/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderUziAkimbo.java b/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderUziAkimbo.java new file mode 100644 index 000000000..dded1cc0d --- /dev/null +++ b/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderUziAkimbo.java @@ -0,0 +1,204 @@ +package com.hbm.render.item.weapon.sedna; + +import org.lwjgl.opengl.GL11; + +import com.hbm.items.weapon.sedna.ItemGunBaseNT; +import com.hbm.main.ResourceManager; +import com.hbm.render.anim.HbmAnimations; + +import net.minecraft.client.Minecraft; +import net.minecraft.item.ItemStack; + +public class ItemRenderUziAkimbo extends ItemRenderWeaponBase { + + @Override public boolean isAkimbo() { return true; } + + @Override + protected float getTurnMagnitude(ItemStack stack) { return ItemGunBaseNT.getIsAiming(stack) ? 2.5F : -0.25F; } + + @Override + public float getViewFOV(ItemStack stack, float fov) { + float aimingProgress = ItemGunBaseNT.prevAimingProgress + (ItemGunBaseNT.aimingProgress - ItemGunBaseNT.prevAimingProgress) * interp; + return fov * (1 - aimingProgress * 0.33F); + } + + @Override + public void setupFirstPerson(ItemStack stack) { + GL11.glTranslated(0, 0, 0.875); + } + + @Override + public void renderFirstPerson(ItemStack stack) { + + ItemGunBaseNT gun = (ItemGunBaseNT) stack.getItem(); + + float offset = 0.8F; + + for(int i = -1; i <= 1; i += 2) { + Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.uzi_tex); + + GL11.glPushMatrix(); + int index = i == -1 ? 0 : 1; + standardAimingTransform(stack, -2.25F * offset * i, -1.5F * offset, 2.5F * offset, 0, -4.375 / 8D, 1); + + double scale = 0.25D; + GL11.glScaled(scale, scale, scale); + + double[] equip = HbmAnimations.getRelevantTransformation("EQUIP", index); + double[] stockFront = HbmAnimations.getRelevantTransformation("STOCKFRONT", index); + double[] stockBack = HbmAnimations.getRelevantTransformation("STOCKBACK", index); + double[] recoil = HbmAnimations.getRelevantTransformation("RECOIL", index); + double[] lift = HbmAnimations.getRelevantTransformation("LIFT", index); + double[] mag = HbmAnimations.getRelevantTransformation("MAG", index); + double[] bullet = HbmAnimations.getRelevantTransformation("BULLET", index); + double[] slide = HbmAnimations.getRelevantTransformation("SLIDE", index); + double[] yeet = HbmAnimations.getRelevantTransformation("YEET", index); + double[] speen = HbmAnimations.getRelevantTransformation("SPEEN", index); + + GL11.glTranslated(yeet[0], yeet[1], yeet[2]); + GL11.glRotated(speen[0], 0, 0, 1); + + GL11.glTranslated(0, -2, -4); + GL11.glRotated(equip[0], 1, 0, 0); + GL11.glTranslated(0, 2, 4); + + GL11.glTranslated(0, 0, -6); + GL11.glRotated(lift[0], 1, 0, 0); + GL11.glTranslated(0, 0, 6); + + GL11.glTranslated(0, 0, recoil[2]); + + GL11.glShadeModel(GL11.GL_SMOOTH); + ResourceManager.uzi.renderPart(index == 0 ? "GunMirror" : "Gun"); + + GL11.glPushMatrix(); + GL11.glTranslated(0, 0.3125D, -5.75); + GL11.glRotated(180 - stockFront[0], 1, 0, 0); + GL11.glTranslated(0, -0.3125D, 5.75); + ResourceManager.uzi.renderPart("StockFront"); + + GL11.glTranslated(0, -0.3125D, -3); + GL11.glRotated(-200 - stockBack[0], 1, 0, 0); + GL11.glTranslated(0, 0.3125D, 3); + ResourceManager.uzi.renderPart("StockBack"); + GL11.glPopMatrix(); + + GL11.glPushMatrix(); + GL11.glTranslated(0, 0, slide[2]); + ResourceManager.uzi.renderPart("Slide"); + GL11.glPopMatrix(); + + GL11.glPushMatrix(); + GL11.glTranslated(mag[0], mag[1], mag[2]); + ResourceManager.uzi.renderPart("Magazine"); + if(bullet[0] == 1) ResourceManager.uzi.renderPart("Bullet"); + GL11.glPopMatrix(); + + double smokeScale = 0.5; + + GL11.glPushMatrix(); + GL11.glTranslated(0, 0.75, 8.5); + GL11.glRotated(90, 0, 1, 0); + GL11.glScaled(smokeScale, smokeScale, smokeScale); + this.renderSmokeNodes(gun.getConfig(stack, index).smokeNodes, 0.75D); + GL11.glPopMatrix(); + + GL11.glShadeModel(GL11.GL_FLAT); + + GL11.glPushMatrix(); + GL11.glTranslated(0, 0.75, 8.5); + GL11.glRotated(90, 0, 1, 0); + GL11.glRotated(90 * gun.shotRand, 1, 0, 0); + this.renderMuzzleFlash(gun.lastShot[index], 75, 7.5); + GL11.glPopMatrix(); + + GL11.glPopMatrix(); + } + } + + @Override + public void setupThirdPerson(ItemStack stack) { + super.setupThirdPerson(stack); + GL11.glTranslated(0, 1, 1); + } + + @Override + public void setupThirdPersonAkimbo(ItemStack stack) { + super.setupThirdPersonAkimbo(stack); + GL11.glTranslated(0, 1, 1); + } + + @Override + public void setupInv(ItemStack stack) { + GL11.glAlphaFunc(GL11.GL_GREATER, 0F); + GL11.glEnable(GL11.GL_ALPHA_TEST); + GL11.glScaled(1, 1, -1); + GL11.glTranslated(8, 8, 0); + double scale = 1.5D; + GL11.glScaled(scale, scale, scale); + } + + @Override + public void renderEquipped(ItemStack stack) { + + GL11.glShadeModel(GL11.GL_SMOOTH); + Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.uzi_tex); + ResourceManager.uzi.renderPart("Gun"); + ResourceManager.uzi.renderPart("StockBack"); + ResourceManager.uzi.renderPart("StockFront"); + ResourceManager.uzi.renderPart("Slide"); + ResourceManager.uzi.renderPart("Magazine"); + GL11.glShadeModel(GL11.GL_FLAT); + } + + @Override + public void renderEquippedAkimbo(ItemStack stack) { + + GL11.glShadeModel(GL11.GL_SMOOTH); + Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.uzi_tex); + ResourceManager.uzi.renderPart("GunMirror"); + ResourceManager.uzi.renderPart("StockBack"); + ResourceManager.uzi.renderPart("StockFront"); + ResourceManager.uzi.renderPart("Slide"); + ResourceManager.uzi.renderPart("Magazine"); + GL11.glShadeModel(GL11.GL_FLAT); + } + + @Override + public void renderOther(ItemStack stack, ItemRenderType type) { + GL11.glEnable(GL11.GL_LIGHTING); + GL11.glShadeModel(GL11.GL_SMOOTH); + Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.uzi_tex); + + GL11.glPushMatrix(); + GL11.glRotated(225, 0, 0, 1); + GL11.glRotated(90, 0, 1, 0); + GL11.glRotated(25, 1, 0, 0); + GL11.glRotated(45, 0, 1, 0); + GL11.glTranslated(0, 1, 0); + ResourceManager.uzi.renderPart("Gun"); + ResourceManager.uzi.renderPart("StockBack"); + ResourceManager.uzi.renderPart("StockFront"); + ResourceManager.uzi.renderPart("Slide"); + ResourceManager.uzi.renderPart("Magazine"); + GL11.glPopMatrix(); + + GL11.glTranslated(0, 0, 5); + + GL11.glPushMatrix(); + GL11.glRotated(225, 0, 0, 1); + GL11.glRotated(-90, 0, 1, 0); + GL11.glRotated(-90, 1, 0, 0); + GL11.glRotated(25, 1, 0, 0); + GL11.glRotated(-45, 0, 1, 0); + GL11.glTranslated(0, 1, 0); + ResourceManager.uzi.renderPart("GunMirror"); + ResourceManager.uzi.renderPart("StockBack"); + ResourceManager.uzi.renderPart("StockFront"); + ResourceManager.uzi.renderPart("Slide"); + ResourceManager.uzi.renderPart("Magazine"); + GL11.glPopMatrix(); + + GL11.glShadeModel(GL11.GL_FLAT); + } +} diff --git a/src/main/java/com/hbm/util/DamageResistanceHandler.java b/src/main/java/com/hbm/util/DamageResistanceHandler.java index 2c66e712c..5fb9f944d 100644 --- a/src/main/java/com/hbm/util/DamageResistanceHandler.java +++ b/src/main/java/com/hbm/util/DamageResistanceHandler.java @@ -4,12 +4,16 @@ import java.util.HashMap; import com.hbm.util.Tuple.Quartet; +import cpw.mods.fml.common.eventhandler.SubscribeEvent; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLivingBase; +import net.minecraft.entity.monster.EntityCreeper; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.util.DamageSource; import net.minecraft.util.MathHelper; +import net.minecraftforge.event.entity.living.LivingAttackEvent; +import net.minecraftforge.event.entity.living.LivingHurtEvent; /** * Basic handling/registry class for our custom resistance stats. @@ -18,19 +22,73 @@ import net.minecraft.util.MathHelper; * @author hbm */ public class DamageResistanceHandler { + + /** Currently cached DT reduction */ + public static float currentPDT = 0F; + /** Currently cached armor piercing % */ + public static float currentPDR = 0F; + + public static final String KEY_EXPLOSION = "EXPL"; public static HashMap itemStats = new HashMap(); public static HashMap, ResistanceStats> setStats = new HashMap(); public static HashMap, ResistanceStats> entityStats = new HashMap(); public static void init() { + entityStats.put(EntityCreeper.class, new ResistanceStats().add(KEY_EXPLOSION, 2F, 0.5F)); + } + + public static void setup(float dt, float dr) { + currentPDT = dt; + currentPDR = dr; + } + + public static void reset() { + currentPDT = 0; + currentPDR = 0; + } + + @SubscribeEvent + public void onEntityAttacked(LivingAttackEvent event) { + EntityLivingBase e = event.entityLiving; + float amount = event.ammount; + float[] vals = getDTDR(e, event.source, amount, currentPDT, currentPDR); + float dt = vals[0]; + + if(dt > 0 && dt >= event.ammount) event.setCanceled(true); + } + + @SubscribeEvent + public void onEntityDamaged(LivingHurtEvent event) { + event.ammount = calculateDamage(event.entityLiving, event.source, event.ammount, currentPDT, currentPDR); + } + + public static String typeToKey(DamageSource source) { + if(source.isExplosion()) return KEY_EXPLOSION; + return source.damageType; } public static float calculateDamage(EntityLivingBase entity, DamageSource damage, float amount, float pierceDT, float pierce) { if(damage.isDamageAbsolute() || damage.isUnblockable()) return amount; - String key = damage.damageType; + float[] vals = getDTDR(entity, damage, amount, pierceDT, pierce); + float dt = vals[0]; + float dr = vals[1]; + + dt = Math.max(0F, dt - pierceDT); + if(dt >= amount) return 0F; + amount -= dt; + dr *= MathHelper.clamp_float(1F - pierce, 0F, 1F); + + System.out.println(dt + " " + dr); + + return amount *= (1F - dr); + } + + public static float[] getDTDR(EntityLivingBase entity, DamageSource damage, float amount, float pierceDT, float pierce) { + + String key = typeToKey(damage); float dt = 0; float dr = 0; @@ -72,14 +130,8 @@ public class DamageResistanceHandler { dr += res.resistance; } } - - /// MATH /// - dt = Math.max(0F, dt - pierceDT); - if(dt <= amount) return 0F; - amount -= dt; - dr *= MathHelper.clamp_float(1F - pierce, 0F, 1F); - return amount *= (1F - dr); + return new float[] {dt, dr}; } public static class ResistanceStats { diff --git a/src/main/java/com/hbm/util/EntityDamageUtil.java b/src/main/java/com/hbm/util/EntityDamageUtil.java index 4e8a1b58d..6cc3f083a 100644 --- a/src/main/java/com/hbm/util/EntityDamageUtil.java +++ b/src/main/java/com/hbm/util/EntityDamageUtil.java @@ -20,27 +20,6 @@ import net.minecraftforge.common.ForgeHooks; public class EntityDamageUtil { - /** - * Attacks the given entity twice, based on a piercing percentage. The second hit sets the damage source to bypass armor. - * The damage source is modified, so you can't reuse damage source instances. - */ - @Deprecated public static boolean attackEntityFromArmorPiercing(Entity victim, DamageSource src, float damage, float piercing) { - - if(src.isUnblockable() || piercing == 0) return victim.attackEntityFrom(src, damage); - - if(piercing == 1) { - src.setDamageBypassesArmor(); - return victim.attackEntityFrom(src, damage); - } - - boolean ret = false; - - ret |= victim.attackEntityFrom(src, damage * (1F - piercing)); - src.setDamageBypassesArmor(); - ret |= victim.attackEntityFrom(src, damage * piercing); - return ret; - } - public static boolean attackEntityFromIgnoreIFrame(Entity victim, DamageSource src, float damage) { if(!victim.attackEntityFrom(src, damage)) { @@ -58,24 +37,14 @@ public class EntityDamageUtil { } } - @Deprecated public static float getDamageAfterTax(EntityLivingBase living, DamageSource source, float amount) { - amount = ForgeHooks.onLivingHurt(living, source, amount); - if(amount <= 0) return 0; - amount = applyArmorCalculations(living, source, amount); - return amount; + public static boolean attackEntityFromNT(EntityLivingBase living, DamageSource source, float amount, boolean ignoreIFrame, boolean allowSpecialCancel, double knockbackMultiplier, float pierceDT, float pierce) { + DamageResistanceHandler.setup(pierceDT, pierce); + boolean ret = attackEntityFromNTInternal(living, source, amount, ignoreIFrame, allowSpecialCancel, knockbackMultiplier); + DamageResistanceHandler.reset(); + return ret; } - @Deprecated public static boolean attackArmorPiercing(EntityLivingBase living, DamageSource sourceDamageCalc, DamageSource sourceArmorPiercing, float amount, float piercing) { - if(piercing <= 0) return living.attackEntityFrom(sourceDamageCalc, amount); - //damage intended to pass the armor - float afterTax = getDamageAfterTax(living, sourceDamageCalc, amount); - //damage removed by the calculation - float reduced = Math.max(amount - afterTax, 0F); - //damage that would pass + damage tthat wouldn't pass * AP percentage - return attackEntityFromIgnoreIFrame(living, sourceArmorPiercing, Math.max(afterTax + (reduced * piercing), 0F)); - } - - public static boolean attackEntityFromNT(EntityLivingBase living, DamageSource source, float amount, boolean ignoreIFrame, boolean allowSpecialCancel, double knockbackMultiplier) { + private static boolean attackEntityFromNTInternal(EntityLivingBase living, DamageSource source, float amount, boolean ignoreIFrame, boolean allowSpecialCancel, double knockbackMultiplier) { if(ForgeHooks.onLivingAttack(living, source, amount) && allowSpecialCancel) return false; if(living.isEntityInvulnerable()) return false; if(living.worldObj.isRemote) return false; @@ -89,14 +58,14 @@ public class EntityDamageUtil { if(living.hurtResistantTime > living.maxHurtResistantTime / 2.0F && !ignoreIFrame) { if(amount <= living.lastDamage) { return false; } - damageEntityNT(living, source, amount - living.lastDamage); //TODO: override + damageEntityNT(living, source, amount - living.lastDamage); living.lastDamage = amount; didAttackRegister = false; } else { living.lastDamage = amount; living.prevHealth = living.getHealth(); living.hurtResistantTime = living.maxHurtResistantTime; - damageEntityNT(living, source, amount); //TODO: override + damageEntityNT(living, source, amount); living.hurtTime = living.maxHurtTime = 10; } diff --git a/src/main/resources/assets/hbm/lang/de_DE.lang b/src/main/resources/assets/hbm/lang/de_DE.lang index 26f535d35..941ec3bff 100644 --- a/src/main/resources/assets/hbm/lang/de_DE.lang +++ b/src/main/resources/assets/hbm/lang/de_DE.lang @@ -1150,9 +1150,12 @@ item.ammo_shell.name=240mm Geschoss item.ammo_shell_apfsds_du.name=240mm APFSDS-DU item.ammo_shell_apfsds_t.name=240mm APFSDS-T item.ammo_shell_explosive.name=240mm HE-Geschoss +item.ammo_secret.bmg50_equestrian.name=.50 BMG Zerstörer +item.ammo_secret.folly_sm.name=Silberne Kugel +item.ammo_secret.g12_equestrian.name=Kaliber 12 Gleisnägel +item.ammo_secret.m44_equestrian.name=.44 Magnum Schädelsprenger item.ammo_standard.bmg50_ap.name=.50 BMG Patrone (Panzerbrechend) item.ammo_standard.bmg50_du.name=.50 BMG Patrone (Urangeschoss) -item.ammo_standard.bmg50_equestrian.name=.50 BMG Zerstörer item.ammo_standard.bmg50_fmj.name=.50 BMG Patrone (Vollmantelgeschoss) item.ammo_standard.bmg50_jhp.name=.50 BMG Patrone (Hohlspitz) item.ammo_standard.bmg50_sp.name=.50 BMG Patrone (Teilmantelgeschoss) @@ -1165,7 +1168,6 @@ item.ammo_standard.g12_anthrax.name=Kaliber 12 Anthrax item.ammo_standard.g12_bp.name=Kaliber 12 Schwarzpulver item.ammo_standard.g12_bp_magnum.name=Kaliber 12 Schwarzpulver Magnum item.ammo_standard.g12_bp_slug.name=Kaliber 12 Schwarzpulver Laufgeschoss -item.ammo_standard.g12_equestrian.name=Kaliber 12 Gleisnägel item.ammo_standard.g12_explosive.name=Kaliber 12 Explosivgeschoss item.ammo_standard.g12_flechette.name=Kaliber 12 Flechett item.ammo_standard.g12_magnum.name=Kaliber 12 Magnum @@ -1186,7 +1188,6 @@ item.ammo_standard.m357_jhp.name=.357 Magnumkugel (Hohlspitz) item.ammo_standard.m357_sp.name=.357 Magnumkugel (Teilmantelgeschoss) item.ammo_standard.m44_ap.name=.44 Magnumkugel (Panzerbrechend) item.ammo_standard.m44_bp.name=.44 Magnumkugel (Schwarzpulver) -item.ammo_standard.m44_equestrian.name=.44 Magnum Schädelsprenger item.ammo_standard.m44_express.name=.44 Magnumkugel (VMG Express) item.ammo_standard.m44_fmj.name=.44 Magnumkugel (Vollmantelgeschoss) item.ammo_standard.m44_jhp.name=.44 Magnumkugel (Hohlspitz) @@ -2171,7 +2172,7 @@ item.gun_fireext.name=Feuerlöscher item.gun_flamer.name=Flammenwerfer item.gun_flaregun.name=Signalpistole item.gun_flechette.name=Flechet-Gewehr -item.gun_folly.name=Prototyp Digamma "Irrsinn" +item.gun_folly.name=Folly item.gun_g3.name=Sturmgewehr item.gun_greasegun.name=Grease Gun item.gun_hangman.name=Hangman @@ -2268,6 +2269,7 @@ item.gun_uac_pistol.name=UAC .45 Pistole item.gun_uboinik.name=Ubojnik item.gun_uboinik_ammo.name=12x70 Schrotmunition (LEGACY) item.gun_uzi.name=Uzi +item.gun_uzi_akimbo.name=Uzis item.gun_uzi_ammo.name=.22 lfB Patrone (LEGACY) item.gun_uzi_saturnite.name=Saturnit-Uzi item.gun_uzi_saturnite_silencer.name=Saturnit-Uzi mit Schalldämpfer diff --git a/src/main/resources/assets/hbm/lang/en_US.lang b/src/main/resources/assets/hbm/lang/en_US.lang index 11eb835c3..9c03239e7 100644 --- a/src/main/resources/assets/hbm/lang/en_US.lang +++ b/src/main/resources/assets/hbm/lang/en_US.lang @@ -1873,9 +1873,12 @@ item.ammo_shell_apfsds_du.name=240mm APFSDS-DU item.ammo_shell_apfsds_t.name=240mm APFSDS-T item.ammo_shell_explosive.name=240mm HE Shell item.ammo_shell_w9.name=240mm W9 Nuclear Shell +item.ammo_secret.bmg50_equestrian.name=.50 BMG Demolisher +item.ammo_secret.folly_sm.name=Silver Bullet +item.ammo_secret.g12_equestrian.name=12 Gauge Railway Spike Shot +item.ammo_secret.m44_equestrian.name=.44 Magnum Head-Exploder item.ammo_standard.bmg50_ap.name=.50 BMG Round (Armor Piercing) item.ammo_standard.bmg50_du.name=.50 BMG Round (Depleted Uranium) -item.ammo_standard.bmg50_equestrian.name=.50 BMG Demolisher item.ammo_standard.bmg50_fmj.name=.50 BMG Round (Full Metal Jacket) item.ammo_standard.bmg50_jhp.name=.50 BMG Round (Jacketed Hollow Point) item.ammo_standard.bmg50_sp.name=.50 BMG Round (Soft Point) @@ -1888,7 +1891,6 @@ item.ammo_standard.g12_anthrax.name=12 Gauge Anthrax Shell item.ammo_standard.g12_bp.name=12 Gauge Black Powder Buckshot item.ammo_standard.g12_bp_magnum.name=12 Gauge Black Powder Magnum Shell item.ammo_standard.g12_bp_slug.name=12 Gauge Black Powder Slug -item.ammo_standard.g12_equestrian.name=12 Gauge Railway Spike Shot item.ammo_standard.g12_explosive.name=12 Gauge Explosive Shell item.ammo_standard.g12_flechette.name=12 Gauge Flechette Shell item.ammo_standard.g12_magnum.name=12 Gauge Magnum Shell @@ -1909,7 +1911,6 @@ item.ammo_standard.m357_jhp.name=.357 Magnum Round (Jacketed Hollow Point) item.ammo_standard.m357_sp.name=.357 Magnum Round (Soft Point) item.ammo_standard.m44_ap.name=.44 Magnum Round (Armor Piercing) item.ammo_standard.m44_bp.name=.44 Magnum Round (Black Powder) -item.ammo_standard.m44_equestrian.name=.44 Magnum Head-Exploder item.ammo_standard.m44_express.name=.44 Magnum Round (FMJ Express) item.ammo_standard.m44_fmj.name=.44 Magnum Round (Full Metal Jacket) item.ammo_standard.m44_jhp.name=.44 Magnum Round (Jacketed Hollow Point) @@ -2979,7 +2980,7 @@ item.gun_fireext.name=Fire Extinguisher item.gun_flamer.name=Flamethrower item.gun_flaregun.name=Flare Gun item.gun_flechette.name=Flechette Rifle -item.gun_folly.name=Prototype Digamma "Folly" +item.gun_folly.name=Folly item.gun_g3.name=Assault Rifle item.gun_glass_cannon.name=The Glass Cannon item.gun_greasegun.name=Grease Gun @@ -3078,6 +3079,7 @@ item.gun_uac_pistol.name=UAC .45 Pistol item.gun_uboinik.name=Uboinik item.gun_uboinik_ammo.name=12x70 Buckshot (LEGACY) item.gun_uzi.name=Uzi +item.gun_uzi_akimbo.name=Uzis item.gun_uzi_ammo.name=.22 LR Round (LEGACY) item.gun_uzi_saturnite.name=Saturnite Uzi item.gun_uzi_saturnite_silencer.name=Saturnite Uzi with Silencer diff --git a/src/main/resources/assets/hbm/models/weapons/uzi.obj b/src/main/resources/assets/hbm/models/weapons/uzi.obj index c6023c32a..101594263 100644 --- a/src/main/resources/assets/hbm/models/weapons/uzi.obj +++ b/src/main/resources/assets/hbm/models/weapons/uzi.obj @@ -1,5 +1,1904 @@ # Blender v2.79 (sub 0) OBJ File: 'uzi.blend' # www.blender.org +o GunMirror +v 0.750000 0.000000 3.250000 +v -0.750000 0.000000 3.250000 +v 0.750000 0.000000 -5.500000 +v -0.750000 0.000000 -5.500000 +v 0.750000 1.500000 3.250000 +v -0.750000 1.500000 3.250000 +v 0.750000 1.500000 -5.500000 +v -0.750000 1.500000 -5.500000 +v 0.000000 1.250000 5.500000 +v 0.250000 1.183012 5.500000 +v 0.433013 1.000000 5.500000 +v 0.500000 0.750000 5.500000 +v 0.433013 0.500000 5.500000 +v 0.250000 0.316988 5.500000 +v 0.000000 0.250000 5.500000 +v -0.250000 0.316987 5.500000 +v -0.433012 0.500000 5.500000 +v -0.500000 0.750000 5.500000 +v -0.433013 1.000000 5.500000 +v -0.250000 1.183012 5.500000 +v 0.000000 1.250000 6.375000 +v 0.250000 1.183012 6.375000 +v 0.433013 1.000000 6.375000 +v 0.500000 0.750000 6.375000 +v 0.433013 0.500000 6.375000 +v 0.250000 0.316988 6.375000 +v 0.000000 0.250000 6.375000 +v -0.250000 0.316987 6.375000 +v -0.433012 0.500000 6.375000 +v -0.500000 0.750000 6.375000 +v -0.433013 1.000000 6.375000 +v -0.250000 1.183012 6.375000 +v 0.000000 1.000000 6.375000 +v 0.125000 0.966506 6.375000 +v 0.216506 0.875000 6.375000 +v 0.250000 0.750000 6.375000 +v 0.216506 0.625000 6.375000 +v 0.125000 0.533494 6.375000 +v 0.000000 0.500000 6.375000 +v -0.125000 0.533494 6.375000 +v -0.216506 0.625000 6.375000 +v -0.250000 0.750000 6.375000 +v -0.216506 0.875000 6.375000 +v -0.125000 0.966506 6.375000 +v 0.000000 1.000000 8.375000 +v 0.125000 0.966506 8.375000 +v 0.216506 0.875000 8.375000 +v 0.250000 0.750000 8.375000 +v 0.216506 0.625000 8.375000 +v 0.125000 0.533494 8.375000 +v 0.000000 0.500000 8.375000 +v -0.125000 0.533494 8.375000 +v -0.216506 0.625000 8.375000 +v -0.250000 0.750000 8.375000 +v -0.216506 0.875000 8.375000 +v -0.125000 0.966506 8.375000 +v 0.000000 0.937500 8.375000 +v 0.093750 0.912380 8.375000 +v 0.162380 0.843750 8.375000 +v 0.187500 0.750000 8.375000 +v 0.162380 0.656250 8.375000 +v 0.093750 0.587620 8.375000 +v 0.000000 0.562500 8.375000 +v -0.093750 0.587620 8.375000 +v -0.162380 0.656250 8.375000 +v -0.187500 0.750000 8.375000 +v -0.162380 0.843750 8.375000 +v -0.093750 0.912380 8.375000 +v 0.000000 0.937500 6.375000 +v 0.093750 0.912380 6.375000 +v 0.162380 0.843750 6.375000 +v 0.187500 0.750000 6.375000 +v 0.162380 0.656250 6.375000 +v 0.093750 0.587620 6.375000 +v 0.000000 0.562500 6.375000 +v -0.093750 0.587620 6.375000 +v -0.162380 0.656250 6.375000 +v -0.187500 0.750000 6.375000 +v -0.162380 0.843750 6.375000 +v -0.093750 0.912380 6.375000 +v 0.875000 -0.250000 1.250000 +v -0.875000 -0.250000 1.250000 +v 0.875000 -0.250000 -2.250000 +v -0.875000 -0.250000 -2.250000 +v 0.875000 0.500000 -2.250000 +v 0.875000 0.500000 1.250000 +v -0.875000 0.500000 1.250000 +v -0.875000 0.500000 -2.250000 +v 0.875000 1.000000 1.375000 +v 0.875000 1.000000 3.250000 +v -0.875000 1.000000 3.250000 +v -0.875000 1.000000 1.375000 +v 0.875000 0.125000 3.250000 +v 0.500000 -0.250000 3.250000 +v -0.500000 -0.250000 3.250000 +v -0.875000 0.125000 3.250000 +v 0.500000 -0.250000 1.375000 +v 0.875000 0.125000 1.375000 +v -0.875000 0.125000 1.375000 +v -0.500000 -0.250000 1.375000 +v 0.750000 0.125000 3.625000 +v 0.500000 -0.250000 3.625000 +v -0.750000 1.000000 3.625000 +v 0.750000 1.000000 3.625000 +v 0.625000 0.000000 3.625000 +v -0.625000 0.000000 3.625000 +v 0.625000 1.500000 3.625000 +v -0.625000 1.500000 3.625000 +v 0.625000 0.000000 5.500000 +v -0.625000 0.000000 5.500000 +v 0.625000 1.500000 5.500000 +v -0.625000 1.500000 5.500000 +v -0.750000 0.125000 3.625000 +v -0.500000 -0.250000 3.625000 +v 0.750000 0.125000 5.375000 +v 0.750000 1.000000 5.375000 +v -0.750000 0.125000 5.375000 +v -0.500000 -0.250000 5.375000 +v 0.500000 -0.250000 5.375000 +v -0.750000 1.000000 5.375000 +v 0.750000 1.500000 3.250000 +v 0.750000 1.500000 -3.750000 +v 0.375000 1.500000 3.250000 +v 0.375000 1.500000 -3.750000 +v 0.750000 1.750000 1.250000 +v 0.750000 1.750000 -1.750000 +v 0.375000 1.750000 1.250000 +v 0.375000 1.750000 -1.750000 +v -0.375000 1.500000 3.250000 +v -0.375000 1.500000 -3.750000 +v -0.750000 1.500000 3.250000 +v -0.750000 1.500000 -3.750000 +v -0.375000 1.750000 1.250000 +v -0.375000 1.750000 -1.750000 +v -0.750000 1.750000 1.250000 +v -0.750000 1.750000 -1.750000 +v -0.375000 1.500000 4.562500 +v -0.375000 1.500000 5.437500 +v -0.375000 1.875000 5.437500 +v -0.375000 2.018506 5.404197 +v -0.375000 2.140165 5.309359 +v -0.375000 2.221455 5.167424 +v -0.500000 1.875000 4.562500 +v -0.500000 2.018506 4.595803 +v -0.500000 2.140165 4.690641 +v -0.500000 2.221455 4.832576 +v -0.500000 2.250000 5.000000 +v -0.500000 2.221455 5.167424 +v -0.500000 2.140165 5.309359 +v -0.500000 2.018506 5.404197 +v -0.500000 1.875000 5.437500 +v -0.375000 2.250000 5.000000 +v -0.375000 2.221455 4.832576 +v -0.375000 2.140165 4.690641 +v -0.375000 2.018506 4.595803 +v -0.375000 1.875000 4.562500 +v -0.500000 1.500000 5.437500 +v -0.500000 1.500000 4.562500 +v -0.375000 2.000000 -5.375000 +v -0.375000 2.167424 -5.327425 +v -0.375000 2.309359 -5.191942 +v -0.375000 2.404197 -4.989178 +v -0.375000 2.437500 -4.750000 +v -0.375000 2.404197 -4.510823 +v -0.375000 2.309359 -4.308059 +v -0.375000 2.167424 -4.172575 +v -0.375000 2.000000 -4.125000 +v -0.500000 2.437500 -4.750000 +v -0.500000 2.404197 -4.989178 +v -0.500000 2.309359 -5.191942 +v -0.500000 2.167424 -5.327425 +v -0.500000 2.000000 -5.375000 +v -0.375000 1.500000 -4.125000 +v -0.375000 1.500000 -5.375000 +v -0.500000 2.404197 -4.510823 +v -0.500000 2.309359 -4.308059 +v -0.500000 2.167424 -4.172575 +v -0.500000 2.000000 -4.125000 +v -0.500000 1.500000 -4.125000 +v -0.500000 1.500000 -5.375000 +v 0.750000 1.500000 -1.500000 +v 0.750000 0.750000 -1.500000 +v 0.750000 0.750000 0.125000 +v 0.750000 1.500000 0.125000 +v 0.750000 1.500000 -1.500000 +v 0.750000 1.500000 0.125000 +v 0.750000 1.750000 -1.500000 +v 0.750000 1.750000 0.125000 +v 0.625000 1.500000 -1.500000 +v 0.625000 0.750000 -1.500000 +v 0.625000 0.750000 0.125000 +v 0.625000 1.500000 0.125000 +v -0.375000 -0.250000 -0.250000 +v 0.375000 -0.250000 -0.250000 +v 0.500000 1.500000 -1.500000 +v 0.500000 1.500000 0.125000 +v 0.500000 1.750000 -1.500000 +v 0.500000 1.750000 0.125000 +v 0.375000 -2.750000 -2.000000 +v -0.375000 -2.750000 -2.000000 +v -0.375000 -3.250000 -0.250000 +v -0.375000 -3.250000 -1.500000 +v 0.375000 -3.250000 -0.250000 +v 0.375000 -3.250000 -1.500000 +v 0.375000 -2.000000 -2.000000 +v -0.375000 -2.000000 -2.000000 +v 0.375000 -1.000000 -1.750000 +v -0.375000 -1.000000 -1.750000 +v 0.375000 -0.500000 -2.250000 +v -0.375000 -0.500000 -2.250000 +v 0.375000 -0.250000 -2.250000 +v -0.375000 -0.250000 -2.250000 +v -0.625000 -2.750000 -1.750000 +v -0.625000 -3.250000 -1.250000 +v -0.625000 -3.250000 -0.375000 +v -0.625000 -0.250000 -0.375000 +v -0.625000 -2.000000 -1.750000 +v -0.625000 -1.000000 -1.500000 +v -0.625000 -0.500000 -2.000000 +v -0.625000 -0.250000 -2.000000 +v 0.625000 -3.250000 -1.250000 +v 0.625000 -2.750000 -1.750000 +v 0.625000 -3.250000 -0.375000 +v 0.625000 -0.250000 -0.375000 +v 0.625000 -2.000000 -1.750000 +v 0.625000 -1.000000 -1.500000 +v 0.625000 -0.500000 -2.000000 +v 0.625000 -0.250000 -2.000000 +v 0.250000 0.000000 1.375000 +v -0.250000 0.000000 1.375000 +v 0.250000 0.000000 1.250000 +v -0.250000 0.000000 1.250000 +v 0.250000 -1.250000 1.375000 +v -0.250000 -1.250000 1.375000 +v 0.250000 -1.250000 1.250000 +v -0.250000 -1.250000 1.250000 +v 0.250000 -1.500000 1.000000 +v -0.250000 -1.500000 1.000000 +v 0.250000 -1.625000 1.000000 +v -0.250000 -1.625000 1.000000 +v 0.250000 -1.500000 0.250000 +v -0.250000 -1.500000 0.250000 +v 0.250000 -1.625000 0.250000 +v -0.250000 -1.625000 0.250000 +v 0.250000 -1.250000 -0.250000 +v -0.250000 -1.250000 -0.250000 +v 0.250000 -1.375000 -0.250000 +v -0.250000 -1.375000 -0.250000 +v 0.156250 -0.250000 0.312500 +v -0.156250 -0.250000 0.312500 +v 0.156250 -0.250000 0.187500 +v -0.156250 -0.250000 0.187500 +v 0.156250 -0.875000 0.312500 +v -0.156250 -0.875000 0.312500 +v 0.156250 -0.875000 0.187500 +v -0.156250 -0.875000 0.187500 +v 0.156250 -1.187500 0.562500 +v -0.156250 -1.187500 0.562500 +v 0.375000 1.500000 5.375000 +v -0.375000 1.500000 5.375000 +v 0.375000 1.500000 4.625000 +v -0.375000 1.500000 4.625000 +v 0.375000 1.625000 4.625000 +v 0.375000 1.625000 5.375000 +v -0.375000 1.625000 5.375000 +v -0.375000 1.625000 4.625000 +v 0.000000 1.625000 4.750000 +v 0.176777 1.625000 4.823223 +v 0.250000 1.625000 5.000000 +v 0.176777 1.625000 5.176777 +v 0.000000 1.625000 5.250000 +v -0.176777 1.625000 5.176777 +v -0.250000 1.625000 5.000000 +v -0.176777 1.625000 4.823223 +v 0.000000 1.687500 4.750000 +v 0.176777 1.687500 4.823223 +v 0.250000 1.687500 5.000000 +v 0.176777 1.687500 5.176777 +v 0.000000 1.687500 5.250000 +v -0.176777 1.687500 5.176777 +v -0.250000 1.687500 5.000000 +v -0.176777 1.687500 4.823223 +v 0.062500 1.687500 5.062500 +v -0.062500 1.687500 5.062500 +v 0.062500 1.687500 4.937500 +v -0.062500 1.687500 4.937500 +v 0.062500 2.187500 4.937500 +v 0.062500 2.187500 5.062500 +v -0.062500 2.187500 5.062500 +v -0.062500 2.187500 4.937500 +v 0.250000 1.500000 -4.250000 +v -0.250000 1.500000 -4.250000 +v 0.250000 1.500000 -5.250000 +v -0.250000 1.500000 -5.250000 +v 0.250000 1.750000 -5.250000 +v 0.250000 1.750000 -4.250000 +v -0.250000 1.750000 -4.250000 +v -0.250000 1.750000 -5.250000 +v -0.250000 1.500000 -4.250000 +v -0.250000 1.500000 -5.250000 +v -0.375000 1.500000 -4.250000 +v -0.375000 1.500000 -5.250000 +v -0.375000 2.000000 -4.250000 +v -0.375000 2.000000 -5.250000 +v -0.250000 2.000000 -4.250000 +v -0.250000 2.000000 -5.250000 +v 0.375000 1.500000 -4.250000 +v 0.375000 1.500000 -5.250000 +v 0.250000 1.500000 -4.250000 +v 0.250000 1.500000 -5.250000 +v 0.250000 2.000000 -4.250000 +v 0.250000 2.000000 -5.250000 +v 0.375000 2.000000 -4.250000 +v 0.375000 2.000000 -5.250000 +v 0.187500 1.750000 -4.625000 +v -0.187500 1.750000 -4.625000 +v 0.187500 1.750000 -4.875000 +v -0.187500 1.750000 -4.875000 +v 0.187500 2.250000 -4.875000 +v 0.187500 2.250000 -4.625000 +v -0.187500 2.250000 -4.625000 +v -0.187500 2.250000 -4.875000 +v 0.062500 2.375000 -4.875000 +v 0.062500 2.375000 -4.625000 +v -0.062500 2.375000 -4.625000 +v -0.062500 2.375000 -4.875000 +v 0.125000 2.250000 -4.625000 +v -0.125000 2.250000 -4.625000 +v 0.125000 2.250000 -4.875000 +v -0.125000 2.250000 -4.875000 +v 0.125000 2.125000 -4.625000 +v -0.125000 2.125000 -4.625000 +v 0.125000 2.125000 -4.875000 +v -0.125000 2.125000 -4.875000 +v -0.062500 2.312500 -4.625000 +v -0.062500 2.062500 -4.625000 +v -0.062500 2.312500 -4.875000 +v -0.062500 2.062500 -4.875000 +v 0.062500 2.312500 -4.625000 +v 0.062500 2.062500 -4.625000 +v 0.062500 2.312500 -4.875000 +v 0.062500 2.062500 -4.875000 +v 0.625000 0.000000 -5.500000 +v -0.625000 0.000000 -5.500000 +v 0.625000 1.000000 -5.500000 +v -0.625000 1.000000 -5.500000 +v 0.625000 1.000000 -5.750000 +v 0.625000 0.000000 -5.750000 +v -0.625000 0.000000 -5.750000 +v -0.625000 1.000000 -5.750000 +v 0.625000 0.750000 -6.000000 +v 0.625000 0.250000 -6.000000 +v -0.625000 0.250000 -6.000000 +v -0.625000 0.750000 -6.000000 +v 0.875000 0.312500 -5.875000 +v -0.875000 0.312500 -5.875000 +v 0.875000 0.224112 -5.838388 +v -0.875000 0.224112 -5.838388 +v 0.875000 0.187500 -5.750000 +v -0.875000 0.187500 -5.750000 +v 0.875000 0.224112 -5.661612 +v -0.875000 0.224112 -5.661612 +v 0.875000 0.312500 -5.625000 +v -0.875000 0.312500 -5.625000 +v 0.875000 0.400888 -5.661612 +v -0.875000 0.400888 -5.661612 +v 0.875000 0.437500 -5.750000 +v -0.875000 0.437500 -5.750000 +v 0.875000 0.400888 -5.838388 +v -0.875000 0.400888 -5.838388 +v 0.500000 1.500000 4.562500 +v 0.500000 1.500000 5.437500 +v 0.500000 1.875000 5.437500 +v 0.500000 2.018506 5.404197 +v 0.500000 2.140165 5.309359 +v 0.500000 2.221455 5.167424 +v 0.375000 1.875000 4.562500 +v 0.375000 2.018506 4.595803 +v 0.375000 2.140165 4.690641 +v 0.375000 2.221455 4.832576 +v 0.375000 2.250000 5.000000 +v 0.375000 2.221455 5.167424 +v 0.375000 2.140165 5.309359 +v 0.375000 2.018506 5.404197 +v 0.375000 1.875000 5.437500 +v 0.500000 2.250000 5.000000 +v 0.500000 2.221455 4.832576 +v 0.500000 2.140165 4.690641 +v 0.500000 2.018506 4.595803 +v 0.500000 1.875000 4.562500 +v 0.375000 1.500000 5.437500 +v 0.375000 1.500000 4.562500 +v 0.500000 2.000000 -5.375000 +v 0.500000 2.167424 -5.327425 +v 0.500000 2.309359 -5.191942 +v 0.500000 2.404197 -4.989178 +v 0.500000 2.437500 -4.750000 +v 0.500000 2.404197 -4.510823 +v 0.500000 2.309359 -4.308059 +v 0.500000 2.167424 -4.172575 +v 0.500000 2.000000 -4.125000 +v 0.375000 2.437500 -4.750000 +v 0.375000 2.404197 -4.989178 +v 0.375000 2.309359 -5.191942 +v 0.375000 2.167424 -5.327425 +v 0.375000 2.000000 -5.375000 +v 0.500000 1.500000 -4.125000 +v 0.500000 1.500000 -5.375000 +v 0.375000 2.404197 -4.510823 +v 0.375000 2.309359 -4.308059 +v 0.375000 2.167424 -4.172575 +v 0.375000 2.000000 -4.125000 +v 0.375000 1.500000 -4.125000 +v 0.375000 1.500000 -5.375000 +vt 0.336066 0.391304 +vt 0.049180 0.521739 +vt 0.336066 0.521739 +vt 0.336066 0.260870 +vt 0.049180 0.391304 +vt 0.049180 0.260870 +vt 0.000000 0.130435 +vt -0.000000 0.260870 +vt 0.348361 0.130435 +vt 0.336066 0.000000 +vt 0.336066 0.130435 +vt 0.663934 0.277174 +vt 0.655738 0.260870 +vt 0.655738 0.282609 +vt 0.663934 0.385870 +vt 0.655738 0.369565 +vt 0.655738 0.391304 +vt 0.663934 0.190217 +vt 0.655738 0.173913 +vt 0.655738 0.195652 +vt 0.655738 0.304348 +vt 0.663934 0.288043 +vt 0.663934 0.244565 +vt 0.655738 0.239130 +vt 0.663934 0.353261 +vt 0.655738 0.347826 +vt 0.663934 0.157609 +vt 0.655738 0.152174 +vt 0.663934 0.222826 +vt 0.655738 0.217391 +vt 0.663934 0.342391 +vt 0.655738 0.326087 +vt 0.655738 0.413043 +vt 0.663934 0.396739 +vt 0.663934 0.211957 +vt 0.663934 0.320652 +vt 0.706967 0.510870 +vt 0.704918 0.500000 +vt 0.704918 0.510870 +vt 0.706967 0.565217 +vt 0.704918 0.554348 +vt 0.704918 0.565217 +vt 0.706967 0.543478 +vt 0.704918 0.532609 +vt 0.704918 0.543478 +vt 0.706967 0.597826 +vt 0.704918 0.586957 +vt 0.704918 0.597826 +vt 0.706967 0.489130 +vt 0.704918 0.489130 +vt 0.706967 0.532609 +vt 0.704918 0.521739 +vt 0.706967 0.586957 +vt 0.704918 0.576087 +vt 0.706967 0.478261 +vt 0.704918 0.478261 +vt 0.706967 0.521739 +vt 0.706967 0.576087 +vt 0.704918 0.608696 +vt 0.663102 0.470094 +vt 0.657787 0.445681 +vt 0.652472 0.470094 +vt 0.598361 0.282609 +vt 0.483607 0.434783 +vt 0.598361 0.434783 +vt 0.483607 0.065217 +vt 0.598361 0.217391 +vt 0.598361 0.065217 +vt 0.483607 0.217391 +vt 0.459016 0.065217 +vt 0.459016 0.217391 +vt 0.622951 0.217391 +vt 0.622951 0.065217 +vt 0.483607 0.282609 +vt 0.598361 0.000000 +vt 0.483607 0.000000 +vt 0.663934 -0.000000 +vt 0.725410 0.152174 +vt 0.725410 0.000000 +vt 0.622951 0.119565 +vt 0.622951 0.032609 +vt 0.409836 0.391304 +vt 0.348361 0.260870 +vt 0.348361 0.391304 +vt 0.348361 0.250000 +vt 0.348361 0.510870 +vt 0.409836 0.141304 +vt 0.459016 0.250000 +vt 0.459016 0.141304 +vt 0.409836 0.510870 +vt 0.348361 0.402174 +vt 0.409836 0.130435 +vt 0.348361 -0.000000 +vt 0.409836 0.250000 +vt 0.348361 0.141304 +vt 0.737705 0.141304 +vt 0.823770 0.141304 +vt 0.836066 0.119565 +vt 0.836066 0.032609 +vt 0.795082 0.141304 +vt 0.737705 0.010870 +vt 0.639344 0.510870 +vt 0.475410 0.489130 +vt 0.409836 0.510870 +vt 0.573770 0.456522 +vt 0.536885 0.434783 +vt 0.536885 0.456522 +vt 0.483607 0.434783 +vt 0.475410 0.456522 +vt 0.483607 0.456522 +vt 0.639344 0.586956 +vt 0.475410 0.565217 +vt 0.409836 0.586956 +vt 0.475410 0.532609 +vt 0.639344 0.510870 +vt 0.409836 0.510870 +vt 0.733772 0.750000 +vt 0.747951 0.782232 +vt 0.762129 0.750000 +vt 0.742525 0.779778 +vt 0.737925 0.772791 +vt 0.733772 0.750000 +vt 0.692623 0.798848 +vt 0.713082 0.760865 +vt 0.672164 0.760865 +vt 0.684794 0.795957 +vt 0.678156 0.787723 +vt 0.672164 0.760865 +vt 0.180328 0.065217 +vt 0.049180 0.130435 +vt 0.180328 0.130435 +vt 0.233607 0.065217 +vt 0.233607 0.130435 +vt 0.467213 0.260870 +vt 0.471311 0.326087 +vt 0.471311 0.260870 +vt 0.413934 0.260870 +vt 0.467213 0.250000 +vt 0.413934 0.250000 +vt 0.413934 0.326087 +vt 0.409836 0.260870 +vt 0.409836 0.326087 +vt 0.471311 0.413043 +vt 0.479508 0.434783 +vt 0.479508 0.413043 +vt 0.418033 0.434783 +vt 0.409836 0.413043 +vt 0.409836 0.434783 +vt 0.471311 0.434783 +vt 0.418033 0.413043 +vt 0.483607 0.478261 +vt 0.180328 0.141304 +vt 0.528689 0.695652 +vt 0.536885 0.608696 +vt 0.495902 0.608696 +vt 0.467213 0.326087 +vt 0.717213 0.673913 +vt 0.676230 0.663043 +vt 0.676230 0.673913 +vt 0.717213 0.619565 +vt 0.676230 0.608696 +vt 0.676230 0.619565 +vt 0.733607 0.619565 +vt 0.719262 0.608696 +vt 0.719262 0.673913 +vt 0.733607 0.663043 +vt 0.717213 0.663043 +vt 0.758197 0.673913 +vt 0.733607 0.673913 +vt 0.758197 0.619565 +vt 0.733607 0.608696 +vt 0.774590 0.619565 +vt 0.758197 0.608696 +vt 0.774590 0.663043 +vt 0.758197 0.663043 +vt 0.668033 0.722826 +vt 0.657787 0.777174 +vt 0.668033 0.777174 +vt 0.653689 0.722826 +vt 0.643443 0.777174 +vt 0.653689 0.777174 +vt 0.657787 0.722826 +vt 0.672131 0.722826 +vt 0.672131 0.777174 +vt 0.653689 0.695652 +vt 0.643443 0.722826 +vt 0.657787 0.695652 +vt 0.672131 0.695652 +vt 0.536885 0.478261 +vt 0.573770 0.489130 +vt 0.741803 0.793478 +vt 0.766393 0.858696 +vt 0.766393 0.793478 +vt 0.741803 0.858696 +vt 0.737705 0.793478 +vt 0.737705 0.858696 +vt 0.770492 0.858696 +vt 0.770492 0.793478 +vt 0.813518 0.744565 +vt 0.821721 0.766322 +vt 0.829925 0.744565 +vt 0.651639 0.853261 +vt 0.684426 0.809783 +vt 0.651639 0.809783 +vt 0.829918 0.777174 +vt 0.834016 0.766304 +vt 0.829918 0.766304 +vt 0.838115 0.766304 +vt 0.842213 0.722826 +vt 0.838115 0.722826 +vt 0.834016 0.722826 +vt 0.829918 0.722826 +vt 0.842213 0.766304 +vt 0.846311 0.722826 +vt 0.696721 0.809783 +vt 0.729508 0.853261 +vt 0.729508 0.809783 +vt 0.684426 0.864130 +vt 0.684426 0.853261 +vt 0.684426 0.864130 +vt 0.651639 0.853261 +vt 0.651639 0.864130 +vt 0.696721 0.853261 +vt 0.688525 0.809783 +vt 0.688525 0.853261 +vt 0.737705 0.853261 +vt 0.737705 0.809783 +vt 0.688525 0.809783 +vt 0.647541 0.853261 +vt 0.651639 0.809783 +vt 0.647541 0.809783 +vt 0.647541 0.853261 +vt 0.647541 0.809783 +vt 0.684426 0.853261 +vt 0.688525 0.809783 +vt 0.684426 0.809783 +vt 0.635246 0.842391 +vt 0.631148 0.847826 +vt 0.635246 0.847826 +vt 0.631148 0.842391 +vt 0.627049 0.836957 +vt 0.639344 0.836957 +vt 0.614754 0.847826 +vt 0.610656 0.842391 +vt 0.610656 0.847826 +vt 0.606557 0.836957 +vt 0.608607 0.836957 +vt 0.618852 0.836957 +vt 0.614754 0.842391 +vt 0.608607 0.826087 +vt 0.606557 0.793478 +vt 0.616803 0.826087 +vt 0.618562 0.793404 +vt 0.610656 0.820652 +vt 0.614754 0.820652 +vt 0.637295 0.826087 +vt 0.639344 0.793478 +vt 0.629098 0.826087 +vt 0.627049 0.793478 +vt 0.631148 0.820652 +vt 0.635246 0.820652 +vt 0.643443 0.951087 +vt 0.659836 0.885870 +vt 0.643443 0.907609 +vt 0.602459 0.907609 +vt 0.586066 0.972826 +vt 0.602459 0.951087 +vt 0.524591 0.978309 +vt 0.520510 0.989130 +vt 0.524591 0.999951 +vt 0.524590 0.956569 +vt 0.521705 0.959739 +vt 0.527475 0.975042 +vt 0.733772 0.750000 +vt 0.747951 0.782232 +vt 0.762129 0.750000 +vt 0.742525 0.779778 +vt 0.737925 0.772791 +vt 0.733772 0.750000 +vt 0.692623 0.798848 +vt 0.713082 0.760865 +vt 0.672164 0.760865 +vt 0.684794 0.795957 +vt 0.678156 0.787723 +vt 0.672164 0.760865 +vt 0.663934 0.266304 +vt 0.663934 0.375000 +vt 0.663934 0.179348 +vt 0.663934 0.298913 +vt 0.663934 0.255435 +vt 0.663934 0.364130 +vt 0.663934 0.168478 +vt 0.663934 0.233696 +vt 0.663934 0.331522 +vt 0.663934 0.407609 +vt 0.663934 0.201087 +vt 0.663934 0.309783 +vt 0.706967 0.500000 +vt 0.706967 0.554348 +vt 0.706967 0.608696 +vt 0.654719 0.476052 +vt 0.657787 0.478232 +vt 0.660855 0.476052 +vt 0.663924 0.461957 +vt 0.663102 0.453819 +vt 0.660855 0.447861 +vt 0.654719 0.447861 +vt 0.652472 0.453819 +vt 0.651650 0.461957 +vt 0.663934 0.152174 +vt 0.635246 0.152174 +vt 0.635246 0.000000 +vt 0.409836 0.260870 +vt 0.409836 0.402174 +vt 0.409836 0.000000 +vt 0.823770 0.010870 +vt 0.795082 0.010870 +vt 0.639344 0.434783 +vt 0.409836 0.434783 +vt 0.573770 0.565217 +vt 0.573770 0.532609 +vt 0.734852 0.762334 +vt 0.737925 0.772791 +vt 0.742525 0.779778 +vt 0.753377 0.779778 +vt 0.757977 0.772791 +vt 0.761050 0.762334 +vt 0.762129 0.717768 +vt 0.733772 0.717768 +vt 0.734852 0.762334 +vt 0.733772 0.717768 +vt 0.762129 0.717768 +vt 0.762129 0.750000 +vt 0.761050 0.762334 +vt 0.757977 0.772791 +vt 0.747951 0.782232 +vt 0.753377 0.779778 +vt 0.673721 0.775401 +vt 0.678156 0.787723 +vt 0.684794 0.795957 +vt 0.700452 0.795957 +vt 0.707090 0.787723 +vt 0.711525 0.775401 +vt 0.713082 0.717456 +vt 0.672164 0.717456 +vt 0.673721 0.775401 +vt 0.672164 0.717456 +vt 0.713082 0.717456 +vt 0.713082 0.760865 +vt 0.711525 0.775401 +vt 0.707090 0.787723 +vt 0.692623 0.798848 +vt 0.700452 0.795957 +vt 0.049180 -0.000000 +vt 0.233607 0.141304 +vt 0.536885 0.673913 +vt 0.528689 0.586957 +vt 0.500000 0.586957 +vt 0.495902 0.673913 +vt 0.500000 0.695652 +vt 0.717213 0.608696 +vt 0.731557 0.608696 +vt 0.731557 0.673913 +vt 0.774590 0.608696 +vt 0.774590 0.673913 +vt 0.643443 0.695652 +vt 0.668033 0.695652 +vt 0.827522 0.729181 +vt 0.821721 0.722809 +vt 0.815921 0.729181 +vt 0.815921 0.759950 +vt 0.827522 0.759950 +vt 0.834016 0.777174 +vt 0.846311 0.766304 +vt 0.651639 0.864130 +vt 0.688525 0.853261 +vt 0.688525 0.853261 +vt 0.629098 0.836957 +vt 0.637295 0.836957 +vt 0.616803 0.836957 +vt 0.651639 0.972826 +vt 0.659836 0.972826 +vt 0.651639 0.885870 +vt 0.594262 0.885870 +vt 0.586066 0.885870 +vt 0.594262 0.972826 +vt 0.528671 0.989130 +vt 0.527476 0.981478 +vt 0.521705 0.981478 +vt 0.521705 0.996782 +vt 0.527476 0.996782 +vt 0.520510 0.967391 +vt 0.521705 0.975042 +vt 0.524590 0.978212 +vt 0.528670 0.967391 +vt 0.527475 0.959739 +vt 0.734852 0.762334 +vt 0.737925 0.772791 +vt 0.742525 0.779778 +vt 0.753377 0.779778 +vt 0.757977 0.772791 +vt 0.761050 0.762334 +vt 0.762129 0.717768 +vt 0.733772 0.717768 +vt 0.734852 0.762334 +vt 0.733772 0.717768 +vt 0.762129 0.717768 +vt 0.762129 0.750000 +vt 0.761050 0.762334 +vt 0.757977 0.772791 +vt 0.747951 0.782232 +vt 0.753377 0.779778 +vt 0.673721 0.775401 +vt 0.678156 0.787723 +vt 0.684794 0.795957 +vt 0.700452 0.795957 +vt 0.707090 0.787723 +vt 0.711525 0.775401 +vt 0.713082 0.717456 +vt 0.672164 0.717456 +vt 0.673721 0.775401 +vt 0.672164 0.717456 +vt 0.713082 0.717456 +vt 0.713082 0.760865 +vt 0.711525 0.775401 +vt 0.707090 0.787723 +vt 0.692623 0.798848 +vt 0.700452 0.795957 +vt 0.627049 0.217391 +vt 0.627049 0.239130 +vt 0.627049 0.326087 +vt 0.627049 0.347826 +vt 0.627049 0.391304 +vt 0.627049 0.413043 +vt 0.627049 0.195652 +vt 0.627049 0.304348 +vt 0.627049 0.260870 +vt 0.627049 0.282609 +vt 0.627049 0.369565 +vt 0.627049 0.173913 +vt 0.627049 0.152174 +vt 0.639344 0.554348 +vt 0.639344 0.565217 +vt 0.639344 0.532609 +vt 0.639344 0.543478 +vt 0.639344 0.586957 +vt 0.639344 0.597826 +vt 0.639344 0.489130 +vt 0.639344 0.500000 +vt 0.639344 0.521739 +vt 0.639344 0.576087 +vt 0.639344 0.478261 +vt 0.639344 0.510870 +vt 0.639344 0.608696 +vt 0.772541 0.510870 +vt 0.772541 0.565217 +vt 0.772541 0.543478 +vt 0.772541 0.597826 +vt 0.772541 0.500000 +vt 0.772541 0.554348 +vt 0.772541 0.532609 +vt 0.772541 0.586957 +vt 0.772541 0.489130 +vt 0.772541 0.521739 +vt 0.772541 0.576087 +vt 0.772541 0.608696 +vt 0.725410 0.271739 +vt 0.737705 0.233696 +vt 0.725410 0.228261 +vt 0.663934 0.358696 +vt 0.725410 0.358696 +vt 0.663934 0.228261 +vt 0.663934 0.402174 +vt 0.663934 0.271739 +vt 0.663934 0.478261 +vt 0.725410 0.402174 +vt 0.795082 0.271739 +vt 0.737705 0.271739 +vt 0.737705 0.396739 +vt 0.737705 0.478261 +vt 0.725410 0.478261 +vt 0.737705 0.228261 +vt 0.737705 0.358696 +vt 0.795082 0.228261 +vt 0.737705 0.152174 +vt 0.795082 0.396739 +vt 0.795082 0.478261 +vt 0.737705 0.402174 +vt 0.795082 0.358696 +vt 0.639344 0.489130 +vt 0.639344 0.456522 +vt 0.409836 0.456522 +vt 0.409836 0.489130 +vt 0.639344 0.565217 +vt 0.639344 0.532609 +vt 0.409836 0.532609 +vt 0.409836 0.565217 +vt 0.741803 0.782609 +vt 0.735656 0.793478 +vt 0.741803 0.793478 +vt 0.760246 0.782609 +vt 0.754098 0.793478 +vt 0.760246 0.793478 +vt 0.725410 0.782609 +vt 0.713115 0.793478 +vt 0.725410 0.793478 +vt 0.735656 0.782609 +vt 0.729508 0.793478 +vt 0.754098 0.782609 +vt 0.747951 0.793478 +vt 0.782787 0.782609 +vt 0.770492 0.793478 +vt 0.782787 0.793478 +vt 0.770492 0.782609 +vt 0.766393 0.793478 +vt 0.729508 0.782609 +vt 0.747951 0.782609 +vt 0.766393 0.782609 +vt 0.709016 0.809783 +vt 0.715164 0.798913 +vt 0.709016 0.798913 +vt 0.684426 0.809783 +vt 0.692623 0.798913 +vt 0.684426 0.798913 +vt 0.663934 0.809783 +vt 0.670082 0.798913 +vt 0.663934 0.798913 +vt 0.715164 0.809783 +vt 0.721311 0.798913 +vt 0.721311 0.809783 +vt 0.737705 0.798913 +vt 0.692623 0.809783 +vt 0.700820 0.798913 +vt 0.670082 0.809783 +vt 0.676230 0.798913 +vt 0.647541 0.809783 +vt 0.647541 0.798913 +vt 0.700820 0.809783 +vt 0.676230 0.809783 +vt 0.561475 0.934783 +vt 0.586066 0.891304 +vt 0.561475 0.891304 +vt 0.491803 0.695652 +vt 0.467213 0.956522 +vt 0.491803 0.956522 +vt 0.561475 0.804348 +vt 0.586066 0.739130 +vt 0.561475 0.739130 +vt 0.586066 0.695652 +vt 0.561475 0.695652 +vt 0.586066 0.804348 +vt 0.561475 0.956522 +vt 0.586066 0.934783 +vt 0.545082 0.739130 +vt 0.553279 0.804348 +vt 0.553279 0.739130 +vt 0.553279 0.956522 +vt 0.561475 0.934783 +vt 0.561475 0.956522 +vt 0.545082 0.804348 +vt 0.545082 0.891304 +vt 0.553279 0.934783 +vt 0.500000 0.956522 +vt 0.536885 0.695652 +vt 0.528689 0.695652 +vt 0.545082 0.804348 +vt 0.500000 0.695652 +vt 0.459016 0.695652 +vt 0.467213 0.695652 +vt 0.545082 0.891304 +vt 0.553279 0.804348 +vt 0.553279 0.934783 +vt 0.545082 0.739130 +vt 0.536885 0.695652 +vt 0.553279 0.739130 +vt 0.536885 0.891304 +vt 0.538934 0.891304 +vt 0.717213 0.717391 +vt 0.676230 0.717391 +vt 0.731557 0.717391 +vt 0.719262 0.717391 +vt 0.758197 0.717391 +vt 0.733607 0.717391 +vt 0.774590 0.717391 +vt 0.793033 0.755435 +vt 0.799180 0.750000 +vt 0.793033 0.750000 +vt 0.780738 0.755435 +vt 0.786885 0.750000 +vt 0.780738 0.750000 +vt 0.768443 0.755435 +vt 0.774590 0.750000 +vt 0.768443 0.750000 +vt 0.805328 0.755435 +vt 0.811475 0.750000 +vt 0.805328 0.750000 +vt 0.786885 0.755435 +vt 0.774590 0.755435 +vt 0.762295 0.755435 +vt 0.762295 0.750000 +vt 0.799180 0.755435 +vt 0.606557 0.853261 +vt 0.598361 0.847826 +vt 0.598361 0.853261 +vt 0.647541 0.793478 +vt 0.627049 0.858696 +vt 0.618852 0.847826 +vt 0.618852 0.858696 +vt 0.639344 0.847826 +vt 0.647541 0.836957 +vt 0.606557 0.798913 +vt 0.598361 0.788043 +vt 0.598361 0.798913 +vt 0.598361 0.804348 +vt 0.606557 0.815217 +vt 0.606557 0.804348 +vt 0.606557 0.847826 +vt 0.598361 0.836957 +vt 0.598361 0.831522 +vt 0.606557 0.836957 +vt 0.606557 0.831522 +vt 0.598361 0.820652 +vt 0.606557 0.820652 +vt 0.598361 0.815217 +vt 0.500000 0.956522 +vt 0.643443 0.972826 +vt 0.602459 0.994565 +vt 0.643443 0.994565 +vt 0.602459 0.885870 +vt 0.643443 0.864130 +vt 0.602459 0.864130 +vt 0.602459 0.972826 +vt 0.643443 0.885870 +vt 0.586066 0.961957 +vt 0.528689 0.967391 +vt 0.586066 0.967391 +vt 0.586066 0.956522 +vt 0.528689 0.961957 +vt 0.586066 0.994565 +vt 0.528689 1.000000 +vt 0.586066 1.000000 +vt 0.586066 0.989130 +vt 0.528689 0.994565 +vt 0.586066 0.983696 +vt 0.528689 0.989130 +vt 0.586066 0.978261 +vt 0.528689 0.983696 +vt 0.586066 0.972826 +vt 0.528689 0.978261 +vt 0.528689 0.972826 +vt 0.553279 0.956522 +vt 0.741803 0.782609 +vt 0.735656 0.793478 +vt 0.741803 0.793478 +vt 0.760246 0.782609 +vt 0.754098 0.793478 +vt 0.760246 0.793478 +vt 0.725410 0.782609 +vt 0.713115 0.793478 +vt 0.725410 0.793478 +vt 0.735656 0.782609 +vt 0.729508 0.793478 +vt 0.754098 0.782609 +vt 0.747951 0.793478 +vt 0.782787 0.782609 +vt 0.770492 0.793478 +vt 0.782787 0.793478 +vt 0.770492 0.782609 +vt 0.766393 0.793478 +vt 0.729508 0.782609 +vt 0.747951 0.782609 +vt 0.766393 0.782609 +vt 0.709016 0.809783 +vt 0.715164 0.798913 +vt 0.709016 0.798913 +vt 0.684426 0.809783 +vt 0.692623 0.798913 +vt 0.684426 0.798913 +vt 0.663934 0.809783 +vt 0.670082 0.798913 +vt 0.663934 0.798913 +vt 0.715164 0.809783 +vt 0.721311 0.798913 +vt 0.721311 0.809783 +vt 0.737705 0.798913 +vt 0.692623 0.809783 +vt 0.700820 0.798913 +vt 0.670082 0.809783 +vt 0.676230 0.798913 +vt 0.647541 0.809783 +vt 0.647541 0.798913 +vt 0.700820 0.809783 +vt 0.676230 0.809783 +vt 0.772541 0.478261 +vt 0.795082 0.233696 +vt 0.795082 0.152174 +vt 0.795082 0.402174 +vt 0.713115 0.782609 +vt 0.737705 0.809783 +vt 0.586066 0.956522 +vt 0.459016 0.956522 +vt 0.811475 0.755435 +vt 0.627049 0.847826 +vt 0.647541 0.847826 +vt 0.606557 0.788043 +vt 0.528689 0.956522 +vt 0.713115 0.782609 +vt 0.737705 0.809783 +vn 0.0000 -1.0000 0.0000 +vn -1.0000 0.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +vn 0.9487 0.0000 0.3162 +vn -0.0000 0.0000 1.0000 +vn 0.0000 1.0000 0.0000 +vn 1.0000 0.0000 0.0000 +vn -0.9487 0.0000 0.3162 +vn 0.0000 0.6247 0.7809 +vn 0.0000 -0.7682 -0.6402 +vn 0.8660 0.5000 0.0000 +vn -0.8660 0.5000 0.0000 +vn -0.5000 -0.8660 0.0000 +vn 0.8660 -0.5000 0.0000 +vn -0.5000 0.8660 0.0000 +vn 0.5000 0.8660 0.0000 +vn -0.8660 -0.5000 0.0000 +vn 0.5000 -0.8660 0.0000 +vn -0.4072 -0.9129 0.0287 +vn -0.9363 -0.3291 0.1225 +vn -0.9188 -0.3671 0.1452 +vn 0.3827 -0.9239 0.0000 +vn 0.4072 -0.9129 0.0287 +vn -0.9871 0.0000 0.1602 +vn -0.9239 -0.3827 0.0000 +vn 0.9239 -0.3827 0.0000 +vn -0.3827 -0.9239 0.0000 +vn 0.9188 -0.3671 0.1452 +vn -0.4719 -0.8817 0.0000 +vn 0.9363 -0.3291 0.1225 +vn 0.9871 0.0000 0.1602 +vn 0.4719 -0.8817 0.0000 +vn -0.9571 -0.2898 0.0000 +vn 0.9571 -0.2898 0.0000 +vn 0.0000 0.9923 0.1240 +vn 0.0000 0.9923 -0.1240 +vn 0.0000 0.9981 0.0621 +vn 0.0000 0.9981 -0.0621 +vn 0.0000 0.9412 -0.3377 +vn 0.0000 0.7555 -0.6552 +vn 0.0000 0.7555 0.6552 +vn 0.0000 0.9412 0.3377 +vn 0.0000 0.1138 -0.9935 +vn 0.0000 0.4305 -0.9026 +vn 0.0000 0.1138 0.9935 +vn 0.0000 0.4305 0.9026 +vn 0.0000 0.8121 0.5835 +vn 0.0000 0.4965 0.8681 +vn 0.0000 0.9588 -0.2840 +vn 0.0000 0.1380 -0.9904 +vn 0.0000 0.4964 -0.8681 +vn 0.0000 0.1380 0.9904 +vn 0.0000 0.9588 0.2840 +vn 0.0000 0.8121 -0.5835 +vn -0.3416 -0.3416 -0.8756 +vn 0.4148 -0.2800 -0.8658 +vn -0.4148 -0.2800 -0.8658 +vn -0.2298 0.0000 0.9732 +vn 0.2298 0.0000 0.9732 +vn -0.3711 0.1112 -0.9219 +vn 0.3416 -0.3416 -0.8756 +vn 0.3458 -0.6635 -0.6635 +vn -0.3458 -0.6635 -0.6635 +vn 0.3711 0.1112 -0.9219 +vn -0.3827 0.0000 -0.9239 +vn -0.8727 -0.2257 -0.4330 +vn 0.9239 0.0000 -0.3827 +vn 0.3827 0.0000 -0.9239 +vn -0.9607 -0.1962 -0.1962 +vn -0.9123 0.0530 -0.4062 +vn -0.8507 0.0000 0.5257 +vn 0.9607 -0.1962 -0.1962 +vn 0.9123 0.0530 -0.4062 +vn 0.8507 0.0000 0.5257 +vn 0.8727 -0.2257 -0.4330 +vn -0.9626 -0.0605 -0.2642 +vn 0.9626 -0.0605 -0.2642 +vn 0.0000 0.3827 -0.9239 +vn 0.0000 -0.3827 0.9239 +vn 0.0000 0.9239 -0.3827 +vn 0.0000 -0.9239 0.3827 +vn 0.0000 -0.9732 -0.2298 +vn 0.0000 0.9732 0.2298 +vn 0.0000 0.8944 0.4472 +vn 0.0000 -0.8944 -0.4472 +vn -0.7071 0.0000 -0.7071 +vn -0.7071 0.0000 0.7071 +vn 0.7071 0.0000 0.7071 +vn 0.7071 0.0000 -0.7071 +vn -0.9239 0.3827 0.0000 +vn 0.9239 0.3827 0.0000 +vn 0.3827 0.9239 0.0000 +vn -0.3827 0.9239 0.0000 +vn 0.0000 -0.9239 -0.3827 +vn 0.0000 -0.3827 -0.9239 +vn 0.0000 -0.7071 -0.7071 +vn 0.0000 -0.7071 0.7071 +vn -0.0000 0.7071 0.7071 +vn 0.0000 0.7071 -0.7071 +vn -0.9239 0.0000 -0.3827 +s off +f 2/1/1 3/2/1 1/3/1 +f 6/4/2 4/5/2 2/1/2 +f 8/6/3 3/7/3 4/8/3 +f 107/9/4 1/10/4 5/11/4 +f 33/12/5 22/13/5 21/14/5 +f 40/15/5 29/16/5 28/17/5 +f 37/18/5 26/19/5 25/20/5 +f 32/21/5 33/22/5 21/14/5 +f 22/13/5 35/23/5 23/24/5 +f 29/16/5 42/25/5 30/26/5 +f 26/19/5 39/27/5 27/28/5 +f 23/24/5 36/29/5 24/30/5 +f 42/31/5 31/32/5 30/26/5 +f 27/33/5 40/34/5 28/17/5 +f 36/35/5 25/20/5 24/30/5 +f 43/36/5 32/21/5 31/32/5 +f 60/37/5 49/38/5 48/39/5 +f 67/40/5 56/41/5 55/42/5 +f 57/43/5 46/44/5 45/45/5 +f 64/46/5 53/47/5 52/48/5 +f 49/38/5 62/49/5 50/50/5 +f 56/41/5 57/43/5 45/45/5 +f 58/51/5 47/52/5 46/44/5 +f 65/53/5 54/54/5 53/47/5 +f 50/50/5 63/55/5 51/56/5 +f 59/57/5 48/39/5 47/52/5 +f 66/58/5 55/42/5 54/54/5 +f 51/59/5 64/46/5 52/48/5 +f 79/60/5 75/61/5 71/62/5 +f 82/63/1 83/64/1 81/65/1 +f 85/66/6 87/67/6 86/68/6 +f 88/69/3 83/70/3 84/71/3 +f 86/68/5 82/72/5 81/73/5 +f 87/67/2 84/74/2 82/63/2 +f 85/66/7 81/75/7 83/76/7 +f 89/77/6 91/78/6 90/79/6 +f 100/80/3 89/77/3 97/81/3 +f 110/82/2 108/83/2 106/84/2 +f 106/84/8 6/4/8 2/1/8 +f 108/85/6 5/11/6 6/4/6 +f 105/86/1 2/1/1 1/3/1 +f 111/87/5 110/88/5 109/89/5 +f 109/90/1 106/91/1 105/86/1 +f 111/92/7 105/93/7 107/9/7 +f 112/94/6 107/95/6 108/85/6 +f 103/96/6 90/79/6 91/78/6 +f 117/97/5 118/98/5 119/99/5 +f 120/100/6 104/101/6 103/96/6 +f 123/102/2 128/103/2 124/104/2 +f 125/105/7 186/106/7 188/107/7 +f 185/108/7 126/109/7 187/110/7 +f 131/111/2 136/112/2 132/113/2 +f 134/114/7 129/115/7 130/116/7 +f 156/117/7 152/118/7 139/119/7 +f 146/120/2 145/121/2 143/122/2 +f 163/123/7 167/124/7 159/125/7 +f 169/126/2 170/127/2 172/128/2 +f 182/129/7 7/130/7 181/131/7 +f 1/10/7 182/129/7 183/132/7 +f 5/11/7 183/132/7 184/133/7 +f 191/134/3 184/135/3 183/136/3 +f 190/137/6 183/138/6 182/139/6 +f 189/140/5 182/141/5 181/142/5 +f 196/143/3 188/144/3 186/145/3 +f 197/146/5 185/147/5 187/148/5 +f 198/149/7 195/150/7 197/146/7 +f 126/109/6 197/151/6 187/110/6 +f 189/152/6 7/130/6 8/6/6 +f 214/153/1 204/154/1 203/155/1 +f 192/156/7 190/137/7 189/140/7 +f 236/157/2 230/158/2 232/159/2 +f 233/160/7 231/161/7 229/162/7 +f 239/163/7 235/164/7 233/160/7 +f 236/165/2 240/166/2 234/167/2 +f 242/168/2 240/166/2 238/169/2 +f 243/170/7 237/171/7 239/163/7 +f 247/172/7 241/173/7 243/170/7 +f 242/168/2 248/174/2 244/175/2 +f 255/176/3 252/177/3 251/178/3 +f 254/179/5 249/180/5 250/181/5 +f 256/182/2 250/181/2 252/177/2 +f 253/183/7 251/178/7 249/184/7 +f 258/185/9 253/186/9 254/179/9 +f 255/176/10 258/187/10 256/182/10 +f 253/183/7 257/188/7 255/176/7 +f 254/179/2 256/182/2 258/185/2 +f 128/103/6 198/189/6 197/151/6 +f 125/105/6 198/189/6 127/190/6 +f 263/191/6 265/192/6 264/193/6 +f 266/194/3 261/195/3 262/196/3 +f 264/193/5 260/197/5 259/198/5 +f 281/199/6 279/200/6 277/201/6 +f 306/202/7 299/203/7 300/204/7 +f 287/205/6 289/206/6 288/207/6 +f 290/208/3 285/209/3 286/210/3 +f 288/207/5 284/211/5 283/212/5 +f 289/206/2 286/210/2 284/211/2 +f 287/213/7 283/214/7 285/209/7 +f 295/215/6 297/216/6 296/217/6 +f 306/202/6 303/218/6 305/219/6 +f 314/220/6 311/221/6 313/222/6 +f 298/223/3 293/224/3 294/225/3 +f 296/217/5 292/226/5 291/227/5 +f 305/219/5 301/228/5 299/203/5 +f 313/229/5 309/230/5 307/231/5 +f 304/232/3 300/204/3 302/233/3 +f 312/234/3 308/235/3 310/236/3 +f 310/236/2 311/221/2 312/234/2 +f 341/237/3 326/238/3 323/239/3 +f 337/240/3 322/241/3 326/238/3 +f 319/242/3 341/237/3 323/239/3 +f 325/243/5 339/244/5 324/245/5 +f 320/246/5 339/244/5 327/247/5 +f 321/248/5 335/249/5 325/243/5 +f 320/246/5 331/250/5 315/251/5 +f 332/252/5 321/248/5 316/253/5 +f 340/254/5 336/255/5 316/253/5 +f 333/256/3 319/242/3 317/257/3 +f 322/241/3 334/258/3 318/259/3 +f 338/260/3 342/261/3 317/257/3 +f 351/262/7 343/263/7 352/264/7 +f 353/265/2 346/266/2 354/267/2 +f 360/268/2 364/269/2 368/270/2 +f 359/271/7 357/272/7 365/273/7 +f 390/274/7 386/275/7 373/276/7 +f 380/277/2 379/278/2 377/279/2 +f 397/280/7 401/281/7 393/282/7 +f 403/283/2 404/284/2 406/285/2 +f 2/1/1 4/5/1 3/2/1 +f 6/4/2 8/6/2 4/5/2 +f 8/6/3 7/130/3 3/7/3 +f 107/9/4 105/93/4 1/10/4 +f 33/12/5 34/286/5 22/13/5 +f 40/15/5 41/287/5 29/16/5 +f 37/18/5 38/288/5 26/19/5 +f 32/21/5 44/289/5 33/22/5 +f 22/13/5 34/290/5 35/23/5 +f 29/16/5 41/291/5 42/25/5 +f 26/19/5 38/292/5 39/27/5 +f 23/24/5 35/293/5 36/29/5 +f 42/31/5 43/294/5 31/32/5 +f 27/33/5 39/295/5 40/34/5 +f 36/35/5 37/296/5 25/20/5 +f 43/36/5 44/297/5 32/21/5 +f 60/37/5 61/298/5 49/38/5 +f 67/40/5 68/299/5 56/41/5 +f 57/43/5 58/51/5 46/44/5 +f 64/46/5 65/53/5 53/47/5 +f 49/38/5 61/298/5 62/49/5 +f 56/41/5 68/299/5 57/43/5 +f 58/51/5 59/57/5 47/52/5 +f 65/53/5 66/58/5 54/54/5 +f 50/50/5 62/49/5 63/55/5 +f 59/57/5 60/37/5 48/39/5 +f 66/58/5 67/40/5 55/42/5 +f 51/59/5 63/300/5 64/46/5 +f 71/62/5 70/301/5 79/60/5 +f 70/301/5 69/302/5 79/60/5 +f 69/302/5 80/303/5 79/60/5 +f 79/60/5 78/304/5 77/305/5 +f 77/305/5 76/306/5 75/61/5 +f 75/61/5 74/307/5 71/62/5 +f 74/307/5 73/308/5 71/62/5 +f 73/308/5 72/309/5 71/62/5 +f 79/60/5 77/305/5 75/61/5 +f 82/63/1 84/74/1 83/64/1 +f 85/66/6 88/69/6 87/67/6 +f 88/69/3 85/66/3 83/70/3 +f 86/68/5 87/67/5 82/72/5 +f 87/67/2 88/69/2 84/74/2 +f 85/66/7 86/68/7 81/75/7 +f 89/77/6 92/310/6 91/78/6 +f 100/80/3 99/311/3 92/310/3 +f 92/310/3 89/77/3 100/80/3 +f 89/77/3 98/312/3 97/81/3 +f 110/82/2 112/313/2 108/83/2 +f 106/84/8 108/83/8 6/4/8 +f 108/85/6 107/95/6 5/11/6 +f 105/86/1 106/91/1 2/1/1 +f 111/87/5 112/94/5 110/88/5 +f 109/90/1 110/314/1 106/91/1 +f 111/92/7 109/315/7 105/93/7 +f 112/94/6 111/87/6 107/95/6 +f 103/96/6 104/101/6 90/79/6 +f 119/99/5 115/316/5 117/97/5 +f 115/316/5 116/317/5 117/97/5 +f 116/317/5 120/100/5 117/97/5 +f 120/100/6 116/317/6 104/101/6 +f 123/102/2 127/190/2 128/103/2 +f 125/105/7 121/318/7 186/106/7 +f 185/108/7 122/319/7 126/109/7 +f 131/111/2 135/320/2 136/112/2 +f 134/114/7 133/321/7 129/115/7 +f 156/117/7 155/322/7 154/323/7 +f 154/323/7 153/324/7 156/117/7 +f 153/324/7 152/118/7 156/117/7 +f 152/118/7 142/325/7 139/119/7 +f 142/325/7 141/326/7 139/119/7 +f 141/326/7 140/327/7 139/119/7 +f 139/119/7 138/328/7 137/329/7 +f 137/329/7 156/117/7 139/119/7 +f 145/121/2 144/330/2 143/122/2 +f 143/122/2 158/331/2 157/332/2 +f 157/332/2 151/333/2 143/122/2 +f 151/333/2 150/334/2 149/335/2 +f 143/122/2 151/333/2 147/336/2 +f 149/335/2 148/337/2 151/333/2 +f 148/337/2 147/336/2 151/333/2 +f 147/336/2 146/120/2 143/122/2 +f 159/125/7 160/338/7 161/339/7 +f 161/339/7 162/340/7 159/125/7 +f 162/340/7 163/123/7 159/125/7 +f 163/123/7 164/341/7 167/124/7 +f 164/341/7 165/342/7 167/124/7 +f 165/342/7 166/343/7 167/124/7 +f 167/124/7 173/344/7 174/345/7 +f 174/345/7 159/125/7 167/124/7 +f 170/127/2 171/346/2 172/128/2 +f 172/128/2 180/347/2 179/348/2 +f 179/348/2 178/349/2 172/128/2 +f 178/349/2 177/350/2 176/351/2 +f 172/128/2 178/349/2 168/352/2 +f 176/351/2 175/353/2 178/349/2 +f 175/353/2 168/352/2 178/349/2 +f 168/352/2 169/126/2 172/128/2 +f 182/129/7 3/354/7 7/130/7 +f 1/10/7 3/354/7 182/129/7 +f 5/11/7 1/10/7 183/132/7 +f 191/134/3 192/156/3 184/135/3 +f 190/137/6 191/134/6 183/138/6 +f 189/140/5 190/137/5 182/141/5 +f 196/143/3 198/149/3 188/144/3 +f 197/146/5 195/150/5 185/147/5 +f 198/149/7 196/143/7 195/150/7 +f 126/109/6 128/103/6 197/151/6 +f 8/6/6 6/4/6 189/152/6 +f 6/4/6 5/11/6 192/355/6 +f 5/11/6 184/133/6 192/355/6 +f 189/152/6 181/131/6 7/130/6 +f 6/4/6 192/355/6 189/152/6 +f 214/153/1 202/356/1 204/154/1 +f 204/154/1 221/357/1 203/155/1 +f 221/357/1 223/358/1 203/155/1 +f 203/155/1 201/359/1 214/153/1 +f 201/359/1 215/360/1 214/153/1 +f 192/156/7 191/134/7 190/137/7 +f 236/157/2 234/167/2 230/158/2 +f 233/160/7 235/361/7 231/161/7 +f 239/163/7 237/362/7 235/164/7 +f 236/165/2 238/363/2 240/166/2 +f 242/168/2 244/175/2 240/166/2 +f 243/170/7 241/173/7 237/171/7 +f 247/172/7 245/364/7 241/173/7 +f 242/168/2 246/365/2 248/174/2 +f 255/176/3 256/182/3 252/177/3 +f 254/179/5 253/186/5 249/180/5 +f 256/182/2 254/179/2 250/181/2 +f 253/183/7 255/176/7 251/178/7 +f 258/185/9 257/366/9 253/186/9 +f 255/176/10 257/367/10 258/187/10 +f 128/103/6 127/190/6 198/189/6 +f 125/105/6 188/107/6 198/189/6 +f 263/191/6 266/194/6 265/192/6 +f 266/194/3 263/191/3 261/195/3 +f 264/193/5 265/192/5 260/197/5 +f 277/201/6 276/368/6 275/369/6 +f 275/369/6 282/370/6 281/199/6 +f 281/199/6 280/371/6 279/200/6 +f 279/200/6 278/372/6 277/201/6 +f 277/201/6 275/369/6 281/199/6 +f 306/202/7 305/219/7 299/203/7 +f 287/205/6 290/373/6 289/206/6 +f 290/208/3 287/213/3 285/209/3 +f 288/207/5 289/206/5 284/211/5 +f 289/206/2 290/208/2 286/210/2 +f 287/213/7 288/374/7 283/214/7 +f 295/215/6 298/223/6 297/216/6 +f 306/202/6 304/375/6 303/218/6 +f 314/220/6 312/234/6 311/221/6 +f 298/223/3 295/215/3 293/224/3 +f 296/217/5 297/216/5 292/226/5 +f 305/219/5 303/376/5 301/228/5 +f 313/229/5 311/221/5 309/230/5 +f 304/232/3 306/202/3 300/204/3 +f 312/234/3 314/377/3 308/235/3 +f 310/236/2 309/230/2 311/221/2 +f 341/237/3 337/240/3 326/238/3 +f 337/240/3 330/378/3 322/241/3 +f 319/242/3 329/379/3 341/237/3 +f 325/243/5 335/249/5 339/244/5 +f 320/246/5 324/245/5 339/244/5 +f 321/248/5 328/380/5 335/249/5 +f 320/246/5 327/247/5 331/250/5 +f 332/252/5 328/380/5 321/248/5 +f 336/255/5 332/252/5 316/253/5 +f 316/253/5 315/251/5 340/254/5 +f 315/251/5 331/250/5 340/254/5 +f 333/256/3 329/379/3 319/242/3 +f 322/241/3 330/378/3 334/258/3 +f 342/261/3 333/256/3 317/257/3 +f 317/257/3 318/259/3 338/260/3 +f 318/259/3 334/258/3 338/260/3 +f 351/262/7 347/381/7 345/382/7 +f 345/382/7 343/263/7 351/262/7 +f 343/263/7 348/383/7 352/264/7 +f 353/265/2 349/384/2 344/385/2 +f 344/385/2 346/266/2 353/265/2 +f 346/266/2 350/386/2 354/267/2 +f 356/387/2 358/388/2 360/268/2 +f 360/268/2 362/389/2 364/269/2 +f 364/269/2 366/390/2 368/270/2 +f 368/270/2 370/391/2 356/387/2 +f 356/387/2 360/268/2 368/270/2 +f 357/272/7 355/392/7 369/393/7 +f 369/393/7 367/394/7 357/272/7 +f 367/394/7 365/273/7 357/272/7 +f 365/273/7 363/395/7 361/396/7 +f 361/396/7 359/271/7 365/273/7 +f 390/274/7 389/397/7 388/398/7 +f 388/398/7 387/399/7 390/274/7 +f 387/399/7 386/275/7 390/274/7 +f 386/275/7 376/400/7 373/276/7 +f 376/400/7 375/401/7 373/276/7 +f 375/401/7 374/402/7 373/276/7 +f 373/276/7 372/403/7 371/404/7 +f 371/404/7 390/274/7 373/276/7 +f 379/278/2 378/405/2 377/279/2 +f 377/279/2 392/406/2 391/407/2 +f 391/407/2 385/408/2 377/279/2 +f 385/408/2 384/409/2 383/410/2 +f 377/279/2 385/408/2 381/411/2 +f 383/410/2 382/412/2 385/408/2 +f 382/412/2 381/411/2 385/408/2 +f 381/411/2 380/277/2 377/279/2 +f 393/282/7 394/413/7 395/414/7 +f 395/414/7 396/415/7 393/282/7 +f 396/415/7 397/280/7 393/282/7 +f 397/280/7 398/416/7 401/281/7 +f 398/416/7 399/417/7 401/281/7 +f 399/417/7 400/418/7 401/281/7 +f 401/281/7 407/419/7 408/420/7 +f 408/420/7 393/282/7 401/281/7 +f 404/284/2 405/421/2 406/285/2 +f 406/285/2 414/422/2 413/423/2 +f 413/423/2 412/424/2 406/285/2 +f 412/424/2 411/425/2 410/426/2 +f 406/285/2 412/424/2 402/427/2 +f 410/426/2 409/428/2 412/424/2 +f 409/428/2 402/427/2 412/424/2 +f 402/427/2 403/283/2 406/285/2 +s 1 +f 23/24/11 12/429/7 11/430/11 +f 30/26/2 19/431/12 18/432/2 +f 27/33/1 16/433/13 15/434/1 +f 24/30/7 13/435/14 12/429/7 +f 31/32/12 20/436/15 19/431/12 +f 21/14/6 10/437/16 9/438/6 +f 28/17/13 17/439/17 16/433/13 +f 25/20/14 14/440/18 13/435/14 +f 32/21/15 9/438/6 20/436/15 +f 22/13/16 11/430/11 10/437/16 +f 29/16/17 18/432/2 17/439/17 +f 26/19/18 15/441/1 14/440/18 +f 55/42/12 44/442/15 43/443/12 +f 45/45/6 34/444/16 33/445/6 +f 52/48/13 41/446/17 40/447/13 +f 49/38/14 38/448/18 37/449/14 +f 56/41/15 33/445/6 44/442/15 +f 46/44/16 35/450/11 34/444/16 +f 53/47/17 42/451/2 41/446/17 +f 50/50/18 39/452/1 38/448/18 +f 47/52/11 36/453/7 35/450/11 +f 54/54/2 43/443/12 42/451/2 +f 51/59/1 40/447/13 39/454/1 +f 48/39/7 37/449/14 36/453/7 +f 72/455/2 61/298/12 60/37/2 +f 79/456/14 68/299/18 67/40/14 +f 69/457/1 58/51/13 57/43/1 +f 76/458/16 65/53/11 64/46/16 +f 73/459/12 62/49/15 61/298/12 +f 80/460/18 57/43/1 68/299/18 +f 70/461/13 59/57/17 58/51/13 +f 77/462/11 66/58/7 65/53/11 +f 74/463/15 63/55/6 62/49/15 +f 71/464/17 60/37/2 59/57/17 +f 78/465/7 67/40/14 66/58/7 +f 75/466/6 64/46/16 63/300/6 +f 95/467/19 113/468/20 96/469/21 +f 95/467/19 97/470/22 94/471/23 +f 91/78/24 99/472/25 96/469/21 +f 98/473/26 94/471/23 97/470/22 +f 96/469/21 100/474/27 95/467/19 +f 89/475/7 93/476/28 98/473/26 +f 118/477/29 113/468/20 114/478/29 +f 101/479/30 94/471/23 93/476/28 +f 104/480/31 93/476/28 90/481/31 +f 113/482/20 91/78/24 96/469/21 +f 102/483/32 95/467/19 94/471/23 +f 117/484/33 103/485/24 113/482/20 +f 115/486/34 102/483/32 101/479/30 +f 116/487/7 101/488/30 104/480/31 +f 119/489/32 114/478/29 102/483/32 +f 125/105/35 123/490/35 121/491/35 +f 128/103/36 122/492/36 124/493/36 +f 133/321/37 131/494/35 129/495/35 +f 136/112/38 130/496/36 132/497/36 +f 136/112/38 133/321/37 134/114/38 +f 153/498/39 145/499/40 146/500/39 +f 141/501/41 148/502/42 149/503/41 +f 156/504/43 158/505/3 143/506/43 +f 154/507/40 144/508/44 145/499/40 +f 142/509/42 147/510/6 148/502/42 +f 138/511/5 151/512/45 157/513/5 +f 139/514/45 150/515/46 151/512/45 +f 155/516/44 143/506/43 144/508/44 +f 152/517/6 146/500/39 147/510/6 +f 140/518/46 149/503/41 150/515/46 +f 176/519/47 166/520/48 165/521/47 +f 169/522/49 163/523/6 162/524/49 +f 172/525/50 160/526/51 159/527/50 +f 177/528/48 167/529/52 166/520/48 +f 178/530/52 173/531/5 167/529/52 +f 168/532/6 164/533/53 163/523/6 +f 171/534/51 161/535/54 160/526/51 +f 180/536/3 159/527/50 174/537/3 +f 175/538/53 165/521/47 164/533/53 +f 170/539/54 162/524/49 161/535/54 +f 210/540/55 207/541/56 208/542/57 +f 201/543/58 194/544/59 193/545/58 +f 206/546/60 199/547/61 200/548/55 +f 200/548/55 204/549/62 202/550/63 +f 208/542/57 205/551/64 206/546/60 +f 212/552/65 209/553/61 210/540/55 +f 213/554/66 206/555/60 200/556/55 +f 228/557/67 209/558/61 211/559/68 +f 214/153/69 217/560/70 213/554/66 +f 208/561/57 219/562/66 210/540/55 +f 219/562/66 212/552/65 210/540/55 +f 216/563/71 201/543/58 193/545/58 +f 217/560/70 208/561/57 206/555/60 +f 202/564/63 213/554/66 200/556/55 +f 221/565/72 225/566/73 223/567/74 +f 223/568/74 194/544/59 203/569/59 +f 207/570/56 225/566/73 205/571/64 +f 227/572/75 207/570/56 209/558/61 +f 222/573/75 204/574/62 199/575/61 +f 225/566/73 199/575/61 205/571/64 +f 215/360/71 218/576/76 217/560/70 +f 225/566/73 226/577/77 223/567/74 +f 235/578/78 232/159/3 231/579/3 +f 234/167/79 229/162/5 230/158/5 +f 237/580/80 236/165/78 235/581/78 +f 240/166/81 233/160/79 234/167/79 +f 244/175/82 239/163/81 240/166/81 +f 241/582/83 238/169/80 237/583/80 +f 245/584/84 242/168/83 241/582/83 +f 248/174/85 243/170/82 244/175/82 +f 282/585/86 267/586/3 274/587/86 +f 280/588/87 273/589/2 272/590/87 +f 278/591/88 271/592/5 270/593/88 +f 276/594/89 269/595/7 268/596/89 +f 281/597/2 274/587/86 273/589/2 +f 279/598/5 272/590/87 271/592/5 +f 277/599/7 270/593/88 269/600/7 +f 275/601/3 268/596/89 267/586/3 +f 341/602/27 327/603/25 339/604/27 +f 321/248/90 318/259/2 316/253/2 +f 319/242/91 315/605/7 317/257/7 +f 323/606/92 325/607/93 324/608/92 +f 325/607/93 322/241/90 321/248/90 +f 323/609/92 320/610/91 319/242/91 +f 337/611/22 339/612/27 335/613/22 +f 328/614/26 337/611/22 335/613/22 +f 328/614/26 334/615/91 330/616/26 +f 329/617/25 331/618/90 327/603/25 +f 340/619/93 333/620/90 342/621/93 +f 336/622/92 342/621/93 338/623/92 +f 332/624/91 338/623/92 334/615/91 +f 218/576/76 215/360/71 216/563/71 +f 226/577/77 224/625/74 223/567/74 +f 347/626/80 346/627/6 345/628/6 +f 349/629/94 343/630/1 344/631/1 +f 353/265/95 351/262/78 352/264/95 +f 351/262/78 350/632/80 347/626/80 +f 353/265/95 348/633/94 349/629/94 +f 357/634/96 356/635/3 355/636/3 +f 359/637/1 358/638/96 357/634/96 +f 361/639/97 360/640/1 359/641/1 +f 363/642/5 362/643/97 361/639/97 +f 365/644/98 364/645/5 363/642/5 +f 367/646/6 366/647/98 365/644/98 +f 369/648/99 368/649/6 367/646/6 +f 355/636/3 370/650/99 369/648/99 +f 216/563/71 220/651/100 218/576/76 +f 220/651/100 219/562/66 218/576/76 +f 228/557/67 226/577/77 227/572/75 +f 224/625/74 226/577/77 228/557/67 +f 387/652/39 379/653/40 380/654/39 +f 375/655/41 382/656/42 383/657/41 +f 390/658/43 392/659/3 377/660/43 +f 388/661/40 378/662/44 379/653/40 +f 376/663/42 381/664/6 382/656/42 +f 372/665/5 385/666/45 391/667/5 +f 373/668/45 384/669/46 385/666/45 +f 389/670/44 377/660/43 378/662/44 +f 386/671/6 380/654/39 381/664/6 +f 374/672/46 383/657/41 384/669/46 +f 410/673/47 400/674/48 399/675/47 +f 403/676/49 397/677/6 396/678/49 +f 406/679/50 394/680/51 393/681/50 +f 411/682/48 401/683/52 400/674/48 +f 412/684/52 407/685/5 401/683/52 +f 402/686/6 398/687/53 397/677/6 +f 405/688/51 395/689/54 394/680/51 +f 414/690/3 393/681/50 408/691/3 +f 409/692/53 399/675/47 398/687/53 +f 404/693/54 396/678/49 395/689/54 +f 23/24/11 24/30/7 12/429/7 +f 30/26/2 31/32/12 19/431/12 +f 27/33/1 28/17/13 16/433/13 +f 24/30/7 25/20/14 13/435/14 +f 31/32/12 32/21/15 20/436/15 +f 21/14/6 22/13/16 10/437/16 +f 28/17/13 29/16/17 17/439/17 +f 25/20/14 26/19/18 14/440/18 +f 32/21/15 21/14/6 9/438/6 +f 22/13/16 23/24/11 11/430/11 +f 29/16/17 30/26/2 18/432/2 +f 26/19/18 27/28/1 15/441/1 +f 55/42/12 56/41/15 44/442/15 +f 45/45/6 46/44/16 34/444/16 +f 52/48/13 53/47/17 41/446/17 +f 49/38/14 50/50/18 38/448/18 +f 56/41/15 45/45/6 33/445/6 +f 46/44/16 47/52/11 35/450/11 +f 53/47/17 54/54/2 42/451/2 +f 50/50/18 51/56/1 39/452/1 +f 47/52/11 48/39/7 36/453/7 +f 54/54/2 55/42/12 43/443/12 +f 51/59/1 52/48/13 40/447/13 +f 48/39/7 49/38/14 37/449/14 +f 72/455/2 73/459/12 61/298/12 +f 79/456/14 80/460/18 68/299/18 +f 69/457/1 70/461/13 58/51/13 +f 76/458/16 77/462/11 65/53/11 +f 73/459/12 74/463/15 62/49/15 +f 80/460/18 69/457/1 57/43/1 +f 70/461/13 71/464/17 59/57/17 +f 77/462/11 78/465/7 66/58/7 +f 74/463/15 75/694/6 63/55/6 +f 71/464/17 72/455/2 60/37/2 +f 78/465/7 79/456/14 67/40/14 +f 75/466/6 76/458/16 64/46/16 +f 95/467/19 114/478/29 113/468/20 +f 95/467/19 100/474/27 97/470/22 +f 91/78/24 92/310/2 99/472/25 +f 98/473/26 93/476/28 94/471/23 +f 96/469/21 99/472/25 100/474/27 +f 89/475/7 90/481/31 93/476/28 +f 118/477/29 117/695/33 113/468/20 +f 101/479/30 102/483/32 94/471/23 +f 104/480/31 101/488/30 93/476/28 +f 113/482/20 103/485/24 91/78/24 +f 102/483/32 114/478/29 95/467/19 +f 117/484/33 120/696/2 103/485/24 +f 115/486/34 119/489/32 102/483/32 +f 116/487/7 115/697/34 101/488/30 +f 119/489/32 118/477/29 114/478/29 +f 125/105/35 127/190/35 123/490/35 +f 128/103/36 126/109/36 122/492/36 +f 133/321/37 135/320/37 131/494/35 +f 136/112/38 134/114/38 130/496/36 +f 136/112/38 135/320/37 133/321/37 +f 153/498/39 154/507/40 145/499/40 +f 141/501/41 142/509/42 148/502/42 +f 156/504/43 137/698/3 158/505/3 +f 154/507/40 155/516/44 144/508/44 +f 142/509/42 152/517/6 147/510/6 +f 138/511/5 139/514/45 151/512/45 +f 139/514/45 140/518/46 150/515/46 +f 155/516/44 156/504/43 143/506/43 +f 152/517/6 153/498/39 146/500/39 +f 140/518/46 141/501/41 149/503/41 +f 176/519/47 177/528/48 166/520/48 +f 169/522/49 168/532/6 163/523/6 +f 172/525/50 171/534/51 160/526/51 +f 177/528/48 178/530/52 167/529/52 +f 178/530/52 179/699/5 173/531/5 +f 168/532/6 175/538/53 164/533/53 +f 171/534/51 170/539/54 161/535/54 +f 180/536/3 172/525/50 159/527/50 +f 175/538/53 176/519/47 165/521/47 +f 170/539/54 169/522/49 162/524/49 +f 210/540/55 209/553/61 207/541/56 +f 201/543/58 203/569/59 194/544/59 +f 206/546/60 205/551/64 199/547/61 +f 200/548/55 199/547/61 204/549/62 +f 208/542/57 207/541/56 205/551/64 +f 212/552/65 211/700/68 209/553/61 +f 213/554/66 217/560/70 206/555/60 +f 228/557/67 227/572/75 209/558/61 +f 214/153/69 215/360/71 217/560/70 +f 208/561/57 218/576/76 219/562/66 +f 219/562/66 220/651/100 212/552/65 +f 216/563/71 215/360/71 201/543/58 +f 217/560/70 218/576/76 208/561/57 +f 202/564/63 214/153/69 213/554/66 +f 221/565/72 222/573/75 225/566/73 +f 223/568/74 224/701/74 194/544/59 +f 207/570/56 226/577/77 225/566/73 +f 227/572/75 226/577/77 207/570/56 +f 222/573/75 221/565/72 204/574/62 +f 225/566/73 222/573/75 199/575/61 +f 235/578/78 236/157/78 232/159/3 +f 234/167/79 233/160/79 229/162/5 +f 237/580/80 238/363/80 236/165/78 +f 240/166/81 239/163/81 233/160/79 +f 244/175/82 243/170/82 239/163/81 +f 241/582/83 242/168/83 238/169/80 +f 245/584/84 246/365/84 242/168/83 +f 248/174/85 247/172/85 243/170/82 +f 282/585/86 275/601/3 267/586/3 +f 280/588/87 281/597/2 273/589/2 +f 278/591/88 279/598/5 271/592/5 +f 276/594/89 277/702/7 269/595/7 +f 281/597/2 282/585/86 274/587/86 +f 279/598/5 280/588/87 272/590/87 +f 277/599/7 278/591/88 270/593/88 +f 275/601/3 276/594/89 268/596/89 +f 341/602/27 329/617/25 327/603/25 +f 321/248/90 322/241/90 318/259/2 +f 319/242/91 320/610/91 315/605/7 +f 323/606/92 326/703/93 325/607/93 +f 325/607/93 326/703/93 322/241/90 +f 323/609/92 324/704/92 320/610/91 +f 337/611/22 341/705/27 339/612/27 +f 328/614/26 330/616/26 337/611/22 +f 328/614/26 332/624/91 334/615/91 +f 329/617/25 333/620/90 331/618/90 +f 340/619/93 331/618/90 333/620/90 +f 336/622/92 340/619/93 342/621/93 +f 332/624/91 336/622/92 338/623/92 +f 347/626/80 350/632/80 346/627/6 +f 349/629/94 348/633/94 343/630/1 +f 353/265/95 354/267/78 351/262/78 +f 351/262/78 354/267/78 350/632/80 +f 353/265/95 352/264/95 348/633/94 +f 357/634/96 358/638/96 356/635/3 +f 359/637/1 360/706/1 358/638/96 +f 361/639/97 362/643/97 360/640/1 +f 363/642/5 364/645/5 362/643/97 +f 365/644/98 366/647/98 364/645/5 +f 367/646/6 368/649/6 366/647/98 +f 369/648/99 370/650/99 368/649/6 +f 355/636/3 356/635/3 370/650/99 +f 387/652/39 388/661/40 379/653/40 +f 375/655/41 376/663/42 382/656/42 +f 390/658/43 371/707/3 392/659/3 +f 388/661/40 389/670/44 378/662/44 +f 376/663/42 386/671/6 381/664/6 +f 372/665/5 373/668/45 385/666/45 +f 373/668/45 374/672/46 384/669/46 +f 389/670/44 390/658/43 377/660/43 +f 386/671/6 387/652/39 380/654/39 +f 374/672/46 375/655/41 383/657/41 +f 410/673/47 411/682/48 400/674/48 +f 403/676/49 402/686/6 397/677/6 +f 406/679/50 405/688/51 394/680/51 +f 411/682/48 412/684/52 401/683/52 +f 412/684/52 413/708/5 407/685/5 +f 402/686/6 409/692/53 398/687/53 +f 405/688/51 404/693/54 395/689/54 +f 414/690/3 406/679/50 393/681/50 +f 409/692/53 410/673/47 399/675/47 +f 404/693/54 403/676/49 396/678/49 o Slide v -0.125500 1.625000 2.562500 v -0.312500 1.625000 2.375500 @@ -101,47 +2000,47 @@ vn -0.7071 -0.0000 0.7071 vn -0.7071 -0.0000 -0.7071 vn 0.7071 -0.0000 -0.7071 s off -f 25/1/1 28/2/1 26/3/1 -f 19/4/2 10/5/2 11/6/2 -f 18/7/2 15/8/2 17/9/2 -f 24/10/3 21/11/3 22/12/3 -f 22/13/4 28/2/4 24/10/4 -f 23/14/5 25/15/5 21/16/5 -f 24/10/2 27/17/2 23/14/2 -f 25/1/1 27/17/1 28/2/1 -f 19/4/2 20/18/2 10/5/2 -f 18/7/2 14/19/2 15/8/2 -f 24/10/3 23/14/3 21/11/3 -f 22/13/4 26/20/4 28/2/4 -f 23/14/5 27/17/5 25/15/5 -f 24/10/2 28/2/2 27/17/2 +f 439/709/101 442/710/101 440/711/101 +f 433/712/102 424/713/102 425/714/102 +f 432/715/102 429/716/102 431/717/102 +f 438/718/103 435/719/103 436/720/103 +f 436/721/104 442/710/104 438/718/104 +f 437/722/105 439/723/105 435/724/105 +f 438/718/102 441/725/102 437/722/102 +f 439/709/101 441/725/101 442/710/101 +f 433/712/102 434/726/102 424/713/102 +f 432/715/102 428/727/102 429/716/102 +f 438/718/103 437/722/103 435/719/103 +f 436/721/104 440/728/104 442/710/104 +f 437/722/105 441/725/105 439/723/105 +f 438/718/102 442/710/102 441/725/102 s 1 -f 4/21/6 12/22/7 1/23/8 -f 8/24/9 14/25/10 3/26/10 -f 6/27/11 16/28/12 7/29/13 -f 12/22/7 11/30/14 2/31/14 -f 10/32/15 9/33/16 5/34/15 -f 8/24/9 7/29/13 16/28/12 -f 14/25/10 18/35/17 13/36/18 -f 2/37/14 10/32/15 5/34/15 -f 12/38/19 20/18/20 19/4/20 -f 13/39/21 17/9/22 16/40/21 -f 12/38/19 16/40/21 9/41/19 -f 4/21/6 13/36/18 12/22/7 -f 8/24/9 15/42/9 14/25/10 -f 6/27/11 9/33/16 16/28/12 -f 2/31/14 1/23/8 12/22/7 -f 12/22/7 19/43/23 11/30/14 -f 20/44/24 9/33/16 10/32/15 -f 9/33/16 6/27/11 5/34/15 -f 17/45/25 15/42/9 16/28/12 -f 15/42/9 8/24/9 16/28/12 -f 4/21/6 3/26/10 13/36/18 -f 3/26/10 14/25/10 13/36/18 -f 2/37/14 11/46/14 10/32/15 -f 12/38/19 9/41/19 20/18/20 -f 13/39/21 18/7/22 17/9/22 -f 12/38/19 13/39/21 16/40/21 +f 418/729/106 426/730/107 415/731/108 +f 422/732/109 428/733/110 417/734/110 +f 420/735/111 430/736/112 421/737/113 +f 426/730/107 425/738/114 416/739/114 +f 424/740/115 423/741/116 419/742/115 +f 422/732/109 421/737/113 430/736/112 +f 428/733/110 432/743/117 427/744/118 +f 416/745/114 424/740/115 419/742/115 +f 426/746/119 434/726/120 433/712/120 +f 427/747/121 431/717/122 430/748/121 +f 426/746/119 430/748/121 423/749/119 +f 418/729/106 427/744/118 426/730/107 +f 422/732/109 429/750/109 428/733/110 +f 420/735/111 423/741/116 430/736/112 +f 416/739/114 415/731/108 426/730/107 +f 426/730/107 433/751/123 425/738/114 +f 434/752/124 423/741/116 424/740/115 +f 423/741/116 420/735/111 419/742/115 +f 431/753/125 429/750/109 430/736/112 +f 429/750/109 422/732/109 430/736/112 +f 418/729/106 417/734/110 427/744/118 +f 417/734/110 428/733/110 427/744/118 +f 416/745/114 425/754/114 424/740/115 +f 426/746/119 423/749/119 434/726/120 +f 427/747/121 432/715/122 431/717/122 +f 426/746/119 427/747/121 430/748/121 o Bullet v 0.000000 0.750000 -1.312500 v 0.000000 0.750000 -0.812500 @@ -268,67 +2167,67 @@ vn -0.3730 -0.3730 0.8496 vn 0.3730 0.3730 0.8496 vn 0.0000 0.5275 0.8496 s off -f 39/47/26 41/48/26 43/49/26 -f 43/49/26 29/50/26 31/51/26 -f 31/51/26 33/52/26 43/49/26 -f 33/52/26 35/53/26 43/49/26 -f 35/53/26 37/54/26 43/49/26 -f 37/54/26 39/47/26 43/49/26 +f 453/755/126 455/756/126 457/757/126 +f 457/757/126 443/758/126 445/759/126 +f 445/759/126 447/760/126 457/757/126 +f 447/760/126 449/761/126 457/757/126 +f 449/761/126 451/762/126 457/757/126 +f 451/762/126 453/755/126 457/757/126 s 1 -f 30/55/27 31/56/28 29/57/29 -f 32/58/30 33/59/31 31/56/28 -f 34/60/32 35/61/33 33/59/31 -f 36/62/34 37/63/35 35/61/33 -f 38/64/36 39/65/37 37/66/35 -f 40/67/38 41/68/39 39/65/37 -f 38/64/36 50/69/40 40/67/38 -f 42/70/41 43/71/42 41/68/39 -f 44/72/43 29/57/29 43/71/42 -f 45/73/44 55/74/45 47/75/46 -f 44/72/43 46/76/47 30/55/27 -f 30/55/27 45/73/44 32/58/30 -f 36/62/34 47/75/46 48/77/48 -f 40/67/38 51/78/49 42/70/41 -f 38/79/36 48/77/48 49/80/50 -f 44/72/43 51/78/49 52/81/51 -f 34/60/32 45/73/44 47/75/46 -f 56/82/52 55/83/45 59/84/53 -f 51/78/49 60/85/54 52/81/51 -f 50/69/40 57/86/55 58/87/56 -f 48/77/48 55/88/45 56/89/52 -f 46/76/47 53/90/57 45/73/44 -f 52/81/51 54/91/58 46/76/47 -f 51/78/49 58/92/56 59/93/53 -f 48/77/48 57/94/55 49/80/50 -f 30/55/27 32/58/30 31/56/28 -f 32/58/30 34/60/32 33/59/31 -f 34/60/32 36/62/34 35/61/33 -f 36/62/34 38/79/36 37/63/35 -f 38/64/36 40/67/38 39/65/37 -f 40/67/38 42/70/41 41/68/39 -f 38/64/36 49/95/50 50/69/40 -f 42/70/41 44/72/43 43/71/42 -f 44/72/43 30/55/27 29/57/29 -f 45/73/44 53/96/57 55/74/45 -f 44/72/43 52/81/51 46/76/47 -f 30/55/27 46/76/47 45/73/44 -f 36/62/34 34/60/32 47/75/46 -f 40/67/38 50/69/40 51/78/49 -f 38/79/36 36/62/34 48/77/48 -f 44/72/43 42/70/41 51/78/49 -f 34/60/32 32/58/30 45/73/44 -f 55/83/45 53/97/57 59/84/53 -f 53/97/57 54/98/58 59/84/53 -f 54/98/58 60/99/54 59/84/53 -f 59/84/53 58/100/56 57/101/55 -f 57/101/55 56/82/52 59/84/53 -f 51/78/49 59/102/53 60/85/54 -f 50/69/40 49/95/50 57/86/55 -f 48/77/48 47/75/46 55/88/45 -f 46/76/47 54/103/58 53/90/57 -f 52/81/51 60/104/54 54/91/58 -f 51/78/49 50/69/40 58/92/56 -f 48/77/48 56/105/52 57/94/55 +f 444/763/127 445/764/128 443/765/129 +f 446/766/130 447/767/131 445/764/128 +f 448/768/132 449/769/133 447/767/131 +f 450/770/134 451/771/135 449/769/133 +f 452/772/136 453/773/137 451/774/135 +f 454/775/138 455/776/139 453/773/137 +f 452/772/136 464/777/140 454/775/138 +f 456/778/141 457/779/142 455/776/139 +f 458/780/143 443/765/129 457/779/142 +f 459/781/144 469/782/145 461/783/146 +f 458/780/143 460/784/147 444/763/127 +f 444/763/127 459/781/144 446/766/130 +f 450/770/134 461/783/146 462/785/148 +f 454/775/138 465/786/149 456/778/141 +f 452/787/136 462/785/148 463/788/150 +f 458/780/143 465/786/149 466/789/151 +f 448/768/132 459/781/144 461/783/146 +f 470/790/152 469/791/145 473/792/153 +f 465/786/149 474/793/154 466/789/151 +f 464/777/140 471/794/155 472/795/156 +f 462/785/148 469/796/145 470/797/152 +f 460/784/147 467/798/157 459/781/144 +f 466/789/151 468/799/158 460/784/147 +f 465/786/149 472/800/156 473/801/153 +f 462/785/148 471/802/155 463/788/150 +f 444/763/127 446/766/130 445/764/128 +f 446/766/130 448/768/132 447/767/131 +f 448/768/132 450/770/134 449/769/133 +f 450/770/134 452/787/136 451/771/135 +f 452/772/136 454/775/138 453/773/137 +f 454/775/138 456/778/141 455/776/139 +f 452/772/136 463/803/150 464/777/140 +f 456/778/141 458/780/143 457/779/142 +f 458/780/143 444/763/127 443/765/129 +f 459/781/144 467/804/157 469/782/145 +f 458/780/143 466/789/151 460/784/147 +f 444/763/127 460/784/147 459/781/144 +f 450/770/134 448/768/132 461/783/146 +f 454/775/138 464/777/140 465/786/149 +f 452/787/136 450/770/134 462/785/148 +f 458/780/143 456/778/141 465/786/149 +f 448/768/132 446/766/130 459/781/144 +f 469/791/145 467/805/157 473/792/153 +f 467/805/157 468/806/158 473/792/153 +f 468/806/158 474/807/154 473/792/153 +f 473/792/153 472/808/156 471/809/155 +f 471/809/155 470/790/152 473/792/153 +f 465/786/149 473/810/153 474/793/154 +f 464/777/140 463/803/150 471/794/155 +f 462/785/148 461/783/146 469/796/145 +f 460/784/147 468/811/158 467/798/157 +f 466/789/151 474/812/154 468/799/158 +f 465/786/149 464/777/140 472/800/156 +f 462/785/148 470/813/152 471/802/155 o Magazine v 0.375000 -4.750000 -0.375000 v -0.375000 -4.750000 -0.375000 @@ -390,38 +2289,38 @@ vn 0.0000 1.0000 0.0000 vn 0.0000 0.8944 0.4472 vn 0.0000 0.0000 -1.0000 s off -f 62/106/59 63/107/59 61/108/59 -f 61/108/60 73/109/60 71/110/60 -f 67/111/61 70/112/61 65/113/61 -f 66/114/62 69/115/62 68/116/62 -f 73/109/63 72/117/63 71/110/63 -f 70/112/63 75/118/63 65/113/63 -f 72/119/62 76/120/62 71/121/62 -f 67/122/64 76/120/64 70/112/64 -f 66/114/63 78/123/63 69/115/63 -f 78/123/61 74/124/61 73/125/61 -f 69/115/64 73/126/64 68/127/64 -f 64/128/65 72/129/65 74/130/65 -f 62/106/59 64/131/59 63/107/59 -f 67/132/60 62/133/60 71/110/60 -f 62/133/60 61/108/60 71/110/60 -f 61/108/60 68/116/60 73/109/60 -f 65/113/61 64/128/61 67/111/61 -f 64/128/61 62/134/61 67/111/61 -f 68/116/62 61/108/62 63/107/62 -f 63/107/62 66/114/62 68/116/62 -f 73/109/63 74/135/63 72/117/63 -f 70/112/63 76/120/63 75/118/63 -f 72/119/62 75/118/62 76/120/62 -f 67/122/64 71/136/64 76/120/64 -f 66/114/63 77/137/63 78/123/63 -f 78/123/61 77/137/61 74/124/61 -f 69/115/64 78/123/64 73/126/64 -f 66/114/65 63/107/65 74/130/65 -f 63/107/65 64/128/65 74/130/65 -f 64/128/65 65/113/65 72/129/65 -f 65/113/65 75/138/65 72/129/65 -f 74/130/65 77/139/65 66/114/65 +f 476/814/159 477/815/159 475/816/159 +f 475/816/160 487/817/160 485/818/160 +f 481/819/161 484/820/161 479/821/161 +f 480/822/162 483/823/162 482/824/162 +f 487/817/163 486/825/163 485/818/163 +f 484/820/163 489/826/163 479/821/163 +f 486/827/162 490/828/162 485/829/162 +f 481/830/164 490/828/164 484/820/164 +f 480/822/163 492/831/163 483/823/163 +f 492/831/161 488/832/161 487/833/161 +f 483/823/164 487/834/164 482/835/164 +f 478/836/165 486/837/165 488/838/165 +f 476/814/159 478/839/159 477/815/159 +f 481/840/160 476/841/160 485/818/160 +f 476/841/160 475/816/160 485/818/160 +f 475/816/160 482/824/160 487/817/160 +f 479/821/161 478/836/161 481/819/161 +f 478/836/161 476/842/161 481/819/161 +f 482/824/162 475/816/162 477/815/162 +f 477/815/162 480/822/162 482/824/162 +f 487/817/163 488/843/163 486/825/163 +f 484/820/163 490/828/163 489/826/163 +f 486/827/162 489/826/162 490/828/162 +f 481/830/164 485/844/164 490/828/164 +f 480/822/163 491/845/163 492/831/163 +f 492/831/161 491/845/161 488/832/161 +f 483/823/164 492/831/164 487/834/164 +f 480/822/165 477/815/165 488/838/165 +f 477/815/165 478/836/165 488/838/165 +f 478/836/165 479/821/165 486/837/165 +f 479/821/165 489/846/165 486/837/165 +f 488/838/165 491/847/165 480/822/165 o StockFront v 0.750000 0.000000 -2.500000 v 0.750000 0.000000 -5.500000 @@ -588,99 +2487,99 @@ vn 0.0000 -0.7071 0.7071 vn 0.0000 -1.0000 0.0000 vn 0.0000 -0.7071 -0.7071 s off -f 80/140/66 87/141/66 84/142/66 -f 86/143/66 87/141/66 80/140/66 -f 91/144/67 90/145/67 88/146/67 -f 92/147/67 96/148/67 95/149/67 -f 84/150/68 89/151/68 83/152/68 -f 87/141/69 88/153/69 84/142/69 -f 83/152/70 90/154/70 82/155/70 -f 79/156/71 94/157/71 85/158/71 -f 82/155/72 91/159/72 81/160/72 -f 85/161/73 95/149/73 86/143/73 -f 81/162/71 92/147/71 80/163/71 -f 80/140/70 93/164/70 79/156/70 -f 86/143/74 96/148/74 87/141/74 -f 98/165/66 105/166/66 102/167/66 -f 104/168/66 105/166/66 98/165/66 -f 109/169/67 108/170/67 106/171/67 -f 110/172/67 114/173/67 113/174/67 -f 102/175/68 107/176/68 101/177/68 -f 105/166/69 106/178/69 102/167/69 -f 101/177/70 108/179/70 100/180/70 -f 97/181/71 112/182/71 103/183/71 -f 100/180/72 109/184/72 99/185/72 -f 103/186/73 113/174/73 104/168/73 -f 99/187/71 110/172/71 98/188/71 -f 98/165/70 111/189/70 97/181/70 -f 104/168/74 114/173/74 105/166/74 -f 128/190/66 124/191/66 120/192/66 -f 125/193/67 127/194/67 129/195/67 -f 84/142/66 83/152/66 82/155/66 -f 82/155/66 81/196/66 84/142/66 -f 81/196/66 80/140/66 84/142/66 -f 80/140/66 79/156/66 86/143/66 -f 79/156/66 85/158/66 86/143/66 -f 90/145/67 89/197/67 88/146/67 -f 88/146/67 96/148/67 92/147/67 -f 92/147/67 91/144/67 88/146/67 -f 94/198/67 93/199/67 95/149/67 -f 93/199/67 92/147/67 95/149/67 -f 84/150/68 88/200/68 89/151/68 -f 87/141/69 96/201/69 88/153/69 -f 83/152/70 89/151/70 90/154/70 -f 79/156/71 93/202/71 94/157/71 -f 82/155/72 90/154/72 91/159/72 -f 85/161/73 94/203/73 95/149/73 -f 81/162/71 91/144/71 92/147/71 -f 80/140/70 92/204/70 93/164/70 -f 86/143/74 95/149/74 96/148/74 -f 102/167/66 101/177/66 100/180/66 -f 100/180/66 99/205/66 102/167/66 -f 99/205/66 98/165/66 102/167/66 -f 98/165/66 97/181/66 104/168/66 -f 97/181/66 103/183/66 104/168/66 -f 108/170/67 107/206/67 106/171/67 -f 106/171/67 114/173/67 110/172/67 -f 110/172/67 109/169/67 106/171/67 -f 112/207/67 111/208/67 113/174/67 -f 111/208/67 110/172/67 113/174/67 -f 102/175/68 106/209/68 107/176/68 -f 105/166/69 114/210/69 106/178/69 -f 101/177/70 107/176/70 108/179/70 -f 97/181/71 111/211/71 112/182/71 -f 100/180/72 108/179/72 109/184/72 -f 103/186/73 112/212/73 113/174/73 -f 99/187/71 109/169/71 110/172/71 -f 98/165/70 110/213/70 111/189/70 -f 104/168/74 113/174/74 114/173/74 -f 120/192/66 118/214/66 116/215/66 -f 116/215/66 130/216/66 128/190/66 -f 128/190/66 126/217/66 124/191/66 -f 124/191/66 122/218/66 120/192/66 -f 120/192/66 116/215/66 128/190/66 -f 129/195/67 115/219/67 117/220/67 -f 117/220/67 119/221/67 129/195/67 -f 119/221/67 121/222/67 129/195/67 -f 121/222/67 123/223/67 129/195/67 -f 123/223/67 125/193/67 129/195/67 +f 494/848/166 501/849/166 498/850/166 +f 500/851/166 501/849/166 494/848/166 +f 505/852/167 504/853/167 502/854/167 +f 506/855/167 510/856/167 509/857/167 +f 498/858/168 503/859/168 497/860/168 +f 501/849/169 502/861/169 498/850/169 +f 497/860/170 504/862/170 496/863/170 +f 493/864/171 508/865/171 499/866/171 +f 496/863/172 505/867/172 495/868/172 +f 499/869/173 509/857/173 500/851/173 +f 495/870/171 506/855/171 494/871/171 +f 494/848/170 507/872/170 493/864/170 +f 500/851/174 510/856/174 501/849/174 +f 512/873/166 519/874/166 516/875/166 +f 518/876/166 519/874/166 512/873/166 +f 523/877/167 522/878/167 520/879/167 +f 524/880/167 528/881/167 527/882/167 +f 516/883/168 521/884/168 515/885/168 +f 519/874/169 520/886/169 516/875/169 +f 515/885/170 522/887/170 514/888/170 +f 511/889/171 526/890/171 517/891/171 +f 514/888/172 523/892/172 513/893/172 +f 517/894/173 527/882/173 518/876/173 +f 513/895/171 524/880/171 512/896/171 +f 512/873/170 525/897/170 511/889/170 +f 518/876/174 528/881/174 519/874/174 +f 542/898/166 538/899/166 534/900/166 +f 539/901/167 541/902/167 543/903/167 +f 498/850/166 497/860/166 496/863/166 +f 496/863/166 495/904/166 498/850/166 +f 495/904/166 494/848/166 498/850/166 +f 494/848/166 493/864/166 500/851/166 +f 493/864/166 499/866/166 500/851/166 +f 504/853/167 503/905/167 502/854/167 +f 502/854/167 510/856/167 506/855/167 +f 506/855/167 505/852/167 502/854/167 +f 508/906/167 507/907/167 509/857/167 +f 507/907/167 506/855/167 509/857/167 +f 498/858/168 502/908/168 503/859/168 +f 501/849/169 510/909/169 502/861/169 +f 497/860/170 503/859/170 504/862/170 +f 493/864/171 507/910/171 508/865/171 +f 496/863/172 504/862/172 505/867/172 +f 499/869/173 508/911/173 509/857/173 +f 495/870/171 505/852/171 506/855/171 +f 494/848/170 506/912/170 507/872/170 +f 500/851/174 509/857/174 510/856/174 +f 516/875/166 515/885/166 514/888/166 +f 514/888/166 513/913/166 516/875/166 +f 513/913/166 512/873/166 516/875/166 +f 512/873/166 511/889/166 518/876/166 +f 511/889/166 517/891/166 518/876/166 +f 522/878/167 521/914/167 520/879/167 +f 520/879/167 528/881/167 524/880/167 +f 524/880/167 523/877/167 520/879/167 +f 526/915/167 525/916/167 527/882/167 +f 525/916/167 524/880/167 527/882/167 +f 516/883/168 520/917/168 521/884/168 +f 519/874/169 528/918/169 520/886/169 +f 515/885/170 521/884/170 522/887/170 +f 511/889/171 525/919/171 526/890/171 +f 514/888/172 522/887/172 523/892/172 +f 517/894/173 526/920/173 527/882/173 +f 513/895/171 523/877/171 524/880/171 +f 512/873/170 524/921/170 525/897/170 +f 518/876/174 527/882/174 528/881/174 +f 534/900/166 532/922/166 530/923/166 +f 530/923/166 544/924/166 542/898/166 +f 542/898/166 540/925/166 538/899/166 +f 538/899/166 536/926/166 534/900/166 +f 534/900/166 530/923/166 542/898/166 +f 543/903/167 529/927/167 531/928/167 +f 531/928/167 533/929/167 543/903/167 +f 533/929/167 535/930/167 543/903/167 +f 535/930/167 537/931/167 543/903/167 +f 537/931/167 539/901/167 543/903/167 s 1 -f 116/224/69 117/225/75 115/226/69 -f 118/227/75 119/228/74 117/225/75 -f 120/229/74 121/230/73 119/231/74 -f 122/232/73 123/233/71 121/230/73 -f 124/234/71 125/235/72 123/233/71 -f 126/236/72 127/237/70 125/235/72 -f 128/238/70 129/239/68 127/237/70 -f 130/240/68 115/226/69 129/239/68 -f 116/224/69 118/227/75 117/225/75 -f 118/227/75 120/241/74 119/228/74 -f 120/229/74 122/232/73 121/230/73 -f 122/232/73 124/234/71 123/233/71 -f 124/234/71 126/236/72 125/235/72 -f 126/236/72 128/238/70 127/237/70 -f 128/238/70 130/240/68 129/239/68 -f 130/240/68 116/224/69 115/226/69 +f 530/932/169 531/933/175 529/934/169 +f 532/935/175 533/936/174 531/933/175 +f 534/937/174 535/938/173 533/939/174 +f 536/940/173 537/941/171 535/938/173 +f 538/942/171 539/943/172 537/941/171 +f 540/944/172 541/945/170 539/943/172 +f 542/946/170 543/947/168 541/945/170 +f 544/948/168 529/934/169 543/947/168 +f 530/932/169 532/935/175 531/933/175 +f 532/935/175 534/949/174 533/936/174 +f 534/937/174 536/940/173 535/938/173 +f 536/940/173 538/942/171 537/941/171 +f 538/942/171 540/944/172 539/943/172 +f 540/944/172 542/946/170 541/945/170 +f 542/946/170 544/948/168 543/947/168 +f 544/948/168 530/932/169 529/934/169 o StockBack v 0.500000 0.000000 -2.500000 v 0.500000 0.000000 -6.000000 @@ -795,58 +2694,58 @@ vn 0.0000 0.7071 -0.7071 vn 0.0000 -0.1789 -0.9839 vn 0.0000 -0.7071 0.7071 s off -f 133/242/76 131/243/76 134/244/76 -f 138/245/77 136/246/77 137/247/77 -f 131/248/78 137/247/78 134/244/78 -f 132/249/79 138/250/79 131/243/79 -f 134/244/80 136/246/80 133/242/80 -f 140/251/78 141/252/78 139/253/78 -f 147/254/80 139/253/80 141/252/80 -f 139/253/76 144/255/76 140/251/76 -f 142/256/77 145/257/77 141/252/77 -f 143/258/81 148/259/81 144/255/81 -f 148/260/82 145/257/82 146/261/82 -f 148/262/79 142/256/79 140/251/79 -f 150/263/83 151/264/83 149/265/83 -f 151/264/80 153/266/80 149/265/80 -f 150/263/79 156/267/79 152/268/79 -f 156/269/81 153/266/81 154/270/81 -f 159/271/76 157/272/76 160/273/76 -f 164/274/77 162/275/77 163/276/77 -f 157/277/78 163/276/78 160/273/78 -f 158/278/79 164/279/79 157/272/79 -f 160/273/80 162/275/80 159/271/80 -f 166/280/83 167/281/83 165/282/83 -f 167/281/80 169/283/80 165/282/80 -f 166/280/79 172/284/79 168/285/79 -f 172/286/81 169/283/81 170/287/81 -f 133/242/76 132/249/76 131/243/76 -f 138/245/77 135/288/77 136/246/77 -f 131/248/78 138/289/78 137/247/78 -f 132/249/79 135/290/79 138/250/79 -f 134/244/80 137/247/80 136/246/80 -f 140/251/78 142/256/78 141/252/78 -f 141/252/80 145/291/80 147/254/80 -f 147/254/80 143/292/80 139/253/80 -f 139/253/76 143/258/76 144/255/76 -f 142/256/77 146/261/77 145/257/77 -f 143/258/81 147/293/81 148/259/81 -f 148/260/82 147/294/82 145/257/82 -f 140/251/79 144/295/79 148/262/79 -f 148/262/79 146/296/79 142/256/79 -f 150/263/83 152/268/83 151/264/83 -f 151/264/80 154/270/80 153/266/80 -f 150/263/79 155/297/79 156/267/79 -f 156/269/81 155/298/81 153/266/81 -f 159/271/76 158/278/76 157/272/76 -f 164/274/77 161/299/77 162/275/77 -f 157/277/78 164/300/78 163/276/78 -f 158/278/79 161/301/79 164/279/79 -f 160/273/80 163/276/80 162/275/80 -f 166/280/83 168/285/83 167/281/83 -f 167/281/80 170/287/80 169/283/80 -f 166/280/79 171/302/79 172/284/79 -f 172/286/81 171/303/81 169/283/81 +f 547/950/176 545/951/176 548/952/176 +f 552/953/177 550/954/177 551/955/177 +f 545/956/178 551/955/178 548/952/178 +f 546/957/179 552/958/179 545/951/179 +f 548/952/180 550/954/180 547/950/180 +f 554/959/178 555/960/178 553/961/178 +f 561/962/180 553/961/180 555/960/180 +f 553/961/176 558/963/176 554/959/176 +f 556/964/177 559/965/177 555/960/177 +f 557/966/181 562/967/181 558/963/181 +f 562/968/182 559/965/182 560/969/182 +f 562/970/179 556/964/179 554/959/179 +f 564/971/183 565/972/183 563/973/183 +f 565/972/180 567/974/180 563/973/180 +f 564/971/179 570/975/179 566/976/179 +f 570/977/181 567/974/181 568/978/181 +f 573/979/176 571/980/176 574/981/176 +f 578/982/177 576/983/177 577/984/177 +f 571/985/178 577/984/178 574/981/178 +f 572/986/179 578/987/179 571/980/179 +f 574/981/180 576/983/180 573/979/180 +f 580/988/183 581/989/183 579/990/183 +f 581/989/180 583/991/180 579/990/180 +f 580/988/179 586/992/179 582/993/179 +f 586/994/181 583/991/181 584/995/181 +f 547/950/176 546/957/176 545/951/176 +f 552/953/177 549/996/177 550/954/177 +f 545/956/178 552/997/178 551/955/178 +f 546/957/179 549/998/179 552/958/179 +f 548/952/180 551/955/180 550/954/180 +f 554/959/178 556/964/178 555/960/178 +f 555/960/180 559/999/180 561/962/180 +f 561/962/180 557/1000/180 553/961/180 +f 553/961/176 557/966/176 558/963/176 +f 556/964/177 560/969/177 559/965/177 +f 557/966/181 561/1001/181 562/967/181 +f 562/968/182 561/1002/182 559/965/182 +f 554/959/179 558/1003/179 562/970/179 +f 562/970/179 560/1004/179 556/964/179 +f 564/971/183 566/976/183 565/972/183 +f 565/972/180 568/978/180 567/974/180 +f 564/971/179 569/1005/179 570/975/179 +f 570/977/181 569/1006/181 567/974/181 +f 573/979/176 572/986/176 571/980/176 +f 578/982/177 575/1007/177 576/983/177 +f 571/985/178 578/1008/178 577/984/178 +f 572/986/179 575/1009/179 578/987/179 +f 574/981/180 577/984/180 576/983/180 +f 580/988/183 582/993/183 581/989/183 +f 581/989/180 584/995/180 583/991/180 +f 580/988/179 585/1010/179 586/992/179 +f 586/994/181 585/1011/181 583/991/181 o Silencer v 0.000000 1.500000 6.375000 v -0.375000 1.399519 6.375000 @@ -1009,99 +2908,99 @@ vn -0.5000 0.8660 0.0000 vn 0.0000 1.0000 0.0000 vn 0.8660 -0.5000 0.0000 s off -f 177/304/84 175/305/84 183/306/84 -f 195/307/85 208/308/85 207/309/85 -f 185/310/85 198/311/85 186/312/85 -f 193/313/85 204/314/85 192/315/85 -f 190/316/85 201/317/85 189/318/85 -f 196/319/85 198/320/85 208/321/85 -f 185/310/85 199/322/85 197/323/85 -f 194/324/85 205/325/85 193/313/85 -f 191/326/85 202/327/85 190/316/85 -f 188/328/85 199/329/85 187/330/85 -f 195/307/85 206/331/85 194/324/85 -f 191/332/85 204/333/85 203/334/85 -f 189/318/85 200/335/85 188/328/85 -f 219/336/85 210/337/85 213/338/85 -f 175/305/84 174/339/84 183/306/84 -f 174/339/84 173/340/84 183/306/84 -f 173/340/84 184/341/84 183/306/84 -f 183/306/84 182/342/84 181/343/84 -f 181/343/84 180/344/84 179/345/84 -f 179/345/84 178/346/84 177/304/84 -f 177/304/84 176/347/84 175/305/84 -f 183/306/84 181/343/84 179/345/84 -f 179/345/84 177/304/84 183/306/84 -f 195/307/85 196/319/85 208/308/85 -f 185/310/85 197/348/85 198/311/85 -f 193/313/85 205/349/85 204/314/85 -f 190/316/85 202/350/85 201/317/85 -f 196/319/85 186/312/85 198/320/85 -f 185/310/85 187/330/85 199/322/85 -f 194/324/85 206/351/85 205/325/85 -f 191/326/85 203/352/85 202/327/85 -f 188/328/85 200/353/85 199/329/85 -f 195/307/85 207/354/85 206/331/85 -f 191/332/85 192/315/85 204/333/85 -f 189/318/85 201/355/85 200/335/85 -f 210/337/85 209/356/85 213/338/85 -f 209/356/85 211/357/85 213/338/85 -f 211/357/85 212/358/85 213/338/85 -f 213/338/85 214/359/85 217/360/85 -f 214/359/85 215/361/85 217/360/85 -f 215/361/85 216/362/85 217/360/85 -f 217/360/85 218/363/85 219/336/85 -f 219/336/85 220/364/85 210/337/85 -f 217/360/85 219/336/85 213/338/85 +f 591/1012/184 589/1013/184 597/1014/184 +f 609/1015/185 622/1016/185 621/1017/185 +f 599/1018/185 612/1019/185 600/1020/185 +f 607/1021/185 618/1022/185 606/1023/185 +f 604/1024/185 615/1025/185 603/1026/185 +f 610/1027/185 612/1028/185 622/1029/185 +f 599/1018/185 613/1030/185 611/1031/185 +f 608/1032/185 619/1033/185 607/1021/185 +f 605/1034/185 616/1035/185 604/1024/185 +f 602/1036/185 613/1037/185 601/1038/185 +f 609/1015/185 620/1039/185 608/1032/185 +f 605/1040/185 618/1041/185 617/1042/185 +f 603/1026/185 614/1043/185 602/1036/185 +f 633/1044/185 624/1045/185 627/1046/185 +f 589/1013/184 588/1047/184 597/1014/184 +f 588/1047/184 587/1048/184 597/1014/184 +f 587/1048/184 598/1049/184 597/1014/184 +f 597/1014/184 596/1050/184 595/1051/184 +f 595/1051/184 594/1052/184 593/1053/184 +f 593/1053/184 592/1054/184 591/1012/184 +f 591/1012/184 590/1055/184 589/1013/184 +f 597/1014/184 595/1051/184 593/1053/184 +f 593/1053/184 591/1012/184 597/1014/184 +f 609/1015/185 610/1027/185 622/1016/185 +f 599/1018/185 611/1056/185 612/1019/185 +f 607/1021/185 619/1057/185 618/1022/185 +f 604/1024/185 616/1058/185 615/1025/185 +f 610/1027/185 600/1020/185 612/1028/185 +f 599/1018/185 601/1038/185 613/1030/185 +f 608/1032/185 620/1059/185 619/1033/185 +f 605/1034/185 617/1060/185 616/1035/185 +f 602/1036/185 614/1061/185 613/1037/185 +f 609/1015/185 621/1062/185 620/1039/185 +f 605/1040/185 606/1023/185 618/1041/185 +f 603/1026/185 615/1063/185 614/1043/185 +f 624/1045/185 623/1064/185 627/1046/185 +f 623/1064/185 625/1065/185 627/1046/185 +f 625/1065/185 626/1066/185 627/1046/185 +f 627/1046/185 628/1067/185 631/1068/185 +f 628/1067/185 629/1069/185 631/1068/185 +f 629/1069/185 630/1070/185 631/1068/185 +f 631/1068/185 632/1071/185 633/1044/185 +f 633/1044/185 634/1072/185 624/1045/185 +f 631/1068/185 633/1044/185 627/1046/185 s 1 -f 179/365/86 190/316/87 178/366/87 -f 176/367/88 187/330/89 175/368/89 -f 183/369/90 194/324/91 182/370/91 -f 180/371/92 191/332/86 179/372/86 -f 177/373/93 188/328/88 176/367/88 -f 184/374/94 195/307/90 183/369/90 -f 174/375/95 186/312/96 173/376/96 -f 181/377/97 192/315/92 180/371/92 -f 178/366/87 189/318/93 177/373/93 -f 173/376/96 196/319/94 184/374/94 -f 175/368/89 185/310/95 174/375/95 -f 182/370/91 193/313/97 181/377/97 -f 200/335/91 213/378/90 212/379/91 -f 208/308/87 219/380/93 207/309/93 -f 198/311/86 209/381/92 210/382/86 -f 205/349/89 216/383/95 204/314/95 -f 201/317/90 214/384/94 213/385/90 -f 198/320/86 220/386/87 208/321/87 -f 197/323/92 211/387/97 209/388/92 -f 206/351/88 217/389/89 205/325/89 -f 202/327/94 215/390/96 214/391/94 -f 199/329/97 212/392/91 211/393/97 -f 207/354/93 218/394/88 206/331/88 -f 204/333/95 215/395/96 203/334/96 -f 179/365/86 191/326/86 190/316/87 -f 176/367/88 188/328/88 187/330/89 -f 183/369/90 195/307/90 194/324/91 -f 180/371/92 192/315/92 191/332/86 -f 177/373/93 189/318/93 188/328/88 -f 184/374/94 196/319/94 195/307/90 -f 174/375/95 185/310/95 186/312/96 -f 181/377/97 193/313/97 192/315/92 -f 178/366/87 190/316/87 189/318/93 -f 173/376/96 186/312/96 196/319/94 -f 175/368/89 187/330/89 185/310/95 -f 182/370/91 194/324/91 193/313/97 -f 200/335/91 201/355/90 213/378/90 -f 208/308/87 220/396/87 219/380/93 -f 198/311/86 197/348/92 209/381/92 -f 205/349/89 217/397/89 216/383/95 -f 201/317/90 202/350/94 214/384/94 -f 198/320/86 210/398/86 220/386/87 -f 197/323/92 199/322/97 211/387/97 -f 206/351/88 218/399/88 217/389/89 -f 202/327/94 203/352/96 215/390/96 -f 199/329/97 200/353/91 212/392/91 -f 207/354/93 219/400/93 218/394/88 -f 204/333/95 216/401/95 215/395/96 +f 593/1073/186 604/1024/187 592/1074/187 +f 590/1075/188 601/1038/189 589/1076/189 +f 597/1077/190 608/1032/191 596/1078/191 +f 594/1079/192 605/1040/186 593/1080/186 +f 591/1081/193 602/1036/188 590/1075/188 +f 598/1082/194 609/1015/190 597/1077/190 +f 588/1083/195 600/1020/196 587/1084/196 +f 595/1085/197 606/1023/192 594/1079/192 +f 592/1074/187 603/1026/193 591/1081/193 +f 587/1084/196 610/1027/194 598/1082/194 +f 589/1076/189 599/1018/195 588/1083/195 +f 596/1078/191 607/1021/197 595/1085/197 +f 614/1043/191 627/1086/190 626/1087/191 +f 622/1016/187 633/1088/193 621/1017/193 +f 612/1019/186 623/1089/192 624/1090/186 +f 619/1057/189 630/1091/195 618/1022/195 +f 615/1025/190 628/1092/194 627/1093/190 +f 612/1028/186 634/1094/187 622/1029/187 +f 611/1031/192 625/1095/197 623/1096/192 +f 620/1059/188 631/1097/189 619/1033/189 +f 616/1035/194 629/1098/196 628/1099/194 +f 613/1037/197 626/1100/191 625/1101/197 +f 621/1062/193 632/1102/188 620/1039/188 +f 618/1041/195 629/1103/196 617/1042/196 +f 593/1073/186 605/1034/186 604/1024/187 +f 590/1075/188 602/1036/188 601/1038/189 +f 597/1077/190 609/1015/190 608/1032/191 +f 594/1079/192 606/1023/192 605/1040/186 +f 591/1081/193 603/1026/193 602/1036/188 +f 598/1082/194 610/1027/194 609/1015/190 +f 588/1083/195 599/1018/195 600/1020/196 +f 595/1085/197 607/1021/197 606/1023/192 +f 592/1074/187 604/1024/187 603/1026/193 +f 587/1084/196 600/1020/196 610/1027/194 +f 589/1076/189 601/1038/189 599/1018/195 +f 596/1078/191 608/1032/191 607/1021/197 +f 614/1043/191 615/1063/190 627/1086/190 +f 622/1016/187 634/1104/187 633/1088/193 +f 612/1019/186 611/1056/192 623/1089/192 +f 619/1057/189 631/1105/189 630/1091/195 +f 615/1025/190 616/1058/194 628/1092/194 +f 612/1028/186 624/1106/186 634/1094/187 +f 611/1031/192 613/1030/197 625/1095/197 +f 620/1059/188 632/1107/188 631/1097/189 +f 616/1035/194 617/1060/196 629/1098/196 +f 613/1037/197 614/1061/191 626/1100/191 +f 621/1062/193 633/1108/193 632/1102/188 +f 618/1041/195 630/1109/195 629/1103/196 o Gun v -0.750000 0.000000 3.250000 v 0.750000 0.000000 3.250000 @@ -2326,678 +4225,678 @@ vn 0.0000 0.7071 0.7071 vn 0.0000 0.7071 -0.7071 vn 0.9239 0.0000 -0.3827 s off -f 223/402/98 222/403/98 221/404/98 -f 224/405/99 226/406/99 222/403/99 -f 223/407/100 228/408/100 224/409/100 -f 221/410/101 327/411/101 225/412/101 -f 242/413/102 253/414/102 241/415/102 -f 249/416/102 260/417/102 248/418/102 -f 246/419/102 257/420/102 245/421/102 -f 252/422/102 253/423/102 264/424/102 -f 242/413/102 255/425/102 254/426/102 -f 249/416/102 262/427/102 261/428/102 -f 246/419/102 259/429/102 258/430/102 -f 243/431/102 256/432/102 255/433/102 -f 251/434/102 262/435/102 250/436/102 -f 247/437/102 260/438/102 259/439/102 -f 245/421/102 256/440/102 244/441/102 -f 252/422/102 263/442/102 251/434/102 -f 269/443/102 280/444/102 268/445/102 -f 276/446/102 287/447/102 275/448/102 -f 266/449/102 277/450/102 265/451/102 -f 273/452/102 284/453/102 272/454/102 -f 269/443/102 282/455/102 281/456/102 -f 276/446/102 277/450/102 288/457/102 -f 267/458/102 278/459/102 266/449/102 -f 274/460/102 285/461/102 273/452/102 -f 270/462/102 283/463/102 282/455/102 -f 268/445/102 279/464/102 267/458/102 -f 275/448/102 286/465/102 274/460/102 -f 271/466/102 284/453/102 283/467/102 -f 299/468/102 289/469/102 293/470/102 -f 303/471/98 302/472/98 301/473/98 -f 307/474/103 305/475/103 306/476/103 -f 303/477/100 308/478/100 304/479/100 -f 302/480/102 306/476/102 301/481/102 -f 304/482/99 307/474/99 302/472/99 -f 301/483/104 305/475/104 303/484/104 -f 311/485/103 309/486/103 310/487/103 -f 309/486/100 312/488/100 320/489/100 -f 328/490/99 330/491/99 326/492/99 -f 226/406/105 326/492/105 222/403/105 -f 225/412/103 328/493/103 226/406/103 -f 222/403/98 325/494/98 221/404/98 -f 330/495/102 331/496/102 329/497/102 -f 326/498/98 329/499/98 325/494/98 -f 325/500/104 331/501/104 327/411/104 -f 327/502/103 332/503/103 328/493/103 -f 310/487/103 323/504/103 311/485/103 -f 337/505/102 340/506/102 336/507/102 -f 324/508/103 340/506/103 323/504/103 -f 348/509/99 343/510/99 344/511/99 -f 406/512/104 345/513/104 408/514/104 -f 405/515/104 346/516/104 342/517/104 -f 356/518/99 351/519/99 352/520/99 -f 349/521/104 354/522/104 350/523/104 -f 373/524/104 374/525/104 376/526/104 -f 363/527/99 367/528/99 371/529/99 -f 382/530/104 381/531/104 379/532/104 -f 388/533/99 398/534/99 392/535/99 -f 402/536/104 227/537/104 223/538/104 -f 221/410/104 402/536/104 223/538/104 -f 225/412/104 403/539/104 221/410/104 -f 404/540/100 411/541/100 403/542/100 -f 403/543/103 410/544/103 402/545/103 -f 402/546/102 409/547/102 401/548/102 -f 408/549/100 416/550/100 406/551/100 -f 405/552/102 417/553/102 407/554/102 -f 415/555/104 418/556/104 417/553/104 -f 417/557/103 346/516/103 407/558/103 -f 412/559/103 404/560/103 225/412/103 -f 424/561/98 434/562/98 421/563/98 -f 410/544/104 412/564/104 409/547/104 -f 450/565/99 456/566/99 452/567/99 -f 451/568/104 453/569/104 449/570/104 -f 455/571/104 459/572/104 453/569/104 -f 460/573/99 456/574/99 454/575/99 -f 460/573/99 462/576/99 458/577/99 -f 457/578/104 463/579/104 459/572/104 -f 461/580/104 467/581/104 463/579/104 -f 462/576/99 468/582/99 466/583/99 -f 472/584/100 475/585/100 471/586/100 -f 469/587/102 474/588/102 470/589/102 -f 470/589/99 476/590/99 472/584/99 -f 471/586/104 473/591/104 469/592/104 -f 473/593/106 478/594/106 474/588/106 -f 478/595/107 475/585/107 476/590/107 -f 473/591/104 475/585/104 477/596/104 -f 474/588/99 478/594/99 476/590/99 -f 348/509/103 418/597/103 347/598/103 -f 418/597/103 345/513/103 347/598/103 -f 485/599/103 483/600/103 484/601/103 -f 481/602/100 486/603/100 482/604/100 -f 480/605/102 484/601/102 479/606/102 -f 499/607/103 501/608/103 495/609/103 -f 519/610/104 526/611/104 520/612/104 -f 509/613/103 507/614/103 508/615/103 -f 505/616/100 510/617/100 506/618/100 -f 504/619/102 508/615/102 503/620/102 -f 506/618/99 509/613/99 504/619/99 -f 503/621/104 507/622/104 505/616/104 -f 517/623/103 515/624/103 516/625/103 -f 523/626/103 526/611/103 525/627/103 -f 531/628/103 534/629/103 533/630/103 -f 513/631/100 518/632/100 514/633/100 -f 512/634/102 516/625/102 511/635/102 -f 521/636/102 525/627/102 519/610/102 -f 529/637/102 533/638/102 527/639/102 -f 520/612/100 524/640/100 522/641/100 -f 528/642/100 532/643/100 530/644/100 -f 531/628/99 530/644/99 532/643/99 -f 546/645/100 561/646/100 543/647/100 -f 542/648/100 557/649/100 546/645/100 -f 561/646/100 539/650/100 543/647/100 -f 559/651/102 545/652/102 544/653/102 -f 559/651/102 540/654/102 547/655/102 -f 555/656/102 541/657/102 545/652/102 -f 551/658/102 540/654/102 535/659/102 -f 541/657/102 552/660/102 536/661/102 -f 556/662/102 560/663/102 535/659/102 -f 539/650/100 553/664/100 537/665/100 -f 554/666/100 542/648/100 538/667/100 -f 562/668/100 558/669/100 538/667/100 -f 563/670/104 565/671/104 571/672/104 -f 566/673/99 564/674/99 573/675/99 -f 588/676/99 584/677/99 580/678/99 -f 587/679/104 589/680/104 581/681/104 -f 607/682/104 608/683/104 610/684/104 -f 597/685/99 601/686/99 605/687/99 -f 616/688/104 615/689/104 613/690/104 -f 622/691/99 632/692/99 626/693/99 -f 223/402/98 224/405/98 222/403/98 -f 224/405/99 228/408/99 226/406/99 -f 223/407/100 227/537/100 228/408/100 -f 221/410/101 325/500/101 327/411/101 -f 242/413/102 254/694/102 253/414/102 -f 249/416/102 261/695/102 260/417/102 -f 246/419/102 258/696/102 257/420/102 -f 252/422/102 241/415/102 253/423/102 -f 242/413/102 243/431/102 255/425/102 -f 249/416/102 250/436/102 262/427/102 -f 246/419/102 247/697/102 259/429/102 -f 243/431/102 244/441/102 256/432/102 -f 251/434/102 263/698/102 262/435/102 -f 247/437/102 248/418/102 260/438/102 -f 245/421/102 257/699/102 256/440/102 -f 252/422/102 264/700/102 263/442/102 -f 269/443/102 281/456/102 280/444/102 -f 276/446/102 288/457/102 287/447/102 -f 266/449/102 278/459/102 277/450/102 -f 273/452/102 285/461/102 284/453/102 -f 269/443/102 270/462/102 282/455/102 -f 276/446/102 265/451/102 277/450/102 -f 267/458/102 279/464/102 278/459/102 -f 274/460/102 286/465/102 285/461/102 -f 270/462/102 271/701/102 283/463/102 -f 268/445/102 280/444/102 279/464/102 -f 275/448/102 287/447/102 286/465/102 -f 271/466/102 272/454/102 284/453/102 -f 289/469/102 290/702/102 293/470/102 -f 290/702/102 291/703/102 293/470/102 -f 291/703/102 292/704/102 293/470/102 -f 293/470/102 294/705/102 297/706/102 -f 294/705/102 295/707/102 297/706/102 -f 295/707/102 296/708/102 297/706/102 -f 297/706/102 298/709/102 299/468/102 -f 299/468/102 300/710/102 289/469/102 -f 297/706/102 299/468/102 293/470/102 -f 303/471/98 304/482/98 302/472/98 -f 307/474/103 308/478/103 305/475/103 -f 303/477/100 305/475/100 308/478/100 -f 302/480/102 307/474/102 306/476/102 -f 304/482/99 308/478/99 307/474/99 -f 301/483/104 306/476/104 305/475/104 -f 311/485/103 312/488/103 309/486/103 -f 312/488/100 319/711/100 320/489/100 -f 320/489/100 317/712/100 309/486/100 -f 317/712/100 318/713/100 309/486/100 -f 328/490/99 332/714/99 330/491/99 -f 226/406/105 328/490/105 326/492/105 -f 225/412/103 327/502/103 328/493/103 -f 222/403/98 326/498/98 325/494/98 -f 330/495/102 332/503/102 331/496/102 -f 326/498/98 330/715/98 329/499/98 -f 325/500/104 329/716/104 331/501/104 -f 327/502/103 331/496/103 332/503/103 -f 310/487/103 324/508/103 323/504/103 -f 336/507/102 335/717/102 337/505/102 -f 335/717/102 339/718/102 337/505/102 -f 339/718/102 338/719/102 337/505/102 -f 324/508/103 336/507/103 340/506/103 -f 348/509/99 347/598/99 343/510/99 -f 406/512/104 341/720/104 345/513/104 -f 405/515/104 407/558/104 346/516/104 -f 356/518/99 355/721/99 351/519/99 -f 349/521/104 353/722/104 354/522/104 -f 374/525/104 375/723/104 376/526/104 -f 376/526/104 357/724/104 358/725/104 -f 358/725/104 359/726/104 376/526/104 -f 359/726/104 360/727/104 361/728/104 -f 376/526/104 359/726/104 372/729/104 -f 361/728/104 362/730/104 359/726/104 -f 362/730/104 372/729/104 359/726/104 -f 372/729/104 373/524/104 376/526/104 -f 363/527/99 364/731/99 365/732/99 -f 365/732/99 366/733/99 363/527/99 -f 366/733/99 367/528/99 363/527/99 -f 367/528/99 368/734/99 371/529/99 -f 368/734/99 369/735/99 371/529/99 -f 369/735/99 370/736/99 371/529/99 -f 371/529/99 377/737/99 378/738/99 -f 378/738/99 363/527/99 371/529/99 -f 381/531/104 380/739/104 379/532/104 -f 379/532/104 394/740/104 393/741/104 -f 393/741/104 387/742/104 379/532/104 -f 387/742/104 386/743/104 385/744/104 -f 379/532/104 387/742/104 383/745/104 -f 385/744/104 384/746/104 387/742/104 -f 384/746/104 383/745/104 387/742/104 -f 383/745/104 382/530/104 379/532/104 -f 392/535/99 391/747/99 390/748/99 -f 390/748/99 389/749/99 392/535/99 -f 389/749/99 388/533/99 392/535/99 -f 388/533/99 395/750/99 398/534/99 -f 395/750/99 396/751/99 398/534/99 -f 396/751/99 397/752/99 398/534/99 -f 398/534/99 399/753/99 400/754/99 -f 400/754/99 392/535/99 398/534/99 -f 402/536/104 401/755/104 227/537/104 -f 221/410/104 403/539/104 402/536/104 -f 225/412/104 404/560/104 403/539/104 -f 404/540/100 412/564/100 411/541/100 -f 403/543/103 411/541/103 410/544/103 -f 402/546/102 410/544/102 409/547/102 -f 408/549/100 418/556/100 416/550/100 -f 405/552/102 415/555/102 417/553/102 -f 415/555/104 416/550/104 418/556/104 -f 417/557/103 348/509/103 346/516/103 -f 225/412/103 226/406/103 412/559/103 -f 226/406/103 228/408/103 409/756/103 -f 412/559/103 226/406/103 409/756/103 -f 228/408/103 227/537/103 409/756/103 -f 227/537/103 401/755/103 409/756/103 -f 424/561/98 422/757/98 434/562/98 -f 434/562/98 435/758/98 421/563/98 -f 421/563/98 423/759/98 424/561/98 -f 423/759/98 443/760/98 441/761/98 -f 424/561/98 423/759/98 441/761/98 -f 410/544/104 411/541/104 412/564/104 -f 450/565/99 454/575/99 456/566/99 -f 451/568/104 455/762/104 453/569/104 -f 455/571/104 457/763/104 459/572/104 -f 460/573/99 458/764/99 456/574/99 -f 460/573/99 464/765/99 462/576/99 -f 457/578/104 461/580/104 463/579/104 -f 461/580/104 465/766/104 467/581/104 -f 462/576/99 464/765/99 468/582/99 -f 472/584/100 476/590/100 475/585/100 -f 469/587/102 473/593/102 474/588/102 -f 470/589/99 474/588/99 476/590/99 -f 471/586/104 475/585/104 473/591/104 -f 473/593/106 477/767/106 478/594/106 -f 478/595/107 477/768/107 475/585/107 -f 348/509/103 417/557/103 418/597/103 -f 418/597/103 408/514/103 345/513/103 -f 485/599/103 486/603/103 483/600/103 -f 481/602/100 483/600/100 486/603/100 -f 480/605/102 485/599/102 484/601/102 -f 495/609/103 496/769/103 497/770/103 -f 497/770/103 498/771/103 499/607/103 -f 499/607/103 500/772/103 501/608/103 -f 501/608/103 502/773/103 495/609/103 -f 495/609/103 497/770/103 499/607/103 -f 519/610/104 525/627/104 526/611/104 -f 509/613/103 510/774/103 507/614/103 -f 505/616/100 507/622/100 510/617/100 -f 504/619/102 509/613/102 508/615/102 -f 506/618/99 510/617/99 509/613/99 -f 503/621/104 508/775/104 507/622/104 -f 517/623/103 518/632/103 515/624/103 -f 523/626/103 524/776/103 526/611/103 -f 531/628/103 532/643/103 534/629/103 -f 513/631/100 515/624/100 518/632/100 -f 512/634/102 517/623/102 516/625/102 -f 521/636/102 523/777/102 525/627/102 -f 529/637/102 531/628/102 533/638/102 -f 520/612/100 526/611/100 524/640/100 -f 528/642/100 534/778/100 532/643/100 -f 531/628/99 529/637/99 530/644/99 -f 546/645/100 557/649/100 561/646/100 -f 542/648/100 550/779/100 557/649/100 -f 561/646/100 549/780/100 539/650/100 -f 559/651/102 555/656/102 545/652/102 -f 559/651/102 544/653/102 540/654/102 -f 555/656/102 548/781/102 541/657/102 -f 551/658/102 547/655/102 540/654/102 -f 541/657/102 548/781/102 552/660/102 -f 560/663/102 551/658/102 535/659/102 -f 535/659/102 536/661/102 556/662/102 -f 536/661/102 552/660/102 556/662/102 -f 539/650/100 549/780/100 553/664/100 -f 554/666/100 550/779/100 542/648/100 -f 558/669/100 554/666/100 538/667/100 -f 538/667/100 537/665/100 562/668/100 -f 537/665/100 553/664/100 562/668/100 -f 565/671/104 567/782/104 571/672/104 -f 571/672/104 572/783/104 563/670/104 -f 572/783/104 568/784/104 563/670/104 -f 564/674/99 569/785/99 573/675/99 -f 573/675/99 574/786/99 566/673/99 -f 574/786/99 570/787/99 566/673/99 -f 580/678/99 578/788/99 576/789/99 -f 576/789/99 590/790/99 588/676/99 -f 588/676/99 586/791/99 584/677/99 -f 584/677/99 582/792/99 580/678/99 -f 580/678/99 576/789/99 588/676/99 -f 589/680/104 575/793/104 577/794/104 -f 577/794/104 579/795/104 589/680/104 -f 579/795/104 581/681/104 589/680/104 -f 581/681/104 583/796/104 585/797/104 -f 585/797/104 587/679/104 581/681/104 -f 608/683/104 609/798/104 610/684/104 -f 610/684/104 591/799/104 592/800/104 -f 592/800/104 593/801/104 610/684/104 -f 593/801/104 594/802/104 595/803/104 -f 610/684/104 593/801/104 606/804/104 -f 595/803/104 596/805/104 593/801/104 -f 596/805/104 606/804/104 593/801/104 -f 606/804/104 607/682/104 610/684/104 -f 597/685/99 598/806/99 599/807/99 -f 599/807/99 600/808/99 597/685/99 -f 600/808/99 601/686/99 597/685/99 -f 601/686/99 602/809/99 605/687/99 -f 602/809/99 603/810/99 605/687/99 -f 603/810/99 604/811/99 605/687/99 -f 605/687/99 611/812/99 612/813/99 -f 612/813/99 597/685/99 605/687/99 -f 615/689/104 614/814/104 613/690/104 -f 613/690/104 628/815/104 627/816/104 -f 627/816/104 621/817/104 613/690/104 -f 621/817/104 620/818/104 619/819/104 -f 613/690/104 621/817/104 617/820/104 -f 619/819/104 618/821/104 621/817/104 -f 618/821/104 617/820/104 621/817/104 -f 617/820/104 616/688/104 613/690/104 -f 626/693/99 625/822/99 624/823/99 -f 624/823/99 623/824/99 626/693/99 -f 623/824/99 622/691/99 626/693/99 -f 622/691/99 629/825/99 632/692/99 -f 629/825/99 630/826/99 632/692/99 -f 630/826/99 631/827/99 632/692/99 -f 632/692/99 633/828/99 634/829/99 -f 634/829/99 626/693/99 632/692/99 +f 637/1110/198 636/1111/198 635/1112/198 +f 638/1113/199 640/1114/199 636/1111/199 +f 637/1115/200 642/1116/200 638/1117/200 +f 635/1118/201 741/1119/201 639/1120/201 +f 656/1121/202 667/1122/202 655/1123/202 +f 663/1124/202 674/1125/202 662/1126/202 +f 660/1127/202 671/1128/202 659/1129/202 +f 666/1130/202 667/1131/202 678/1132/202 +f 656/1121/202 669/1133/202 668/1134/202 +f 663/1124/202 676/1135/202 675/1136/202 +f 660/1127/202 673/1137/202 672/1138/202 +f 657/1139/202 670/1140/202 669/1141/202 +f 665/1142/202 676/1143/202 664/1144/202 +f 661/1145/202 674/1146/202 673/1147/202 +f 659/1129/202 670/1148/202 658/1149/202 +f 666/1130/202 677/1150/202 665/1142/202 +f 683/1151/202 694/1152/202 682/1153/202 +f 690/1154/202 701/1155/202 689/1156/202 +f 680/1157/202 691/1158/202 679/1159/202 +f 687/1160/202 698/1161/202 686/1162/202 +f 683/1151/202 696/1163/202 695/1164/202 +f 690/1154/202 691/1158/202 702/1165/202 +f 681/1166/202 692/1167/202 680/1157/202 +f 688/1168/202 699/1169/202 687/1160/202 +f 684/1170/202 697/1171/202 696/1163/202 +f 682/1153/202 693/1172/202 681/1166/202 +f 689/1156/202 700/1173/202 688/1168/202 +f 685/1174/202 698/1161/202 697/1175/202 +f 713/1176/202 703/1177/202 707/1178/202 +f 717/1179/198 716/1180/198 715/1181/198 +f 721/1182/203 719/1183/203 720/1184/203 +f 717/1185/200 722/1186/200 718/1187/200 +f 716/1188/202 720/1184/202 715/1189/202 +f 718/1190/199 721/1182/199 716/1180/199 +f 715/1191/204 719/1183/204 717/1192/204 +f 725/1193/203 723/1194/203 724/1195/203 +f 723/1194/200 726/1196/200 734/1197/200 +f 742/1198/199 744/1199/199 740/1200/199 +f 640/1114/205 740/1200/205 636/1111/205 +f 639/1120/203 742/1201/203 640/1114/203 +f 636/1111/198 739/1202/198 635/1112/198 +f 744/1203/202 745/1204/202 743/1205/202 +f 740/1206/198 743/1207/198 739/1202/198 +f 739/1208/204 745/1209/204 741/1119/204 +f 741/1210/203 746/1211/203 742/1201/203 +f 724/1195/203 737/1212/203 725/1193/203 +f 751/1213/202 754/1214/202 750/1215/202 +f 738/1216/203 754/1214/203 737/1212/203 +f 762/1217/199 757/1218/199 758/1219/199 +f 820/1220/204 759/1221/204 822/1222/204 +f 819/1223/204 760/1224/204 756/1225/204 +f 770/1226/199 765/1227/199 766/1228/199 +f 763/1229/204 768/1230/204 764/1231/204 +f 787/1232/204 788/1233/204 790/1234/204 +f 777/1235/199 781/1236/199 785/1237/199 +f 796/1238/204 795/1239/204 793/1240/204 +f 802/1241/199 812/1242/199 806/1243/199 +f 816/1244/204 641/1245/204 637/1246/204 +f 635/1118/204 816/1244/204 637/1246/204 +f 639/1120/204 817/1247/204 635/1118/204 +f 818/1248/200 825/1249/200 817/1250/200 +f 817/1251/203 824/1252/203 816/1253/203 +f 816/1254/202 823/1255/202 815/1256/202 +f 822/1257/200 830/1258/200 820/1259/200 +f 819/1260/202 831/1261/202 821/1262/202 +f 829/1263/204 832/1264/204 831/1261/204 +f 831/1265/203 760/1224/203 821/1266/203 +f 826/1267/203 818/1268/203 639/1120/203 +f 838/1269/198 848/1270/198 835/1271/198 +f 824/1252/204 826/1272/204 823/1255/204 +f 864/1273/199 870/1274/199 866/1275/199 +f 865/1276/204 867/1277/204 863/1278/204 +f 869/1279/204 873/1280/204 867/1277/204 +f 874/1281/199 870/1282/199 868/1283/199 +f 874/1281/199 876/1284/199 872/1285/199 +f 871/1286/204 877/1287/204 873/1280/204 +f 875/1288/204 881/1289/204 877/1287/204 +f 876/1284/199 882/1290/199 880/1291/199 +f 886/1292/200 889/1293/200 885/1294/200 +f 883/1295/202 888/1296/202 884/1297/202 +f 884/1297/199 890/1298/199 886/1292/199 +f 885/1294/204 887/1299/204 883/1300/204 +f 887/1301/206 892/1302/206 888/1296/206 +f 892/1303/207 889/1293/207 890/1298/207 +f 887/1299/204 889/1293/204 891/1304/204 +f 888/1296/199 892/1302/199 890/1298/199 +f 762/1217/203 832/1305/203 761/1306/203 +f 832/1305/203 759/1221/203 761/1306/203 +f 899/1307/203 897/1308/203 898/1309/203 +f 895/1310/200 900/1311/200 896/1312/200 +f 894/1313/202 898/1309/202 893/1314/202 +f 913/1315/203 915/1316/203 909/1317/203 +f 933/1318/204 940/1319/204 934/1320/204 +f 923/1321/203 921/1322/203 922/1323/203 +f 919/1324/200 924/1325/200 920/1326/200 +f 918/1327/202 922/1323/202 917/1328/202 +f 920/1326/199 923/1321/199 918/1327/199 +f 917/1329/204 921/1330/204 919/1324/204 +f 931/1331/203 929/1332/203 930/1333/203 +f 937/1334/203 940/1319/203 939/1335/203 +f 945/1336/203 948/1337/203 947/1338/203 +f 927/1339/200 932/1340/200 928/1341/200 +f 926/1342/202 930/1333/202 925/1343/202 +f 935/1344/202 939/1335/202 933/1318/202 +f 943/1345/202 947/1346/202 941/1347/202 +f 934/1320/200 938/1348/200 936/1349/200 +f 942/1350/200 946/1351/200 944/1352/200 +f 945/1336/199 944/1352/199 946/1351/199 +f 960/1353/200 975/1354/200 957/1355/200 +f 956/1356/200 971/1357/200 960/1353/200 +f 975/1354/200 953/1358/200 957/1355/200 +f 973/1359/202 959/1360/202 958/1361/202 +f 973/1359/202 954/1362/202 961/1363/202 +f 969/1364/202 955/1365/202 959/1360/202 +f 965/1366/202 954/1362/202 949/1367/202 +f 955/1365/202 966/1368/202 950/1369/202 +f 970/1370/202 974/1371/202 949/1367/202 +f 953/1358/200 967/1372/200 951/1373/200 +f 968/1374/200 956/1356/200 952/1375/200 +f 976/1376/200 972/1377/200 952/1375/200 +f 977/1378/204 979/1379/204 985/1380/204 +f 980/1381/199 978/1382/199 987/1383/199 +f 1002/1384/199 998/1385/199 994/1386/199 +f 1001/1387/204 1003/1388/204 995/1389/204 +f 1021/1390/204 1022/1391/204 1024/1392/204 +f 1011/1393/199 1015/1394/199 1019/1395/199 +f 1030/1396/204 1029/1397/204 1027/1398/204 +f 1036/1399/199 1046/1400/199 1040/1401/199 +f 637/1110/198 638/1113/198 636/1111/198 +f 638/1113/199 642/1116/199 640/1114/199 +f 637/1115/200 641/1245/200 642/1116/200 +f 635/1118/201 739/1208/201 741/1119/201 +f 656/1121/202 668/1402/202 667/1122/202 +f 663/1124/202 675/1403/202 674/1125/202 +f 660/1127/202 672/1404/202 671/1128/202 +f 666/1130/202 655/1123/202 667/1131/202 +f 656/1121/202 657/1139/202 669/1133/202 +f 663/1124/202 664/1144/202 676/1135/202 +f 660/1127/202 661/1405/202 673/1137/202 +f 657/1139/202 658/1149/202 670/1140/202 +f 665/1142/202 677/1406/202 676/1143/202 +f 661/1145/202 662/1126/202 674/1146/202 +f 659/1129/202 671/1407/202 670/1148/202 +f 666/1130/202 678/1408/202 677/1150/202 +f 683/1151/202 695/1164/202 694/1152/202 +f 690/1154/202 702/1165/202 701/1155/202 +f 680/1157/202 692/1167/202 691/1158/202 +f 687/1160/202 699/1169/202 698/1161/202 +f 683/1151/202 684/1170/202 696/1163/202 +f 690/1154/202 679/1159/202 691/1158/202 +f 681/1166/202 693/1172/202 692/1167/202 +f 688/1168/202 700/1173/202 699/1169/202 +f 684/1170/202 685/1409/202 697/1171/202 +f 682/1153/202 694/1152/202 693/1172/202 +f 689/1156/202 701/1155/202 700/1173/202 +f 685/1174/202 686/1162/202 698/1161/202 +f 703/1177/202 704/1410/202 707/1178/202 +f 704/1410/202 705/1411/202 707/1178/202 +f 705/1411/202 706/1412/202 707/1178/202 +f 707/1178/202 708/1413/202 711/1414/202 +f 708/1413/202 709/1415/202 711/1414/202 +f 709/1415/202 710/1416/202 711/1414/202 +f 711/1414/202 712/1417/202 713/1176/202 +f 713/1176/202 714/1418/202 703/1177/202 +f 711/1414/202 713/1176/202 707/1178/202 +f 717/1179/198 718/1190/198 716/1180/198 +f 721/1182/203 722/1186/203 719/1183/203 +f 717/1185/200 719/1183/200 722/1186/200 +f 716/1188/202 721/1182/202 720/1184/202 +f 718/1190/199 722/1186/199 721/1182/199 +f 715/1191/204 720/1184/204 719/1183/204 +f 725/1193/203 726/1196/203 723/1194/203 +f 726/1196/200 733/1419/200 734/1197/200 +f 734/1197/200 731/1420/200 723/1194/200 +f 731/1420/200 732/1421/200 723/1194/200 +f 742/1198/199 746/1422/199 744/1199/199 +f 640/1114/205 742/1198/205 740/1200/205 +f 639/1120/203 741/1210/203 742/1201/203 +f 636/1111/198 740/1206/198 739/1202/198 +f 744/1203/202 746/1211/202 745/1204/202 +f 740/1206/198 744/1423/198 743/1207/198 +f 739/1208/204 743/1424/204 745/1209/204 +f 741/1210/203 745/1204/203 746/1211/203 +f 724/1195/203 738/1216/203 737/1212/203 +f 750/1215/202 749/1425/202 751/1213/202 +f 749/1425/202 753/1426/202 751/1213/202 +f 753/1426/202 752/1427/202 751/1213/202 +f 738/1216/203 750/1215/203 754/1214/203 +f 762/1217/199 761/1306/199 757/1218/199 +f 820/1220/204 755/1428/204 759/1221/204 +f 819/1223/204 821/1266/204 760/1224/204 +f 770/1226/199 769/1429/199 765/1227/199 +f 763/1229/204 767/1430/204 768/1230/204 +f 788/1233/204 789/1431/204 790/1234/204 +f 790/1234/204 771/1432/204 772/1433/204 +f 772/1433/204 773/1434/204 790/1234/204 +f 773/1434/204 774/1435/204 775/1436/204 +f 790/1234/204 773/1434/204 786/1437/204 +f 775/1436/204 776/1438/204 773/1434/204 +f 776/1438/204 786/1437/204 773/1434/204 +f 786/1437/204 787/1232/204 790/1234/204 +f 777/1235/199 778/1439/199 779/1440/199 +f 779/1440/199 780/1441/199 777/1235/199 +f 780/1441/199 781/1236/199 777/1235/199 +f 781/1236/199 782/1442/199 785/1237/199 +f 782/1442/199 783/1443/199 785/1237/199 +f 783/1443/199 784/1444/199 785/1237/199 +f 785/1237/199 791/1445/199 792/1446/199 +f 792/1446/199 777/1235/199 785/1237/199 +f 795/1239/204 794/1447/204 793/1240/204 +f 793/1240/204 808/1448/204 807/1449/204 +f 807/1449/204 801/1450/204 793/1240/204 +f 801/1450/204 800/1451/204 799/1452/204 +f 793/1240/204 801/1450/204 797/1453/204 +f 799/1452/204 798/1454/204 801/1450/204 +f 798/1454/204 797/1453/204 801/1450/204 +f 797/1453/204 796/1238/204 793/1240/204 +f 806/1243/199 805/1455/199 804/1456/199 +f 804/1456/199 803/1457/199 806/1243/199 +f 803/1457/199 802/1241/199 806/1243/199 +f 802/1241/199 809/1458/199 812/1242/199 +f 809/1458/199 810/1459/199 812/1242/199 +f 810/1459/199 811/1460/199 812/1242/199 +f 812/1242/199 813/1461/199 814/1462/199 +f 814/1462/199 806/1243/199 812/1242/199 +f 816/1244/204 815/1463/204 641/1245/204 +f 635/1118/204 817/1247/204 816/1244/204 +f 639/1120/204 818/1268/204 817/1247/204 +f 818/1248/200 826/1272/200 825/1249/200 +f 817/1251/203 825/1249/203 824/1252/203 +f 816/1254/202 824/1252/202 823/1255/202 +f 822/1257/200 832/1264/200 830/1258/200 +f 819/1260/202 829/1263/202 831/1261/202 +f 829/1263/204 830/1258/204 832/1264/204 +f 831/1265/203 762/1217/203 760/1224/203 +f 639/1120/203 640/1114/203 826/1267/203 +f 640/1114/203 642/1116/203 823/1464/203 +f 826/1267/203 640/1114/203 823/1464/203 +f 642/1116/203 641/1245/203 823/1464/203 +f 641/1245/203 815/1463/203 823/1464/203 +f 838/1269/198 836/1465/198 848/1270/198 +f 848/1270/198 849/1466/198 835/1271/198 +f 835/1271/198 837/1467/198 838/1269/198 +f 837/1467/198 857/1468/198 855/1469/198 +f 838/1269/198 837/1467/198 855/1469/198 +f 824/1252/204 825/1249/204 826/1272/204 +f 864/1273/199 868/1283/199 870/1274/199 +f 865/1276/204 869/1470/204 867/1277/204 +f 869/1279/204 871/1471/204 873/1280/204 +f 874/1281/199 872/1472/199 870/1282/199 +f 874/1281/199 878/1473/199 876/1284/199 +f 871/1286/204 875/1288/204 877/1287/204 +f 875/1288/204 879/1474/204 881/1289/204 +f 876/1284/199 878/1473/199 882/1290/199 +f 886/1292/200 890/1298/200 889/1293/200 +f 883/1295/202 887/1301/202 888/1296/202 +f 884/1297/199 888/1296/199 890/1298/199 +f 885/1294/204 889/1293/204 887/1299/204 +f 887/1301/206 891/1475/206 892/1302/206 +f 892/1303/207 891/1476/207 889/1293/207 +f 762/1217/203 831/1265/203 832/1305/203 +f 832/1305/203 822/1222/203 759/1221/203 +f 899/1307/203 900/1311/203 897/1308/203 +f 895/1310/200 897/1308/200 900/1311/200 +f 894/1313/202 899/1307/202 898/1309/202 +f 909/1317/203 910/1477/203 911/1478/203 +f 911/1478/203 912/1479/203 913/1315/203 +f 913/1315/203 914/1480/203 915/1316/203 +f 915/1316/203 916/1481/203 909/1317/203 +f 909/1317/203 911/1478/203 913/1315/203 +f 933/1318/204 939/1335/204 940/1319/204 +f 923/1321/203 924/1482/203 921/1322/203 +f 919/1324/200 921/1330/200 924/1325/200 +f 918/1327/202 923/1321/202 922/1323/202 +f 920/1326/199 924/1325/199 923/1321/199 +f 917/1329/204 922/1483/204 921/1330/204 +f 931/1331/203 932/1340/203 929/1332/203 +f 937/1334/203 938/1484/203 940/1319/203 +f 945/1336/203 946/1351/203 948/1337/203 +f 927/1339/200 929/1332/200 932/1340/200 +f 926/1342/202 931/1331/202 930/1333/202 +f 935/1344/202 937/1485/202 939/1335/202 +f 943/1345/202 945/1336/202 947/1346/202 +f 934/1320/200 940/1319/200 938/1348/200 +f 942/1350/200 948/1486/200 946/1351/200 +f 945/1336/199 943/1345/199 944/1352/199 +f 960/1353/200 971/1357/200 975/1354/200 +f 956/1356/200 964/1487/200 971/1357/200 +f 975/1354/200 963/1488/200 953/1358/200 +f 973/1359/202 969/1364/202 959/1360/202 +f 973/1359/202 958/1361/202 954/1362/202 +f 969/1364/202 962/1489/202 955/1365/202 +f 965/1366/202 961/1363/202 954/1362/202 +f 955/1365/202 962/1489/202 966/1368/202 +f 974/1371/202 965/1366/202 949/1367/202 +f 949/1367/202 950/1369/202 970/1370/202 +f 950/1369/202 966/1368/202 970/1370/202 +f 953/1358/200 963/1488/200 967/1372/200 +f 968/1374/200 964/1487/200 956/1356/200 +f 972/1377/200 968/1374/200 952/1375/200 +f 952/1375/200 951/1373/200 976/1376/200 +f 951/1373/200 967/1372/200 976/1376/200 +f 979/1379/204 981/1490/204 985/1380/204 +f 985/1380/204 986/1491/204 977/1378/204 +f 986/1491/204 982/1492/204 977/1378/204 +f 978/1382/199 983/1493/199 987/1383/199 +f 987/1383/199 988/1494/199 980/1381/199 +f 988/1494/199 984/1495/199 980/1381/199 +f 994/1386/199 992/1496/199 990/1497/199 +f 990/1497/199 1004/1498/199 1002/1384/199 +f 1002/1384/199 1000/1499/199 998/1385/199 +f 998/1385/199 996/1500/199 994/1386/199 +f 994/1386/199 990/1497/199 1002/1384/199 +f 1003/1388/204 989/1501/204 991/1502/204 +f 991/1502/204 993/1503/204 1003/1388/204 +f 993/1503/204 995/1389/204 1003/1388/204 +f 995/1389/204 997/1504/204 999/1505/204 +f 999/1505/204 1001/1387/204 995/1389/204 +f 1022/1391/204 1023/1506/204 1024/1392/204 +f 1024/1392/204 1005/1507/204 1006/1508/204 +f 1006/1508/204 1007/1509/204 1024/1392/204 +f 1007/1509/204 1008/1510/204 1009/1511/204 +f 1024/1392/204 1007/1509/204 1020/1512/204 +f 1009/1511/204 1010/1513/204 1007/1509/204 +f 1010/1513/204 1020/1512/204 1007/1509/204 +f 1020/1512/204 1021/1390/204 1024/1392/204 +f 1011/1393/199 1012/1514/199 1013/1515/199 +f 1013/1515/199 1014/1516/199 1011/1393/199 +f 1014/1516/199 1015/1394/199 1011/1393/199 +f 1015/1394/199 1016/1517/199 1019/1395/199 +f 1016/1517/199 1017/1518/199 1019/1395/199 +f 1017/1518/199 1018/1519/199 1019/1395/199 +f 1019/1395/199 1025/1520/199 1026/1521/199 +f 1026/1521/199 1011/1393/199 1019/1395/199 +f 1029/1397/204 1028/1522/204 1027/1398/204 +f 1027/1398/204 1042/1523/204 1041/1524/204 +f 1041/1524/204 1035/1525/204 1027/1398/204 +f 1035/1525/204 1034/1526/204 1033/1527/204 +f 1027/1398/204 1035/1525/204 1031/1528/204 +f 1033/1527/204 1032/1529/204 1035/1525/204 +f 1032/1529/204 1031/1528/204 1035/1525/204 +f 1031/1528/204 1030/1396/204 1027/1398/204 +f 1040/1401/199 1039/1530/199 1038/1531/199 +f 1038/1531/199 1037/1532/199 1040/1401/199 +f 1037/1532/199 1036/1399/199 1040/1401/199 +f 1036/1399/199 1043/1533/199 1046/1400/199 +f 1043/1533/199 1044/1534/199 1046/1400/199 +f 1044/1534/199 1045/1535/199 1046/1400/199 +f 1046/1400/199 1047/1536/199 1048/1537/199 +f 1048/1537/199 1040/1401/199 1046/1400/199 s 1 -f 232/830/104 243/431/108 231/831/108 -f 239/832/109 250/436/99 238/833/99 -f 236/834/110 247/437/98 235/835/98 -f 233/836/111 244/441/104 232/830/104 -f 240/837/112 251/434/109 239/832/109 -f 230/838/113 241/415/103 229/839/103 -f 237/840/114 248/418/110 236/834/110 -f 234/841/115 245/421/111 233/836/111 -f 229/839/103 252/422/112 240/837/112 -f 231/831/108 242/413/113 230/838/113 -f 238/833/99 249/416/114 237/840/114 -f 235/842/98 246/419/115 234/841/115 -f 264/843/112 275/448/109 263/844/109 -f 254/845/113 265/451/103 253/846/103 -f 261/847/114 272/454/110 260/848/110 -f 258/849/115 269/443/111 257/850/111 -f 253/846/103 276/446/112 264/843/112 -f 255/851/108 266/449/113 254/845/113 -f 262/852/99 273/452/114 261/847/114 -f 259/853/98 270/462/115 258/849/115 -f 256/854/104 267/458/108 255/851/108 -f 263/844/109 274/460/99 262/852/99 -f 260/848/110 271/466/98 259/855/98 -f 257/850/111 268/445/104 256/854/104 -f 281/456/109 292/856/99 280/444/99 -f 288/457/115 299/857/111 287/447/111 -f 278/459/110 289/858/98 277/450/98 -f 285/461/108 296/859/113 284/453/113 -f 282/455/112 293/860/109 281/456/109 -f 277/450/98 300/861/115 288/457/115 -f 279/464/114 290/862/110 278/459/110 -f 286/465/104 297/863/108 285/461/108 -f 283/463/103 294/864/112 282/455/112 -f 280/444/99 291/865/114 279/464/114 -f 287/447/111 298/866/104 286/465/104 -f 284/453/113 295/867/103 283/467/103 -f 315/868/116 333/869/117 334/870/118 -f 317/871/119 315/868/116 314/872/120 -f 319/873/121 311/485/122 316/874/123 -f 314/872/120 318/875/124 317/871/119 -f 320/876/125 316/874/123 315/868/116 -f 313/877/126 309/878/104 318/875/124 -f 333/869/117 338/879/118 334/870/118 -f 314/872/120 321/880/127 313/877/126 -f 313/877/126 324/881/128 310/882/128 -f 311/485/122 333/883/117 316/874/123 -f 315/868/116 322/884/129 314/872/120 -f 323/885/122 337/886/130 333/883/117 -f 322/884/129 335/887/131 321/880/127 -f 321/888/127 336/889/104 324/881/128 -f 334/870/118 339/890/129 322/884/129 -f 343/891/132 345/513/132 341/892/132 -f 342/893/133 348/509/133 344/894/133 -f 351/895/132 353/722/134 349/896/132 -f 350/897/133 356/518/135 352/898/133 -f 353/722/134 356/518/135 354/522/135 -f 365/899/136 373/900/137 366/901/137 -f 368/902/138 361/903/139 369/904/139 -f 378/905/100 376/906/140 363/907/140 -f 364/908/141 374/909/136 365/899/136 -f 367/910/103 362/911/138 368/902/138 -f 371/912/142 358/913/102 377/914/102 -f 370/915/143 359/916/142 371/912/142 -f 363/907/140 375/917/141 364/908/141 -f 366/901/137 372/918/103 367/910/103 -f 369/904/139 360/919/143 370/915/143 -f 386/920/144 396/921/145 385/922/145 -f 383/923/103 389/924/146 382/925/146 -f 380/926/147 392/927/148 379/928/148 -f 387/929/149 397/930/144 386/920/144 -f 393/931/102 398/932/149 387/929/149 -f 384/933/150 388/934/103 383/923/103 -f 381/935/151 391/936/147 380/926/147 -f 379/928/148 400/937/100 394/938/100 -f 385/922/145 395/939/150 384/933/150 -f 382/925/146 390/940/151 381/935/151 -f 427/941/152 430/942/153 428/943/154 -f 414/944/155 421/945/156 413/946/156 -f 419/947/157 426/948/158 420/949/153 -f 424/950/159 420/949/153 422/951/160 -f 425/952/161 428/943/154 426/948/158 -f 429/953/157 432/954/162 430/942/153 -f 426/955/158 433/956/163 420/957/153 -f 429/958/157 448/959/164 431/960/165 -f 437/961/166 434/562/167 433/956/163 -f 428/962/154 439/963/163 438/964/168 -f 432/954/162 439/963/163 430/942/153 -f 421/945/156 436/965/169 413/946/156 -f 428/962/154 437/961/166 426/955/158 -f 422/966/160 433/956/163 434/562/167 -f 441/967/170 445/968/171 442/969/172 -f 414/944/155 443/970/173 423/971/155 -f 427/972/152 445/968/171 446/973/174 -f 427/972/152 447/974/172 429/958/157 -f 424/975/159 442/969/172 419/976/157 -f 419/976/157 445/968/171 425/977/161 -f 435/758/169 437/961/166 438/964/168 -f 445/968/171 443/978/173 446/973/174 -f 452/567/100 455/979/175 451/980/100 -f 449/570/102 454/575/176 450/565/102 -f 456/574/175 457/981/177 455/982/175 -f 453/569/176 460/573/178 454/575/176 -f 459/572/178 464/765/179 460/573/178 -f 458/577/177 461/983/180 457/984/177 -f 462/576/180 465/985/181 461/983/180 -f 463/579/179 468/582/182 464/765/179 -f 487/986/100 502/987/183 494/988/183 -f 493/989/99 500/990/184 492/991/184 -f 491/992/102 498/993/185 490/994/185 -f 489/995/104 496/996/186 488/997/186 -f 494/988/183 501/998/99 493/989/99 -f 492/991/184 499/999/102 491/992/102 -f 490/994/185 497/1000/104 489/1001/104 -f 488/997/186 495/1002/100 487/986/100 -f 547/1003/121 561/1004/125 559/1005/125 -f 538/667/99 541/657/187 536/661/99 -f 535/1006/104 539/650/188 537/665/104 -f 545/1007/189 543/1008/190 544/1009/190 -f 542/648/187 545/1007/189 541/657/187 -f 540/1010/188 543/1011/190 539/650/188 -f 559/1012/125 557/1013/119 555/1014/119 -f 557/1013/119 548/1015/124 555/1014/119 -f 554/1016/188 548/1015/124 550/1017/124 -f 551/1018/187 549/1019/121 547/1003/121 -f 553/1020/187 560/1021/189 562/1022/189 -f 562/1022/189 556/1023/190 558/1024/190 -f 558/1024/190 552/1025/188 554/1016/188 -f 438/964/168 436/965/169 435/758/169 -f 446/973/174 443/978/173 444/1026/173 -f 566/1027/103 567/1028/177 565/1029/103 -f 563/1030/98 569/1031/191 564/1032/98 -f 571/672/175 573/675/192 572/783/192 -f 570/1033/177 571/672/175 567/1028/177 -f 568/1034/191 573/675/192 569/1031/191 -f 576/1035/100 577/1036/193 575/1037/100 -f 578/1038/193 579/1039/98 577/1036/193 -f 580/1040/98 581/1041/194 579/1042/98 -f 582/1043/194 583/1044/102 581/1041/194 -f 584/1045/102 585/1046/195 583/1044/102 -f 586/1047/195 587/1048/103 585/1046/195 -f 588/1049/103 589/1050/196 587/1048/103 -f 590/1051/196 575/1037/100 589/1050/196 -f 436/965/169 438/964/168 440/1052/197 -f 440/1052/197 438/964/168 439/963/163 -f 448/959/164 447/974/172 446/973/174 -f 444/1026/173 448/959/164 446/973/174 -f 599/1053/136 607/1054/137 600/1055/137 -f 602/1056/138 595/1057/139 603/1058/139 -f 612/1059/100 610/1060/140 597/1061/140 -f 598/1062/141 608/1063/136 599/1053/136 -f 601/1064/103 596/1065/138 602/1056/138 -f 605/1066/142 592/1067/102 611/1068/102 -f 604/1069/143 593/1070/142 605/1066/142 -f 597/1061/140 609/1071/141 598/1062/141 -f 600/1055/137 606/1072/103 601/1064/103 -f 603/1058/139 594/1073/143 604/1069/143 -f 620/1074/144 630/1075/145 619/1076/145 -f 617/1077/103 623/1078/146 616/1079/146 -f 614/1080/147 626/1081/148 613/1082/148 -f 621/1083/149 631/1084/144 620/1074/144 -f 627/1085/102 632/1086/149 621/1083/149 -f 618/1087/150 622/1088/103 617/1077/103 -f 615/1089/151 625/1090/147 614/1080/147 -f 613/1082/148 634/1091/100 628/1092/100 -f 619/1076/145 629/1093/150 618/1087/150 -f 616/1079/146 624/1094/151 615/1089/151 -f 232/830/104 244/441/104 243/431/108 -f 239/832/109 251/434/109 250/436/99 -f 236/834/110 248/418/110 247/437/98 -f 233/836/111 245/421/111 244/441/104 -f 240/837/112 252/422/112 251/434/109 -f 230/838/113 242/413/113 241/415/103 -f 237/840/114 249/416/114 248/418/110 -f 234/841/115 246/419/115 245/421/111 -f 229/839/103 241/415/103 252/422/112 -f 231/831/108 243/431/108 242/413/113 -f 238/833/99 250/436/99 249/416/114 -f 235/842/98 247/697/98 246/419/115 -f 264/843/112 276/446/112 275/448/109 -f 254/845/113 266/449/113 265/451/103 -f 261/847/114 273/452/114 272/454/110 -f 258/849/115 270/462/115 269/443/111 -f 253/846/103 265/451/103 276/446/112 -f 255/851/108 267/458/108 266/449/113 -f 262/852/99 274/460/99 273/452/114 -f 259/853/98 271/701/98 270/462/115 -f 256/854/104 268/445/104 267/458/108 -f 263/844/109 275/448/109 274/460/99 -f 260/848/110 272/454/110 271/466/98 -f 257/850/111 269/443/111 268/445/104 -f 281/456/109 293/860/109 292/856/99 -f 288/457/115 300/861/115 299/857/111 -f 278/459/110 290/862/110 289/858/98 -f 285/461/108 297/863/108 296/859/113 -f 282/455/112 294/864/112 293/860/109 -f 277/450/98 289/858/98 300/861/115 -f 279/464/114 291/865/114 290/862/110 -f 286/465/104 298/866/104 297/863/108 -f 283/463/103 295/1095/103 294/864/112 -f 280/444/99 292/856/99 291/865/114 -f 287/447/111 299/857/111 298/866/104 -f 284/453/113 296/859/113 295/867/103 -f 315/868/116 316/874/123 333/869/117 -f 317/871/119 320/876/125 315/868/116 -f 319/873/121 312/488/99 311/485/122 -f 314/872/120 313/877/126 318/875/124 -f 320/876/125 319/873/121 316/874/123 -f 313/877/126 310/882/128 309/878/104 -f 333/869/117 337/1096/130 338/879/118 -f 314/872/120 322/884/129 321/880/127 -f 313/877/126 321/888/127 324/881/128 -f 311/485/122 323/885/122 333/883/117 -f 315/868/116 334/870/118 322/884/129 -f 323/885/122 340/1097/99 337/886/130 -f 322/884/129 339/890/129 335/887/131 -f 321/888/127 335/1098/131 336/889/104 -f 334/870/118 338/879/118 339/890/129 -f 343/891/132 347/598/132 345/513/132 -f 342/893/133 346/516/133 348/509/133 -f 351/895/132 355/721/134 353/722/134 -f 350/897/133 354/522/135 356/518/135 -f 353/722/134 355/721/134 356/518/135 -f 365/899/136 374/909/136 373/900/137 -f 368/902/138 362/911/138 361/903/139 -f 378/905/100 357/1099/100 376/906/140 -f 364/908/141 375/917/141 374/909/136 -f 367/910/103 372/918/103 362/911/138 -f 371/912/142 359/916/142 358/913/102 -f 370/915/143 360/919/143 359/916/142 -f 363/907/140 376/906/140 375/917/141 -f 366/901/137 373/900/137 372/918/103 -f 369/904/139 361/903/139 360/919/143 -f 386/920/144 397/930/144 396/921/145 -f 383/923/103 388/934/103 389/924/146 -f 380/926/147 391/936/147 392/927/148 -f 387/929/149 398/932/149 397/930/144 -f 393/931/102 399/1100/102 398/932/149 -f 384/933/150 395/939/150 388/934/103 -f 381/935/151 390/940/151 391/936/147 -f 379/928/148 392/927/148 400/937/100 -f 385/922/145 396/921/145 395/939/150 -f 382/925/146 389/924/146 390/940/151 -f 427/941/152 429/953/157 430/942/153 -f 414/944/155 423/971/155 421/945/156 -f 419/947/157 425/952/161 426/948/158 -f 424/950/159 419/947/157 420/949/153 -f 425/952/161 427/941/152 428/943/154 -f 429/953/157 431/1101/165 432/954/162 -f 426/955/158 437/961/166 433/956/163 -f 429/958/157 447/974/172 448/959/164 -f 437/961/166 435/758/169 434/562/167 -f 428/962/154 430/942/153 439/963/163 -f 432/954/162 440/1052/197 439/963/163 -f 421/945/156 435/758/169 436/965/169 -f 428/962/154 438/964/168 437/961/166 -f 422/966/160 420/957/153 433/956/163 -f 441/967/170 443/978/173 445/968/171 -f 414/944/155 444/1102/173 443/970/173 -f 427/972/152 425/977/161 445/968/171 -f 427/972/152 446/973/174 447/974/172 -f 424/975/159 441/967/170 442/969/172 -f 419/976/157 442/969/172 445/968/171 -f 452/567/100 456/566/175 455/979/175 -f 449/570/102 453/569/176 454/575/176 -f 456/574/175 458/764/177 457/981/177 -f 453/569/176 459/572/178 460/573/178 -f 459/572/178 463/579/179 464/765/179 -f 458/577/177 462/576/180 461/983/180 -f 462/576/180 466/583/181 465/985/181 -f 463/579/179 467/581/182 468/582/182 -f 487/986/100 495/1002/100 502/987/183 -f 493/989/99 501/998/99 500/990/184 -f 491/992/102 499/999/102 498/993/185 -f 489/995/104 497/1103/104 496/996/186 -f 494/988/183 502/987/183 501/998/99 -f 492/991/184 500/990/184 499/999/102 -f 490/994/185 498/993/185 497/1000/104 -f 488/997/186 496/996/186 495/1002/100 -f 547/1003/121 549/1019/121 561/1004/125 -f 538/667/99 542/648/187 541/657/187 -f 535/1006/104 540/1010/188 539/650/188 -f 545/1007/189 546/1104/189 543/1008/190 -f 542/648/187 546/1104/189 545/1007/189 -f 540/1010/188 544/1105/190 543/1011/190 -f 559/1012/125 561/1106/125 557/1013/119 -f 557/1013/119 550/1017/124 548/1015/124 -f 554/1016/188 552/1025/188 548/1015/124 -f 551/1018/187 553/1020/187 549/1019/121 -f 553/1020/187 551/1018/187 560/1021/189 -f 562/1022/189 560/1021/189 556/1023/190 -f 558/1024/190 556/1023/190 552/1025/188 -f 566/1027/103 570/1033/177 567/1028/177 -f 563/1030/98 568/1034/191 569/1031/191 -f 571/672/175 574/786/175 573/675/192 -f 570/1033/177 574/786/175 571/672/175 -f 568/1034/191 572/783/192 573/675/192 -f 576/1035/100 578/1038/193 577/1036/193 -f 578/1038/193 580/1107/98 579/1039/98 -f 580/1040/98 582/1043/194 581/1041/194 -f 582/1043/194 584/1045/102 583/1044/102 -f 584/1045/102 586/1047/195 585/1046/195 -f 586/1047/195 588/1049/103 587/1048/103 -f 588/1049/103 590/1051/196 589/1050/196 -f 590/1051/196 576/1035/100 575/1037/100 -f 599/1053/136 608/1063/136 607/1054/137 -f 602/1056/138 596/1065/138 595/1057/139 -f 612/1059/100 591/1108/100 610/1060/140 -f 598/1062/141 609/1071/141 608/1063/136 -f 601/1064/103 606/1072/103 596/1065/138 -f 605/1066/142 593/1070/142 592/1067/102 -f 604/1069/143 594/1073/143 593/1070/142 -f 597/1061/140 610/1060/140 609/1071/141 -f 600/1055/137 607/1054/137 606/1072/103 -f 603/1058/139 595/1057/139 594/1073/143 -f 620/1074/144 631/1084/144 630/1075/145 -f 617/1077/103 622/1088/103 623/1078/146 -f 614/1080/147 625/1090/147 626/1081/148 -f 621/1083/149 632/1086/149 631/1084/144 -f 627/1085/102 633/1109/102 632/1086/149 -f 618/1087/150 629/1093/150 622/1088/103 -f 615/1089/151 624/1094/151 625/1090/147 -f 613/1082/148 626/1081/148 634/1091/100 -f 619/1076/145 630/1075/145 629/1093/150 -f 616/1079/146 623/1078/146 624/1094/151 +f 646/1538/204 657/1139/208 645/1539/208 +f 653/1540/209 664/1144/199 652/1541/199 +f 650/1542/210 661/1145/198 649/1543/198 +f 647/1544/211 658/1149/204 646/1538/204 +f 654/1545/212 665/1142/209 653/1540/209 +f 644/1546/213 655/1123/203 643/1547/203 +f 651/1548/214 662/1126/210 650/1542/210 +f 648/1549/215 659/1129/211 647/1544/211 +f 643/1547/203 666/1130/212 654/1545/212 +f 645/1539/208 656/1121/213 644/1546/213 +f 652/1541/199 663/1124/214 651/1548/214 +f 649/1550/198 660/1127/215 648/1549/215 +f 678/1551/212 689/1156/209 677/1552/209 +f 668/1553/213 679/1159/203 667/1554/203 +f 675/1555/214 686/1162/210 674/1556/210 +f 672/1557/215 683/1151/211 671/1558/211 +f 667/1554/203 690/1154/212 678/1551/212 +f 669/1559/208 680/1157/213 668/1553/213 +f 676/1560/199 687/1160/214 675/1555/214 +f 673/1561/198 684/1170/215 672/1557/215 +f 670/1562/204 681/1166/208 669/1559/208 +f 677/1552/209 688/1168/199 676/1560/199 +f 674/1556/210 685/1174/198 673/1563/198 +f 671/1558/211 682/1153/204 670/1562/204 +f 695/1164/209 706/1564/199 694/1152/199 +f 702/1165/215 713/1565/211 701/1155/211 +f 692/1167/210 703/1566/198 691/1158/198 +f 699/1169/208 710/1567/213 698/1161/213 +f 696/1163/212 707/1568/209 695/1164/209 +f 691/1158/198 714/1569/215 702/1165/215 +f 693/1172/214 704/1570/210 692/1167/210 +f 700/1173/204 711/1571/208 699/1169/208 +f 697/1171/203 708/1572/212 696/1163/212 +f 694/1152/199 705/1573/214 693/1172/214 +f 701/1155/211 712/1574/204 700/1173/204 +f 698/1161/213 709/1575/203 697/1175/203 +f 729/1576/216 747/1577/217 748/1578/218 +f 731/1579/219 729/1576/216 728/1580/220 +f 733/1581/221 725/1193/222 730/1582/223 +f 728/1580/220 732/1583/224 731/1579/219 +f 734/1584/225 730/1582/223 729/1576/216 +f 727/1585/226 723/1586/204 732/1583/224 +f 747/1577/217 752/1587/218 748/1578/218 +f 728/1580/220 735/1588/227 727/1585/226 +f 727/1585/226 738/1589/228 724/1590/228 +f 725/1193/222 747/1591/217 730/1582/223 +f 729/1576/216 736/1592/229 728/1580/220 +f 737/1593/222 751/1594/230 747/1591/217 +f 736/1592/229 749/1595/231 735/1588/227 +f 735/1596/227 750/1597/204 738/1589/228 +f 748/1578/218 753/1598/229 736/1592/229 +f 757/1599/232 759/1221/232 755/1600/232 +f 756/1601/233 762/1217/233 758/1602/233 +f 765/1603/232 767/1430/234 763/1604/232 +f 764/1605/233 770/1226/235 766/1606/233 +f 767/1430/234 770/1226/235 768/1230/235 +f 779/1607/236 787/1608/237 780/1609/237 +f 782/1610/238 775/1611/239 783/1612/239 +f 792/1613/200 790/1614/240 777/1615/240 +f 778/1616/241 788/1617/236 779/1607/236 +f 781/1618/203 776/1619/238 782/1610/238 +f 785/1620/242 772/1621/202 791/1622/202 +f 784/1623/243 773/1624/242 785/1620/242 +f 777/1615/240 789/1625/241 778/1616/241 +f 780/1609/237 786/1626/203 781/1618/203 +f 783/1612/239 774/1627/243 784/1623/243 +f 800/1628/244 810/1629/245 799/1630/245 +f 797/1631/203 803/1632/246 796/1633/246 +f 794/1634/247 806/1635/248 793/1636/248 +f 801/1637/249 811/1638/244 800/1628/244 +f 807/1639/202 812/1640/249 801/1637/249 +f 798/1641/250 802/1642/203 797/1631/203 +f 795/1643/251 805/1644/247 794/1634/247 +f 793/1636/248 814/1645/200 808/1646/200 +f 799/1630/245 809/1647/250 798/1641/250 +f 796/1633/246 804/1648/251 795/1643/251 +f 841/1649/252 844/1650/253 842/1651/254 +f 828/1652/255 835/1653/256 827/1654/256 +f 833/1655/257 840/1656/258 834/1657/253 +f 838/1658/259 834/1657/253 836/1659/260 +f 839/1660/261 842/1651/254 840/1656/258 +f 843/1661/257 846/1662/262 844/1650/253 +f 840/1663/258 847/1664/263 834/1665/253 +f 843/1666/257 862/1667/264 845/1668/265 +f 851/1669/266 848/1270/267 847/1664/263 +f 842/1670/254 853/1671/263 852/1672/268 +f 846/1662/262 853/1671/263 844/1650/253 +f 835/1653/256 850/1673/269 827/1654/256 +f 842/1670/254 851/1669/266 840/1663/258 +f 836/1674/260 847/1664/263 848/1270/267 +f 855/1675/270 859/1676/271 856/1677/272 +f 828/1652/255 857/1678/273 837/1679/255 +f 841/1680/252 859/1676/271 860/1681/274 +f 841/1680/252 861/1682/272 843/1666/257 +f 838/1683/259 856/1677/272 833/1684/257 +f 833/1684/257 859/1676/271 839/1685/261 +f 849/1466/269 851/1669/266 852/1672/268 +f 859/1676/271 857/1686/273 860/1681/274 +f 866/1275/200 869/1687/275 865/1688/200 +f 863/1278/202 868/1283/276 864/1273/202 +f 870/1282/275 871/1689/277 869/1690/275 +f 867/1277/276 874/1281/278 868/1283/276 +f 873/1280/278 878/1473/279 874/1281/278 +f 872/1285/277 875/1691/280 871/1692/277 +f 876/1284/280 879/1693/281 875/1691/280 +f 877/1287/279 882/1290/282 878/1473/279 +f 901/1694/200 916/1695/283 908/1696/283 +f 907/1697/199 914/1698/284 906/1699/284 +f 905/1700/202 912/1701/285 904/1702/285 +f 903/1703/204 910/1704/286 902/1705/286 +f 908/1696/283 915/1706/199 907/1697/199 +f 906/1699/284 913/1707/202 905/1700/202 +f 904/1702/285 911/1708/204 903/1709/204 +f 902/1705/286 909/1710/200 901/1694/200 +f 961/1711/221 975/1712/225 973/1713/225 +f 952/1375/199 955/1365/287 950/1369/199 +f 949/1714/204 953/1358/288 951/1373/204 +f 959/1715/289 957/1716/290 958/1717/290 +f 956/1356/287 959/1715/289 955/1365/287 +f 954/1718/288 957/1719/290 953/1358/288 +f 973/1720/225 971/1721/219 969/1722/219 +f 971/1721/219 962/1723/224 969/1722/219 +f 968/1724/288 962/1723/224 964/1725/224 +f 965/1726/287 963/1727/221 961/1711/221 +f 967/1728/287 974/1729/289 976/1730/289 +f 976/1730/289 970/1731/290 972/1732/290 +f 972/1732/290 966/1733/288 968/1724/288 +f 852/1672/268 850/1673/269 849/1466/269 +f 860/1681/274 857/1686/273 858/1734/273 +f 980/1735/203 981/1736/277 979/1737/203 +f 977/1738/198 983/1739/291 978/1740/198 +f 985/1380/275 987/1383/292 986/1491/292 +f 984/1741/277 985/1380/275 981/1736/277 +f 982/1742/291 987/1383/292 983/1739/291 +f 990/1743/200 991/1744/293 989/1745/200 +f 992/1746/293 993/1747/198 991/1744/293 +f 994/1748/198 995/1749/294 993/1750/198 +f 996/1751/294 997/1752/202 995/1749/294 +f 998/1753/202 999/1754/295 997/1752/202 +f 1000/1755/295 1001/1756/203 999/1754/295 +f 1002/1757/203 1003/1758/296 1001/1756/203 +f 1004/1759/296 989/1745/200 1003/1758/296 +f 850/1673/269 852/1672/268 854/1760/297 +f 854/1760/297 852/1672/268 853/1671/263 +f 862/1667/264 861/1682/272 860/1681/274 +f 858/1734/273 862/1667/264 860/1681/274 +f 1013/1761/236 1021/1762/237 1014/1763/237 +f 1016/1764/238 1009/1765/239 1017/1766/239 +f 1026/1767/200 1024/1768/240 1011/1769/240 +f 1012/1770/241 1022/1771/236 1013/1761/236 +f 1015/1772/203 1010/1773/238 1016/1764/238 +f 1019/1774/242 1006/1775/202 1025/1776/202 +f 1018/1777/243 1007/1778/242 1019/1774/242 +f 1011/1769/240 1023/1779/241 1012/1770/241 +f 1014/1763/237 1020/1780/203 1015/1772/203 +f 1017/1766/239 1008/1781/243 1018/1777/243 +f 1034/1782/244 1044/1783/245 1033/1784/245 +f 1031/1785/203 1037/1786/246 1030/1787/246 +f 1028/1788/247 1040/1789/248 1027/1790/248 +f 1035/1791/249 1045/1792/244 1034/1782/244 +f 1041/1793/202 1046/1794/249 1035/1791/249 +f 1032/1795/250 1036/1796/203 1031/1785/203 +f 1029/1797/251 1039/1798/247 1028/1788/247 +f 1027/1790/248 1048/1799/200 1042/1800/200 +f 1033/1784/245 1043/1801/250 1032/1795/250 +f 1030/1787/246 1038/1802/251 1029/1797/251 +f 646/1538/204 658/1149/204 657/1139/208 +f 653/1540/209 665/1142/209 664/1144/199 +f 650/1542/210 662/1126/210 661/1145/198 +f 647/1544/211 659/1129/211 658/1149/204 +f 654/1545/212 666/1130/212 665/1142/209 +f 644/1546/213 656/1121/213 655/1123/203 +f 651/1548/214 663/1124/214 662/1126/210 +f 648/1549/215 660/1127/215 659/1129/211 +f 643/1547/203 655/1123/203 666/1130/212 +f 645/1539/208 657/1139/208 656/1121/213 +f 652/1541/199 664/1144/199 663/1124/214 +f 649/1550/198 661/1405/198 660/1127/215 +f 678/1551/212 690/1154/212 689/1156/209 +f 668/1553/213 680/1157/213 679/1159/203 +f 675/1555/214 687/1160/214 686/1162/210 +f 672/1557/215 684/1170/215 683/1151/211 +f 667/1554/203 679/1159/203 690/1154/212 +f 669/1559/208 681/1166/208 680/1157/213 +f 676/1560/199 688/1168/199 687/1160/214 +f 673/1561/198 685/1409/198 684/1170/215 +f 670/1562/204 682/1153/204 681/1166/208 +f 677/1552/209 689/1156/209 688/1168/199 +f 674/1556/210 686/1162/210 685/1174/198 +f 671/1558/211 683/1151/211 682/1153/204 +f 695/1164/209 707/1568/209 706/1564/199 +f 702/1165/215 714/1569/215 713/1565/211 +f 692/1167/210 704/1570/210 703/1566/198 +f 699/1169/208 711/1571/208 710/1567/213 +f 696/1163/212 708/1572/212 707/1568/209 +f 691/1158/198 703/1566/198 714/1569/215 +f 693/1172/214 705/1573/214 704/1570/210 +f 700/1173/204 712/1574/204 711/1571/208 +f 697/1171/203 709/1803/203 708/1572/212 +f 694/1152/199 706/1564/199 705/1573/214 +f 701/1155/211 713/1565/211 712/1574/204 +f 698/1161/213 710/1567/213 709/1575/203 +f 729/1576/216 730/1582/223 747/1577/217 +f 731/1579/219 734/1584/225 729/1576/216 +f 733/1581/221 726/1196/199 725/1193/222 +f 728/1580/220 727/1585/226 732/1583/224 +f 734/1584/225 733/1581/221 730/1582/223 +f 727/1585/226 724/1590/228 723/1586/204 +f 747/1577/217 751/1804/230 752/1587/218 +f 728/1580/220 736/1592/229 735/1588/227 +f 727/1585/226 735/1596/227 738/1589/228 +f 725/1193/222 737/1593/222 747/1591/217 +f 729/1576/216 748/1578/218 736/1592/229 +f 737/1593/222 754/1805/199 751/1594/230 +f 736/1592/229 753/1598/229 749/1595/231 +f 735/1596/227 749/1806/231 750/1597/204 +f 748/1578/218 752/1587/218 753/1598/229 +f 757/1599/232 761/1306/232 759/1221/232 +f 756/1601/233 760/1224/233 762/1217/233 +f 765/1603/232 769/1429/234 767/1430/234 +f 764/1605/233 768/1230/235 770/1226/235 +f 767/1430/234 769/1429/234 770/1226/235 +f 779/1607/236 788/1617/236 787/1608/237 +f 782/1610/238 776/1619/238 775/1611/239 +f 792/1613/200 771/1807/200 790/1614/240 +f 778/1616/241 789/1625/241 788/1617/236 +f 781/1618/203 786/1626/203 776/1619/238 +f 785/1620/242 773/1624/242 772/1621/202 +f 784/1623/243 774/1627/243 773/1624/242 +f 777/1615/240 790/1614/240 789/1625/241 +f 780/1609/237 787/1608/237 786/1626/203 +f 783/1612/239 775/1611/239 774/1627/243 +f 800/1628/244 811/1638/244 810/1629/245 +f 797/1631/203 802/1642/203 803/1632/246 +f 794/1634/247 805/1644/247 806/1635/248 +f 801/1637/249 812/1640/249 811/1638/244 +f 807/1639/202 813/1808/202 812/1640/249 +f 798/1641/250 809/1647/250 802/1642/203 +f 795/1643/251 804/1648/251 805/1644/247 +f 793/1636/248 806/1635/248 814/1645/200 +f 799/1630/245 810/1629/245 809/1647/250 +f 796/1633/246 803/1632/246 804/1648/251 +f 841/1649/252 843/1661/257 844/1650/253 +f 828/1652/255 837/1679/255 835/1653/256 +f 833/1655/257 839/1660/261 840/1656/258 +f 838/1658/259 833/1655/257 834/1657/253 +f 839/1660/261 841/1649/252 842/1651/254 +f 843/1661/257 845/1809/265 846/1662/262 +f 840/1663/258 851/1669/266 847/1664/263 +f 843/1666/257 861/1682/272 862/1667/264 +f 851/1669/266 849/1466/269 848/1270/267 +f 842/1670/254 844/1650/253 853/1671/263 +f 846/1662/262 854/1760/297 853/1671/263 +f 835/1653/256 849/1466/269 850/1673/269 +f 842/1670/254 852/1672/268 851/1669/266 +f 836/1674/260 834/1665/253 847/1664/263 +f 855/1675/270 857/1686/273 859/1676/271 +f 828/1652/255 858/1810/273 857/1678/273 +f 841/1680/252 839/1685/261 859/1676/271 +f 841/1680/252 860/1681/274 861/1682/272 +f 838/1683/259 855/1675/270 856/1677/272 +f 833/1684/257 856/1677/272 859/1676/271 +f 866/1275/200 870/1274/275 869/1687/275 +f 863/1278/202 867/1277/276 868/1283/276 +f 870/1282/275 872/1472/277 871/1689/277 +f 867/1277/276 873/1280/278 874/1281/278 +f 873/1280/278 877/1287/279 878/1473/279 +f 872/1285/277 876/1284/280 875/1691/280 +f 876/1284/280 880/1291/281 879/1693/281 +f 877/1287/279 881/1289/282 882/1290/282 +f 901/1694/200 909/1710/200 916/1695/283 +f 907/1697/199 915/1706/199 914/1698/284 +f 905/1700/202 913/1707/202 912/1701/285 +f 903/1703/204 911/1811/204 910/1704/286 +f 908/1696/283 916/1695/283 915/1706/199 +f 906/1699/284 914/1698/284 913/1707/202 +f 904/1702/285 912/1701/285 911/1708/204 +f 902/1705/286 910/1704/286 909/1710/200 +f 961/1711/221 963/1727/221 975/1712/225 +f 952/1375/199 956/1356/287 955/1365/287 +f 949/1714/204 954/1718/288 953/1358/288 +f 959/1715/289 960/1812/289 957/1716/290 +f 956/1356/287 960/1812/289 959/1715/289 +f 954/1718/288 958/1813/290 957/1719/290 +f 973/1720/225 975/1814/225 971/1721/219 +f 971/1721/219 964/1725/224 962/1723/224 +f 968/1724/288 966/1733/288 962/1723/224 +f 965/1726/287 967/1728/287 963/1727/221 +f 967/1728/287 965/1726/287 974/1729/289 +f 976/1730/289 974/1729/289 970/1731/290 +f 972/1732/290 970/1731/290 966/1733/288 +f 980/1735/203 984/1741/277 981/1736/277 +f 977/1738/198 982/1742/291 983/1739/291 +f 985/1380/275 988/1494/275 987/1383/292 +f 984/1741/277 988/1494/275 985/1380/275 +f 982/1742/291 986/1491/292 987/1383/292 +f 990/1743/200 992/1746/293 991/1744/293 +f 992/1746/293 994/1815/198 993/1747/198 +f 994/1748/198 996/1751/294 995/1749/294 +f 996/1751/294 998/1753/202 997/1752/202 +f 998/1753/202 1000/1755/295 999/1754/295 +f 1000/1755/295 1002/1757/203 1001/1756/203 +f 1002/1757/203 1004/1759/296 1003/1758/296 +f 1004/1759/296 990/1743/200 989/1745/200 +f 1013/1761/236 1022/1771/236 1021/1762/237 +f 1016/1764/238 1010/1773/238 1009/1765/239 +f 1026/1767/200 1005/1816/200 1024/1768/240 +f 1012/1770/241 1023/1779/241 1022/1771/236 +f 1015/1772/203 1020/1780/203 1010/1773/238 +f 1019/1774/242 1007/1778/242 1006/1775/202 +f 1018/1777/243 1008/1781/243 1007/1778/242 +f 1011/1769/240 1024/1768/240 1023/1779/241 +f 1014/1763/237 1021/1762/237 1020/1780/203 +f 1017/1766/239 1009/1765/239 1008/1781/243 +f 1034/1782/244 1045/1792/244 1044/1783/245 +f 1031/1785/203 1036/1796/203 1037/1786/246 +f 1028/1788/247 1039/1798/247 1040/1789/248 +f 1035/1791/249 1046/1794/249 1045/1792/244 +f 1041/1793/202 1047/1817/202 1046/1794/249 +f 1032/1795/250 1043/1801/250 1036/1796/203 +f 1029/1797/251 1038/1802/251 1039/1798/247 +f 1027/1790/248 1040/1789/248 1048/1799/200 +f 1033/1784/245 1044/1783/245 1043/1801/250 +f 1030/1787/246 1037/1786/246 1038/1802/251 diff --git a/src/main/resources/assets/hbm/textures/models/SteelBeam.png b/src/main/resources/assets/hbm/textures/models/SteelBeam.png deleted file mode 100644 index aca7ef40ff9b82c71f8e61e271ce0c0716e0fd41..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 311 zcmeAS@N?(olHy`uVBq!ia0vp^4nVBH!3HE3&8=$zQY`6?zK#qG8~eHcB(eheoCO|{ z#S9F5hd`K7RKu$QC@4|l8c`CQpH@KR5S`~O$0`i|W2{4u_>+JZS`YYHd@63DFTa~jt&*W@aaPe(v?DQ!?Pkdwg z9`DQd)I2$R$D8}*pB|PSniG8Pvxs)!=hv0N2bZe?^J zG%heMHvEiZ-v9stsYygZRA@u(n9FYRKn#U>DUM_xtYs{oM@)18gSe<>S|3JRUpv@$uog+wI)paB#=t(ObCPZXdGO z>v>vZgq07i$juKb0%O8bs0pyfAc4=U$jy&Nqv7CcwQ`Ha;v3iN^&MxknVU|hZZes8 zR;yJ{YYY;|jXts>H$S)lJfF|LWlyJ*x4h@IGFCZAi$ZG*5~zucS&^F`nt+(F6c!T@ zJDx)Ie`ZB)e&{3)+jc&mM_X4(3uCDcw8khc0bBrHE|;&V{rUNM$5_>rd_VQOYKcJt zHIXqZa`R(296A^imO@Q{H3kWMW<_p(Fl1nHf)`tMxm{_AF)MQO zgA7A$-6A)ejiIBzHSz?etO=Qf9-2C7IkXF?PmtyF~XJ) zt;o#}p0(M$^hWsEQL?omfEHvBVc}2DXG>JZK4a@6fy8@cMQ(oll?3ozC&nWya`S`V z*;reqkejsni;Qpo1B6yi%MU7M+2XAJBBMM|LCY3r^%oiC!P3H-fY`AV{)q%IV8Yh@ z$rfkz7a8S&3R<=}tG~!75B$u;#HElMu=7QI&L z``BXHqF3iGTsQH}x@}g!EjRkscU#%x6Sqpd-S_^o0nhxfbwAHkw0_(!Ai^jXT0YOF zmZhndw=ZG$I`7Xm%TpsaCHZWN*!j%(ai`t4_4z7G^Ra)kDAZMd|jE=tRMf6Vo% z%QC&dYJ(f5KD&?%GH+e*XWgl@^t$^ SEKUy?#0;LUelF{r5}E)UnZEx3 diff --git a/src/main/resources/assets/hbm/textures/models/SteelWall.png b/src/main/resources/assets/hbm/textures/models/SteelWall.png deleted file mode 100644 index 7ea29266039dda93944e7cafa5f83d22f7205cec..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 653 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 V$B-*#r|D;EpVK>Acp4M_zW~jHf}Q{X diff --git a/src/main/resources/assets/hbm/textures/models/test_container_double.png b/src/main/resources/assets/hbm/textures/models/test_container_double.png deleted file mode 100644 index 182a96c72f8ebff94fc39117d7536ee329a5fecd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 786 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!3HERU8}DLQY`6?zK#qG8~eHcB(ehe3dtTp zz6=aiYCyFu3=F@3LJcn%7)lKo7+xhXFj&oCU=S~uvn$XBD8X6a5n0T@z;_6Q8AUa` z8i0ZlC9V-A!TD(=<%vb93~dIox?sjWt-3=B*uo-U3d6>)E`G-e$( z;91kGba->2R)lx}$>s z&zf88cYYi1f2Vh9(u1hJ&((jPW{1CZezR5sE5G~uf%B_s5A3!7{Q4c(2#Y)YAT!Nh zEtIf-TyE99NoB{h%|b@D*VpgH#x{TE_2EzZpUJz{UOc{PU-T|RSiU_PxjJ$k%bq#k9<8~m6V4RpS6wLf zxO~T*741O3cHK0FsL{E{Y`^*&zc#sH`sKJeN8N1emfvE3 z?RnsIrvAC4k8(dExAO1!uMN@KbN?YU)Y8tYJb1cAJbi82PN5G)x4JinZI0mt1$=Sx zI+pYGC+t_=ma1Lzs=CzX_rlrjGtbDpnXxt{EaKhAH#_&=dPe{N diff --git a/src/main/resources/assets/hbm/textures/models/test_container_single.png b/src/main/resources/assets/hbm/textures/models/test_container_single.png deleted file mode 100644 index c00662549bee3f9832f29dbd4f97983493e8dc8d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 629 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=Ea{HEjtmSN`?>!lvI6-E$sR$z z3=CCj3=9n|3=F@3LJcn%7)lKo7+xhXFj&oCU=S~uvn$XBD8X6a5n0T@z;_6Q8AUa` z8i0ZlC9V-A!TD(=<%vb93~dIox?sjWt-3=E9NJzX3_D&pQ=YV0~} zz{7mu?|=XItLDURnGkl;sV(@AgGsLLtAlaRVwbw#jhverCGR}tyGDsx)#*9ip@BJj z>t0lxKd)u7`^<56O|Qs27OQ)oH*=lU`~1|zq0)Yl=N|48 zJ$An0nI4D(GaYD{bYtK5KWm&eKb-Q^ZGrJc?&p6T?N1r4?YGsO^!MVgg_{HYH+`&o zk#l8o&K`Ly>90#ZGxMJXO0V^?_~!n){hW)wOq^d^x_cxlEqT6RhAnsd^vMq+!|pq0 zKl8BIGl%E=rfa*eotaorVJSH;b#3|DnaU486dBo^epQ`uR)!O-_?WRw+WA8dpQcol zP5BC^H-7!K5YuVJSAT!IJNM+gl*fNB?0i-G``x(|uv_0;I()R4)!F&N&86+#&$-&# z7HszB7e6n`!|Ry77_9o{3iX>6_9bSoJfE}6&6*PArMVPF{Eu62uO(KU<{R_-BQV+- NJYD@<);T3K0RaEi9v1)r From 771938257ce8e9f869d665118b17621d333c7e60 Mon Sep 17 00:00:00 2001 From: Boblet Date: Mon, 25 Nov 2024 16:54:25 +0100 Subject: [PATCH 04/24] fixes, tweaks and other crap --- changelog | 3 ++ .../com/hbm/entity/item/EntityDroneBase.java | 12 +++--- .../hbm/entity/item/EntityRequestDrone.java | 2 +- .../sedna/factory/GunFactoryClient.java | 2 +- .../weapon/sedna/factory/LegoClient.java | 40 ++++++++++++++----- .../machine/TileEntityElectrolyser.java | 6 +-- .../com/hbm/util/DamageResistanceHandler.java | 2 - 7 files changed, 42 insertions(+), 25 deletions(-) diff --git a/changelog b/changelog index 5496f9298..4bc9dfdce 100644 --- a/changelog +++ b/changelog @@ -54,6 +54,7 @@ * Microwave explosions no longer destroy blocks, only the microwave and nearby players * Wings can now be used like armor mods * At higher pollution levels, skeletons can now spawn with guns +* Logistic drones now move at 0.625 blocks/t instead of 0.6. There is no balancing reason for this, I just hate weird numbers like 0.6 ## Fixed * The conveyor grabber should no longer skip over items when used in long lines @@ -72,3 +73,5 @@ * Fixed the wood burner destroying container items like buckets when using lava as fuel * Fixed pollution serialization for the fluid trait config being wrong * Fixed slag crashing the game when trying to flow into the void +* Fixed issue where drones that are too fast may skip waypoints +* Fixed the electrolyzer speed upgrades not increasing energy consumption as advertised diff --git a/src/main/java/com/hbm/entity/item/EntityDroneBase.java b/src/main/java/com/hbm/entity/item/EntityDroneBase.java index f7d12a9e2..b6e269869 100644 --- a/src/main/java/com/hbm/entity/item/EntityDroneBase.java +++ b/src/main/java/com/hbm/entity/item/EntityDroneBase.java @@ -103,14 +103,12 @@ public abstract class EntityDroneBase extends Entity { if(this.targetY != -1) { Vec3 dist = Vec3.createVectorHelper(targetX - posX, targetY - posY, targetZ - posZ); - double speed = getSpeed(); + double speed = Math.min(getSpeed(), dist.lengthVector()); - if(dist.lengthVector() >= speed) { - dist = dist.normalize(); - this.motionX = dist.xCoord * speed; - this.motionY = dist.yCoord * speed; - this.motionZ = dist.zCoord * speed; - } + dist = dist.normalize(); + this.motionX = dist.xCoord * speed; + this.motionY = dist.yCoord * speed; + this.motionZ = dist.zCoord * speed; } if(isCollidedHorizontally){ motionY += 1; diff --git a/src/main/java/com/hbm/entity/item/EntityRequestDrone.java b/src/main/java/com/hbm/entity/item/EntityRequestDrone.java index 9a63c5dfd..6e8a742a1 100644 --- a/src/main/java/com/hbm/entity/item/EntityRequestDrone.java +++ b/src/main/java/com/hbm/entity/item/EntityRequestDrone.java @@ -199,7 +199,7 @@ public class EntityRequestDrone extends EntityDroneBase { @Override public double getSpeed() { - return 0.6D; + return 0.625D; } @Override diff --git a/src/main/java/com/hbm/items/weapon/sedna/factory/GunFactoryClient.java b/src/main/java/com/hbm/items/weapon/sedna/factory/GunFactoryClient.java index 6dc100e1b..03ecc96c9 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/factory/GunFactoryClient.java +++ b/src/main/java/com/hbm/items/weapon/sedna/factory/GunFactoryClient.java @@ -158,7 +158,7 @@ public class GunFactoryClient { setRendererBulkBeam(LegoClient.RENDER_LIGHTNING, energy_tesla, energy_tesla_overcharge); setRendererBulkBeam(LegoClient.RENDER_TAU, tau_uranium); setRendererBulkBeam(LegoClient.RENDER_TAU_CHARGE, tau_uranium_charge); - setRendererBulkBeam(LegoClient.RENDER_LASER, energy_las, energy_las_overcharge); + setRendererBulkBeam(LegoClient.RENDER_LASER_RED, energy_las, energy_las_overcharge); setRendererBulk(LegoClient.RENDER_AP_BULLET, coil_tungsten, coil_ferrouranium); diff --git a/src/main/java/com/hbm/items/weapon/sedna/factory/LegoClient.java b/src/main/java/com/hbm/items/weapon/sedna/factory/LegoClient.java index a9cb9c42f..8725bac94 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/factory/LegoClient.java +++ b/src/main/java/com/hbm/items/weapon/sedna/factory/LegoClient.java @@ -19,6 +19,7 @@ import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.ActiveRenderInfo; import net.minecraft.client.renderer.RenderHelper; import net.minecraft.client.renderer.Tessellator; +import net.minecraft.entity.Entity; import net.minecraft.util.MathHelper; import net.minecraft.util.ResourceLocation; import net.minecraft.util.Vec3; @@ -121,11 +122,18 @@ public class LegoClient { public static BiConsumer RENDER_FLARE_WEAPON = (bullet, interp) -> { renderFlare(bullet, interp, 0.5F, 1F, 0.5F); }; private static final ResourceLocation flare = new ResourceLocation(RefStrings.MODID + ":textures/particle/flare.png"); - public static void renderFlare(EntityBulletBaseMK4 bullet, float interp, float r, float g, float b) { + public static void renderFlare(Entity bullet, float interp, float r, float g, float b) { if(bullet.ticksExisted < 2) return; - RenderArcFurnace.fullbright(true); + + double scale = Math.min(5, (bullet.ticksExisted + interp - 2) * 0.5) * (0.8 + bullet.worldObj.rand.nextDouble() * 0.4); + renderFlareSprite(bullet, interp, r, g, b, scale, 0.5F, 0.75F); + + RenderArcFurnace.fullbright(false); + } + public static void renderFlareSprite(Entity bullet, float interp, float r, float g, float b, double scale, float outerAlpha, float innerAlpha) { + GL11.glPushMatrix(); GL11.glEnable(GL11.GL_BLEND); GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE); @@ -148,9 +156,8 @@ public class LegoClient { double posX = 0; double posY = 0; double posZ = 0; - double scale = Math.min(5, (bullet.ticksExisted + interp - 2) * 0.5) * (0.8 + bullet.worldObj.rand.nextDouble() * 0.4); - tess.setColorRGBA_F(r, g, b, 0.5F); + tess.setColorRGBA_F(r, g, b, outerAlpha); tess.addVertexWithUV((double) (posX - f1 * scale - f3 * scale), (double) (posY - f5 * scale), (double) (posZ - f2 * scale - f4 * scale), 1, 1); tess.addVertexWithUV((double) (posX - f1 * scale + f3 * scale), (double) (posY + f5 * scale), (double) (posZ - f2 * scale + f4 * scale), 1, 0); tess.addVertexWithUV((double) (posX + f1 * scale + f3 * scale), (double) (posY + f5 * scale), (double) (posZ + f2 * scale + f4 * scale), 0, 0); @@ -158,7 +165,7 @@ public class LegoClient { scale *= 0.5D; - tess.setColorRGBA_F(1F, 1F, 1F, 0.75F); + tess.setColorRGBA_F(1F, 1F, 1F, innerAlpha); tess.addVertexWithUV((double) (posX - f1 * scale - f3 * scale), (double) (posY - f5 * scale), (double) (posZ - f2 * scale - f4 * scale), 1, 1); tess.addVertexWithUV((double) (posX - f1 * scale + f3 * scale), (double) (posY + f5 * scale), (double) (posZ - f2 * scale + f4 * scale), 1, 0); tess.addVertexWithUV((double) (posX + f1 * scale + f3 * scale), (double) (posY + f5 * scale), (double) (posZ + f2 * scale + f4 * scale), 0, 0); @@ -172,7 +179,6 @@ public class LegoClient { GL11.glAlphaFunc(GL11.GL_GREATER, 0.1F); GL11.glDisable(GL11.GL_BLEND); GL11.glPopMatrix(); - RenderArcFurnace.fullbright(false); } public static BiConsumer RENDER_GRENADE = (bullet, interp) -> { @@ -304,7 +310,11 @@ public class LegoClient { RenderArcFurnace.fullbright(false); }; - public static BiConsumer RENDER_LASER = (bullet, interp) -> { + public static BiConsumer RENDER_LASER_RED = (bullet, interp) -> { + renderStandardLaser(bullet, interp, 0x80, 0x15, 0x15); + }; + + public static void renderStandardLaser(EntityBulletBeamBase bullet, float interp, int r, int g, int b) { RenderArcFurnace.fullbright(true); GL11.glPushMatrix(); @@ -313,24 +323,34 @@ public class LegoClient { Vec3 delta = Vec3.createVectorHelper(0, bullet.beamLength, 0); double age = MathHelper.clamp_double(1D - ((double) bullet.ticksExisted - 2 + interp) / (double) bullet.getBulletConfig().expires, 0, 1); GL11.glScaled(age / 2 + 0.5, 1, age / 2 + 0.5); - int colorInner = ((int)(0x80 * age) << 16) | ((int)(0x15 * age) << 8) | (int) (0x15 * age); + int colorInner = ((int)(r * age) << 16) | ((int)(g * age) << 8) | (int) (b * age); BeamPronter.prontBeam(delta, EnumWaveType.RANDOM, EnumBeamType.SOLID, colorInner, colorInner, bullet.ticksExisted / 3, (int)(bullet.beamLength / 2 + 1), 0F, 8, 0.0625F); GL11.glPopMatrix(); RenderArcFurnace.fullbright(false); - }; + } public static BiConsumer RENDER_FOLLY = (bullet, interp) -> { + double age = MathHelper.clamp_double(1D - ((double) bullet.ticksExisted - 2 + interp) / (double) bullet.getBulletConfig().expires, 0, 1); RenderArcFurnace.fullbright(true); + GL11.glPushMatrix(); + renderFlareSprite(bullet, interp, 1F, 1F, 1F, (1 - age) * 7.5 + 1.5, 0.5F * (float) age, 0.75F * (float) age); + GL11.glPopMatrix(); + + GL11.glPushMatrix(); + GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE); + GL11.glAlphaFunc(GL11.GL_GREATER, 0); GL11.glRotatef(180 - bullet.rotationYaw, 0, 1F, 0); GL11.glRotatef(-bullet.rotationPitch - 90, 1F, 0, 0); Vec3 delta = Vec3.createVectorHelper(0, bullet.beamLength, 0); - double age = MathHelper.clamp_double(1D - ((double) bullet.ticksExisted - 2 + interp) / (double) bullet.getBulletConfig().expires, 0, 1); GL11.glScaled((1 - age) * 25 + 2.5, 1, (1 - age) * 25 + 2.5); int colorInner = ((int)(0x20 * age) << 16) | ((int)(0x20 * age) << 8) | (int) (0x20 * age); BeamPronter.prontBeam(delta, EnumWaveType.RANDOM, EnumBeamType.SOLID, colorInner, colorInner, bullet.ticksExisted / 3, (int)(bullet.beamLength / 2 + 1), 0F, 8, 0.0625F); + GL11.glAlphaFunc(GL11.GL_GREATER, 0.1F); + GL11.glDisable(GL11.GL_BLEND); GL11.glPopMatrix(); + RenderArcFurnace.fullbright(false); }; diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityElectrolyser.java b/src/main/java/com/hbm/tileentity/machine/TileEntityElectrolyser.java index d176a753e..ef4ad3a02 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityElectrolyser.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityElectrolyser.java @@ -132,8 +132,8 @@ public class TileEntityElectrolyser extends TileEntityMachineBase implements IEn int speedLevel = Math.min(UpgradeManager.getLevel(UpgradeType.SPEED), 3); int powerLevel = Math.min(UpgradeManager.getLevel(UpgradeType.POWER), 3); - usageOre = usageOreBase - usageOreBase * powerLevel / 4; - usageFluid = usageFluidBase - usageFluidBase * powerLevel / 4; + usageOre = usageOreBase - usageOreBase * powerLevel / 4 + usageOreBase * speedLevel; + usageFluid = usageFluidBase - usageFluidBase * powerLevel / 4 + usageFluidBase * speedLevel; for(int i = 0; i < getCycleCount(); i++) { if (this.canProcessFluid()) { @@ -585,9 +585,7 @@ public class TileEntityElectrolyser extends TileEntityMachineBase implements IEn public int[] getMatsToCopy() { ArrayList types = new ArrayList<>(); if(leftStack != null) types.add(leftStack.material.id); - if(rightStack != null) types.add(rightStack.material.id); - return BobMathUtil.intCollectionToArray(types); } } diff --git a/src/main/java/com/hbm/util/DamageResistanceHandler.java b/src/main/java/com/hbm/util/DamageResistanceHandler.java index 5fb9f944d..823e97126 100644 --- a/src/main/java/com/hbm/util/DamageResistanceHandler.java +++ b/src/main/java/com/hbm/util/DamageResistanceHandler.java @@ -81,8 +81,6 @@ public class DamageResistanceHandler { amount -= dt; dr *= MathHelper.clamp_float(1F - pierce, 0F, 1F); - System.out.println(dt + " " + dr); - return amount *= (1F - dr); } From 78fa7b23552cf935fa55ab95cc9521c88281fb9d Mon Sep 17 00:00:00 2001 From: Boblet Date: Wed, 27 Nov 2024 16:49:44 +0100 Subject: [PATCH 05/24] variants n shit --- changelog | 2 + .../com/hbm/config/FalloutConfigJSON.java | 1 + .../java/com/hbm/entity/EntityMappings.java | 1 + .../projectile/EntityBulletBaseMK4CL.java | 81 ++++++++++++++++++ src/main/java/com/hbm/items/ModItems.java | 62 +++++++------- .../hbm/items/weapon/sedna/BulletConfig.java | 2 + .../weapon/sedna/factory/GunFactory.java | 2 +- .../sedna/factory/GunFactoryClient.java | 5 +- .../hbm/items/weapon/sedna/factory/Lego.java | 6 ++ .../weapon/sedna/factory/LegoClient.java | 9 ++ .../weapon/sedna/factory/XFactoryFlamer.java | 23 ++++- .../weapon/sedna/factory/XFactoryFolly.java | 19 +++- .../sedna/hud/HUDComponentAmmoCounter.java | 1 + .../sedna/hud/HUDComponentDurabilityBar.java | 3 +- src/main/java/com/hbm/main/ClientProxy.java | 1 + .../com/hbm/main/ModEventHandlerRenderer.java | 2 +- .../java/com/hbm/main/ResourceManager.java | 1 + .../item/weapon/sedna/ItemRenderFlamer.java | 12 ++- src/main/resources/assets/hbm/lang/de_DE.lang | 2 + src/main/resources/assets/hbm/lang/en_US.lang | 2 + .../assets/hbm/textures/items/ammo.png | Bin 17198 -> 17703 bytes .../textures/items/ammo_secret.folly_nuke.png | Bin 0 -> 470 bytes .../models/weapons/flamethrower_topaz.png | Bin 0 -> 6279 bytes 23 files changed, 197 insertions(+), 40 deletions(-) create mode 100644 src/main/java/com/hbm/entity/projectile/EntityBulletBaseMK4CL.java create mode 100644 src/main/resources/assets/hbm/textures/items/ammo_secret.folly_nuke.png create mode 100644 src/main/resources/assets/hbm/textures/models/weapons/flamethrower_topaz.png diff --git a/changelog b/changelog index 4bc9dfdce..0a0e0f03d 100644 --- a/changelog +++ b/changelog @@ -55,6 +55,8 @@ * Wings can now be used like armor mods * At higher pollution levels, skeletons can now spawn with guns * Logistic drones now move at 0.625 blocks/t instead of 0.6. There is no balancing reason for this, I just hate weird numbers like 0.6 +* Fallout effects now remove snow layers in the same area where they would remove things like small plants and leaves +* Adjusted damage values to many swords and some tools ## Fixed * The conveyor grabber should no longer skip over items when used in long lines diff --git a/src/main/java/com/hbm/config/FalloutConfigJSON.java b/src/main/java/com/hbm/config/FalloutConfigJSON.java index 039cf060e..65636f402 100644 --- a/src/main/java/com/hbm/config/FalloutConfigJSON.java +++ b/src/main/java/com/hbm/config/FalloutConfigJSON.java @@ -62,6 +62,7 @@ public class FalloutConfigJSON { entries.add(new FalloutEntry() .mB(Blocks.brown_mushroom_block).mM(10) .prim(new Triplet(ModBlocks.waste_log, 0, 1)) .max(woodEffectRange)); entries.add(new FalloutEntry() .mB(Blocks.red_mushroom_block) .prim(new Triplet(Blocks.air, 0, 1)) .max(woodEffectRange)); entries.add(new FalloutEntry() .mB(Blocks.brown_mushroom_block) .prim(new Triplet(Blocks.air, 0, 1)) .max(woodEffectRange)); + entries.add(new FalloutEntry() .mB(Blocks.snow_layer) .prim(new Triplet(Blocks.air, 0, 1)) .max(woodEffectRange)); entries.add(new FalloutEntry() .mB(Blocks.planks) .prim(new Triplet(ModBlocks.waste_planks, 0, 1)) .max(woodEffectRange)); /* if it can't be petrified, destroy it */ entries.add(new FalloutEntry() .mMa(Material.wood) .prim(new Triplet(Blocks.air, 0, 1)) .max(woodEffectRange)); diff --git a/src/main/java/com/hbm/entity/EntityMappings.java b/src/main/java/com/hbm/entity/EntityMappings.java index 352e85ca4..614ca4284 100644 --- a/src/main/java/com/hbm/entity/EntityMappings.java +++ b/src/main/java/com/hbm/entity/EntityMappings.java @@ -148,6 +148,7 @@ public class EntityMappings { addEntity(EntityFallingNuke.class, "entity_falling_bomb", 1000); addEntity(EntityBulletBaseNT.class, "entity_bullet_mk3", 250, false); addEntity(EntityBulletBaseMK4.class, "entity_bullet_mk4", 250, false); + addEntity(EntityBulletBaseMK4CL.class, "entity_bullet_mk4_cl", 250, false); addEntity(EntityBulletBeamBase.class, "entity_beam_mk4", 250, false); addEntity(EntityMinerRocket.class, "entity_miner_lander", 1000); addEntity(EntityFogFX.class, "entity_nuclear_fog", 1000); diff --git a/src/main/java/com/hbm/entity/projectile/EntityBulletBaseMK4CL.java b/src/main/java/com/hbm/entity/projectile/EntityBulletBaseMK4CL.java new file mode 100644 index 000000000..42591af80 --- /dev/null +++ b/src/main/java/com/hbm/entity/projectile/EntityBulletBaseMK4CL.java @@ -0,0 +1,81 @@ +package com.hbm.entity.projectile; + +import java.util.ArrayList; +import java.util.List; + +import com.hbm.entity.logic.IChunkLoader; +import com.hbm.items.weapon.sedna.BulletConfig; +import com.hbm.main.MainRegistry; + +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.world.ChunkCoordIntPair; +import net.minecraft.world.World; +import net.minecraftforge.common.ForgeChunkManager; +import net.minecraftforge.common.ForgeChunkManager.Ticket; +import net.minecraftforge.common.ForgeChunkManager.Type; + +public class EntityBulletBaseMK4CL extends EntityBulletBaseMK4 implements IChunkLoader { + + private Ticket loaderTicket; + private List loadedChunks = new ArrayList(); + + public EntityBulletBaseMK4CL(World world) { + super(world); + } + + public EntityBulletBaseMK4CL(EntityLivingBase entity, BulletConfig config, float damage, float spread, double sideOffset, double heightOffset, double forwardOffset) { + super(entity, config, damage, spread, sideOffset, heightOffset, forwardOffset); + } + + @Override + protected void entityInit() { + super.entityInit(); + init(ForgeChunkManager.requestTicket(MainRegistry.instance, worldObj, Type.ENTITY)); + } + + @Override + public void init(Ticket ticket) { + if(!worldObj.isRemote && ticket != null) { + if(loaderTicket == null) { + loaderTicket = ticket; + loaderTicket.bindEntity(this); + loaderTicket.getModData(); + } + ForgeChunkManager.forceChunk(loaderTicket, new ChunkCoordIntPair(chunkCoordX, chunkCoordZ)); + } + } + + @Override + public void onUpdate() { + super.onUpdate(); + + if(!worldObj.isRemote) loadNeighboringChunks((int)Math.floor(posX / 16D), (int)Math.floor(posZ / 16D)); + } + + @Override + public void setDead() { + super.setDead(); + clearChunkLoader(); + } + + public void clearChunkLoader() { + if(!worldObj.isRemote && loaderTicket != null) { + for(ChunkCoordIntPair chunk : loadedChunks) { + ForgeChunkManager.unforceChunk(loaderTicket, chunk); + } + } + } + + public void loadNeighboringChunks(int newChunkX, int newChunkZ) { + if(!worldObj.isRemote && loaderTicket != null) { + + clearChunkLoader(); + loadedChunks.clear(); + loadedChunks.add(new ChunkCoordIntPair(newChunkX, newChunkZ)); + + for(ChunkCoordIntPair chunk : loadedChunks) { + ForgeChunkManager.forceChunk(loaderTicket, chunk); + } + } + } +} diff --git a/src/main/java/com/hbm/items/ModItems.java b/src/main/java/com/hbm/items/ModItems.java index a4afc5f24..a5b47a678 100644 --- a/src/main/java/com/hbm/items/ModItems.java +++ b/src/main/java/com/hbm/items/ModItems.java @@ -1602,6 +1602,7 @@ public class ModItems { public static Item gun_liberator; public static Item gun_congolake; public static Item gun_flamer; + public static Item gun_flamer_topaz; public static Item gun_uzi; public static Item gun_uzi_akimbo; public static Item gun_spas12; @@ -4841,7 +4842,7 @@ public class ModItems { .addHitAbility(new WeaponAbility.ChainsawAbility(10)) .addHitAbility(new WeaponAbility.BeheaderAbility()).setShears().setUnlocalizedName("chainsaw").setTextureName(RefStrings.MODID + ":chainsaw"); - schrabidium_sword = new ItemSwordAbility(150, 0, MainRegistry.tMatSchrab) + schrabidium_sword = new ItemSwordAbility(75, 0, MainRegistry.tMatSchrab) .addHitAbility(new WeaponAbility.RadiationAbility(50F)) .addHitAbility(new WeaponAbility.VampireAbility(2F)) .setRarity(EnumRarity.rare).setUnlocalizedName("schrabidium_sword").setTextureName(RefStrings.MODID + ":schrabidium_sword"); @@ -4892,22 +4893,22 @@ public class ModItems { steel_shovel = new ItemToolAbility(3F, 0, MainRegistry.tMatSteel, EnumToolType.SHOVEL).setUnlocalizedName("steel_shovel").setTextureName(RefStrings.MODID + ":steel_shovel"); steel_hoe = new ModHoe(MainRegistry.tMatSteel).setUnlocalizedName("steel_hoe").setTextureName(RefStrings.MODID + ":steel_hoe"); - alloy_sword = new ItemSwordAbility(9F, 0, MainRegistry.tMatAlloy) + alloy_sword = new ItemSwordAbility(8F, 0, MainRegistry.tMatAlloy) .addHitAbility(new WeaponAbility.StunAbility(2)).setUnlocalizedName("alloy_sword").setTextureName(RefStrings.MODID + ":alloy_sword"); - alloy_pickaxe = new ItemToolAbility(6F, 0, MainRegistry.tMatAlloy, EnumToolType.PICKAXE) + alloy_pickaxe = new ItemToolAbility(5F, 0, MainRegistry.tMatAlloy, EnumToolType.PICKAXE) .addBreakAbility(new ToolAbility.RecursionAbility(3)).setUnlocalizedName("alloy_pickaxe").setTextureName(RefStrings.MODID + ":alloy_pickaxe"); alloy_axe = new ItemToolAbility(7F, 0, MainRegistry.tMatAlloy, EnumToolType.AXE) .addBreakAbility(new ToolAbility.RecursionAbility(3)) .addHitAbility(new WeaponAbility.BeheaderAbility()).setUnlocalizedName("alloy_axe").setTextureName(RefStrings.MODID + ":alloy_axe"); - alloy_shovel = new ItemToolAbility(5F, 0, MainRegistry.tMatAlloy, EnumToolType.SHOVEL) + alloy_shovel = new ItemToolAbility(4F, 0, MainRegistry.tMatAlloy, EnumToolType.SHOVEL) .addBreakAbility(new ToolAbility.RecursionAbility(3)).setUnlocalizedName("alloy_shovel").setTextureName(RefStrings.MODID + ":alloy_shovel"); alloy_hoe = new ModHoe(MainRegistry.tMatAlloy).setUnlocalizedName("alloy_hoe").setTextureName(RefStrings.MODID + ":alloy_hoe"); - cmb_sword = new ItemSwordAbility(50F, 0, MainRegistry.tMatCMB) + cmb_sword = new ItemSwordAbility(35F, 0, MainRegistry.tMatCMB) .addHitAbility(new WeaponAbility.StunAbility(2)) .addHitAbility(new WeaponAbility.VampireAbility(2F)).setUnlocalizedName("cmb_sword").setTextureName(RefStrings.MODID + ":cmb_sword"); @@ -4917,7 +4918,7 @@ public class ModItems { .addBreakAbility(new ToolAbility.SilkAbility()) .addBreakAbility(new LuckAbility(3)).setUnlocalizedName("cmb_pickaxe").setTextureName(RefStrings.MODID + ":cmb_pickaxe"); - cmb_axe = new ItemToolAbility(12.5F, 0, MainRegistry.tMatCMB, EnumToolType.AXE) + cmb_axe = new ItemToolAbility(30F, 0, MainRegistry.tMatCMB, EnumToolType.AXE) .addBreakAbility(new ToolAbility.RecursionAbility(5)) .addBreakAbility(new ToolAbility.SmelterAbility()) .addBreakAbility(new ToolAbility.SilkAbility()) @@ -4932,16 +4933,16 @@ public class ModItems { cmb_hoe = new ModHoe(MainRegistry.tMatCMB).setUnlocalizedName("cmb_hoe").setTextureName(RefStrings.MODID + ":cmb_hoe"); - elec_sword = new ItemSwordAbilityPower(15F, 0, MainRegistry.tMatElec, 500000, 1000, 100) + elec_sword = new ItemSwordAbilityPower(12.5F, 0, MainRegistry.tMatElec, 500000, 1000, 100) .addHitAbility(new WeaponAbility.StunAbility(5)).setUnlocalizedName("elec_sword").setTextureName(RefStrings.MODID + ":elec_sword_anim"); - elec_pickaxe = new ItemToolAbilityPower(10F, 0, MainRegistry.tMatElec, EnumToolType.PICKAXE, 500000, 1000, 100) + elec_pickaxe = new ItemToolAbilityPower(6F, 0, MainRegistry.tMatElec, EnumToolType.PICKAXE, 500000, 1000, 100) .addBreakAbility(new ToolAbility.HammerAbility(2)) .addBreakAbility(new ToolAbility.RecursionAbility(5)) .addBreakAbility(new ToolAbility.SilkAbility()) .addBreakAbility(new LuckAbility(2)).setUnlocalizedName("elec_pickaxe").setTextureName(RefStrings.MODID + ":elec_drill_anim"); - elec_axe = new ItemToolAbilityPower(12.5F, 0, MainRegistry.tMatElec, EnumToolType.AXE, 500000, 1000, 100) + elec_axe = new ItemToolAbilityPower(10F, 0, MainRegistry.tMatElec, EnumToolType.AXE, 500000, 1000, 100) .addBreakAbility(new ToolAbility.HammerAbility(2)) .addBreakAbility(new ToolAbility.RecursionAbility(5)) .addBreakAbility(new ToolAbility.SilkAbility()) @@ -4949,13 +4950,13 @@ public class ModItems { .addHitAbility(new WeaponAbility.ChainsawAbility(15)) .addHitAbility(new WeaponAbility.BeheaderAbility()).setShears().setUnlocalizedName("elec_axe").setTextureName(RefStrings.MODID + ":elec_chainsaw_anim"); - elec_shovel = new ItemToolAbilityPower(7.5F, 0, MainRegistry.tMatElec, EnumToolType.SHOVEL, 500000, 1000, 100) + elec_shovel = new ItemToolAbilityPower(5F, 0, MainRegistry.tMatElec, EnumToolType.SHOVEL, 500000, 1000, 100) .addBreakAbility(new ToolAbility.HammerAbility(2)) .addBreakAbility(new ToolAbility.RecursionAbility(5)) .addBreakAbility(new ToolAbility.SilkAbility()) .addBreakAbility(new LuckAbility(2)).setUnlocalizedName("elec_shovel").setTextureName(RefStrings.MODID + ":elec_shovel_anim"); - desh_sword = new ItemSwordAbility(15F, 0, MainRegistry.tMatDesh) + desh_sword = new ItemSwordAbility(12.5F, 0, MainRegistry.tMatDesh) .addHitAbility(new WeaponAbility.StunAbility(2)).setUnlocalizedName("desh_sword").setTextureName(RefStrings.MODID + ":desh_sword"); desh_pickaxe = new ItemToolAbility(5F, -0.05, MainRegistry.tMatDesh, EnumToolType.PICKAXE) @@ -4964,7 +4965,7 @@ public class ModItems { .addBreakAbility(new ToolAbility.SilkAbility()) .addBreakAbility(new LuckAbility(2)).setUnlocalizedName("desh_pickaxe").setTextureName(RefStrings.MODID + ":desh_pickaxe"); - desh_axe = new ItemToolAbility(6.5F, -0.05, MainRegistry.tMatDesh, EnumToolType.AXE) + desh_axe = new ItemToolAbility(7.5F, -0.05, MainRegistry.tMatDesh, EnumToolType.AXE) .addBreakAbility(new ToolAbility.HammerAbility(1)) .addBreakAbility(new ToolAbility.RecursionAbility(3)) .addBreakAbility(new ToolAbility.SilkAbility()) @@ -5046,14 +5047,14 @@ public class ModItems { .addBreakAbility(new ToolAbility.CentrifugeAbility()).setMaxDamage(50).setUnlocalizedName("centri_stick").setTextureName(RefStrings.MODID + ":centri_stick"); smashing_hammer = new ItemToolAbility(12F, -0.1, MainRegistry.tMatSteel, EnumToolType.MINER) .addBreakAbility(new ToolAbility.ShredderAbility()).setMaxDamage(2500).setUnlocalizedName("smashing_hammer").setTextureName(RefStrings.MODID + ":smashing_hammer"); - drax = new ItemToolAbilityPower(15F, -0.05, MainRegistry.tMatElec, EnumToolType.MINER, 500000000, 100000, 5000) + drax = new ItemToolAbilityPower(10F, -0.05, MainRegistry.tMatElec, EnumToolType.MINER, 500000000, 100000, 5000) .addBreakAbility(new ToolAbility.SmelterAbility()) .addBreakAbility(new ToolAbility.ShredderAbility()) .addBreakAbility(new ToolAbility.LuckAbility(2)) .addBreakAbility(new ToolAbility.HammerAbility(1)) .addBreakAbility(new ToolAbility.HammerAbility(2)) .addBreakAbility(new ToolAbility.RecursionAbility(5)).setUnlocalizedName("drax").setTextureName(RefStrings.MODID + ":drax"); - drax_mk2 = new ItemToolAbilityPower(20F, -0.05, MainRegistry.tMatElec, EnumToolType.MINER, 1000000000, 250000, 7500) + drax_mk2 = new ItemToolAbilityPower(15F, -0.05, MainRegistry.tMatElec, EnumToolType.MINER, 1000000000, 250000, 7500) .addBreakAbility(new ToolAbility.SmelterAbility()) .addBreakAbility(new ToolAbility.ShredderAbility()) .addBreakAbility(new ToolAbility.CentrifugeAbility()) @@ -5086,7 +5087,7 @@ public class ModItems { .addHitAbility(new WeaponAbility.VampireAbility(2F)) .addHitAbility(new WeaponAbility.BeheaderAbility()) .setDepthRockBreaker().setUnlocalizedName("bismuth_pickaxe").setTextureName(RefStrings.MODID + ":bismuth_pickaxe"); - bismuth_axe = new ItemToolAbility(125F, 0, matBismuth, EnumToolType.AXE) + bismuth_axe = new ItemToolAbility(25F, 0, matBismuth, EnumToolType.AXE) .addBreakAbility(new ToolAbility.HammerAbility(2)) .addBreakAbility(new ToolAbility.RecursionAbility(4)) .addBreakAbility(new ToolAbility.ShredderAbility()) @@ -5108,7 +5109,7 @@ public class ModItems { .addHitAbility(new WeaponAbility.VampireAbility(2F)) .addHitAbility(new WeaponAbility.BeheaderAbility()) .setDepthRockBreaker().setUnlocalizedName("volcanic_pickaxe").setTextureName(RefStrings.MODID + ":volcanic_pickaxe"); - volcanic_axe = new ItemToolAbility(125F, 0, matVolcano, EnumToolType.AXE) + volcanic_axe = new ItemToolAbility(25F, 0, matVolcano, EnumToolType.AXE) .addBreakAbility(new ToolAbility.HammerAbility(2)) .addBreakAbility(new ToolAbility.RecursionAbility(4)) .addBreakAbility(new ToolAbility.SmelterAbility()) @@ -5129,7 +5130,7 @@ public class ModItems { .addHitAbility(new WeaponAbility.VampireAbility(5F)) .addHitAbility(new WeaponAbility.BeheaderAbility()) .setDepthRockBreaker().setUnlocalizedName("chlorophyte_pickaxe").setTextureName(RefStrings.MODID + ":chlorophyte_pickaxe"); - chlorophyte_axe = new ItemToolAbility(175F, 0, matChlorophyte, EnumToolType.AXE) + chlorophyte_axe = new ItemToolAbility(50F, 0, matChlorophyte, EnumToolType.AXE) .addBreakAbility(new ToolAbility.HammerAbility(2)) .addBreakAbility(new ToolAbility.RecursionAbility(4)) .addBreakAbility(new ToolAbility.LuckAbility(4)) @@ -5152,7 +5153,7 @@ public class ModItems { .addHitAbility(new WeaponAbility.PhosphorusAbility(60)) .addHitAbility(new WeaponAbility.BeheaderAbility()) .setDepthRockBreaker().setUnlocalizedName("mese_pickaxe").setTextureName(RefStrings.MODID + ":mese_pickaxe"); - mese_axe = new ItemToolAbility(250F, 0, matMese, EnumToolType.AXE) + mese_axe = new ItemToolAbility(75F, 0, matMese, EnumToolType.AXE) .addBreakAbility(new ToolAbility.HammerAbility(3)) .addBreakAbility(new ToolAbility.RecursionAbility(5)) .addBreakAbility(new ToolAbility.SilkAbility()) @@ -5172,18 +5173,18 @@ public class ModItems { .addBreakAbility(new ToolAbility.HammerAbility(1)).setUnlocalizedName("dwarven_pickaxe").setMaxDamage(250).setTextureName(RefStrings.MODID + ":dwarven_pickaxe"); ToolMaterial matMeteorite = EnumHelper.addToolMaterial("HBM_METEORITE", 4, 0, 50F, 0.0F, 200).setRepairItem(new ItemStack(ModItems.plate_paa)); - meteorite_sword = new ItemSwordMeteorite(10F, 0, matMeteorite).setUnlocalizedName("meteorite_sword").setTextureName(RefStrings.MODID + ":meteorite_sword"); - meteorite_sword_seared = new ItemSwordMeteorite(15F, 0, matMeteorite).setUnlocalizedName("meteorite_sword_seared").setTextureName(RefStrings.MODID + ":meteorite_sword"); - meteorite_sword_reforged = new ItemSwordMeteorite(25F, 0, matMeteorite).setUnlocalizedName("meteorite_sword_reforged").setTextureName(RefStrings.MODID + ":meteorite_sword"); - meteorite_sword_hardened = new ItemSwordMeteorite(35F, 0, matMeteorite).setUnlocalizedName("meteorite_sword_hardened").setTextureName(RefStrings.MODID + ":meteorite_sword"); - meteorite_sword_alloyed = new ItemSwordMeteorite(50F, 0, matMeteorite).setUnlocalizedName("meteorite_sword_alloyed").setTextureName(RefStrings.MODID + ":meteorite_sword"); - meteorite_sword_machined = new ItemSwordMeteorite(65F, 0, matMeteorite).setUnlocalizedName("meteorite_sword_machined").setTextureName(RefStrings.MODID + ":meteorite_sword"); - meteorite_sword_treated = new ItemSwordMeteorite(80F, 0, matMeteorite).setUnlocalizedName("meteorite_sword_treated").setTextureName(RefStrings.MODID + ":meteorite_sword"); - meteorite_sword_etched = new ItemSwordMeteorite(100F, 0, matMeteorite).setUnlocalizedName("meteorite_sword_etched").setTextureName(RefStrings.MODID + ":meteorite_sword"); - meteorite_sword_bred = new ItemSwordMeteorite(125F, 0, matMeteorite).setUnlocalizedName("meteorite_sword_bred").setTextureName(RefStrings.MODID + ":meteorite_sword"); - meteorite_sword_irradiated = new ItemSwordMeteorite(175F, 0, matMeteorite).setUnlocalizedName("meteorite_sword_irradiated").setTextureName(RefStrings.MODID + ":meteorite_sword"); - meteorite_sword_fused = new ItemSwordMeteorite(250F, 0, matMeteorite).setUnlocalizedName("meteorite_sword_fused").setTextureName(RefStrings.MODID + ":meteorite_sword"); - meteorite_sword_baleful = new ItemSwordMeteorite(500F, 0, matMeteorite).setUnlocalizedName("meteorite_sword_baleful").setTextureName(RefStrings.MODID + ":meteorite_sword"); + meteorite_sword = new ItemSwordMeteorite(9F, 0, matMeteorite).setUnlocalizedName("meteorite_sword").setTextureName(RefStrings.MODID + ":meteorite_sword"); + meteorite_sword_seared = new ItemSwordMeteorite(10F, 0, matMeteorite).setUnlocalizedName("meteorite_sword_seared").setTextureName(RefStrings.MODID + ":meteorite_sword"); + meteorite_sword_reforged = new ItemSwordMeteorite(12.5F, 0, matMeteorite).setUnlocalizedName("meteorite_sword_reforged").setTextureName(RefStrings.MODID + ":meteorite_sword"); + meteorite_sword_hardened = new ItemSwordMeteorite(15F, 0, matMeteorite).setUnlocalizedName("meteorite_sword_hardened").setTextureName(RefStrings.MODID + ":meteorite_sword"); + meteorite_sword_alloyed = new ItemSwordMeteorite(17.5F, 0, matMeteorite).setUnlocalizedName("meteorite_sword_alloyed").setTextureName(RefStrings.MODID + ":meteorite_sword"); + meteorite_sword_machined = new ItemSwordMeteorite(20F, 0, matMeteorite).setUnlocalizedName("meteorite_sword_machined").setTextureName(RefStrings.MODID + ":meteorite_sword"); + meteorite_sword_treated = new ItemSwordMeteorite(22.5F, 0, matMeteorite).setUnlocalizedName("meteorite_sword_treated").setTextureName(RefStrings.MODID + ":meteorite_sword"); + meteorite_sword_etched = new ItemSwordMeteorite(25F, 0, matMeteorite).setUnlocalizedName("meteorite_sword_etched").setTextureName(RefStrings.MODID + ":meteorite_sword"); + meteorite_sword_bred = new ItemSwordMeteorite(30F, 0, matMeteorite).setUnlocalizedName("meteorite_sword_bred").setTextureName(RefStrings.MODID + ":meteorite_sword"); + meteorite_sword_irradiated = new ItemSwordMeteorite(35F, 0, matMeteorite).setUnlocalizedName("meteorite_sword_irradiated").setTextureName(RefStrings.MODID + ":meteorite_sword"); + meteorite_sword_fused = new ItemSwordMeteorite(50F, 0, matMeteorite).setUnlocalizedName("meteorite_sword_fused").setTextureName(RefStrings.MODID + ":meteorite_sword"); + meteorite_sword_baleful = new ItemSwordMeteorite(75F, 0, matMeteorite).setUnlocalizedName("meteorite_sword_baleful").setTextureName(RefStrings.MODID + ":meteorite_sword"); mask_of_infamy = new MaskOfInfamy(ArmorMaterial.IRON, 0).setUnlocalizedName("mask_of_infamy").setMaxStackSize(1).setTextureName(RefStrings.MODID + ":mask_of_infamy"); @@ -6900,6 +6901,7 @@ public class ModItems { GameRegistry.registerItem(gun_liberator, gun_liberator.getUnlocalizedName()); GameRegistry.registerItem(gun_congolake, gun_congolake.getUnlocalizedName()); GameRegistry.registerItem(gun_flamer, gun_flamer.getUnlocalizedName()); + GameRegistry.registerItem(gun_flamer_topaz, gun_flamer_topaz.getUnlocalizedName()); GameRegistry.registerItem(gun_uzi, gun_uzi.getUnlocalizedName()); GameRegistry.registerItem(gun_uzi_akimbo, gun_uzi_akimbo.getUnlocalizedName()); GameRegistry.registerItem(gun_spas12, gun_spas12.getUnlocalizedName()); diff --git a/src/main/java/com/hbm/items/weapon/sedna/BulletConfig.java b/src/main/java/com/hbm/items/weapon/sedna/BulletConfig.java index 8b4357cd7..9f7eab4ff 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/BulletConfig.java +++ b/src/main/java/com/hbm/items/weapon/sedna/BulletConfig.java @@ -95,6 +95,7 @@ public class BulletConfig implements Cloneable { } public BulletConfig setBeam() { this.pType = ProjectileType.BEAM; return this; } + public BulletConfig setChunkloading() { this.pType = ProjectileType.BULLET_CHUNKLOADING; return this; } public BulletConfig setItem(Item ammo) { this.ammo = new ComparableStack(ammo); return this; } public BulletConfig setItem(EnumAmmo ammo) { this.ammo = new ComparableStack(ModItems.ammo_standard, 1, ammo.ordinal()); return this; } public BulletConfig setItem(EnumAmmoSecret ammo) { this.ammo = new ComparableStack(ModItems.ammo_secret, 1, ammo.ordinal()); return this; } @@ -135,6 +136,7 @@ public class BulletConfig implements Cloneable { public static enum ProjectileType { BULLET, + BULLET_CHUNKLOADING, BEAM } diff --git a/src/main/java/com/hbm/items/weapon/sedna/factory/GunFactory.java b/src/main/java/com/hbm/items/weapon/sedna/factory/GunFactory.java index f75a882fd..eebf26029 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/factory/GunFactory.java +++ b/src/main/java/com/hbm/items/weapon/sedna/factory/GunFactory.java @@ -91,7 +91,7 @@ public class GunFactory { } public static enum EnumAmmoSecret { - FOLLY_SM, + FOLLY_SM, FOLLY_NUKE, M44_EQUESTRIAN, G12_EQUESTRIAN, BMG50_EQUESTRIAN } } diff --git a/src/main/java/com/hbm/items/weapon/sedna/factory/GunFactoryClient.java b/src/main/java/com/hbm/items/weapon/sedna/factory/GunFactoryClient.java index 03ecc96c9..69fb56d80 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/factory/GunFactoryClient.java +++ b/src/main/java/com/hbm/items/weapon/sedna/factory/GunFactoryClient.java @@ -50,7 +50,8 @@ public class GunFactoryClient { MinecraftForgeClient.registerItemRenderer(ModItems.gun_am180, new ItemRenderAm180()); MinecraftForgeClient.registerItemRenderer(ModItems.gun_liberator, new ItemRenderLiberator()); MinecraftForgeClient.registerItemRenderer(ModItems.gun_congolake, new ItemRenderCongoLake()); - MinecraftForgeClient.registerItemRenderer(ModItems.gun_flamer, new ItemRenderFlamer()); + MinecraftForgeClient.registerItemRenderer(ModItems.gun_flamer, new ItemRenderFlamer(ResourceManager.flamethrower_tex)); + MinecraftForgeClient.registerItemRenderer(ModItems.gun_flamer_topaz, new ItemRenderFlamer(ResourceManager.flamethrower_topaz_tex)); MinecraftForgeClient.registerItemRenderer(ModItems.gun_lag, new ItemRenderLAG()); MinecraftForgeClient.registerItemRenderer(ModItems.gun_uzi, new ItemRenderUzi()); MinecraftForgeClient.registerItemRenderer(ModItems.gun_uzi_akimbo, new ItemRenderUziAkimbo()); @@ -163,6 +164,7 @@ public class GunFactoryClient { setRendererBulk(LegoClient.RENDER_AP_BULLET, coil_tungsten, coil_ferrouranium); folly_sm.setRendererBeam(LegoClient.RENDER_FOLLY); + folly_nuke.setRenderer(LegoClient.RENDER_BIG_NUKE); //HUDS ((ItemGunBaseNT) ModItems.gun_debug) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO); @@ -180,6 +182,7 @@ public class GunFactoryClient { ((ItemGunBaseNT) ModItems.gun_liberator) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO); ((ItemGunBaseNT) ModItems.gun_congolake) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO); ((ItemGunBaseNT) ModItems.gun_flamer) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO_NOCOUNTER); + ((ItemGunBaseNT) ModItems.gun_flamer_topaz) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO_NOCOUNTER); ((ItemGunBaseNT) ModItems.gun_uzi) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO); ((ItemGunBaseNT) ModItems.gun_spas12) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO); ((ItemGunBaseNT) ModItems.gun_panzerschreck) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO); diff --git a/src/main/java/com/hbm/items/weapon/sedna/factory/Lego.java b/src/main/java/com/hbm/items/weapon/sedna/factory/Lego.java index f76d707dd..511f5f586 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/factory/Lego.java +++ b/src/main/java/com/hbm/items/weapon/sedna/factory/Lego.java @@ -6,6 +6,7 @@ import java.util.function.BiConsumer; import java.util.function.BiFunction; import com.hbm.entity.projectile.EntityBulletBaseMK4; +import com.hbm.entity.projectile.EntityBulletBaseMK4CL; import com.hbm.entity.projectile.EntityBulletBeamBase; import com.hbm.explosion.vanillant.ExplosionVNT; import com.hbm.explosion.vanillant.standard.EntityProcessorCrossSmooth; @@ -228,6 +229,11 @@ public class Lego { if(ItemGunBaseNT.getIsLockedOn(stack)) mk4.lockonTarget = entity.worldObj.getEntityByID(ItemGunBaseNT.getLockonTarget(stack)); if(i == 0 && config.blackPowder) BlackPowderHelper.composeEffect(entity.worldObj, mk4.posX, mk4.posY, mk4.posZ, mk4.motionX, mk4.motionY, mk4.motionZ, 10, 0.25F, 0.5F, 10, 0.25F); entity.worldObj.spawnEntityInWorld(mk4); + } else if(config.pType == ProjectileType.BULLET_CHUNKLOADING) { + EntityBulletBaseMK4 mk4 = new EntityBulletBaseMK4CL(entity, config, damage, spread, sideOffset, heightOffset, forwardOffset); + if(ItemGunBaseNT.getIsLockedOn(stack)) mk4.lockonTarget = entity.worldObj.getEntityByID(ItemGunBaseNT.getLockonTarget(stack)); + if(i == 0 && config.blackPowder) BlackPowderHelper.composeEffect(entity.worldObj, mk4.posX, mk4.posY, mk4.posZ, mk4.motionX, mk4.motionY, mk4.motionZ, 10, 0.25F, 0.5F, 10, 0.25F); + entity.worldObj.spawnEntityInWorld(mk4); } else if(config.pType == ProjectileType.BEAM) { EntityBulletBeamBase mk4 = new EntityBulletBeamBase(entity, config, damage, spread, sideOffset, heightOffset, forwardOffset); entity.worldObj.spawnEntityInWorld(mk4); diff --git a/src/main/java/com/hbm/items/weapon/sedna/factory/LegoClient.java b/src/main/java/com/hbm/items/weapon/sedna/factory/LegoClient.java index 8725bac94..464f727fc 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/factory/LegoClient.java +++ b/src/main/java/com/hbm/items/weapon/sedna/factory/LegoClient.java @@ -190,6 +190,15 @@ public class LegoClient { GL11.glShadeModel(GL11.GL_FLAT); }; + public static BiConsumer RENDER_BIG_NUKE = (bullet, interp) -> { + GL11.glScalef(0.5F, 0.5F, 0.5F); + GL11.glRotated(90, 0, 0, 1); + GL11.glShadeModel(GL11.GL_SMOOTH); + Minecraft.getMinecraft().getTextureManager().bindTexture(ResourceManager.rocket_mirv_tex); + ResourceManager.projectiles.renderPart("MissileMIRV"); + GL11.glShadeModel(GL11.GL_FLAT); + }; + public static BiConsumer RENDER_RPZB = (bullet, interp) -> { GL11.glPushMatrix(); diff --git a/src/main/java/com/hbm/items/weapon/sedna/factory/XFactoryFlamer.java b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactoryFlamer.java index 818c28f0d..3e90224dd 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/factory/XFactoryFlamer.java +++ b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactoryFlamer.java @@ -43,7 +43,11 @@ public class XFactoryFlamer { public static BulletConfig flame_gas; public static BulletConfig flame_napalm; public static BulletConfig flame_balefire; - public static BulletConfig flame_digamma; + + public static BulletConfig flame_topaz_diesel; + public static BulletConfig flame_topaz_gas; + public static BulletConfig flame_topaz_napalm; + public static BulletConfig flame_topaz_balefire; public static Consumer LAMBDA_FIRE = (bullet) -> { if(bullet.worldObj.isRemote && MainRegistry.proxy.me().getDistanceToEntity(bullet) < 100) FlameCreator.composeEffectClient(bullet.worldObj, bullet.posX, bullet.posY - 0.125, bullet.posZ, FlameCreator.META_FIRE); @@ -103,8 +107,13 @@ public class XFactoryFlamer { flame_napalm = new BulletConfig().setItem(EnumAmmo.FLAME_NAPALM).setLife(200).setVel(1F).setGrav(0.02D).setReloadCount(300).setOnUpdate(LAMBDA_FIRE).setOnRicochet(LAMBDA_LINGER_NAPALM); flame_balefire = new BulletConfig().setItem(EnumAmmo.FLAME_BALEFIRE).setLife(200).setVel(1F).setGrav(0.02D).setReloadCount(300).setOnUpdate(LAMBDA_BALEFIRE).setOnRicochet(LAMBDA_LINGER_BALEFIRE); + flame_topaz_diesel = flame_diesel.clone().setLife(60).setGrav(0.0D).setReloadCount(500).setProjectiles(2).setSpread(0.05F); + flame_topaz_gas = flame_gas.clone().setReloadCount(500).setProjectiles(2).setSpread(0.05F); + flame_topaz_napalm = flame_napalm.clone().setLife(60).setGrav(0.0D).setReloadCount(500).setProjectiles(2).setSpread(0.05F); + flame_topaz_balefire = flame_balefire.clone().setLife(60).setGrav(0.0D).setReloadCount(500).setProjectiles(2).setSpread(0.05F); + ModItems.gun_flamer = new ItemGunBaseNT(WeaponQuality.A_SIDE, new GunConfig() - .dura(20_000).draw(10).inspect(17).crosshair(Crosshair.L_CIRCLE).smoke(Lego.LAMBDA_STANDARD_SMOKE) + .dura(20_000).draw(10).inspect(17).crosshair(Crosshair.L_CIRCLE) .rec(new Receiver(0) .dmg(10F).delay(1).auto(true).reload(90).jam(17) .mag(new MagazineFullReload(0, 300).addConfigs(flame_diesel, flame_gas, flame_napalm, flame_balefire)) @@ -113,6 +122,16 @@ public class XFactoryFlamer { .setupStandardConfiguration() .anim(LAMBDA_FLAMER_ANIMS).orchestra(Orchestras.ORCHESTRA_FLAMER) ).setUnlocalizedName("gun_flamer"); + ModItems.gun_flamer_topaz = new ItemGunBaseNT(WeaponQuality.B_SIDE, new GunConfig() + .dura(20_000).draw(10).inspect(17).crosshair(Crosshair.L_CIRCLE) + .rec(new Receiver(0) + .dmg(10F).delay(1).auto(true).reload(90).jam(17) + .mag(new MagazineFullReload(0, 500).addConfigs(flame_topaz_diesel, flame_topaz_gas, flame_topaz_napalm, flame_topaz_balefire)) + .offset(0.75, -0.0625, -0.25D) + .setupStandardFire().recoil(Lego.LAMBDA_STANDARD_RECOIL)) + .setupStandardConfiguration() + .anim(LAMBDA_FLAMER_ANIMS).orchestra(Orchestras.ORCHESTRA_FLAMER) + ).setUnlocalizedName("gun_flamer_topaz"); ModItems.gun_chemthrower = new ItemGunChemthrower(WeaponQuality.A_SIDE, new GunConfig() .dura(90_000).draw(10).inspect(17).crosshair(Crosshair.L_CIRCLE).smoke(Lego.LAMBDA_STANDARD_SMOKE) diff --git a/src/main/java/com/hbm/items/weapon/sedna/factory/XFactoryFolly.java b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactoryFolly.java index f21af90be..06ff41d47 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/factory/XFactoryFolly.java +++ b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactoryFolly.java @@ -5,6 +5,9 @@ import java.util.function.BiConsumer; import java.util.function.BiFunction; import java.util.function.Consumer; +import com.hbm.entity.effect.EntityNukeTorex; +import com.hbm.entity.logic.EntityNukeExplosionMK5; +import com.hbm.entity.projectile.EntityBulletBaseMK4; import com.hbm.entity.projectile.EntityBulletBeamBase; import com.hbm.items.ModItems; import com.hbm.items.weapon.sedna.BulletConfig; @@ -35,10 +38,12 @@ import net.minecraft.init.Blocks; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.AxisAlignedBB; +import net.minecraft.util.MovingObjectPosition; public class XFactoryFolly { public static BulletConfig folly_sm; + public static BulletConfig folly_nuke; public static Consumer LAMBDA_SM_UPDATE = (entity) -> { if(entity.worldObj.isRemote) return; @@ -78,16 +83,26 @@ public class XFactoryFolly { } }; + public static BiConsumer LAMBDA_NUKE_IMPACT = (bullet, mop) -> { + if(mop.typeOfHit == mop.typeOfHit.ENTITY && bullet.ticksExisted < 2) return; + if(bullet.isDead) return; + bullet.setDead(); + bullet.worldObj.spawnEntityInWorld(EntityNukeExplosionMK5.statFac(bullet.worldObj, 100, mop.hitVec.xCoord, mop.hitVec.yCoord, mop.hitVec.zCoord)); + EntityNukeTorex.statFac(bullet.worldObj, mop.hitVec.xCoord, mop.hitVec.yCoord, mop.hitVec.zCoord, 100); + }; + public static void init() { - + folly_sm = new BulletConfig().setItem(EnumAmmoSecret.FOLLY_SM).setBeam().setLife(100).setVel(2F).setGrav(0.015D).setRenderRotations(false).setSpectral(true).setDoesPenetrate(true) .setOnUpdate(LAMBDA_SM_UPDATE); + folly_nuke = new BulletConfig().setItem(EnumAmmoSecret.FOLLY_NUKE).setChunkloading().setLife(600).setVel(4F).setGrav(0.015D) + .setOnImpact(LAMBDA_NUKE_IMPACT); ModItems.gun_folly = new ItemGunBaseNT(WeaponQuality.A_SIDE, new GunConfig() .dura(0).draw(40).crosshair(Crosshair.NONE) .rec(new Receiver(0) .dmg(15F).delay(26).dryfire(false).reload(160).jam(0).sound("hbm:weapon.fire.loudestNoiseOnEarth", 100.0F, 1.0F) - .mag(new MagazineSingleReload(0, 1).addConfigs(folly_sm)) + .mag(new MagazineSingleReload(0, 1).addConfigs(folly_sm, folly_nuke)) .offset(0.75, -0.0625, -0.1875D) .canFire(LAMBDA_CAN_FIRE).fire(LAMBDA_FIRE).recoil(Lego.LAMBDA_STANDARD_RECOIL)) .setupStandardConfiguration().pt(LAMBDA_TOGGLE_AIM) diff --git a/src/main/java/com/hbm/items/weapon/sedna/hud/HUDComponentAmmoCounter.java b/src/main/java/com/hbm/items/weapon/sedna/hud/HUDComponentAmmoCounter.java index c8ccd0eb7..90398bda4 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/hud/HUDComponentAmmoCounter.java +++ b/src/main/java/com/hbm/items/weapon/sedna/hud/HUDComponentAmmoCounter.java @@ -47,6 +47,7 @@ public class HUDComponentAmmoCounter implements IHUDComponent { @Override public void renderHUDComponent(Pre event, ElementType type, EntityPlayer player, ItemStack stack, int bottomOffset, int gunIndex) { + if(type != type.HOTBAR) return; ScaledResolution resolution = event.resolution; Minecraft mc = Minecraft.getMinecraft(); diff --git a/src/main/java/com/hbm/items/weapon/sedna/hud/HUDComponentDurabilityBar.java b/src/main/java/com/hbm/items/weapon/sedna/hud/HUDComponentDurabilityBar.java index 0afc6462e..d7160bfd3 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/hud/HUDComponentDurabilityBar.java +++ b/src/main/java/com/hbm/items/weapon/sedna/hud/HUDComponentDurabilityBar.java @@ -33,7 +33,8 @@ public class HUDComponentDurabilityBar implements IHUDComponent { @Override public void renderHUDComponent(Pre event, ElementType type, EntityPlayer player, ItemStack stack, int bottomOffset, int gunIndex) { - + + if(type != type.HOTBAR) return; ScaledResolution resolution = event.resolution; Minecraft mc = Minecraft.getMinecraft(); diff --git a/src/main/java/com/hbm/main/ClientProxy.java b/src/main/java/com/hbm/main/ClientProxy.java index 5a5adea00..8773e095d 100644 --- a/src/main/java/com/hbm/main/ClientProxy.java +++ b/src/main/java/com/hbm/main/ClientProxy.java @@ -617,6 +617,7 @@ public class ClientProxy extends ServerProxy { RenderingRegistry.registerEntityRenderingHandler(EntityBullet.class, new RenderRocket()); RenderingRegistry.registerEntityRenderingHandler(EntityBulletBaseNT.class, new RenderBullet()); RenderingRegistry.registerEntityRenderingHandler(EntityBulletBaseMK4.class, new RenderBulletMK4()); + RenderingRegistry.registerEntityRenderingHandler(EntityBulletBaseMK4CL.class, new RenderBulletMK4()); RenderingRegistry.registerEntityRenderingHandler(EntityBulletBeamBase.class, new RenderBeam()); RenderingRegistry.registerEntityRenderingHandler(EntityRainbow.class, new RenderRainbow()); RenderingRegistry.registerEntityRenderingHandler(EntityLaserBeam.class, new RenderBeam2()); diff --git a/src/main/java/com/hbm/main/ModEventHandlerRenderer.java b/src/main/java/com/hbm/main/ModEventHandlerRenderer.java index cc5e5d459..77a667d49 100644 --- a/src/main/java/com/hbm/main/ModEventHandlerRenderer.java +++ b/src/main/java/com/hbm/main/ModEventHandlerRenderer.java @@ -509,7 +509,7 @@ public class ModEventHandlerRenderer { } } - @SubscribeEvent + @SubscribeEvent(priority = EventPriority.HIGHEST) public void onRenderHUD(RenderGameOverlayEvent.Pre event) { if(event.type == ElementType.HOTBAR && (ModEventHandlerClient.shakeTimestamp + ModEventHandlerClient.shakeDuration - System.currentTimeMillis()) > 0 && ClientConfig.NUKE_HUD_SHAKE.get()) { diff --git a/src/main/java/com/hbm/main/ResourceManager.java b/src/main/java/com/hbm/main/ResourceManager.java index 6a90d5a77..7100fe663 100644 --- a/src/main/java/com/hbm/main/ResourceManager.java +++ b/src/main/java/com/hbm/main/ResourceManager.java @@ -987,6 +987,7 @@ public class ResourceManager { public static final ResourceLocation am180_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/am180.png"); public static final ResourceLocation liberator_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/liberator.png"); public static final ResourceLocation flamethrower_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/flamethrower.png"); + public static final ResourceLocation flamethrower_topaz_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/flamethrower_topaz.png"); public static final ResourceLocation mike_hawk_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/lag.png"); public static final ResourceLocation uzi_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/uzi.png"); public static final ResourceLocation panzerschreck_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/panzerschreck.png"); diff --git a/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderFlamer.java b/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderFlamer.java index 238150adc..778dd4ba9 100644 --- a/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderFlamer.java +++ b/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderFlamer.java @@ -10,8 +10,15 @@ import com.hbm.render.anim.HbmAnimations; import net.minecraft.client.Minecraft; import net.minecraft.item.ItemStack; +import net.minecraft.util.ResourceLocation; public class ItemRenderFlamer extends ItemRenderWeaponBase { + + public ResourceLocation texture; + + public ItemRenderFlamer(ResourceLocation texture) { + this.texture = texture; + } @Override protected float getTurnMagnitude(ItemStack stack) { return ItemGunBaseNT.getIsAiming(stack) ? 2.5F : -0.5F; } @@ -36,7 +43,7 @@ public class ItemRenderFlamer extends ItemRenderWeaponBase { public void renderFirstPerson(ItemStack stack) { ItemGunBaseNT gun = (ItemGunBaseNT) stack.getItem(); - Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.flamethrower_tex); + Minecraft.getMinecraft().renderEngine.bindTexture(texture); double scale = 0.375D; GL11.glScaled(scale, scale, scale); @@ -100,9 +107,10 @@ public class ItemRenderFlamer extends ItemRenderWeaponBase { GL11.glEnable(GL11.GL_LIGHTING); GL11.glShadeModel(GL11.GL_SMOOTH); - Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.flamethrower_tex); + Minecraft.getMinecraft().renderEngine.bindTexture(texture); ResourceManager.flamethrower.renderPart("Gun"); ResourceManager.flamethrower.renderPart("Tank"); + ResourceManager.flamethrower.renderPart("Gauge"); GL11.glShadeModel(GL11.GL_FLAT); } } diff --git a/src/main/resources/assets/hbm/lang/de_DE.lang b/src/main/resources/assets/hbm/lang/de_DE.lang index 941ec3bff..a71c48bfe 100644 --- a/src/main/resources/assets/hbm/lang/de_DE.lang +++ b/src/main/resources/assets/hbm/lang/de_DE.lang @@ -1151,6 +1151,7 @@ item.ammo_shell_apfsds_du.name=240mm APFSDS-DU item.ammo_shell_apfsds_t.name=240mm APFSDS-T item.ammo_shell_explosive.name=240mm HE-Geschoss item.ammo_secret.bmg50_equestrian.name=.50 BMG Zerstörer +item.ammo_secret.folly_nuke.name=Silberne Kugel, Atomar item.ammo_secret.folly_sm.name=Silberne Kugel item.ammo_secret.g12_equestrian.name=Kaliber 12 Gleisnägel item.ammo_secret.m44_equestrian.name=.44 Magnum Schädelsprenger @@ -2170,6 +2171,7 @@ item.gun_fatman.name=M42 Nukleares Katapult "Fat Man" item.gun_fatman_ammo.name=Miniatombombe (LEGACY) item.gun_fireext.name=Feuerlöscher item.gun_flamer.name=Flammenwerfer +item.gun_flamer_topaz.name=Mister Topaz item.gun_flaregun.name=Signalpistole item.gun_flechette.name=Flechet-Gewehr item.gun_folly.name=Folly diff --git a/src/main/resources/assets/hbm/lang/en_US.lang b/src/main/resources/assets/hbm/lang/en_US.lang index 9c03239e7..5d217c811 100644 --- a/src/main/resources/assets/hbm/lang/en_US.lang +++ b/src/main/resources/assets/hbm/lang/en_US.lang @@ -1874,6 +1874,7 @@ item.ammo_shell_apfsds_t.name=240mm APFSDS-T item.ammo_shell_explosive.name=240mm HE Shell item.ammo_shell_w9.name=240mm W9 Nuclear Shell item.ammo_secret.bmg50_equestrian.name=.50 BMG Demolisher +item.ammo_secret.folly_nuke.name=Silver Bullet, Nuclear item.ammo_secret.folly_sm.name=Silver Bullet item.ammo_secret.g12_equestrian.name=12 Gauge Railway Spike Shot item.ammo_secret.m44_equestrian.name=.44 Magnum Head-Exploder @@ -2978,6 +2979,7 @@ item.gun_fatman.name=M42 Nuclear Catapult "Fat Man" item.gun_fatman_ammo.name=Mini Nuke (LEGACY) item.gun_fireext.name=Fire Extinguisher item.gun_flamer.name=Flamethrower +item.gun_flamer_topaz.name=Mister Topaz item.gun_flaregun.name=Flare Gun item.gun_flechette.name=Flechette Rifle item.gun_folly.name=Folly diff --git a/src/main/resources/assets/hbm/textures/items/ammo.png b/src/main/resources/assets/hbm/textures/items/ammo.png index 5dfb80710231a4f54f48ddd2a1df3d17002e3258..58ed1d73919485edb6e67dc6e00f0e28b9684b63 100644 GIT binary patch literal 17703 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 literal 17198 zcmXwh1y~f{|Me{0DIpzFA|;(mi-LlHbb}y`h&1d{(h@2tT}qdLbV(}R(%re_0?YCr zzQ6b7VV_}UckkS}_kQY}bBWY?@r0OwjsO4v;-_lL+TgJb03ZM!4*1u)k`FF;zYyAP5mJE{g7+*ZHg)X-2m7o;nDGLI zvCHedW<6WdUH0wGgPHf%t^2?Bzt^M&{;c`c=rr5CY2~~hXro?BsPsM6>M2GxDjtIW z74k$&UghNG#@d^CVYC0+w-Y(c{+P7QRUuLdyTOyDp|lg<7Fhb!?iqDfM>z|<{MPMn ze!LE%gjz7XAIVc(Fzo_vylN0p?1nFV{uvLuWiJ~aYSSCP`GEs1NG&CrQQ{w#Q z6-^LsiDA`;y!`wQC$SEz%BBEJ!to(djLqo%e$jFx*7!a+pLI^hI$Sso>!7@Ml#O0=(u!rJ#29i!3pz6>Izx0MK`kp!_|Wa5MV@Q2}=|`kSd;AU9DSkSxC0k0-j(39~mTrKXGX$lFA|F zn_#oGt~8S+hU|K(N<9>sY6-6d3&J4l*$1~sgoZWdOj*O(#G&yetgd| zaNry>s+&1AJ<1>-ZaJ+LR4~oD<^d&i>8(4s007Lr(Q#^O@c(x z>`y)d@I34+DbTQ3mbRaLdLHKw)W322yZ!*mOrjQ&P%&w$kCcNyt*UfP|K`8O1fPdYB89(r z!;g2-s**)OfK;#e)jcegmoLfT%LnAn90nfxdrx#X+=&d*yBWXKo1n_hN~cVWJ`9IG zFa_M`Zf9y7yZ8x#r!?GBQbwrOvN95|UtL{YTL%Z-ospDOLx0#YMxxS1?HH}z@xrTi zsT_4C0rpL0jO)FlPUeL}2Y+|WAE@eJ2bz{dL|^PbO7rKJdc{=K(b$@Dmk%5q9XUj0 zmmE;;5Ta_4>_#gn6Aa1PG?fxMS!<@Vhx2lEN+_nGLCXKA9oHL$=&5`&!luHiwYu2s zSNjH~^q~x|hAm!q6&#gLUm-L&PX&u!_cISGR?!_~MfyZEzmK=YmK^*)a<+|l7*d)4 zLGE5i-ZDoX57?6ZQqS#1ZhJ!ppJFKz`)7T}KdhN)rn}wNM3Vp#uqNBNi(6b=+>w!y zARe6`ZB~^Q7YFnFiolZgiQnTu0#P=+Z?~w|*>pYlq9Q<4w`S}|Iuh9+icDEtUOIvr z|4Ag{bJ{P*eALkvVyTg%Sv0g_fu8Y1wpVrgXUSo8J!0gpm=+^j#xHh03@wF_%8}`n z8gbC^@P>*ncq=hb7L;DDA8}$Jlsz5_t(Vmo+#X4=Z7Q#vFm{+SOuqTdvWe;D=;460 zHkG4-7GmGAm}{UGV{w9s1=pTy_c_zTBe;i_cTc6xuWD%E*pRUet9<7tr<(rq4!y?* zG2-Y9Sw9mJK5p)KO~;0Ht_KeQU?yD7W%&d2ZDp1JCZTv>pufKi0Qc|&f89=AvCAV% z5ErMX5jZ6uZndqlJCV%(M+$2j8*HMY6W5YE*b0@{Zlzt94u|I}8gsP*IzNYgW-Ag? z!QJ`Fex2jM_00oboi1i`b8~B%2CAzQ>J6ph8tW(5m5;bww8iKAuxP2GkZ3fUyV#`K zfx#Rdd0k9u=u9=fnLdv#x@^bUS(qCe3&Caf*YXI`(uwx+@KB3^ii%Q+r9St_JohB2 zHDx)OeUCgTeG&fnq)ej>S53&k%V;H|KSb8=oJCfa5kBT^7^hK_#iqSO;uBI@Oh|)+ zQ|H4rSaz{};WfQ40b33}KMujWbIk_kfj|-Q*L7{ymj#mH#tl@b^l0C|e`gw6 z)&rzGkeIm~!CPBzy54PJ43oQAs901Q$k0_V94O0U?yYYQV`sr<#ZBA7f*{prXOWqy zuJ;>{T^DZU2F>f>Ev_@2q&_und;Bbbyvp#%$npsMOB*}JL}X<*ea2SlxJ;}h1^2ZA z4(Rl{_M3$GWCgWASKrIH{KmhcHb^K|Sc{IfYSWDu@JWiO{Lp2EIJB7TvDYwvX>7bZ zCUP)=!9fnVeLL0-<{}?{r=jJ}l@5BK!|huY!^iqSpF~`2d72ljN`qm vvg>oUIt6Yx1$ZhdDyKb# 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 LyihJvvI9V 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 Date: Wed, 27 Nov 2024 23:11:13 +0100 Subject: [PATCH 06/24] yes that deserves its own commit --- .../hbm/items/weapon/sedna/factory/XFactoryFlamer.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/hbm/items/weapon/sedna/factory/XFactoryFlamer.java b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactoryFlamer.java index 3e90224dd..e0cc05b14 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/factory/XFactoryFlamer.java +++ b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactoryFlamer.java @@ -102,10 +102,10 @@ public class XFactoryFlamer { } public static void init() { - flame_diesel = new BulletConfig().setItem(EnumAmmo.FLAME_DIESEL).setLife(100).setVel(1F).setGrav(0.02D).setReloadCount(300).setOnUpdate(LAMBDA_FIRE).setOnRicochet(LAMBDA_LINGER_DIESEL); - flame_gas = new BulletConfig().setItem(EnumAmmo.FLAME_GAS).setLife(10).setSpread(0.05F).setVel(1F).setGrav(0.0D).setReloadCount(300).setOnUpdate(LAMBDA_FIRE).setOnRicochet(LAMBDA_LINGER_GAS); - flame_napalm = new BulletConfig().setItem(EnumAmmo.FLAME_NAPALM).setLife(200).setVel(1F).setGrav(0.02D).setReloadCount(300).setOnUpdate(LAMBDA_FIRE).setOnRicochet(LAMBDA_LINGER_NAPALM); - flame_balefire = new BulletConfig().setItem(EnumAmmo.FLAME_BALEFIRE).setLife(200).setVel(1F).setGrav(0.02D).setReloadCount(300).setOnUpdate(LAMBDA_BALEFIRE).setOnRicochet(LAMBDA_LINGER_BALEFIRE); + flame_diesel = new BulletConfig().setItem(EnumAmmo.FLAME_DIESEL).setLife(100).setVel(1F).setGrav(0.02D).setReloadCount(300).setSelfDamageDelay(20).setOnUpdate(LAMBDA_FIRE).setOnRicochet(LAMBDA_LINGER_DIESEL); + flame_gas = new BulletConfig().setItem(EnumAmmo.FLAME_GAS).setLife(10).setSpread(0.05F).setVel(1F).setGrav(0.0D).setReloadCount(300).setSelfDamageDelay(20).setOnUpdate(LAMBDA_FIRE).setOnRicochet(LAMBDA_LINGER_GAS); + flame_napalm = new BulletConfig().setItem(EnumAmmo.FLAME_NAPALM).setLife(200).setVel(1F).setGrav(0.02D).setReloadCount(300).setSelfDamageDelay(20).setOnUpdate(LAMBDA_FIRE).setOnRicochet(LAMBDA_LINGER_NAPALM); + flame_balefire = new BulletConfig().setItem(EnumAmmo.FLAME_BALEFIRE).setLife(200).setVel(1F).setGrav(0.02D).setReloadCount(300).setSelfDamageDelay(20).setOnUpdate(LAMBDA_BALEFIRE).setOnRicochet(LAMBDA_LINGER_BALEFIRE); flame_topaz_diesel = flame_diesel.clone().setLife(60).setGrav(0.0D).setReloadCount(500).setProjectiles(2).setSpread(0.05F); flame_topaz_gas = flame_gas.clone().setReloadCount(500).setProjectiles(2).setSpread(0.05F); From 38ecb23a8e454734d5e64a47079a9b466a87c650 Mon Sep 17 00:00:00 2001 From: Boblet Date: Thu, 28 Nov 2024 16:59:33 +0100 Subject: [PATCH 07/24] more stupid shit --- changelog | 1 + .../standard/EntityProcessorCross.java | 6 ++- .../standard/EntityProcessorCrossSmooth.java | 22 ++++++++ .../java/com/hbm/inventory/fluid/Fluids.java | 4 +- src/main/java/com/hbm/items/ModItems.java | 2 + .../hbm/items/weapon/sedna/BulletConfig.java | 37 +++++++------ .../weapon/sedna/factory/GunFactory.java | 2 +- .../sedna/factory/GunFactoryClient.java | 2 + .../hbm/items/weapon/sedna/factory/Lego.java | 4 +- .../sedna/factory/XFactoryAccelerator.java | 5 +- .../weapon/sedna/factory/XFactoryEnergy.java | 16 +++--- .../weapon/sedna/factory/XFactoryFlamer.java | 49 ++++++++++++++---- .../weapon/sedna/factory/XFactoryFolly.java | 5 +- .../java/com/hbm/main/ResourceManager.java | 1 + .../item/weapon/sedna/ItemRenderFlamer.java | 8 ++- .../com/hbm/util/DamageResistanceHandler.java | 9 ++++ .../java/com/hbm/util/EntityDamageUtil.java | 3 +- .../textures/models/weapons/flamethrower.png | Bin 6267 -> 6671 bytes .../weapons/flamethrower_daybreaker.png | Bin 0 -> 6654 bytes .../models/weapons/flamethrower_topaz.png | Bin 6279 -> 6679 bytes 20 files changed, 125 insertions(+), 51 deletions(-) create mode 100644 src/main/resources/assets/hbm/textures/models/weapons/flamethrower_daybreaker.png diff --git a/changelog b/changelog index 0a0e0f03d..ec4d48f14 100644 --- a/changelog +++ b/changelog @@ -57,6 +57,7 @@ * Logistic drones now move at 0.625 blocks/t instead of 0.6. There is no balancing reason for this, I just hate weird numbers like 0.6 * Fallout effects now remove snow layers in the same area where they would remove things like small plants and leaves * Adjusted damage values to many swords and some tools +* Unsats and aromatics can now be filled into gas canisters ## Fixed * The conveyor grabber should no longer skip over items when used in long lines diff --git a/src/main/java/com/hbm/explosion/vanillant/standard/EntityProcessorCross.java b/src/main/java/com/hbm/explosion/vanillant/standard/EntityProcessorCross.java index 3bc9f6870..88d55d49b 100644 --- a/src/main/java/com/hbm/explosion/vanillant/standard/EntityProcessorCross.java +++ b/src/main/java/com/hbm/explosion/vanillant/standard/EntityProcessorCross.java @@ -110,7 +110,7 @@ public class EntityProcessorCross implements IEntityProcessor { for(Entry entry : damageMap.entrySet()) { Entity entity = entry.getKey(); - entity.attackEntityFrom(setExplosionSource(explosion.compat), entry.getValue()); + attackEntity(entity, explosion, entry.getValue()); if(damage != null) { double distanceScaled = entity.getDistance(x, y, z) / size; @@ -121,6 +121,10 @@ public class EntityProcessorCross implements IEntityProcessor { return affectedPlayers; } + public void attackEntity(Entity entity, ExplosionVNT source, float amount) { + entity.attackEntityFrom(setExplosionSource(source.compat), amount); + } + public float calculateDamage(double distanceScaled, double density, double knockback, float size) { return (float) ((int) ((knockback * knockback + knockback) / 2.0D * 8.0D * size + 1.0D)); } diff --git a/src/main/java/com/hbm/explosion/vanillant/standard/EntityProcessorCrossSmooth.java b/src/main/java/com/hbm/explosion/vanillant/standard/EntityProcessorCrossSmooth.java index 725b9fc92..51bdef9e5 100644 --- a/src/main/java/com/hbm/explosion/vanillant/standard/EntityProcessorCrossSmooth.java +++ b/src/main/java/com/hbm/explosion/vanillant/standard/EntityProcessorCrossSmooth.java @@ -1,14 +1,36 @@ package com.hbm.explosion.vanillant.standard; +import com.hbm.explosion.vanillant.ExplosionVNT; +import com.hbm.items.weapon.sedna.BulletConfig; +import com.hbm.util.DamageResistanceHandler.DamageClass; + +import net.minecraft.entity.Entity; +import net.minecraft.entity.EntityLivingBase; + public class EntityProcessorCrossSmooth extends EntityProcessorCross { protected float fixedDamage; + protected float pierceDT = 0; + protected float pierceDR = 0; + protected DamageClass clazz = DamageClass.EXPLOSIVE; public EntityProcessorCrossSmooth(double nodeDist, float fixedDamage) { super(nodeDist); this.fixedDamage = fixedDamage; } + public EntityProcessorCrossSmooth setupPiercing(float pierceDT, float pierceDR) { + this.pierceDT = pierceDT; + this.pierceDR = pierceDR; + return this; + } + + @Override + public void attackEntity(Entity entity, ExplosionVNT source, float amount) { + entity.attackEntityFrom(BulletConfig.getDamage(null, source.exploder instanceof EntityLivingBase ? (EntityLivingBase) source.exploder : null, clazz), amount); + } + + @Override public float calculateDamage(double distanceScaled, double density, double knockback, float size) { return (float) (fixedDamage * (1 - distanceScaled)); } diff --git a/src/main/java/com/hbm/inventory/fluid/Fluids.java b/src/main/java/com/hbm/inventory/fluid/Fluids.java index d0f21d3cd..3c6f3b283 100644 --- a/src/main/java/com/hbm/inventory/fluid/Fluids.java +++ b/src/main/java/com/hbm/inventory/fluid/Fluids.java @@ -307,8 +307,8 @@ public class Fluids { NAPHTHA_CRACK = new FluidType("NAPHTHA_CRACK", 0x595744, 2, 1, 0, EnumSymbol.NONE).addContainers(new CD_Canister(0x5F6D44)).addTraits(new FT_Flammable(125_000), new FT_Combustible(FuelGrade.MEDIUM, 200_000), LIQUID, VISCOUS, P_FUEL); LIGHTOIL_CRACK = new FluidType("LIGHTOIL_CRACK", 0x8c7451, 1, 2, 0, EnumSymbol.NONE).addContainers(new CD_Canister(0xB46B52)).addTraits(new FT_Flammable(200_000), new FT_Combustible(FuelGrade.MEDIUM, 500_000), LIQUID, P_FUEL); DIESEL_CRACK = new FluidType("DIESEL_CRACK", 0xf2eed5, 1, 2, 0, EnumSymbol.NONE).addContainers(new CD_Canister(0xFF2C2C)).addTraits(new FT_Flammable(200_000), new FT_Combustible(FuelGrade.HIGH, 450_000), LIQUID, P_FUEL); - AROMATICS = new FluidType("AROMATICS", 0x68A09A, 1, 4, 1, EnumSymbol.NONE).addTraits(new FT_Flammable(25_000), LIQUID, VISCOUS, P_GAS); - UNSATURATEDS = new FluidType("UNSATURATEDS", 0x628FAE, 1, 4, 1, EnumSymbol.NONE).addTraits(new FT_Flammable(1_000_000), GASEOUS, P_GAS); //acetylene burns as hot as satan's asshole + AROMATICS = new FluidType("AROMATICS", 0x68A09A, 1, 4, 1, EnumSymbol.NONE).addContainers(new CD_Gastank(0x68A09A, 0xEDCF27)).addTraits(new FT_Flammable(25_000), LIQUID, VISCOUS, P_GAS); + UNSATURATEDS = new FluidType("UNSATURATEDS", 0x628FAE, 1, 4, 1, EnumSymbol.NONE).addContainers(new CD_Gastank(0x628FAE, 0xEDCF27)).addTraits(new FT_Flammable(1_000_000), GASEOUS, P_GAS); //acetylene burns as hot as satan's asshole SALIENT = new FluidType("SALIENT", 0x457F2D, 0, 0, 0, EnumSymbol.NONE).addTraits(DELICIOUS, LIQUID, VISCOUS); XPJUICE = new FluidType("XPJUICE", 0xBBFF09, 0, 0, 0, EnumSymbol.NONE).addTraits(LIQUID, VISCOUS); ENDERJUICE = new FluidType("ENDERJUICE", 0x127766, 0, 0, 0, EnumSymbol.NONE).addTraits(LIQUID); diff --git a/src/main/java/com/hbm/items/ModItems.java b/src/main/java/com/hbm/items/ModItems.java index a5b47a678..d643c7cd9 100644 --- a/src/main/java/com/hbm/items/ModItems.java +++ b/src/main/java/com/hbm/items/ModItems.java @@ -1603,6 +1603,7 @@ public class ModItems { public static Item gun_congolake; public static Item gun_flamer; public static Item gun_flamer_topaz; + public static Item gun_flamer_daybreaker; public static Item gun_uzi; public static Item gun_uzi_akimbo; public static Item gun_spas12; @@ -6902,6 +6903,7 @@ public class ModItems { GameRegistry.registerItem(gun_congolake, gun_congolake.getUnlocalizedName()); GameRegistry.registerItem(gun_flamer, gun_flamer.getUnlocalizedName()); GameRegistry.registerItem(gun_flamer_topaz, gun_flamer_topaz.getUnlocalizedName()); + GameRegistry.registerItem(gun_flamer_daybreaker, gun_flamer_daybreaker.getUnlocalizedName()); GameRegistry.registerItem(gun_uzi, gun_uzi.getUnlocalizedName()); GameRegistry.registerItem(gun_uzi_akimbo, gun_uzi_akimbo.getUnlocalizedName()); GameRegistry.registerItem(gun_spas12, gun_spas12.getUnlocalizedName()); diff --git a/src/main/java/com/hbm/items/weapon/sedna/BulletConfig.java b/src/main/java/com/hbm/items/weapon/sedna/BulletConfig.java index 9f7eab4ff..ce2c77254 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/BulletConfig.java +++ b/src/main/java/com/hbm/items/weapon/sedna/BulletConfig.java @@ -12,11 +12,11 @@ import com.hbm.inventory.RecipesCommon.ComparableStack; import com.hbm.items.ModItems; import com.hbm.items.weapon.sedna.factory.GunFactory.EnumAmmo; import com.hbm.items.weapon.sedna.factory.GunFactory.EnumAmmoSecret; -import com.hbm.lib.ModDamageSource; import com.hbm.particle.SpentCasing; import com.hbm.util.BobMathUtil; import com.hbm.util.EntityDamageUtil; import com.hbm.util.TrackerUtil; +import com.hbm.util.DamageResistanceHandler.DamageClass; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLivingBase; @@ -48,14 +48,10 @@ public class BulletConfig implements Cloneable { public float damageMult = 1.0F; public float armorThresholdNegation = 0.0F; public float armorPiercingPercent = 0.0F; - public float knockbackMult = 1.0F; + public float knockbackMult = 0.25F; public float headshotMult = 1.0F; - public String damageType = ModDamageSource.s_bullet; - public boolean dmgProj = true; - public boolean dmgFire = false; - public boolean dmgExplosion = false; - public boolean dmgBypass = false; + public DamageClass dmgClass = DamageClass.PHYSICAL; public float ricochetAngle = 5F; public int maxRicochetCount = 2; @@ -110,8 +106,7 @@ public class BulletConfig implements Cloneable { public BulletConfig setArmorPiercing(float armorPiercingPercent) { this.armorPiercingPercent = armorPiercingPercent; return this; } public BulletConfig setKnockback(float knockbackMult) { this.knockbackMult = knockbackMult; return this; } public BulletConfig setHeadshot(float headshotMult) { this.headshotMult = headshotMult; return this; } - public BulletConfig setDamageType(String type) { this.damageType = type; return this; } - public BulletConfig setupDamageClass(boolean proj, boolean fire, boolean explosion, boolean bypass) { this.dmgProj = proj; this.dmgFire = fire; this.dmgExplosion = explosion; this.dmgBypass = bypass; return this; } + public BulletConfig setupDamageClass(DamageClass clazz) { this.dmgClass = clazz; return this; } public BulletConfig setRicochetAngle(float angle) { this.ricochetAngle = angle; return this; } public BulletConfig setRicochetCount(int count) { this.maxRicochetCount = count; return this; } public BulletConfig setDamageFalloutByPen(boolean falloff) { this.damageFalloffByPen = falloff; return this; } @@ -140,17 +135,21 @@ public class BulletConfig implements Cloneable { BEAM } - public DamageSource getDamage(Entity projectile, EntityLivingBase shooter, boolean bypass) { + public static DamageSource getDamage(Entity projectile, EntityLivingBase shooter, DamageClass dmgClass) { DamageSource dmg; - if(shooter != null) dmg = new EntityDamageSourceIndirect(damageType, projectile, shooter); - else dmg = new DamageSource(damageType); + if(shooter != null) dmg = new EntityDamageSourceIndirect(dmgClass.name(), projectile, shooter); + else dmg = new DamageSource(dmgClass.name()); - if(this.dmgProj) dmg.setProjectile(); - if(this.dmgFire) dmg.setFireDamage(); - if(this.dmgExplosion) dmg.setExplosion(); - if(this.dmgBypass || bypass) dmg.setDamageBypassesArmor(); + switch(dmgClass) { + case PHYSICAL: dmg.setProjectile(); break; + case FIRE: dmg.setFireDamage(); break; + case EXPLOSIVE: dmg.setExplosion(); break; + case ELECTRIC: break; + case LASER: break; + case SUBATOMIC: break; + } return dmg; } @@ -199,7 +198,7 @@ public class BulletConfig implements Cloneable { if(entity == bullet.getThrower() && bullet.ticksExisted < bullet.selfDamageDelay()) return; if(entity instanceof EntityLivingBase && ((EntityLivingBase) entity).getHealth() <= 0) return; - DamageSource source = bullet.config.getDamage(bullet, bullet.getThrower(), false); + DamageSource source = bullet.config.getDamage(bullet, bullet.getThrower(), bullet.config.dmgClass); if(!(entity instanceof EntityLivingBase)) { EntityDamageUtil.attackEntityFromIgnoreIFrame(entity, source, bullet.damage); @@ -228,7 +227,7 @@ public class BulletConfig implements Cloneable { if(entity instanceof EntityLivingBase && ((EntityLivingBase) entity).getHealth() <= 0) return; - DamageSource source = bullet.config.getDamage(bullet, bullet.getThrower(), false); + DamageSource source = bullet.config.getDamage(bullet, bullet.getThrower(), bullet.config.dmgClass); if(!(entity instanceof EntityLivingBase)) { EntityDamageUtil.attackEntityFromIgnoreIFrame(entity, source, bullet.damage); @@ -247,7 +246,7 @@ public class BulletConfig implements Cloneable { if(entity instanceof EntityLivingBase && ((EntityLivingBase) entity).getHealth() <= 0) return; - DamageSource source = beam.config.getDamage(beam, beam.thrower, false); + DamageSource source = beam.config.getDamage(beam, beam.thrower, beam.config.dmgClass); if(!(entity instanceof EntityLivingBase)) { EntityDamageUtil.attackEntityFromIgnoreIFrame(entity, source, beam.damage); diff --git a/src/main/java/com/hbm/items/weapon/sedna/factory/GunFactory.java b/src/main/java/com/hbm/items/weapon/sedna/factory/GunFactory.java index eebf26029..51bf4adfd 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/factory/GunFactory.java +++ b/src/main/java/com/hbm/items/weapon/sedna/factory/GunFactory.java @@ -84,7 +84,7 @@ public class GunFactory { G40_HE, G40_HEAT, G40_DEMO, G40_INC, G40_PHOSPHORUS, ROCKET_HE, ROCKET_HEAT, ROCKET_DEMO, ROCKET_INC, ROCKET_PHOSPHORUS, FLAME_DIESEL, FLAME_GAS, FLAME_NAPALM, FLAME_BALEFIRE, - CAPACITOR, CAPACITOR_OVERCHARGE, CAPACITOR_BLACKLIGHTNING, + CAPACITOR, CAPACITOR_OVERCHARGE, TAU_URANIUM, COIL_TUNGSTEN, COIL_FERROURANIUM, NUKE_STANDARD, NUKE_DEMO, NUKE_HIGH, NUKE_TOTS, NUKE_HIVE diff --git a/src/main/java/com/hbm/items/weapon/sedna/factory/GunFactoryClient.java b/src/main/java/com/hbm/items/weapon/sedna/factory/GunFactoryClient.java index 69fb56d80..f9afb903a 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/factory/GunFactoryClient.java +++ b/src/main/java/com/hbm/items/weapon/sedna/factory/GunFactoryClient.java @@ -52,6 +52,7 @@ public class GunFactoryClient { MinecraftForgeClient.registerItemRenderer(ModItems.gun_congolake, new ItemRenderCongoLake()); MinecraftForgeClient.registerItemRenderer(ModItems.gun_flamer, new ItemRenderFlamer(ResourceManager.flamethrower_tex)); MinecraftForgeClient.registerItemRenderer(ModItems.gun_flamer_topaz, new ItemRenderFlamer(ResourceManager.flamethrower_topaz_tex)); + MinecraftForgeClient.registerItemRenderer(ModItems.gun_flamer_daybreaker, new ItemRenderFlamer(ResourceManager.flamethrower_daybreaker_tex)); MinecraftForgeClient.registerItemRenderer(ModItems.gun_lag, new ItemRenderLAG()); MinecraftForgeClient.registerItemRenderer(ModItems.gun_uzi, new ItemRenderUzi()); MinecraftForgeClient.registerItemRenderer(ModItems.gun_uzi_akimbo, new ItemRenderUziAkimbo()); @@ -183,6 +184,7 @@ public class GunFactoryClient { ((ItemGunBaseNT) ModItems.gun_congolake) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO); ((ItemGunBaseNT) ModItems.gun_flamer) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO_NOCOUNTER); ((ItemGunBaseNT) ModItems.gun_flamer_topaz) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO_NOCOUNTER); + ((ItemGunBaseNT) ModItems.gun_flamer_daybreaker) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO_NOCOUNTER); ((ItemGunBaseNT) ModItems.gun_uzi) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO); ((ItemGunBaseNT) ModItems.gun_spas12) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO); ((ItemGunBaseNT) ModItems.gun_panzerschreck) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO); diff --git a/src/main/java/com/hbm/items/weapon/sedna/factory/Lego.java b/src/main/java/com/hbm/items/weapon/sedna/factory/Lego.java index 511f5f586..5b9f5e4f3 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/factory/Lego.java +++ b/src/main/java/com/hbm/items/weapon/sedna/factory/Lego.java @@ -230,7 +230,7 @@ public class Lego { if(i == 0 && config.blackPowder) BlackPowderHelper.composeEffect(entity.worldObj, mk4.posX, mk4.posY, mk4.posZ, mk4.motionX, mk4.motionY, mk4.motionZ, 10, 0.25F, 0.5F, 10, 0.25F); entity.worldObj.spawnEntityInWorld(mk4); } else if(config.pType == ProjectileType.BULLET_CHUNKLOADING) { - EntityBulletBaseMK4 mk4 = new EntityBulletBaseMK4CL(entity, config, damage, spread, sideOffset, heightOffset, forwardOffset); + EntityBulletBaseMK4CL mk4 = new EntityBulletBaseMK4CL(entity, config, damage, spread, sideOffset, heightOffset, forwardOffset); if(ItemGunBaseNT.getIsLockedOn(stack)) mk4.lockonTarget = entity.worldObj.getEntityByID(ItemGunBaseNT.getLockonTarget(stack)); if(i == 0 && config.blackPowder) BlackPowderHelper.composeEffect(entity.worldObj, mk4.posX, mk4.posY, mk4.posZ, mk4.motionX, mk4.motionY, mk4.motionZ, 10, 0.25F, 0.5F, 10, 0.25F); entity.worldObj.spawnEntityInWorld(mk4); @@ -275,7 +275,7 @@ public class Lego { public static void standardExplode(EntityBulletBaseMK4 bullet, MovingObjectPosition mop, float range) { standardExplode(bullet, mop, range, 1F); } public static void standardExplode(EntityBulletBaseMK4 bullet, MovingObjectPosition mop, float range, float damageMod) { ExplosionVNT vnt = new ExplosionVNT(bullet.worldObj, mop.hitVec.xCoord, mop.hitVec.yCoord, mop.hitVec.zCoord, range); - vnt.setEntityProcessor(new EntityProcessorCrossSmooth(1, bullet.damage * damageMod)); + vnt.setEntityProcessor(new EntityProcessorCrossSmooth(1, bullet.damage * damageMod).setupPiercing(bullet.config.armorThresholdNegation, bullet.config.armorPiercingPercent)); vnt.setPlayerProcessor(new PlayerProcessorStandard()); vnt.setSFX(new ExplosionEffectWeapon(10, 2.5F, 1F)); vnt.explode(); diff --git a/src/main/java/com/hbm/items/weapon/sedna/factory/XFactoryAccelerator.java b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactoryAccelerator.java index 616d8f651..68c46b3eb 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/factory/XFactoryAccelerator.java +++ b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactoryAccelerator.java @@ -21,6 +21,7 @@ import com.hbm.render.anim.BusAnimation; import com.hbm.render.anim.BusAnimationSequence; import com.hbm.render.anim.BusAnimationKeyframe.IType; import com.hbm.render.anim.HbmAnimations.AnimType; +import com.hbm.util.DamageResistanceHandler.DamageClass; import net.minecraft.block.Block; import net.minecraft.block.material.Material; @@ -79,9 +80,9 @@ public class XFactoryAccelerator { public static void init() { - tau_uranium = new BulletConfig().setItem(EnumAmmo.TAU_URANIUM).setBeam().setLife(5).setRenderRotations(false).setDoesPenetrate(true).setDamageFalloutByPen(false) + tau_uranium = new BulletConfig().setItem(EnumAmmo.TAU_URANIUM).setupDamageClass(DamageClass.SUBATOMIC).setBeam().setLife(5).setRenderRotations(false).setDoesPenetrate(true).setDamageFalloutByPen(false) .setOnBeamImpact(BulletConfig.LAMBDA_BEAM_HIT); - tau_uranium_charge = new BulletConfig().setItem(EnumAmmo.TAU_URANIUM).setBeam().setLife(5).setRenderRotations(false).setDoesPenetrate(true).setDamageFalloutByPen(false).setSpectral(true) + tau_uranium_charge = new BulletConfig().setItem(EnumAmmo.TAU_URANIUM).setupDamageClass(DamageClass.SUBATOMIC).setBeam().setLife(5).setRenderRotations(false).setDoesPenetrate(true).setDamageFalloutByPen(false).setSpectral(true) .setOnBeamImpact(BulletConfig.LAMBDA_BEAM_HIT); coil_tungsten = new BulletConfig().setItem(EnumAmmo.COIL_TUNGSTEN).setVel(7.5F).setLife(50).setDoesPenetrate(true).setDamageFalloutByPen(false).setSpectral(true) diff --git a/src/main/java/com/hbm/items/weapon/sedna/factory/XFactoryEnergy.java b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactoryEnergy.java index b0d2f3018..5fdc4324f 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/factory/XFactoryEnergy.java +++ b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactoryEnergy.java @@ -25,6 +25,7 @@ import com.hbm.render.anim.BusAnimation; import com.hbm.render.anim.BusAnimationSequence; import com.hbm.render.anim.BusAnimationKeyframe.IType; import com.hbm.render.anim.HbmAnimations.AnimType; +import com.hbm.util.DamageResistanceHandler.DamageClass; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import net.minecraft.entity.EntityLivingBase; @@ -88,22 +89,19 @@ public class XFactoryEnergy { public static void init() { - energy_tesla = new BulletConfig().setItem(EnumAmmo.CAPACITOR).setBeam().setSpread(0.0F).setLife(5).setRenderRotations(false).setDoesPenetrate(true) + energy_tesla = new BulletConfig().setItem(EnumAmmo.CAPACITOR).setupDamageClass(DamageClass.ELECTRIC).setBeam().setSpread(0.0F).setLife(5).setRenderRotations(false).setDoesPenetrate(true) .setOnBeamImpact(LAMBDA_LIGHTNING_HIT); - energy_tesla_overcharge = new BulletConfig().setItem(EnumAmmo.CAPACITOR_OVERCHARGE).setBeam().setSpread(0.0F).setLife(5).setRenderRotations(false).setDoesPenetrate(true) + energy_tesla_overcharge = new BulletConfig().setItem(EnumAmmo.CAPACITOR_OVERCHARGE).setupDamageClass(DamageClass.ELECTRIC).setBeam().setSpread(0.0F).setLife(5).setRenderRotations(false).setDoesPenetrate(true) .setDamage(1.5F).setOnBeamImpact(LAMBDA_LIGHTNING_HIT); - energy_tesla_blacklightning = new BulletConfig().setItem(EnumAmmo.CAPACITOR_BLACKLIGHTNING).setBeam().setSpread(0.0F).setLife(5).setRenderRotations(false).setDoesPenetrate(true) - .setDamage(5F).setOnBeamImpact(LAMBDA_LIGHTNING_HIT); - energy_las = new BulletConfig().setItem(EnumAmmo.CAPACITOR).setBeam().setSpread(0.0F).setLife(5).setRenderRotations(false).setOnBeamImpact(BulletConfig.LAMBDA_STANDARD_BEAM_HIT); - energy_las_overcharge = new BulletConfig().setItem(EnumAmmo.CAPACITOR_OVERCHARGE).setBeam().setSpread(0.0F).setLife(5).setRenderRotations(false).setDoesPenetrate(true).setOnBeamImpact(BulletConfig.LAMBDA_STANDARD_BEAM_HIT); - energy_las_blacklightning = new BulletConfig().setItem(EnumAmmo.CAPACITOR_BLACKLIGHTNING).setBeam().setSpread(0.0F).setLife(5).setRenderRotations(false).setDoesPenetrate(true).setOnBeamImpact(BulletConfig.LAMBDA_STANDARD_BEAM_HIT); + energy_las = new BulletConfig().setItem(EnumAmmo.CAPACITOR).setupDamageClass(DamageClass.LASER).setBeam().setSpread(0.0F).setLife(5).setRenderRotations(false).setOnBeamImpact(BulletConfig.LAMBDA_STANDARD_BEAM_HIT); + energy_las_overcharge = new BulletConfig().setItem(EnumAmmo.CAPACITOR_OVERCHARGE).setupDamageClass(DamageClass.LASER).setBeam().setSpread(0.0F).setLife(5).setRenderRotations(false).setDoesPenetrate(true).setOnBeamImpact(BulletConfig.LAMBDA_STANDARD_BEAM_HIT); ModItems.gun_tesla_cannon = new ItemGunBaseNT(WeaponQuality.A_SIDE, new GunConfig() .dura(2_000).draw(10).inspect(33).reloadSequential(true).crosshair(Crosshair.CIRCLE) .rec(new Receiver(0) .dmg(15F).delay(20).reload(44).jam(19).sound("hbm:weapon.fire.blackPowder", 1.0F, 1.0F) - .mag(new MagazineBelt().addConfigs(energy_tesla, energy_tesla_overcharge, energy_tesla_blacklightning)) + .mag(new MagazineBelt().addConfigs(energy_tesla, energy_tesla_overcharge)) .offset(0.75, 0, -0.375) .setupStandardFire().recoil(Lego.LAMBDA_STANDARD_RECOIL)) .setupStandardConfiguration() @@ -114,7 +112,7 @@ public class XFactoryEnergy { .dura(2_000).draw(10).inspect(26).reloadSequential(true).crosshair(Crosshair.CIRCLE).scopeTexture(scope_luna) .rec(new Receiver(0) .dmg(15F).delay(8).reload(44).jam(36).sound("hbm:weapon.fire.blackPowder", 1.0F, 1.0F) - .mag(new MagazineFullReload(0, 24).addConfigs(energy_las, energy_las_overcharge, energy_las_blacklightning)) + .mag(new MagazineFullReload(0, 24).addConfigs(energy_las, energy_las_overcharge)) .offset(0.75, -0.0625 * 1.5, -0.1875) .setupStandardFire().recoil(Lego.LAMBDA_STANDARD_RECOIL)) .setupStandardConfiguration() diff --git a/src/main/java/com/hbm/items/weapon/sedna/factory/XFactoryFlamer.java b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactoryFlamer.java index e0cc05b14..7d43cbc16 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/factory/XFactoryFlamer.java +++ b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactoryFlamer.java @@ -26,6 +26,7 @@ import com.hbm.render.anim.BusAnimation; import com.hbm.render.anim.BusAnimationSequence; import com.hbm.render.anim.BusAnimationKeyframe.IType; import com.hbm.render.anim.HbmAnimations.AnimType; +import com.hbm.util.DamageResistanceHandler.DamageClass; import net.minecraft.block.Block; import net.minecraft.entity.Entity; @@ -49,6 +50,11 @@ public class XFactoryFlamer { public static BulletConfig flame_topaz_napalm; public static BulletConfig flame_topaz_balefire; + public static BulletConfig flame_daybreaker_diesel; + public static BulletConfig flame_daybreaker_gas; + public static BulletConfig flame_daybreaker_napalm; + public static BulletConfig flame_daybreaker_balefire; + public static Consumer LAMBDA_FIRE = (bullet) -> { if(bullet.worldObj.isRemote && MainRegistry.proxy.me().getDistanceToEntity(bullet) < 100) FlameCreator.composeEffectClient(bullet.worldObj, bullet.posX, bullet.posY - 0.125, bullet.posZ, FlameCreator.META_FIRE); }; @@ -102,15 +108,28 @@ public class XFactoryFlamer { } public static void init() { - flame_diesel = new BulletConfig().setItem(EnumAmmo.FLAME_DIESEL).setLife(100).setVel(1F).setGrav(0.02D).setReloadCount(300).setSelfDamageDelay(20).setOnUpdate(LAMBDA_FIRE).setOnRicochet(LAMBDA_LINGER_DIESEL); - flame_gas = new BulletConfig().setItem(EnumAmmo.FLAME_GAS).setLife(10).setSpread(0.05F).setVel(1F).setGrav(0.0D).setReloadCount(300).setSelfDamageDelay(20).setOnUpdate(LAMBDA_FIRE).setOnRicochet(LAMBDA_LINGER_GAS); - flame_napalm = new BulletConfig().setItem(EnumAmmo.FLAME_NAPALM).setLife(200).setVel(1F).setGrav(0.02D).setReloadCount(300).setSelfDamageDelay(20).setOnUpdate(LAMBDA_FIRE).setOnRicochet(LAMBDA_LINGER_NAPALM); - flame_balefire = new BulletConfig().setItem(EnumAmmo.FLAME_BALEFIRE).setLife(200).setVel(1F).setGrav(0.02D).setReloadCount(300).setSelfDamageDelay(20).setOnUpdate(LAMBDA_BALEFIRE).setOnRicochet(LAMBDA_LINGER_BALEFIRE); + flame_diesel = new BulletConfig().setItem(EnumAmmo.FLAME_DIESEL).setupDamageClass(DamageClass.FIRE).setLife(100).setVel(1F).setGrav(0.02D).setReloadCount(500).setSelfDamageDelay(20) + .setOnUpdate(LAMBDA_FIRE).setOnRicochet(LAMBDA_LINGER_DIESEL); + flame_gas = new BulletConfig().setItem(EnumAmmo.FLAME_GAS).setupDamageClass(DamageClass.FIRE).setLife(10).setSpread(0.05F).setVel(1F).setGrav(0.0D).setReloadCount(500).setSelfDamageDelay(20) + .setOnUpdate(LAMBDA_FIRE).setOnRicochet(LAMBDA_LINGER_GAS); + flame_napalm = new BulletConfig().setItem(EnumAmmo.FLAME_NAPALM).setupDamageClass(DamageClass.FIRE).setLife(200).setVel(1F).setGrav(0.02D).setReloadCount(500).setSelfDamageDelay(20) + .setOnUpdate(LAMBDA_FIRE).setOnRicochet(LAMBDA_LINGER_NAPALM); + flame_balefire = new BulletConfig().setItem(EnumAmmo.FLAME_BALEFIRE).setupDamageClass(DamageClass.FIRE).setLife(200).setVel(1F).setGrav(0.02D).setReloadCount(500).setSelfDamageDelay(20) + .setOnUpdate(LAMBDA_BALEFIRE).setOnRicochet(LAMBDA_LINGER_BALEFIRE); - flame_topaz_diesel = flame_diesel.clone().setLife(60).setGrav(0.0D).setReloadCount(500).setProjectiles(2).setSpread(0.05F); - flame_topaz_gas = flame_gas.clone().setReloadCount(500).setProjectiles(2).setSpread(0.05F); - flame_topaz_napalm = flame_napalm.clone().setLife(60).setGrav(0.0D).setReloadCount(500).setProjectiles(2).setSpread(0.05F); - flame_topaz_balefire = flame_balefire.clone().setLife(60).setGrav(0.0D).setReloadCount(500).setProjectiles(2).setSpread(0.05F); + flame_topaz_diesel = flame_diesel .clone().setProjectiles(2).setSpread(0.05F).setLife(60).setGrav(0.0D); + flame_topaz_gas = flame_gas .clone().setProjectiles(2).setSpread(0.05F); + flame_topaz_napalm = flame_napalm .clone().setProjectiles(2).setSpread(0.05F).setLife(60).setGrav(0.0D); + flame_topaz_balefire = flame_balefire .clone().setProjectiles(2).setSpread(0.05F).setLife(60).setGrav(0.0D); + + flame_daybreaker_diesel = flame_diesel.clone().setLife(200).setVel(2F).setGrav(0.035D) + .setOnImpact((bullet, mop) -> { Lego.standardExplode(bullet, mop, 5F); spawnFire(bullet, mop, 6F, 2F, 200, EntityFireLingering.TYPE_DIESEL); bullet.setDead(); }); + flame_daybreaker_gas = flame_gas.clone().setLife(200).setVel(2F).setGrav(0.035D) + .setOnImpact((bullet, mop) -> { Lego.standardExplode(bullet, mop, 5F); bullet.setDead(); }); + flame_daybreaker_napalm = flame_napalm.clone().setLife(200).setVel(2F).setGrav(0.035D) + .setOnImpact((bullet, mop) -> { Lego.standardExplode(bullet, mop, 7.5F); spawnFire(bullet, mop, 6F, 2F, 300, EntityFireLingering.TYPE_DIESEL); bullet.setDead(); }); + flame_daybreaker_balefire = flame_balefire.clone().setLife(200).setVel(2F).setGrav(0.035D) + .setOnImpact((bullet, mop) -> { Lego.standardExplode(bullet, mop, 5F); spawnFire(bullet, mop, 7.5F, 2.5F, 400, EntityFireLingering.TYPE_BALEFIRE); bullet.setDead(); }); ModItems.gun_flamer = new ItemGunBaseNT(WeaponQuality.A_SIDE, new GunConfig() .dura(20_000).draw(10).inspect(17).crosshair(Crosshair.L_CIRCLE) @@ -118,7 +137,7 @@ public class XFactoryFlamer { .dmg(10F).delay(1).auto(true).reload(90).jam(17) .mag(new MagazineFullReload(0, 300).addConfigs(flame_diesel, flame_gas, flame_napalm, flame_balefire)) .offset(0.75, -0.0625, -0.25D) - .setupStandardFire().recoil(Lego.LAMBDA_STANDARD_RECOIL)) + .setupStandardFire()) .setupStandardConfiguration() .anim(LAMBDA_FLAMER_ANIMS).orchestra(Orchestras.ORCHESTRA_FLAMER) ).setUnlocalizedName("gun_flamer"); @@ -128,10 +147,20 @@ public class XFactoryFlamer { .dmg(10F).delay(1).auto(true).reload(90).jam(17) .mag(new MagazineFullReload(0, 500).addConfigs(flame_topaz_diesel, flame_topaz_gas, flame_topaz_napalm, flame_topaz_balefire)) .offset(0.75, -0.0625, -0.25D) - .setupStandardFire().recoil(Lego.LAMBDA_STANDARD_RECOIL)) + .setupStandardFire()) .setupStandardConfiguration() .anim(LAMBDA_FLAMER_ANIMS).orchestra(Orchestras.ORCHESTRA_FLAMER) ).setUnlocalizedName("gun_flamer_topaz"); + ModItems.gun_flamer_daybreaker = new ItemGunBaseNT(WeaponQuality.LEGENDARY, new GunConfig() + .dura(20_000).draw(10).inspect(17).crosshair(Crosshair.L_CIRCLE) + .rec(new Receiver(0) + .dmg(10F).delay(10).auto(true).reload(90).jam(17) + .mag(new MagazineFullReload(0, 50).addConfigs(flame_daybreaker_diesel, flame_daybreaker_gas, flame_daybreaker_napalm, flame_daybreaker_balefire)) + .offset(0.75, -0.0625, -0.25D) + .setupStandardFire()) + .setupStandardConfiguration() + .anim(LAMBDA_FLAMER_ANIMS).orchestra(Orchestras.ORCHESTRA_FLAMER) + ).setUnlocalizedName("gun_flamer_daybreaker"); ModItems.gun_chemthrower = new ItemGunChemthrower(WeaponQuality.A_SIDE, new GunConfig() .dura(90_000).draw(10).inspect(17).crosshair(Crosshair.L_CIRCLE).smoke(Lego.LAMBDA_STANDARD_SMOKE) diff --git a/src/main/java/com/hbm/items/weapon/sedna/factory/XFactoryFolly.java b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactoryFolly.java index 06ff41d47..a3927a0da 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/factory/XFactoryFolly.java +++ b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactoryFolly.java @@ -31,6 +31,7 @@ import com.hbm.util.EntityDamageUtil; import com.hbm.util.Vec3NT; import com.hbm.util.ContaminationUtil.ContaminationType; import com.hbm.util.ContaminationUtil.HazardType; +import com.hbm.util.DamageResistanceHandler.DamageClass; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import net.minecraft.entity.Entity; @@ -78,7 +79,7 @@ public class XFactoryFolly { for(int ix = x - 1; ix <= x + 1; ix++) for(int iy = y - 1; iy <= y + 1; iy++) for(int iz = z - 1; iz <= z + 1; iz++) { if(iy > 0 && iy < 256) beam.worldObj.setBlock(ix, iy, iz, Blocks.air); AxisAlignedBB aabb = AxisAlignedBB.getBoundingBox(ix - 1, iy - 1, iz - 1, ix + 2, iy + 2, iz + 2); - for(Entity e : entities) if(e != beam.thrower && e.boundingBox.intersectsWith(aabb)) EntityDamageUtil.attackEntityFromIgnoreIFrame(e, beam.config.getDamage(beam, beam.thrower, true), beam.damage); + for(Entity e : entities) if(e != beam.thrower && e.boundingBox.intersectsWith(aabb)) EntityDamageUtil.attackEntityFromIgnoreIFrame(e, beam.config.getDamage(beam, beam.thrower, beam.config.dmgClass), beam.damage); } } }; @@ -93,7 +94,7 @@ public class XFactoryFolly { public static void init() { - folly_sm = new BulletConfig().setItem(EnumAmmoSecret.FOLLY_SM).setBeam().setLife(100).setVel(2F).setGrav(0.015D).setRenderRotations(false).setSpectral(true).setDoesPenetrate(true) + folly_sm = new BulletConfig().setItem(EnumAmmoSecret.FOLLY_SM).setupDamageClass(DamageClass.SUBATOMIC).setBeam().setLife(100).setVel(2F).setGrav(0.015D).setRenderRotations(false).setSpectral(true).setDoesPenetrate(true) .setOnUpdate(LAMBDA_SM_UPDATE); folly_nuke = new BulletConfig().setItem(EnumAmmoSecret.FOLLY_NUKE).setChunkloading().setLife(600).setVel(4F).setGrav(0.015D) .setOnImpact(LAMBDA_NUKE_IMPACT); diff --git a/src/main/java/com/hbm/main/ResourceManager.java b/src/main/java/com/hbm/main/ResourceManager.java index 7100fe663..a6fbf9565 100644 --- a/src/main/java/com/hbm/main/ResourceManager.java +++ b/src/main/java/com/hbm/main/ResourceManager.java @@ -988,6 +988,7 @@ public class ResourceManager { public static final ResourceLocation liberator_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/liberator.png"); public static final ResourceLocation flamethrower_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/flamethrower.png"); public static final ResourceLocation flamethrower_topaz_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/flamethrower_topaz.png"); + public static final ResourceLocation flamethrower_daybreaker_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/flamethrower_daybreaker.png"); public static final ResourceLocation mike_hawk_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/lag.png"); public static final ResourceLocation uzi_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/uzi.png"); public static final ResourceLocation panzerschreck_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/panzerschreck.png"); diff --git a/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderFlamer.java b/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderFlamer.java index 778dd4ba9..5ec21511a 100644 --- a/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderFlamer.java +++ b/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderFlamer.java @@ -2,6 +2,7 @@ package com.hbm.render.item.weapon.sedna; import org.lwjgl.opengl.GL11; +import com.hbm.items.ModItems; import com.hbm.items.weapon.sedna.ItemGunBaseNT; import com.hbm.items.weapon.sedna.mags.IMagazine; import com.hbm.main.MainRegistry; @@ -63,6 +64,7 @@ public class ItemRenderFlamer extends ItemRenderWeaponBase { GL11.glPushMatrix(); HbmAnimations.applyRelevantTransformation("Gun"); ResourceManager.flamethrower.renderPart("Gun"); + if(hasShield(stack)) ResourceManager.flamethrower.renderPart("HeatShield"); GL11.glPopMatrix(); GL11.glPushMatrix(); @@ -70,7 +72,6 @@ public class ItemRenderFlamer extends ItemRenderWeaponBase { ResourceManager.flamethrower.renderPart("Tank"); GL11.glPopMatrix(); - GL11.glPushMatrix(); HbmAnimations.applyRelevantTransformation("Gauge"); GL11.glTranslated(1.25, 1.25, 0); @@ -111,6 +112,11 @@ public class ItemRenderFlamer extends ItemRenderWeaponBase { ResourceManager.flamethrower.renderPart("Gun"); ResourceManager.flamethrower.renderPart("Tank"); ResourceManager.flamethrower.renderPart("Gauge"); + if(hasShield(stack)) ResourceManager.flamethrower.renderPart("HeatShield"); GL11.glShadeModel(GL11.GL_FLAT); } + + public boolean hasShield(ItemStack stack) { + return stack.getItem() == ModItems.gun_flamer_daybreaker; + } } diff --git a/src/main/java/com/hbm/util/DamageResistanceHandler.java b/src/main/java/com/hbm/util/DamageResistanceHandler.java index 823e97126..8e25d7077 100644 --- a/src/main/java/com/hbm/util/DamageResistanceHandler.java +++ b/src/main/java/com/hbm/util/DamageResistanceHandler.java @@ -33,6 +33,15 @@ public class DamageResistanceHandler { public static HashMap itemStats = new HashMap(); public static HashMap, ResistanceStats> setStats = new HashMap(); public static HashMap, ResistanceStats> entityStats = new HashMap(); + + public static enum DamageClass { + PHYSICAL, + FIRE, + EXPLOSIVE, + ELECTRIC, + LASER, + SUBATOMIC + } public static void init() { entityStats.put(EntityCreeper.class, new ResistanceStats().add(KEY_EXPLOSION, 2F, 0.5F)); diff --git a/src/main/java/com/hbm/util/EntityDamageUtil.java b/src/main/java/com/hbm/util/EntityDamageUtil.java index 6cc3f083a..3b4050c72 100644 --- a/src/main/java/com/hbm/util/EntityDamageUtil.java +++ b/src/main/java/com/hbm/util/EntityDamageUtil.java @@ -48,6 +48,7 @@ public class EntityDamageUtil { if(ForgeHooks.onLivingAttack(living, source, amount) && allowSpecialCancel) return false; if(living.isEntityInvulnerable()) return false; if(living.worldObj.isRemote) return false; + if(living instanceof EntityPlayer && ((EntityPlayer) living).capabilities.disableDamage && !source.canHarmInCreative()) return false; living.entityAge = 0; if(living.getHealth() <= 0.0F) return false; @@ -151,8 +152,6 @@ public class EntityDamageUtil { float armor = amount * (float) i; damageArmorNT(living, amount); amount = armor / 25.0F; - - //TODO: special handling depending on armor stats } return amount; diff --git a/src/main/resources/assets/hbm/textures/models/weapons/flamethrower.png b/src/main/resources/assets/hbm/textures/models/weapons/flamethrower.png index d27d13845e342398c1793dfedb1025df3b2c579d..1923803828a037c942bde902a16eec2e0ecae35b 100644 GIT binary patch literal 6671 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 literal 6267 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 Il56S;@935~tQh!zdCM@J~Ct=23to*J=(Sglb- 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 B33&hj literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/models/weapons/flamethrower_topaz.png b/src/main/resources/assets/hbm/textures/models/weapons/flamethrower_topaz.png index 3e668925146565b716dd6478b2b7b283323c3f28..53c100c739b75eb6208dce979c9037bac18cd99c 100644 GIT binary patch literal 6679 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 literal 6279 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 Date: Fri, 29 Nov 2024 15:05:36 +0100 Subject: [PATCH 08/24] i want a woman who straight up fucking kills me --- .../weapon/sedna/factory/Orchestras.java | 15 +++++++++++++++ .../weapon/sedna/factory/XFactoryFlamer.java | 4 ++-- .../weapons/flamethrower_daybreaker.png | Bin 6654 -> 7813 bytes 3 files changed, 17 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/hbm/items/weapon/sedna/factory/Orchestras.java b/src/main/java/com/hbm/items/weapon/sedna/factory/Orchestras.java index f6d06a7b0..138ef08d1 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/factory/Orchestras.java +++ b/src/main/java/com/hbm/items/weapon/sedna/factory/Orchestras.java @@ -573,6 +573,21 @@ public class Orchestras { } }; + public static BiConsumer ORCHESTRA_FLAMER_DAYBREAKER = (stack, ctx) -> { + EntityLivingBase entity = ctx.entity; + if(entity.worldObj.isRemote) return; + AnimType type = ItemGunBaseNT.getLastAnim(stack, ctx.configIndex); + int timer = ItemGunBaseNT.getAnimTimer(stack, ctx.configIndex); + + if(type == AnimType.RELOAD) { + if(timer == 15) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.openLatch", 1F, 1F); + if(timer == 35) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.impact", 0.5F, 1F); + if(timer == 60) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.revolverClose", 1F, 0.75F); + if(timer == 70) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.insertCanister", 1F, 1F); + if(timer == 85) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.pressureValve", 1F, 1F); + } + }; + public static BiConsumer ORCHESTRA_LAG = (stack, ctx) -> { EntityLivingBase entity = ctx.entity; if(entity.worldObj.isRemote) return; diff --git a/src/main/java/com/hbm/items/weapon/sedna/factory/XFactoryFlamer.java b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactoryFlamer.java index 7d43cbc16..b72bc8e6a 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/factory/XFactoryFlamer.java +++ b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactoryFlamer.java @@ -154,12 +154,12 @@ public class XFactoryFlamer { ModItems.gun_flamer_daybreaker = new ItemGunBaseNT(WeaponQuality.LEGENDARY, new GunConfig() .dura(20_000).draw(10).inspect(17).crosshair(Crosshair.L_CIRCLE) .rec(new Receiver(0) - .dmg(10F).delay(10).auto(true).reload(90).jam(17) + .dmg(10F).delay(10).auto(true).reload(90).jam(17).sound("hbm:weapon.fire.blackPowder", 1.0F, 1.0F) .mag(new MagazineFullReload(0, 50).addConfigs(flame_daybreaker_diesel, flame_daybreaker_gas, flame_daybreaker_napalm, flame_daybreaker_balefire)) .offset(0.75, -0.0625, -0.25D) .setupStandardFire()) .setupStandardConfiguration() - .anim(LAMBDA_FLAMER_ANIMS).orchestra(Orchestras.ORCHESTRA_FLAMER) + .anim(LAMBDA_FLAMER_ANIMS).orchestra(Orchestras.ORCHESTRA_FLAMER_DAYBREAKER) ).setUnlocalizedName("gun_flamer_daybreaker"); ModItems.gun_chemthrower = new ItemGunChemthrower(WeaponQuality.A_SIDE, new GunConfig() diff --git a/src/main/resources/assets/hbm/textures/models/weapons/flamethrower_daybreaker.png b/src/main/resources/assets/hbm/textures/models/weapons/flamethrower_daybreaker.png index 75cba37964ded31b509ffd5c0fea1243fccb7645..abb9a52d973da5a0f23dac0e8250653f241dd9fb 100644 GIT binary patch literal 7813 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 Vv5sEO3CN>BH*}1Um0I>u{|DW*bvpn6 literal 6654 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 B33&hj From b8325218a89b451a1858a7b86c68420d16c24692 Mon Sep 17 00:00:00 2001 From: Bob Date: Sun, 1 Dec 2024 00:52:17 +0100 Subject: [PATCH 09/24] :b:alls --- changelog | 1 + src/main/java/com/hbm/blocks/ModBlocks.java | 5 +- .../hbm/blocks/generic/BlockOreBasalt.java | 9 +- .../hbm/blocks/generic/BlockSupplyCrate.java | 126 + .../java/com/hbm/entity/EntityMappings.java | 2 + .../hbm/entity/item/EntityParachuteCrate.java | 75 + .../com/hbm/entity/logic/EntityBomber.java | 641 +-- .../java/com/hbm/entity/logic/EntityC130.java | 97 + .../com/hbm/entity/logic/EntityPlaneBase.java | 151 + src/main/java/com/hbm/itempool/ItemPool.java | 1 + .../java/com/hbm/itempool/ItemPoolsC130.java | 43 + .../com/hbm/itempool/ItemPoolsComponent.java | 1 - .../com/hbm/itempool/ItemPoolsLegacy.java | 2 - src/main/java/com/hbm/items/ModItems.java | 3 - .../com/hbm/items/tool/ItemBombCaller.java | 3 - .../com/hbm/items/tool/ItemCrateCaller.java | 70 - .../weapon/sedna/factory/XFactory40mm.java | 26 +- .../weapon/sedna/factory/XFactoryFolly.java | 2 +- src/main/java/com/hbm/main/ClientProxy.java | 2 + src/main/java/com/hbm/main/MainRegistry.java | 1 + .../java/com/hbm/main/ResourceManager.java | 3 + .../java/com/hbm/packet/PacketDispatcher.java | 2 - .../toclient/LoopedEntitySoundPacket.java | 84 - .../hbm/render/entity/item/RenderC130.java | 67 + .../entity/item/RenderParachuteCrate.java | 50 + .../java/com/hbm/sound/MovingSoundBomber.java | 75 - .../java/com/hbm/tileentity/TileMappings.java | 2 + .../java/com/hbm/util/EntityDamageUtil.java | 1 + .../assets/hbm/models/weapons/c130.obj | 3946 +++++++++++++++++ .../assets/hbm/textures/models/ModelFolly.png | Bin 895 -> 0 bytes .../hbm/textures/models/ModelTwiGun.png | Bin 2418 -> 0 bytes .../hbm/textures/models/weapons/c130_0.png | Bin 0 -> 2955 bytes 32 files changed, 4798 insertions(+), 693 deletions(-) create mode 100644 src/main/java/com/hbm/blocks/generic/BlockSupplyCrate.java create mode 100644 src/main/java/com/hbm/entity/item/EntityParachuteCrate.java create mode 100644 src/main/java/com/hbm/entity/logic/EntityC130.java create mode 100644 src/main/java/com/hbm/entity/logic/EntityPlaneBase.java create mode 100644 src/main/java/com/hbm/itempool/ItemPoolsC130.java delete mode 100644 src/main/java/com/hbm/items/tool/ItemCrateCaller.java delete mode 100644 src/main/java/com/hbm/packet/toclient/LoopedEntitySoundPacket.java create mode 100644 src/main/java/com/hbm/render/entity/item/RenderC130.java create mode 100644 src/main/java/com/hbm/render/entity/item/RenderParachuteCrate.java delete mode 100644 src/main/java/com/hbm/sound/MovingSoundBomber.java create mode 100644 src/main/resources/assets/hbm/models/weapons/c130.obj delete mode 100644 src/main/resources/assets/hbm/textures/models/ModelFolly.png delete mode 100755 src/main/resources/assets/hbm/textures/models/ModelTwiGun.png create mode 100644 src/main/resources/assets/hbm/textures/models/weapons/c130_0.png diff --git a/changelog b/changelog index ec4d48f14..b7ac7a488 100644 --- a/changelog +++ b/changelog @@ -58,6 +58,7 @@ * Fallout effects now remove snow layers in the same area where they would remove things like small plants and leaves * Adjusted damage values to many swords and some tools * Unsats and aromatics can now be filled into gas canisters +* Basalt asbestos ore no longer creates asbestos particles every block update, meaning volcanoes no longer cause massive delays with chunk rendering due to constant block changes ## Fixed * The conveyor grabber should no longer skip over items when used in long lines diff --git a/src/main/java/com/hbm/blocks/ModBlocks.java b/src/main/java/com/hbm/blocks/ModBlocks.java index 56474db0e..7c6d4c0d8 100644 --- a/src/main/java/com/hbm/blocks/ModBlocks.java +++ b/src/main/java/com/hbm/blocks/ModBlocks.java @@ -600,8 +600,9 @@ public class ModBlocks { public static Block sat_resonator; public static Block sat_dock; - + public static Block soyuz_capsule; + public static Block crate_supply; public static Block crate_iron; public static Block crate_steel; @@ -2064,6 +2065,7 @@ 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"); + crate_supply = new BlockSupplyCrate(Material.wood).setBlockName("crate_supply").setStepSound(Block.soundTypeWood).setHardness(1.0F).setResistance(2.5F).setCreativeTab(MainRegistry.missileTab).setBlockTextureName(RefStrings.MODID + ":crate_can"); turret_chekhov = new TurretChekhov(Material.iron).setBlockName("turret_chekhov").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.weaponTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); turret_friendly = new TurretFriendly(Material.iron).setBlockName("turret_friendly").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.weaponTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); @@ -3340,6 +3342,7 @@ public class ModBlocks { GameRegistry.registerBlock(soyuz_launcher, soyuz_launcher.getUnlocalizedName()); GameRegistry.registerBlock(sat_dock, sat_dock.getUnlocalizedName()); GameRegistry.registerBlock(soyuz_capsule, soyuz_capsule.getUnlocalizedName()); + GameRegistry.registerBlock(crate_supply, crate_supply.getUnlocalizedName()); GameRegistry.registerBlock(machine_radar, machine_radar.getUnlocalizedName()); GameRegistry.registerBlock(machine_radar_large, machine_radar_large.getUnlocalizedName()); GameRegistry.registerBlock(radar_screen, radar_screen.getUnlocalizedName()); diff --git a/src/main/java/com/hbm/blocks/generic/BlockOreBasalt.java b/src/main/java/com/hbm/blocks/generic/BlockOreBasalt.java index 977051fb8..2c02d928f 100644 --- a/src/main/java/com/hbm/blocks/generic/BlockOreBasalt.java +++ b/src/main/java/com/hbm/blocks/generic/BlockOreBasalt.java @@ -65,14 +65,7 @@ public class BlockOreBasalt extends BlockEnumMulti { } @Override - public void onNeighborBlockChange(World world, int x, int y, int z, Block block) { - int meta = world.getBlockMetadata(x, y, z); - if(meta == EnumBasaltOreType.ASBESTOS.ordinal()) for(ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) { - if(world.getBlock(x + dir.offsetX, y + dir.offsetY, z + dir.offsetZ) == Blocks.air) { - world.setBlock(x + dir.offsetX, y + dir.offsetY, z + dir.offsetZ, ModBlocks.gas_asbestos); - } - } - } + public void onNeighborBlockChange(World world, int x, int y, int z, Block block) { } //no more BUD outgassing for you, mister @Override public void dropBlockAsItemWithChance(World world, int x, int y, int z, int meta, float chance, int fortune) { diff --git a/src/main/java/com/hbm/blocks/generic/BlockSupplyCrate.java b/src/main/java/com/hbm/blocks/generic/BlockSupplyCrate.java new file mode 100644 index 000000000..f9052f062 --- /dev/null +++ b/src/main/java/com/hbm/blocks/generic/BlockSupplyCrate.java @@ -0,0 +1,126 @@ +package com.hbm.blocks.generic; + +import java.util.ArrayList; +import java.util.List; + +import com.hbm.items.ModItems; + +import net.minecraft.block.BlockContainer; +import net.minecraft.block.material.Material; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.entity.item.EntityItem; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.nbt.NBTTagList; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.world.World; + +public class BlockSupplyCrate extends BlockContainer { + + public BlockSupplyCrate(Material mat) { + super(mat); + } + + @Override + public TileEntity createNewTileEntity(World world, int meta) { + return new TileEntitySupplyCrate(); + } + + @Override public int getRenderType() { return BlockCanCrate.renderID; } + @Override public boolean isOpaqueCube() { return false; } + @Override public boolean renderAsNormalBlock() { return false; } + + @Override + public boolean removedByPlayer(World world, EntityPlayer player, int x, int y, int z, boolean willHarvest) { + + if(!player.capabilities.isCreativeMode && !world.isRemote && willHarvest) { + + ItemStack drop = new ItemStack(this); + TileEntitySupplyCrate inv = (TileEntitySupplyCrate) world.getTileEntity(x, y, z); + NBTTagCompound nbt = new NBTTagCompound(); + + if(inv != null) { + for(int i = 0; i < inv.items.size(); i++) { + ItemStack stack = inv.items.get(i); + if(stack == null) continue; + NBTTagCompound slot = new NBTTagCompound(); + stack.writeToNBT(slot); + nbt.setTag("slot" + i, slot); + } + nbt.setInteger("amount", inv.items.size()); + } + + if(!nbt.hasNoTags()) drop.stackTagCompound = nbt; + world.spawnEntityInWorld(new EntityItem(world, x + 0.5, y + 0.5, z + 0.5, drop)); + } + return world.setBlockToAir(x, y, z); + } + + @Override + public void onBlockPlacedBy(World world, int x, int y, int z, EntityLivingBase player, ItemStack stack) { + + TileEntitySupplyCrate inv = (TileEntitySupplyCrate) world.getTileEntity(x, y, z); + + if(inv != null && stack.hasTagCompound()) { + int amount = stack.stackTagCompound.getInteger("amount"); + for(int i = 0; i < amount; i++) { + inv.items.add(ItemStack.loadItemStackFromNBT(stack.stackTagCompound.getCompoundTag("slot" + i))); + } + } + + super.onBlockPlacedBy(world, x, y, z, player, stack); + } + + @Override + public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int p_149727_6_, float p_149727_7_, float p_149727_8_, float p_149727_9_) { + if(player.getHeldItem() != null && player.getHeldItem().getItem().equals(ModItems.crowbar)) { + if(!world.isRemote) { + dropContents(world, x, y, z); + world.func_147480_a(x, y, z, false); + world.playSoundEffect(x, y, z, "hbm:block.crateBreak", 0.5F, 1.0F); + } + return true; + } + return false; + } + + public void dropContents(World world, int x, int y, int z) { + TileEntity tile = world.getTileEntity(x, y, z); + if(tile instanceof TileEntitySupplyCrate) { + TileEntitySupplyCrate crate = (TileEntitySupplyCrate) tile; + + for(ItemStack item : crate.items) { + this.dropBlockAsItem(world, x, y, z, item); + } + } + } + + public static class TileEntitySupplyCrate extends TileEntity { + + public List items = new ArrayList(); + + @Override + public void readFromNBT(NBTTagCompound nbt) { + super.readFromNBT(nbt); + items.clear(); + NBTTagList list = nbt.getTagList("items", 10); + for(int i = 0; i < list.tagCount(); i++) { + NBTTagCompound nbt1 = list.getCompoundTagAt(i); + items.add(ItemStack.loadItemStackFromNBT(nbt1)); + } + } + + @Override + public void writeToNBT(NBTTagCompound nbt) { + super.writeToNBT(nbt); + NBTTagList list = new NBTTagList(); + for(int i = 0; i < items.size(); i++) { + NBTTagCompound nbt1 = new NBTTagCompound(); + items.get(i).writeToNBT(nbt1); + list.appendTag(nbt1); + } + nbt.setTag("items", list); + } + } +} diff --git a/src/main/java/com/hbm/entity/EntityMappings.java b/src/main/java/com/hbm/entity/EntityMappings.java index 614ca4284..0e820e3a5 100644 --- a/src/main/java/com/hbm/entity/EntityMappings.java +++ b/src/main/java/com/hbm/entity/EntityMappings.java @@ -124,6 +124,7 @@ public class EntityMappings { addEntity(EntityGrenadePC.class, "entity_grenade_pink_cloud", 250); addEntity(EntityGrenadeCloud.class, "entity_grenade_cloud", 250); addEntity(EntityBomber.class, "entity_bomber", 1000); + addEntity(EntityC130.class, "entity_c130", 1000); addEntity(EntityBombletZeta.class, "entity_zeta", 1000); addEntity(EntityOrangeFX.class, "entity_agent_orange", 1000); addEntity(EntityDeathBlast.class, "entity_laser_blast", 1000); @@ -164,6 +165,7 @@ public class EntityMappings { addEntity(EntityBuilding.class, "entity_falling_building", 1000); addEntity(EntitySoyuz.class, "entity_soyuz", 1000); addEntity(EntitySoyuzCapsule.class, "entity_soyuz_capsule", 1000); + addEntity(EntityParachuteCrate.class, "entity_parachute_crate", 1000); addEntity(EntityMovingItem.class, "entity_c_item", 1000); addEntity(EntityMovingPackage.class, "entity_c_package", 1000); addEntity(EntityDeliveryDrone.class, "entity_delivery_drone", 250, false); diff --git a/src/main/java/com/hbm/entity/item/EntityParachuteCrate.java b/src/main/java/com/hbm/entity/item/EntityParachuteCrate.java new file mode 100644 index 000000000..b18195288 --- /dev/null +++ b/src/main/java/com/hbm/entity/item/EntityParachuteCrate.java @@ -0,0 +1,75 @@ +package com.hbm.entity.item; + +import java.util.ArrayList; +import java.util.List; + +import com.hbm.blocks.ModBlocks; +import com.hbm.blocks.generic.BlockSupplyCrate.TileEntitySupplyCrate; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.entity.Entity; +import net.minecraft.init.Blocks; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.nbt.NBTTagList; +import net.minecraft.world.World; + +public class EntityParachuteCrate extends Entity { + + public List items = new ArrayList(); + + public EntityParachuteCrate(World world) { + super(world); + this.ignoreFrustumCheck = true; + this.isImmuneToFire = true; + } + + @Override + public void onUpdate() { + + this.lastTickPosX = this.prevPosX = posX; + this.lastTickPosY = this.prevPosY = posY; + this.lastTickPosZ = this.prevPosZ = posZ; + this.setPosition(posX + this.motionX, posY + this.motionY, posZ + this.motionZ); + + if(this.motionY > -0.2) this.motionY -= 0.02; + if(posY > 600) posY = 600; + + if(this.worldObj.getBlock((int) Math.floor(this.posX), (int) Math.floor(this.posY), (int) Math.floor(this.posZ)) != Blocks.air) { + + this.setDead(); + + if(!worldObj.isRemote) { + + worldObj.setBlock((int) Math.floor(this.posX), (int) Math.floor(this.posY + 1), (int) Math.floor(this.posZ), ModBlocks.crate_supply); + TileEntitySupplyCrate crate = (TileEntitySupplyCrate) worldObj.getTileEntity((int) Math.floor(this.posX), (int) Math.floor(this.posY + 1), (int) Math.floor(this.posZ)); + if(crate != null) crate.items.addAll(this.items); + } + } + } + + @Override protected void entityInit() { } + @Override @SideOnly(Side.CLIENT) public boolean isInRangeToRenderDist(double distance) { return true; } + + @Override + public void readEntityFromNBT(NBTTagCompound nbt) { + items.clear(); + NBTTagList list = nbt.getTagList("items", 10); + for(int i = 0; i < list.tagCount(); i++) { + NBTTagCompound nbt1 = list.getCompoundTagAt(i); + items.add(ItemStack.loadItemStackFromNBT(nbt1)); + } + } + + @Override + public void writeEntityToNBT(NBTTagCompound nbt) { + NBTTagList list = new NBTTagList(); + for(int i = 0; i < items.size(); i++) { + NBTTagCompound nbt1 = new NBTTagCompound(); + items.get(i).writeToNBT(nbt1); + list.appendTag(nbt1); + } + nbt.setTag("items", list); + } +} diff --git a/src/main/java/com/hbm/entity/logic/EntityBomber.java b/src/main/java/com/hbm/entity/logic/EntityBomber.java index 25cc3acb4..1fcb7bbb7 100644 --- a/src/main/java/com/hbm/entity/logic/EntityBomber.java +++ b/src/main/java/com/hbm/entity/logic/EntityBomber.java @@ -1,516 +1,275 @@ package com.hbm.entity.logic; -import java.util.ArrayList; -import java.util.List; - import com.hbm.config.GeneralConfig; import com.hbm.entity.projectile.EntityBombletZeta; import com.hbm.entity.projectile.EntityBoxcar; import com.hbm.entity.projectile.EntityRocketHoming; import com.hbm.explosion.ExplosionChaos; -import com.hbm.explosion.ExplosionLarge; -import com.hbm.lib.ModDamageSource; +import com.hbm.interfaces.NotableComments; import com.hbm.main.MainRegistry; -import com.hbm.packet.PacketDispatcher; -import com.hbm.packet.toclient.LoopedEntitySoundPacket; -import com.hbm.util.ParticleUtil; +import com.hbm.sound.AudioWrapper; -import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; -import net.minecraft.entity.Entity; import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.util.DamageSource; -import net.minecraft.util.MathHelper; import net.minecraft.util.Vec3; -import net.minecraft.world.ChunkCoordIntPair; import net.minecraft.world.World; -import net.minecraftforge.common.ForgeChunkManager; -import net.minecraftforge.common.ForgeChunkManager.Ticket; -import net.minecraftforge.common.ForgeChunkManager.Type; -public class EntityBomber extends Entity implements IChunkLoader { +@NotableComments +public class EntityBomber extends EntityPlaneBase { - int timer = 200; + /* This was probably the dumbest fucking way that I could have handled this. Not gonna change it now, be glad I made a superclass at all. */ int bombStart = 75; int bombStop = 125; int bombRate = 3; int type = 0; - - public int health = 50; - public EntityBomber(World p_i1582_1_) { - super(p_i1582_1_); + protected AudioWrapper audio; + + public EntityBomber(World world) { + super(world); this.ignoreFrustumCheck = true; - this.setSize(8.0F, 4.0F); + this.setSize(8.0F, 4.0F); + } + + @Override + public void entityInit() { + super.entityInit(); + this.dataWatcher.addObject(16, Byte.valueOf((byte) 0)); } - public boolean canBeCollidedWith() - { - return this.health > 0; - } - - public boolean attackEntityFrom(DamageSource p_70097_1_, float p_70097_2_) - { - if(p_70097_1_ == ModDamageSource.nuclearBlast) - return false; - - if (this.isEntityInvulnerable()) - { - return false; - } - else - { - if (!this.isDead && !this.worldObj.isRemote && this.health > 0) - { - health -= p_70097_2_; - - if (this.health <= 0) - { - this.killBomber(); - } - } - - return true; - } - } - - private void killBomber() { - ExplosionLarge.explode(worldObj, posX, posY, posZ, 5, true, false, true); - worldObj.playSoundEffect((double)(posX + 0.5F), (double)(posY + 0.5F), (double)(posZ + 0.5F), "hbm:entity.planeShotDown", 25.0F, 1.0F); - } - + /** This sucks balls. Too bad! */ @Override public void onUpdate() { + super.onUpdate(); - //super.onUpdate(); - - this.lastTickPosX = this.prevPosX = posX; - this.lastTickPosY = this.prevPosY = posY; - this.lastTickPosZ = this.prevPosZ = posZ; - - this.setPosition(posX + motionX, posY + motionY, posZ + motionZ); - - if(!worldObj.isRemote) { - - this.dataWatcher.updateObject(17, health); - - if(health > 0) - PacketDispatcher.wrapper.sendToAllAround(new LoopedEntitySoundPacket(this.getEntityId()), new TargetPoint(worldObj.provider.dimensionId, posX, posY, posZ, 250)); - } else { - health = this.dataWatcher.getWatchableObjectInt(17); - } - - this.rotation(); - - if(this.health <= 0) { - motionY -= 0.025; - - for(int i = 0; i < 10; i++) - ParticleUtil.spawnGasFlame(this.worldObj, this.posX + rand.nextGaussian() * 0.5 - motionX * 2, this.posY + rand.nextGaussian() * 0.5 - motionY * 2, this.posZ + rand.nextGaussian() * 0.5 - motionZ * 2, 0.0, 0.1, 0.0); - - if(worldObj.getBlock((int)posX, (int)posY, (int)posZ).isNormalCube() && !worldObj.isRemote) { - this.setDead(); - - /*worldObj.setBlock((int)posX, (int)posY, (int)posZ, ModBlocks.bomber); - TileEntityBomber te = (TileEntityBomber)worldObj.getTileEntity((int)posX, (int)posY, (int)posZ); - - if(te != null) { - te.yaw = (int)(this.rotationYaw); - te.pitch = (int)(this.rotationPitch); - - te.type = this.getDataWatcher().getWatchableObjectByte(16); - }*/ - - ExplosionLarge.explodeFire(worldObj, posX, posY, posZ, 25, true, false, true); - worldObj.playSoundEffect((double)(posX + 0.5F), (double)(posY + 0.5F), (double)(posZ + 0.5F), "hbm:entity.planeCrash", 10.0F, 1.0F); - - return; + if(worldObj.isRemote) { + if(this.getDataWatcher().getWatchableObjectFloat(17) > 0) { + if(audio == null || !audio.isPlaying()) { + int bomberType = this.dataWatcher.getWatchableObjectByte(16); + audio = MainRegistry.proxy.getLoopedSound(bomberType <= 4 ? "hbm:entity.bomberSmallLoop" : "hbm:entity.bomberLoop", (float) posX, (float) posY, (float) posZ, 2F, 250F, 1F, 20); + audio.startSound(); + } + audio.keepAlive(); + audio.updatePosition((float) posX, (float) posY, (float) posZ); + } else { + if(audio != null && audio.isPlaying()) { + audio.stopSound(); + audio = null; + } } } - if(this.ticksExisted > timer) - this.setDead(); - if(!worldObj.isRemote && this.health > 0 && this.ticksExisted > bombStart && this.ticksExisted < bombStop && this.ticksExisted % bombRate == 0) { if(type == 3) { - - worldObj.playSoundEffect((double)(posX + 0.5F), (double)(posY + 0.5F), (double)(posZ + 0.5F), "random.fizz", 5.0F, 2.6F + (rand.nextFloat() - rand.nextFloat()) * 0.8F); + worldObj.playSoundEffect((double) (posX + 0.5F), (double) (posY + 0.5F), (double) (posZ + 0.5F), "random.fizz", 5.0F, 2.6F + (rand.nextFloat() - rand.nextFloat()) * 0.8F); ExplosionChaos.spawnChlorine(worldObj, this.posX, this.posY - 1F, this.posZ, 10, 0.5, 3); - - } else if(type == 5) { - - worldObj.playSoundEffect((double)(posX + 0.5F), (double)(posY + 0.5F), (double)(posZ + 0.5F), "hbm:weapon.missileTakeOff", 10.0F, 0.9F + rand.nextFloat() * 0.2F); - EntityRocketHoming rocket = new EntityRocketHoming(worldObj); - rocket.setIsCritical(true); - //rocket.motionX = motionX; - //rocket.motionZ = motionZ; - rocket.motionY = -1; - rocket.shootingEntity = this; - rocket.homingRadius = 50; - rocket.homingMod = 5; - - rocket.posX = posX + rand.nextDouble() - 0.5; - rocket.posY = posY - rand.nextDouble(); - rocket.posZ = posZ + rand.nextDouble() - 0.5; - - worldObj.spawnEntityInWorld(rocket); - - } else if(type == 6) { - - worldObj.playSoundEffect((double)(posX + 0.5F), (double)(posY + 0.5F), (double)(posZ + 0.5F), "hbm:weapon.missileTakeOff", 10.0F, 0.9F + rand.nextFloat() * 0.2F); - EntityBoxcar rocket = new EntityBoxcar(worldObj); - - rocket.posX = posX + rand.nextDouble() - 0.5; - rocket.posY = posY - rand.nextDouble(); - rocket.posZ = posZ + rand.nextDouble() - 0.5; - - worldObj.spawnEntityInWorld(rocket); - - } else if(type == 7) { - worldObj.playSoundEffect((double)(posX + 0.5F), (double)(posY + 0.5F), (double)(posZ + 0.5F), "random.fizz", 5.0F, 2.6F + (rand.nextFloat() - rand.nextFloat()) * 0.8F); - ExplosionChaos.spawnChlorine(worldObj, this.posX, worldObj.getHeightValue((int)this.posX, (int)this.posZ) + 2, this.posZ, 10, 1, 2); - + } else if(type == 5) { + worldObj.playSoundEffect((double) (posX + 0.5F), (double) (posY + 0.5F), (double) (posZ + 0.5F), "hbm:weapon.missileTakeOff", 10.0F, 0.9F + rand.nextFloat() * 0.2F); + EntityRocketHoming rocket = new EntityRocketHoming(worldObj); + rocket.setIsCritical(true); + rocket.motionY = -1; + rocket.shootingEntity = this; + rocket.homingRadius = 50; + rocket.homingMod = 5; + rocket.posX = posX + rand.nextDouble() - 0.5; + rocket.posY = posY - rand.nextDouble(); + rocket.posZ = posZ + rand.nextDouble() - 0.5; + worldObj.spawnEntityInWorld(rocket); + + } else if(type == 6) { + worldObj.playSoundEffect((double) (posX + 0.5F), (double) (posY + 0.5F), (double) (posZ + 0.5F), "hbm:weapon.missileTakeOff", 10.0F, 0.9F + rand.nextFloat() * 0.2F); + EntityBoxcar rocket = new EntityBoxcar(worldObj); + rocket.posX = posX + rand.nextDouble() - 0.5; + rocket.posY = posY - rand.nextDouble(); + rocket.posZ = posZ + rand.nextDouble() - 0.5; + worldObj.spawnEntityInWorld(rocket); + + } else if(type == 7) { + worldObj.playSoundEffect((double) (posX + 0.5F), (double) (posY + 0.5F), (double) (posZ + 0.5F), "random.fizz", 5.0F, 2.6F + (rand.nextFloat() - rand.nextFloat()) * 0.8F); + ExplosionChaos.spawnChlorine(worldObj, this.posX, worldObj.getHeightValue((int) this.posX, (int) this.posZ) + 2, this.posZ, 10, 1, 2); + } else { - - worldObj.playSoundEffect((double)(posX + 0.5F), (double)(posY + 0.5F), (double)(posZ + 0.5F), "hbm:entity.bombWhistle", 10.0F, 0.9F + rand.nextFloat() * 0.2F); - + worldObj.playSoundEffect((double) (posX + 0.5F), (double) (posY + 0.5F), (double) (posZ + 0.5F), "hbm:entity.bombWhistle", 10.0F, 0.9F + rand.nextFloat() * 0.2F); EntityBombletZeta zeta = new EntityBombletZeta(worldObj); - /*zeta.prevRotationYaw = zeta.rotationYaw = this.rotationYaw; - zeta.prevRotationPitch = zeta.rotationPitch = this.rotationPitch;*/ - zeta.rotation(); - zeta.type = type; - zeta.posX = posX + rand.nextDouble() - 0.5; zeta.posY = posY - rand.nextDouble(); zeta.posZ = posZ + rand.nextDouble() - 0.5; - if(type == 0) { - zeta.motionX = motionX + rand.nextGaussian() * 0.15; - zeta.motionZ = motionZ + rand.nextGaussian() * 0.15; + zeta.motionX = motionX + rand.nextGaussian() * 0.15; zeta.motionZ = motionZ + rand.nextGaussian() * 0.15; } else { - zeta.motionX = motionX; - zeta.motionZ = motionZ; + zeta.motionX = motionX; zeta.motionZ = motionZ; } - worldObj.spawnEntityInWorld(zeta); } } - - if(!worldObj.isRemote) - loadNeighboringChunks((int)(posX / 16), (int)(posZ / 16)); - } - - public void fac(World world, double x, double y, double z) { - - Vec3 vector = Vec3.createVectorHelper(world.rand.nextDouble() - 0.5, 0, world.rand.nextDouble() - 0.5); - vector = vector.normalize(); - vector.xCoord *= GeneralConfig.enableBomberShortMode ? 1 : 2; - vector.zCoord *= GeneralConfig.enableBomberShortMode ? 1 : 2; - - this.setLocationAndAngles(x - vector.xCoord * 100, y + 50, z - vector.zCoord * 100, 0.0F, 0.0F); - this.loadNeighboringChunks((int)(x / 16), (int)(z / 16)); - - this.motionX = vector.xCoord; - this.motionZ = vector.zCoord; - this.motionY = 0.0D; - - this.rotation(); - - int i = 1; - - int rand = world.rand.nextInt(7); - - switch(rand) { - case 0: - case 1: i = 1; break; - case 2: - case 3: i = 2; break; - case 4: i = 5; break; - case 5: i = 6; break; - case 6: i = 7; break; - } - - if(world.rand.nextInt(100) == 0) { - rand = world.rand.nextInt(4); - switch(rand) { - case 0: i = 0; break; - case 1: i = 3; break; - case 2: i = 4; break; - case 3: i = 8; break; - } - } - - this.getDataWatcher().updateObject(16, (byte)i); - this.setSize(8.0F, 4.0F); - } - - public static EntityBomber statFacCarpet(World world, double x, double y, double z) { - - EntityBomber bomber = new EntityBomber(world); - - bomber.timer = 200; - bomber.bombStart = 50; - bomber.bombStop = 100; - bomber.bombRate = 2; + public void fac(World world, double x, double y, double z) { - bomber.fac(world, x, y, z); - - bomber.type = 0; - - return bomber; - } - - public static EntityBomber statFacNapalm(World world, double x, double y, double z) { - - EntityBomber bomber = new EntityBomber(world); - - bomber.timer = 200; - bomber.bombStart = 50; - bomber.bombStop = 100; - bomber.bombRate = 5; + Vec3 vector = Vec3.createVectorHelper(world.rand.nextDouble() - 0.5, 0, world.rand.nextDouble() - 0.5); + vector = vector.normalize(); + vector.xCoord *= GeneralConfig.enableBomberShortMode ? 1 : 2; + vector.zCoord *= GeneralConfig.enableBomberShortMode ? 1 : 2; - bomber.fac(world, x, y, z); - - bomber.type = 1; - - return bomber; - } - - public static EntityBomber statFacChlorine(World world, double x, double y, double z) { - - EntityBomber bomber = new EntityBomber(world); - - bomber.timer = 200; - bomber.bombStart = 50; - bomber.bombStop = 100; - bomber.bombRate = 4; + this.setLocationAndAngles(x - vector.xCoord * 100, y + 50, z - vector.zCoord * 100, 0.0F, 0.0F); + this.loadNeighboringChunks((int) (x / 16), (int) (z / 16)); - bomber.fac(world, x, y, z); - - bomber.type = 2; - - return bomber; - } - - public static EntityBomber statFacOrange(World world, double x, double y, double z) { - - EntityBomber bomber = new EntityBomber(world); - - bomber.timer = 200; - bomber.bombStart = 75; - bomber.bombStop = 125; - bomber.bombRate = 1; + this.motionX = vector.xCoord; + this.motionZ = vector.zCoord; + this.motionY = 0.0D; - bomber.fac(world, x, y, z); - - bomber.type = 3; - - return bomber; - } - - public static EntityBomber statFacABomb(World world, double x, double y, double z) { - - EntityBomber bomber = new EntityBomber(world); - - bomber.timer = 200; - bomber.bombStart = 60; - bomber.bombStop = 70; - bomber.bombRate = 65; + this.rotation(); - bomber.fac(world, x, y, z); - - int i = 1; - - int rand = world.rand.nextInt(3); - - switch(rand) { - case 0: i = 5; break; - case 1: i = 6; break; - case 2: i = 7; break; - } - - if(world.rand.nextInt(100) == 0) { - i = 8; - } - - bomber.getDataWatcher().updateObject(16, (byte)i); - - bomber.type = 4; - - return bomber; - } - - public static EntityBomber statFacStinger(World world, double x, double y, double z) { - - EntityBomber bomber = new EntityBomber(world); - - bomber.timer = 200; - bomber.bombStart = 50; - bomber.bombStop = 150; - bomber.bombRate = 10; + int i = 1; - bomber.fac(world, x, y, z); - - bomber.getDataWatcher().updateObject(16, (byte)4); - - bomber.type = 5; - - return bomber; - } - - public static EntityBomber statFacBoxcar(World world, double x, double y, double z) { - - EntityBomber bomber = new EntityBomber(world); - - bomber.timer = 200; - bomber.bombStart = 50; - bomber.bombStop = 150; - bomber.bombRate = 10; + int rand = world.rand.nextInt(7); - bomber.fac(world, x, y, z); - - bomber.getDataWatcher().updateObject(16, (byte)6); - - bomber.type = 6; - - return bomber; - } - - public static EntityBomber statFacPC(World world, double x, double y, double z) { - - EntityBomber bomber = new EntityBomber(world); - - bomber.timer = 200; - bomber.bombStart = 75; - bomber.bombStop = 125; - bomber.bombRate = 1; + switch(rand) { + case 0: case 1: i = 1; break; + case 2: case 3: i = 2; break; + case 4: i = 5; break; + case 5: i = 6; break; + case 6: i = 7; break; + } - bomber.fac(world, x, y, z); - - bomber.getDataWatcher().updateObject(16, (byte)6); - - bomber.type = 7; - - return bomber; - } + if(world.rand.nextInt(100) == 0) { + rand = world.rand.nextInt(4); + switch(rand) { + case 0: i = 0; break; + case 1: i = 3; break; + case 2: i = 4; break; + case 3: i = 8; break; + } + } - @Override - public void entityInit() { - init(ForgeChunkManager.requestTicket(MainRegistry.instance, worldObj, Type.ENTITY)); - this.dataWatcher.addObject(16, Byte.valueOf((byte)0)); - this.dataWatcher.addObject(17, Integer.valueOf((int)50)); - } + this.getDataWatcher().updateObject(16, (byte) i); + this.setSize(8.0F, 4.0F); + } + + public static EntityBomber statFacCarpet(World world, double x, double y, double z) { + EntityBomber bomber = new EntityBomber(world); + bomber.timer = 200; + bomber.bombStart = 50; + bomber.bombStop = 100; + bomber.bombRate = 2; + bomber.fac(world, x, y, z); + bomber.type = 0; + return bomber; + } + + public static EntityBomber statFacNapalm(World world, double x, double y, double z) { + EntityBomber bomber = new EntityBomber(world); + bomber.timer = 200; + bomber.bombStart = 50; + bomber.bombStop = 100; + bomber.bombRate = 5; + bomber.fac(world, x, y, z); + bomber.type = 1; + return bomber; + } + + public static EntityBomber statFacChlorine(World world, double x, double y, double z) { + EntityBomber bomber = new EntityBomber(world); + bomber.timer = 200; + bomber.bombStart = 50; + bomber.bombStop = 100; + bomber.bombRate = 4; + bomber.fac(world, x, y, z); + bomber.type = 2; + return bomber; + } + + public static EntityBomber statFacOrange(World world, double x, double y, double z) { + EntityBomber bomber = new EntityBomber(world); + bomber.timer = 200; + bomber.bombStart = 75; + bomber.bombStop = 125; + bomber.bombRate = 1; + bomber.fac(world, x, y, z); + bomber.type = 3; + return bomber; + } + + public static EntityBomber statFacABomb(World world, double x, double y, double z) { + EntityBomber bomber = new EntityBomber(world); + bomber.timer = 200; + bomber.bombStart = 60; + bomber.bombStop = 70; + bomber.bombRate = 65; + bomber.fac(world, x, y, z); + int i = 1; + + int rand = world.rand.nextInt(3); + + switch(rand) { + case 0: i = 5; break; + case 1: i = 6; break; + case 2: i = 7; break; + } + if(world.rand.nextInt(100) == 0) i = 8; + + bomber.getDataWatcher().updateObject(16, (byte) i); + bomber.type = 4; + return bomber; + } + + public static EntityBomber statFacStinger(World world, double x, double y, double z) { + EntityBomber bomber = new EntityBomber(world); + bomber.timer = 200; + bomber.bombStart = 50; + bomber.bombStop = 150; + bomber.bombRate = 10; + bomber.fac(world, x, y, z); + bomber.getDataWatcher().updateObject(16, (byte) 4); + bomber.type = 5; + return bomber; + } + + public static EntityBomber statFacBoxcar(World world, double x, double y, double z) { + EntityBomber bomber = new EntityBomber(world); + bomber.timer = 200; + bomber.bombStart = 50; + bomber.bombStop = 150; + bomber.bombRate = 10; + bomber.fac(world, x, y, z); + bomber.getDataWatcher().updateObject(16, (byte) 6); + bomber.type = 6; + return bomber; + } + + public static EntityBomber statFacPC(World world, double x, double y, double z) { + EntityBomber bomber = new EntityBomber(world); + bomber.timer = 200; + bomber.bombStart = 75; + bomber.bombStop = 125; + bomber.bombRate = 1; + bomber.fac(world, x, y, z); + bomber.getDataWatcher().updateObject(16, (byte) 6); + bomber.type = 7; + return bomber; + } @Override protected void readEntityFromNBT(NBTTagCompound nbt) { - ticksExisted = nbt.getInteger("ticksExisted"); + super.readEntityFromNBT(nbt); bombStart = nbt.getInteger("bombStart"); bombStop = nbt.getInteger("bombStop"); bombRate = nbt.getInteger("bombRate"); type = nbt.getInteger("type"); - - this.getDataWatcher().updateObject(16, nbt.getByte("style")); - this.getDataWatcher().updateObject(17, nbt.getInteger("health")); - this.setSize(8.0F, 4.0F); + this.getDataWatcher().updateObject(16, nbt.getByte("style")); + this.setSize(8.0F, 4.0F); } @Override protected void writeEntityToNBT(NBTTagCompound nbt) { - nbt.setInteger("ticksExisted", ticksExisted); + super.writeEntityToNBT(nbt); nbt.setInteger("bombStart", bombStart); nbt.setInteger("bombStop", bombStop); nbt.setInteger("bombRate", bombRate); nbt.setInteger("type", type); nbt.setByte("style", this.getDataWatcher().getWatchableObjectByte(16)); - nbt.setInteger("health", this.getDataWatcher().getWatchableObjectInt(17)); } - - protected void rotation() { - float f2 = MathHelper.sqrt_double(this.motionX * this.motionX + this.motionZ * this.motionZ); - this.rotationYaw = (float)(Math.atan2(this.motionX, this.motionZ) * 180.0D / Math.PI); - - for (this.rotationPitch = (float)(Math.atan2(this.motionY, f2) * 180.0D / Math.PI) - 90; this.rotationPitch - this.prevRotationPitch < -180.0F; this.prevRotationPitch -= 360.0F) - { - ; - } - - while (this.rotationPitch - this.prevRotationPitch >= 180.0F) - { - this.prevRotationPitch += 360.0F; - } - - while (this.rotationYaw - this.prevRotationYaw < -180.0F) - { - this.prevRotationYaw -= 360.0F; - } - - while (this.rotationYaw - this.prevRotationYaw >= 180.0F) - { - this.prevRotationYaw += 360.0F; - } - } - - @Override - @SideOnly(Side.CLIENT) - public boolean isInRangeToRenderDist(double distance) - { - return distance < 500000; - } - - private Ticket loaderTicket; - - public void init(Ticket ticket) { - - if(!worldObj.isRemote) { - - if(ticket != null) { - - if(loaderTicket == null) { - - loaderTicket = ticket; - loaderTicket.bindEntity(this); - loaderTicket.getModData(); - } - - - ForgeChunkManager.forceChunk(loaderTicket, new ChunkCoordIntPair(chunkCoordX, chunkCoordZ)); - } - } - } - - List loadedChunks = new ArrayList(); - - public void loadNeighboringChunks(int newChunkX, int newChunkZ) - { - if(!worldObj.isRemote && loaderTicket != null) - { - for(ChunkCoordIntPair chunk : loadedChunks) - { - ForgeChunkManager.unforceChunk(loaderTicket, chunk); - } - - loadedChunks.clear(); - loadedChunks.add(new ChunkCoordIntPair(newChunkX, newChunkZ)); - loadedChunks.add(new ChunkCoordIntPair(newChunkX + 1, newChunkZ + 1)); - loadedChunks.add(new ChunkCoordIntPair(newChunkX - 1, newChunkZ - 1)); - loadedChunks.add(new ChunkCoordIntPair(newChunkX + 1, newChunkZ - 1)); - loadedChunks.add(new ChunkCoordIntPair(newChunkX - 1, newChunkZ + 1)); - loadedChunks.add(new ChunkCoordIntPair(newChunkX + 1, newChunkZ)); - loadedChunks.add(new ChunkCoordIntPair(newChunkX, newChunkZ + 1)); - loadedChunks.add(new ChunkCoordIntPair(newChunkX - 1, newChunkZ)); - loadedChunks.add(new ChunkCoordIntPair(newChunkX, newChunkZ - 1)); - - for(ChunkCoordIntPair chunk : loadedChunks) - { - ForgeChunkManager.forceChunk(loaderTicket, chunk); - } - } - } } diff --git a/src/main/java/com/hbm/entity/logic/EntityC130.java b/src/main/java/com/hbm/entity/logic/EntityC130.java new file mode 100644 index 000000000..a99521945 --- /dev/null +++ b/src/main/java/com/hbm/entity/logic/EntityC130.java @@ -0,0 +1,97 @@ +package com.hbm.entity.logic; + +import com.hbm.entity.item.EntityParachuteCrate; +import com.hbm.itempool.ItemPool; +import com.hbm.itempool.ItemPoolsC130; +import com.hbm.main.MainRegistry; +import com.hbm.sound.AudioWrapper; +import com.hbm.util.EnumUtil; + +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.Vec3; +import net.minecraft.world.World; + +public class EntityC130 extends EntityPlaneBase { + + protected AudioWrapper audio; + public C130PayloadType payload = C130PayloadType.SUPPLIES; + + public EntityC130(World world) { + super(world); + this.ignoreFrustumCheck = true; + this.setSize(8.0F, 4.0F); + } + + @Override + public void onUpdate() { + super.onUpdate(); + + if(worldObj.isRemote) { + if(this.getDataWatcher().getWatchableObjectFloat(17) > 0) { + if(audio == null || !audio.isPlaying()) { + audio = MainRegistry.proxy.getLoopedSound("hbm:entity.bomberLoop", (float) posX, (float) posY, (float) posZ, 2F, 250F, 1F, 20); + audio.startSound(); + } + audio.keepAlive(); + audio.updatePosition((float) posX, (float) posY, (float) posZ); + } else { + if(audio != null && audio.isPlaying()) { + audio.stopSound(); + audio = null; + } + } + } + + if(!worldObj.isRemote && this.ticksExisted == this.getLifetime() / 2 && this.health > 0) { + EntityParachuteCrate crate = new EntityParachuteCrate(worldObj); + crate.setPosition(posX - motionX * 7, posY - 10, posZ - motionZ * 7); + + if(this.payload == C130PayloadType.SUPPLIES) { + for(int i = 0; i < 5; i++) crate.items.add(ItemPool.getStack(ItemPoolsC130.POOL_SUPPLIES, this.rand)); + } + if(this.payload == C130PayloadType.WEAPONS) { + int amount = 1 + rand.nextInt(2); + for(int i = 0; i < amount; i++) crate.items.add(ItemPool.getStack(ItemPoolsC130.POOL_WEAPONS, this.rand)); + } + + worldObj.spawnEntityInWorld(crate); + } + } + + @Override + protected void readEntityFromNBT(NBTTagCompound nbt) { + super.readEntityFromNBT(nbt); + this.payload = EnumUtil.grabEnumSafely(C130PayloadType.class, nbt.getInteger("payload")); + } + + @Override + protected void writeEntityToNBT(NBTTagCompound nbt) { + super.writeEntityToNBT(nbt); + nbt.setInteger("payload", this.payload.ordinal()); + } + + public void fac(World world, double x, double y, double z, C130PayloadType payload) { + + Vec3 vector = Vec3.createVectorHelper(world.rand.nextDouble() - 0.5, 0, world.rand.nextDouble() - 0.5); + vector = vector.normalize(); + vector.xCoord *= 2; + vector.zCoord *= 2; + + this.payload = payload; + + this.setLocationAndAngles(x - vector.xCoord * 100, y + 100, z - vector.zCoord * 100, 0.0F, 0.0F); + this.loadNeighboringChunks((int) (x / 16), (int) (z / 16)); + + this.motionX = vector.xCoord; + this.motionZ = vector.zCoord; + this.motionY = 0.0D; + + this.rotation(); + } + + public static enum C130PayloadType { + SUPPLIES, + WEAPONS, + A_FUCKING_FUEL_TRUCK + } +} diff --git a/src/main/java/com/hbm/entity/logic/EntityPlaneBase.java b/src/main/java/com/hbm/entity/logic/EntityPlaneBase.java new file mode 100644 index 000000000..d34fec111 --- /dev/null +++ b/src/main/java/com/hbm/entity/logic/EntityPlaneBase.java @@ -0,0 +1,151 @@ +package com.hbm.entity.logic; + +import java.util.ArrayList; +import java.util.List; + +import com.hbm.explosion.vanillant.ExplosionVNT; +import com.hbm.lib.ModDamageSource; +import com.hbm.main.MainRegistry; +import com.hbm.particle.helper.ExplosionSmallCreator; +import com.hbm.util.ParticleUtil; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.entity.Entity; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.DamageSource; +import net.minecraft.util.MathHelper; +import net.minecraft.world.ChunkCoordIntPair; +import net.minecraft.world.World; +import net.minecraftforge.common.ForgeChunkManager; +import net.minecraftforge.common.ForgeChunkManager.Ticket; +import net.minecraftforge.common.ForgeChunkManager.Type; + +public abstract class EntityPlaneBase extends Entity implements IChunkLoader { + + private Ticket loaderTicket; + private List loadedChunks = new ArrayList(); + + public float health = getMaxHealth(); + public int timer = getLifetime(); + + public EntityPlaneBase(World world) { super(world); } + + public float getMaxHealth() { return 50F; } + public int getLifetime() { return 200; } + + @Override public boolean canBeCollidedWith() { return this.health > 0; } + + @Override + public boolean attackEntityFrom(DamageSource source, float amount) { + if(source == ModDamageSource.nuclearBlast) return false; + if(this.isEntityInvulnerable()) return false; + if(!this.isDead && !this.worldObj.isRemote && this.health > 0) { + health -= amount; + if(this.health <= 0) this.killPlane(); + } + return true; + } + + protected void killPlane() { + ExplosionSmallCreator.composeEffect(worldObj, posX, posY, posZ, 25, 3.5F, 2F); + worldObj.playSoundEffect(posX, posY, posZ, "hbm:entity.planeShotDown", 25.0F, 1.0F); + } + + @Override + protected void entityInit() { + init(ForgeChunkManager.requestTicket(MainRegistry.instance, worldObj, Type.ENTITY)); + this.dataWatcher.addObject(17, new Float(50F)); + } + + @Override + public void init(Ticket ticket) { + if(!worldObj.isRemote && ticket != null) { + if(loaderTicket == null) { + loaderTicket = ticket; + loaderTicket.bindEntity(this); + loaderTicket.getModData(); + } + ForgeChunkManager.forceChunk(loaderTicket, new ChunkCoordIntPair(chunkCoordX, chunkCoordZ)); + } + } + + @Override + public void onUpdate() { + + this.lastTickPosX = this.prevPosX = posX; + this.lastTickPosY = this.prevPosY = posY; + this.lastTickPosZ = this.prevPosZ = posZ; + this.setPosition(posX + motionX, posY + motionY, posZ + motionZ); + + if(!worldObj.isRemote) { + this.dataWatcher.updateObject(17, health); + } else { + health = this.dataWatcher.getWatchableObjectFloat(17); + } + + this.rotation(); + + if(this.health <= 0) { + motionY -= 0.025; + + for(int i = 0; i < 10; i++) ParticleUtil.spawnGasFlame(this.worldObj, this.posX + rand.nextGaussian() * 0.5 - motionX * 2, this.posY + rand.nextGaussian() * 0.5 - motionY * 2, this.posZ + rand.nextGaussian() * 0.5 - motionZ * 2, 0.0, 0.1, 0.0); + + if((!worldObj.getBlock((int) posX, (int) posY, (int) posZ).isAir(worldObj, (int) posX, (int) posY, (int) posZ) || posY < 0) && !worldObj.isRemote) { + this.setDead(); + new ExplosionVNT(worldObj, posX, posY, posZ, 15F).makeStandard().explode(); + worldObj.playSoundEffect(posX, posY, posZ, "hbm:entity.planeCrash", 25.0F, 1.0F); + return; + } + } else { + this.motionY = 0F; + } + + if(this.ticksExisted > timer) this.setDead(); + if(!worldObj.isRemote) loadNeighboringChunks((int)Math.floor(posX / 16D), (int)Math.floor(posZ / 16D)); + } + + protected void rotation() { + float motionHorizontal = MathHelper.sqrt_double(this.motionX * this.motionX + this.motionZ * this.motionZ); + this.rotationYaw = (float) (Math.atan2(this.motionX, this.motionZ) * 180.0D / Math.PI); + for(this.rotationPitch = (float) (Math.atan2(this.motionY, motionHorizontal) * 180.0D / Math.PI) - 90; this.rotationPitch - this.prevRotationPitch < -180.0F; this.prevRotationPitch -= 360.0F); + while(this.rotationPitch - this.prevRotationPitch >= 180.0F) this.prevRotationPitch += 360.0F; + while(this.rotationYaw - this.prevRotationYaw < -180.0F) this.prevRotationYaw -= 360.0F; + while(this.rotationYaw - this.prevRotationYaw >= 180.0F) this.prevRotationYaw += 360.0F; + } + + @Override + public void setDead() { + super.setDead(); + this.clearChunkLoader(); + } + + @Override + protected void readEntityFromNBT(NBTTagCompound nbt) { + ticksExisted = nbt.getInteger("ticksExisted"); + this.getDataWatcher().updateObject(17, nbt.getFloat("health")); + } + + @Override + protected void writeEntityToNBT(NBTTagCompound nbt) { + nbt.setInteger("ticksExisted", ticksExisted); + nbt.setFloat("health", this.getDataWatcher().getWatchableObjectFloat(17)); + } + + public void clearChunkLoader() { + if(!worldObj.isRemote && loaderTicket != null) { + for(ChunkCoordIntPair chunk : loadedChunks) ForgeChunkManager.unforceChunk(loaderTicket, chunk); + } + } + + public void loadNeighboringChunks(int newChunkX, int newChunkZ) { + if(!worldObj.isRemote && loaderTicket != null) { + clearChunkLoader(); + loadedChunks.clear(); + loadedChunks.add(new ChunkCoordIntPair(newChunkX, newChunkZ)); + for(ChunkCoordIntPair chunk : loadedChunks) ForgeChunkManager.forceChunk(loaderTicket, chunk); + } + } + + @Override @SideOnly(Side.CLIENT) public boolean isInRangeToRenderDist(double distance) { return true; } +} diff --git a/src/main/java/com/hbm/itempool/ItemPool.java b/src/main/java/com/hbm/itempool/ItemPool.java index a112f92a5..b9b537d43 100644 --- a/src/main/java/com/hbm/itempool/ItemPool.java +++ b/src/main/java/com/hbm/itempool/ItemPool.java @@ -25,6 +25,7 @@ public class ItemPool { ItemPoolsRedRoom.init(); ItemPoolsSatellite.init(); ItemPoolsPile.init(); + ItemPoolsC130.init(); } public static HashMap pools = new HashMap(); diff --git a/src/main/java/com/hbm/itempool/ItemPoolsC130.java b/src/main/java/com/hbm/itempool/ItemPoolsC130.java new file mode 100644 index 000000000..4fbfd11ac --- /dev/null +++ b/src/main/java/com/hbm/itempool/ItemPoolsC130.java @@ -0,0 +1,43 @@ +package com.hbm.itempool; + +import static com.hbm.lib.HbmChestContents.weighted; + +import com.hbm.blocks.ModBlocks; +import com.hbm.inventory.fluid.Fluids; +import com.hbm.items.ModItems; + +import net.minecraft.util.WeightedRandomChestContent; + +public class ItemPoolsC130 { + + public static final String POOL_SUPPLIES = "POOL_SUPPLIES"; + public static final String POOL_WEAPONS = "POOL_WEAPONS"; + + + public static void init() { + + new ItemPool(POOL_SUPPLIES) {{ + this.pool = new WeightedRandomChestContent[] { + weighted(ModItems.definitelyfood, 0, 3, 10, 25), + weighted(ModItems.syringe_metal_stimpak, 0, 1, 3, 10), + weighted(ModItems.pill_iodine, 0, 1, 2, 2), + weighted(ModItems.canister_full, Fluids.DIESEL.getID(), 1, 4, 5), + weighted(ModBlocks.machine_diesel, 0, 1, 1, 1), + weighted(ModItems.geiger_counter, 0, 1, 1, 2), + weighted(ModItems.med_bag, 0, 1, 1, 3), + }; + }}; + + new ItemPool(POOL_WEAPONS) {{ + this.pool = new WeightedRandomChestContent[] { + weighted(ModItems.gun_light_revolver, 0, 1, 1, 10), + weighted(ModItems.gun_henry, 0, 1, 1, 10), + weighted(ModItems.gun_maresleg, 0, 1, 1, 10), + weighted(ModItems.gun_greasegun, 0, 1, 1, 10), + weighted(ModItems.gun_carbine, 0, 1, 1, 5), + weighted(ModItems.gun_heavy_revolver, 0, 1, 1, 5), + weighted(ModItems.gun_panzerschreck, 0, 1, 1, 2), + }; + }}; + } +} diff --git a/src/main/java/com/hbm/itempool/ItemPoolsComponent.java b/src/main/java/com/hbm/itempool/ItemPoolsComponent.java index 05bfdeb52..02d14641c 100644 --- a/src/main/java/com/hbm/itempool/ItemPoolsComponent.java +++ b/src/main/java/com/hbm/itempool/ItemPoolsComponent.java @@ -77,7 +77,6 @@ public class ItemPoolsComponent { weighted(ModItems.gas_mask_m65, 0, 1, 1, 5), weighted(ModItems.battery_advanced, 0, 1, 1, 5), weighted(ModItems.designator, 0, 1, 1, 5), - weighted(ModItems.crate_caller, 0, 1, 1, 1), weighted(ModItems.thruster_small, 0, 1, 1, 5), weighted(ModItems.thruster_medium, 0, 1, 1, 4), weighted(ModItems.fuel_tank_small, 0, 1, 1, 5), diff --git a/src/main/java/com/hbm/itempool/ItemPoolsLegacy.java b/src/main/java/com/hbm/itempool/ItemPoolsLegacy.java index e1e19bd3d..184745765 100644 --- a/src/main/java/com/hbm/itempool/ItemPoolsLegacy.java +++ b/src/main/java/com/hbm/itempool/ItemPoolsLegacy.java @@ -119,7 +119,6 @@ public class ItemPoolsLegacy { weighted(ModItems.battery_advanced_cell, 0, 1, 1, 2), weighted(ModItems.battery_schrabidium, 0, 1, 1, 1), weighted(ModItems.syringe_awesome, 0, 1, 1, 1), - weighted(ModItems.crate_caller, 0, 1, 1, 3), weighted(ModItems.fusion_core, 0, 1, 1, 4), weighted(ModItems.bottle_nuka, 0, 1, 3, 6), weighted(ModItems.bottle_quantum, 0, 1, 1, 3), @@ -205,7 +204,6 @@ public class ItemPoolsLegacy { weighted(ModItems.bottle_nuka, 0, 1, 3, 6), weighted(ModItems.bottle_quantum, 0, 1, 1, 3), weighted(ModItems.stealth_boy, 0, 1, 1, 7), - weighted(ModItems.crate_caller, 0, 1, 1, 3), weighted(ModItems.gas_mask_m65, 0, 1, 1, 5), weighted(ModItems.gas_mask_filter, 0, 1, 1, 5), weighted(ModItems.grenade_nuclear, 0, 1, 2, 2), diff --git a/src/main/java/com/hbm/items/ModItems.java b/src/main/java/com/hbm/items/ModItems.java index d643c7cd9..4e94fb6a1 100644 --- a/src/main/java/com/hbm/items/ModItems.java +++ b/src/main/java/com/hbm/items/ModItems.java @@ -2303,7 +2303,6 @@ public class ModItems { public static Item detonator_laser; public static Item detonator_deadman; public static Item detonator_de; - public static Item crate_caller; public static Item bomb_caller; public static Item meteor_remote; public static Item anchor_remote; @@ -4468,7 +4467,6 @@ public class ModItems { detonator_laser = new ItemLaserDetonator().setUnlocalizedName("detonator_laser").setMaxStackSize(1).setFull3D().setCreativeTab(MainRegistry.nukeTab).setTextureName(RefStrings.MODID + ":detonator_laser"); detonator_deadman = new ItemDrop().setUnlocalizedName("detonator_deadman").setMaxStackSize(1).setFull3D().setCreativeTab(MainRegistry.nukeTab).setTextureName(RefStrings.MODID + ":detonator_deadman"); detonator_de = new ItemDrop().setUnlocalizedName("detonator_de").setMaxStackSize(1).setFull3D().setCreativeTab(MainRegistry.nukeTab).setTextureName(RefStrings.MODID + ":detonator_de"); - crate_caller = new ItemCrateCaller().setUnlocalizedName("crate_caller").setMaxStackSize(1).setFull3D().setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":crate_caller"); bomb_caller = new ItemBombCaller().setUnlocalizedName("bomb_caller").setMaxStackSize(1).setFull3D().setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":bomb_caller"); meteor_remote = new ItemMeteorRemote().setUnlocalizedName("meteor_remote").setMaxStackSize(1).setFull3D().setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":meteor_remote"); anchor_remote = new ItemAnchorRemote().setUnlocalizedName("anchor_remote").setMaxStackSize(1).setFull3D().setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":anchor_remote"); @@ -7539,7 +7537,6 @@ public class ModItems { GameRegistry.registerItem(detonator_laser, detonator_laser.getUnlocalizedName()); GameRegistry.registerItem(detonator_deadman, detonator_deadman.getUnlocalizedName()); GameRegistry.registerItem(detonator_de, detonator_de.getUnlocalizedName()); - GameRegistry.registerItem(crate_caller, crate_caller.getUnlocalizedName()); GameRegistry.registerItem(bomb_caller, bomb_caller.getUnlocalizedName()); GameRegistry.registerItem(meteor_remote, meteor_remote.getUnlocalizedName()); GameRegistry.registerItem(anchor_remote, anchor_remote.getUnlocalizedName()); diff --git a/src/main/java/com/hbm/items/tool/ItemBombCaller.java b/src/main/java/com/hbm/items/tool/ItemBombCaller.java index 5ea5c732e..87394ece7 100644 --- a/src/main/java/com/hbm/items/tool/ItemBombCaller.java +++ b/src/main/java/com/hbm/items/tool/ItemBombCaller.java @@ -37,10 +37,7 @@ public class ItemBombCaller extends Item { case 5: list.add("Type: VT stinger rockets"); break; case 6: list.add("Type: PIP OH GOD"); break; case 7: list.add("Type: Cloud the cloud oh god the cloud"); break; - default: list.add("Type: INVALID, Report it to mod creator"); - } - } @Override diff --git a/src/main/java/com/hbm/items/tool/ItemCrateCaller.java b/src/main/java/com/hbm/items/tool/ItemCrateCaller.java deleted file mode 100644 index 5ec1ff32d..000000000 --- a/src/main/java/com/hbm/items/tool/ItemCrateCaller.java +++ /dev/null @@ -1,70 +0,0 @@ -package com.hbm.items.tool; - -import java.util.List; -import java.util.Random; - -import com.hbm.blocks.ModBlocks; - -import net.minecraft.block.Block; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.init.Blocks; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.util.ChatComponentText; -import net.minecraft.world.World; - -public class ItemCrateCaller extends Item { - - Random rand = new Random(); - - public ItemCrateCaller() { - this.canRepair = false; - this.setMaxDamage(4); - } - - @Override - public void addInformation(ItemStack itemstack, EntityPlayer player, List list, boolean bool) - { - list.add("Right click to request supply drop!"); - } - - @Override - public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer player) { - - stack.damageItem(1, player); - - int x = rand.nextInt(31) - 15; - int z = rand.nextInt(31) - 15; - - Block crate = ModBlocks.crate; - - int i = rand.nextInt(1000); - - if(i < 350) - crate = ModBlocks.crate_weapon; - if(i < 100) - crate = ModBlocks.crate_metal; - if(i < 50) - crate = ModBlocks.crate_lead; - if(i == 0) - crate = ModBlocks.crate_red; - - if(!world.isRemote) - { - if(world.getBlock((int)player.posX + x, 255, (int)player.posZ + z) == Blocks.air) - world.setBlock((int)player.posX + x, 255, (int)player.posZ + z, crate); - } - if(world.isRemote) - { - player.addChatMessage(new ChatComponentText("Called in supply drop!")); - } - - world.playSoundAtEntity(player, "hbm:item.techBleep", 1.0F, 1.0F); - - player.swingItem(); - - return stack; - - } - -} diff --git a/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory40mm.java b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory40mm.java index bd4e17ae1..60156b5ec 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory40mm.java +++ b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory40mm.java @@ -2,8 +2,11 @@ package com.hbm.items.weapon.sedna.factory; import java.util.function.BiConsumer; import java.util.function.BiFunction; +import java.util.function.Consumer; import com.hbm.entity.effect.EntityFireLingering; +import com.hbm.entity.logic.EntityC130; +import com.hbm.entity.logic.EntityC130.C130PayloadType; import com.hbm.entity.projectile.EntityBulletBaseMK4; import com.hbm.explosion.vanillant.ExplosionVNT; import com.hbm.explosion.vanillant.standard.BlockAllocatorStandard; @@ -30,7 +33,9 @@ import com.hbm.render.anim.BusAnimation; import com.hbm.render.anim.BusAnimationSequence; import com.hbm.render.anim.BusAnimationKeyframe.IType; import com.hbm.render.anim.HbmAnimations.AnimType; +import com.hbm.util.TrackerUtil; +import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLivingBase; import net.minecraft.init.Blocks; import net.minecraft.item.ItemStack; @@ -99,12 +104,29 @@ public class XFactory40mm { } } }; + + public static Consumer LAMBDA_SPAWN_C130_SUPPLIESS = (entity) -> { spawnPlane(entity, C130PayloadType.SUPPLIES); }; + public static Consumer LAMBDA_SPAWN_C130_WEAPONS = (entity) -> { spawnPlane(entity, C130PayloadType.WEAPONS); }; + + public static void spawnPlane(Entity entity, C130PayloadType payload) { + if(!entity.worldObj.isRemote && entity.ticksExisted == 40) { + EntityBulletBaseMK4 bullet = (EntityBulletBaseMK4) entity; + if(bullet.getThrower() != null) bullet.worldObj.playSoundAtEntity(bullet.getThrower(), "hbm:item.techBleep", 1.0F, 1.0F); + EntityC130 c130 = new EntityC130(bullet.worldObj); + int x = (int) Math.floor(bullet.posX); + int z = (int) Math.floor(bullet.posZ); + int y = bullet.worldObj.getHeightValue(x, z); + c130.fac(bullet.worldObj, x, y, z, payload); + bullet.worldObj.spawnEntityInWorld(c130); + TrackerUtil.setTrackingRange(bullet.worldObj, c130, 250); + } + } public static void init() { g26_flare = new BulletConfig().setItem(EnumAmmo.G26_FLARE).setLife(100).setVel(2F).setGrav(0.015D).setRenderRotations(false).setOnImpact(LAMBDA_STANDARD_IGNITE).setCasing(new SpentCasing(CasingType.STRAIGHT).setColor(0x9E1616).setScale(2F).register("g26Flare")); - g26_flare_supply = new BulletConfig().setItem(EnumAmmo.G26_FLARE_SUPPLY).setLife(100).setVel(2F).setGrav(0.015D).setRenderRotations(false).setOnImpact(LAMBDA_STANDARD_IGNITE).setCasing(new SpentCasing(CasingType.STRAIGHT).setColor(0x3C80F0).setScale(2F).register("g26FlareSupply")); - g26_flare_weapon = new BulletConfig().setItem(EnumAmmo.G26_FLARE_WEAPON).setLife(100).setVel(2F).setGrav(0.015D).setRenderRotations(false).setOnImpact(LAMBDA_STANDARD_IGNITE).setCasing(new SpentCasing(CasingType.STRAIGHT).setColor(0x278400).setScale(2F).register("g26FlareWeapon")); + g26_flare_supply = new BulletConfig().setItem(EnumAmmo.G26_FLARE_SUPPLY).setLife(100).setVel(2F).setGrav(0.015D).setRenderRotations(false).setOnImpact(LAMBDA_STANDARD_IGNITE).setOnUpdate(LAMBDA_SPAWN_C130_SUPPLIESS).setCasing(new SpentCasing(CasingType.STRAIGHT).setColor(0x3C80F0).setScale(2F).register("g26FlareSupply")); + g26_flare_weapon = new BulletConfig().setItem(EnumAmmo.G26_FLARE_WEAPON).setLife(100).setVel(2F).setGrav(0.015D).setRenderRotations(false).setOnImpact(LAMBDA_STANDARD_IGNITE).setOnUpdate(LAMBDA_SPAWN_C130_WEAPONS).setCasing(new SpentCasing(CasingType.STRAIGHT).setColor(0x278400).setScale(2F).register("g26FlareWeapon")); BulletConfig g40_base = new BulletConfig().setLife(200).setVel(2F).setGrav(0.035D); g40_he = g40_base.clone().setItem(EnumAmmo.G40_HE).setOnImpact(LAMBDA_STANDARD_EXPLODE).setCasing(new SpentCasing(CasingType.STRAIGHT).setColor(0x777777).setScale(2, 2F, 1.5F).register("g40")); diff --git a/src/main/java/com/hbm/items/weapon/sedna/factory/XFactoryFolly.java b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactoryFolly.java index a3927a0da..4dc66aeb7 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/factory/XFactoryFolly.java +++ b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactoryFolly.java @@ -99,7 +99,7 @@ public class XFactoryFolly { folly_nuke = new BulletConfig().setItem(EnumAmmoSecret.FOLLY_NUKE).setChunkloading().setLife(600).setVel(4F).setGrav(0.015D) .setOnImpact(LAMBDA_NUKE_IMPACT); - ModItems.gun_folly = new ItemGunBaseNT(WeaponQuality.A_SIDE, new GunConfig() + ModItems.gun_folly = new ItemGunBaseNT(WeaponQuality.LEGENDARY, new GunConfig() .dura(0).draw(40).crosshair(Crosshair.NONE) .rec(new Receiver(0) .dmg(15F).delay(26).dryfire(false).reload(160).jam(0).sound("hbm:weapon.fire.loudestNoiseOnEarth", 100.0F, 1.0F) diff --git a/src/main/java/com/hbm/main/ClientProxy.java b/src/main/java/com/hbm/main/ClientProxy.java index 8773e095d..d37fbb212 100644 --- a/src/main/java/com/hbm/main/ClientProxy.java +++ b/src/main/java/com/hbm/main/ClientProxy.java @@ -633,6 +633,7 @@ public class ClientProxy extends ServerProxy { RenderingRegistry.registerEntityRenderingHandler(EntityDuchessGambit.class, new RenderBoxcar()); RenderingRegistry.registerEntityRenderingHandler(EntityBuilding.class, new RenderBoxcar()); RenderingRegistry.registerEntityRenderingHandler(EntityBomber.class, new RenderBomber()); + RenderingRegistry.registerEntityRenderingHandler(EntityC130.class, new RenderC130()); RenderingRegistry.registerEntityRenderingHandler(EntityBurningFOEQ.class, new RenderFOEQ()); RenderingRegistry.registerEntityRenderingHandler(EntityFallingNuke.class, new RenderFallingNuke()); RenderingRegistry.registerEntityRenderingHandler(EntityMinerRocket.class, new RenderMinerRocket()); @@ -731,6 +732,7 @@ public class ClientProxy extends ServerProxy { RenderingRegistry.registerEntityRenderingHandler(EntityMissileDoomsdayRusted.class, new RenderMissileNuclear()); RenderingRegistry.registerEntityRenderingHandler(EntitySoyuz.class, new RenderSoyuz()); RenderingRegistry.registerEntityRenderingHandler(EntitySoyuzCapsule.class, new RenderSoyuzCapsule()); + RenderingRegistry.registerEntityRenderingHandler(EntityParachuteCrate.class, new RenderParachuteCrate()); RenderingRegistry.registerEntityRenderingHandler(EntityMissileTaint.class, new RenderMissileTaint()); RenderingRegistry.registerEntityRenderingHandler(EntityMissileMicro.class, new RenderMissileTaint()); RenderingRegistry.registerEntityRenderingHandler(EntityMissileBHole.class, new RenderMissileTaint()); diff --git a/src/main/java/com/hbm/main/MainRegistry.java b/src/main/java/com/hbm/main/MainRegistry.java index 59d487550..07ada7248 100644 --- a/src/main/java/com/hbm/main/MainRegistry.java +++ b/src/main/java/com/hbm/main/MainRegistry.java @@ -1458,6 +1458,7 @@ public class MainRegistry { ignoreMappings.add("hbm:item.powder_daffergon"); ignoreMappings.add("hbm:item.powder_verticium"); ignoreMappings.add("hbm:tile.ore_random"); + ignoreMappings.add("hbm:item.crate_caller"); /// REMAP /// remapItems.put("hbm:item.gadget_explosive8", ModItems.early_explosive_lenses); diff --git a/src/main/java/com/hbm/main/ResourceManager.java b/src/main/java/com/hbm/main/ResourceManager.java index a6fbf9565..be21567f3 100644 --- a/src/main/java/com/hbm/main/ResourceManager.java +++ b/src/main/java/com/hbm/main/ResourceManager.java @@ -1123,6 +1123,7 @@ public class ResourceManager { //Bomber public static final IModelCustom dornier = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/dornier.obj")); public static final IModelCustom b29 = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/b29.obj")); + public static final IModelCustom c130 = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/weapons/c130.obj")).asVBO(); //Missiles public static final IModelCustom missileV2 = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/missile_v2.obj")).asVBO(); @@ -1258,6 +1259,7 @@ public class ResourceManager { public static final ResourceLocation b29_1_tex = new ResourceLocation(RefStrings.MODID, "textures/models/b29_1.png"); public static final ResourceLocation b29_2_tex = new ResourceLocation(RefStrings.MODID, "textures/models/b29_2.png"); public static final ResourceLocation b29_3_tex = new ResourceLocation(RefStrings.MODID, "textures/models/b29_3.png"); + public static final ResourceLocation c130_0_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/c130_0.png"); //Missiles public static final ResourceLocation missileV2_HE_tex = new ResourceLocation(RefStrings.MODID, "textures/models/missile_v2.png"); @@ -1332,6 +1334,7 @@ public class ResourceManager { public static final ResourceLocation soyuz_lander_tex = new ResourceLocation(RefStrings.MODID, "textures/models/soyuz_capsule/soyuz_lander.png"); public static final ResourceLocation soyuz_lander_rust_tex = new ResourceLocation(RefStrings.MODID, "textures/models/soyuz_capsule/soyuz_lander_rust.png"); public static final ResourceLocation soyuz_chute_tex = new ResourceLocation(RefStrings.MODID, "textures/models/soyuz_capsule/soyuz_chute.png"); + public static final ResourceLocation supply_crate = new ResourceLocation(RefStrings.MODID, "textures/blocks/crate_can.png"); public static final ResourceLocation soyuz_module_dome_tex = new ResourceLocation(RefStrings.MODID, "textures/models/soyuz_capsule/module_dome.png"); public static final ResourceLocation soyuz_module_lander_tex = new ResourceLocation(RefStrings.MODID, "textures/models/soyuz_capsule/module_lander.png"); diff --git a/src/main/java/com/hbm/packet/PacketDispatcher.java b/src/main/java/com/hbm/packet/PacketDispatcher.java index 12c8de1da..ac69da882 100644 --- a/src/main/java/com/hbm/packet/PacketDispatcher.java +++ b/src/main/java/com/hbm/packet/PacketDispatcher.java @@ -38,8 +38,6 @@ public class PacketDispatcher { wrapper.registerMessage(ParticleBurstPacket.Handler.class, ParticleBurstPacket.class, i++, Side.CLIENT); //Packet to send chunk radiation info to individual players wrapper.registerMessage(ExtPropPacket.Handler.class, ExtPropPacket.class, i++, Side.CLIENT); - //Entity sound packet that keeps client and server separated - wrapper.registerMessage(LoopedEntitySoundPacket.Handler.class, LoopedEntitySoundPacket.class, i++, Side.CLIENT); //Packet for force fields wrapper.registerMessage(TEFFPacket.Handler.class, TEFFPacket.class, i++, Side.CLIENT); //Sends button information for ItemGunBase diff --git a/src/main/java/com/hbm/packet/toclient/LoopedEntitySoundPacket.java b/src/main/java/com/hbm/packet/toclient/LoopedEntitySoundPacket.java deleted file mode 100644 index f5282515a..000000000 --- a/src/main/java/com/hbm/packet/toclient/LoopedEntitySoundPacket.java +++ /dev/null @@ -1,84 +0,0 @@ -package com.hbm.packet.toclient; - -import com.hbm.entity.logic.EntityBomber; -import com.hbm.sound.MovingSoundBomber; - -import cpw.mods.fml.common.network.simpleimpl.IMessage; -import cpw.mods.fml.common.network.simpleimpl.IMessageHandler; -import cpw.mods.fml.common.network.simpleimpl.MessageContext; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; -import io.netty.buffer.ByteBuf; -import net.minecraft.client.Minecraft; -import net.minecraft.entity.Entity; -import net.minecraft.util.ResourceLocation; - -public class LoopedEntitySoundPacket implements IMessage { - - int entityID; - - public LoopedEntitySoundPacket() - { - - } - - public LoopedEntitySoundPacket(int entityID) - { - this.entityID = entityID; - } - - @Override - public void fromBytes(ByteBuf buf) { - entityID = buf.readInt(); - } - - @Override - public void toBytes(ByteBuf buf) { - buf.writeInt(entityID); - } - - public static class Handler implements IMessageHandler { - - @Override - //Tamaized, I love you! - @SideOnly(Side.CLIENT) - public IMessage onMessage(LoopedEntitySoundPacket m, MessageContext ctx) { - - Entity e = Minecraft.getMinecraft().theWorld.getEntityByID(m.entityID); - - if(e instanceof EntityBomber) { - - int n = 1; - int x = e.getDataWatcher().getWatchableObjectByte(16); - - switch(x) { - case 0: - case 1: - case 2: - case 3: - case 4: n = 2; break; - case 5: - case 6: - case 7: - case 8: n = 1; break; - default: n = 2; break; - } - - boolean flag = true; - for(int i = 0; i < MovingSoundBomber.globalSoundList.size(); i++) { - if(MovingSoundBomber.globalSoundList.get(i).bomber == e && !MovingSoundBomber.globalSoundList.get(i).isDonePlaying()) - flag = false; - } - - if(flag) { - if(n == 2) - Minecraft.getMinecraft().getSoundHandler().playSound(new MovingSoundBomber(new ResourceLocation("hbm:entity.bomberSmallLoop"), (EntityBomber)e)); - if(n == 1) - Minecraft.getMinecraft().getSoundHandler().playSound(new MovingSoundBomber(new ResourceLocation("hbm:entity.bomberLoop"), (EntityBomber)e)); - } - } - - return null; - } - } -} diff --git a/src/main/java/com/hbm/render/entity/item/RenderC130.java b/src/main/java/com/hbm/render/entity/item/RenderC130.java new file mode 100644 index 000000000..9d2d7d4d4 --- /dev/null +++ b/src/main/java/com/hbm/render/entity/item/RenderC130.java @@ -0,0 +1,67 @@ +package com.hbm.render.entity.item; + +import org.lwjgl.opengl.GL11; + +import com.hbm.main.ResourceManager; + +import net.minecraft.client.renderer.entity.Render; +import net.minecraft.entity.Entity; +import net.minecraft.util.ResourceLocation; + +public class RenderC130 extends Render { + + @Override + public void doRender(Entity entity, double x, double y, double z, float f0, float interp) { + + GL11.glPushMatrix(); + GL11.glTranslatef((float) x, (float) y, (float) z); + GL11.glRotatef(entity.prevRotationYaw + (entity.rotationYaw - entity.prevRotationYaw) * interp - 90.0F, 0.0F, 1.0F, 0.0F); + GL11.glRotatef(90, 0F, 0F, 1F); + GL11.glRotatef(entity.prevRotationPitch + (entity.rotationPitch - entity.prevRotationPitch) * interp, 0.0F, 0.0F, 1.0F); + GL11.glEnable(GL11.GL_CULL_FACE); + + GL11.glShadeModel(GL11.GL_SMOOTH); + bindTexture(ResourceManager.c130_0_tex); + ResourceManager.c130.renderPart("Plane"); + + double spin = System.currentTimeMillis() * 15D % 360D; + + GL11.glPushMatrix(); + GL11.glTranslated(10, 4.2, -20.5); + GL11.glRotated(spin, 1, 0, 0); + GL11.glTranslated(-10, -4.2, 20.5); + ResourceManager.c130.renderPart("Prop1"); + GL11.glPopMatrix(); + + GL11.glPushMatrix(); + GL11.glTranslated(10, 4.2, -11.16); + GL11.glRotated(spin, 1, 0, 0); + GL11.glTranslated(-10, -4.2, 11.16); + ResourceManager.c130.renderPart("Prop2"); + GL11.glPopMatrix(); + + GL11.glPushMatrix(); + GL11.glTranslated(10, 4.2, 11.16); + GL11.glRotated(spin, 1, 0, 0); + GL11.glTranslated(-10, -4.2, -11.16); + ResourceManager.c130.renderPart("Prop3"); + GL11.glPopMatrix(); + + GL11.glPushMatrix(); + GL11.glTranslated(10, 4.2, 20.5); + GL11.glRotated(spin, 1, 0, 0); + GL11.glTranslated(-10, -4.2, -20.5); + ResourceManager.c130.renderPart("Prop4"); + GL11.glPopMatrix(); + + GL11.glShadeModel(GL11.GL_FLAT); + + GL11.glPopMatrix(); + } + + @Override + protected ResourceLocation getEntityTexture(Entity entity) { + return ResourceManager.c130_0_tex; + } + +} diff --git a/src/main/java/com/hbm/render/entity/item/RenderParachuteCrate.java b/src/main/java/com/hbm/render/entity/item/RenderParachuteCrate.java new file mode 100644 index 000000000..3bf1ab7c5 --- /dev/null +++ b/src/main/java/com/hbm/render/entity/item/RenderParachuteCrate.java @@ -0,0 +1,50 @@ +package com.hbm.render.entity.item; + +import org.lwjgl.opengl.GL11; + +import com.hbm.main.ResourceManager; + +import net.minecraft.client.renderer.entity.Render; +import net.minecraft.entity.Entity; +import net.minecraft.util.ResourceLocation; + +public class RenderParachuteCrate extends Render { + + @Override + public void doRender(Entity entity, double x, double y, double z, float i, float j) { + + GL11.glPushMatrix(); + + GL11.glTranslated(x, y, z); + + double time = (entity.worldObj.getTotalWorldTime()); + double sine = Math.sin(time * 0.05) * 5; + double sin3 = Math.sin(time * 0.05 + Math.PI * 0.5) * 5; + + int height = 7; + + GL11.glTranslated(0.0F, height, 0.0F); + GL11.glRotated(sine, 0, 0, 1); + GL11.glRotated(sin3, 1, 0, 0); + GL11.glTranslated(0.0F, -height, 0.0F); + + GL11.glEnable(GL11.GL_CULL_FACE); + GL11.glShadeModel(GL11.GL_SMOOTH); + + bindTexture(ResourceManager.supply_crate); + ResourceManager.conservecrate.renderAll(); + + GL11.glTranslated(0, -1, 0); + + bindTexture(ResourceManager.soyuz_chute_tex); + ResourceManager.soyuz_lander.renderPart("Chute"); + GL11.glShadeModel(GL11.GL_FLAT); + + GL11.glPopMatrix(); + } + + @Override + protected ResourceLocation getEntityTexture(Entity p_110775_1_) { + return ResourceManager.soyuz_lander_tex; + } +} diff --git a/src/main/java/com/hbm/sound/MovingSoundBomber.java b/src/main/java/com/hbm/sound/MovingSoundBomber.java deleted file mode 100644 index c20a0cfe0..000000000 --- a/src/main/java/com/hbm/sound/MovingSoundBomber.java +++ /dev/null @@ -1,75 +0,0 @@ -package com.hbm.sound; - -import java.util.ArrayList; -import java.util.List; - -import com.hbm.entity.logic.EntityBomber; - -import net.minecraft.client.Minecraft; -import net.minecraft.client.audio.ISound; -import net.minecraft.client.audio.MovingSound; -import net.minecraft.client.entity.EntityClientPlayerMP; -import net.minecraft.util.ResourceLocation; - -public class MovingSoundBomber extends MovingSound { - - public static List globalSoundList = new ArrayList(); - public EntityBomber bomber; - - public MovingSoundBomber(ResourceLocation loc, EntityBomber bomber) { - super(loc); - this.bomber = bomber; - globalSoundList.add(this); - this.repeat = true; - this.field_147666_i = ISound.AttenuationType.NONE; - } - - @Override - public void update() { - - float iVolume = 150; - - if(this.bomber == null || this.bomber.isDead || this.bomber.health <= 0) { - this.stop(); - } else { - this.xPosF = (float)bomber.posX; - this.yPosF = (float)bomber.posY; - this.zPosF = (float)bomber.posZ; - - EntityClientPlayerMP player = Minecraft.getMinecraft().thePlayer; - float f = 0; - - if(player != null) { - f = (float)Math.sqrt(Math.pow(xPosF - player.posX, 2) + Math.pow(yPosF - player.posY, 2) + Math.pow(zPosF - player.posZ, 2)); - volume = (f / iVolume) * -2 + 2; - } else { - volume = iVolume; - } - } - - if(!Minecraft.getMinecraft().getSoundHandler().isSoundPlaying(this)) { - stop(); - } - - } - - public void stop() { - this.donePlaying = true; - this.repeat = false; - - globalSoundList.remove(this); - } - - public void setPitch(float f) { - this.field_147663_c = f; - } - - public void setVolume(float f) { - this.volume = f; - } - - public void setDone(boolean b) { - this.donePlaying = b; - } - -} diff --git a/src/main/java/com/hbm/tileentity/TileMappings.java b/src/main/java/com/hbm/tileentity/TileMappings.java index 5b3843b9b..d2edfe72d 100644 --- a/src/main/java/com/hbm/tileentity/TileMappings.java +++ b/src/main/java/com/hbm/tileentity/TileMappings.java @@ -14,6 +14,7 @@ import com.hbm.blocks.generic.BlockLoot.TileEntityLoot; import com.hbm.blocks.generic.BlockPedestal.TileEntityPedestal; import com.hbm.blocks.generic.BlockPlushie.TileEntityPlushie; import com.hbm.blocks.generic.BlockSnowglobe.TileEntitySnowglobe; +import com.hbm.blocks.generic.BlockSupplyCrate.TileEntitySupplyCrate; import com.hbm.blocks.generic.PartEmitter.TileEntityPartEmitter; import com.hbm.blocks.machine.BlockICF.TileEntityBlockICF; import com.hbm.blocks.machine.BlockPWR.TileEntityBlockPWR; @@ -150,6 +151,7 @@ public class TileMappings { put(TileEntityBarrel.class, "tileentity_fluid_barrel"); put(TileEntityCyberCrab.class, "tileentity_crabs"); put(TileEntitySoyuzCapsule.class, "tileentity_soyuz_capsule"); + put(TileEntitySupplyCrate.class, "tileentity_supply_crate"); put(TileEntityMachineRotaryFurnace.class, "tileentity_rotary_furnace"); put(TileEntityMachineCrystallizer.class, "tileentity_acidomatic"); put(TileEntitySoyuzStruct.class, "tileentity_soyuz_struct"); diff --git a/src/main/java/com/hbm/util/EntityDamageUtil.java b/src/main/java/com/hbm/util/EntityDamageUtil.java index 3b4050c72..e5f1636ea 100644 --- a/src/main/java/com/hbm/util/EntityDamageUtil.java +++ b/src/main/java/com/hbm/util/EntityDamageUtil.java @@ -40,6 +40,7 @@ public class EntityDamageUtil { public static boolean attackEntityFromNT(EntityLivingBase living, DamageSource source, float amount, boolean ignoreIFrame, boolean allowSpecialCancel, double knockbackMultiplier, float pierceDT, float pierce) { DamageResistanceHandler.setup(pierceDT, pierce); boolean ret = attackEntityFromNTInternal(living, source, amount, ignoreIFrame, allowSpecialCancel, knockbackMultiplier); + //boolean ret = living.attackEntityFrom(source, amount); DamageResistanceHandler.reset(); return ret; } diff --git a/src/main/resources/assets/hbm/models/weapons/c130.obj b/src/main/resources/assets/hbm/models/weapons/c130.obj new file mode 100644 index 000000000..062ea4ab5 --- /dev/null +++ b/src/main/resources/assets/hbm/models/weapons/c130.obj @@ -0,0 +1,3946 @@ +# Blender v2.79 (sub 0) OBJ File: 'c130.blend' +# www.blender.org +o Prop4 +v 8.876309 4.210099 19.990316 +v 9.975476 4.210099 20.539900 +v 8.876309 3.821485 20.151285 +v 8.876309 3.660516 20.539900 +v 8.876309 3.821485 20.928514 +v 8.876309 4.210099 21.089483 +v 8.876309 4.598713 20.928514 +v 8.876309 4.759683 20.539900 +v 8.876309 4.598713 20.151285 +v 9.092196 4.022467 23.179798 +v 9.092196 4.397732 23.179798 +v 9.092196 4.397732 20.800001 +v 9.092196 4.022467 20.800001 +v 9.259592 4.022467 20.800001 +v 9.259592 4.397732 20.800001 +v 9.259592 4.397732 23.179798 +v 9.259592 4.022467 23.179798 +v 9.092196 4.022467 20.279799 +v 9.092196 4.397732 20.279799 +v 9.092196 4.397732 17.900002 +v 9.092196 4.022467 17.900002 +v 9.259590 4.397732 17.900002 +v 9.259590 4.022467 17.900002 +v 9.259590 4.397732 20.279799 +v 9.259590 4.022467 20.279799 +v 9.092196 1.570201 20.352268 +v 9.092196 1.570201 20.727533 +v 9.092196 3.949998 20.727533 +v 9.092196 3.949998 20.352268 +v 9.259590 3.949998 20.352268 +v 9.259590 3.949998 20.727533 +v 9.259590 1.570201 20.727533 +v 9.259590 1.570201 20.352268 +v 9.092196 4.470201 20.352268 +v 9.092196 4.470201 20.727533 +v 9.092196 6.849997 20.727533 +v 9.092196 6.849997 20.352268 +v 9.259590 6.849997 20.727533 +v 9.259590 6.849997 20.352268 +v 9.259590 4.470201 20.727533 +v 9.259590 4.470201 20.352268 +vt 0.057500 0.876667 +vt 0.055000 0.893333 +vt 0.053750 0.876667 +vt 0.061250 0.876667 +vt 0.058750 0.893333 +vt 0.057500 0.876667 +vt 0.065000 0.876667 +vt 0.062500 0.893333 +vt 0.061250 0.876667 +vt 0.068750 0.876667 +vt 0.066250 0.893333 +vt 0.065000 0.876667 +vt 0.072500 0.876667 +vt 0.070000 0.893333 +vt 0.068750 0.876667 +vt 0.076250 0.876667 +vt 0.073750 0.893333 +vt 0.072500 0.876667 +vt 0.080000 0.876667 +vt 0.077500 0.893333 +vt 0.076250 0.876667 +vt 0.053750 0.876667 +vt 0.051250 0.893333 +vt 0.050000 0.876667 +vt 0.185000 0.908333 +vt 0.188750 0.876667 +vt 0.188750 0.908333 +vt 0.183750 0.876667 +vt 0.180000 0.908333 +vt 0.180000 0.876667 +vt 0.183750 0.908333 +vt 0.180000 0.910000 +vt 0.178750 0.908333 +vt 0.178750 0.876667 +vt 0.185000 0.876667 +vt 0.188750 0.876667 +vt 0.185000 0.908333 +vt 0.185000 0.876667 +vt 0.180000 0.910000 +vt 0.183750 0.908333 +vt 0.183750 0.910000 +vt 0.180000 0.908333 +vt 0.183750 0.876667 +vt 0.178750 0.908333 +vt 0.180000 0.876667 +vt 0.185000 0.908333 +vt 0.188750 0.876667 +vt 0.188750 0.908333 +vt 0.183750 0.876667 +vt 0.180000 0.908333 +vt 0.180000 0.876667 +vt 0.183750 0.908333 +vt 0.180000 0.910000 +vt 0.178750 0.908333 +vt 0.178750 0.876667 +vt 0.185000 0.876667 +vt 0.188750 0.876667 +vt 0.185000 0.908333 +vt 0.185000 0.876667 +vt 0.180000 0.910000 +vt 0.183750 0.908333 +vt 0.183750 0.910000 +vt 0.180000 0.908333 +vt 0.183750 0.876667 +vt 0.178750 0.908333 +vt 0.180000 0.876667 +vt 0.183750 0.910000 +vt 0.188750 0.908333 +vt 0.178750 0.876667 +vt 0.183750 0.910000 +vt 0.188750 0.908333 +vt 0.178750 0.876667 +vn 0.4194 -0.3474 -0.8387 +vn 0.4194 -0.8387 -0.3474 +vn 0.4194 -0.8387 0.3474 +vn 0.4194 -0.3474 0.8387 +vn 0.4194 0.3474 0.8387 +vn 0.4194 0.8387 0.3474 +vn 0.4194 0.8387 -0.3474 +vn 0.4194 0.3474 -0.8387 +vn -1.0000 0.0000 0.0000 +vn 1.0000 0.0000 0.0000 +vn 0.0000 0.0000 1.0000 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 1.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +s 1 +f 1/1/1 2/2/1 3/3/1 +f 3/4/2 2/5/2 4/6/2 +f 4/7/3 2/8/3 5/9/3 +f 5/10/4 2/11/4 6/12/4 +f 6/13/5 2/14/5 7/15/5 +f 7/16/6 2/17/6 8/18/6 +f 8/19/7 2/20/7 9/21/7 +f 9/22/8 2/23/8 1/24/8 +f 11/25/9 13/26/9 10/27/9 +f 15/28/10 17/29/10 14/30/10 +f 16/31/11 10/32/11 17/29/11 +f 14/30/12 10/33/12 13/34/12 +f 12/35/13 16/31/13 15/28/13 +f 19/36/9 21/37/9 18/38/9 +f 20/39/14 23/40/14 21/41/14 +f 22/42/10 25/43/10 23/40/10 +f 23/40/12 18/38/12 21/37/12 +f 20/44/13 24/45/13 22/42/13 +f 27/46/9 29/47/9 26/48/9 +f 31/49/10 33/50/10 30/51/10 +f 32/52/12 26/53/12 33/50/12 +f 30/51/14 26/54/14 29/55/14 +f 28/56/11 32/52/11 31/49/11 +f 35/57/9 37/58/9 34/59/9 +f 36/60/13 39/61/13 37/62/13 +f 38/63/10 41/64/10 39/61/10 +f 39/61/14 34/59/14 37/58/14 +f 36/65/11 40/66/11 38/63/11 +f 11/25/9 12/35/9 13/26/9 +f 15/28/10 16/31/10 17/29/10 +f 16/31/11 11/67/11 10/32/11 +f 14/30/12 17/29/12 10/33/12 +f 12/35/13 11/25/13 16/31/13 +f 19/36/9 20/68/9 21/37/9 +f 20/39/14 22/42/14 23/40/14 +f 22/42/10 24/45/10 25/43/10 +f 23/40/12 25/43/12 18/38/12 +f 20/44/13 19/69/13 24/45/13 +f 27/46/9 28/56/9 29/47/9 +f 31/49/10 32/52/10 33/50/10 +f 32/52/12 27/70/12 26/53/12 +f 30/51/14 33/50/14 26/54/14 +f 28/56/11 27/46/11 32/52/11 +f 35/57/9 36/71/9 37/58/9 +f 36/60/13 38/63/13 39/61/13 +f 38/63/10 40/66/10 41/64/10 +f 39/61/14 41/64/14 34/59/14 +f 36/65/11 35/72/11 40/66/11 +o Prop3 +v 8.876309 4.210100 10.612316 +v 9.975476 4.210100 11.161900 +v 8.876309 3.821486 10.773286 +v 8.876309 3.660517 11.161900 +v 8.876309 3.821486 11.550513 +v 8.876309 4.210100 11.711483 +v 8.876309 4.598713 11.550513 +v 8.876309 4.759684 11.161900 +v 8.876309 4.598713 10.773286 +v 9.092196 4.022468 13.801797 +v 9.092196 4.397733 13.801797 +v 9.092196 4.397733 11.422001 +v 9.092196 4.022468 11.422001 +v 9.259592 4.022468 11.422001 +v 9.259592 4.397733 11.422001 +v 9.259592 4.397733 13.801797 +v 9.259592 4.022468 13.801797 +v 9.092196 4.022468 10.901798 +v 9.092196 4.397733 10.901798 +v 9.092196 4.397733 8.522002 +v 9.092196 4.022468 8.522002 +v 9.259590 4.397733 8.522002 +v 9.259590 4.022468 8.522002 +v 9.259590 4.397733 10.901798 +v 9.259590 4.022468 10.901798 +v 9.092196 1.570202 10.974267 +v 9.092196 1.570202 11.349533 +v 9.092196 3.949999 11.349533 +v 9.092196 3.949999 10.974267 +v 9.259590 3.949999 10.974267 +v 9.259590 3.949999 11.349533 +v 9.259590 1.570202 11.349533 +v 9.259590 1.570202 10.974267 +v 9.092196 4.470201 10.974267 +v 9.092196 4.470201 11.349533 +v 9.092196 6.849998 11.349533 +v 9.092196 6.849998 10.974267 +v 9.259590 6.849998 11.349533 +v 9.259590 6.849998 10.974267 +v 9.259590 4.470201 11.349533 +v 9.259590 4.470201 10.974267 +vt 0.057500 0.876667 +vt 0.055000 0.893333 +vt 0.053750 0.876667 +vt 0.061250 0.876667 +vt 0.058750 0.893333 +vt 0.057500 0.876667 +vt 0.065000 0.876667 +vt 0.062500 0.893333 +vt 0.061250 0.876667 +vt 0.068750 0.876667 +vt 0.066250 0.893333 +vt 0.065000 0.876667 +vt 0.072500 0.876667 +vt 0.070000 0.893333 +vt 0.068750 0.876667 +vt 0.076250 0.876667 +vt 0.073750 0.893333 +vt 0.072500 0.876667 +vt 0.080000 0.876667 +vt 0.077500 0.893333 +vt 0.076250 0.876667 +vt 0.053750 0.876667 +vt 0.051250 0.893333 +vt 0.050000 0.876667 +vt 0.185000 0.908333 +vt 0.188750 0.876667 +vt 0.188750 0.908333 +vt 0.183750 0.876667 +vt 0.180000 0.908333 +vt 0.180000 0.876667 +vt 0.183750 0.908333 +vt 0.180000 0.910000 +vt 0.178750 0.908333 +vt 0.178750 0.876667 +vt 0.185000 0.876667 +vt 0.188750 0.876667 +vt 0.185000 0.908333 +vt 0.185000 0.876667 +vt 0.180000 0.910000 +vt 0.183750 0.908333 +vt 0.183750 0.910000 +vt 0.180000 0.908333 +vt 0.183750 0.876667 +vt 0.178750 0.908333 +vt 0.180000 0.876667 +vt 0.185000 0.908333 +vt 0.188750 0.876667 +vt 0.188750 0.908333 +vt 0.183750 0.876667 +vt 0.180000 0.908333 +vt 0.180000 0.876667 +vt 0.183750 0.908333 +vt 0.180000 0.910000 +vt 0.178750 0.908333 +vt 0.178750 0.876667 +vt 0.185000 0.876667 +vt 0.188750 0.876667 +vt 0.185000 0.908333 +vt 0.185000 0.876667 +vt 0.180000 0.910000 +vt 0.183750 0.908333 +vt 0.183750 0.910000 +vt 0.180000 0.908333 +vt 0.183750 0.876667 +vt 0.178750 0.908333 +vt 0.180000 0.876667 +vt 0.183750 0.910000 +vt 0.188750 0.908333 +vt 0.178750 0.876667 +vt 0.183750 0.910000 +vt 0.188750 0.908333 +vt 0.178750 0.876667 +vn 0.4194 -0.3474 -0.8387 +vn 0.4194 -0.8387 -0.3474 +vn 0.4194 -0.8387 0.3474 +vn 0.4194 -0.3474 0.8387 +vn 0.4194 0.3474 0.8387 +vn 0.4194 0.8387 0.3474 +vn 0.4194 0.8387 -0.3474 +vn 0.4194 0.3474 -0.8387 +vn -1.0000 0.0000 0.0000 +vn 1.0000 0.0000 0.0000 +vn 0.0000 0.0000 1.0000 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 1.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +s 1 +f 42/73/15 43/74/15 44/75/15 +f 44/76/16 43/77/16 45/78/16 +f 45/79/17 43/80/17 46/81/17 +f 46/82/18 43/83/18 47/84/18 +f 47/85/19 43/86/19 48/87/19 +f 48/88/20 43/89/20 49/90/20 +f 49/91/21 43/92/21 50/93/21 +f 50/94/22 43/95/22 42/96/22 +f 52/97/23 54/98/23 51/99/23 +f 56/100/24 58/101/24 55/102/24 +f 57/103/25 51/104/25 58/101/25 +f 55/102/26 51/105/26 54/106/26 +f 53/107/27 57/103/27 56/100/27 +f 60/108/23 62/109/23 59/110/23 +f 61/111/28 64/112/28 62/113/28 +f 63/114/24 66/115/24 64/112/24 +f 64/112/26 59/110/26 62/109/26 +f 61/116/27 65/117/27 63/114/27 +f 68/118/23 70/119/23 67/120/23 +f 72/121/24 74/122/24 71/123/24 +f 73/124/26 67/125/26 74/122/26 +f 71/123/28 67/126/28 70/127/28 +f 69/128/25 73/124/25 72/121/25 +f 76/129/23 78/130/23 75/131/23 +f 77/132/27 80/133/27 78/134/27 +f 79/135/24 82/136/24 80/133/24 +f 80/133/28 75/131/28 78/130/28 +f 77/137/25 81/138/25 79/135/25 +f 52/97/23 53/107/23 54/98/23 +f 56/100/24 57/103/24 58/101/24 +f 57/103/25 52/139/25 51/104/25 +f 55/102/26 58/101/26 51/105/26 +f 53/107/27 52/97/27 57/103/27 +f 60/108/23 61/140/23 62/109/23 +f 61/111/28 63/114/28 64/112/28 +f 63/114/24 65/117/24 66/115/24 +f 64/112/26 66/115/26 59/110/26 +f 61/116/27 60/141/27 65/117/27 +f 68/118/23 69/128/23 70/119/23 +f 72/121/24 73/124/24 74/122/24 +f 73/124/26 68/142/26 67/125/26 +f 71/123/28 74/122/28 67/126/28 +f 69/128/25 68/118/25 73/124/25 +f 76/129/23 77/143/23 78/130/23 +f 77/132/27 79/135/27 80/133/27 +f 79/135/24 81/138/24 82/136/24 +f 80/133/28 82/136/28 75/131/28 +f 77/137/25 76/144/25 81/138/25 +o Prop2 +v 8.876309 4.210101 -11.711483 +v 9.975476 4.210101 -11.161900 +v 8.876309 3.821486 -11.550513 +v 8.876309 3.660517 -11.161900 +v 8.876309 3.821486 -10.773286 +v 8.876309 4.210101 -10.612316 +v 8.876309 4.598714 -10.773286 +v 8.876309 4.759685 -11.161900 +v 8.876309 4.598714 -11.550513 +v 9.092196 4.022469 -8.522002 +v 9.092196 4.397734 -8.522002 +v 9.092196 4.397734 -10.901798 +v 9.092196 4.022469 -10.901798 +v 9.259592 4.022469 -10.901798 +v 9.259592 4.397734 -10.901798 +v 9.259592 4.397734 -8.522002 +v 9.259592 4.022469 -8.522002 +v 9.092196 4.022469 -11.422001 +v 9.092196 4.397734 -11.422001 +v 9.092196 4.397734 -13.801797 +v 9.092196 4.022469 -13.801797 +v 9.259590 4.397734 -13.801797 +v 9.259590 4.022469 -13.801797 +v 9.259590 4.397734 -11.422001 +v 9.259590 4.022469 -11.422001 +v 9.092196 1.570202 -11.349532 +v 9.092196 1.570202 -10.974266 +v 9.092196 3.950000 -10.974266 +v 9.092196 3.950000 -11.349532 +v 9.259590 3.950000 -11.349532 +v 9.259590 3.950000 -10.974266 +v 9.259590 1.570202 -10.974266 +v 9.259590 1.570202 -11.349532 +v 9.092196 4.470202 -11.349532 +v 9.092196 4.470202 -10.974266 +v 9.092196 6.849998 -10.974266 +v 9.092196 6.849998 -11.349532 +v 9.259590 6.849998 -10.974266 +v 9.259590 6.849998 -11.349532 +v 9.259590 4.470202 -10.974266 +v 9.259590 4.470202 -11.349532 +vt 0.057500 0.876667 +vt 0.055000 0.893333 +vt 0.053750 0.876667 +vt 0.061250 0.876667 +vt 0.058750 0.893333 +vt 0.057500 0.876667 +vt 0.065000 0.876667 +vt 0.062500 0.893333 +vt 0.061250 0.876667 +vt 0.068750 0.876667 +vt 0.066250 0.893333 +vt 0.065000 0.876667 +vt 0.072500 0.876667 +vt 0.070000 0.893333 +vt 0.068750 0.876667 +vt 0.076250 0.876667 +vt 0.073750 0.893333 +vt 0.072500 0.876667 +vt 0.080000 0.876667 +vt 0.077500 0.893333 +vt 0.076250 0.876667 +vt 0.053750 0.876667 +vt 0.051250 0.893333 +vt 0.050000 0.876667 +vt 0.185000 0.908333 +vt 0.188750 0.876667 +vt 0.188750 0.908333 +vt 0.183750 0.876667 +vt 0.180000 0.908333 +vt 0.180000 0.876667 +vt 0.183750 0.908333 +vt 0.180000 0.910000 +vt 0.178750 0.908333 +vt 0.178750 0.876667 +vt 0.185000 0.876667 +vt 0.188750 0.876667 +vt 0.185000 0.908333 +vt 0.185000 0.876667 +vt 0.180000 0.910000 +vt 0.183750 0.908333 +vt 0.183750 0.910000 +vt 0.180000 0.908333 +vt 0.183750 0.876667 +vt 0.178750 0.908333 +vt 0.180000 0.876667 +vt 0.185000 0.908333 +vt 0.188750 0.876667 +vt 0.188750 0.908333 +vt 0.183750 0.876667 +vt 0.180000 0.908333 +vt 0.180000 0.876667 +vt 0.183750 0.908333 +vt 0.180000 0.910000 +vt 0.178750 0.908333 +vt 0.178750 0.876667 +vt 0.185000 0.876667 +vt 0.188750 0.876667 +vt 0.185000 0.908333 +vt 0.185000 0.876667 +vt 0.180000 0.910000 +vt 0.183750 0.908333 +vt 0.183750 0.910000 +vt 0.180000 0.908333 +vt 0.183750 0.876667 +vt 0.178750 0.908333 +vt 0.180000 0.876667 +vt 0.183750 0.910000 +vt 0.188750 0.908333 +vt 0.178750 0.876667 +vt 0.183750 0.910000 +vt 0.188750 0.908333 +vt 0.178750 0.876667 +vn 0.4194 -0.3474 -0.8387 +vn 0.4194 -0.8387 -0.3474 +vn 0.4194 -0.8387 0.3474 +vn 0.4194 -0.3474 0.8387 +vn 0.4194 0.3474 0.8387 +vn 0.4194 0.8387 0.3474 +vn 0.4194 0.8387 -0.3474 +vn 0.4194 0.3474 -0.8387 +vn -1.0000 0.0000 0.0000 +vn 1.0000 0.0000 0.0000 +vn 0.0000 0.0000 1.0000 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 1.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +s 1 +f 83/145/29 84/146/29 85/147/29 +f 85/148/30 84/149/30 86/150/30 +f 86/151/31 84/152/31 87/153/31 +f 87/154/32 84/155/32 88/156/32 +f 88/157/33 84/158/33 89/159/33 +f 89/160/34 84/161/34 90/162/34 +f 90/163/35 84/164/35 91/165/35 +f 91/166/36 84/167/36 83/168/36 +f 93/169/37 95/170/37 92/171/37 +f 97/172/38 99/173/38 96/174/38 +f 98/175/39 92/176/39 99/173/39 +f 96/174/40 92/177/40 95/178/40 +f 94/179/41 98/175/41 97/172/41 +f 101/180/37 103/181/37 100/182/37 +f 102/183/42 105/184/42 103/185/42 +f 104/186/38 107/187/38 105/184/38 +f 105/184/40 100/182/40 103/181/40 +f 102/188/41 106/189/41 104/186/41 +f 109/190/37 111/191/37 108/192/37 +f 113/193/38 115/194/38 112/195/38 +f 114/196/40 108/197/40 115/194/40 +f 112/195/42 108/198/42 111/199/42 +f 110/200/39 114/196/39 113/193/39 +f 117/201/37 119/202/37 116/203/37 +f 118/204/41 121/205/41 119/206/41 +f 120/207/38 123/208/38 121/205/38 +f 121/205/42 116/203/42 119/202/42 +f 118/209/39 122/210/39 120/207/39 +f 93/169/37 94/179/37 95/170/37 +f 97/172/38 98/175/38 99/173/38 +f 98/175/39 93/211/39 92/176/39 +f 96/174/40 99/173/40 92/177/40 +f 94/179/41 93/169/41 98/175/41 +f 101/180/37 102/212/37 103/181/37 +f 102/183/42 104/186/42 105/184/42 +f 104/186/38 106/189/38 107/187/38 +f 105/184/40 107/187/40 100/182/40 +f 102/188/41 101/213/41 106/189/41 +f 109/190/37 110/200/37 111/191/37 +f 113/193/38 114/196/38 115/194/38 +f 114/196/40 109/214/40 108/197/40 +f 112/195/42 115/194/42 108/198/42 +f 110/200/39 109/190/39 114/196/39 +f 117/201/37 118/215/37 119/202/37 +f 118/204/41 120/207/41 121/205/41 +f 120/207/38 122/210/38 123/208/38 +f 121/205/42 123/208/42 116/203/42 +f 118/209/39 117/216/39 122/210/39 +o Prop1 +v 8.876309 4.210101 -21.089483 +v 9.975476 4.210101 -20.539900 +v 8.876309 3.821487 -20.928514 +v 8.876309 3.660518 -20.539900 +v 8.876309 3.821487 -20.151285 +v 8.876309 4.210101 -19.990316 +v 8.876309 4.598715 -20.151285 +v 8.876309 4.759685 -20.539900 +v 8.876309 4.598715 -20.928514 +v 9.092196 4.022469 -17.900002 +v 9.092196 4.397734 -17.900002 +v 9.092196 4.397734 -20.279799 +v 9.092196 4.022469 -20.279799 +v 9.259592 4.022469 -20.279799 +v 9.259592 4.397734 -20.279799 +v 9.259592 4.397734 -17.900002 +v 9.259592 4.022469 -17.900002 +v 9.092196 4.022469 -20.800001 +v 9.092196 4.397734 -20.800001 +v 9.092196 4.397734 -23.179798 +v 9.092196 4.022469 -23.179798 +v 9.259590 4.397734 -23.179798 +v 9.259590 4.022469 -23.179798 +v 9.259590 4.397734 -20.800001 +v 9.259590 4.022469 -20.800001 +v 9.092196 1.570203 -20.727531 +v 9.092196 1.570203 -20.352266 +v 9.092196 3.950000 -20.352266 +v 9.092196 3.950000 -20.727531 +v 9.259590 3.950000 -20.727531 +v 9.259590 3.950000 -20.352266 +v 9.259590 1.570203 -20.352266 +v 9.259590 1.570203 -20.727531 +v 9.092196 4.470203 -20.727531 +v 9.092196 4.470203 -20.352266 +v 9.092196 6.849999 -20.352266 +v 9.092196 6.849999 -20.727531 +v 9.259590 6.849999 -20.352266 +v 9.259590 6.849999 -20.727531 +v 9.259590 4.470203 -20.352266 +v 9.259590 4.470203 -20.727531 +vt 0.076250 0.876667 +vt 0.073750 0.893333 +vt 0.072500 0.876667 +vt 0.070000 0.893333 +vt 0.068750 0.876667 +vt 0.066250 0.893333 +vt 0.065000 0.876667 +vt 0.062500 0.893333 +vt 0.061250 0.876667 +vt 0.057500 0.876667 +vt 0.055000 0.893333 +vt 0.053750 0.876667 +vt 0.051250 0.893333 +vt 0.050000 0.876667 +vt 0.061250 0.876667 +vt 0.058750 0.893333 +vt 0.057500 0.876667 +vt 0.080000 0.876667 +vt 0.077500 0.893333 +vt 0.185000 0.908333 +vt 0.188750 0.876667 +vt 0.188750 0.908333 +vt 0.183750 0.876667 +vt 0.180000 0.908333 +vt 0.180000 0.876667 +vt 0.183750 0.908333 +vt 0.180000 0.910000 +vt 0.178750 0.908333 +vt 0.178750 0.876667 +vt 0.185000 0.876667 +vt 0.188750 0.876667 +vt 0.185000 0.908333 +vt 0.185000 0.876667 +vt 0.180000 0.910000 +vt 0.183750 0.908333 +vt 0.183750 0.910000 +vt 0.180000 0.908333 +vt 0.183750 0.876667 +vt 0.178750 0.908333 +vt 0.180000 0.876667 +vt 0.185000 0.908333 +vt 0.188750 0.876667 +vt 0.188750 0.908333 +vt 0.183750 0.876667 +vt 0.180000 0.908333 +vt 0.180000 0.876667 +vt 0.183750 0.908333 +vt 0.180000 0.910000 +vt 0.178750 0.908333 +vt 0.178750 0.876667 +vt 0.185000 0.876667 +vt 0.188750 0.876667 +vt 0.185000 0.908333 +vt 0.185000 0.876667 +vt 0.180000 0.910000 +vt 0.183750 0.908333 +vt 0.183750 0.910000 +vt 0.180000 0.908333 +vt 0.183750 0.876667 +vt 0.178750 0.908333 +vt 0.180000 0.876667 +vt 0.183750 0.910000 +vt 0.188750 0.908333 +vt 0.178750 0.876667 +vt 0.183750 0.910000 +vt 0.188750 0.908333 +vt 0.178750 0.876667 +vn 0.4194 -0.3474 -0.8387 +vn 0.4194 -0.8387 -0.3474 +vn 0.4194 -0.8387 0.3474 +vn 0.4194 -0.3474 0.8387 +vn 0.4194 0.3474 0.8387 +vn 0.4194 0.8387 0.3474 +vn 0.4194 0.8387 -0.3474 +vn 0.4194 0.3474 -0.8387 +vn -1.0000 0.0000 0.0000 +vn 1.0000 0.0000 0.0000 +vn 0.0000 0.0000 1.0000 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 1.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +s 1 +f 124/217/43 125/218/43 126/219/43 +f 126/219/44 125/220/44 127/221/44 +f 127/221/45 125/222/45 128/223/45 +f 128/223/46 125/224/46 129/225/46 +f 129/226/47 125/227/47 130/228/47 +f 130/228/48 125/229/48 131/230/48 +f 131/231/49 125/232/49 132/233/49 +f 132/234/50 125/235/50 124/217/50 +f 134/236/51 136/237/51 133/238/51 +f 138/239/52 140/240/52 137/241/52 +f 139/242/53 133/243/53 140/240/53 +f 137/241/54 133/244/54 136/245/54 +f 135/246/55 139/242/55 138/239/55 +f 142/247/51 144/248/51 141/249/51 +f 143/250/56 146/251/56 144/252/56 +f 145/253/52 148/254/52 146/251/52 +f 146/251/54 141/249/54 144/248/54 +f 143/255/55 147/256/55 145/253/55 +f 150/257/51 152/258/51 149/259/51 +f 154/260/52 156/261/52 153/262/52 +f 155/263/54 149/264/54 156/261/54 +f 153/262/56 149/265/56 152/266/56 +f 151/267/53 155/263/53 154/260/53 +f 158/268/51 160/269/51 157/270/51 +f 159/271/55 162/272/55 160/273/55 +f 161/274/52 164/275/52 162/272/52 +f 162/272/56 157/270/56 160/269/56 +f 159/276/53 163/277/53 161/274/53 +f 134/236/51 135/246/51 136/237/51 +f 138/239/52 139/242/52 140/240/52 +f 139/242/53 134/278/53 133/243/53 +f 137/241/54 140/240/54 133/244/54 +f 135/246/55 134/236/55 139/242/55 +f 142/247/51 143/279/51 144/248/51 +f 143/250/56 145/253/56 146/251/56 +f 145/253/52 147/256/52 148/254/52 +f 146/251/54 148/254/54 141/249/54 +f 143/255/55 142/280/55 147/256/55 +f 150/257/51 151/267/51 152/258/51 +f 154/260/52 155/263/52 156/261/52 +f 155/263/54 150/281/54 149/264/54 +f 153/262/56 156/261/56 149/265/56 +f 151/267/53 150/257/53 155/263/53 +f 158/268/51 159/282/51 160/269/51 +f 159/271/55 161/274/55 162/272/55 +f 161/274/52 163/277/52 164/275/52 +f 162/272/56 164/275/56 157/270/56 +f 159/276/53 158/283/53 163/277/53 +o Plane +v -8.648877 2.337463 -3.828772 +v 17.109543 2.337462 -3.828772 +v 17.109543 0.872254 -3.537324 +v -8.648877 0.872255 -3.537324 +v 17.109543 -0.369889 -2.707351 +v -8.648877 -0.369888 -2.707351 +v 17.109543 -1.199862 -1.465208 +v -8.648877 -1.199861 -1.465208 +v 17.109543 -1.491310 -0.000000 +v -8.648877 -1.491309 -0.000000 +v 17.109543 -1.199862 1.465208 +v -8.648877 -1.199861 1.465208 +v 17.109543 -0.369889 2.707351 +v -8.648877 -0.369888 2.707351 +v 17.109543 0.872254 3.537324 +v -8.648877 0.872255 3.537324 +v 17.109543 2.337462 3.828772 +v -8.648877 2.337463 3.828772 +v 17.109543 3.802669 3.537324 +v -8.648877 3.802670 3.537324 +v 17.109543 5.044812 2.707351 +v -8.648877 5.044813 2.707351 +v 17.109543 5.874785 1.465208 +v -8.648877 5.874786 1.465208 +v 17.109543 6.166234 0.000000 +v -8.648877 6.166231 0.000000 +v 17.109543 5.874785 -1.465208 +v -8.648877 5.874786 -1.465208 +v 17.109543 5.044812 -2.707351 +v -8.648877 5.044813 -2.707351 +v 18.622576 0.819016 -3.307737 +v 18.622576 -0.342507 -2.531632 +v 17.109543 3.802669 -3.537324 +v -8.648877 3.802670 -3.537324 +v -22.527349 6.033054 -0.479178 +v -22.527349 5.863158 -0.885406 +v -24.803490 5.347558 0.000000 +v -17.322922 2.833023 -1.568635 +v -17.322922 2.415598 -0.848939 +v -22.527349 4.584874 -0.479178 +v -22.527349 4.754769 -0.885406 +v -17.322922 3.457743 2.049520 +v -17.322922 4.194651 2.218385 +v -22.527349 5.308964 1.252153 +v -22.527349 5.009036 1.156838 +v -17.322922 4.194651 -2.218385 +v -17.322922 3.457743 -2.049520 +v -22.527349 5.009036 -1.156838 +v -22.527349 5.308964 -1.252153 +v -17.322922 6.120280 0.000000 +v -17.322922 5.973704 -0.848939 +v -22.527349 6.092710 0.000000 +v -17.322922 2.415598 0.848939 +v -17.322922 2.833023 1.568635 +v -22.527349 4.754769 0.885406 +v -22.527349 4.584874 0.479178 +v -17.322922 5.556279 1.568635 +v -17.322922 5.973704 0.848939 +v -22.527349 6.033054 0.479178 +v -22.527349 5.863158 0.885406 +v -17.322922 4.931559 -2.049520 +v -22.527349 5.608891 -1.156838 +v -17.322922 2.269018 0.000000 +v -22.527349 4.525215 0.000000 +v -17.322922 4.931559 2.049520 +v -22.527349 5.608891 1.156838 +v -17.322922 5.556279 -1.568635 +v 18.622576 3.559235 -3.307737 +v 18.622576 4.720757 -2.531632 +v 20.313610 3.625209 -1.918521 +v 20.313610 2.744985 -2.506668 +v 18.622576 -0.342507 2.531632 +v 18.622576 0.819016 3.307737 +v 18.622576 5.496862 1.370110 +v 18.622576 5.769394 0.000000 +v 18.622576 -1.391143 -0.000000 +v 18.622576 -1.118612 1.370110 +v 18.622576 3.559235 3.307737 +v 18.622576 4.720757 2.531632 +v 18.622576 -1.118612 -1.370110 +v 18.622576 2.189125 3.580269 +v 18.622576 2.189125 -3.580269 +v 18.622576 5.496862 -1.370110 +v 20.313610 -0.799979 1.038296 +v 20.313610 -1.006509 -0.000000 +v 21.630833 -0.630115 -0.000000 +v 21.630833 -0.488594 0.711476 +v 20.313610 0.668393 2.506668 +v 20.313610 1.706689 2.713198 +v 20.313610 1.706689 -2.713198 +v 20.313610 0.668393 -2.506668 +v 20.313610 2.744985 2.506668 +v 20.313610 -0.211831 -1.918521 +v 20.313610 3.625209 1.918521 +v 20.313610 -0.799979 -1.038296 +v 20.313610 4.213357 1.038296 +v 20.313610 4.419887 0.000000 +v 20.313610 4.213357 -1.038296 +v 20.313610 -0.211831 1.918521 +v 21.630833 2.543696 1.314636 +v 21.630833 1.940536 1.717654 +v 23.161669 1.704029 1.096937 +v 23.161669 2.089221 0.839559 +v 21.630833 3.088236 0.000000 +v 21.630833 2.946714 -0.711476 +v 21.630833 -0.085575 1.314636 +v 21.630833 2.543696 -1.314635 +v 21.630833 0.517585 1.717654 +v 21.630833 1.940536 -1.717654 +v 21.630833 1.229060 1.859176 +v 21.630833 1.229060 -1.859176 +v 21.630833 0.517585 -1.717654 +v 21.630833 -0.085575 -1.314635 +v 21.630833 -0.488594 -0.711476 +v 21.630833 2.946714 0.711476 +v 23.161669 1.704029 -1.096937 +v 23.161669 2.089221 -0.839559 +v 23.950235 1.751938 -0.467252 +v 23.950235 1.537561 -0.610494 +v 23.161669 0.410103 -0.839559 +v 23.161669 0.152726 -0.454366 +v 23.161669 2.346599 0.454366 +v 23.161669 0.062347 0.000000 +v 23.161669 2.436978 0.000000 +v 23.161669 0.152726 0.454366 +v 23.161669 2.346599 -0.454366 +v 23.161669 0.410103 0.839559 +v 23.161669 0.795296 1.096937 +v 23.161669 1.249662 1.187316 +v 23.161669 1.249662 -1.187316 +v 23.161669 0.795296 -1.096937 +v 23.950235 1.031812 -0.610494 +v 23.950235 1.284687 -0.660794 +v 23.950235 1.895180 -0.252875 +v 23.950235 1.945480 0.000000 +v 23.950235 1.895180 0.252875 +v 23.950235 1.751938 0.467252 +v 23.950235 1.537561 0.610494 +v 23.950235 1.284687 0.660794 +v 23.950235 1.031812 0.610494 +v 23.950235 0.817435 0.467252 +v 23.950235 0.674193 0.252875 +v 23.950235 0.623893 0.000000 +v 23.950235 0.674193 -0.252875 +v 23.950235 0.817435 -0.467252 +v -23.618507 18.840416 -0.394288 +v -23.811937 6.847831 -0.394289 +v -29.203978 8.049699 0.000000 +v -18.412893 8.049699 0.000000 +v -23.272705 18.840416 0.000001 +v -23.618507 18.840416 0.394290 +v -18.758696 8.049699 0.404003 +v -23.811937 6.847831 0.394289 +v -16.836498 7.231033 0.394289 +v -26.797274 19.118101 0.000001 +v -29.365820 6.847831 0.000000 +v -23.435175 6.224818 -0.513844 +v -29.125296 6.008132 0.000000 +v -16.490694 7.231033 0.000000 +v -10.014664 5.966194 0.451128 +v -23.435175 6.224818 0.513844 +v -22.237053 5.198684 1.199751 +v -16.683172 5.198684 1.199751 +v -26.535391 5.330534 1.007645 +v -7.680647 5.966194 0.000000 +v -16.836498 7.231033 -0.394289 +v -10.014664 5.966194 -0.451128 +v -27.328730 4.765311 0.844866 +v -22.237053 5.198684 -1.199751 +v -26.535391 5.330534 -1.007645 +v -16.683172 5.198684 -1.199751 +v -27.328730 4.765311 -0.844866 +v -18.758696 8.049699 -0.404003 +v -21.774847 4.765311 -0.844866 +v -21.774847 4.765311 0.000000 +v -21.774847 4.765311 0.844866 +v -27.797274 18.840416 0.000001 +v -20.182421 5.820175 -13.388203 +v -17.837469 5.820174 -0.207668 +v -17.837469 5.519457 -0.207668 +v -20.182421 5.519457 -13.388203 +v -21.592556 6.009354 -13.388203 +v -23.479408 6.009353 -0.207668 +v -18.044111 6.009353 -0.207668 +v -20.374386 6.009354 -13.388203 +v -20.374386 5.330279 -13.388203 +v -18.044111 5.330279 -0.207668 +v -23.479408 5.330279 -0.207668 +v -21.592556 5.330279 -13.388203 +v -23.225643 5.669816 -13.388203 +v -25.237371 5.669816 -0.207668 +v -20.182421 5.519456 13.388203 +v -17.837469 5.519459 0.207668 +v -17.837469 5.820175 0.207668 +v -20.182421 5.820174 13.388203 +v -21.592556 5.330278 13.388203 +v -23.479408 5.330280 0.207668 +v -18.044111 5.330279 0.207668 +v -20.374386 5.330278 13.388203 +v -20.374386 6.009353 13.388203 +v -18.044111 6.009354 0.207668 +v -23.479408 6.009354 0.207668 +v -21.592556 6.009353 13.388203 +v -23.225643 5.669816 13.388203 +v -25.237371 5.669816 0.207668 +v -14.045300 3.096631 0.848939 +v -14.045300 3.514056 1.568635 +v -14.045300 3.096631 -0.848939 +v -14.045300 2.950051 0.000000 +v -14.045300 3.514056 -1.568635 +v -5.371254 0.311145 -2.707351 +v -5.371254 -0.518828 -1.465208 +v -5.371254 -0.518828 1.465208 +v -5.371254 0.311145 2.707351 +v -5.371254 -0.810276 -0.000000 +v 2.656979 -0.906801 -1.548738 +v 4.656979 -0.906801 -1.548738 +v 4.656979 -1.282411 -2.455540 +v 2.656979 -1.282411 -2.455540 +v 4.656979 -0.906801 -3.362341 +v 2.656979 -0.906801 -3.362341 +v 4.656979 0.000000 -3.737951 +v 2.656979 0.000000 -3.737951 +v 4.656979 0.906801 -3.362341 +v 2.656979 0.906801 -3.362341 +v 1.209754 0.906801 -3.362341 +v 1.209754 0.000000 -3.737951 +v 1.209754 -1.282411 -2.455540 +v 1.209754 -0.906801 -3.362341 +v 0.003049 -0.392748 -2.648372 +v 0.003049 -0.768357 -1.741571 +v 6.104204 0.000000 -3.737951 +v 6.104204 0.906802 -3.362341 +v 6.104204 -1.282411 -2.455540 +v 6.104204 -0.906801 -3.362341 +v 1.209754 -0.906801 -1.548738 +v 6.104204 -0.906801 -1.548738 +v 7.310909 -0.768357 -1.741571 +v 7.310909 -0.392747 -2.648372 +v 0.003049 0.514054 -3.023982 +v 7.310909 0.514054 -3.023982 +v 0.003048 1.420855 -2.648372 +v 7.310909 1.420856 -2.648372 +v 0.003049 -0.392748 -0.834769 +v 7.310909 -0.392747 -0.834769 +v 2.656979 -0.906801 1.548734 +v 4.656979 -0.906801 1.548734 +v 4.656979 -1.282411 2.455535 +v 2.656979 -1.282411 2.455535 +v 4.656979 -0.906801 3.362337 +v 2.656979 -0.906801 3.362337 +v 4.656979 -0.000000 3.737946 +v 2.656979 -0.000000 3.737946 +v 4.656979 0.906801 3.362337 +v 2.656979 0.906802 3.362337 +v 1.209754 0.906802 3.362337 +v 1.209754 -0.000000 3.737946 +v 1.209754 -1.282411 2.455535 +v 1.209754 -0.906801 3.362337 +v 0.003049 -0.392747 2.648367 +v 0.003049 -0.768357 1.741566 +v 6.104204 -0.000000 3.737946 +v 6.104204 0.906801 3.362337 +v 6.104204 -1.282411 2.455535 +v 6.104204 -0.906801 3.362337 +v 1.209754 -0.906801 1.548734 +v 6.104204 -0.906801 1.548734 +v 7.310909 -0.768357 1.741566 +v 7.310909 -0.392748 2.648367 +v 0.003049 0.514054 3.023977 +v 7.310909 0.514054 3.023977 +v 0.003049 1.420856 2.648367 +v 7.310909 1.420855 2.648367 +v 0.003049 -0.392747 0.834765 +v 7.310909 -0.392748 0.834765 +v 1.500305 3.122780 -17.418180 +v 2.907010 3.122780 -17.418180 +v 2.907010 2.581584 -16.876984 +v 1.500305 2.581584 -16.876984 +v 2.907010 2.581584 -16.111618 +v 1.500305 2.581584 -16.111618 +v 2.907010 3.122780 -15.570421 +v 1.500305 3.122781 -15.570421 +v 2.907010 3.888147 -15.570421 +v 1.500305 3.888147 -15.570421 +v 2.907010 4.429342 -16.111618 +v 1.500305 4.429342 -16.111618 +v 2.907010 4.429343 -16.876984 +v 2.907010 5.216080 -16.876984 +v 2.907010 5.216080 -16.111618 +v 2.907010 3.888147 -17.418180 +v 5.008881 4.429343 -16.876984 +v 5.008881 3.888147 -17.418180 +v 1.500305 4.429343 -16.876984 +v 1.500305 3.888147 -17.418180 +v 5.008881 2.581584 -16.876984 +v 5.008881 2.581584 -16.111618 +v -0.285478 4.429344 -16.111618 +v -0.285478 3.888148 -15.570421 +v 5.008881 3.888147 -15.570421 +v 5.008881 4.429342 -16.111618 +v -0.285478 3.122781 -15.570421 +v -0.285478 2.581584 -16.111618 +v -0.285478 3.122781 -17.418180 +v -0.285478 3.888147 -17.418180 +v -0.285478 2.581584 -16.876984 +v 5.008881 3.122780 -15.570421 +v 5.008881 3.122780 -17.418180 +v -0.285478 4.429343 -16.876984 +v -6.039415 3.505464 -16.494301 +v 7.367077 3.369535 -16.822462 +v 7.367077 3.177303 -16.630230 +v 7.367077 3.641392 -16.822462 +v 7.367077 3.833624 -16.630230 +v 7.367077 3.833624 -16.358374 +v 7.367077 3.641392 -16.166142 +v 7.367077 3.369535 -16.166142 +v 7.367077 3.177303 -16.358374 +v 1.500305 5.216080 -16.111618 +v 1.500305 5.216080 -16.876984 +v 4.805163 4.210103 -12.231182 +v 7.559474 4.239601 -11.989785 +v 7.559474 3.025841 -11.747283 +v 4.805163 2.904310 -11.917976 +v 7.559474 2.783338 -11.161830 +v 4.805163 2.591105 -11.161829 +v 7.559474 3.025841 -10.576376 +v 4.805163 2.904310 -10.405683 +v 7.559474 4.239601 -10.333874 +v 4.805163 4.210103 -10.092476 +v 7.559474 4.825054 -10.576376 +v 4.805163 4.966249 -10.405683 +v 7.559474 5.067556 -11.161829 +v 4.805163 5.279455 -11.161829 +v 8.887003 3.803822 -11.568155 +v 8.887003 3.635535 -11.161875 +v 7.559474 4.825054 -11.747282 +v 4.805163 4.966249 -11.917976 +v 8.887003 4.210102 -11.736441 +v 8.887003 4.616381 -11.568155 +v 8.887003 4.784667 -11.161875 +v 8.887003 4.616381 -10.755596 +v 8.887003 4.210102 -10.587309 +v 8.887003 3.803822 -10.755596 +v 2.193453 4.210103 -12.231182 +v 2.193453 2.904310 -11.917976 +v -0.516882 3.711920 -11.527017 +v -0.516882 4.254626 -11.678282 +v 2.193453 4.210103 -10.092476 +v 2.193453 2.904310 -10.405683 +v 2.193453 2.591105 -11.161829 +v 2.193453 4.966249 -10.405683 +v 2.193453 4.966249 -11.917976 +v -0.516882 3.560654 -11.161829 +v -0.516882 3.711920 -10.796642 +v -0.516882 4.254626 -10.645377 +v -0.516882 4.619813 -10.796642 +v -0.516882 4.771080 -11.161829 +v -0.516882 4.619813 -11.527017 +v 2.193454 5.279455 -11.161829 +v 4.354962 5.543211 -34.577400 +v 4.464384 5.455995 -34.388062 +v 4.464384 5.200350 -34.388062 +v 4.365958 5.151175 -34.558372 +v 3.854457 5.349201 -35.443459 +v 3.854457 5.543211 -35.443459 +v 4.245422 5.113065 -34.399647 +v 4.746218 4.829812 -10.770060 +v -3.556738 5.186512 -10.723449 +v -0.380831 5.328140 -34.644386 +v 4.245421 5.543215 -34.399647 +v 1.347604 5.543211 -35.483459 +v 4.964909 4.917097 -10.771288 +v 4.964909 5.455994 -10.771288 +v 4.999471 5.455992 -4.836422 +v 4.999471 4.779428 -4.836423 +v 1.347604 5.349200 -35.483459 +v 4.746218 5.543214 -10.770059 +v -3.470909 4.692151 -4.788582 +v -3.470909 5.543211 -4.788580 +v -5.886427 4.692151 -2.723212 +v -5.886427 5.543211 -1.772059 +v 4.780781 4.692149 -4.835188 +v 4.780781 5.543209 -4.835186 +v 4.999470 5.455994 -2.717648 +v 4.999470 4.779427 -2.717649 +v 4.780781 4.692150 -2.717762 +v 4.780781 5.543210 -2.717758 +v 4.780214 5.543206 -1.608046 +v 4.998903 5.455990 -1.607934 +v 4.805163 4.210103 -21.609173 +v 7.559474 4.239601 -21.367777 +v 7.559474 3.025841 -21.125275 +v 4.805162 2.904311 -21.295967 +v 7.559474 2.783338 -20.539822 +v 4.805162 2.591105 -20.539822 +v 7.559474 3.025841 -19.954369 +v 4.805162 2.904311 -19.783674 +v 7.559474 4.239601 -19.711866 +v 4.805163 4.210102 -19.470469 +v 7.559474 4.825054 -19.954369 +v 4.805163 4.966249 -19.783674 +v 7.559474 5.067557 -20.539822 +v 4.805163 5.279455 -20.539822 +v 8.887003 3.803822 -20.946146 +v 8.887003 3.635536 -20.539867 +v 7.559474 4.825054 -21.125275 +v 4.805163 4.966250 -21.295967 +v 2.193454 5.279455 -20.539822 +v 2.193453 4.966249 -19.783674 +v 8.887003 4.210102 -21.114433 +v 8.887003 4.616381 -20.946148 +v 8.887003 4.784668 -20.539867 +v 8.887003 4.616381 -20.133587 +v 8.887003 4.210101 -19.965302 +v 8.887003 3.803822 -20.133587 +v 2.193453 4.210103 -21.609173 +v 2.193453 2.904311 -21.295967 +v -0.516882 3.711920 -20.905008 +v -0.516882 4.254626 -21.056274 +v 2.193453 4.210102 -19.470469 +v 2.193453 2.904311 -19.783674 +v 2.193453 4.966249 -21.295967 +v 2.193453 2.591105 -20.539822 +v -0.516882 3.560655 -20.539822 +v -0.516882 3.711921 -20.174635 +v -0.516882 4.254626 -20.023371 +v -0.516882 4.619814 -20.174635 +v -0.516882 4.771080 -20.539822 +v -0.516882 4.619813 -20.905008 +v 4.998903 4.779424 -1.607935 +v -5.886994 5.543206 -1.613495 +v 1.500305 3.122778 17.418180 +v 2.907010 3.122778 17.418180 +v 2.907010 2.581582 16.876984 +v 1.500305 2.581582 16.876984 +v 2.907010 2.581582 16.111618 +v 1.500305 2.581582 16.111618 +v 2.907010 3.122779 15.570421 +v 1.500305 3.122779 15.570421 +v 2.907010 3.888145 15.570421 +v 1.500305 3.888145 15.570421 +v 2.907010 4.429341 16.111618 +v 1.500305 4.429341 16.111618 +v 2.907010 4.429341 16.876984 +v 2.907010 5.216078 16.876984 +v 2.907010 5.216079 16.111618 +v 2.907010 3.888145 17.418180 +v 5.008881 4.429341 16.876984 +v 5.008881 3.888145 17.418180 +v 1.500305 4.429341 16.876984 +v 1.500305 3.888145 17.418180 +v 5.008881 2.581582 16.876984 +v 5.008881 2.581582 16.111618 +v -0.285478 4.429343 16.111618 +v -0.285478 3.888146 15.570421 +v 5.008881 3.888145 15.570421 +v 5.008881 4.429341 16.111618 +v -0.285478 3.122779 15.570421 +v -0.285478 2.581582 16.111618 +v -0.285478 3.122778 17.418180 +v -0.285478 3.888145 17.418180 +v -0.285478 2.581582 16.876984 +v 5.008881 3.122778 15.570421 +v 5.008881 3.122778 17.418180 +v -0.285478 4.429341 16.876984 +v -6.039415 3.505462 16.494301 +v 7.367077 3.369533 16.822462 +v 7.367077 3.177301 16.630230 +v 7.367077 3.641390 16.822462 +v 7.367077 3.833622 16.630230 +v 7.367077 3.833622 16.358374 +v 7.367077 3.641390 16.166142 +v 7.367077 3.369533 16.166142 +v 7.367077 3.177301 16.358374 +v 1.500305 5.216079 16.111618 +v 1.500305 5.216078 16.876984 +v 4.805163 4.210102 12.231182 +v 7.559474 4.239600 11.989785 +v 7.559474 3.025840 11.747282 +v 4.805163 2.904310 11.917976 +v 7.559474 2.783338 11.161830 +v 4.805163 2.591104 11.161829 +v 7.559474 3.025840 10.576376 +v 4.805163 2.904310 10.405683 +v 7.559474 4.239600 10.333874 +v 4.805163 4.210102 10.092476 +v 7.559474 4.825053 10.576376 +v 4.805163 4.966249 10.405683 +v 7.559474 5.067555 11.161829 +v 4.805163 5.279455 11.161829 +v 8.887003 3.803821 11.568155 +v 8.887003 3.635535 11.161875 +v 7.559474 4.825053 11.747282 +v 4.805163 4.966249 11.917976 +v 8.887003 4.210101 11.736441 +v 8.887003 4.616380 11.568155 +v 8.887003 4.784667 11.161875 +v 8.887003 4.616381 10.755596 +v 8.887003 4.210101 10.587309 +v 8.887003 3.803821 10.755596 +v 2.193453 4.210102 12.231182 +v 2.193453 2.904310 11.917976 +v -0.516882 3.711920 11.527017 +v -0.516882 4.254625 11.678282 +v 2.193453 4.210102 10.092476 +v 2.193453 2.904310 10.405683 +v 2.193453 2.591104 11.161829 +v 2.193453 4.966249 10.405683 +v 2.193453 4.966249 11.917976 +v -0.516882 3.560653 11.161829 +v -0.516882 3.711920 10.796642 +v -0.516882 4.254625 10.645377 +v -0.516882 4.619812 10.796642 +v -0.516882 4.771079 11.161829 +v -0.516882 4.619812 11.527017 +v 2.193454 5.279454 11.161829 +v 4.354962 5.543208 34.577400 +v 4.464384 5.455991 34.388062 +v 4.464384 5.200346 34.388062 +v 4.365958 5.151172 34.558372 +v 3.854456 5.349198 35.443459 +v 3.854457 5.543209 35.443459 +v 4.245422 5.113067 34.399647 +v 4.746218 4.829815 10.770060 +v -3.556738 5.186512 10.723449 +v -0.380831 5.328137 34.644386 +v 4.245421 5.543208 34.399647 +v 1.347604 5.543208 35.483459 +v 4.964909 4.917096 10.771288 +v 4.964909 5.455994 10.771288 +v 4.999471 5.455993 4.836423 +v 4.999471 4.779428 4.836423 +v 1.347604 5.349197 35.483459 +v 4.746218 5.543210 10.770059 +v -3.470909 4.692152 4.788581 +v -3.470909 5.543211 4.788581 +v -5.886427 4.692151 2.723212 +v -5.886427 5.543211 1.772059 +v 4.780781 4.692150 4.835188 +v 4.780781 5.543209 4.835187 +v 4.999470 5.455994 2.717648 +v 4.999470 4.779428 2.717649 +v 4.780781 4.692151 2.717762 +v 4.780781 5.543211 2.717758 +v 4.780214 5.543207 1.608046 +v 4.998903 5.455990 1.607934 +v 4.805163 4.210100 21.609173 +v 7.559474 4.239599 21.367777 +v 7.559474 3.025839 21.125275 +v 4.805162 2.904309 21.295967 +v 7.559474 2.783336 20.539822 +v 4.805162 2.591103 20.539822 +v 7.559474 3.025839 19.954369 +v 4.805162 2.904309 19.783674 +v 7.559474 4.239599 19.711866 +v 4.805163 4.210100 19.470469 +v 7.559474 4.825052 19.954369 +v 4.805163 4.966247 19.783674 +v 7.559474 5.067555 20.539822 +v 4.805163 5.279453 20.539822 +v 8.887003 3.803820 20.946146 +v 8.887003 3.635534 20.539867 +v 7.559474 4.825052 21.125275 +v 4.805163 4.966248 21.295967 +v 2.193454 5.279453 20.539822 +v 2.193453 4.966247 19.783674 +v 8.887003 4.210099 21.114433 +v 8.887003 4.616379 20.946148 +v 8.887003 4.784666 20.539867 +v 8.887003 4.616379 20.133587 +v 8.887003 4.210099 19.965302 +v 8.887003 3.803820 20.133587 +v 2.193453 4.210101 21.609173 +v 2.193453 2.904309 21.295967 +v -0.516882 3.711918 20.905008 +v -0.516882 4.254624 21.056274 +v 2.193453 4.210100 19.470469 +v 2.193453 2.904309 19.783674 +v 2.193453 4.966247 21.295967 +v 2.193453 2.591103 20.539822 +v -0.516882 3.560653 20.539822 +v -0.516882 3.711918 20.174635 +v -0.516882 4.254624 20.023371 +v -0.516882 4.619812 20.174635 +v -0.516882 4.771078 20.539822 +v -0.516882 4.619811 20.905008 +v 4.998903 4.779424 1.607935 +v -5.886994 5.543207 1.613495 +v 1.683473 5.441774 -10.576500 +v 4.056783 5.531373 -10.576500 +v 4.056783 5.531373 -18.701500 +v 1.683473 5.441775 -18.701500 +v 1.683473 5.441773 18.701500 +v 4.056783 5.531371 18.701500 +v 4.056783 5.531372 10.576500 +v 1.683473 5.441773 10.576500 +v 1.176675 5.141184 -25.716265 +v 3.549040 5.029347 -25.716265 +v 3.552980 5.112920 -33.840836 +v 1.180615 5.224756 -33.840836 +v 1.176675 5.141182 25.716253 +v 3.549040 5.029345 25.716253 +v 3.552980 5.112917 33.840820 +v 1.180615 5.224753 33.840820 +vt 0.181250 0.853333 +vt 0.188750 0.858333 +vt 0.185000 0.868333 +vt 0.101250 0.863333 +vt 0.097500 0.865000 +vt 0.093750 0.863333 +vt 0.177500 0.858333 +vt 0.185000 0.853333 +vt 0.188750 0.863333 +vt 0.101250 0.863333 +vt 0.097500 0.865000 +vt 0.093750 0.863333 +vt 0.181250 0.868333 +vt 0.185000 0.868333 +vt 0.188750 0.863333 +vt 0.101250 0.851667 +vt 0.097500 0.850000 +vt 0.093750 0.851667 +vt 0.627500 0.311667 +vt 0.625000 0.311667 +vt 0.625000 0.315000 +vt 0.671250 0.191667 +vt 0.902500 0.131667 +vt 0.673750 0.131667 +vt 0.643750 0.138333 +vt 0.636250 0.131667 +vt 0.633750 0.133333 +vt 0.387500 0.311667 +vt 0.330000 0.318333 +vt 0.387500 0.318333 +vt 0.638750 0.311667 +vt 0.663750 0.315000 +vt 0.663750 0.311667 +vt 0.620000 0.315000 +vt 0.620000 0.318333 +vt 0.636250 0.193333 +vt 0.398750 0.133333 +vt 0.398750 0.241667 +vt 0.682500 0.311667 +vt 0.825000 0.295000 +vt 0.765000 0.295000 +vt 0.765000 0.306667 +vt 0.732500 0.310000 +vt 0.960000 0.238333 +vt 0.902500 0.238333 +vt 0.340000 0.241667 +vt 0.308750 0.310000 +vt 0.330000 0.310000 +vt 0.980000 0.131667 +vt 0.960000 0.131667 +vt 0.318750 0.133333 +vt 0.340000 0.133333 +vt 0.307500 0.130000 +vt 0.318750 0.130000 +vt 0.673750 0.128333 +vt 0.671250 0.130000 +vt 0.633750 0.130000 +vt 0.398750 0.130000 +vt 0.340000 0.130000 +vt 0.960000 0.128333 +vt 0.980000 0.128333 +vt 0.662500 0.168333 +vt 0.181250 0.853333 +vt 0.177500 0.863333 +vt 0.185000 0.868333 +vt 0.101250 0.851667 +vt 0.097500 0.850000 +vt 0.093750 0.851667 +vt 0.297500 0.318333 +vt 0.308750 0.318333 +vt 0.307500 0.133333 +vt 0.310000 0.273333 +vt 0.411250 0.090000 +vt 0.330000 0.058333 +vt 0.411250 0.058333 +vt 0.411250 0.090000 +vt 0.330000 0.058333 +vt 0.411250 0.058333 +vt 0.411250 0.058333 +vt 0.330000 0.090000 +vt 0.330000 0.058333 +vt 0.411250 0.090000 +vt 0.330000 0.058333 +vt 0.411250 0.058333 +vt 0.185000 0.853333 +vt 0.188750 0.863333 +vt 0.181250 0.868333 +vt 0.177500 0.863333 +vt 0.177500 0.858333 +vt 0.092500 0.858333 +vt 0.102500 0.858333 +vt 0.093750 0.851667 +vt 0.101250 0.851667 +vt 0.097500 0.850000 +vt 0.185000 0.868333 +vt 0.181250 0.868333 +vt 0.177500 0.863333 +vt 0.181250 0.853333 +vt 0.188750 0.858333 +vt 0.092500 0.858333 +vt 0.102500 0.858333 +vt 0.093750 0.851667 +vt 0.101250 0.851667 +vt 0.097500 0.850000 +vt 0.188750 0.858333 +vt 0.185000 0.853333 +vt 0.181250 0.853333 +vt 0.177500 0.858333 +vt 0.177500 0.863333 +vt 0.092500 0.858333 +vt 0.102500 0.858333 +vt 0.093750 0.863333 +vt 0.101250 0.863333 +vt 0.097500 0.865000 +vt 0.627500 0.316667 +vt 0.637500 0.316667 +vt 0.637500 0.313333 +vt 0.645000 0.171667 +vt 0.638750 0.315000 +vt 0.726250 0.295000 +vt 0.980000 0.268333 +vt 0.902500 0.128333 +vt 0.662500 0.136667 +vt 0.188750 0.863333 +vt 0.188750 0.858333 +vt 0.185000 0.853333 +vt 0.177500 0.858333 +vt 0.181250 0.868333 +vt 0.092500 0.858333 +vt 0.102500 0.858333 +vt 0.093750 0.863333 +vt 0.101250 0.863333 +vt 0.097500 0.865000 +vt 0.297500 0.310000 +vt 0.307500 0.273333 +vt 0.330000 0.090000 +vt 0.330000 0.090000 +vt 0.411250 0.090000 +vt 0.330000 0.090000 +vt 0.620000 0.603333 +vt 0.362500 0.623333 +vt 0.362500 0.603333 +vt 0.620000 0.623333 +vt 0.362500 0.643333 +vt 0.620000 0.643333 +vt 0.362500 0.663333 +vt 0.620000 0.663333 +vt 0.362500 0.683333 +vt 0.620000 0.683333 +vt 0.362500 0.703333 +vt 0.620000 0.703333 +vt 0.362500 0.723333 +vt 0.620000 0.723333 +vt 0.362500 0.743333 +vt 0.620000 0.743333 +vt 0.362500 0.763333 +vt 0.620000 0.763333 +vt 0.362500 0.783333 +vt 0.620000 0.783333 +vt 0.362500 0.803333 +vt 0.620000 0.803333 +vt 0.362500 0.823333 +vt 0.620000 0.823333 +vt 0.362500 0.843333 +vt 0.620000 0.523333 +vt 0.362500 0.543333 +vt 0.362500 0.523333 +vt 0.620000 0.543333 +vt 0.362500 0.563333 +vt 0.635000 0.623333 +vt 0.635000 0.643333 +vt 0.620000 0.563333 +vt 0.362500 0.583333 +vt 0.620000 0.583333 +vt 0.222500 0.551667 +vt 0.222500 0.558333 +vt 0.197500 0.555000 +vt 0.273750 0.665000 +vt 0.217500 0.676667 +vt 0.217500 0.665000 +vt 0.271250 0.758333 +vt 0.216250 0.750000 +vt 0.271250 0.748333 +vt 0.271250 0.608333 +vt 0.215000 0.616667 +vt 0.215000 0.611667 +vt 0.275000 0.528333 +vt 0.222500 0.538333 +vt 0.222500 0.531667 +vt 0.273750 0.711667 +vt 0.217500 0.700000 +vt 0.273750 0.700000 +vt 0.275000 0.820000 +vt 0.222500 0.810000 +vt 0.275000 0.808333 +vt 0.272500 0.588333 +vt 0.218750 0.596667 +vt 0.218750 0.591667 +vt 0.273750 0.676667 +vt 0.217500 0.688333 +vt 0.272500 0.778333 +vt 0.218750 0.770000 +vt 0.272500 0.768333 +vt 0.275000 0.548333 +vt 0.268750 0.628333 +vt 0.212500 0.636667 +vt 0.212500 0.631667 +vt 0.268750 0.738333 +vt 0.212500 0.730000 +vt 0.268750 0.728333 +vt 0.275000 0.838333 +vt 0.222500 0.828333 +vt 0.275000 0.826667 +vt 0.273750 0.688333 +vt 0.273750 0.798333 +vt 0.220000 0.790000 +vt 0.273750 0.788333 +vt 0.635000 0.583333 +vt 0.656250 0.563333 +vt 0.656250 0.583333 +vt 0.635000 0.743333 +vt 0.635000 0.843333 +vt 0.620000 0.843333 +vt 0.635000 0.703333 +vt 0.635000 0.803333 +vt 0.635000 0.563333 +vt 0.635000 0.663333 +vt 0.635000 0.763333 +vt 0.635000 0.603333 +vt 0.635000 0.523333 +vt 0.635000 0.543333 +vt 0.635000 0.723333 +vt 0.635000 0.823333 +vt 0.635000 0.683333 +vt 0.635000 0.783333 +vt 0.656250 0.686667 +vt 0.670000 0.698333 +vt 0.656250 0.701667 +vt 0.656250 0.763333 +vt 0.656250 0.603333 +vt 0.656250 0.623333 +vt 0.656250 0.783333 +vt 0.656250 0.643333 +vt 0.656250 0.803333 +vt 0.656250 0.663333 +vt 0.656250 0.823333 +vt 0.656250 0.683333 +vt 0.656250 0.843333 +vt 0.656250 0.703333 +vt 0.656250 0.523333 +vt 0.656250 0.543333 +vt 0.656250 0.723333 +vt 0.656250 0.743333 +vt 0.673750 0.798333 +vt 0.690000 0.790000 +vt 0.690000 0.796667 +vt 0.656250 0.541667 +vt 0.675000 0.530000 +vt 0.675000 0.540000 +vt 0.656250 0.705000 +vt 0.670000 0.716667 +vt 0.656250 0.720000 +vt 0.656250 0.561667 +vt 0.673750 0.550000 +vt 0.673750 0.560000 +vt 0.656250 0.725000 +vt 0.671250 0.736667 +vt 0.656250 0.740000 +vt 0.656250 0.581667 +vt 0.673750 0.570000 +vt 0.673750 0.580000 +vt 0.656250 0.746667 +vt 0.671250 0.758333 +vt 0.656250 0.761667 +vt 0.656250 0.620000 +vt 0.671250 0.608333 +vt 0.671250 0.618333 +vt 0.656250 0.601667 +vt 0.672500 0.590000 +vt 0.672500 0.600000 +vt 0.656250 0.768333 +vt 0.672500 0.780000 +vt 0.656250 0.781667 +vt 0.656250 0.641667 +vt 0.671250 0.630000 +vt 0.671250 0.640000 +vt 0.656250 0.786667 +vt 0.656250 0.801667 +vt 0.656250 0.661667 +vt 0.670000 0.650000 +vt 0.670000 0.660000 +vt 0.656250 0.806667 +vt 0.673750 0.816667 +vt 0.656250 0.820000 +vt 0.656250 0.681667 +vt 0.670000 0.670000 +vt 0.670000 0.680000 +vt 0.656250 0.826667 +vt 0.675000 0.836667 +vt 0.656250 0.840000 +vt 0.690000 0.571667 +vt 0.700000 0.576667 +vt 0.690000 0.578333 +vt 0.686250 0.658333 +vt 0.690000 0.808333 +vt 0.690000 0.815000 +vt 0.686206 0.678333 +vt 0.691250 0.828333 +vt 0.691250 0.835000 +vt 0.686250 0.690000 +vt 0.686250 0.696667 +vt 0.691250 0.538333 +vt 0.686250 0.708333 +vt 0.686250 0.715000 +vt 0.690000 0.558333 +vt 0.687500 0.728333 +vt 0.687500 0.735000 +vt 0.687500 0.750000 +vt 0.687500 0.756667 +vt 0.687500 0.616667 +vt 0.688750 0.598333 +vt 0.688750 0.771667 +vt 0.688750 0.778333 +vt 0.687500 0.638333 +vt 0.717500 0.551667 +vt 0.721250 0.555000 +vt 0.711250 0.565000 +vt 0.697500 0.751667 +vt 0.697500 0.755000 +vt 0.687500 0.610000 +vt 0.697500 0.615000 +vt 0.688750 0.591667 +vt 0.698750 0.596667 +vt 0.698750 0.773333 +vt 0.698750 0.776667 +vt 0.687500 0.631667 +vt 0.697500 0.636667 +vt 0.700000 0.791667 +vt 0.700000 0.795000 +vt 0.686250 0.651667 +vt 0.696250 0.656667 +vt 0.701250 0.810000 +vt 0.701250 0.813333 +vt 0.686250 0.671667 +vt 0.696250 0.676667 +vt 0.701250 0.830000 +vt 0.701250 0.833333 +vt 0.696250 0.691667 +vt 0.696250 0.695000 +vt 0.691250 0.531667 +vt 0.701250 0.536667 +vt 0.696250 0.710000 +vt 0.696250 0.713333 +vt 0.690000 0.551667 +vt 0.700000 0.556667 +vt 0.697500 0.730000 +vt 0.697500 0.733333 +vt 0.212500 0.735000 +vt 0.186250 0.731667 +vt 0.220000 0.571667 +vt 0.220000 0.576667 +vt 0.193750 0.575000 +vt 0.216250 0.755000 +vt 0.190000 0.753333 +vt 0.188750 0.613333 +vt 0.192500 0.595000 +vt 0.218750 0.775000 +vt 0.192500 0.773333 +vt 0.186250 0.635000 +vt 0.220000 0.795000 +vt 0.193750 0.791667 +vt 0.217500 0.668333 +vt 0.217500 0.675000 +vt 0.192500 0.671667 +vt 0.222500 0.816667 +vt 0.197500 0.813333 +vt 0.217500 0.680000 +vt 0.217500 0.686667 +vt 0.192500 0.683333 +vt 0.222500 0.835000 +vt 0.198750 0.831667 +vt 0.217500 0.690000 +vt 0.217500 0.696667 +vt 0.192500 0.693333 +vt 0.198750 0.535000 +vt 0.217500 0.701667 +vt 0.217500 0.708333 +vt 0.192500 0.705000 +vt 0.083750 0.290000 +vt 0.082500 0.125000 +vt 0.027500 0.141667 +vt 0.083750 0.290000 +vt 0.132500 0.141667 +vt 0.132500 0.141667 +vt 0.082500 0.125000 +vt 0.152500 0.130000 +vt 0.246250 0.413333 +vt 0.211250 0.413333 +vt 0.243750 0.406667 +vt 0.026250 0.111667 +vt 0.026250 0.125000 +vt 0.155000 0.130000 +vt 0.118750 0.101667 +vt 0.185000 0.078333 +vt 0.252500 0.101667 +vt 0.087500 0.081667 +vt 0.118750 0.078333 +vt 0.221250 0.111667 +vt 0.242500 0.111667 +vt 0.086250 0.111667 +vt 0.152500 0.130000 +vt 0.086250 0.111667 +vt 0.272500 0.440000 +vt 0.301250 0.440000 +vt 0.272500 0.453333 +vt 0.118750 0.101667 +vt 0.087500 0.081667 +vt 0.061250 0.101667 +vt 0.185000 0.078333 +vt 0.118750 0.078333 +vt 0.301250 0.490000 +vt 0.272500 0.490000 +vt 0.272500 0.476667 +vt 0.221250 0.111667 +vt 0.243750 0.420000 +vt 0.132500 0.141667 +vt 0.217500 0.465000 +vt 0.217500 0.453333 +vt 0.217500 0.476667 +vt 0.217500 0.440000 +vt 0.083750 0.290000 +vt 0.052500 0.295000 +vt 0.042500 0.290000 +vt 0.296250 0.465000 +vt 0.103750 0.321667 +vt 0.106250 0.498333 +vt 0.103750 0.498333 +vt 0.048750 0.321667 +vt 0.101250 0.498333 +vt 0.047500 0.498333 +vt 0.108750 0.498333 +vt 0.162500 0.321667 +vt 0.162500 0.498333 +vt 0.101250 0.321667 +vt 0.108750 0.321667 +vt 0.106250 0.321667 +vt 0.101250 0.500000 +vt 0.030000 0.498333 +vt 0.180000 0.498333 +vt 0.103750 0.321667 +vt 0.106250 0.498333 +vt 0.103750 0.498333 +vt 0.047500 0.321667 +vt 0.101250 0.498333 +vt 0.047500 0.498333 +vt 0.108297 0.498333 +vt 0.162500 0.321667 +vt 0.162500 0.498333 +vt 0.101250 0.321667 +vt 0.108750 0.321667 +vt 0.106250 0.321667 +vt 0.101250 0.500000 +vt 0.030000 0.498333 +vt 0.180000 0.498333 +vt 0.273750 0.568333 +vt 0.230000 0.885000 +vt 0.238750 0.930000 +vt 0.230000 0.930000 +vt 0.271250 0.743333 +vt 0.271250 0.623333 +vt 0.271250 0.603333 +vt 0.275000 0.543333 +vt 0.275000 0.523333 +vt 0.256250 0.885000 +vt 0.247500 0.930000 +vt 0.247500 0.885000 +vt 0.275000 0.803333 +vt 0.272500 0.603333 +vt 0.272500 0.583333 +vt 0.265000 0.885000 +vt 0.256250 0.930000 +vt 0.272500 0.763333 +vt 0.275000 0.563333 +vt 0.268750 0.643333 +vt 0.268750 0.623333 +vt 0.268750 0.723333 +vt 0.275000 0.823333 +vt 0.238750 0.885000 +vt 0.273750 0.783333 +vt 0.273750 0.583333 +vt 0.273750 0.563333 +vt 0.122500 0.990000 +vt 0.216250 0.971667 +vt 0.216250 0.990000 +vt 0.122500 0.916667 +vt 0.216250 0.935000 +vt 0.122500 0.935000 +vt 0.122500 0.971667 +vt 0.216250 0.953333 +vt 0.122500 0.953333 +vt 0.333750 0.885000 +vt 0.318750 0.928333 +vt 0.318750 0.885000 +vt 0.303750 0.928333 +vt 0.303750 0.885000 +vt 0.288750 0.885000 +vt 0.288750 0.928333 +vt 0.333750 0.986667 +vt 0.240000 0.941667 +vt 0.333750 0.941667 +vt 0.333750 0.941667 +vt 0.240000 0.986667 +vt 0.240000 0.941667 +vt 0.273750 0.885000 +vt 0.273750 0.928333 +vt 0.435000 0.963333 +vt 0.415000 0.976667 +vt 0.435000 0.976667 +vt 0.435000 0.950000 +vt 0.415000 0.963333 +vt 0.435000 0.936667 +vt 0.415000 0.950000 +vt 0.435000 0.923333 +vt 0.415000 0.936667 +vt 0.450000 0.936667 +vt 0.450000 0.963333 +vt 0.465000 0.950000 +vt 0.450000 0.950000 +vt 0.415000 0.923333 +vt 0.400000 0.936667 +vt 0.400000 0.950000 +vt 0.450000 0.976667 +vt 0.400000 0.963333 +vt 0.385000 0.950000 +vt 0.462500 0.936667 +vt 0.450000 0.923333 +vt 0.400000 0.923333 +vt 0.387500 0.936667 +vt 0.462500 0.963333 +vt 0.387500 0.963333 +vt 0.400000 0.976667 +vt 0.435000 0.923333 +vt 0.415000 0.936667 +vt 0.415000 0.923333 +vt 0.435000 0.936667 +vt 0.415000 0.950000 +vt 0.435000 0.950000 +vt 0.415000 0.963333 +vt 0.435000 0.963333 +vt 0.415000 0.976667 +vt 0.400000 0.963333 +vt 0.400000 0.936667 +vt 0.385000 0.950000 +vt 0.385000 0.936667 +vt 0.450000 0.976667 +vt 0.435000 0.976667 +vt 0.450000 0.950000 +vt 0.400000 0.950000 +vt 0.450000 0.963333 +vt 0.400000 0.923333 +vt 0.450000 0.936667 +vt 0.465000 0.950000 +vt 0.465000 0.963333 +vt 0.400000 0.976667 +vt 0.387500 0.963333 +vt 0.462500 0.963333 +vt 0.462500 0.976667 +vt 0.387500 0.936667 +vt 0.387500 0.923333 +vt 0.450000 0.923333 +vt 0.462500 0.936667 +vt 0.143750 0.846667 +vt 0.136250 0.828333 +vt 0.143750 0.828333 +vt 0.136250 0.846667 +vt 0.128750 0.828333 +vt 0.121250 0.846667 +vt 0.121250 0.828333 +vt 0.113750 0.846667 +vt 0.113750 0.828333 +vt 0.106250 0.828333 +vt 0.076250 0.898333 +vt 0.068750 0.908333 +vt 0.068750 0.898333 +vt 0.158750 0.846667 +vt 0.151250 0.875000 +vt 0.151250 0.846667 +vt 0.151250 0.828333 +vt 0.158750 0.828333 +vt 0.128750 0.875000 +vt 0.128750 0.846667 +vt 0.113750 0.805000 +vt 0.106250 0.875000 +vt 0.106250 0.846667 +vt 0.128750 0.805000 +vt 0.151250 0.805000 +vt 0.143750 0.805000 +vt 0.121250 0.875000 +vt 0.143750 0.875000 +vt 0.136250 0.875000 +vt 0.166250 0.805000 +vt 0.166250 0.828333 +vt 0.166250 0.846667 +vt 0.158750 0.875000 +vt 0.121250 0.805000 +vt 0.113750 0.875000 +vt 0.136250 0.805000 +vt 0.158750 0.805000 +vt 0.125000 0.726667 +vt 0.155000 0.726667 +vt 0.141250 0.908333 +vt 0.138750 0.908333 +vt 0.117500 0.726667 +vt 0.147500 0.726667 +vt 0.140000 0.726667 +vt 0.106250 0.805000 +vt 0.110000 0.726667 +vt 0.102500 0.871667 +vt 0.101250 0.878333 +vt 0.096250 0.876667 +vt 0.132500 0.726667 +vt 0.162500 0.726667 +vt 0.131250 0.908333 +vt 0.123750 0.908333 +vt 0.116250 0.908333 +vt 0.108750 0.908333 +vt 0.166250 0.875000 +vt 0.161250 0.908333 +vt 0.153750 0.908333 +vt 0.146250 0.908333 +vt 0.055000 0.908333 +vt 0.055000 0.898333 +vt 0.090000 0.898333 +vt 0.076250 0.908333 +vt 0.097500 0.898333 +vt 0.090000 0.908333 +vt 0.075000 0.626667 +vt 0.047500 0.610000 +vt 0.075000 0.608333 +vt 0.047500 0.606667 +vt 0.075000 0.596667 +vt 0.047500 0.586667 +vt 0.075000 0.585000 +vt 0.047500 0.583333 +vt 0.075000 0.566667 +vt 0.047500 0.565000 +vt 0.075000 0.555000 +vt 0.047500 0.553333 +vt 0.075000 0.543333 +vt 0.031250 0.600000 +vt 0.047500 0.598333 +vt 0.075000 0.650000 +vt 0.047500 0.640000 +vt 0.075000 0.638333 +vt 0.047500 0.628333 +vt 0.033750 0.558333 +vt 0.047500 0.556667 +vt 0.033750 0.635000 +vt 0.033750 0.630000 +vt 0.047500 0.626667 +vt 0.033750 0.621667 +vt 0.031250 0.593333 +vt 0.031250 0.586667 +vt 0.033750 0.546667 +vt 0.047500 0.545000 +vt 0.047500 0.566667 +vt 0.033750 0.571667 +vt 0.033750 0.566667 +vt 0.033750 0.646667 +vt 0.033750 0.640000 +vt 0.101250 0.626667 +vt 0.128750 0.618333 +vt 0.128750 0.625000 +vt 0.101250 0.585000 +vt 0.101250 0.608333 +vt 0.101250 0.566667 +vt 0.101250 0.638333 +vt 0.101250 0.596667 +vt 0.128750 0.630000 +vt 0.128750 0.636667 +vt 0.101250 0.543333 +vt 0.128750 0.551667 +vt 0.101250 0.555000 +vt 0.128750 0.575000 +vt 0.128750 0.601667 +vt 0.128750 0.606667 +vt 0.101250 0.650000 +vt 0.128750 0.641667 +vt 0.128750 0.646667 +vt 0.128750 0.563333 +vt 0.128750 0.591667 +vt 0.627500 0.311667 +vt 0.637500 0.313333 +vt 0.627500 0.316667 +vt 0.902500 0.131667 +vt 0.671250 0.191667 +vt 0.673750 0.131667 +vt 0.633750 0.133333 +vt 0.643750 0.138333 +vt 0.645000 0.171667 +vt 0.387500 0.311667 +vt 0.330000 0.318333 +vt 0.330000 0.310000 +vt 0.663750 0.315000 +vt 0.638750 0.311667 +vt 0.663750 0.311667 +vt 0.387500 0.318333 +vt 0.620000 0.315000 +vt 0.620000 0.318333 +vt 0.636250 0.193333 +vt 0.398750 0.133333 +vt 0.682500 0.311667 +vt 0.825000 0.295000 +vt 0.765000 0.306667 +vt 0.765000 0.295000 +vt 0.732500 0.310000 +vt 0.726250 0.295000 +vt 0.960000 0.238333 +vt 0.902500 0.238333 +vt 0.340000 0.241667 +vt 0.340000 0.133333 +vt 0.308750 0.310000 +vt 0.980000 0.131667 +vt 0.980000 0.268333 +vt 0.318750 0.133333 +vt 0.307500 0.130000 +vt 0.318750 0.130000 +vt 0.673750 0.128333 +vt 0.671250 0.130000 +vt 0.633750 0.130000 +vt 0.636250 0.131667 +vt 0.902500 0.128333 +vt 0.398750 0.130000 +vt 0.340000 0.130000 +vt 0.960000 0.128333 +vt 0.960000 0.131667 +vt 0.980000 0.128333 +vt 0.662500 0.168333 +vt 0.662500 0.136667 +vt 0.075000 0.626667 +vt 0.047500 0.610000 +vt 0.075000 0.608333 +vt 0.047500 0.606667 +vt 0.075000 0.596667 +vt 0.047500 0.586667 +vt 0.075000 0.585000 +vt 0.047500 0.583333 +vt 0.075000 0.566667 +vt 0.047500 0.565000 +vt 0.075000 0.555000 +vt 0.047500 0.553333 +vt 0.075000 0.543333 +vt 0.031250 0.600000 +vt 0.047500 0.598333 +vt 0.075000 0.650000 +vt 0.047500 0.640000 +vt 0.075000 0.638333 +vt 0.047500 0.628333 +vt 0.101250 0.543333 +vt 0.101250 0.555000 +vt 0.033750 0.558333 +vt 0.047500 0.556667 +vt 0.033750 0.635000 +vt 0.033750 0.630000 +vt 0.047500 0.626667 +vt 0.033750 0.621667 +vt 0.031250 0.593333 +vt 0.031250 0.586667 +vt 0.033750 0.546667 +vt 0.047500 0.545000 +vt 0.047500 0.566667 +vt 0.033750 0.571667 +vt 0.033750 0.566667 +vt 0.033750 0.646667 +vt 0.033750 0.640000 +vt 0.101250 0.626667 +vt 0.128750 0.618333 +vt 0.128750 0.625000 +vt 0.101250 0.585000 +vt 0.101250 0.650000 +vt 0.101250 0.608333 +vt 0.101250 0.566667 +vt 0.101250 0.638333 +vt 0.101250 0.596667 +vt 0.128750 0.630000 +vt 0.128750 0.636667 +vt 0.128750 0.551667 +vt 0.128750 0.575000 +vt 0.128750 0.601667 +vt 0.128750 0.606667 +vt 0.128750 0.641667 +vt 0.128750 0.646667 +vt 0.128750 0.563333 +vt 0.128750 0.591667 +vt 0.297500 0.318333 +vt 0.297500 0.310000 +vt 0.310000 0.273333 +vt 0.307500 0.133333 +vt 0.136250 0.828333 +vt 0.143750 0.846667 +vt 0.143750 0.828333 +vt 0.128750 0.828333 +vt 0.136250 0.846667 +vt 0.121250 0.828333 +vt 0.128750 0.846667 +vt 0.113750 0.828333 +vt 0.121250 0.846667 +vt 0.106250 0.828333 +vt 0.113750 0.846667 +vt 0.068750 0.908333 +vt 0.076250 0.898333 +vt 0.068750 0.898333 +vt 0.151250 0.875000 +vt 0.158750 0.846667 +vt 0.151250 0.846667 +vt 0.151250 0.828333 +vt 0.158750 0.828333 +vt 0.128750 0.875000 +vt 0.113750 0.805000 +vt 0.106250 0.875000 +vt 0.106250 0.846667 +vt 0.128750 0.805000 +vt 0.151250 0.805000 +vt 0.143750 0.805000 +vt 0.121250 0.875000 +vt 0.143750 0.875000 +vt 0.136250 0.875000 +vt 0.166250 0.805000 +vt 0.166250 0.828333 +vt 0.158750 0.875000 +vt 0.166250 0.846667 +vt 0.121250 0.805000 +vt 0.113750 0.875000 +vt 0.136250 0.805000 +vt 0.158750 0.805000 +vt 0.125000 0.726667 +vt 0.155000 0.726667 +vt 0.141250 0.908333 +vt 0.117500 0.726667 +vt 0.147500 0.726667 +vt 0.140000 0.726667 +vt 0.110000 0.726667 +vt 0.106250 0.805000 +vt 0.097500 0.878333 +vt 0.101250 0.878333 +vt 0.102500 0.876667 +vt 0.132500 0.726667 +vt 0.162500 0.726667 +vt 0.131250 0.908333 +vt 0.123750 0.908333 +vt 0.116250 0.908333 +vt 0.111250 0.908333 +vt 0.161250 0.908333 +vt 0.166250 0.875000 +vt 0.156250 0.908333 +vt 0.146250 0.908333 +vt 0.055000 0.908333 +vt 0.055000 0.898333 +vt 0.076250 0.908333 +vt 0.090000 0.898333 +vt 0.090000 0.908333 +vt 0.097500 0.898333 +vt 0.075000 0.626667 +vt 0.047500 0.610000 +vt 0.047500 0.626667 +vt 0.075000 0.596667 +vt 0.047500 0.606667 +vt 0.075000 0.608333 +vt 0.047500 0.586667 +vt 0.047500 0.595000 +vt 0.075000 0.566667 +vt 0.047500 0.583333 +vt 0.075000 0.585000 +vt 0.075000 0.555000 +vt 0.047500 0.565000 +vt 0.075000 0.543333 +vt 0.047500 0.553333 +vt 0.031250 0.600000 +vt 0.047500 0.598333 +vt 0.075000 0.650000 +vt 0.047500 0.640000 +vt 0.047500 0.648333 +vt 0.075000 0.638333 +vt 0.047500 0.628333 +vt 0.047500 0.636667 +vt 0.033750 0.558333 +vt 0.047500 0.556667 +vt 0.033750 0.635000 +vt 0.033750 0.621667 +vt 0.031250 0.593333 +vt 0.033750 0.546667 +vt 0.047500 0.545000 +vt 0.047500 0.566667 +vt 0.033750 0.571667 +vt 0.033750 0.646667 +vt 0.101250 0.626667 +vt 0.128750 0.618333 +vt 0.101250 0.608333 +vt 0.101250 0.585000 +vt 0.101250 0.566667 +vt 0.101250 0.638333 +vt 0.101250 0.596667 +vt 0.128750 0.630000 +vt 0.128750 0.551667 +vt 0.101250 0.543333 +vt 0.101250 0.555000 +vt 0.128750 0.575000 +vt 0.128750 0.601667 +vt 0.101250 0.650000 +vt 0.128750 0.641667 +vt 0.128750 0.563333 +vt 0.128750 0.591667 +vt 0.075000 0.626667 +vt 0.047500 0.610000 +vt 0.047500 0.626667 +vt 0.075000 0.596667 +vt 0.047500 0.606667 +vt 0.075000 0.608333 +vt 0.047500 0.586667 +vt 0.047500 0.595000 +vt 0.075000 0.566667 +vt 0.047500 0.583333 +vt 0.075000 0.585000 +vt 0.075000 0.555000 +vt 0.047500 0.565000 +vt 0.075000 0.543333 +vt 0.047500 0.553333 +vt 0.031250 0.600000 +vt 0.047500 0.598333 +vt 0.075000 0.650000 +vt 0.047500 0.640000 +vt 0.047500 0.648333 +vt 0.075000 0.638333 +vt 0.047500 0.628333 +vt 0.047500 0.636667 +vt 0.101250 0.543333 +vt 0.033750 0.558333 +vt 0.047500 0.556667 +vt 0.033750 0.635000 +vt 0.033750 0.621667 +vt 0.031250 0.593333 +vt 0.033750 0.546667 +vt 0.047500 0.545000 +vt 0.047500 0.566667 +vt 0.033750 0.571667 +vt 0.033750 0.646667 +vt 0.101250 0.626667 +vt 0.128750 0.618333 +vt 0.101250 0.608333 +vt 0.101250 0.585000 +vt 0.101250 0.650000 +vt 0.101250 0.566667 +vt 0.101250 0.596667 +vt 0.101250 0.638333 +vt 0.128750 0.630000 +vt 0.128750 0.551667 +vt 0.101250 0.555000 +vt 0.128750 0.575000 +vt 0.128750 0.601667 +vt 0.128750 0.641667 +vt 0.128750 0.563333 +vt 0.128750 0.591667 +vt 0.271250 0.618333 +vt 0.275000 0.540000 +vt 0.217500 0.711667 +vt 0.272500 0.598333 +vt 0.275000 0.560000 +vt 0.268750 0.638333 +vt 0.670000 0.688333 +vt 0.673750 0.788333 +vt 0.656250 0.526667 +vt 0.670000 0.706667 +vt 0.656250 0.546667 +vt 0.671250 0.726667 +vt 0.656250 0.566667 +vt 0.671250 0.748333 +vt 0.656250 0.605000 +vt 0.656250 0.586667 +vt 0.672500 0.770000 +vt 0.656250 0.626667 +vt 0.656250 0.646667 +vt 0.673750 0.806667 +vt 0.656250 0.666667 +vt 0.675000 0.826667 +vt 0.700000 0.573333 +vt 0.722500 0.558333 +vt 0.722500 0.561667 +vt 0.721250 0.565000 +vt 0.720000 0.566667 +vt 0.717500 0.568333 +vt 0.715000 0.568333 +vt 0.712500 0.566667 +vt 0.710000 0.561667 +vt 0.712500 0.553333 +vt 0.710000 0.558333 +vt 0.711250 0.555000 +vt 0.715000 0.551667 +vt 0.720000 0.553333 +vt 0.697500 0.611667 +vt 0.698750 0.593333 +vt 0.697500 0.633333 +vt 0.696250 0.653333 +vt 0.696250 0.673333 +vt 0.701250 0.533333 +vt 0.700000 0.553333 +vt 0.061250 0.101610 +vt 0.252500 0.101667 +vt 0.217500 0.490000 +vt 0.108750 0.500000 +vt 0.108750 0.516667 +vt 0.101250 0.516667 +vt 0.105000 0.538333 +vt 0.030000 0.321667 +vt 0.180000 0.321667 +vt 0.108750 0.500000 +vt 0.108750 0.516667 +vt 0.101250 0.516667 +vt 0.105000 0.538333 +vt 0.030000 0.321667 +vt 0.180000 0.321667 +vt 0.273750 0.578333 +vt 0.271250 0.763333 +vt 0.265000 0.930000 +vt 0.272500 0.783333 +vt 0.268750 0.743333 +vt 0.275000 0.843333 +vt 0.273750 0.803333 +vt 0.216250 0.916667 +vt 0.333750 0.928333 +vt 0.240000 0.986667 +vt 0.333750 0.986667 +vt 0.465000 0.963333 +vt 0.385000 0.963333 +vt 0.465000 0.936667 +vt 0.385000 0.936667 +vt 0.462500 0.923333 +vt 0.387500 0.923333 +vt 0.462500 0.976667 +vt 0.387500 0.976667 +vt 0.465000 0.936667 +vt 0.385000 0.963333 +vt 0.387500 0.976667 +vt 0.462500 0.923333 +vt 0.097500 0.870000 +vt 0.101250 0.870000 +vt 0.102500 0.876667 +vt 0.097500 0.878333 +vt 0.096250 0.871667 +vt 0.133750 0.908333 +vt 0.126250 0.908333 +vt 0.118750 0.908333 +vt 0.111250 0.908333 +vt 0.163750 0.908333 +vt 0.156250 0.908333 +vt 0.148750 0.908333 +vt 0.097500 0.908333 +vt 0.047500 0.595000 +vt 0.031250 0.606667 +vt 0.047500 0.648333 +vt 0.047500 0.636667 +vt 0.033750 0.563333 +vt 0.033750 0.626667 +vt 0.033750 0.553333 +vt 0.128750 0.546667 +vt 0.128750 0.568333 +vt 0.128750 0.558333 +vt 0.128750 0.586667 +vt 0.637500 0.316667 +vt 0.625000 0.315000 +vt 0.625000 0.311667 +vt 0.638750 0.315000 +vt 0.398750 0.241667 +vt 0.308750 0.318333 +vt 0.047500 0.595000 +vt 0.031250 0.606667 +vt 0.047500 0.648333 +vt 0.047500 0.636667 +vt 0.033750 0.563333 +vt 0.033750 0.626667 +vt 0.033750 0.553333 +vt 0.128750 0.546667 +vt 0.128750 0.568333 +vt 0.128750 0.558333 +vt 0.128750 0.586667 +vt 0.307500 0.273333 +vt 0.138750 0.908333 +vt 0.102500 0.871667 +vt 0.101250 0.870000 +vt 0.097500 0.870000 +vt 0.096250 0.871667 +vt 0.096250 0.876667 +vt 0.133750 0.908333 +vt 0.126250 0.908333 +vt 0.118750 0.908333 +vt 0.108750 0.908333 +vt 0.163750 0.908333 +vt 0.153750 0.908333 +vt 0.148750 0.908333 +vt 0.097500 0.908333 +vt 0.031250 0.606667 +vt 0.033750 0.563333 +vt 0.033750 0.630000 +vt 0.033750 0.626667 +vt 0.031250 0.586667 +vt 0.033750 0.553333 +vt 0.033750 0.566667 +vt 0.033750 0.640000 +vt 0.128750 0.625000 +vt 0.128750 0.636667 +vt 0.128750 0.546667 +vt 0.128750 0.568333 +vt 0.128750 0.606667 +vt 0.128750 0.646667 +vt 0.128750 0.558333 +vt 0.128750 0.586667 +vt 0.031250 0.606667 +vt 0.033750 0.563333 +vt 0.033750 0.630000 +vt 0.033750 0.626667 +vt 0.031250 0.586667 +vt 0.033750 0.553333 +vt 0.033750 0.566667 +vt 0.033750 0.640000 +vt 0.128750 0.625000 +vt 0.128750 0.636667 +vt 0.128750 0.546667 +vt 0.128750 0.568333 +vt 0.128750 0.606667 +vt 0.128750 0.646667 +vt 0.128750 0.558333 +vt 0.128750 0.586667 +vn 1.0000 0.0000 0.0000 +vn -1.0000 -0.0000 0.0000 +vn 0.8658 0.0000 0.5004 +vn -0.0459 -0.9989 0.0110 +vn 0.0000 1.0000 -0.0000 +vn 1.0000 0.0000 0.0058 +vn 0.0160 0.0000 0.9999 +vn 0.9998 0.0000 0.0212 +vn -0.0429 0.9991 -0.0002 +vn -0.4367 0.0000 0.8996 +vn -0.9999 0.0000 -0.0145 +vn -0.6499 0.0000 0.7600 +vn -0.0432 -0.9957 0.0823 +vn -0.0432 0.9973 0.0593 +vn -0.0000 -1.0000 -0.0000 +vn 0.3704 0.9289 -0.0002 +vn 0.3671 -0.9285 -0.0559 +vn 0.3514 0.9109 -0.2165 +vn 0.3704 0.9288 0.0078 +vn 0.3711 -0.9284 0.0190 +vn 0.3704 0.9289 0.0022 +vn 0.3704 -0.9286 0.0237 +vn 0.3704 0.9289 0.0000 +vn 0.3707 -0.9288 0.0000 +vn -0.0405 -0.9933 0.1083 +vn 1.0000 0.0000 -0.0005 +vn -0.0377 0.9993 0.0000 +vn -0.0471 -0.9988 -0.0103 +vn -0.0471 -0.9988 0.0103 +vn -0.0430 -0.9990 0.0116 +vn -0.0535 0.9883 -0.1431 +vn -0.0465 0.9989 -0.0010 +vn -0.6399 0.5727 0.5124 +vn -0.0001 -0.9997 0.0232 +vn 0.3705 -0.9286 0.0190 +vn 0.3705 -0.9285 0.0237 +vn 0.0119 -0.9743 0.2249 +vn 0.0035 -0.9751 0.2219 +vn 0.0810 0.0057 -0.9967 +vn -0.1343 -0.3904 -0.9108 +vn -0.0938 -0.0125 -0.9955 +vn 0.0630 -0.3770 -0.9241 +vn -0.0927 -0.6622 -0.7436 +vn 0.0473 -0.7034 -0.7093 +vn -0.0000 -0.9239 -0.3827 +vn 0.0367 -0.9224 -0.3845 +vn 0.0329 -0.9995 -0.0000 +vn -0.0000 -0.9239 0.3827 +vn 0.0367 -0.9224 0.3845 +vn -0.0927 -0.6622 0.7436 +vn 0.0473 -0.7034 0.7093 +vn -0.1343 -0.3904 0.9108 +vn 0.0630 -0.3770 0.9241 +vn -0.0938 -0.0125 0.9955 +vn 0.0810 0.0057 0.9967 +vn -0.0550 0.3723 0.9265 +vn 0.0986 0.3856 0.9174 +vn -0.0249 0.7017 0.7120 +vn 0.1131 0.7053 0.6998 +vn -0.0070 0.9226 0.3858 +vn 0.1226 0.9177 0.3779 +vn -0.0014 1.0000 0.0000 +vn 0.1259 0.9920 0.0000 +vn -0.0070 0.9226 -0.3858 +vn 0.1226 0.9177 -0.3779 +vn -0.0249 0.7017 -0.7120 +vn 0.2507 -0.3642 -0.8969 +vn 0.1960 -0.6891 -0.6976 +vn 0.1131 0.7053 -0.6998 +vn -0.0550 0.3723 -0.9265 +vn 0.0986 0.3856 -0.9174 +vn -0.1689 0.9518 -0.2560 +vn -0.2026 0.8198 -0.5356 +vn -0.9999 0.0152 -0.0000 +vn -0.3334 -0.6673 -0.6660 +vn -0.3677 -0.8964 -0.2474 +vn -0.3703 -0.7707 -0.5186 +vn -0.1850 0.0004 0.9827 +vn -0.3649 -0.4770 0.7996 +vn -0.2728 -0.4089 0.8708 +vn -0.1850 0.0004 -0.9827 +vn -0.3649 -0.4770 -0.7996 +vn -0.3264 0.0192 -0.9450 +vn -0.0032 1.0000 0.0000 +vn -0.1583 0.9874 0.0000 +vn -0.3334 -0.6673 0.6660 +vn -0.3677 -0.8964 0.2474 +vn -0.3863 -0.8696 0.3074 +vn -0.0117 0.9403 0.3403 +vn -0.2026 0.8198 0.5356 +vn -0.0419 0.7512 0.6588 +vn -0.1008 0.4241 -0.9000 +vn -0.2608 0.5178 -0.8148 +vn -0.3863 -0.8696 -0.3074 +vn -0.3669 -0.9303 -0.0000 +vn -0.1008 0.4241 0.9000 +vn -0.3264 0.0192 0.9450 +vn -0.0117 0.9403 -0.3403 +vn -0.2728 -0.4089 -0.8708 +vn -0.3703 -0.7707 0.5186 +vn -0.1689 0.9518 0.2560 +vn -0.3977 -0.9175 -0.0000 +vn -0.2608 0.5178 0.8148 +vn 0.3630 0.3606 -0.8592 +vn 0.6235 0.5508 -0.5548 +vn 0.5707 0.3111 -0.7599 +vn 0.2507 -0.3642 0.8969 +vn 0.4384 0.8988 0.0000 +vn 0.1571 -0.9110 0.3812 +vn 0.4042 0.6486 0.6449 +vn 0.4042 0.6486 -0.6449 +vn 0.1571 -0.9110 -0.3812 +vn 0.3097 0.0059 0.9508 +vn 0.3097 0.0059 -0.9508 +vn 0.4298 0.8347 -0.3444 +vn 0.1960 -0.6891 0.6976 +vn 0.4298 0.8347 0.3444 +vn 0.1430 -0.9897 -0.0000 +vn 0.3630 0.3606 0.8592 +vn 0.2476 -0.9689 0.0000 +vn 0.3523 -0.8680 0.3499 +vn 0.2698 -0.8895 0.3687 +vn 0.4980 -0.0029 0.8672 +vn 0.4980 -0.0029 -0.8672 +vn 0.4128 -0.3500 -0.8409 +vn 0.5707 0.3111 0.7599 +vn 0.3303 -0.6676 -0.6672 +vn 0.6235 0.5508 0.5548 +vn 0.2698 -0.8895 -0.3687 +vn 0.6547 0.6978 0.2907 +vn 0.6649 0.7469 -0.0000 +vn 0.6547 0.6978 -0.2907 +vn 0.3303 -0.6676 0.6672 +vn 0.4128 -0.3500 0.8409 +vn 0.5478 0.5836 0.5994 +vn 0.4691 0.3372 0.8162 +vn 0.4631 0.6263 0.6271 +vn 0.5732 0.8194 0.0000 +vn 0.5669 0.7589 -0.3205 +vn 0.3827 -0.6643 0.6421 +vn 0.5478 0.5836 -0.5994 +vn 0.4269 -0.3638 0.8279 +vn 0.5161 0.3131 -0.7973 +vn 0.4737 -0.0189 0.8805 +vn 0.4737 -0.0189 -0.8805 +vn 0.4257 -0.3636 -0.8286 +vn 0.5161 0.3131 0.7973 +vn 0.3827 -0.6643 -0.6421 +vn 0.3523 -0.8680 -0.3499 +vn 0.5669 0.7589 0.3205 +vn 0.3415 -0.9399 0.0000 +vn 0.4631 0.6263 -0.6271 +vn 0.8540 0.2014 -0.4797 +vn 0.4691 0.3372 -0.8162 +vn 0.4920 -0.8044 -0.3329 +vn 0.4591 0.8206 0.3403 +vn 0.4933 -0.8699 -0.0000 +vn 0.4577 0.8891 0.0000 +vn 0.4920 -0.8044 0.3329 +vn 0.4591 0.8206 -0.3403 +vn 0.4883 -0.6175 0.6167 +vn 0.4827 -0.3358 0.8088 +vn 0.4759 -0.0008 0.8795 +vn 0.4827 -0.3358 -0.8088 +vn 0.4759 -0.0008 -0.8795 +vn 0.4883 -0.6175 -0.6167 +vn 0.8654 -0.5011 0.0000 +vn 0.8631 -0.3559 -0.3584 +vn 0.8512 0.3725 0.3698 +vn 0.8604 -0.1928 0.4717 +vn 0.8572 0.0026 0.5149 +vn 0.8604 -0.1928 -0.4717 +vn 0.8572 0.0026 -0.5149 +vn 0.8540 0.2014 0.4797 +vn 0.8648 -0.4635 -0.1931 +vn 0.8493 0.4881 0.2010 +vn 0.8486 0.5290 -0.0000 +vn 0.8648 -0.4635 0.1931 +vn 0.8493 0.4881 -0.2010 +vn 0.8631 -0.3559 0.3584 +vn 0.8512 0.3725 -0.3698 +vn 0.2304 0.6351 -0.7372 +vn -0.0556 0.0738 -0.9957 +vn -0.0764 0.0081 -0.9970 +vn 0.6917 0.7222 -0.0000 +vn 0.2932 0.2402 0.9254 +vn 0.5995 0.8004 0.0000 +vn -0.0477 0.0732 0.9962 +vn 0.1893 0.5721 0.7980 +vn -0.2282 0.9736 0.0000 +vn 0.2304 0.6351 0.7372 +vn -0.9997 0.0243 0.0000 +vn -0.0708 -0.0046 -0.9975 +vn 0.2401 0.9707 -0.0000 +vn -0.0307 0.3710 0.9281 +vn 0.0147 0.6209 0.7838 +vn 0.1072 0.7709 0.6279 +vn -0.0940 0.2428 0.9655 +vn -0.0321 0.0475 0.9984 +vn 0.1421 0.9899 0.0000 +vn 0.1893 0.5721 -0.7980 +vn -0.0307 0.3710 -0.9281 +vn -0.3565 -0.6551 0.6661 +vn -0.0940 0.2428 -0.9655 +vn 0.0147 0.6209 -0.7838 +vn -0.0321 0.0475 -0.9984 +vn -0.3565 -0.6551 -0.6661 +vn 0.1072 0.7709 -0.6279 +vn 0.2892 0.2425 -0.9260 +vn -0.0185 -0.9506 0.3099 +vn -0.0185 -0.9506 -0.3099 +vn -0.0938 0.0570 0.9940 +vn -0.0768 0.0053 0.9970 +vn -0.0708 -0.0046 0.9975 +vn -0.0938 0.0570 -0.9940 +vn 0.9098 0.3822 -0.1619 +vn 0.9036 -0.3973 -0.1603 +vn 0.9036 0.3973 -0.1603 +vn -0.1043 0.9944 -0.0158 +vn 0.3414 0.9380 -0.0604 +vn -0.0931 0.9956 -0.0133 +vn 0.3414 -0.9380 -0.0604 +vn -0.1043 -0.9944 -0.0158 +vn -0.0931 -0.9956 -0.0133 +vn 0.3955 0.9158 -0.0703 +vn 0.3955 -0.9158 -0.0703 +vn 0.9098 -0.3822 -0.1619 +vn 0.0000 0.0000 -1.0000 +vn -0.2024 0.9789 -0.0291 +vn -0.2024 -0.9789 -0.0291 +vn 0.9098 -0.3822 0.1619 +vn 0.9036 0.3973 0.1603 +vn 0.9036 -0.3973 0.1603 +vn -0.1043 -0.9944 0.0158 +vn 0.3414 -0.9380 0.0604 +vn -0.0931 -0.9956 0.0133 +vn 0.3414 0.9380 0.0604 +vn -0.1043 0.9944 0.0158 +vn -0.0931 0.9956 0.0133 +vn 0.3955 -0.9158 0.0704 +vn 0.3955 0.9158 0.0703 +vn 0.9098 0.3822 0.1619 +vn -0.0000 0.0000 1.0000 +vn -0.2024 -0.9789 0.0291 +vn -0.2024 0.9789 0.0291 +vn -0.0419 0.7512 -0.6588 +vn 0.1769 -0.8514 0.4938 +vn 0.1911 -0.9199 0.3424 +vn 0.1922 -0.9249 -0.3279 +vn 0.2034 -0.9791 0.0000 +vn 0.1769 -0.8514 -0.4938 +vn 0.1911 -0.9199 -0.3424 +vn 0.1922 -0.9249 0.3279 +vn -0.3601 -0.7774 -0.5156 +vn -0.3792 -0.8660 -0.3260 +vn -0.3595 -0.8072 -0.4682 +vn -0.3601 -0.7774 0.5156 +vn -0.3792 -0.8660 0.3260 +vn -0.3829 -0.8572 0.3443 +vn -0.3829 -0.8572 -0.3443 +vn -0.3946 -0.9188 0.0000 +vn -0.0478 0.2298 -0.9721 +vn -0.1878 0.9036 -0.3850 +vn -0.1892 0.9107 -0.3673 +vn -0.2034 0.9791 0.0000 +vn -0.1892 0.9107 0.3673 +vn -0.1878 0.9036 0.3850 +vn 0.0460 -0.2216 -0.9740 +vn -0.1276 0.6143 -0.7787 +vn -0.0478 0.2298 0.9721 +vn 0.0460 -0.2216 0.9740 +vn -0.1276 0.6143 0.7787 +vn 0.0000 -0.7071 -0.7071 +vn 0.0000 0.3827 -0.9239 +vn -0.2584 -0.0301 -0.9656 +vn -0.2138 -0.9758 -0.0466 +vn -0.5821 -0.5915 -0.5579 +vn -0.2876 -0.6718 -0.6826 +vn 0.2584 -0.0301 -0.9656 +vn 0.2876 -0.6718 -0.6826 +vn -0.0962 -0.9196 0.3809 +vn 0.2138 -0.9758 -0.0466 +vn 0.5821 -0.5915 -0.5579 +vn -0.4781 0.0910 -0.8736 +vn -0.2081 0.3743 -0.9036 +vn 0.2081 0.3743 -0.9036 +vn 0.4781 0.0910 -0.8736 +vn -0.3220 -0.9376 0.1309 +vn 0.3220 -0.9376 0.1309 +vn 0.0962 -0.9196 0.3809 +vn 0.0000 -0.7071 0.7071 +vn 0.0000 0.3827 0.9239 +vn -0.2584 -0.0301 0.9656 +vn -0.2138 -0.9758 0.0466 +vn -0.5821 -0.5915 0.5579 +vn -0.3220 -0.9376 -0.1309 +vn 0.2081 0.3743 0.9036 +vn 0.2876 -0.6718 0.6826 +vn -0.2876 -0.6718 0.6826 +vn 0.2584 -0.0301 0.9656 +vn -0.0962 -0.9196 -0.3809 +vn 0.2138 -0.9758 0.0466 +vn 0.5821 -0.5915 0.5579 +vn 0.4781 0.0910 0.8736 +vn -0.2081 0.3743 0.9037 +vn -0.4781 0.0910 0.8736 +vn 0.3582 0.3573 0.8626 +vn -0.1649 -0.9112 -0.3774 +vn 0.0962 -0.9196 -0.3809 +vn 0.3220 -0.9376 -0.1309 +vn 0.0000 -0.3827 -0.9239 +vn -0.0000 -0.3827 0.9239 +vn -0.2811 0.6786 0.6786 +vn 0.2811 0.6786 -0.6786 +vn 0.7071 0.0000 0.7071 +vn 0.2811 0.6786 0.6786 +vn 0.1290 0.3795 -0.9162 +vn -0.2811 0.6786 -0.6786 +vn 0.1290 -0.9162 0.3795 +vn -0.0842 0.3813 0.9206 +vn 0.1290 0.9162 0.3795 +vn -0.0842 -0.9206 0.3813 +vn -0.0842 0.3813 -0.9206 +vn -0.0842 -0.3813 -0.9206 +vn 0.1290 -0.3795 0.9162 +vn 0.1290 -0.3795 -0.9162 +vn 0.1290 -0.9162 -0.3795 +vn -0.0842 0.9206 0.3813 +vn 0.1290 0.9162 -0.3795 +vn -0.0842 -0.3813 0.9206 +vn 0.1290 0.3795 0.9162 +vn -0.0842 -0.9206 -0.3813 +vn -0.0842 0.9206 -0.3813 +vn 0.7274 -0.2626 -0.6340 +vn 0.7274 -0.6340 -0.2626 +vn 0.7274 0.6340 -0.2626 +vn 0.7274 0.2626 0.6340 +vn 0.7274 -0.6340 0.2626 +vn 0.7274 -0.2626 0.6340 +vn 0.7274 0.6340 0.2626 +vn 0.7274 0.2626 -0.6340 +vn -0.7071 0.0000 0.7071 +vn 0.7071 0.0000 -0.7071 +vn -0.7071 0.0000 -0.7071 +vn 0.0395 0.0793 -0.9961 +vn 0.2579 -0.6421 -0.7219 +vn 0.0374 -0.6482 -0.7605 +vn 0.0345 -0.9994 0.0000 +vn 0.2580 -0.6421 0.7219 +vn 0.0374 -0.6482 0.7605 +vn 0.0395 0.0793 0.9961 +vn 0.1484 0.0900 0.9848 +vn 0.0396 0.7059 0.7072 +vn 0.1393 0.7021 0.6983 +vn 0.0380 0.9993 0.0000 +vn 0.5402 -0.8415 -0.0000 +vn 0.2980 -0.9546 0.0000 +vn 0.1393 0.7021 -0.6983 +vn 0.0396 0.7059 -0.7072 +vn 0.1483 0.0900 -0.9848 +vn 0.2023 0.6897 0.6953 +vn 0.2022 0.6897 -0.6953 +vn 0.1873 -0.0056 -0.9823 +vn 0.3633 -0.5613 -0.7436 +vn 0.3633 -0.5613 0.7436 +vn 0.2084 0.9780 -0.0000 +vn 0.1406 0.9901 0.0000 +vn 0.1874 -0.0056 0.9823 +vn -0.0994 0.0743 -0.9923 +vn -0.2799 -0.6041 -0.7461 +vn -0.1984 0.0653 -0.9779 +vn -0.1426 -0.6541 0.7428 +vn -0.1426 -0.6541 -0.7428 +vn -0.0994 0.0743 0.9923 +vn -0.0928 0.7032 -0.7049 +vn -0.1643 -0.9864 0.0000 +vn -0.1889 0.6964 -0.6923 +vn -0.0906 0.9959 0.0000 +vn -0.1889 0.6964 0.6923 +vn -0.0928 0.7032 0.7049 +vn -0.2799 -0.6041 0.7461 +vn -0.3368 -0.9416 0.0000 +vn -0.1844 0.9829 0.0000 +vn -0.1984 0.0653 0.9779 +vn 0.6227 -0.6827 -0.3822 +vn 0.4008 -0.5261 -0.7501 +vn 0.6464 0.7155 -0.2650 +vn 0.1749 -0.9843 -0.0258 +vn -0.9373 -0.0099 -0.3483 +vn 0.1369 -0.9880 -0.0719 +vn 0.1380 0.9894 0.0443 +vn 0.4011 0.6112 -0.6824 +vn -0.1967 0.7052 -0.6812 +vn 0.8295 -0.5582 -0.0210 +vn 0.8281 0.5606 -0.0024 +vn 0.8262 -0.5633 -0.0090 +vn -0.1756 -0.6143 -0.7693 +vn 0.8286 0.5598 -0.0112 +vn 0.8478 -0.4952 -0.1898 +vn 0.8588 0.4836 -0.1688 +vn 0.1747 0.9846 -0.0085 +vn -0.9999 -0.0000 0.0145 +vn -0.9059 0.0000 -0.4234 +vn -0.9123 0.0653 -0.4043 +vn -0.6550 0.5133 -0.5545 +vn -0.6399 0.5727 -0.5124 +vn -0.0103 -0.9997 -0.0232 +vn -0.0431 -0.9979 -0.0485 +vn -0.0108 0.9998 -0.0148 +vn 0.1889 0.9820 -0.0005 +vn 0.9311 -0.3647 0.0002 +vn 0.1888 -0.9820 0.0000 +vn 0.1886 0.9820 0.0000 +vn 0.8278 0.5611 0.0004 +vn 0.8278 0.5610 0.0002 +vn 0.1887 -0.9820 -0.0119 +vn 1.0000 -0.0000 0.0005 +vn 0.1886 0.9821 0.0001 +vn 0.2579 -0.6421 0.7219 +vn 0.1483 0.0900 0.9848 +vn 0.2580 -0.6421 -0.7219 +vn 0.1484 0.0900 -0.9848 +vn 0.2023 0.6897 -0.6953 +vn 0.2022 0.6897 0.6953 +vn -0.1896 0.9814 -0.0289 +vn -0.1896 -0.9814 -0.0289 +vn -0.1896 -0.9814 0.0289 +vn -0.1896 0.9814 0.0289 +vn -0.3595 -0.8072 0.4682 +vn -0.3582 0.3573 -0.8626 +vn 0.3582 0.3573 -0.8626 +vn -0.1649 -0.9112 0.3774 +vn 0.1649 -0.9112 0.3774 +vn -0.3582 0.3573 0.8626 +vn 0.1649 -0.9112 -0.3774 +vn -0.0431 0.9986 -0.0308 +vn 0.1874 -0.0056 -0.9823 +vn 0.1873 -0.0056 0.9823 +s off +f 500/284/57 503/285/57 505/286/57 +f 521/287/58 522/288/58 523/289/58 +f 577/290/57 579/291/57 570/292/57 +f 592/293/58 593/294/58 594/295/58 +f 662/296/57 661/297/57 660/298/57 +f 676/299/58 675/300/58 668/301/58 +f 685/302/59 684/303/59 683/304/59 +f 691/305/60 689/306/60 688/307/60 +f 687/308/61 682/309/61 692/310/61 +f 694/311/62 696/312/62 695/313/62 +f 686/314/63 693/315/63 698/316/63 +f 684/317/64 695/313/64 683/318/64 +f 691/319/65 699/320/65 690/321/65 +f 691/322/66 698/316/66 693/315/66 +f 690/323/67 701/324/67 700/325/67 +f 701/324/68 702/326/68 700/325/68 +f 700/327/69 689/306/69 690/328/69 +f 699/320/70 701/329/70 690/321/70 +f 707/330/57 696/312/57 697/331/57 +f 700/327/71 708/332/71 704/333/71 +f 709/334/61 701/329/61 705/335/61 +f 711/336/72 709/334/72 706/337/72 +f 684/338/73 685/339/73 688/307/73 +f 692/310/74 682/309/74 683/340/74 +f 683/340/75 699/320/75 692/310/75 +f 689/306/76 684/338/76 688/307/76 +f 705/335/77 695/341/77 696/342/77 +f 697/343/78 689/306/78 704/333/78 +f 706/337/79 705/335/79 696/342/79 +f 707/344/80 704/333/80 708/332/80 +f 698/345/81 691/305/81 688/307/81 +f 736/346/57 734/347/57 732/348/57 +f 747/349/58 746/350/58 740/351/58 +f 707/330/82 711/352/82 706/353/82 +f 710/354/61 703/355/61 709/334/61 +f 755/356/83 757/357/83 754/358/83 +f 759/359/83 761/360/83 758/361/83 +f 765/362/84 763/363/84 762/364/84 +f 767/365/85 769/366/85 766/367/85 +f 500/284/57 499/368/57 503/285/57 +f 503/285/57 504/369/57 505/286/57 +f 505/286/57 506/370/57 500/284/57 +f 506/370/57 507/371/57 500/284/57 +f 507/371/57 508/372/57 500/284/57 +f 523/289/58 512/373/58 520/374/58 +f 512/373/58 511/375/58 519/376/58 +f 511/375/58 518/377/58 519/376/58 +f 519/376/58 520/374/58 512/373/58 +f 520/374/58 521/287/58 523/289/58 +f 570/292/57 569/378/57 577/290/57 +f 569/378/57 575/379/57 577/290/57 +f 575/379/57 576/380/57 577/290/57 +f 577/290/57 578/381/57 579/291/57 +f 579/291/57 580/382/57 570/292/57 +f 594/295/58 584/383/58 591/384/58 +f 584/383/58 583/385/58 590/386/58 +f 583/385/58 589/387/58 590/386/58 +f 590/386/58 591/384/58 584/383/58 +f 591/384/58 592/293/58 594/295/58 +f 660/298/57 656/388/57 657/389/57 +f 657/389/57 665/390/57 660/298/57 +f 665/390/57 664/391/57 660/298/57 +f 664/391/57 663/392/57 660/298/57 +f 663/392/57 662/296/57 660/298/57 +f 668/301/58 669/393/58 677/394/58 +f 669/393/58 680/395/58 678/396/58 +f 680/395/58 679/397/58 678/396/58 +f 678/396/58 677/394/58 669/393/58 +f 677/394/58 676/299/58 668/301/58 +f 683/304/59 682/398/59 685/302/59 +f 682/398/59 687/399/59 686/400/59 +f 685/302/59 682/398/59 686/400/59 +f 691/305/86 690/328/86 689/306/86 +f 692/310/87 691/319/87 693/401/87 +f 693/401/61 687/308/61 692/310/61 +f 694/311/62 697/331/62 696/312/62 +f 686/314/63 687/402/63 693/315/63 +f 684/317/64 694/311/64 695/313/64 +f 691/319/88 692/310/88 699/320/88 +f 701/324/89 703/403/89 702/326/89 +f 700/327/90 704/333/90 689/306/90 +f 699/320/61 705/335/61 701/329/61 +f 707/330/57 706/353/57 696/312/57 +f 700/327/71 702/404/71 708/332/71 +f 709/334/61 703/355/61 701/329/61 +f 711/336/72 710/354/72 709/334/72 +f 683/340/75 695/341/75 699/320/75 +f 689/306/91 694/405/91 684/338/91 +f 705/335/77 699/320/77 695/341/77 +f 697/343/92 694/405/92 689/306/92 +f 706/337/79 709/334/79 705/335/79 +f 707/344/80 697/343/80 704/333/80 +f 688/307/93 685/339/93 686/406/93 +f 686/406/94 698/345/94 688/307/94 +f 732/348/57 726/407/57 736/346/57 +f 726/407/57 727/408/57 736/346/57 +f 727/408/57 737/409/57 736/346/57 +f 736/346/57 735/410/57 734/347/57 +f 734/347/57 733/411/57 732/348/57 +f 740/351/58 741/412/58 748/413/58 +f 741/412/58 751/414/58 749/415/58 +f 751/414/58 750/416/58 749/415/58 +f 749/415/58 748/413/58 741/412/58 +f 748/413/58 747/349/58 740/351/58 +f 707/330/82 752/417/82 711/352/82 +f 710/354/61 753/418/61 703/355/61 +f 755/356/83 756/419/83 757/357/83 +f 759/359/83 760/420/83 761/360/83 +f 765/362/84 764/421/84 763/363/84 +f 767/365/85 768/422/85 769/366/85 +s 1 +f 166/423/95 168/424/96 165/425/97 +f 167/426/98 170/427/99 168/424/96 +f 169/428/100 172/429/101 170/427/99 +f 171/430/102 174/431/71 172/429/101 +f 173/432/103 176/433/104 174/431/71 +f 175/434/105 178/435/106 176/433/104 +f 177/436/107 180/437/108 178/435/106 +f 179/438/109 182/439/110 180/437/108 +f 181/440/111 184/441/112 182/439/110 +f 183/442/113 186/443/114 184/441/112 +f 185/444/115 188/445/116 186/443/114 +f 187/446/117 190/447/118 188/445/116 +f 189/448/119 192/449/120 190/450/118 +f 191/451/121 194/452/122 192/449/120 +f 169/428/100 195/453/123 196/454/124 +f 193/455/125 198/456/126 194/452/122 +f 197/457/127 165/425/97 198/456/126 +f 199/458/128 200/459/129 201/460/130 +f 202/461/131 204/462/132 205/463/133 +f 207/464/134 209/465/135 206/466/136 +f 210/467/137 212/468/138 213/469/139 +f 214/470/140 199/471/128 216/472/141 +f 218/473/142 220/474/143 217/475/144 +f 222/476/145 224/477/146 221/478/147 +f 225/479/148 213/480/139 226/481/149 +f 203/482/150 228/483/151 204/462/132 +f 229/484/152 208/485/153 207/486/134 +f 215/487/154 200/459/129 199/458/128 +f 211/488/155 205/489/133 212/490/138 +f 206/491/136 219/492/156 218/493/142 +f 214/494/140 223/495/157 222/496/145 +f 217/475/144 228/483/151 227/497/158 +f 221/498/147 230/499/159 229/500/152 +f 232/501/160 234/502/161 235/503/162 +f 177/436/107 237/504/163 179/438/109 +f 187/446/117 239/505/164 189/506/119 +f 173/432/103 241/507/165 175/434/105 +f 183/442/113 243/508/166 185/444/115 +f 197/457/127 233/509/167 232/501/160 +f 171/430/102 196/454/124 244/510/168 +f 179/438/109 245/511/169 181/440/111 +f 167/426/98 246/512/170 195/453/123 +f 191/451/121 239/513/164 247/514/171 +f 175/434/105 236/515/172 177/436/107 +f 185/444/115 238/516/173 187/446/117 +f 166/423/95 232/501/160 246/512/170 +f 173/432/103 244/510/168 240/517/174 +f 181/440/111 242/518/175 183/442/113 +f 193/455/125 247/514/171 233/509/167 +f 249/519/176 251/520/177 248/521/178 +f 237/504/163 253/522/179 245/511/169 +f 195/453/123 254/523/180 255/524/181 +f 246/512/170 235/503/162 254/523/180 +f 245/511/169 256/525/182 242/518/175 +f 196/454/124 255/524/181 257/526/183 +f 242/518/175 258/527/184 243/508/166 +f 244/510/168 257/526/183 259/528/185 +f 243/508/166 260/529/186 238/516/173 +f 240/517/174 259/528/185 249/530/176 +f 238/516/173 261/531/187 239/505/164 +f 240/517/174 248/532/178 241/507/165 +f 247/514/171 261/533/187 262/534/188 +f 241/507/165 263/535/189 236/515/172 +f 233/509/167 262/534/188 234/502/161 +f 236/515/172 252/536/190 237/504/163 +f 264/537/191 266/538/192 267/539/193 +f 262/540/188 268/541/194 269/542/195 +f 248/543/178 270/544/196 263/545/189 +f 234/546/161 269/547/195 271/548/197 +f 263/549/189 272/550/198 252/551/190 +f 235/552/162 271/553/197 273/554/199 +f 252/555/190 274/556/200 253/557/179 +f 255/558/181 275/559/201 276/560/202 +f 254/561/180 273/562/199 275/563/201 +f 253/564/179 265/565/203 256/566/182 +f 257/567/183 276/568/202 277/569/204 +f 256/570/182 264/537/191 258/571/184 +f 259/572/185 277/573/204 278/574/205 +f 258/575/184 279/576/206 260/577/186 +f 249/578/176 278/579/205 250/580/207 +f 260/581/186 268/582/194 261/583/187 +f 281/584/208 283/585/209 280/586/210 +f 277/573/204 285/587/211 278/574/205 +f 279/576/206 267/588/193 286/589/212 +f 278/579/205 287/590/213 250/580/207 +f 268/582/194 286/591/212 288/592/214 +f 251/520/177 287/593/213 289/594/215 +f 268/541/194 290/595/216 269/542/195 +f 270/544/196 289/596/215 291/597/217 +f 269/547/195 281/598/208 271/548/197 +f 272/550/198 291/599/217 292/600/218 +f 271/553/197 280/586/210 273/554/199 +f 274/556/200 292/601/218 293/602/219 +f 275/559/201 295/603/220 276/560/202 +f 273/562/199 294/604/221 275/563/201 +f 265/565/203 293/605/219 266/606/192 +f 276/568/202 284/607/222 277/569/204 +f 307/608/223 309/609/224 301/610/225 +f 293/602/219 304/611/226 303/612/227 +f 294/613/221 296/614/228 295/603/220 +f 280/615/210 297/616/229 294/604/221 +f 266/606/192 303/617/227 302/618/230 +f 295/619/220 309/620/224 284/607/222 +f 267/539/193 302/621/230 301/622/225 +f 284/623/222 308/624/231 285/587/211 +f 286/589/212 301/625/225 300/626/232 +f 285/627/211 307/628/223 287/590/213 +f 288/592/214 300/629/232 299/630/233 +f 289/594/215 307/631/223 306/632/234 +f 288/633/214 298/634/235 290/595/216 +f 291/597/217 306/635/234 305/636/236 +f 290/637/216 282/638/237 281/598/208 +f 292/600/218 305/639/236 304/640/226 +f 219/492/156 209/641/135 201/642/130 +f 200/643/129 226/644/149 201/645/130 +f 209/465/135 208/646/153 201/647/130 +f 213/469/139 212/468/138 201/648/130 +f 226/481/149 213/480/139 201/649/130 +f 208/485/153 230/650/159 201/651/130 +f 212/490/138 205/489/133 201/652/130 +f 230/499/159 224/653/146 201/654/130 +f 205/655/133 204/656/132 201/657/130 +f 224/477/146 223/658/157 201/659/130 +f 204/660/132 228/661/151 201/662/130 +f 223/495/157 216/663/141 201/664/130 +f 228/665/151 220/666/143 201/667/130 +f 216/472/141 199/471/128 201/668/130 +f 220/669/143 219/670/156 201/671/130 +f 310/672/238 311/673/239 312/674/240 +f 314/675/241 316/676/242 313/677/243 +f 317/678/244 318/679/245 316/676/242 +f 314/680/241 319/681/246 315/682/247 +f 311/673/239 322/683/248 320/684/249 +f 313/677/243 318/679/245 323/685/250 +f 325/686/251 327/687/252 324/688/253 +f 325/686/251 328/689/254 326/690/255 +f 323/685/250 324/691/253 329/692/256 +f 317/678/244 322/683/248 325/693/251 +f 330/694/257 321/695/258 311/673/239 +f 318/679/245 325/693/251 324/691/253 +f 328/696/254 322/697/248 332/698/259 +f 321/699/258 334/700/260 322/701/248 +f 321/699/258 335/702/261 333/703/262 +f 322/704/248 334/705/260 336/706/263 +f 323/685/250 331/707/264 330/694/257 +f 330/694/257 313/677/243 323/685/250 +f 310/708/238 319/681/246 314/680/241 +f 337/709/265 314/675/241 313/677/243 +f 339/710/71 340/711/266 332/698/259 +f 334/705/260 338/712/267 336/706/263 +f 328/696/254 340/711/266 326/713/255 +f 316/676/242 315/714/247 317/678/244 +f 315/714/247 319/715/246 341/716/268 +f 317/678/244 315/714/247 312/674/269 +f 341/716/268 312/674/269 315/714/247 +f 312/674/269 320/684/270 317/678/244 +f 312/674/240 341/716/271 310/672/238 +f 341/716/271 319/715/246 310/672/238 +f 310/672/238 337/709/265 311/673/239 +f 337/709/265 330/694/257 311/673/239 +f 311/673/239 320/684/249 312/674/240 +f 322/717/248 336/706/263 332/698/259 +f 343/718/272 345/719/273 342/720/274 +f 347/721/275 349/722/276 346/723/277 +f 350/724/278 352/725/279 353/726/280 +f 342/720/274 348/727/281 343/718/272 +f 351/728/282 345/719/273 344/729/283 +f 349/730/284 342/720/284 345/719/284 +f 354/731/285 347/721/275 346/723/277 +f 352/725/279 354/732/286 353/726/280 +f 357/733/287 359/734/288 356/735/289 +f 361/736/290 363/737/291 360/738/292 +f 364/739/293 366/740/294 367/741/295 +f 356/735/289 362/742/296 357/733/287 +f 365/743/297 359/734/288 358/744/298 +f 363/745/299 356/735/299 359/734/299 +f 368/746/300 361/736/290 360/738/292 +f 366/740/294 368/747/301 367/741/295 +f 231/748/302 226/644/149 200/643/129 +f 218/749/303 370/750/304 371/751/303 +f 182/439/110 206/752/136 180/437/108 +f 165/425/97 211/753/155 210/754/137 +f 190/450/118 215/755/154 214/756/140 +f 203/757/305 373/758/306 227/759/306 +f 188/445/116 221/760/147 186/443/114 +f 198/456/126 210/761/137 225/762/148 +f 202/763/307 372/764/308 203/757/305 +f 184/441/112 207/765/134 182/439/110 +f 192/449/120 231/766/302 215/755/154 +f 168/424/96 202/767/131 211/768/155 +f 180/437/108 218/769/142 178/435/106 +f 190/447/118 222/770/145 188/445/116 +f 217/771/309 373/758/306 370/750/304 +f 186/443/114 229/772/152 184/441/112 +f 194/452/122 225/773/148 231/774/302 +f 375/775/310 372/776/311 374/777/312 +f 378/778/313 370/779/314 377/780/315 +f 376/781/316 373/782/317 372/776/311 +f 377/780/315 373/782/317 379/783/158 +f 178/784/318 377/785/319 176/786/320 +f 176/786/320 379/787/321 174/788/321 +f 172/789/322 379/787/321 376/790/323 +f 178/791/318 371/792/324 378/793/325 +f 170/794/326 374/795/327 202/796/327 +f 170/797/326 376/790/323 375/798/328 +f 383/799/71 381/800/104 380/801/104 +f 385/802/329 382/803/71 383/799/71 +f 387/804/284 384/805/329 385/802/329 +f 389/806/330 386/807/284 387/804/284 +f 391/808/331 389/806/330 387/804/284 +f 392/809/332 394/810/333 393/811/334 +f 388/812/330 396/813/335 386/807/284 +f 392/809/332 385/802/329 383/799/71 +f 399/814/336 382/803/71 384/805/329 +f 393/811/334 387/804/284 385/802/329 +f 396/813/335 384/805/329 386/807/284 +f 400/815/337 383/799/71 380/801/104 +f 398/816/338 381/800/104 382/803/71 +f 403/817/339 398/816/338 399/814/336 +f 394/810/333 391/808/331 393/811/334 +f 396/813/335 403/817/339 399/814/336 +f 404/818/340 390/819/341 391/808/331 +f 397/820/342 405/821/343 396/813/335 +f 400/815/337 395/822/344 392/809/332 +f 402/823/345 401/824/346 398/816/338 +f 411/825/101 413/826/71 410/827/101 +f 412/828/71 415/829/347 413/826/71 +f 414/830/347 417/831/299 415/829/347 +f 416/832/299 419/833/348 417/831/299 +f 419/833/348 421/834/349 417/831/299 +f 422/835/350 424/836/351 425/837/352 +f 416/832/299 427/838/353 418/839/348 +f 415/829/347 422/835/350 413/826/71 +f 412/828/71 429/840/354 414/830/347 +f 417/831/299 423/841/355 415/829/347 +f 414/830/347 426/842/356 416/832/299 +f 413/826/71 430/843/357 410/827/101 +f 411/825/101 428/844/358 412/828/71 +f 428/844/358 433/845/359 429/840/354 +f 421/834/349 424/836/351 423/841/355 +f 426/842/356 433/845/359 435/846/360 +f 420/847/361 434/848/362 421/834/349 +f 427/838/353 435/849/360 437/850/363 +f 430/843/357 425/851/352 438/852/364 +f 431/853/365 432/854/366 428/844/358 +f 441/855/367 443/856/101 440/857/367 +f 442/858/101 445/859/104 443/856/101 +f 445/859/104 446/860/368 447/861/368 +f 447/861/368 448/862/348 449/863/348 +f 448/862/348 451/864/369 449/863/348 +f 452/865/370 454/866/371 450/867/372 +f 452/868/370 457/869/373 455/870/330 +f 452/868/370 459/871/330 458/872/374 +f 455/870/330 440/857/367 459/871/330 +f 442/858/101 461/873/375 444/874/104 +f 451/864/369 463/875/376 449/863/348 +f 448/862/348 465/876/377 450/877/372 +f 447/861/368 467/878/378 445/859/104 +f 440/857/367 469/879/379 459/871/330 +f 443/856/101 468/880/380 440/857/367 +f 444/874/104 471/881/381 446/860/368 +f 455/870/330 472/882/382 441/855/367 +f 441/855/367 460/883/383 442/858/101 +f 458/872/374 462/884/384 451/885/369 +f 450/886/372 456/887/385 452/868/370 +f 449/863/348 466/888/386 447/861/368 +f 446/860/368 464/889/387 448/862/348 +f 445/859/104 470/890/388 443/856/101 +f 459/871/330 473/891/389 458/872/374 +f 467/878/378 466/888/386 474/892/58 +f 473/891/389 469/879/379 474/893/58 +f 460/883/383 475/894/390 476/895/391 +f 466/888/386 463/875/376 474/896/58 +f 469/879/379 468/880/380 474/897/58 +f 468/880/380 470/890/388 474/898/58 +f 463/875/376 462/899/384 474/900/58 +f 475/901/390 478/902/392 480/903/393 +f 470/890/388 467/878/378 474/904/58 +f 462/884/384 473/891/389 474/905/58 +f 460/883/383 482/906/394 461/873/375 +f 461/873/375 481/907/395 471/881/381 +f 471/881/381 480/908/393 464/889/387 +f 464/889/387 479/909/396 465/876/377 +f 465/910/377 478/911/392 456/887/385 +f 456/887/385 477/912/397 457/869/373 +f 457/869/373 475/913/390 472/882/382 +f 450/867/372 483/914/398 451/915/369 +f 458/916/374 453/917/399 452/865/370 +f 451/918/369 484/919/400 458/916/374 +f 485/920/401 487/921/402 488/922/403 +f 487/923/402 490/924/404 488/922/403 +f 490/924/404 491/925/405 492/926/406 +f 491/927/405 494/928/407 492/926/406 +f 493/929/408 496/930/409 494/928/407 +f 495/931/410 498/932/411 496/930/409 +f 487/923/402 500/933/412 489/934/413 +f 498/935/411 501/936/414 502/937/415 +f 502/937/415 486/938/416 485/920/401 +f 493/929/408 506/939/417 495/940/410 +f 486/938/416 504/941/418 503/942/419 +f 486/943/416 499/944/420 487/921/402 +f 491/925/405 500/945/412 508/946/421 +f 495/931/410 505/947/422 497/948/423 +f 493/949/408 508/950/421 507/951/424 +f 501/936/414 505/952/422 504/953/418 +f 509/954/425 511/955/426 512/956/427 +f 494/928/407 514/957/428 492/926/406 +f 490/924/404 510/958/429 488/922/403 +f 496/930/409 513/959/430 494/928/407 +f 485/920/401 517/960/431 502/937/415 +f 488/922/403 509/954/425 485/920/401 +f 492/926/406 515/961/432 490/924/404 +f 517/960/431 512/962/427 523/963/433 +f 524/964/434 521/965/435 516/966/436 +f 513/959/430 519/967/437 514/957/428 +f 510/958/429 518/968/438 511/969/426 +f 524/970/434 523/971/433 522/972/439 +f 516/966/436 520/973/440 513/959/430 +f 514/957/428 518/974/438 515/961/432 +f 528/975/441 529/976/442 525/977/443 +f 532/978/444 534/979/445 531/980/446 +f 535/981/447 530/982/448 536/983/449 +f 537/984/450 539/985/451 540/986/452 +f 536/987/449 529/988/442 541/989/453 +f 538/990/454 527/991/455 526/992/456 +f 534/993/445 542/994/457 535/981/447 +f 534/995/445 536/987/449 541/989/453 +f 533/996/458 543/997/459 544/998/460 +f 544/998/460 545/999/461 546/1000/462 +f 532/978/444 543/1001/463 533/1002/464 +f 542/994/457 544/1003/465 548/1004/466 +f 539/985/451 550/1005/467 540/986/452 +f 543/1001/463 551/1006/468 545/1007/71 +f 544/1003/465 552/1008/469 548/1004/466 +f 552/1008/469 554/1009/470 549/1010/471 +f 527/1011/455 531/980/446 528/1012/441 +f 535/981/447 526/1013/456 525/1014/443 +f 542/994/457 526/1013/456 535/981/447 +f 532/978/444 527/1011/455 537/1015/450 +f 538/1016/454 548/1004/466 539/1017/451 +f 532/978/444 540/1018/452 547/1019/472 +f 549/1010/471 548/1004/466 552/1008/469 +f 547/1019/472 550/1020/467 551/1006/468 +f 531/980/446 541/1021/453 529/1022/442 +f 555/1023/401 557/1024/402 558/1025/403 +f 557/1026/402 560/1027/404 558/1025/403 +f 560/1027/404 561/1028/405 562/1029/406 +f 561/1030/405 564/1031/407 562/1029/406 +f 563/1032/408 566/1033/409 564/1031/407 +f 565/1034/410 568/1035/411 566/1033/409 +f 557/1026/402 570/1036/412 559/1037/413 +f 568/1038/411 571/1039/414 572/1040/415 +f 572/1040/415 556/1041/416 555/1023/401 +f 566/1033/409 573/1042/434 574/1043/436 +f 563/1032/408 578/1044/417 565/1045/410 +f 556/1041/416 576/1046/418 575/1047/419 +f 556/1048/416 569/1049/420 557/1024/402 +f 561/1028/405 570/1050/412 580/1051/421 +f 565/1034/410 577/1052/422 567/1053/423 +f 563/1054/408 580/1055/421 579/1056/424 +f 571/1039/414 577/1057/422 576/1058/418 +f 581/1059/425 583/1060/426 584/1061/427 +f 564/1031/407 586/1062/428 562/1029/406 +f 572/1040/415 573/1063/434 568/1038/411 +f 560/1027/404 582/1064/429 558/1025/403 +f 566/1033/409 585/1065/430 564/1031/407 +f 555/1023/401 587/1066/431 572/1040/415 +f 558/1025/403 581/1059/425 555/1023/401 +f 562/1029/406 588/1067/432 560/1027/404 +f 587/1066/431 584/1068/427 594/1069/433 +f 573/1042/434 592/1070/435 574/1043/436 +f 585/1065/430 590/1071/437 586/1062/428 +f 582/1064/429 589/1072/438 583/1073/426 +f 573/1063/434 594/1074/433 593/1075/439 +f 574/1043/436 591/1076/440 585/1065/430 +f 586/1062/428 589/1077/438 588/1067/432 +f 550/1005/467 554/1078/470 595/1079/473 +f 546/1080/61 553/1081/474 552/1008/469 +f 600/1082/104 598/1083/368 597/1084/368 +f 602/1085/101 599/1086/104 600/1082/104 +f 604/1087/367 601/1088/101 602/1085/101 +f 606/1089/330 603/1090/367 604/1087/367 +f 608/1091/374 605/1092/330 606/1089/330 +f 611/1093/399 609/1094/372 607/1095/370 +f 614/1096/387 609/1097/372 612/1098/348 +f 616/1099/348 609/1097/372 615/1100/369 +f 597/1084/368 612/1098/348 616/1099/348 +f 618/1101/383 599/1086/104 601/1088/101 +f 620/1102/379 608/1091/374 606/1089/330 +f 622/1103/385 605/1092/330 607/1104/370 +f 624/1105/388 604/1087/367 602/1085/101 +f 626/1106/376 597/1084/368 616/1099/348 +f 625/1107/386 600/1082/104 597/1084/368 +f 628/1108/382 601/1088/101 603/1090/367 +f 629/1109/381 612/1098/348 598/1083/368 +f 617/1110/375 598/1083/368 599/1086/104 +f 619/1111/389 615/1100/369 608/1112/374 +f 613/1113/377 607/1114/370 609/1097/372 +f 623/1115/380 606/1089/330 604/1087/367 +f 621/1116/373 603/1090/367 605/1092/330 +f 627/1117/378 602/1085/101 600/1082/104 +f 630/1118/384 616/1099/348 615/1100/369 +f 624/1105/388 631/1119/58 623/1115/380 +f 630/1118/384 631/1120/58 626/1106/376 +f 617/1110/375 632/1121/395 629/1109/381 +f 623/1115/380 631/1122/58 620/1102/379 +f 626/1106/376 631/1123/58 625/1107/386 +f 625/1107/386 631/1124/58 627/1117/378 +f 620/1102/379 631/1125/58 619/1126/389 +f 635/1127/396 634/1128/393 632/1129/395 +f 627/1117/378 631/1130/58 624/1105/388 +f 619/1111/389 631/1131/58 630/1118/384 +f 639/1132/391 617/1110/375 618/1101/383 +f 638/1133/390 618/1101/383 628/1108/382 +f 637/1134/397 628/1108/382 621/1116/373 +f 622/1103/385 637/1135/397 621/1116/373 +f 635/1136/396 622/1137/385 613/1113/377 +f 614/1096/387 635/1138/396 613/1113/377 +f 632/1139/395 614/1096/387 629/1109/381 +f 640/1140/400 607/1095/370 608/1141/374 +f 610/1142/371 615/1143/369 609/1094/372 +f 641/1144/398 608/1145/374 615/1143/369 +f 642/1146/407 644/1147/475 643/1148/476 +f 647/1149/404 644/1150/475 645/1151/406 +f 647/1149/404 648/1152/477 646/1153/413 +f 651/1154/401 648/1155/477 649/1156/403 +f 653/1157/415 650/1158/478 651/1154/401 +f 655/1159/411 652/1160/414 653/1157/415 +f 657/1161/412 644/1150/475 646/1162/413 +f 655/1163/411 658/1164/410 654/1165/423 +f 659/1166/409 643/1167/476 658/1168/410 +f 663/1169/479 650/1158/478 652/1170/414 +f 643/1167/476 661/1171/480 658/1168/410 +f 656/1172/421 643/1148/476 644/1147/475 +f 648/1152/477 657/1173/412 646/1153/413 +f 662/1174/422 652/1160/414 654/1175/423 +f 650/1176/478 665/1177/420 648/1155/477 +f 658/1164/410 662/1178/422 654/1165/423 +f 666/1179/430 668/1180/437 667/1181/428 +f 671/1182/429 651/1154/401 649/1156/403 +f 667/1181/428 647/1149/404 645/1151/406 +f 670/1183/425 653/1157/415 651/1154/401 +f 674/1184/436 642/1146/407 659/1166/409 +f 666/1179/430 645/1151/406 642/1146/407 +f 672/1185/432 649/1156/403 647/1149/404 +f 674/1184/436 669/1186/440 666/1179/430 +f 678/1187/433 681/1188/434 673/1189/431 +f 676/1190/426 670/1183/425 671/1182/429 +f 667/1181/428 675/1191/438 672/1185/432 +f 681/1192/434 680/1193/435 674/1184/436 +f 677/1194/427 673/1189/431 670/1183/425 +f 675/1195/438 671/1182/429 672/1185/432 +f 712/1196/407 714/1197/475 713/1198/476 +f 717/1199/404 714/1200/475 715/1201/406 +f 717/1199/404 718/1202/477 716/1203/413 +f 721/1204/401 718/1205/477 719/1206/403 +f 723/1207/415 720/1208/478 721/1204/401 +f 725/1209/411 722/1210/414 723/1207/415 +f 727/1211/412 714/1200/475 716/1212/413 +f 725/1213/411 728/1214/410 724/1215/423 +f 729/1216/409 713/1217/476 728/1218/410 +f 723/1207/415 730/1219/434 725/1209/411 +f 735/1220/479 720/1208/478 722/1221/414 +f 713/1217/476 733/1222/480 728/1218/410 +f 726/1223/421 713/1198/476 714/1197/475 +f 718/1202/477 727/1224/412 716/1203/413 +f 734/1225/422 722/1210/414 724/1226/423 +f 720/1227/478 737/1228/420 718/1205/477 +f 728/1214/410 734/1229/422 724/1215/423 +f 738/1230/430 740/1231/437 739/1232/428 +f 743/1233/429 721/1204/401 719/1206/403 +f 730/1234/434 729/1216/409 725/1213/411 +f 739/1232/428 717/1199/404 715/1201/406 +f 742/1235/425 723/1207/415 721/1204/401 +f 729/1216/409 738/1230/430 712/1196/407 +f 738/1230/430 715/1201/406 712/1196/407 +f 745/1236/432 719/1206/403 717/1199/404 +f 744/1237/436 741/1238/440 738/1230/430 +f 749/1239/433 730/1219/434 731/1240/431 +f 747/1241/426 742/1235/425 743/1233/429 +f 739/1232/428 746/1242/438 745/1236/432 +f 730/1234/434 751/1243/435 744/1237/436 +f 748/1244/427 731/1240/431 742/1235/425 +f 746/1245/438 743/1233/429 745/1236/432 +f 524/964/434 496/930/409 498/932/411 +f 502/937/415 524/970/434 498/935/411 +f 659/1166/409 681/1192/434 674/1184/436 +f 653/1157/415 681/1188/434 655/1159/411 +f 166/423/95 167/426/98 168/424/96 +f 167/426/98 169/428/100 170/427/99 +f 169/428/100 171/430/102 172/429/101 +f 171/430/102 173/432/103 174/431/71 +f 173/432/103 175/434/105 176/433/104 +f 175/434/105 177/436/107 178/435/106 +f 177/436/107 179/438/109 180/437/108 +f 179/438/109 181/440/111 182/439/110 +f 181/440/111 183/442/113 184/441/112 +f 183/442/113 185/444/115 186/443/114 +f 185/444/115 187/446/117 188/445/116 +f 187/446/117 189/506/119 190/447/118 +f 189/448/119 191/451/121 192/449/120 +f 191/451/121 193/455/125 194/452/122 +f 169/428/100 167/426/98 195/453/123 +f 193/455/125 197/457/127 198/456/126 +f 197/457/127 166/423/95 165/425/97 +f 202/461/131 203/482/150 204/462/132 +f 207/464/134 208/646/153 209/465/135 +f 210/467/137 211/1246/155 212/468/138 +f 214/470/140 215/1247/154 199/471/128 +f 218/473/142 219/1248/156 220/474/143 +f 222/476/145 223/658/157 224/477/146 +f 225/479/148 210/1249/137 213/480/139 +f 203/482/150 227/497/158 228/483/151 +f 229/484/152 230/650/159 208/485/153 +f 215/487/154 231/1250/302 200/459/129 +f 211/488/155 202/1251/131 205/489/133 +f 206/491/136 209/641/135 219/492/156 +f 214/494/140 216/663/141 223/495/157 +f 217/475/144 220/474/143 228/483/151 +f 221/498/147 224/653/146 230/499/159 +f 232/501/160 233/509/167 234/502/161 +f 177/436/107 236/515/172 237/504/163 +f 187/446/117 238/516/173 239/505/164 +f 173/432/103 240/517/174 241/507/165 +f 183/442/113 242/518/175 243/508/166 +f 197/457/127 193/455/125 233/509/167 +f 171/430/102 169/428/100 196/454/124 +f 179/438/109 237/504/163 245/511/169 +f 167/426/98 166/423/95 246/512/170 +f 191/451/121 189/448/119 239/513/164 +f 175/434/105 241/507/165 236/515/172 +f 185/444/115 243/508/166 238/516/173 +f 166/423/95 197/457/127 232/501/160 +f 173/432/103 171/430/102 244/510/168 +f 181/440/111 245/511/169 242/518/175 +f 193/455/125 191/451/121 247/514/171 +f 249/519/176 250/1252/207 251/520/177 +f 237/504/163 252/536/190 253/522/179 +f 195/453/123 246/512/170 254/523/180 +f 246/512/170 232/501/160 235/503/162 +f 245/511/169 253/522/179 256/525/182 +f 196/454/124 195/453/123 255/524/181 +f 242/518/175 256/525/182 258/527/184 +f 244/510/168 196/454/124 257/526/183 +f 243/508/166 258/527/184 260/529/186 +f 240/517/174 244/510/168 259/528/185 +f 238/516/173 260/529/186 261/531/187 +f 240/517/174 249/530/176 248/532/178 +f 247/514/171 239/513/164 261/533/187 +f 241/507/165 248/532/178 263/535/189 +f 233/509/167 247/514/171 262/534/188 +f 236/515/172 263/535/189 252/536/190 +f 264/537/191 265/1253/203 266/538/192 +f 262/540/188 261/1254/187 268/541/194 +f 248/543/178 251/1255/177 270/544/196 +f 234/546/161 262/1256/188 269/547/195 +f 263/549/189 270/1257/196 272/550/198 +f 235/552/162 234/1258/161 271/553/197 +f 252/555/190 272/1259/198 274/556/200 +f 255/558/181 254/1260/180 275/559/201 +f 254/561/180 235/1261/162 273/562/199 +f 253/564/179 274/1262/200 265/565/203 +f 257/567/183 255/1263/181 276/568/202 +f 256/570/182 265/1253/203 264/537/191 +f 259/572/185 257/1264/183 277/573/204 +f 258/575/184 264/1265/191 279/576/206 +f 249/578/176 259/1266/185 278/579/205 +f 260/581/186 279/1267/206 268/582/194 +f 281/584/208 282/1268/237 283/585/209 +f 277/573/204 284/623/222 285/587/211 +f 279/576/206 264/1265/191 267/588/193 +f 278/579/205 285/627/211 287/590/213 +f 268/582/194 279/1267/206 286/591/212 +f 251/520/177 250/1252/207 287/593/213 +f 268/541/194 288/633/214 290/595/216 +f 270/544/196 251/1255/177 289/596/215 +f 269/547/195 290/637/216 281/598/208 +f 272/550/198 270/1257/196 291/599/217 +f 271/553/197 281/584/208 280/586/210 +f 274/556/200 272/1259/198 292/601/218 +f 275/559/201 294/613/221 295/603/220 +f 273/562/199 280/615/210 294/604/221 +f 265/565/203 274/1262/200 293/605/219 +f 276/568/202 295/619/220 284/607/222 +f 309/609/224 296/1269/228 297/1270/229 +f 297/1270/229 283/1271/209 309/609/224 +f 283/1271/209 282/1272/237 309/609/224 +f 282/1272/237 298/1273/235 299/1274/233 +f 299/1274/233 300/1275/232 301/610/225 +f 301/610/225 302/1276/230 305/1277/236 +f 302/1276/230 303/1278/227 305/1277/236 +f 303/1278/227 304/1279/226 305/1277/236 +f 305/1277/236 306/1280/234 307/608/223 +f 307/608/223 308/1281/231 309/609/224 +f 282/1272/237 299/1274/233 309/609/224 +f 299/1274/233 301/610/225 309/609/224 +f 305/1277/236 307/608/223 301/610/225 +f 293/602/219 292/601/218 304/611/226 +f 294/613/221 297/1282/229 296/614/228 +f 280/615/210 283/1283/209 297/616/229 +f 266/606/192 293/605/219 303/617/227 +f 295/619/220 296/1284/228 309/620/224 +f 267/539/193 266/538/192 302/621/230 +f 284/623/222 309/1285/224 308/624/231 +f 286/589/212 267/588/193 301/625/225 +f 285/627/211 308/1286/231 307/628/223 +f 288/592/214 286/591/212 300/629/232 +f 289/594/215 287/593/213 307/631/223 +f 288/633/214 299/1287/233 298/634/235 +f 291/597/217 289/596/215 306/635/234 +f 290/637/216 298/1288/235 282/638/237 +f 292/600/218 291/599/217 305/639/236 +f 314/675/241 315/714/247 316/676/242 +f 311/673/239 321/695/258 322/683/248 +f 313/677/243 316/676/242 318/679/245 +f 325/686/251 326/690/255 327/687/252 +f 325/686/251 322/1289/248 328/689/254 +f 323/685/250 318/679/245 324/691/253 +f 317/678/244 320/684/270 322/683/248 +f 330/694/257 331/707/264 321/695/258 +f 318/679/245 317/678/244 325/693/251 +f 321/699/258 333/703/262 334/700/260 +f 321/699/258 331/1290/264 335/702/261 +f 323/685/250 329/692/256 331/707/264 +f 330/694/257 337/709/265 313/677/243 +f 337/709/265 310/672/238 314/675/241 +f 332/698/259 336/706/263 339/710/71 +f 336/706/263 338/712/267 339/710/71 +f 334/705/260 333/1291/262 338/712/267 +f 328/696/254 332/698/259 340/711/266 +f 343/718/272 344/729/283 345/719/273 +f 347/721/275 348/727/281 349/722/276 +f 350/724/278 351/728/282 352/725/279 +f 342/720/274 349/722/276 348/727/281 +f 351/728/282 350/724/278 345/719/273 +f 350/1292/284 353/1293/284 346/1294/284 +f 353/1293/284 354/1295/284 346/1294/284 +f 346/1294/284 349/730/284 350/1292/284 +f 350/1292/284 349/730/284 345/719/284 +f 354/731/285 355/1296/481 347/721/275 +f 352/725/279 355/1297/482 354/732/286 +f 357/733/287 358/744/298 359/734/288 +f 361/736/290 362/742/296 363/737/291 +f 364/739/293 365/743/297 366/740/294 +f 356/735/289 363/737/291 362/742/296 +f 365/743/297 364/739/293 359/734/288 +f 364/1298/299 367/1299/299 360/1300/299 +f 367/1299/299 368/1301/299 360/1300/299 +f 360/1300/299 363/745/299 364/1298/299 +f 364/1298/299 363/745/299 359/734/299 +f 368/746/300 369/1302/483 361/736/290 +f 366/740/294 369/1303/484 368/747/301 +f 231/748/302 225/1304/148 226/644/149 +f 218/749/303 217/771/309 370/750/304 +f 182/439/110 207/1305/134 206/752/136 +f 165/425/97 168/424/96 211/753/155 +f 190/450/118 192/449/120 215/755/154 +f 203/757/305 372/764/308 373/758/306 +f 188/445/116 222/770/145 221/760/147 +f 198/456/126 165/425/97 210/761/137 +f 202/763/307 374/1306/307 372/764/308 +f 184/441/112 229/1307/152 207/765/134 +f 192/449/120 194/452/122 231/766/302 +f 168/424/96 170/427/99 202/767/131 +f 180/437/108 206/1308/136 218/769/142 +f 190/447/118 214/1309/140 222/770/145 +f 217/771/309 227/759/306 373/758/306 +f 186/443/114 221/1310/147 229/772/152 +f 194/452/122 198/456/126 225/773/148 +f 375/775/310 376/781/316 372/776/311 +f 378/778/313 371/1311/485 370/779/314 +f 376/781/316 379/783/158 373/782/317 +f 377/780/315 370/779/314 373/782/317 +f 178/784/318 378/1312/325 377/785/319 +f 176/786/320 377/785/319 379/787/321 +f 172/789/322 174/788/321 379/787/321 +f 178/791/318 218/1313/324 371/792/324 +f 170/794/326 375/1314/328 374/795/327 +f 170/797/326 172/789/322 376/790/323 +f 383/799/71 382/803/71 381/800/104 +f 385/802/329 384/805/329 382/803/71 +f 387/804/284 386/807/284 384/805/329 +f 389/806/330 388/812/330 386/807/284 +f 391/808/331 390/819/341 389/806/330 +f 392/809/332 395/1315/344 394/810/333 +f 388/812/330 397/820/342 396/813/335 +f 392/809/332 393/811/334 385/802/329 +f 399/814/336 398/816/338 382/803/71 +f 393/811/334 391/808/331 387/804/284 +f 396/813/335 399/814/336 384/805/329 +f 400/815/337 392/809/332 383/799/71 +f 398/816/338 401/824/346 381/800/104 +f 403/817/339 402/1316/345 398/816/338 +f 394/810/333 404/1317/340 391/808/331 +f 396/813/335 405/1318/343 403/817/339 +f 404/818/340 406/1319/486 390/819/341 +f 397/820/342 407/1320/487 405/821/343 +f 400/815/337 408/1321/488 395/822/344 +f 402/823/345 409/1322/489 401/824/346 +f 411/825/101 412/828/71 413/826/71 +f 412/828/71 414/830/347 415/829/347 +f 414/830/347 416/832/299 417/831/299 +f 416/832/299 418/839/348 419/833/348 +f 419/833/348 420/847/361 421/834/349 +f 422/835/350 423/841/355 424/836/351 +f 416/832/299 426/842/356 427/838/353 +f 415/829/347 423/841/355 422/835/350 +f 412/828/71 428/844/358 429/840/354 +f 417/831/299 421/834/349 423/841/355 +f 414/830/347 429/840/354 426/842/356 +f 413/826/71 422/835/350 430/843/357 +f 411/825/101 431/853/365 428/844/358 +f 428/844/358 432/1323/366 433/845/359 +f 421/834/349 434/1324/362 424/836/351 +f 426/842/356 429/840/354 433/845/359 +f 420/847/361 436/1325/490 434/848/362 +f 427/838/353 426/842/356 435/849/360 +f 430/843/357 422/835/350 425/851/352 +f 431/853/365 439/1326/491 432/854/366 +f 441/855/367 442/858/101 443/856/101 +f 442/858/101 444/874/104 445/859/104 +f 445/859/104 444/874/104 446/860/368 +f 447/861/368 446/860/368 448/862/348 +f 448/862/348 450/877/372 451/864/369 +f 452/865/370 453/917/399 454/866/371 +f 452/868/370 456/887/385 457/869/373 +f 452/868/370 455/870/330 459/871/330 +f 455/870/330 441/855/367 440/857/367 +f 442/858/101 460/883/383 461/873/375 +f 451/864/369 462/899/384 463/875/376 +f 448/862/348 464/889/387 465/876/377 +f 447/861/368 466/888/386 467/878/378 +f 440/857/367 468/880/380 469/879/379 +f 443/856/101 470/890/388 468/880/380 +f 444/874/104 461/873/375 471/881/381 +f 455/870/330 457/869/373 472/882/382 +f 441/855/367 472/882/382 460/883/383 +f 458/872/374 473/891/389 462/884/384 +f 450/886/372 465/910/377 456/887/385 +f 449/863/348 463/875/376 466/888/386 +f 446/860/368 471/881/381 464/889/387 +f 445/859/104 467/878/378 470/890/388 +f 459/871/330 469/879/379 473/891/389 +f 460/883/383 472/882/382 475/894/390 +f 482/1327/394 476/1328/391 475/901/390 +f 475/901/390 477/1329/397 478/902/392 +f 478/902/392 479/1330/396 480/903/393 +f 480/903/393 481/1331/395 482/1327/394 +f 482/1327/394 475/901/390 480/903/393 +f 460/883/383 476/1332/391 482/906/394 +f 461/873/375 482/1333/394 481/907/395 +f 471/881/381 481/1334/395 480/908/393 +f 464/889/387 480/1335/393 479/909/396 +f 465/910/377 479/1336/396 478/911/392 +f 456/887/385 478/1337/392 477/912/397 +f 457/869/373 477/1338/397 475/913/390 +f 450/867/372 454/866/371 483/914/398 +f 458/916/374 484/919/400 453/917/399 +f 451/918/369 483/1339/398 484/919/400 +f 485/920/401 486/943/416 487/921/402 +f 487/923/402 489/934/413 490/924/404 +f 490/924/404 489/1340/413 491/925/405 +f 491/927/405 493/949/408 494/928/407 +f 493/929/408 495/940/410 496/930/409 +f 495/931/410 497/948/423 498/932/411 +f 487/923/402 499/1341/420 500/933/412 +f 498/935/411 497/1342/423 501/936/414 +f 502/937/415 501/1343/414 486/938/416 +f 493/929/408 507/1344/424 506/939/417 +f 486/938/416 501/1343/414 504/941/418 +f 486/943/416 503/1345/419 499/944/420 +f 491/925/405 489/1340/413 500/945/412 +f 495/931/410 506/1346/417 505/947/422 +f 493/949/408 491/927/405 508/950/421 +f 501/936/414 497/1342/423 505/952/422 +f 509/954/425 510/958/429 511/955/426 +f 494/928/407 513/959/430 514/957/428 +f 490/924/404 515/961/432 510/958/429 +f 496/930/409 516/966/436 513/959/430 +f 485/920/401 509/954/425 517/960/431 +f 488/922/403 510/958/429 509/954/425 +f 492/926/406 514/957/428 515/961/432 +f 517/960/431 509/954/425 512/962/427 +f 524/964/434 522/1347/439 521/965/435 +f 513/959/430 520/1348/440 519/967/437 +f 510/958/429 515/961/432 518/968/438 +f 524/970/434 517/960/431 523/971/433 +f 516/966/436 521/1349/435 520/973/440 +f 514/957/428 519/1350/437 518/974/438 +f 530/1351/448 525/977/443 529/976/442 +f 525/977/443 526/1352/456 528/975/441 +f 526/1352/456 527/1353/455 528/975/441 +f 532/978/444 533/1002/464 534/979/445 +f 536/983/449 534/993/445 535/981/447 +f 535/981/447 525/1014/443 530/982/448 +f 537/984/450 538/990/454 539/985/451 +f 536/987/449 530/1354/448 529/988/442 +f 538/990/454 537/984/450 527/991/455 +f 534/993/445 533/1355/492 542/994/457 +f 544/998/460 543/997/459 545/999/461 +f 532/978/444 547/1019/472 543/1001/463 +f 542/994/457 533/1355/492 544/1003/465 +f 539/985/451 549/1356/471 550/1005/467 +f 543/1001/463 547/1019/472 551/1006/468 +f 544/1003/465 546/1080/61 552/1008/469 +f 552/1008/469 553/1081/474 554/1009/470 +f 542/994/457 538/1016/454 526/1013/456 +f 532/978/444 531/980/446 527/1011/455 +f 538/1016/454 542/994/457 548/1004/466 +f 532/978/444 537/1015/450 540/1018/452 +f 549/1010/471 539/1017/451 548/1004/466 +f 547/1019/472 540/1018/452 550/1020/467 +f 529/1022/442 528/1012/441 531/980/446 +f 531/980/446 534/979/445 541/1021/453 +f 555/1023/401 556/1048/416 557/1024/402 +f 557/1026/402 559/1037/413 560/1027/404 +f 560/1027/404 559/1357/413 561/1028/405 +f 561/1030/405 563/1054/408 564/1031/407 +f 563/1032/408 565/1045/410 566/1033/409 +f 565/1034/410 567/1053/423 568/1035/411 +f 557/1026/402 569/1358/420 570/1036/412 +f 568/1038/411 567/1359/423 571/1039/414 +f 572/1040/415 571/1360/414 556/1041/416 +f 566/1033/409 568/1035/411 573/1042/434 +f 563/1032/408 579/1361/424 578/1044/417 +f 556/1041/416 571/1360/414 576/1046/418 +f 556/1048/416 575/1362/419 569/1049/420 +f 561/1028/405 559/1357/413 570/1050/412 +f 565/1034/410 578/1363/417 577/1052/422 +f 563/1054/408 561/1030/405 580/1055/421 +f 571/1039/414 567/1359/423 577/1057/422 +f 581/1059/425 582/1064/429 583/1060/426 +f 564/1031/407 585/1065/430 586/1062/428 +f 572/1040/415 587/1066/431 573/1063/434 +f 560/1027/404 588/1067/432 582/1064/429 +f 566/1033/409 574/1043/436 585/1065/430 +f 555/1023/401 581/1059/425 587/1066/431 +f 558/1025/403 582/1064/429 581/1059/425 +f 562/1029/406 586/1062/428 588/1067/432 +f 587/1066/431 581/1059/425 584/1068/427 +f 573/1042/434 593/1364/439 592/1070/435 +f 585/1065/430 591/1365/440 590/1071/437 +f 582/1064/429 588/1067/432 589/1072/438 +f 573/1063/434 587/1066/431 594/1074/433 +f 574/1043/436 592/1366/435 591/1076/440 +f 586/1062/428 590/1367/437 589/1077/438 +f 550/1005/467 549/1356/471 554/1078/470 +f 546/1080/61 596/1368/61 553/1081/474 +f 600/1082/104 599/1086/104 598/1083/368 +f 602/1085/101 601/1088/101 599/1086/104 +f 604/1087/367 603/1090/367 601/1088/101 +f 606/1089/330 605/1092/330 603/1090/367 +f 608/1091/374 607/1104/370 605/1092/330 +f 611/1093/399 610/1142/371 609/1094/372 +f 614/1096/387 613/1113/377 609/1097/372 +f 616/1099/348 612/1098/348 609/1097/372 +f 597/1084/368 598/1083/368 612/1098/348 +f 618/1101/383 617/1110/375 599/1086/104 +f 620/1102/379 619/1126/389 608/1091/374 +f 622/1103/385 621/1116/373 605/1092/330 +f 624/1105/388 623/1115/380 604/1087/367 +f 626/1106/376 625/1107/386 597/1084/368 +f 625/1107/386 627/1117/378 600/1082/104 +f 628/1108/382 618/1101/383 601/1088/101 +f 629/1109/381 614/1096/387 612/1098/348 +f 617/1110/375 629/1109/381 598/1083/368 +f 619/1111/389 630/1118/384 615/1100/369 +f 613/1113/377 622/1137/385 607/1114/370 +f 623/1115/380 620/1102/379 606/1089/330 +f 621/1116/373 628/1108/382 603/1090/367 +f 627/1117/378 624/1105/388 602/1085/101 +f 630/1118/384 626/1106/376 616/1099/348 +f 617/1110/375 633/1369/394 632/1121/395 +f 632/1129/395 633/1370/394 639/1371/391 +f 639/1371/391 638/1372/390 632/1129/395 +f 638/1372/390 637/1373/397 632/1129/395 +f 637/1373/397 636/1374/392 632/1129/395 +f 636/1374/392 635/1127/396 632/1129/395 +f 639/1132/391 633/1375/394 617/1110/375 +f 638/1133/390 639/1376/391 618/1101/383 +f 637/1134/397 638/1377/390 628/1108/382 +f 622/1103/385 636/1378/392 637/1135/397 +f 635/1136/396 636/1379/392 622/1137/385 +f 614/1096/387 634/1380/393 635/1138/396 +f 632/1139/395 634/1381/393 614/1096/387 +f 640/1140/400 611/1093/399 607/1095/370 +f 610/1142/371 641/1144/398 615/1143/369 +f 641/1144/398 640/1382/400 608/1145/374 +f 642/1146/407 645/1151/406 644/1147/475 +f 647/1149/404 646/1162/413 644/1150/475 +f 647/1149/404 649/1156/403 648/1152/477 +f 651/1154/401 650/1176/478 648/1155/477 +f 653/1157/415 652/1170/414 650/1158/478 +f 655/1159/411 654/1175/423 652/1160/414 +f 657/1161/412 656/1383/421 644/1150/475 +f 655/1163/411 659/1166/409 658/1164/410 +f 659/1166/409 642/1146/407 643/1167/476 +f 663/1169/479 664/1384/493 650/1158/478 +f 643/1167/476 660/1385/494 661/1171/480 +f 656/1172/421 660/1386/494 643/1148/476 +f 648/1152/477 665/1387/420 657/1173/412 +f 662/1174/422 663/1388/479 652/1160/414 +f 650/1176/478 664/1389/493 665/1177/420 +f 658/1164/410 661/1390/480 662/1178/422 +f 666/1179/430 669/1391/440 668/1180/437 +f 671/1182/429 670/1183/425 651/1154/401 +f 667/1181/428 672/1185/432 647/1149/404 +f 670/1183/425 673/1189/431 653/1157/415 +f 674/1184/436 666/1179/430 642/1146/407 +f 666/1179/430 667/1181/428 645/1151/406 +f 672/1185/432 671/1182/429 649/1156/403 +f 674/1184/436 680/1392/435 669/1186/440 +f 678/1187/433 679/1393/439 681/1188/434 +f 676/1190/426 677/1394/427 670/1183/425 +f 667/1181/428 668/1395/437 675/1191/438 +f 681/1192/434 679/1396/439 680/1193/435 +f 677/1194/427 678/1397/433 673/1189/431 +f 675/1195/438 676/1398/426 671/1182/429 +f 712/1196/407 715/1201/406 714/1197/475 +f 717/1199/404 716/1212/413 714/1200/475 +f 717/1199/404 719/1206/403 718/1202/477 +f 721/1204/401 720/1227/478 718/1205/477 +f 723/1207/415 722/1221/414 720/1208/478 +f 725/1209/411 724/1226/423 722/1210/414 +f 727/1211/412 726/1399/421 714/1200/475 +f 725/1213/411 729/1216/409 728/1214/410 +f 729/1216/409 712/1196/407 713/1217/476 +f 723/1207/415 731/1240/431 730/1219/434 +f 735/1220/479 736/1400/493 720/1208/478 +f 713/1217/476 732/1401/494 733/1222/480 +f 726/1223/421 732/1402/494 713/1198/476 +f 718/1202/477 737/1403/420 727/1224/412 +f 734/1225/422 735/1404/479 722/1210/414 +f 720/1227/478 736/1405/493 737/1228/420 +f 728/1214/410 733/1406/480 734/1229/422 +f 738/1230/430 741/1407/440 740/1231/437 +f 743/1233/429 742/1235/425 721/1204/401 +f 730/1234/434 744/1237/436 729/1216/409 +f 739/1232/428 745/1236/432 717/1199/404 +f 742/1235/425 731/1240/431 723/1207/415 +f 729/1216/409 744/1237/436 738/1230/430 +f 738/1230/430 739/1232/428 715/1201/406 +f 745/1236/432 743/1233/429 719/1206/403 +f 744/1237/436 751/1408/435 741/1238/440 +f 749/1239/433 750/1409/439 730/1219/434 +f 747/1241/426 748/1410/427 742/1235/425 +f 739/1232/428 740/1411/437 746/1242/438 +f 730/1234/434 750/1412/439 751/1243/435 +f 748/1244/427 749/1413/433 731/1240/431 +f 746/1245/438 747/1414/426 743/1233/429 +f 524/964/434 516/966/436 496/930/409 +f 502/937/415 517/960/431 524/970/434 +f 659/1166/409 655/1163/411 681/1192/434 +f 653/1157/415 673/1189/431 681/1188/434 diff --git a/src/main/resources/assets/hbm/textures/models/ModelFolly.png b/src/main/resources/assets/hbm/textures/models/ModelFolly.png deleted file mode 100644 index 065460dca1ab901c8e31c438c7478baa45528506..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 895 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 diff --git a/src/main/resources/assets/hbm/textures/models/weapons/c130_0.png b/src/main/resources/assets/hbm/textures/models/weapons/c130_0.png new file mode 100644 index 0000000000000000000000000000000000000000..04729bcdfafe227c0f60ae408f7d759ea6b6b328 GIT binary patch literal 2955 zcmbtWdpuOz9-lIpnHYPJM|o_I$VnLDXZ`kXt@T~&`}^&^e!t&J+v035 zNm@n1;c$`+I?WA-69I9!nm(=^st+spT|@*zu3*&YW^WEDJjX?+8P_uzaFE9O%TKA%t#!L+_=z|Z4`Ca#NkNK z88pZv_VLJ*U3u25z#KJ9XiiK$_>h2qlpgB0 zpXgX%_2c%pue-Z95+RdI8+rN-g~!3d1=u2%mGo)#ZDEvA4@FaPVKl#{xFw#Ljd>Un zop&hXvz>yCy!B#Gj-wdlgQwU6R6KCm)d-l5up7%jxKemX~+(m@}F@ZXU3& zHNeMgP>rs>0`byn?NP|~l!rM5E4fwfnJ)3ZDs3{Q+1*@&>cL!Pm}44?iu1X_aBM+w zy7**JZ@bB{LDM@HT>eDSOnch!sWo^?M1P$w91_d~__r$ce~HpvJr~F6_+Ep)*CqVy z;%8AZrDw5UXd*KucA7sLO5JOA^c66X{O{nOBABKSx=AmUUjnKstoN%hy4Kwg!I56i zD{@iiod*m5l&h#1-CFNcZgr=8Dyep>{$wiA1~46ieMV;ddWT2KyT-xZRYy#cpoCZV z_oOE8mMxtwE73Qy>SnL$3Lf1R8M@M#Ak(bv_j+}Mis=c@n#L0~zu5+bqeJ8);Id15 znlligyD$}8k!KJk<<{$M426VM*r9c@&{fYT_V0=9JY9z}C@@1ULqvR$K z^)fvf9ay-*y~d0_IckY`_=uGu548w}?p&~gAWh}vW~COH^Ckv1wfx!;NHpIjn;gfR ztF5iYbamcg(cv_3o!muj_`KKkVuj9KS_o)-EWAIC)92oO*TP+!&cah7Pf$yr8-@ux zddy?w1h(8#g5kR>^+67m$)~MR1BZj)&fH8S_4JFUJI{r`H)fGI<2y*1@~n@ECzivG z32c@r~;3nGP}U%gyfAQJUWn^D)ue?9Fvyyd%mI#tWER zS>D6tIy+Ph4=B0e zAdhD@rYm0&c{fT8V%|RA>*;>of;F^GBcSYurP~Z=w%F#b53v76=V)n*?a-tv3MVto z$SS$3?D?n;*ox?Yyszzanf$4m@GR9+?~J?Tyv>~3UJXnFn!k65xhfkG)B}6LY^ybw zAb{~3b6;WX1u(|hDYSd5Smm&(r0P|E>q}hz&0vtuUu+MDboo{NQAHMnGxh!xuz|Zg z798f=eLB}KM9R^qr_hs#{;2)ByrX49&LYsZPc4AX*BRU`k6eX&E{8uZ?EE06L3bOF zR5x?)HRrtf!v=7277QXA`p9`bmwzW`&uY4Uw>h*(2>^E zwh!SmptHm~z^Q&ctL(zBHUGfkc{Fq;N0~_|Va(6WD#AH-t`fa3SRo4BD%W(_qbNB` z>~_QymKm|L&<9%PX26iIgFfZ}sRiAsnWYhP_4rvbBB9o~;o9pIrMjh_O z(}bgv5eK~YNIWv+uuCLPPLb!1a$69uy{&J#7vnW5djcuRU?oHRnO=FvNV-EBRNv1k zvg8e3V6#o67+D2ZOMAMc`<^<=Laa`4dQ9$1vS8dmqMi3V_KMO(H*mPgikg%4CBx*M z?*1umE%}GDR$eNHeO%)83xzFIQ#_>ue><$q8KBB19;%Z2ltLHt=zkaV<##mj^S)C_ zO(*YcCwFUn$-10J2E4w!@KzI%rKMysqi|Q)WHOgllK&_yi(M^0AY1Uo)Ngrqwb%{0 zzgZes4mNM6-DGp`bKxz=LH}w*IQF*AT>PsW`M<*nB=CFItw~IY-oPKzrWc3@)Is>jt zYp7!t80mQpZQlI%{P&Rj6c=f487Iqwfei*IOg43Nubrd^aki^g30$|$rE0a5Vcumj==oj!PrSzB` zn%!cnUP!8Xy}&CW9pHpl)S##CV&cd0Nlm}1Fbz1&=*eHSO}SGWctOR{(oa}`R!X=i zBFq9A$;kczy>*AqK(YP)`)`0#A7=`{F(=WTDwuV2%d?B@mc$5K^i{F=Gp6>vLr7RS zHEjoQVXBNm9&eb(C^w;*GYaF|tY#A)V9x3)X*MnTUp1ERjK&o!tL-{X<)z&klIBg7aR?O@>4Ydvh+^O_7!4r85c39DW%OXW8hez)E4+6 zlaUY$eNCRl4RG(10}D{`v`@%ykfredty|_62bDW3(PaJ-R-X z5wqp7{Qe9VvMbWL@{JBb+8Uq+BeElFT~OIg&}LZEnAEOLU*&@QnJEX;y6%Y7fo$`D z3dBGvO&2Jw?PXImFNdRABuIKJOAXJ!qPiIW?72T_uE5MQ{uoj0O5+U+%_?hjO08TT z#x9|Mc`i~1=A=yaB{p9dZL7v+$!sr1ppz5sJ4`2hMz^~kThJJG&a?|QJK%o-N`j

Date: Sun, 1 Dec 2024 20:10:43 +0100 Subject: [PATCH 10/24] ouugh --- .../java/com/hbm/entity/logic/EntityC130.java | 1 + .../java/com/hbm/itempool/ItemPoolsC130.java | 16 +++++ src/main/java/com/hbm/items/ModItems.java | 2 + .../sedna/factory/GunFactoryClient.java | 5 +- .../weapon/sedna/factory/LegoClient.java | 4 ++ .../weapon/sedna/factory/Orchestras.java | 3 + .../weapon/sedna/factory/XFactory762mm.java | 22 ++++++- .../weapon/sedna/factory/XFactoryEnergy.java | 2 - .../java/com/hbm/main/ResourceManager.java | 1 + .../item/weapon/sedna/ItemRenderMinigun.java | 11 +++- .../com/hbm/util/DamageResistanceHandler.java | 56 +++++++++++++++--- src/main/resources/assets/hbm/lang/de_DE.lang | 4 ++ src/main/resources/assets/hbm/lang/en_US.lang | 4 ++ .../models/weapons/minigun_lacunae.png | Bin 0 -> 10199 bytes 14 files changed, 116 insertions(+), 15 deletions(-) create mode 100644 src/main/resources/assets/hbm/textures/models/weapons/minigun_lacunae.png diff --git a/src/main/java/com/hbm/entity/logic/EntityC130.java b/src/main/java/com/hbm/entity/logic/EntityC130.java index a99521945..0b0927845 100644 --- a/src/main/java/com/hbm/entity/logic/EntityC130.java +++ b/src/main/java/com/hbm/entity/logic/EntityC130.java @@ -52,6 +52,7 @@ public class EntityC130 extends EntityPlaneBase { if(this.payload == C130PayloadType.WEAPONS) { int amount = 1 + rand.nextInt(2); for(int i = 0; i < amount; i++) crate.items.add(ItemPool.getStack(ItemPoolsC130.POOL_WEAPONS, this.rand)); + for(int i = 0; i < 6; i++) crate.items.add(ItemPool.getStack(ItemPoolsC130.POOL_AMMO, this.rand)); } worldObj.spawnEntityInWorld(crate); diff --git a/src/main/java/com/hbm/itempool/ItemPoolsC130.java b/src/main/java/com/hbm/itempool/ItemPoolsC130.java index 4fbfd11ac..d7b19dc98 100644 --- a/src/main/java/com/hbm/itempool/ItemPoolsC130.java +++ b/src/main/java/com/hbm/itempool/ItemPoolsC130.java @@ -5,6 +5,7 @@ import static com.hbm.lib.HbmChestContents.weighted; import com.hbm.blocks.ModBlocks; import com.hbm.inventory.fluid.Fluids; import com.hbm.items.ModItems; +import com.hbm.items.weapon.sedna.factory.GunFactory.EnumAmmo; import net.minecraft.util.WeightedRandomChestContent; @@ -12,6 +13,7 @@ public class ItemPoolsC130 { public static final String POOL_SUPPLIES = "POOL_SUPPLIES"; public static final String POOL_WEAPONS = "POOL_WEAPONS"; + public static final String POOL_AMMO = "POOL_AMMO"; public static void init() { @@ -39,5 +41,19 @@ public class ItemPoolsC130 { weighted(ModItems.gun_panzerschreck, 0, 1, 1, 2), }; }}; + + new ItemPool(POOL_AMMO) {{ + this.pool = new WeightedRandomChestContent[] { + weighted(ModItems.ammo_standard, EnumAmmo.M357_SP.ordinal(), 12, 12, 10), + weighted(ModItems.ammo_standard, EnumAmmo.M357_FMJ.ordinal(), 6, 6, 10), + weighted(ModItems.ammo_standard, EnumAmmo.M44_SP.ordinal(), 12, 12, 5), + weighted(ModItems.ammo_standard, EnumAmmo.M44_FMJ.ordinal(), 6, 6, 5), + weighted(ModItems.ammo_standard, EnumAmmo.P9_SP.ordinal(), 12, 12, 10), + weighted(ModItems.ammo_standard, EnumAmmo.P9_FMJ.ordinal(), 6, 6, 10), + weighted(ModItems.ammo_standard, EnumAmmo.R762_SP.ordinal(), 6, 6, 5), + weighted(ModItems.ammo_standard, EnumAmmo.G12_BP.ordinal(), 6, 6, 10), + weighted(ModItems.ammo_standard, EnumAmmo.ROCKET_HE.ordinal(), 1, 1, 3), + }; + }}; } } diff --git a/src/main/java/com/hbm/items/ModItems.java b/src/main/java/com/hbm/items/ModItems.java index 4e94fb6a1..3ba70a540 100644 --- a/src/main/java/com/hbm/items/ModItems.java +++ b/src/main/java/com/hbm/items/ModItems.java @@ -1617,6 +1617,7 @@ public class ModItems { public static Item gun_quadro; public static Item gun_lag; public static Item gun_minigun; + public static Item gun_minigun_lacunae; public static Item gun_missile_launcher; public static Item gun_tesla_cannon; public static Item gun_stg77; @@ -6915,6 +6916,7 @@ public class ModItems { GameRegistry.registerItem(gun_quadro, gun_quadro.getUnlocalizedName()); GameRegistry.registerItem(gun_lag, gun_lag.getUnlocalizedName()); GameRegistry.registerItem(gun_minigun, gun_minigun.getUnlocalizedName()); + GameRegistry.registerItem(gun_minigun_lacunae, gun_minigun_lacunae.getUnlocalizedName()); GameRegistry.registerItem(gun_missile_launcher, gun_missile_launcher.getUnlocalizedName()); GameRegistry.registerItem(gun_tesla_cannon, gun_tesla_cannon.getUnlocalizedName()); GameRegistry.registerItem(gun_stg77, gun_stg77.getUnlocalizedName()); diff --git a/src/main/java/com/hbm/items/weapon/sedna/factory/GunFactoryClient.java b/src/main/java/com/hbm/items/weapon/sedna/factory/GunFactoryClient.java index f9afb903a..998133113 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/factory/GunFactoryClient.java +++ b/src/main/java/com/hbm/items/weapon/sedna/factory/GunFactoryClient.java @@ -65,7 +65,8 @@ public class GunFactoryClient { MinecraftForgeClient.registerItemRenderer(ModItems.gun_autoshotgun, new ItemRenderShredder(ResourceManager.shredder_tex)); MinecraftForgeClient.registerItemRenderer(ModItems.gun_autoshotgun_sexy, new ItemRenderShredder(ResourceManager.sexy_tex)); MinecraftForgeClient.registerItemRenderer(ModItems.gun_quadro, new ItemRenderQuadro()); - MinecraftForgeClient.registerItemRenderer(ModItems.gun_minigun, new ItemRenderMinigun()); + MinecraftForgeClient.registerItemRenderer(ModItems.gun_minigun, new ItemRenderMinigun(ResourceManager.minigun_tex)); + MinecraftForgeClient.registerItemRenderer(ModItems.gun_minigun_lacunae, new ItemRenderMinigun(ResourceManager.minigun_lacunae_tex)); MinecraftForgeClient.registerItemRenderer(ModItems.gun_missile_launcher, new ItemRenderMissileLauncher()); MinecraftForgeClient.registerItemRenderer(ModItems.gun_tesla_cannon, new ItemRenderTeslaCannon()); MinecraftForgeClient.registerItemRenderer(ModItems.gun_stg77, new ItemRenderSTG77()); @@ -161,6 +162,7 @@ public class GunFactoryClient { setRendererBulkBeam(LegoClient.RENDER_TAU, tau_uranium); setRendererBulkBeam(LegoClient.RENDER_TAU_CHARGE, tau_uranium_charge); setRendererBulkBeam(LegoClient.RENDER_LASER_RED, energy_las, energy_las_overcharge); + setRendererBulkBeam(LegoClient.RENDER_LASER_PURPLE, energy_lacunae, energy_lacunae_overcharge); setRendererBulk(LegoClient.RENDER_AP_BULLET, coil_tungsten, coil_ferrouranium); @@ -197,6 +199,7 @@ public class GunFactoryClient { ((ItemGunBaseNT) ModItems.gun_quadro) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO); ((ItemGunBaseNT) ModItems.gun_lag) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO); ((ItemGunBaseNT) ModItems.gun_minigun) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO); + ((ItemGunBaseNT) ModItems.gun_minigun_lacunae) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO); ((ItemGunBaseNT) ModItems.gun_missile_launcher) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO); ((ItemGunBaseNT) ModItems.gun_tesla_cannon) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO); ((ItemGunBaseNT) ModItems.gun_stg77) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO); diff --git a/src/main/java/com/hbm/items/weapon/sedna/factory/LegoClient.java b/src/main/java/com/hbm/items/weapon/sedna/factory/LegoClient.java index 464f727fc..a0a2c8bbb 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/factory/LegoClient.java +++ b/src/main/java/com/hbm/items/weapon/sedna/factory/LegoClient.java @@ -323,6 +323,10 @@ public class LegoClient { renderStandardLaser(bullet, interp, 0x80, 0x15, 0x15); }; + public static BiConsumer RENDER_LASER_PURPLE = (bullet, interp) -> { + renderStandardLaser(bullet, interp, 0x60, 0x15, 0x80); + }; + public static void renderStandardLaser(EntityBulletBeamBase bullet, float interp, int r, int g, int b) { RenderArcFurnace.fullbright(true); diff --git a/src/main/java/com/hbm/items/weapon/sedna/factory/Orchestras.java b/src/main/java/com/hbm/items/weapon/sedna/factory/Orchestras.java index 138ef08d1..dcacf6a52 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/factory/Orchestras.java +++ b/src/main/java/com/hbm/items/weapon/sedna/factory/Orchestras.java @@ -895,6 +895,9 @@ public class Orchestras { if(timer == 0) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.dryFireClick", 1F, 0.75F); if(timer == 1) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.revolverSpin", 1F, 0.75F); } + if(type == AnimType.RELOAD) { + if(timer == 0) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.revolverSpin", 1F, 0.75F); + } if(type == AnimType.INSPECT) { if(timer == 0) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.revolverSpin", 1F, 0.75F); } diff --git a/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory762mm.java b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory762mm.java index 31b227d53..de794e781 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory762mm.java +++ b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory762mm.java @@ -21,6 +21,7 @@ import com.hbm.render.anim.BusAnimation; import com.hbm.render.anim.BusAnimationSequence; import com.hbm.render.anim.BusAnimationKeyframe.IType; import com.hbm.render.anim.HbmAnimations.AnimType; +import com.hbm.util.DamageResistanceHandler.DamageClass; import net.minecraft.item.ItemStack; @@ -32,6 +33,9 @@ public class XFactory762mm { public static BulletConfig r762_ap; public static BulletConfig r762_du; + public static BulletConfig energy_lacunae; + public static BulletConfig energy_lacunae_overcharge; + public static void init() { SpentCasing casing762 = new SpentCasing(CasingType.BOTTLENECK).setColor(SpentCasing.COLOR_CASE_BRASS); r762_sp = new BulletConfig().setItem(EnumAmmo.R762_SP) @@ -44,6 +48,9 @@ public class XFactory762mm { .setCasing(casing762.clone().setColor(SpentCasing.COLOR_CASE_44).register("r762ap")); r762_du = new BulletConfig().setItem(EnumAmmo.R762_DU).setDoesPenetrate(true).setDamageFalloutByPen(false).setDamage(2.5F).setArmorPiercing(0.25F) .setCasing(casing762.clone().setColor(SpentCasing.COLOR_CASE_44).register("r762du")); + + energy_lacunae = new BulletConfig().setItem(EnumAmmo.CAPACITOR).setupDamageClass(DamageClass.LASER).setBeam().setReloadCount(40).setSpread(0.0F).setLife(5).setRenderRotations(false).setOnBeamImpact(BulletConfig.LAMBDA_STANDARD_BEAM_HIT); + energy_lacunae_overcharge = new BulletConfig().setItem(EnumAmmo.CAPACITOR_OVERCHARGE).setupDamageClass(DamageClass.LASER).setBeam().setReloadCount(40).setSpread(0.0F).setLife(5).setRenderRotations(false).setDoesPenetrate(true).setOnBeamImpact(BulletConfig.LAMBDA_STANDARD_BEAM_HIT); ModItems.gun_carbine = new ItemGunBaseNT(WeaponQuality.A_SIDE, new GunConfig() .dura(3_000).draw(10).inspect(31).reloadSequential(true).crosshair(Crosshair.CIRCLE).smoke(LAMBDA_SMOKE) @@ -55,7 +62,7 @@ public class XFactory762mm { .setupStandardConfiguration() .anim(LAMBDA_CARBINE_ANIMS).orchestra(Orchestras.ORCHESTRA_CARBIBE) ).setUnlocalizedName("gun_carbine"); - + ModItems.gun_minigun = new ItemGunBaseNT(WeaponQuality.A_SIDE, new GunConfig() .dura(50_000).draw(20).inspect(20).crosshair(Crosshair.L_CIRCLE).smoke(LAMBDA_SMOKE) .rec(new Receiver(0) @@ -66,6 +73,16 @@ public class XFactory762mm { .setupStandardConfiguration() .anim(LAMBDA_MINIGUN_ANIMS).orchestra(Orchestras.ORCHESTRA_MINIGUN) ).setUnlocalizedName("gun_minigun"); + ModItems.gun_minigun_lacunae = new ItemGunBaseNT(WeaponQuality.LEGENDARY, new GunConfig() + .dura(50_000).draw(20).inspect(20).crosshair(Crosshair.L_CIRCLE) + .rec(new Receiver(0) + .dmg(10F).delay(1).auto(true).dry(15).reload(15).spread(0.01F).sound("hbm:weapon.fire.blackPowder", 1.0F, 1.0F) + .mag(new MagazineFullReload(0, 200).addConfigs(energy_lacunae, energy_lacunae_overcharge)) + .offset(1, -0.0625 * 2.5, -0.25D) + .setupStandardFire().recoil(Lego.LAMBDA_STANDARD_RECOIL)) + .setupStandardConfiguration() + .anim(LAMBDA_MINIGUN_ANIMS).orchestra(Orchestras.ORCHESTRA_MINIGUN) + ).setUnlocalizedName("gun_minigun_lacunae"); } public static BiConsumer LAMBDA_SMOKE = (stack, ctx) -> { @@ -113,6 +130,9 @@ public class XFactory762mm { .addBus("ROTATE", new BusAnimationSequence().addPos(0, 0, 60, 50).addPos(0, 0, 720, 1000, IType.SIN_DOWN)); case CYCLE_DRY: return new BusAnimation() .addBus("ROTATE", new BusAnimationSequence().addPos(0, 0, 60, 50).addPos(0, 0, 720, 1000, IType.SIN_DOWN)); + case RELOAD: return new BusAnimation() + .addBus("EQUIP", new BusAnimationSequence().addPos(-15, 0, 0, 250, IType.SIN_DOWN).addPos(0, 0, 0, 500, IType.SIN_FULL)) + .addBus("ROTATE", new BusAnimationSequence().addPos(0, 0, 60, 50).addPos(0, 0, 720, 1000, IType.SIN_DOWN)); case INSPECT: return new BusAnimation() .addBus("EQUIP", new BusAnimationSequence().addPos(3, 0, 0, 150, IType.SIN_DOWN).addPos(0, 0, 0, 100, IType.SIN_FULL)) .addBus("ROTATE", new BusAnimationSequence().addPos(0, 0, -720, 1000, IType.SIN_DOWN)); diff --git a/src/main/java/com/hbm/items/weapon/sedna/factory/XFactoryEnergy.java b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactoryEnergy.java index 5fdc4324f..84156627b 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/factory/XFactoryEnergy.java +++ b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactoryEnergy.java @@ -43,11 +43,9 @@ public class XFactoryEnergy { public static BulletConfig energy_tesla; public static BulletConfig energy_tesla_overcharge; - public static BulletConfig energy_tesla_blacklightning; public static BulletConfig energy_las; public static BulletConfig energy_las_overcharge; - public static BulletConfig energy_las_blacklightning; public static BiConsumer LAMBDA_LIGHTNING_HIT = (beam, mop) -> { diff --git a/src/main/java/com/hbm/main/ResourceManager.java b/src/main/java/com/hbm/main/ResourceManager.java index be21567f3..dffef5372 100644 --- a/src/main/java/com/hbm/main/ResourceManager.java +++ b/src/main/java/com/hbm/main/ResourceManager.java @@ -998,6 +998,7 @@ public class ResourceManager { public static final ResourceLocation quadro_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/quadro.png"); public static final ResourceLocation quadro_rocket_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/quadro_rocket.png"); public static final ResourceLocation minigun_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/minigun.png"); + public static final ResourceLocation minigun_lacunae_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/minigun_lacunae.png"); public static final ResourceLocation missile_launcher_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/missile_launcher.png"); public static final ResourceLocation tesla_cannon_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/tesla_cannon.png"); public static final ResourceLocation stg77_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/stg77.png"); diff --git a/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderMinigun.java b/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderMinigun.java index b4d55e4ca..ed44d201f 100644 --- a/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderMinigun.java +++ b/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderMinigun.java @@ -8,8 +8,15 @@ import com.hbm.render.anim.HbmAnimations; import net.minecraft.client.Minecraft; import net.minecraft.item.ItemStack; +import net.minecraft.util.ResourceLocation; public class ItemRenderMinigun extends ItemRenderWeaponBase { + + protected ResourceLocation texture; + + public ItemRenderMinigun(ResourceLocation texture) { + this.texture = texture; + } @Override protected float getTurnMagnitude(ItemStack stack) { return ItemGunBaseNT.getIsAiming(stack) ? 2.5F : -0.5F; } @@ -34,7 +41,7 @@ public class ItemRenderMinigun extends ItemRenderWeaponBase { public void renderFirstPerson(ItemStack stack) { ItemGunBaseNT gun = (ItemGunBaseNT) stack.getItem(); - Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.minigun_tex); + Minecraft.getMinecraft().renderEngine.bindTexture(texture); double scale = 0.375D; GL11.glScaled(scale, scale, scale); @@ -101,7 +108,7 @@ public class ItemRenderMinigun extends ItemRenderWeaponBase { GL11.glEnable(GL11.GL_LIGHTING); GL11.glShadeModel(GL11.GL_SMOOTH); - Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.minigun_tex); + Minecraft.getMinecraft().renderEngine.bindTexture(texture); ResourceManager.minigun.renderAll(); GL11.glShadeModel(GL11.GL_FLAT); } diff --git a/src/main/java/com/hbm/util/DamageResistanceHandler.java b/src/main/java/com/hbm/util/DamageResistanceHandler.java index 8e25d7077..b477d15cd 100644 --- a/src/main/java/com/hbm/util/DamageResistanceHandler.java +++ b/src/main/java/com/hbm/util/DamageResistanceHandler.java @@ -2,6 +2,7 @@ package com.hbm.util; import java.util.HashMap; +import com.hbm.items.ModItems; import com.hbm.util.Tuple.Quartet; import cpw.mods.fml.common.eventhandler.SubscribeEvent; @@ -33,6 +34,43 @@ public class DamageResistanceHandler { public static HashMap itemStats = new HashMap(); public static HashMap, ResistanceStats> setStats = new HashMap(); public static HashMap, ResistanceStats> entityStats = new HashMap(); + + public static void init() { + entityStats.put(EntityCreeper.class, new ResistanceStats().add(KEY_EXPLOSION, 2F, 0.5F)); + + setStats.put(new Quartet(ModItems.steel_helmet, ModItems.steel_plate, ModItems.steel_legs, ModItems.steel_boots), new ResistanceStats()); + setStats.put(new Quartet(ModItems.titanium_helmet, ModItems.titanium_plate, ModItems.titanium_legs, ModItems.titanium_boots), new ResistanceStats()); + setStats.put(new Quartet(ModItems.alloy_helmet, ModItems.alloy_plate, ModItems.alloy_legs, ModItems.alloy_boots), new ResistanceStats()); + setStats.put(new Quartet(ModItems.cobalt_helmet, ModItems.cobalt_plate, ModItems.cobalt_legs, ModItems.cobalt_boots), new ResistanceStats()); + setStats.put(new Quartet(ModItems.starmetal_helmet, ModItems.starmetal_plate, ModItems.starmetal_legs, ModItems.starmetal_boots), new ResistanceStats()); + setStats.put(new Quartet(ModItems.zirconium_legs, ModItems.zirconium_legs, ModItems.zirconium_legs, ModItems.zirconium_legs), new ResistanceStats()); + setStats.put(new Quartet(ModItems.dnt_helmet, ModItems.dnt_plate, ModItems.dnt_legs, ModItems.dnt_boots), new ResistanceStats()); + setStats.put(new Quartet(ModItems.schrabidium_helmet, ModItems.schrabidium_plate, ModItems.schrabidium_legs, ModItems.schrabidium_boots), new ResistanceStats()); + setStats.put(new Quartet(ModItems.robes_helmet, ModItems.robes_plate, ModItems.robes_legs, ModItems.robes_boots), new ResistanceStats()); + + setStats.put(new Quartet(ModItems.steamsuit_helmet, ModItems.steamsuit_plate, ModItems.steamsuit_legs, ModItems.steamsuit_boots), new ResistanceStats()); + setStats.put(new Quartet(ModItems.dieselsuit_helmet, ModItems.dieselsuit_plate, ModItems.dieselsuit_legs, ModItems.dieselsuit_boots), new ResistanceStats()); + setStats.put(new Quartet(ModItems.t45_helmet, ModItems.t45_plate, ModItems.t45_legs, ModItems.t45_boots), new ResistanceStats()); + setStats.put(new Quartet(ModItems.ajr_helmet, ModItems.ajr_plate, ModItems.ajr_legs, ModItems.ajr_boots), new ResistanceStats()); + setStats.put(new Quartet(ModItems.ajro_helmet, ModItems.ajro_plate, ModItems.ajro_legs, ModItems.ajro_boots), new ResistanceStats()); + setStats.put(new Quartet(ModItems.rpa_helmet, ModItems.rpa_plate, ModItems.rpa_legs, ModItems.rpa_boots), new ResistanceStats()); + ResistanceStats bj = new ResistanceStats(); + setStats.put(new Quartet(ModItems.bj_helmet, ModItems.bj_plate, ModItems.bj_legs, ModItems.bj_boots), bj); + setStats.put(new Quartet(ModItems.bj_helmet, ModItems.bj_plate_jetpack, ModItems.bj_legs, ModItems.bj_boots), bj); + setStats.put(new Quartet(ModItems.envsuit_helmet, ModItems.envsuit_plate, ModItems.envsuit_legs, ModItems.envsuit_boots), new ResistanceStats()); + setStats.put(new Quartet(ModItems.hev_helmet, ModItems.hev_plate, ModItems.hev_legs, ModItems.hev_boots), new ResistanceStats()); + setStats.put(new Quartet(ModItems.bismuth_helmet, ModItems.bismuth_plate, ModItems.bismuth_legs, ModItems.bismuth_boots), new ResistanceStats()); + setStats.put(new Quartet(ModItems.fau_helmet, ModItems.fau_plate, ModItems.fau_legs, ModItems.fau_boots), new ResistanceStats()); + setStats.put(new Quartet(ModItems.dns_helmet, ModItems.dns_plate, ModItems.dns_legs, ModItems.dns_boots), new ResistanceStats()); + setStats.put(new Quartet(ModItems.trenchmaster_helmet, ModItems.trenchmaster_plate, ModItems.trenchmaster_legs, ModItems.trenchmaster_boots), new ResistanceStats()); + + setStats.put(new Quartet(ModItems.hazmat_helmet, ModItems.hazmat_plate, ModItems.hazmat_legs, ModItems.hazmat_boots), new ResistanceStats()); + setStats.put(new Quartet(ModItems.hazmat_helmet_red, ModItems.hazmat_plate_red, ModItems.hazmat_legs_red, ModItems.hazmat_boots_red), new ResistanceStats()); + setStats.put(new Quartet(ModItems.hazmat_helmet_grey, ModItems.hazmat_plate_grey, ModItems.hazmat_legs_grey, ModItems.hazmat_boots_grey), new ResistanceStats()); + setStats.put(new Quartet(ModItems.liquidator_helmet, ModItems.liquidator_plate, ModItems.liquidator_legs, ModItems.liquidator_boots), new ResistanceStats()); + setStats.put(new Quartet(ModItems.hazmat_paa_helmet, ModItems.hazmat_paa_plate, ModItems.hazmat_paa_legs, ModItems.hazmat_paa_boots), new ResistanceStats()); + setStats.put(new Quartet(ModItems.asbestos_helmet, ModItems.asbestos_plate, ModItems.asbestos_legs, ModItems.asbestos_boots), new ResistanceStats()); + } public static enum DamageClass { PHYSICAL, @@ -40,11 +78,8 @@ public class DamageResistanceHandler { EXPLOSIVE, ELECTRIC, LASER, - SUBATOMIC - } - - public static void init() { - entityStats.put(EntityCreeper.class, new ResistanceStats().add(KEY_EXPLOSION, 2F, 0.5F)); + SUBATOMIC, + OTHER } public static void setup(float dt, float dr) { @@ -65,7 +100,10 @@ public class DamageResistanceHandler { float[] vals = getDTDR(e, event.source, amount, currentPDT, currentPDR); float dt = vals[0]; - if(dt > 0 && dt >= event.ammount) event.setCanceled(true); + if(dt > 0 && dt >= event.ammount) { + event.setCanceled(true); + EntityDamageUtil.damageArmorNT(e, amount); + } } @SubscribeEvent @@ -101,10 +139,10 @@ public class DamageResistanceHandler { /// SET HANDLING /// Quartet wornSet = new Quartet( - entity.getEquipmentInSlot(1) != null ? entity.getEquipmentInSlot(1).getItem() : null, - entity.getEquipmentInSlot(2) != null ? entity.getEquipmentInSlot(2).getItem() : null, + entity.getEquipmentInSlot(4) != null ? entity.getEquipmentInSlot(4).getItem() : null, entity.getEquipmentInSlot(3) != null ? entity.getEquipmentInSlot(3).getItem() : null, - entity.getEquipmentInSlot(4) != null ? entity.getEquipmentInSlot(4).getItem() : null + entity.getEquipmentInSlot(2) != null ? entity.getEquipmentInSlot(2).getItem() : null, + entity.getEquipmentInSlot(1) != null ? entity.getEquipmentInSlot(1).getItem() : null ); ResistanceStats setResistance = setStats.get(wornSet); diff --git a/src/main/resources/assets/hbm/lang/de_DE.lang b/src/main/resources/assets/hbm/lang/de_DE.lang index a71c48bfe..5cb0aba7c 100644 --- a/src/main/resources/assets/hbm/lang/de_DE.lang +++ b/src/main/resources/assets/hbm/lang/de_DE.lang @@ -1160,6 +1160,8 @@ item.ammo_standard.bmg50_du.name=.50 BMG Patrone (Urangeschoss) item.ammo_standard.bmg50_fmj.name=.50 BMG Patrone (Vollmantelgeschoss) item.ammo_standard.bmg50_jhp.name=.50 BMG Patrone (Hohlspitz) item.ammo_standard.bmg50_sp.name=.50 BMG Patrone (Teilmantelgeschoss) +item.ammo_standard.capacitor.name=Kondensator +item.ammo_standard.capacitor_overcharge.name=Kondensator (Überladung) item.ammo_standard.flame_balefire.name=Flammenwerferbrennstoff, Balefire item.ammo_standard.flame_diesel.name=Flammenwerferbrennstoff, Diesel item.ammo_standard.flame_gas.name=Flammenwerferbrennstoff, Gas @@ -2171,6 +2173,7 @@ item.gun_fatman.name=M42 Nukleares Katapult "Fat Man" item.gun_fatman_ammo.name=Miniatombombe (LEGACY) item.gun_fireext.name=Feuerlöscher item.gun_flamer.name=Flammenwerfer +item.gun_flamer_daybreaker.name=Daybreaker item.gun_flamer_topaz.name=Mister Topaz item.gun_flaregun.name=Signalpistole item.gun_flechette.name=Flechet-Gewehr @@ -2210,6 +2213,7 @@ item.gun_maresleg.name=Repetierflinte item.gun_maresleg_akimbo.name=Repetierflinten item.gun_maresleg_broken.name=Broken item.gun_minigun.name=Minigun +item.gun_minigun_lacunae.name=Lacunae item.gun_mirv.name=M42 Nukleares Katapult "Experimentelles MIRV" item.gun_mirv_ammo.name=Achtfaches MIRV (LEGACY) item.gun_missile_launcher.name=Raketenwerfer diff --git a/src/main/resources/assets/hbm/lang/en_US.lang b/src/main/resources/assets/hbm/lang/en_US.lang index 5d217c811..b6d8a1f6f 100644 --- a/src/main/resources/assets/hbm/lang/en_US.lang +++ b/src/main/resources/assets/hbm/lang/en_US.lang @@ -1883,6 +1883,8 @@ item.ammo_standard.bmg50_du.name=.50 BMG Round (Depleted Uranium) item.ammo_standard.bmg50_fmj.name=.50 BMG Round (Full Metal Jacket) item.ammo_standard.bmg50_jhp.name=.50 BMG Round (Jacketed Hollow Point) item.ammo_standard.bmg50_sp.name=.50 BMG Round (Soft Point) +item.ammo_standard.capacitor.name=Capacitor +item.ammo_standard.capacitor_overcharge.name=Capacitor (Overcharge) item.ammo_standard.flame_balefire.name=Flamer Fuel, Balefire item.ammo_standard.flame_diesel.name=Flamer Fuel, Diesel item.ammo_standard.flame_gas.name=Flamer Fuel, Gas @@ -2979,6 +2981,7 @@ item.gun_fatman.name=M42 Nuclear Catapult "Fat Man" item.gun_fatman_ammo.name=Mini Nuke (LEGACY) item.gun_fireext.name=Fire Extinguisher item.gun_flamer.name=Flamethrower +item.gun_flamer_daybreaker.name=Daybreaker item.gun_flamer_topaz.name=Mister Topaz item.gun_flaregun.name=Flare Gun item.gun_flechette.name=Flechette Rifle @@ -3019,6 +3022,7 @@ item.gun_maresleg.name=Lever Action Shotgun item.gun_maresleg_akimbo.name=Lever Action Shotguns item.gun_maresleg_broken.name=Broken item.gun_minigun.name=Minigun +item.gun_minigun_lacunae.name=Lacunae item.gun_mirv.name=M42 Nuclear Catapult "Experimental MIRV" item.gun_mirv_ammo.name=Eightfold MIRV (LEGACY) item.gun_missile_launcher.name=Missile Launcher diff --git a/src/main/resources/assets/hbm/textures/models/weapons/minigun_lacunae.png b/src/main/resources/assets/hbm/textures/models/weapons/minigun_lacunae.png new file mode 100644 index 0000000000000000000000000000000000000000..66bfa6d8160341136e828b89bc5def9aaf88f927 GIT binary patch literal 10199 zcmYjXc|25a`#xjK8WkaX63I3w$xaK|%3hYih-531b!N;|qQ#aym8DR2vNe_=%93S- zj11%Q*$oJW_fF7k07;RXPJ&&>3k4FIsX z0{{fz`w4#^N& zYm^Qb`;3{Zb1?wdfmR^*7D0oy`el+s%}|3y1OOiVj>9$XG--I(|6HapJ%~<@jS8gU*OpC;dZU`F zh#$_dI6;E-DxovnUDm}vKG}ynn*5ZqV?ilvw$%Z5QXr9AyVJnlc5)z8USFsIKhYlPr*$Cz)>E3zVjRZ z+;#+yqPRiR(f&GvPSzjOi(G%}m({V(6!oaDP;W;%`NIIi-(zFl-a_2Jdul=|f8y2gp=aJ;Q{z*Z{%e@9X|iPmKz6kza_Ri}kS* z_@*Xs*^&aS+^v~K@Mu*-4n_BYIH2xI>0?`P={~(Z<_PqIUlB;zqv7AQJVZ345>Nq- zZNh-G4_jq#Ezvsc>-|nw(qtyMK?3PHN$1iuZv*TI9wmc7EePYrlU!?Ec5goGG4)sO`y_p^8n7 zoDvqm{SeD2whH%_DsbSYq#A95MDbRO!^v3O%UhX_$;T7uIfSc(aRw_OeTrrD0$!Dg z`&z0cg^#-PyPpqkW1K00k1@`Gs@4^dn6;#^rA;||9*D9CD@PxvyJ+JPP6c@n3)4!G z=T@wSy7t~$%eRD&Y06>)ewMsa4^_Lf?_1&nDA$ZJakx&`N5^)9#cFyTH@duO1k1t3 zzBtgT?k%M-q2|q0BK9OLn$qIC=Z^u>d@2WwHCQqQ;2!>SWE)W)$7mI4{S(%GKn-{l zf^*5PrnovDg{uZLC*P>vIK6k^918Eq%PIYc44Wa%Lf@>nDeHwV94n==R<^5EZBBWN zwAYjQU0)ueMO74=uPqG8TPV7!v54fxrQhvd65LnS?zr3+TX7LKJ8G$`y}k2I_@b6@ zfl~|AmqK_E#ndyO5MVnc)+&jo<41!8oJ}Q8evs2IJrKz#5FZW+i0#WyiyqA(jBvYa zOAalxroBSr$b!Rl!IGz97vExqq&r!aRvm3P5uFF81@VA8C&WVJkw=M;+VvQR0^WOp zSu-k^XTqbD%B-^12pVSKSi%TQaXiCLI+7UkBf z8^}<2Goq@D5=EeNb}q~HW=_pbY8Tc`(Hm5#=u-A6p3FM(a$^qT*U6bD?G+pteaf;e z{>;wjotYnDjX~&5qFuXgE=!$JSC#qVM%P*Pn2O0{ff1cBQh&4lPml&fbDS{E`GzH% zzA{H{5VCn4ZhV$a^4h44^cXcMQksB+N}I4|(R{;vrw6@f)9twnMaN)g@k^#MJZ?J? zhCbb}GfY4+_ID`ncb9|3jIX|rb&|QEh%ytMA9k!wj|S(cEmq<3U_Xk2C~yf?_BM;x z=(|XywBk#Tl<-GaM${87SWLuy;)D$>kTA@pbryr2KfjiDh75A{w{6lRof3f<&jW2U zX3zO@R@id|OIVy9WynN~p}ui?yqRk_EZh_st$L$&qx_RoMeK%yV=J{a`A6IzzZVGg zbal$5SGkEY5i9RCW_&)l!R|5Mz0NmJWaWebA4w>#cl>IDik`C$O=I(K@LB3JH;_x4 zv=nw!w(e}8Y{G4wwW<(^uQ{!=*uaGUPByL4{;Bphy^5|`J^qs-8EK&OmESYt8vUL3 z&&i!^ucf1=)3oyQOZP067ohGoik>#A1`_*YC!$&m#_A|sns?-6H&a4BGsxM!uUnQE z2kPxG$Of?^1-F7K$nVGmt_t9v=k-Qg4z1nF48s#wj2H1EswIwEJRym0#}we!Zv zjy5&{Ikod4tZ_B;IsKGC<*5u8$kIKfflnjm59v-XqY~uj2i-89myUcKH@8I_OoUc! zfb5(-9RQ`BgU71*$`evifhCM%OKu&HBZBK`)%igM`}pf1Kv9!@E7d%SB2rZ78(MWg zv$lV!&eaWOaDD5yNv596^&2mm+(dX_9r2E<+RcCCN1+to%Jb|u2r^|`;^WL zDTPe;$#1@U3hk8PT|))FsapAj2Y}K~=Sojbuf#{*w8#vKej;4Bl-)C>2g%j799p2l zSHzZgyt-FAGBX}GJleO5`#tyn&#Ys+@{$|vMi3zBl%o5|G?y#4Rlk{WdG^14 z778~wd6#xZ@&rvmaFHG>smt?D*ND~W`y;2S4*}Q%r_{)2xk^eLbGKXZabFWwRSI3BgX2Kkiv)z-DKB$`W&D%t-J`qzYZh9r%g*5tZB)@1HD(E6>( zfJfbguA$iMlKq(8hrD_4vecof2K!5S@-vP4TayNeLscD-M~w*W`IWdRE8=JkUo^fR z0_P>%Q~L4^vM@!8QdxX30=uVM|2^Z$W%;OX!f9TigiRXS@w5LH{d969*K!^8tLTFt zbRhLQ0+>JP7J&Rwaq7T$EfRiS$@`3`j@j5$5Ao6PQpQJtnZSKy2wXARjN~vl=0{rI zj8=R5(KTuMszhtPUDJ%|+lPEF72vSdHggjhi{MP?1qT{Ul_OdWkaH4hy~G8piw$Za zmvMQVIO(2u5+=9W{PGgF$DoP{C9&sdw2>@GB>qEH<*9S|LPt>^+O&72Vr`yF{6!vw z*eEH1HXs!X)Y&{fl#Bd!Wz8(S>@umC-(%s)drpsm$BoiG)n~A2;oDX96m>5P6FA;D zd%b{zd(-H<3>A9EEK|GayKFQ>0RqZjpC#tj(h!HYq>HlL9rDHpJ~#b(g6Z3ockz#n zIq#nyXTO^5Xrl#uOBPf*Rx6Y}`eT(U5c*`36}zBZj7>vrS7oeS?>aHNAIK@5GZkIH zkYYc4zL>js-{LaY{lnnZk}5{r!vB2H3G;Biv{hMWH0x%QcJOG`%X|TcJ?95%ZD|!c zmmR_zHvY%vV7s|1QC^1k$FZd!+PK)t*|u!SgNI1o;$cSVKBuw1?{`L1!bJxi(?0Kq zEtzQ(FO53sEDEIikr0$>%#A%KwD_=Ae7n-5bJAL+5Pr&apO#j28qr++(T*K2*x zekLYH@{t55iv^C4G1IJNY43ARDmQh72aADSl|7eA7(wa zpGDm!&sZ(EhZ+>b+^!{A{>-ik&cPx|n*&?al-3zO%ok3iss8eC2YyNN%K;LlqlReR zH%fp%_ah7t;@`m6U>LeowS@6%Q!{ih2KCW_7(&G4?M$dLJc7SDGG{t3+E#;3gR%A_ zNDNG3b2`k(^<}(UVhQi;m&=fO{GHn#DoYa@!u?DPZF{!F?JY**Qc6{{4THPYjQ^gb{2?VY+MfWTQ@Ln3C8$ak2!l6mTl#)(E*B~(`Sm?Wb2hb}FOMoCwu31CB#JsN`;0uvZ-eI$%Myk{s8aT5 zXS^)*wfNes`>f@Cz7}J57L9cTFg+yD8j9Izm+F;buIyW*P32fy>E2{Mr}3TIWSzD{ zB7%@A#=BF5+O-az@exz+Bu4Ds?Fh^0cc?o;NG+__s@(o@H$}0u(*NKsW;G@ufKRMH zHw0mC4{EV|3GYB4URq6A(K+*2uVeE;25~x!- zWw1~V3)9_YR92=tux12S6d%N8Yk-UG(W@{aZXR4NVyQ!WB-3Pz`@}ViJh4k zk$HueG2ElCpziYI)_sy(h<>eMK@L*M$`!5W=SG!2__WM-<(kbYSDrPZm@U;4)12 z$KGeAN50E%M)|oN{|FLVd}!Fw{bV+%UVK88OXkAD6FI2uo{1a>`%NDVV|D`8M7_B= z_B<%md)g~DFHm^@`F~*q7^-#)RsO1Pz4Y%oM6h<@hrJ>+?OOi_K;RmZPr94`Q8JZ% z-HiKjH3_iUwJzWWp3Fd;&mNc`&0P@Zt8@H)E~n)D-eGa(0ySSi++Gb9&e!vnpFPx( zOqm&HyolcY6`n=q_W!hp!-;D)km}9_)3;dga^DBnYdL8-^tFRBN(r-z@fnYNpuKu3 zyn1;bX7nL<33pYFu!z80x?j%A1`xy z%Nt>Jn9HZbjAkrN0Ot**uASV#pEqz{T{|&fU|K4QFATvaFsraq0?* zMxpsM+0=sa`$)%j<07eMS~G1lH5&NK{DJGAYww!)W7|D8C--&S$w7~9H}I^A!H_*o zfBLOC-LeH*#cicx@*Osrg=x|(DR5rgKmG9mWsr-o}N*2yh6NWC9%`m9~Fx z-<=kzQc8)OSRH}J32^MWp{F2`n*X1(AHABjGK(P!Nip324~O7_7Z2B8gxGS~&i+Dq z@n3OTQ|e+6f|?L#VR^GeXWBG&vvRsEb7=cvFxtrvBQ2I?@CfSuCcjoIEDn-lJ|<@> zCS$Qb?A|moV`#aN)|jR0`Pfwi(J+L-_^^@#W5EEOI&BlO;0|>V7fp;mmZ)H^N9TG2?YN zpAxnsCDGR`=^Bf47+gs=o}KN)%ouEx<{3tdauoge z0&TXzBVc---GUVy&{IB;7Ji~~ov}fEd=*I_w);v`Y|BK)hJ6kN&VVAxo!89t`*zn$ z@rCJVy2&DJtR-2Ow*E-M^f3?It{MAI@K9@wBerJKfQ{?J1G?@_p8&Bx9&yFOm$SiO zP*$G8nF!x~!z8ojb7o(86dXZJ7qc9@9!C;4ga32PE;08B`qAnXX*(8L>}L24gt6_E z$(U<4BDjS|^ZM4MiLkCDq=+o4+m5*L<gNuOzffA-|#Y?K;s|aR$qJEs* zeowH6ch{4}DG;9P`Q$6JiWs7*(=pC4$A?%EHzT;6>u-nq8VI6zGSDfP2zOPEd#i za%*4`lY7i>NqWg(*`#HNDOO#^x_!c10PhSLyntkaWnO+JP}t0p-^>I6QyU9l$PF?$ zi2;CP9=uL6HJeg^4QLU6@vJn1Jx|p=k`r+%G*6bvAJci}yW3z_a9|Rf0_V_bwNW}rsUlXFmZbnwM{v2~__#+z zrd-9#V49YtMk51($=3P3*ja}@L(vJe=P;Dq1IR1;)(bf@M9uh!^KvwbBZ$iaaer8j&n3sNB_E%9 zQ^8+UL;QUqOHJd>W$8w=tFdSj4#b?*ln$&!LO95ebJbOBhVm@bnV#KaKy@}aj zOd0UAkz@5zIF6lmfIPNDGOObBVhHF&CDD%(2<;OnyZXXHBhf6I>o?~Fi@jPsT`~Ca z<;^F719KVG206}{7H|W4s2j`7YcBUbI^av3n+xuS+)U6Z_QHzqqDx2`RDdVuNlr)a zg!nzlBNtra=&}V5R#Lxa6T>$HY0n(}stohA>kd?XF3@%SJ&C@{z+#n)87(b3ZrOx# zmAzSVU8u}%`5f_h=ws+|`UJ6|yzv?C^978*N#EoF80z*F$=Q$@c2;ox^1d z=FH}Q-Ne8ia?(w*U-n#Ln!Nn^vM1?@ zNte@B(%}pF>jtx%GXlPgdc*-inL&M?6W>S`zDI0Bv|jhrEynv+L|DD?7WUi6S9tpL zjVnlYQ)8w{UH9TzvVgjfe(-pdZT@=Bp|e2Kt*YZyZ%%K-%WSS3$f7X#H_(dFse<^p zJSN!97OFJ9vD^afF)=OLdv4T}L_dc^`joHQH*hX*J| zzsD>w-E4Mg3nbWzKzo+eRopY&wI{*Na5MEkX&NU-P$~trXaA z&0L1CVRg&&$Z-;cJQL{sm0B{pLLM{PWFj~!hz0*%27IPcUOe}!1vd@;yh}&ZOH4$N zRGTyk(pm*-d^GoEQ|(PMpG&lwYs_TI0w%S%g*HlQ3P@x;cLwFsfWu2;@|H(6@$Y7gK*3F862hvqcgpB`_ zJYWhxa(Pr?IybeL8LisNujn2LW}Ey6{N#KJMlm`feDU?hsKGq(ce!~advE&gARseL zCLmks(VF`wX&e(Svk*triCnA-IiewX?wI*E4EVsv3}sc?F!CTj;@vUAeW9#%21%xu zIA3#e&oJXgVX74Nvrn>$)LX~h{8oHd%xHpTW z)8}96gb>onEh3Rda4Yk|BFi*?8fHj*S69k#I?Uj+Zwb%*TIjQ>tX8gclUpYBzAa=j zJIg&Mr_hzhRj@@F1>7?+TfI|-+FIrbG8B_C^rqZTDs7<2%Y`@)JiDX6$1#KSZaJp} z^gMr6HUryy`r-DG8zmo{R=9C6lM48g!AVtmo$EX6#p_hHJ4=*@Rg9lPl?QL|OO4T5 z(nml{tots|e>Vm!ogO{-F?iHX+xcLV@d6QAwCQNpIoVLYO!=L>c-F4qTCk5t`F!G3 zTjrEj-|(sV;h3?Ky{zfy+syWiiiXy^qH78GMr42hVwtzIsP;q8Y?MR_wb?aUf5)FL zKAKjdETgbNh3D-hc^JGqB(gidp1hB?+Bzs*=dBd$06xM*WIPDw-f>zUU(r~<=4X6) zZllw#_gpDlNP3gxzqIzE&qGqv9amsf%Isa(L>9wj7u@F(Ft?e#e=ZglO!?gCY9IGg z;W8>BN;yLhRV6&&H-jMdTeGad7uxmi*gW+rr)QCc5k|d?@f(v?wjGl&HdVct;+&2x zu{$|5D*83cab6)cgBgw~bH_+#U2q}~%Bugz^M1*?b3S%ZkQXfA4p{YuFBKp4t3*X>q*gk*!&x#k|SxRrq z`BHV{DQLIU`J}#pI$g<;bHE^<@N$-vrMd%$y+t&zJ*osR7j?wG0@d36QC{Qgs(AEK z`G?ynLvp6b78QDP)K#h3+~Iltvj5~@1GVc);kdg-pYQ6_=IMOq^b8K*I_qc2_tv_Z zVF%7N2Bra;6pK83JDp8+v+8)JH{q<6z)5meBezNP3vi;M|0eS#E|XRNEt7Ogg`LX`%L}qF{$zsR zy$sTRaj~s9e{Rpbs^z-p#hN%sCwiPPs&Qn3n0R%QAXxuZ^>`J9wFC7#_O1-((613+CKwr_Rt}Xd?u3`UJx$=je zOx=2W|C0%_DMm^)E|j$OA4`LO9GtxiVXHcOfc@)MnWsAR9}aew^wzfcW+`==o@+Sw zDH?zK1zXiXFv{Az&U=71NE|zuX;WrUxR+7uS@Pp4jEZTiOsA|zjK$#X3g0Z(A_j}UU%$P{$c59GQ#_Xj6ApJ*@jkdHgw~%mJ!}@bxtT^uO)Lw0o z+09@qg>Sz|m_TEpGvNcYWO)C0ZaCL`;;y|#^QKZ5vB|X1{O?>pKj9&HVgIc!^o33C zPfq9vASvqj1T%0?*Zy_jfT75tutWSRwqw)`r?ZE@;FYfZ*J*cs7^otahxaKjJA4dA ziiFMOrbN>9cWr(wKUfW5hsU48iUW6y#sZM=vH79r*T;W^eU7~?Te@3YaVLR`X|0xq z0C~H7*u4Vw#K(xG>&jAw^py4ATn$D~5uFt?NZXgHxM`k*ICM2O{eNx&Gg$*C_^I5< zJ(}DokkR|K)_!gy_TN%~SrF($(7!?q5pGnLiQhN`q#wzO^($pLrRkVaanreYBNoiY zf6d}ao$$2aq9qD?V1n^Xn#27R@;Ftlvm;OOt2O~)(afk#&o)?~{L5QR*}?mc1W}Z= z0BhxE9N|jMNk`{h#S5ysF7YqwGO~Ew2J0sV{z2Xo!4~xM8JJYm9%n0XV>+0Re9`Rt z68taFU~t87vx*qLjr*j2h*Fj2&U=HLvvsBak;4BVtLze&o1T_`+Muf8y@v8ceZ;1U zYTwt7u5p`TouFDTNFEUkvS>0|E+Q_2eV1LAgJjk#MBE$1!jS7tfUe;Sd!61&qwq8AaZ6Lur*&m zR|m#h!z-tL@e2mgGwaot8=k}Z3vm@=3U(5P|JGinefpHsmT)lWP~*Lz|CqLYbin0B z7)9ZZXbdGa$Rx;a5uUqi_AVt2RZG{i$>#hhv#Bts;eog5AwSm_`CRqg&2s#J z9A}8W{_NEx&ikM(_f6xpwjH!H2NROE_0^8nfC28 zC8E(5n)66xe3g$TH8qkhqsFmEzw^wk$2Rr$-RLJCzoZR9w$Ei%Rm#;G6qwpW_LS%i zzi~5oNkfI6(28w^0sF4U1LL6>@;q(yO=gT00PmDIVgK&b6qKm{vmb3R-q@t+cnC7L z%iZyMnp43Ehf1^NC^Fax(YA*qA6A=H;~$F{zj!6Jt}ljabBXLJLJig1C?L@5#f!cC zik;yBi2C;7cj3No+wT0wCH4Ax4j23=tLwFB`56WtZk;E~sNGgl@S_kgtDb=kX*Pmo zj*SWU9oV7Icx9OkmV&PXYQPsA@}$)TKifET_m>6oZG6cbTD-ejCc2JaudQP%w3|-^ zb^HQ*9QUYAK@8ZJ#F#+56jDExCO;?+JW#hIGBy+X$*+60=$lMe=0-q`s!$-80VpSX zl`vQtFl#UIctlr(dpdT%4eXwZ`cu*HN0qjRlt0EsH_@ExGh2F^BUUu@SuF*(HY)tT z3E(h7#^PX`<5_62mtB2Q+d%H-BSXw8a`6A9idj}@oM{(bv2JV!PA-#{H#az}UQlL` z`mfsLz`>W0&TV}j!r80OhaGM{EpTZL?lreTv-^(>FkM19QxaC>+6NWCjW0uzelsCE Y=&|2$+QlI7^)A5dyw$mKWA}Ui2Xb*)L;wH) literal 0 HcmV?d00001 From 3b0fe9c14b5aeb2eaf774b2037a79eeaa20b533a Mon Sep 17 00:00:00 2001 From: Boblet Date: Mon, 2 Dec 2024 14:07:38 +0100 Subject: [PATCH 11/24] don't work hard, work smart (while hard) --- .../java/com/hbm/entity/EntityMappings.java | 1 + .../java/com/hbm/entity/mob/EntityDummy.java | 32 ++++++++++++++++++ src/main/java/com/hbm/main/ClientProxy.java | 1 + .../hbm/render/entity/mob/RenderDummy.java | 31 +++++++++++++++++ .../com/hbm/util/DamageResistanceHandler.java | 5 +++ .../assets/hbm/textures/entity/dummy.png | Bin 0 -> 431 bytes 6 files changed, 70 insertions(+) create mode 100644 src/main/java/com/hbm/entity/mob/EntityDummy.java create mode 100644 src/main/java/com/hbm/render/entity/mob/RenderDummy.java create mode 100644 src/main/resources/assets/hbm/textures/entity/dummy.png diff --git a/src/main/java/com/hbm/entity/EntityMappings.java b/src/main/java/com/hbm/entity/EntityMappings.java index 0e820e3a5..76c27234b 100644 --- a/src/main/java/com/hbm/entity/EntityMappings.java +++ b/src/main/java/com/hbm/entity/EntityMappings.java @@ -254,6 +254,7 @@ public class EntityMappings { addMob(EntityGlyphidDigger.class, "entity_glyphid_digger", 0x273038, 0x724A21); addMob(EntityPlasticBag.class, "entity_plastic_bag", 0xd0d0d0, 0x808080); addMob(EntityParasiteMaggot.class, "entity_parasite_maggot", 0xd0d0d0, 0x808080); + addMob(EntityDummy.class, "entity_ntm_test_dummy", 0xffffff, 0x000000); addSpawn(EntityCreeperPhosgene.class, 5, 1, 1, EnumCreatureType.monster, BiomeGenBase.getBiomeGenArray()); addSpawn(EntityCreeperVolatile.class, 10, 1, 1, EnumCreatureType.monster, BiomeGenBase.getBiomeGenArray()); diff --git a/src/main/java/com/hbm/entity/mob/EntityDummy.java b/src/main/java/com/hbm/entity/mob/EntityDummy.java new file mode 100644 index 000000000..63ce475fd --- /dev/null +++ b/src/main/java/com/hbm/entity/mob/EntityDummy.java @@ -0,0 +1,32 @@ +package com.hbm.entity.mob; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.entity.EntityLiving; +import net.minecraft.entity.passive.IAnimals; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemArmor; +import net.minecraft.world.World; + +public class EntityDummy extends EntityLiving implements IAnimals { + + public EntityDummy(World world) { + super(world); + } + + @Override + public boolean interact(EntityPlayer player) { + + if(player.getHeldItem() != null && player.getHeldItem().getItem() instanceof ItemArmor) { + ItemArmor armor = (ItemArmor) player.getHeldItem().getItem(); + this.setCurrentItemOrArmor(4 - armor.armorType, player.getHeldItem().copy()); + } + + return super.interact(player); + } + + @Override @SideOnly(Side.CLIENT) public boolean getAlwaysRenderNameTagForRender() { return true; } + @Override public String getCommandSenderName() { return (int) this.getHealth() + " / " + (int) this.getMaxHealth(); } + + @Override protected void dropEquipment(boolean b, int i) { } +} diff --git a/src/main/java/com/hbm/main/ClientProxy.java b/src/main/java/com/hbm/main/ClientProxy.java index d37fbb212..20f05dd4b 100644 --- a/src/main/java/com/hbm/main/ClientProxy.java +++ b/src/main/java/com/hbm/main/ClientProxy.java @@ -809,6 +809,7 @@ public class ClientProxy extends ServerProxy { RenderingRegistry.registerEntityRenderingHandler(EntityFBIDrone.class, new RenderDrone()); RenderingRegistry.registerEntityRenderingHandler(EntityPlasticBag.class, new RenderPlasticBag()); RenderingRegistry.registerEntityRenderingHandler(EntityPigeon.class, new RenderPigeon(new ModelPigeon(), 0.3F)); + RenderingRegistry.registerEntityRenderingHandler(EntityDummy.class, new RenderDummy()); //"particles" RenderingRegistry.registerEntityRenderingHandler(EntityBSmokeFX.class, new MultiCloudRenderer(new Item[] { ModItems.b_smoke1, ModItems.b_smoke2, ModItems.b_smoke3, ModItems.b_smoke4, ModItems.b_smoke5, ModItems.b_smoke6, ModItems.b_smoke7, ModItems.b_smoke8 })); RenderingRegistry.registerEntityRenderingHandler(EntityChlorineFX.class, new MultiCloudRenderer(new Item[] { ModItems.chlorine1, ModItems.chlorine2, ModItems.chlorine3, ModItems.chlorine4, ModItems.chlorine5, ModItems.chlorine6, ModItems.chlorine7, ModItems.chlorine8 })); diff --git a/src/main/java/com/hbm/render/entity/mob/RenderDummy.java b/src/main/java/com/hbm/render/entity/mob/RenderDummy.java new file mode 100644 index 000000000..a85d4ea5e --- /dev/null +++ b/src/main/java/com/hbm/render/entity/mob/RenderDummy.java @@ -0,0 +1,31 @@ +package com.hbm.render.entity.mob; + +import com.hbm.entity.mob.EntityDummy; +import com.hbm.lib.RefStrings; + +import net.minecraft.client.model.ModelBiped; +import net.minecraft.client.renderer.entity.RenderBiped; +import net.minecraft.entity.Entity; +import net.minecraft.entity.EntityLiving; +import net.minecraft.util.ResourceLocation; + +public class RenderDummy extends RenderBiped { + + public RenderDummy() { + super(new ModelBiped(0.0F), 0.5F, 1.0F); + } + + @Override + protected ResourceLocation getEntityTexture(EntityLiving entity) { + return this.getEntityTexture((EntityDummy) entity); + } + + @Override + protected ResourceLocation getEntityTexture(Entity entity) { + return this.getEntityTexture((EntityDummy) entity); + } + + protected ResourceLocation getEntityTexture(EntityDummy entity) { + return new ResourceLocation(RefStrings.MODID + ":textures/entity/dummy.png"); + } +} diff --git a/src/main/java/com/hbm/util/DamageResistanceHandler.java b/src/main/java/com/hbm/util/DamageResistanceHandler.java index b477d15cd..30d2059f8 100644 --- a/src/main/java/com/hbm/util/DamageResistanceHandler.java +++ b/src/main/java/com/hbm/util/DamageResistanceHandler.java @@ -36,6 +36,11 @@ public class DamageResistanceHandler { public static HashMap, ResistanceStats> entityStats = new HashMap(); public static void init() { + + itemStats.clear(); + setStats.clear(); + entityStats.clear(); + entityStats.put(EntityCreeper.class, new ResistanceStats().add(KEY_EXPLOSION, 2F, 0.5F)); setStats.put(new Quartet(ModItems.steel_helmet, ModItems.steel_plate, ModItems.steel_legs, ModItems.steel_boots), new ResistanceStats()); diff --git a/src/main/resources/assets/hbm/textures/entity/dummy.png b/src/main/resources/assets/hbm/textures/entity/dummy.png new file mode 100644 index 0000000000000000000000000000000000000000..2bef2f04e94c93ac1bb24cd7cc38dc9406412f50 GIT binary patch literal 431 zcmV;g0Z{&lP)pT^1pAZ4i>-<0a1Yr-@#wl#7)cIo6cn(?twsDuZ{3FUD z7yhlX$f0;Xgf(OFbEXxb&b~*Gevdw?M>yFZh4ZoaInxU8j(g1T(0A$b=$Wupyt|^S5g1ma3dV%5N+2_g|{+j+Z%B85=NiIT(Rv9IC_c28=+MI?gY45ya0>0 Z!XJy3*|m_*_MHF#002ovPDHLkV1nJ9#6AE3 literal 0 HcmV?d00001 From 663f08be5648d2670f9e3646b7d36eebeddb815b Mon Sep 17 00:00:00 2001 From: Boblet Date: Tue, 3 Dec 2024 16:40:56 +0100 Subject: [PATCH 12/24] lasers now turn entities into confetti --- .../hbm/items/weapon/sedna/BulletConfig.java | 2 + .../weapon/sedna/factory/ConfettiUtil.java | 21 +++++ .../hbm/items/weapon/sedna/factory/Lego.java | 6 +- .../weapon/sedna/factory/XFactory12ga.java | 32 +++---- .../weapon/sedna/factory/XFactory357.java | 6 +- .../weapon/sedna/factory/XFactory40mm.java | 2 +- .../weapon/sedna/factory/XFactory44.java | 8 +- .../weapon/sedna/factory/XFactory50.java | 2 +- .../weapon/sedna/factory/XFactory556mm.java | 4 +- .../weapon/sedna/factory/XFactory75Bolt.java | 2 +- .../weapon/sedna/factory/XFactory762mm.java | 6 +- .../weapon/sedna/factory/XFactory9mm.java | 8 +- .../sedna/factory/XFactoryAccelerator.java | 4 +- .../sedna/factory/XFactoryCatapult.java | 2 +- .../weapon/sedna/factory/XFactoryEnergy.java | 4 +- .../weapon/sedna/factory/XFactoryFlamer.java | 6 +- .../weapon/sedna/factory/XFactoryFolly.java | 2 +- .../weapon/sedna/factory/XFactoryRocket.java | 6 +- src/main/java/com/hbm/main/ClientProxy.java | 17 +--- .../com/hbm/main/ModEventHandlerClient.java | 2 + .../java/com/hbm/particle/ParticleAshes.java | 87 ++++++++++++++++++ .../com/hbm/particle/helper/AshesCreator.java | 51 ++++++++++ ...derHelper.java => BlackPowderCreator.java} | 2 +- .../hbm/particle/helper/ParticleCreators.java | 3 +- .../blocks/particle/particle_ashes.png | Bin 0 -> 190 bytes 25 files changed, 221 insertions(+), 64 deletions(-) create mode 100644 src/main/java/com/hbm/items/weapon/sedna/factory/ConfettiUtil.java create mode 100644 src/main/java/com/hbm/particle/ParticleAshes.java create mode 100644 src/main/java/com/hbm/particle/helper/AshesCreator.java rename src/main/java/com/hbm/particle/helper/{BlackPowderHelper.java => BlackPowderCreator.java} (97%) create mode 100644 src/main/resources/assets/hbm/textures/blocks/particle/particle_ashes.png diff --git a/src/main/java/com/hbm/items/weapon/sedna/BulletConfig.java b/src/main/java/com/hbm/items/weapon/sedna/BulletConfig.java index ce2c77254..32843ba94 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/BulletConfig.java +++ b/src/main/java/com/hbm/items/weapon/sedna/BulletConfig.java @@ -10,6 +10,7 @@ import com.hbm.entity.projectile.EntityBulletBeamBase; import com.hbm.interfaces.NotableComments; import com.hbm.inventory.RecipesCommon.ComparableStack; import com.hbm.items.ModItems; +import com.hbm.items.weapon.sedna.factory.ConfettiUtil; import com.hbm.items.weapon.sedna.factory.GunFactory.EnumAmmo; import com.hbm.items.weapon.sedna.factory.GunFactory.EnumAmmoSecret; import com.hbm.particle.SpentCasing; @@ -236,6 +237,7 @@ public class BulletConfig implements Cloneable { EntityLivingBase living = (EntityLivingBase) entity; EntityDamageUtil.attackEntityFromNT(living, source, bullet.damage, true, false, bullet.config.knockbackMult, bullet.config.armorThresholdNegation, bullet.config.armorPiercingPercent); + if(!living.isEntityAlive()) ConfettiUtil.decideConfetti(living, source); } }; diff --git a/src/main/java/com/hbm/items/weapon/sedna/factory/ConfettiUtil.java b/src/main/java/com/hbm/items/weapon/sedna/factory/ConfettiUtil.java new file mode 100644 index 000000000..0df13de04 --- /dev/null +++ b/src/main/java/com/hbm/items/weapon/sedna/factory/ConfettiUtil.java @@ -0,0 +1,21 @@ +package com.hbm.items.weapon.sedna.factory; + +import com.hbm.particle.helper.AshesCreator; +import com.hbm.util.DamageResistanceHandler.DamageClass; + +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.util.DamageSource; +import net.minecraft.util.MathHelper; + +public class ConfettiUtil { + + public static void decideConfetti(EntityLivingBase entity, DamageSource source) { + if(source.damageType.equals(DamageClass.LASER.name())) pulverize(entity); + } + + public static void pulverize(EntityLivingBase entity) { + if(entity.isEntityAlive()) return; + int amount = MathHelper.clamp_int((int) (entity.width * entity.height * entity.width * 25), 5, 50); + AshesCreator.composeEffect(entity.worldObj, entity, amount, 0.125F); + } +} diff --git a/src/main/java/com/hbm/items/weapon/sedna/factory/Lego.java b/src/main/java/com/hbm/items/weapon/sedna/factory/Lego.java index 5b9f5e4f3..1c2062b58 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/factory/Lego.java +++ b/src/main/java/com/hbm/items/weapon/sedna/factory/Lego.java @@ -22,7 +22,7 @@ import com.hbm.items.weapon.sedna.ItemGunBaseNT.LambdaContext; import com.hbm.items.weapon.sedna.ItemGunBaseNT.SmokeNode; import com.hbm.items.weapon.sedna.Receiver; import com.hbm.items.weapon.sedna.mags.IMagazine; -import com.hbm.particle.helper.BlackPowderHelper; +import com.hbm.particle.helper.BlackPowderCreator; import com.hbm.render.anim.BusAnimation; import com.hbm.render.anim.BusAnimationSequence; import com.hbm.render.anim.HbmAnimations.AnimType; @@ -227,12 +227,12 @@ public class Lego { if(config.pType == ProjectileType.BULLET) { EntityBulletBaseMK4 mk4 = new EntityBulletBaseMK4(entity, config, damage, spread, sideOffset, heightOffset, forwardOffset); if(ItemGunBaseNT.getIsLockedOn(stack)) mk4.lockonTarget = entity.worldObj.getEntityByID(ItemGunBaseNT.getLockonTarget(stack)); - if(i == 0 && config.blackPowder) BlackPowderHelper.composeEffect(entity.worldObj, mk4.posX, mk4.posY, mk4.posZ, mk4.motionX, mk4.motionY, mk4.motionZ, 10, 0.25F, 0.5F, 10, 0.25F); + if(i == 0 && config.blackPowder) BlackPowderCreator.composeEffect(entity.worldObj, mk4.posX, mk4.posY, mk4.posZ, mk4.motionX, mk4.motionY, mk4.motionZ, 10, 0.25F, 0.5F, 10, 0.25F); entity.worldObj.spawnEntityInWorld(mk4); } else if(config.pType == ProjectileType.BULLET_CHUNKLOADING) { EntityBulletBaseMK4CL mk4 = new EntityBulletBaseMK4CL(entity, config, damage, spread, sideOffset, heightOffset, forwardOffset); if(ItemGunBaseNT.getIsLockedOn(stack)) mk4.lockonTarget = entity.worldObj.getEntityByID(ItemGunBaseNT.getLockonTarget(stack)); - if(i == 0 && config.blackPowder) BlackPowderHelper.composeEffect(entity.worldObj, mk4.posX, mk4.posY, mk4.posZ, mk4.motionX, mk4.motionY, mk4.motionZ, 10, 0.25F, 0.5F, 10, 0.25F); + if(i == 0 && config.blackPowder) BlackPowderCreator.composeEffect(entity.worldObj, mk4.posX, mk4.posY, mk4.posZ, mk4.motionX, mk4.motionY, mk4.motionZ, 10, 0.25F, 0.5F, 10, 0.25F); entity.worldObj.spawnEntityInWorld(mk4); } else if(config.pType == ProjectileType.BEAM) { EntityBulletBeamBase mk4 = new EntityBulletBeamBase(entity, config, damage, spread, sideOffset, heightOffset, forwardOffset); diff --git a/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory12ga.java b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory12ga.java index 0a1d142df..d3740c351 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory12ga.java +++ b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory12ga.java @@ -51,16 +51,16 @@ public class XFactory12ga { public static void init() { - g12_bp = new BulletConfig().setItem(EnumAmmo.G12_BP).setBlackPowder(true).setProjectiles(8).setSpread(0.05F).setRicochetAngle(15).setCasing(new SpentCasing(CasingType.SHOTGUN).setColor(SpentCasing.COLOR_CASE_BRASS, SpentCasing.COLOR_CASE_BRASS).setScale(0.75F).register("12GA_BP")); - g12_bp_magnum = new BulletConfig().setItem(EnumAmmo.G12_BP_MAGNUM).setBlackPowder(true).setProjectiles(4).setSpread(0.05F).setRicochetAngle(25).setCasing(new SpentCasing(CasingType.SHOTGUN).setColor(SpentCasing.COLOR_CASE_BRASS, SpentCasing.COLOR_CASE_BRASS).setScale(0.75F).register("12GA_BP_MAGNUM")); - g12_bp_slug = new BulletConfig().setItem(EnumAmmo.G12_BP_SLUG).setBlackPowder(true).setSpread(0.01F).setRicochetAngle(5).setCasing(new SpentCasing(CasingType.SHOTGUN).setColor(SpentCasing.COLOR_CASE_BRASS, SpentCasing.COLOR_CASE_BRASS).setScale(0.75F).register("12GA_BP_SLUG")); - g12 = new BulletConfig().setItem(EnumAmmo.G12).setProjectiles(8).setSpread(0.05F).setRicochetAngle(15).setCasing(new SpentCasing(CasingType.SHOTGUN).setColor(0xB52B2B, SpentCasing.COLOR_CASE_BRASS).setScale(0.75F).register("12GA")); + g12_bp = new BulletConfig().setItem(EnumAmmo.G12_BP).setBlackPowder(true).setProjectiles(8).setDamage(0.5F/8F).setSpread(0.05F).setRicochetAngle(15).setCasing(new SpentCasing(CasingType.SHOTGUN).setColor(SpentCasing.COLOR_CASE_BRASS, SpentCasing.COLOR_CASE_BRASS).setScale(0.75F).register("12GA_BP")); + g12_bp_magnum = new BulletConfig().setItem(EnumAmmo.G12_BP_MAGNUM).setBlackPowder(true).setProjectiles(4).setDamage(0.5F/4F).setSpread(0.05F).setRicochetAngle(25).setCasing(new SpentCasing(CasingType.SHOTGUN).setColor(SpentCasing.COLOR_CASE_BRASS, SpentCasing.COLOR_CASE_BRASS).setScale(0.75F).register("12GA_BP_MAGNUM")); + g12_bp_slug = new BulletConfig().setItem(EnumAmmo.G12_BP_SLUG).setBlackPowder(true).setDamage(0.5F).setSpread(0.01F).setRicochetAngle(5).setCasing(new SpentCasing(CasingType.SHOTGUN).setColor(SpentCasing.COLOR_CASE_BRASS, SpentCasing.COLOR_CASE_BRASS).setScale(0.75F).register("12GA_BP_SLUG")); + g12 = new BulletConfig().setItem(EnumAmmo.G12).setProjectiles(8).setDamage(1F/8F).setSpread(0.05F).setRicochetAngle(15).setCasing(new SpentCasing(CasingType.SHOTGUN).setColor(0xB52B2B, SpentCasing.COLOR_CASE_BRASS).setScale(0.75F).register("12GA")); g12_slug = new BulletConfig().setItem(EnumAmmo.G12_SLUG).setSpread(0.0F).setRicochetAngle(25).setCasing(new SpentCasing(CasingType.SHOTGUN).setColor(0x393939, SpentCasing.COLOR_CASE_BRASS).setScale(0.75F).register("12GA_SLUG")); - g12_flechette = new BulletConfig().setItem(EnumAmmo.G12_FLECHETTE).setProjectiles(8).setSpread(0.025F).setRicochetAngle(5).setCasing(new SpentCasing(CasingType.SHOTGUN).setColor(0x3C80F0, SpentCasing.COLOR_CASE_BRASS).setScale(0.75F).register("12GA_FLECHETTE")); - g12_magnum = new BulletConfig().setItem(EnumAmmo.G12_MAGNUM).setProjectiles(4).setSpread(0.015F).setRicochetAngle(15).setCasing(new SpentCasing(CasingType.SHOTGUN).setColor(0x278400, SpentCasing.COLOR_CASE_12GA).setScale(0.75F).register("12GA_MAGNUM")); - g12_explosive = new BulletConfig().setItem(EnumAmmo.G12_EXPLOSIVE).setOnImpact(LAMBDA_STANDARD_EXPLODE).setSpread(0F).setRicochetAngle(15).setCasing(new SpentCasing(CasingType.SHOTGUN).setColor(0xDA4127, SpentCasing.COLOR_CASE_12GA).setScale(0.75F).register("12GA_EXPLOSIVE")); - g12_phosphorus = new BulletConfig().setItem(EnumAmmo.G12_PHOSPHORUS).setProjectiles(8).setSpread(0.015F).setRicochetAngle(15).setCasing(new SpentCasing(CasingType.SHOTGUN).setColor(0x910001, SpentCasing.COLOR_CASE_12GA).setScale(0.75F).register("12GA_PHOSPHORUS")); - g12_anthrax = new BulletConfig().setItem(EnumAmmo.G12_ANTHRAX).setProjectiles(8).setSpread(0.015F).setRicochetAngle(15).setCasing(new SpentCasing(CasingType.SHOTGUN).setColor(0x749300, SpentCasing.COLOR_CASE_12GA).setScale(0.75F).register("12GA_ANTHRAX")); + g12_flechette = new BulletConfig().setItem(EnumAmmo.G12_FLECHETTE).setProjectiles(8).setDamage(1F/8F).setSpread(0.025F).setRicochetAngle(5).setCasing(new SpentCasing(CasingType.SHOTGUN).setColor(0x3C80F0, SpentCasing.COLOR_CASE_BRASS).setScale(0.75F).register("12GA_FLECHETTE")); + g12_magnum = new BulletConfig().setItem(EnumAmmo.G12_MAGNUM).setProjectiles(4).setDamage(2F/4F).setSpread(0.015F).setRicochetAngle(15).setCasing(new SpentCasing(CasingType.SHOTGUN).setColor(0x278400, SpentCasing.COLOR_CASE_12GA).setScale(0.75F).register("12GA_MAGNUM")); + g12_explosive = new BulletConfig().setItem(EnumAmmo.G12_EXPLOSIVE).setDamage(5F).setOnImpact(LAMBDA_STANDARD_EXPLODE).setSpread(0F).setRicochetAngle(15).setCasing(new SpentCasing(CasingType.SHOTGUN).setColor(0xDA4127, SpentCasing.COLOR_CASE_12GA).setScale(0.75F).register("12GA_EXPLOSIVE")); + g12_phosphorus = new BulletConfig().setItem(EnumAmmo.G12_PHOSPHORUS).setProjectiles(8).setDamage(1F/8F).setSpread(0.015F).setRicochetAngle(15).setCasing(new SpentCasing(CasingType.SHOTGUN).setColor(0x910001, SpentCasing.COLOR_CASE_12GA).setScale(0.75F).register("12GA_PHOSPHORUS")); + g12_anthrax = new BulletConfig().setItem(EnumAmmo.G12_ANTHRAX).setProjectiles(8).setDamage(1F/8F).setSpread(0.015F).setRicochetAngle(15).setCasing(new SpentCasing(CasingType.SHOTGUN).setColor(0x749300, SpentCasing.COLOR_CASE_12GA).setScale(0.75F).register("12GA_ANTHRAX")); g12_equestrian = new BulletConfig().setItem(EnumAmmoSecret.G12_EQUESTRIAN).setDamage(0F).setCasing(new SpentCasing(CasingType.SHOTGUN).setColor(SpentCasing.COLOR_CASE_EQUESTRIAN, SpentCasing.COLOR_CASE_12GA).setScale(0.75F).register("12gaEquestrian")); BulletConfig[] all = new BulletConfig[] {g12_bp, g12_bp_magnum, g12_bp_slug, g12, g12_slug, g12_flechette, g12_magnum, g12_explosive, g12_phosphorus, g12_anthrax}; @@ -68,7 +68,7 @@ public class XFactory12ga { ModItems.gun_maresleg = new ItemGunBaseNT(WeaponQuality.A_SIDE, new GunConfig() .dura(600).draw(10).inspect(39).reloadSequential(true).crosshair(Crosshair.L_CIRCLE).smoke(Lego.LAMBDA_STANDARD_SMOKE) .rec(new Receiver(0) - .dmg(12F).delay(20).reload(22, 10, 13, 0).jam(24).sound("hbm:weapon.fire.blackPowder", 1.0F, 1.0F) + .dmg(16F).delay(20).reload(22, 10, 13, 0).jam(24).sound("hbm:weapon.fire.blackPowder", 1.0F, 1.0F) .mag(new MagazineSingleReload(0, 6).addConfigs(all)) .offset(0.75, -0.0625, -0.1875) .setupStandardFire().recoil(Lego.LAMBDA_STANDARD_RECOIL)) @@ -78,7 +78,7 @@ public class XFactory12ga { ModItems.gun_maresleg_akimbo = new ItemGunBaseNT(WeaponQuality.B_SIDE, new GunConfig().dura(600).draw(5).inspect(39).reloadSequential(true).crosshair(Crosshair.L_CIRCLE).smoke(Lego.LAMBDA_STANDARD_SMOKE) .rec(new Receiver(0) - .dmg(12F).delay(20).reload(22, 10, 13, 0).jam(24).sound("hbm:weapon.fire.blackPowder", 1.0F, 1.0F) + .dmg(16F).delay(20).reload(22, 10, 13, 0).jam(24).sound("hbm:weapon.fire.blackPowder", 1.0F, 1.0F) .mag(new MagazineSingleReload(0, 6).addConfigs(all)) .offset(0.75, -0.0625, 0.1875D) .setupStandardFire().recoil(Lego.LAMBDA_STANDARD_RECOIL)) @@ -98,7 +98,7 @@ public class XFactory12ga { ModItems.gun_maresleg_broken = new ItemGunBaseNT(WeaponQuality.LEGENDARY, new GunConfig() .dura(0).draw(5).inspect(39).reloadSequential(true).crosshair(Crosshair.L_CIRCLE).smoke(Lego.LAMBDA_STANDARD_SMOKE) .rec(new Receiver(0) - .dmg(12F).delay(20).reload(22, 10, 13, 0).jam(24).sound("hbm:weapon.fire.blackPowder", 1.0F, 1.0F) + .dmg(32F).delay(20).reload(22, 10, 13, 0).jam(24).sound("hbm:weapon.fire.blackPowder", 1.0F, 1.0F) .mag(new MagazineSingleReload(0, 6).addConfigs(all)) .offset(0.75, -0.0625, -0.1875) .canFire(Lego.LAMBDA_STANDARD_CAN_FIRE).fire(Lego.LAMBDA_NOWEAR_FIRE).recoil(Lego.LAMBDA_STANDARD_RECOIL)) @@ -109,7 +109,7 @@ public class XFactory12ga { ModItems.gun_liberator = new ItemGunBaseNT(WeaponQuality.A_SIDE, new GunConfig() .dura(200).draw(20).inspect(21).reloadSequential(true).crosshair(Crosshair.L_CIRCLE).smoke(Lego.LAMBDA_STANDARD_SMOKE) .rec(new Receiver(0) - .dmg(12F).delay(20).rounds(4).reload(25, 15, 7, 0).jam(45).sound("hbm:weapon.fire.blackPowder", 1.0F, 1.0F) + .dmg(8F).delay(20).rounds(4).reload(25, 15, 7, 0).jam(45).sound("hbm:weapon.fire.blackPowder", 1.0F, 1.0F) .mag(new MagazineSingleReload(0, 4).addConfigs(all)) .offset(0.75, -0.0625, -0.1875) .setupStandardFire().recoil(Lego.LAMBDA_STANDARD_RECOIL)) @@ -120,7 +120,7 @@ public class XFactory12ga { ModItems.gun_spas12 = new ItemGunBaseNT(WeaponQuality.A_SIDE, new GunConfig() .dura(600).draw(20).inspect(39).reloadSequential(true).crosshair(Crosshair.L_CIRCLE).smoke(Lego.LAMBDA_STANDARD_SMOKE) .rec(new Receiver(0) - .dmg(12F).delay(20).reload(5, 10, 10, 10, 0).jam(36).sound("hbm:weapon.shotgunShoot", 1.0F, 1.0F) + .dmg(32F).delay(20).reload(5, 10, 10, 10, 0).jam(36).sound("hbm:weapon.shotgunShoot", 1.0F, 1.0F) .mag(new MagazineSingleReload(0, 8).addConfigs(all)) .offset(0.75, -0.0625, -0.1875) .setupStandardFire().recoil(Lego.LAMBDA_STANDARD_RECOIL)) @@ -131,7 +131,7 @@ public class XFactory12ga { ModItems.gun_autoshotgun = new ItemGunBaseNT(WeaponQuality.A_SIDE, new GunConfig() .dura(2_000).draw(10).inspect(33).reloadSequential(true).crosshair(Crosshair.L_CIRCLE).smoke(Lego.LAMBDA_STANDARD_SMOKE) .rec(new Receiver(0) - .dmg(15F).delay(10).auto(true).autoAfterDry(true).dryfireAfterAuto(true).reload(44).jam(19).sound("hbm:weapon.fire.blackPowder", 1.0F, 1.0F) + .dmg(48F).delay(10).auto(true).autoAfterDry(true).dryfireAfterAuto(true).reload(44).jam(19).sound("hbm:weapon.fire.blackPowder", 1.0F, 1.0F) .mag(new MagazineFullReload(0, 20).addConfigs(all)) .offset(0.75, -0.125, -0.25) .setupStandardFire().recoil(Lego.LAMBDA_STANDARD_RECOIL)) @@ -141,7 +141,7 @@ public class XFactory12ga { ModItems.gun_autoshotgun_sexy = new ItemGunBaseNT(WeaponQuality.LEGENDARY, new GunConfig() .dura(5_000).draw(10).inspect(33).reloadSequential(true).crosshair(Crosshair.L_CIRCLE).smoke(Lego.LAMBDA_STANDARD_SMOKE) .rec(new Receiver(0) - .dmg(15F).delay(1).auto(true).dryfireAfterAuto(true).reload(44).jam(19).sound("hbm:weapon.fire.blackPowder", 1.0F, 1.0F) + .dmg(64F).delay(1).auto(true).dryfireAfterAuto(true).reload(44).jam(19).sound("hbm:weapon.fire.blackPowder", 1.0F, 1.0F) .mag(new MagazineFullReload(0, 100).addConfigs(g12_equestrian, g12_bp, g12_bp_magnum, g12_bp_slug, g12, g12_slug, g12_flechette, g12_magnum, g12_explosive, g12_phosphorus, g12_anthrax)) .offset(0.75, -0.125, -0.25) .setupStandardFire().recoil(Lego.LAMBDA_STANDARD_RECOIL)) diff --git a/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory357.java b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory357.java index 379cffc6b..38bb00bbb 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory357.java +++ b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory357.java @@ -38,7 +38,7 @@ public class XFactory357 { ModItems.gun_light_revolver = new ItemGunBaseNT(WeaponQuality.A_SIDE, new GunConfig() .dura(300).draw(4).inspect(23).crosshair(Crosshair.CIRCLE).smoke(Lego.LAMBDA_STANDARD_SMOKE) .rec(new Receiver(0) - .dmg(10F).delay(16).reload(55).jam(45).sound("hbm:weapon.fire.blackPowder", 1.0F, 1.0F) + .dmg(7.5F).delay(16).reload(55).jam(45).sound("hbm:weapon.fire.blackPowder", 1.0F, 1.0F) .mag(new MagazineFullReload(0, 6).addConfigs(m357_bp, m357_sp, m357_fmj, m357_jhp, m357_ap, m357_express)) .offset(0.75, -0.0625, -0.3125D) .setupStandardFire().recoil(Lego.LAMBDA_STANDARD_RECOIL)) @@ -49,7 +49,7 @@ public class XFactory357 { ModItems.gun_light_revolver_dani = new ItemGunBaseNT(WeaponQuality.LEGENDARY, new GunConfig().dura(30_000).draw(20).inspect(23).crosshair(Crosshair.CIRCLE).smoke(Lego.LAMBDA_STANDARD_SMOKE) .rec(new Receiver(0) - .dmg(10F).delay(11).reload(55).jam(45).sound("hbm:weapon.fire.blackPowder", 1.0F, 1.0F) + .dmg(15F).delay(11).reload(55).jam(45).sound("hbm:weapon.fire.blackPowder", 1.0F, 1.0F) .mag(new MagazineFullReload(0, 6).addConfigs(m357_bp, m357_sp, m357_fmj, m357_jhp, m357_ap, m357_express)) .offset(0.75, -0.0625, 0.3125D) .setupStandardFire().recoil(Lego.LAMBDA_STANDARD_RECOIL)) @@ -58,7 +58,7 @@ public class XFactory357 { .anim(LAMBDA_DANI_ANIMS).orchestra(Orchestras.ORCHESTRA_DANI), new GunConfig().dura(30_000).draw(20).inspect(23).crosshair(Crosshair.CIRCLE).smoke(Lego.LAMBDA_STANDARD_SMOKE) .rec(new Receiver(0) - .dmg(10F).delay(11).reload(55).jam(45).sound("hbm:weapon.fire.blackPowder", 1.0F, 1.0F) + .dmg(15F).delay(11).reload(55).jam(45).sound("hbm:weapon.fire.blackPowder", 1.0F, 1.0F) .mag(new MagazineFullReload(1, 6).addConfigs(m357_bp, m357_sp, m357_fmj, m357_jhp, m357_ap, m357_express)) .offset(0.75, -0.0625, -0.3125D) .setupStandardFire().recoil(Lego.LAMBDA_STANDARD_RECOIL)) diff --git a/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory40mm.java b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory40mm.java index 60156b5ec..76314dcdb 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory40mm.java +++ b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory40mm.java @@ -148,7 +148,7 @@ public class XFactory40mm { ModItems.gun_congolake = new ItemGunBaseNT(WeaponQuality.A_SIDE, new GunConfig() .dura(400).draw(7).inspect(39).reloadSequential(true).crosshair(Crosshair.L_CIRCUMFLEX).smoke(LAMBDA_SMOKE) .rec(new Receiver(0) - .dmg(30F).delay(24).reload(16, 16, 16, 0).jam(0).sound("hbm:weapon.glShoot", 1.0F, 1.0F) + .dmg(20F).delay(24).reload(16, 16, 16, 0).jam(0).sound("hbm:weapon.glShoot", 1.0F, 1.0F) .mag(new MagazineSingleReload(0, 4).addConfigs(g40_he, g40_heat, g40_demo, g40_inc)) .offset(0.75, -0.0625, -0.1875D) .setupStandardFire().recoil(Lego.LAMBDA_STANDARD_RECOIL)) diff --git a/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory44.java b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory44.java index 6620e5fa4..de41c4037 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory44.java +++ b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory44.java @@ -59,7 +59,7 @@ public class XFactory44 { ModItems.gun_henry = new ItemGunBaseNT(WeaponQuality.A_SIDE, new GunConfig() .dura(300).draw(15).inspect(23).reloadSequential(true).crosshair(Crosshair.CIRCLE).smoke(Lego.LAMBDA_STANDARD_SMOKE) .rec(new Receiver(0) - .dmg(12F).delay(20).reload(25, 11, 14, 8).jam(45).sound("hbm:weapon.fire.blackPowder", 1.0F, 1.0F) + .dmg(10F).delay(20).reload(25, 11, 14, 8).jam(45).sound("hbm:weapon.fire.blackPowder", 1.0F, 1.0F) .mag(new MagazineSingleReload(0, 14).addConfigs(m44_bp, m44_sp, m44_fmj, m44_jhp, m44_ap, m44_express)) .offset(0.75, -0.0625, -0.1875D) .setupStandardFire().recoil(Lego.LAMBDA_STANDARD_RECOIL)) @@ -70,7 +70,7 @@ public class XFactory44 { ModItems.gun_heavy_revolver = new ItemGunBaseNT(WeaponQuality.A_SIDE, new GunConfig() .dura(600).draw(10).inspect(23).crosshair(Crosshair.L_CLASSIC).smoke(Lego.LAMBDA_STANDARD_SMOKE) .rec(new Receiver(0) - .dmg(10F).delay(14).reload(46).jam(23).sound("hbm:weapon.44Shoot", 1.0F, 1.0F) + .dmg(15F).delay(14).reload(46).jam(23).sound("hbm:weapon.44Shoot", 1.0F, 1.0F) .mag(new MagazineFullReload(0, 6).addConfigs(m44_bp, m44_sp, m44_fmj, m44_jhp, m44_ap, m44_express)) .offset(0.75, -0.0625, -0.3125D) .setupStandardFire().recoil(Lego.LAMBDA_STANDARD_RECOIL)) @@ -80,7 +80,7 @@ public class XFactory44 { ModItems.gun_heavy_revolver_lilmac = new ItemGunBaseNT(WeaponQuality.LEGENDARY, new GunConfig() .dura(31_000).draw(10).inspect(23).crosshair(Crosshair.L_CLASSIC).scopeTexture(scope_lilmac).smoke(Lego.LAMBDA_STANDARD_SMOKE) .rec(new Receiver(0) - .dmg(10F).delay(14).reload(46).jam(23).sound("hbm:weapon.44Shoot", 1.0F, 1.0F) + .dmg(30F).delay(14).reload(46).jam(23).sound("hbm:weapon.44Shoot", 1.0F, 1.0F) .mag(new MagazineFullReload(0, 6).addConfigs(m44_equestrian, m44_bp, m44_sp, m44_fmj, m44_jhp, m44_ap, m44_express)) .offset(0.75, -0.0625, -0.3125D) .setupStandardFire().recoil(Lego.LAMBDA_STANDARD_RECOIL)) @@ -91,7 +91,7 @@ public class XFactory44 { ModItems.gun_hangman = new ItemGunBaseNT(WeaponQuality.LEGENDARY, new GunConfig() .dura(600).draw(10).inspect(31).inspectCancel(false).crosshair(Crosshair.CIRCLE).smoke(Lego.LAMBDA_STANDARD_SMOKE) .rec(new Receiver(0) - .dmg(10F).delay(10).reload(46).jam(23).sound("hbm:weapon.44Shoot", 1.0F, 1.0F) + .dmg(25F).delay(10).reload(46).jam(23).sound("hbm:weapon.44Shoot", 1.0F, 1.0F) .mag(new MagazineFullReload(0, 8).addConfigs(m44_bp, m44_sp, m44_fmj, m44_jhp, m44_ap, m44_express)) .offset(1, -0.0625 * 2.5, -0.25D) .setupStandardFire().recoil(Lego.LAMBDA_STANDARD_RECOIL)) diff --git a/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory50.java b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory50.java index f95114036..b76740d7b 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory50.java +++ b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory50.java @@ -46,7 +46,7 @@ public class XFactory50 { ModItems.gun_m2 = new ItemGunBaseNT(WeaponQuality.A_SIDE, new GunConfig() .dura(3_000).draw(10).inspect(31).crosshair(Crosshair.L_CIRCLE).smoke(LAMBDA_SMOKE) .rec(new Receiver(0) - .dmg(5F).delay(2).dry(10).auto(true).spread(0.005F).sound("hbm:weapon.fire.blackPowder", 1.0F, 1.0F) + .dmg(7.5F).delay(2).dry(10).auto(true).spread(0.005F).sound("hbm:weapon.fire.blackPowder", 1.0F, 1.0F) .mag(new MagazineBelt().addConfigs(bmg50_sp, bmg50_fmj, bmg50_jhp, bmg50_ap, bmg50_du)) .offset(1, -0.0625 * 2.5, -0.25D) .setupStandardFire().recoil(Lego.LAMBDA_STANDARD_RECOIL)) diff --git a/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory556mm.java b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory556mm.java index 28abc2e62..1d7a628c2 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory556mm.java +++ b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory556mm.java @@ -47,7 +47,7 @@ public class XFactory556mm { ModItems.gun_g3 = new ItemGunBaseNT(WeaponQuality.A_SIDE, new GunConfig() .dura(3_000).draw(10).inspect(33).crosshair(Crosshair.CIRCLE).smoke(LAMBDA_SMOKE) .rec(new Receiver(0) - .dmg(15F).delay(2).auto(true).dry(15).spread(0.0F).reload(50).jam(47).sound("hbm:weapon.fire.blackPowder", 1.0F, 1.0F) + .dmg(5F).delay(2).auto(true).dry(15).spread(0.0F).reload(50).jam(47).sound("hbm:weapon.fire.blackPowder", 1.0F, 1.0F) .mag(new MagazineFullReload(0, 30).addConfigs(r556_sp, r556_fmj, r556_jhp, r556_ap)) .offset(1, -0.0625 * 2.5, -0.25D) .setupStandardFire().recoil(Lego.LAMBDA_STANDARD_RECOIL)) @@ -58,7 +58,7 @@ public class XFactory556mm { ModItems.gun_stg77 = new ItemGunBaseNT(WeaponQuality.A_SIDE, new GunConfig() .dura(3_000).draw(10).inspect(125).crosshair(Crosshair.CIRCLE).smoke(LAMBDA_SMOKE) .rec(new Receiver(0) - .dmg(15F).delay(2).dry(15).auto(true).spread(0.0F).reload(46).jam(0).sound("hbm:weapon.fire.blackPowder", 1.0F, 1.0F) + .dmg(10F).delay(2).dry(15).auto(true).spread(0.0F).reload(46).jam(0).sound("hbm:weapon.fire.blackPowder", 1.0F, 1.0F) .mag(new MagazineFullReload(0, 30).addConfigs(r556_sp, r556_fmj, r556_jhp, r556_ap)) .offset(1, -0.0625 * 2.5, -0.25D) .setupStandardFire().recoil(Lego.LAMBDA_STANDARD_RECOIL)) diff --git a/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory75Bolt.java b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory75Bolt.java index 5caea7441..2d318cbc8 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory75Bolt.java +++ b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory75Bolt.java @@ -40,7 +40,7 @@ public class XFactory75Bolt { ModItems.gun_bolter = new ItemGunBaseNT(WeaponQuality.A_SIDE, new GunConfig() .dura(3_000).draw(20).inspect(31).crosshair(Crosshair.L_CIRCLE).smoke(LAMBDA_SMOKE) .rec(new Receiver(0) - .dmg(5F).delay(2).auto(true).spread(0.005F).reload(40).jam(55).sound("hbm:weapon.fire.blackPowder", 1.0F, 1.0F) + .dmg(15F).delay(2).auto(true).spread(0.005F).reload(40).jam(55).sound("hbm:weapon.fire.blackPowder", 1.0F, 1.0F) .mag(new MagazineFullReload(0, 30).addConfigs(b75, b75_inc, b75_exp)) .offset(1, -0.0625 * 2.5, -0.25D) .setupStandardFire().recoil(Lego.LAMBDA_STANDARD_RECOIL)) diff --git a/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory762mm.java b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory762mm.java index de794e781..854f6d6f8 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory762mm.java +++ b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory762mm.java @@ -55,7 +55,7 @@ public class XFactory762mm { ModItems.gun_carbine = new ItemGunBaseNT(WeaponQuality.A_SIDE, new GunConfig() .dura(3_000).draw(10).inspect(31).reloadSequential(true).crosshair(Crosshair.CIRCLE).smoke(LAMBDA_SMOKE) .rec(new Receiver(0) - .dmg(5F).delay(5).dry(15).spread(0.0F).reload(30, 0, 15, 0).jam(60).sound("hbm:weapon.fire.blackPowder", 1.0F, 1.0F) + .dmg(15F).delay(5).dry(15).spread(0.0F).reload(30, 0, 15, 0).jam(60).sound("hbm:weapon.fire.blackPowder", 1.0F, 1.0F) .mag(new MagazineFullReload(0, 14).addConfigs(r762_sp, r762_fmj, r762_jhp, r762_ap, r762_du)) .offset(1, -0.0625 * 2.5, -0.25D) .setupStandardFire().recoil(Lego.LAMBDA_STANDARD_RECOIL)) @@ -66,7 +66,7 @@ public class XFactory762mm { ModItems.gun_minigun = new ItemGunBaseNT(WeaponQuality.A_SIDE, new GunConfig() .dura(50_000).draw(20).inspect(20).crosshair(Crosshair.L_CIRCLE).smoke(LAMBDA_SMOKE) .rec(new Receiver(0) - .dmg(10F).delay(1).auto(true).dry(15).spread(0.01F).sound("hbm:weapon.fire.blackPowder", 1.0F, 1.0F) + .dmg(6F).delay(1).auto(true).dry(15).spread(0.01F).sound("hbm:weapon.fire.blackPowder", 1.0F, 1.0F) .mag(new MagazineBelt().addConfigs(r762_sp, r762_fmj, r762_jhp, r762_ap, r762_du)) .offset(1, -0.0625 * 2.5, -0.25D) .setupStandardFire().recoil(Lego.LAMBDA_STANDARD_RECOIL)) @@ -76,7 +76,7 @@ public class XFactory762mm { ModItems.gun_minigun_lacunae = new ItemGunBaseNT(WeaponQuality.LEGENDARY, new GunConfig() .dura(50_000).draw(20).inspect(20).crosshair(Crosshair.L_CIRCLE) .rec(new Receiver(0) - .dmg(10F).delay(1).auto(true).dry(15).reload(15).spread(0.01F).sound("hbm:weapon.fire.blackPowder", 1.0F, 1.0F) + .dmg(12F).delay(1).auto(true).dry(15).reload(15).spread(0.01F).sound("hbm:weapon.fire.blackPowder", 1.0F, 1.0F) .mag(new MagazineFullReload(0, 200).addConfigs(energy_lacunae, energy_lacunae_overcharge)) .offset(1, -0.0625 * 2.5, -0.25D) .setupStandardFire().recoil(Lego.LAMBDA_STANDARD_RECOIL)) diff --git a/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory9mm.java b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory9mm.java index ef727c811..37564377a 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory9mm.java +++ b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory9mm.java @@ -45,7 +45,7 @@ public class XFactory9mm { ModItems.gun_greasegun = new ItemGunBaseNT(WeaponQuality.A_SIDE, new GunConfig() .dura(3_000).draw(20).inspect(31).crosshair(Crosshair.L_CIRCLE).smoke(LAMBDA_SMOKE) .rec(new Receiver(0) - .dmg(5F).delay(4).dry(40).auto(true).spread(0.015F).reload(60).jam(55).sound("hbm:weapon.fire.blackPowder", 1.0F, 1.0F) + .dmg(3F).delay(4).dry(40).auto(true).spread(0.015F).reload(60).jam(55).sound("hbm:weapon.fire.blackPowder", 1.0F, 1.0F) .mag(new MagazineFullReload(0, 30).addConfigs(p9_sp, p9_fmj, p9_jhp, p9_ap)) .offset(1, -0.0625 * 2.5, -0.25D) .setupStandardFire().recoil(Lego.LAMBDA_STANDARD_RECOIL)) @@ -56,7 +56,7 @@ public class XFactory9mm { ModItems.gun_lag = new ItemGunBaseNT(WeaponQuality.A_SIDE, new GunConfig() .dura(1_700).draw(15).inspect(31).crosshair(Crosshair.CIRCLE).smoke(LAMBDA_SMOKE) .rec(new Receiver(0) - .dmg(15F).delay(4).dry(40).spread(0.005F).reload(60).jam(55).sound("hbm:weapon.fire.blackPowder", 1.0F, 1.0F) + .dmg(25F).delay(4).dry(40).spread(0.005F).reload(60).jam(55).sound("hbm:weapon.fire.blackPowder", 1.0F, 1.0F) .mag(new MagazineFullReload(0, 17).addConfigs(p9_sp, p9_fmj, p9_jhp, p9_ap)) .offset(1, -0.0625 * 2.5, -0.25D) .setupStandardFire().recoil(Lego.LAMBDA_STANDARD_RECOIL)) @@ -67,7 +67,7 @@ public class XFactory9mm { ModItems.gun_uzi = new ItemGunBaseNT(WeaponQuality.A_SIDE, new GunConfig() .dura(3_000).draw(15).inspect(31).crosshair(Crosshair.CIRCLE).smoke(LAMBDA_SMOKE) .rec(new Receiver(0) - .dmg(7.5F).delay(2).dry(25).auto(true).spread(0.005F).reload(55).jam(50).sound("hbm:weapon.fire.blackPowder", 1.0F, 1.0F) + .dmg(3F).delay(2).dry(25).auto(true).spread(0.005F).reload(55).jam(50).sound("hbm:weapon.fire.blackPowder", 1.0F, 1.0F) .mag(new MagazineFullReload(0, 30).addConfigs(p9_sp, p9_fmj, p9_jhp, p9_ap)) .offset(1, -0.0625 * 2.5, -0.25D) .setupStandardFire().recoil(Lego.LAMBDA_STANDARD_RECOIL)) @@ -77,7 +77,7 @@ public class XFactory9mm { ModItems.gun_uzi_akimbo = new ItemGunBaseNT(WeaponQuality.B_SIDE, new GunConfig().dura(3_000).draw(15).inspect(31).crosshair(Crosshair.CIRCLE).smoke(LAMBDA_SMOKE) .rec(new Receiver(0) - .dmg(7.5F).delay(2).dry(25).auto(true).spread(0.005F).reload(55).jam(50).sound("hbm:weapon.fire.blackPowder", 1.0F, 1.0F) + .dmg(3F).delay(2).dry(25).auto(true).spread(0.005F).reload(55).jam(50).sound("hbm:weapon.fire.blackPowder", 1.0F, 1.0F) .mag(new MagazineFullReload(0, 30).addConfigs(p9_sp, p9_fmj, p9_jhp, p9_ap)) .offset(1, -0.0625 * 2.5, 0.375D) .setupStandardFire().recoil(Lego.LAMBDA_STANDARD_RECOIL)) diff --git a/src/main/java/com/hbm/items/weapon/sedna/factory/XFactoryAccelerator.java b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactoryAccelerator.java index 68c46b3eb..0866fd3ff 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/factory/XFactoryAccelerator.java +++ b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactoryAccelerator.java @@ -95,7 +95,7 @@ public class XFactoryAccelerator { ModItems.gun_tau = new ItemGunBaseNT(WeaponQuality.A_SIDE, new GunConfig() .dura(6_400).draw(10).inspect(10).crosshair(Crosshair.CIRCLE) .rec(new Receiver(0) - .dmg(10F).delay(4).auto(true).spread(0F) + .dmg(25F).delay(4).auto(true).spread(0F) .mag(new MagazineBelt().addConfigs(tau_uranium)) .offset(1, -0.0625 * 2.5, -0.25D) .setupStandardFire().recoil(Lego.LAMBDA_STANDARD_RECOIL)) @@ -111,7 +111,7 @@ public class XFactoryAccelerator { ModItems.gun_coilgun = new ItemGunBaseNT(WeaponQuality.A_SIDE, new GunConfig() .dura(400).draw(5).inspect(39).crosshair(Crosshair.L_CIRCUMFLEX) .rec(new Receiver(0) - .dmg(15F).delay(5).reload(20).jam(33).sound("hbm:weapon.coilgunShoot", 1.0F, 1.0F) + .dmg(35F).delay(5).reload(20).jam(33).sound("hbm:weapon.coilgunShoot", 1.0F, 1.0F) .mag(new MagazineSingleReload(0, 1).addConfigs(coil_tungsten, coil_ferrouranium)) .offset(0.75, -0.0625, -0.1875D) .setupStandardFire().recoil(Lego.LAMBDA_STANDARD_RECOIL)) diff --git a/src/main/java/com/hbm/items/weapon/sedna/factory/XFactoryCatapult.java b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactoryCatapult.java index 46270301c..301828e7d 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/factory/XFactoryCatapult.java +++ b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactoryCatapult.java @@ -139,7 +139,7 @@ public class XFactoryCatapult { ModItems.gun_fatman = new ItemGunBaseNT(WeaponQuality.A_SIDE, new GunConfig() .dura(300).draw(20).inspect(30).crosshair(Crosshair.L_CIRCUMFLEX).hideCrosshair(false) .rec(new Receiver(0) - .dmg(25F).delay(10).reload(57).jam(40).sound("hbm:weapon.fire.fatman", 1.0F, 1.0F) + .dmg(100F).delay(10).reload(57).jam(40).sound("hbm:weapon.fire.fatman", 1.0F, 1.0F) .mag(new MagazineSingleReload(0, 1).addConfigs(nuke_standard, nuke_demo, nuke_high, nuke_tots, nuke_hive)) .offset(1, -0.0625 * 1.5, -0.1875D) .setupStandardFire().recoil(Lego.LAMBDA_STANDARD_RECOIL)) diff --git a/src/main/java/com/hbm/items/weapon/sedna/factory/XFactoryEnergy.java b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactoryEnergy.java index 84156627b..dc57410ae 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/factory/XFactoryEnergy.java +++ b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactoryEnergy.java @@ -98,7 +98,7 @@ public class XFactoryEnergy { ModItems.gun_tesla_cannon = new ItemGunBaseNT(WeaponQuality.A_SIDE, new GunConfig() .dura(2_000).draw(10).inspect(33).reloadSequential(true).crosshair(Crosshair.CIRCLE) .rec(new Receiver(0) - .dmg(15F).delay(20).reload(44).jam(19).sound("hbm:weapon.fire.blackPowder", 1.0F, 1.0F) + .dmg(35F).delay(20).reload(44).jam(19).sound("hbm:weapon.fire.blackPowder", 1.0F, 1.0F) .mag(new MagazineBelt().addConfigs(energy_tesla, energy_tesla_overcharge)) .offset(0.75, 0, -0.375) .setupStandardFire().recoil(Lego.LAMBDA_STANDARD_RECOIL)) @@ -109,7 +109,7 @@ public class XFactoryEnergy { ModItems.gun_lasrifle = new ItemGunBaseNT(WeaponQuality.A_SIDE, new GunConfig() .dura(2_000).draw(10).inspect(26).reloadSequential(true).crosshair(Crosshair.CIRCLE).scopeTexture(scope_luna) .rec(new Receiver(0) - .dmg(15F).delay(8).reload(44).jam(36).sound("hbm:weapon.fire.blackPowder", 1.0F, 1.0F) + .dmg(50F).delay(8).reload(44).jam(36).sound("hbm:weapon.fire.blackPowder", 1.0F, 1.0F) .mag(new MagazineFullReload(0, 24).addConfigs(energy_las, energy_las_overcharge)) .offset(0.75, -0.0625 * 1.5, -0.1875) .setupStandardFire().recoil(Lego.LAMBDA_STANDARD_RECOIL)) diff --git a/src/main/java/com/hbm/items/weapon/sedna/factory/XFactoryFlamer.java b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactoryFlamer.java index b72bc8e6a..1ff33433c 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/factory/XFactoryFlamer.java +++ b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactoryFlamer.java @@ -134,7 +134,7 @@ public class XFactoryFlamer { ModItems.gun_flamer = new ItemGunBaseNT(WeaponQuality.A_SIDE, new GunConfig() .dura(20_000).draw(10).inspect(17).crosshair(Crosshair.L_CIRCLE) .rec(new Receiver(0) - .dmg(10F).delay(1).auto(true).reload(90).jam(17) + .dmg(1F).delay(1).auto(true).reload(90).jam(17) .mag(new MagazineFullReload(0, 300).addConfigs(flame_diesel, flame_gas, flame_napalm, flame_balefire)) .offset(0.75, -0.0625, -0.25D) .setupStandardFire()) @@ -144,7 +144,7 @@ public class XFactoryFlamer { ModItems.gun_flamer_topaz = new ItemGunBaseNT(WeaponQuality.B_SIDE, new GunConfig() .dura(20_000).draw(10).inspect(17).crosshair(Crosshair.L_CIRCLE) .rec(new Receiver(0) - .dmg(10F).delay(1).auto(true).reload(90).jam(17) + .dmg(1.5F).delay(1).auto(true).reload(90).jam(17) .mag(new MagazineFullReload(0, 500).addConfigs(flame_topaz_diesel, flame_topaz_gas, flame_topaz_napalm, flame_topaz_balefire)) .offset(0.75, -0.0625, -0.25D) .setupStandardFire()) @@ -154,7 +154,7 @@ public class XFactoryFlamer { ModItems.gun_flamer_daybreaker = new ItemGunBaseNT(WeaponQuality.LEGENDARY, new GunConfig() .dura(20_000).draw(10).inspect(17).crosshair(Crosshair.L_CIRCLE) .rec(new Receiver(0) - .dmg(10F).delay(10).auto(true).reload(90).jam(17).sound("hbm:weapon.fire.blackPowder", 1.0F, 1.0F) + .dmg(25F).delay(10).auto(true).reload(90).jam(17).sound("hbm:weapon.fire.blackPowder", 1.0F, 1.0F) .mag(new MagazineFullReload(0, 50).addConfigs(flame_daybreaker_diesel, flame_daybreaker_gas, flame_daybreaker_napalm, flame_daybreaker_balefire)) .offset(0.75, -0.0625, -0.25D) .setupStandardFire()) diff --git a/src/main/java/com/hbm/items/weapon/sedna/factory/XFactoryFolly.java b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactoryFolly.java index 4dc66aeb7..c4a9e49e8 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/factory/XFactoryFolly.java +++ b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactoryFolly.java @@ -102,7 +102,7 @@ public class XFactoryFolly { ModItems.gun_folly = new ItemGunBaseNT(WeaponQuality.LEGENDARY, new GunConfig() .dura(0).draw(40).crosshair(Crosshair.NONE) .rec(new Receiver(0) - .dmg(15F).delay(26).dryfire(false).reload(160).jam(0).sound("hbm:weapon.fire.loudestNoiseOnEarth", 100.0F, 1.0F) + .dmg(1_000F).delay(26).dryfire(false).reload(160).jam(0).sound("hbm:weapon.fire.loudestNoiseOnEarth", 100.0F, 1.0F) .mag(new MagazineSingleReload(0, 1).addConfigs(folly_sm, folly_nuke)) .offset(0.75, -0.0625, -0.1875D) .canFire(LAMBDA_CAN_FIRE).fire(LAMBDA_FIRE).recoil(Lego.LAMBDA_STANDARD_RECOIL)) diff --git a/src/main/java/com/hbm/items/weapon/sedna/factory/XFactoryRocket.java b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactoryRocket.java index cbf9b835e..da062c452 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/factory/XFactoryRocket.java +++ b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactoryRocket.java @@ -160,7 +160,7 @@ public class XFactoryRocket { ModItems.gun_stinger = new ItemGunStinger(WeaponQuality.A_SIDE, new GunConfig() .dura(300).draw(7).inspect(40).crosshair(Crosshair.L_BOX_OUTLINE) .rec(new Receiver(0) - .dmg(25F).delay(5).reload(50).jam(40).sound("hbm:weapon.rpgShoot", 1.0F, 1.0F) + .dmg(35F).delay(5).reload(50).jam(40).sound("hbm:weapon.rpgShoot", 1.0F, 1.0F) .mag(new MagazineSingleReload(0, 1).addConfigs(rocket_rpzb)) .offset(1, -0.0625 * 1.5, -0.1875D) .setupLockonFire().recoil(Lego.LAMBDA_STANDARD_RECOIL)) @@ -171,7 +171,7 @@ public class XFactoryRocket { ModItems.gun_quadro = new ItemGunBaseNT(WeaponQuality.A_SIDE, new GunConfig() .dura(400).draw(7).inspect(40).crosshair(Crosshair.L_CIRCUMFLEX).hideCrosshair(false) .rec(new Receiver(0) - .dmg(25F).delay(10).reload(55).jam(40).sound("hbm:weapon.rpgShoot", 1.0F, 1.0F) + .dmg(40F).delay(10).reload(55).jam(40).sound("hbm:weapon.rpgShoot", 1.0F, 1.0F) .mag(new MagazineFullReload(0, 4).addConfigs(rocket_qd)) .offset(1, -0.0625 * 1.5, -0.1875D) .setupStandardFire().recoil(Lego.LAMBDA_STANDARD_RECOIL)) @@ -182,7 +182,7 @@ public class XFactoryRocket { ModItems.gun_missile_launcher = new ItemGunBaseNT(WeaponQuality.A_SIDE, new GunConfig() .dura(500).draw(20).inspect(40).crosshair(Crosshair.L_CIRCUMFLEX).hideCrosshair(false) .rec(new Receiver(0) - .dmg(25F).delay(5).reload(48).jam(33).sound("hbm:weapon.rpgShoot", 1.0F, 1.0F) + .dmg(50F).delay(5).reload(48).jam(33).sound("hbm:weapon.rpgShoot", 1.0F, 1.0F) .mag(new MagazineSingleReload(0, 1).addConfigs(rocket_ml)) .offset(1, -0.0625 * 1.5, -0.1875D) .setupStandardFire().recoil(Lego.LAMBDA_STANDARD_RECOIL)) diff --git a/src/main/java/com/hbm/main/ClientProxy.java b/src/main/java/com/hbm/main/ClientProxy.java index 20f05dd4b..56e67b0d4 100644 --- a/src/main/java/com/hbm/main/ClientProxy.java +++ b/src/main/java/com/hbm/main/ClientProxy.java @@ -2037,21 +2037,14 @@ public class ClientProxy extends ServerProxy { } } - private HashMap vanished = new HashMap(); - - public void vanish(int ent) { - vanished.put(ent, System.currentTimeMillis() + 2000); - } + private static HashMap vanished = new HashMap(); + public static void vanish(int ent) { vanished.put(ent, System.currentTimeMillis() + 2000); } + public static void vanish(int ent, int duration) { vanished.put(ent, System.currentTimeMillis() + duration); } @Override public boolean isVanished(Entity e) { - - if(e == null) - return false; - - if(!this.vanished.containsKey(e.getEntityId())) - return false; - + if(e == null) return false; + if(!this.vanished.containsKey(e.getEntityId())) return false; return this.vanished.get(e.getEntityId()) > System.currentTimeMillis(); } diff --git a/src/main/java/com/hbm/main/ModEventHandlerClient.java b/src/main/java/com/hbm/main/ModEventHandlerClient.java index fbe716233..7d343e2ca 100644 --- a/src/main/java/com/hbm/main/ModEventHandlerClient.java +++ b/src/main/java/com/hbm/main/ModEventHandlerClient.java @@ -1313,6 +1313,7 @@ public class ModEventHandlerClient { public static IIcon particleBase; public static IIcon particleLeaf; public static IIcon particleSplash; + public static IIcon particleAshes; @SubscribeEvent public void onTextureStitch(TextureStitchEvent.Pre event) { @@ -1321,6 +1322,7 @@ public class ModEventHandlerClient { particleBase = event.map.registerIcon(RefStrings.MODID + ":particle/particle_base"); particleLeaf = event.map.registerIcon(RefStrings.MODID + ":particle/dead_leaf"); particleSplash = event.map.registerIcon(RefStrings.MODID + ":particle/particle_splash"); + particleAshes = event.map.registerIcon(RefStrings.MODID + ":particle/particle_ashes"); } } diff --git a/src/main/java/com/hbm/particle/ParticleAshes.java b/src/main/java/com/hbm/particle/ParticleAshes.java new file mode 100644 index 000000000..636ca2835 --- /dev/null +++ b/src/main/java/com/hbm/particle/ParticleAshes.java @@ -0,0 +1,87 @@ +package com.hbm.particle; + +import com.hbm.main.ModEventHandlerClient; +import com.hbm.util.Vec3NT; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.client.renderer.Tessellator; +import net.minecraft.world.World; + +@SideOnly(Side.CLIENT) +public class ParticleAshes extends EntityFXRotating { + + public ParticleAshes(World world, double x, double y, double z, float scale) { + super(world, x, y, z); + particleIcon = ModEventHandlerClient.particleBase; + this.particleMaxAge = 200 + rand.nextInt(15); + this.particleScale = scale * 0.9F + rand.nextFloat() * 0.2F; + + this.particleGravity = 0.01F; + + this.particleRed = this.particleGreen = this.particleBlue = this.rand.nextFloat() * 0.1F + 0.1F; + } + + @Override + public void onUpdate() { + this.prevPosX = this.posX; + this.prevPosY = this.posY; + this.prevPosZ = this.posZ; + + this.particleAge++; + + if(this.particleAge >= this.particleMaxAge) { + this.setDead(); + } + + this.motionY -= particleGravity; + this.prevRotationPitch = this.rotationPitch; + + if(!this.onGround) this.rotationPitch += 2 * ((this.getEntityId() % 2) - 0.5); + + this.motionX *= 0.95D; + this.motionY *= 0.99D; + this.motionZ *= 0.95D; + + boolean wasOnGround = this.onGround; + this.moveEntity(this.motionX, this.motionY, this.motionZ); + if(!wasOnGround && this.onGround) this.rotationPitch = rand.nextFloat() * 360F; + + if(this.getEntityId() % 5 == 0 && this.onGround && rand.nextInt(15) == 0) { + worldObj.spawnParticle("smoke", posX, posY + 0.125, posZ, 0, 0.05, 0); + } + } + + @Override + public void renderParticle(Tessellator tess, float interp, float sX, float sY, float sZ, float dX, float dZ) { + + float timeLeft = this.particleMaxAge - (this.particleAge + interp); + + if(timeLeft < 40) { + this.particleAlpha = timeLeft / 40F; + } else { + this.particleAlpha = 1F; + } + + tess.setColorRGBA_F(this.particleRed, this.particleGreen, this.particleBlue, this.particleAlpha); + tess.setNormal(0.0F, 1.0F, 0.0F); + + if(this.onGround) { + float pX = (float) (this.prevPosX + (this.posX - this.prevPosX) * (double) interp - interpPosX); + float pY = (float) (this.prevPosY + (this.posY - this.prevPosY) * (double) interp - interpPosY); + float pZ = (float) (this.prevPosZ + (this.posZ - this.prevPosZ) * (double) interp - interpPosZ); + + Vec3NT vec = new Vec3NT(particleScale, 0, particleScale).rotateAroundYDeg(this.rotationPitch); + + tess.addVertexWithUV(pX + vec.xCoord, pY + 0.05, pZ + vec.zCoord, particleIcon.getMaxU(), particleIcon.getMaxV()); + vec.rotateAroundYDeg(-90); + tess.addVertexWithUV(pX + vec.xCoord, pY + 0.05, pZ + vec.zCoord, particleIcon.getMaxU(), particleIcon.getMinV()); + vec.rotateAroundYDeg(-90); + tess.addVertexWithUV(pX + vec.xCoord, pY + 0.05, pZ + vec.zCoord, particleIcon.getMinU(), particleIcon.getMinV()); + vec.rotateAroundYDeg(-90); + tess.addVertexWithUV(pX + vec.xCoord, pY + 0.05, pZ + vec.zCoord, particleIcon.getMinU(), particleIcon.getMaxV()); + } else { + renderParticleRotated(tess, interp, sX, sY, sZ, dX, dZ, this.particleScale); + } + } +} diff --git a/src/main/java/com/hbm/particle/helper/AshesCreator.java b/src/main/java/com/hbm/particle/helper/AshesCreator.java new file mode 100644 index 000000000..2076e6baa --- /dev/null +++ b/src/main/java/com/hbm/particle/helper/AshesCreator.java @@ -0,0 +1,51 @@ +package com.hbm.particle.helper; + +import java.util.Random; + +import com.hbm.main.ClientProxy; +import com.hbm.particle.ParticleAshes; + +import net.minecraft.client.Minecraft; +import net.minecraft.client.particle.EntityFlameFX; +import net.minecraft.client.renderer.texture.TextureManager; +import net.minecraft.entity.Entity; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.world.World; + +public class AshesCreator implements IParticleCreator { + + public static void composeEffect(World world, Entity toPulverize, int ashesCount, float ashesScale) { + + NBTTagCompound data = new NBTTagCompound(); + data.setString("type", "ashes"); + data.setInteger("entityID", toPulverize.getEntityId()); + data.setInteger("ashesCount", ashesCount); + data.setFloat("ashesScale", ashesScale); + IParticleCreator.sendPacket(world, toPulverize.posX, toPulverize.posY, toPulverize.posZ, 100, data); + } + + @Override + public void makeParticle(World world, EntityPlayer player, TextureManager texman, Random rand, double x, double y, double z, NBTTagCompound data) { + + int entityID = data.getInteger("entityID"); + Entity entity = world.getEntityByID(entityID); + if(entity == null) return; + + ClientProxy.vanish(entityID); + + int amount = data.getInteger("ashesCount"); + float scale = data.getFloat("ashesScale"); + + for(int i = 0; i < amount; i++) { + ParticleAshes particle = new ParticleAshes(world, + entity.posX + (entity.width + scale * 2) * (rand.nextDouble() - 0.5), + entity.posY + entity.height * rand.nextDouble(), + entity.posZ + (entity.width + scale * 2) * (rand.nextDouble() - 0.5), + scale); + Minecraft.getMinecraft().effectRenderer.addEffect(particle); + EntityFlameFX flame = new EntityFlameFX(world, particle.posX, particle.posY, particle.posZ, 0.0, 0.0, 0.0); + Minecraft.getMinecraft().effectRenderer.addEffect(flame); + } + } +} diff --git a/src/main/java/com/hbm/particle/helper/BlackPowderHelper.java b/src/main/java/com/hbm/particle/helper/BlackPowderCreator.java similarity index 97% rename from src/main/java/com/hbm/particle/helper/BlackPowderHelper.java rename to src/main/java/com/hbm/particle/helper/BlackPowderCreator.java index 72aa720c1..6705449f7 100644 --- a/src/main/java/com/hbm/particle/helper/BlackPowderHelper.java +++ b/src/main/java/com/hbm/particle/helper/BlackPowderCreator.java @@ -14,7 +14,7 @@ import net.minecraft.entity.player.EntityPlayer; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.world.World; -public class BlackPowderHelper implements IParticleCreator { +public class BlackPowderCreator implements IParticleCreator { public static void composeEffect(World world, double x, double y, double z, double headingX, double headingY, double headingZ, int cloudCount, float cloudScale, float cloudSpeedMult, int sparkCount, float sparkSpeedMult) { diff --git a/src/main/java/com/hbm/particle/helper/ParticleCreators.java b/src/main/java/com/hbm/particle/helper/ParticleCreators.java index 1e93ed27f..023233b8b 100644 --- a/src/main/java/com/hbm/particle/helper/ParticleCreators.java +++ b/src/main/java/com/hbm/particle/helper/ParticleCreators.java @@ -11,6 +11,7 @@ public class ParticleCreators { particleCreators.put("casingNT", new CasingCreator()); particleCreators.put("flamethrower", new FlameCreator()); particleCreators.put("explosionSmall", new ExplosionSmallCreator()); - particleCreators.put("blackPowder", new BlackPowderHelper()); + particleCreators.put("blackPowder", new BlackPowderCreator()); + particleCreators.put("ashes", new AshesCreator()); } } diff --git a/src/main/resources/assets/hbm/textures/blocks/particle/particle_ashes.png b/src/main/resources/assets/hbm/textures/blocks/particle/particle_ashes.png new file mode 100644 index 0000000000000000000000000000000000000000..4a60bfb70397ea0a0c3d873172ec0cfd384b431e GIT binary patch literal 190 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#VfuwBAoQ!W+K8n2$j(P9q z?7HBauHUXr)xA%Z)=iAaNiN6}^OZN5%vmb3$r=4~G^5@kq5ugJYJYD@<);T3K0RUJ{Lrnkx literal 0 HcmV?d00001 From 49429c73d982dd1c540428c28bf3d8866b70d9a1 Mon Sep 17 00:00:00 2001 From: Bob Date: Tue, 3 Dec 2024 22:27:09 +0100 Subject: [PATCH 13/24] kill me --- .../hbm/commands/CommandReloadRecipes.java | 2 + .../java/com/hbm/entity/mob/EntityDummy.java | 2 +- .../hbm/items/weapon/sedna/BulletConfig.java | 4 +- .../hbm/items/weapon/sedna/ItemGunBaseNT.java | 2 +- .../weapon/sedna/factory/XFactory22lr.java | 2 +- .../weapon/sedna/factory/XFactoryFolly.java | 2 +- .../render/entity/projectile/RenderBeam.java | 2 +- .../com/hbm/util/DamageResistanceHandler.java | 108 +++++++++++++----- .../java/com/hbm/util/EntityDamageUtil.java | 2 +- 9 files changed, 90 insertions(+), 36 deletions(-) diff --git a/src/main/java/com/hbm/commands/CommandReloadRecipes.java b/src/main/java/com/hbm/commands/CommandReloadRecipes.java index 8b2a939eb..402b61edb 100644 --- a/src/main/java/com/hbm/commands/CommandReloadRecipes.java +++ b/src/main/java/com/hbm/commands/CommandReloadRecipes.java @@ -3,6 +3,7 @@ package com.hbm.commands; import com.hbm.config.ItemPoolConfigJSON; import com.hbm.inventory.recipes.loader.SerializableRecipe; import com.hbm.util.ChatBuilder; +import com.hbm.util.DamageResistanceHandler; import net.minecraft.command.CommandBase; import net.minecraft.command.ICommandSender; @@ -26,6 +27,7 @@ public class CommandReloadRecipes extends CommandBase { try { SerializableRecipe.initialize(); ItemPoolConfigJSON.initialize(); + DamageResistanceHandler.init(); sender.addChatMessage(new ChatComponentText(EnumChatFormatting.YELLOW + "Reload complete :)")); } catch(Exception ex) { sender.addChatMessage(ChatBuilder.start("----------------------------------").color(EnumChatFormatting.GRAY).flush()); diff --git a/src/main/java/com/hbm/entity/mob/EntityDummy.java b/src/main/java/com/hbm/entity/mob/EntityDummy.java index 63ce475fd..2c9a6bc1b 100644 --- a/src/main/java/com/hbm/entity/mob/EntityDummy.java +++ b/src/main/java/com/hbm/entity/mob/EntityDummy.java @@ -26,7 +26,7 @@ public class EntityDummy extends EntityLiving implements IAnimals { } @Override @SideOnly(Side.CLIENT) public boolean getAlwaysRenderNameTagForRender() { return true; } - @Override public String getCommandSenderName() { return (int) this.getHealth() + " / " + (int) this.getMaxHealth(); } + @Override public String getCommandSenderName() { return (int) (this.getHealth() * 10) / 10F + " / " + (int) (this.getMaxHealth() * 10) / 10F; } @Override protected void dropEquipment(boolean b, int i) { } } diff --git a/src/main/java/com/hbm/items/weapon/sedna/BulletConfig.java b/src/main/java/com/hbm/items/weapon/sedna/BulletConfig.java index 32843ba94..c2a3ecc82 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/BulletConfig.java +++ b/src/main/java/com/hbm/items/weapon/sedna/BulletConfig.java @@ -209,7 +209,7 @@ public class BulletConfig implements Cloneable { EntityLivingBase living = (EntityLivingBase) entity; float prevHealth = living.getHealth(); - EntityDamageUtil.attackEntityFromNT(living, source, bullet.damage, true, false, bullet.config.knockbackMult, bullet.config.armorThresholdNegation, bullet.config.armorPiercingPercent); + EntityDamageUtil.attackEntityFromNT(living, source, bullet.damage, true, true, bullet.config.knockbackMult, bullet.config.armorThresholdNegation, bullet.config.armorPiercingPercent); float newHealth = living.getHealth(); @@ -236,7 +236,7 @@ public class BulletConfig implements Cloneable { } EntityLivingBase living = (EntityLivingBase) entity; - EntityDamageUtil.attackEntityFromNT(living, source, bullet.damage, true, false, bullet.config.knockbackMult, bullet.config.armorThresholdNegation, bullet.config.armorPiercingPercent); + EntityDamageUtil.attackEntityFromNT(living, source, bullet.damage, true, true, bullet.config.knockbackMult, bullet.config.armorThresholdNegation, bullet.config.armorPiercingPercent); if(!living.isEntityAlive()) ConfettiUtil.decideConfetti(living, source); } }; diff --git a/src/main/java/com/hbm/items/weapon/sedna/ItemGunBaseNT.java b/src/main/java/com/hbm/items/weapon/sedna/ItemGunBaseNT.java index a926de13b..2e5e4f924 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/ItemGunBaseNT.java +++ b/src/main/java/com/hbm/items/weapon/sedna/ItemGunBaseNT.java @@ -131,7 +131,7 @@ public class ItemGunBaseNT extends Item implements IKeybindReceiver, IEquipRecei case B_SIDE: list.add(EnumChatFormatting.GOLD + "B-Side"); break; case LEGENDARY: list.add(EnumChatFormatting.RED + "Legendary Weapon"); break; case SPECIAL: list.add(EnumChatFormatting.AQUA + "Special Weapon"); break; - case SECRET: list.add(EnumChatFormatting.DARK_RED + "SECRET"); break; + case SECRET: list.add((BobMathUtil.getBlink() ? EnumChatFormatting.DARK_RED : EnumChatFormatting.RED) + "SECRET"); break; case DEBUG: list.add((BobMathUtil.getBlink() ? EnumChatFormatting.YELLOW : EnumChatFormatting.GOLD) + "DEBUG"); break; } } diff --git a/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory22lr.java b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory22lr.java index 1d96625c8..4c5af27ea 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory22lr.java +++ b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory22lr.java @@ -45,7 +45,7 @@ public class XFactory22lr { ModItems.gun_am180 = new ItemGunBaseNT(WeaponQuality.A_SIDE, new GunConfig() .dura(177 * 25).draw(15).inspect(38).crosshair(Crosshair.L_CIRCLE).smoke(LAMBDA_SMOKE) .rec(new Receiver(0) - .dmg(5F).delay(1).dry(10).auto(true).spread(0.02F).reload(66).jam(30).sound("hbm:weapon.fire.blackPowder", 1.0F, 1.0F) + .dmg(2F).delay(1).dry(10).auto(true).spread(0.02F).reload(66).jam(30).sound("hbm:weapon.fire.blackPowder", 1.0F, 1.0F) .mag(new MagazineFullReload(0, 177).addConfigs(p22_sp, p22_fmj, p22_jhp, p22_ap)) .offset(1, -0.0625 * 1.5, -0.1875D) .setupStandardFire().recoil(Lego.LAMBDA_STANDARD_RECOIL)) diff --git a/src/main/java/com/hbm/items/weapon/sedna/factory/XFactoryFolly.java b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactoryFolly.java index c4a9e49e8..f30adfc2a 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/factory/XFactoryFolly.java +++ b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactoryFolly.java @@ -99,7 +99,7 @@ public class XFactoryFolly { folly_nuke = new BulletConfig().setItem(EnumAmmoSecret.FOLLY_NUKE).setChunkloading().setLife(600).setVel(4F).setGrav(0.015D) .setOnImpact(LAMBDA_NUKE_IMPACT); - ModItems.gun_folly = new ItemGunBaseNT(WeaponQuality.LEGENDARY, new GunConfig() + ModItems.gun_folly = new ItemGunBaseNT(WeaponQuality.SECRET, new GunConfig() .dura(0).draw(40).crosshair(Crosshair.NONE) .rec(new Receiver(0) .dmg(1_000F).delay(26).dryfire(false).reload(160).jam(0).sound("hbm:weapon.fire.loudestNoiseOnEarth", 100.0F, 1.0F) diff --git a/src/main/java/com/hbm/render/entity/projectile/RenderBeam.java b/src/main/java/com/hbm/render/entity/projectile/RenderBeam.java index b1d3bf5cc..2ee6039ed 100644 --- a/src/main/java/com/hbm/render/entity/projectile/RenderBeam.java +++ b/src/main/java/com/hbm/render/entity/projectile/RenderBeam.java @@ -32,7 +32,7 @@ public class RenderBeam extends Render { bullet.config.rendererBeam.accept(bullet, interp); } - if(fog) GL11.glDisable(GL11.GL_FOG); + if(fog) GL11.glEnable(GL11.GL_FOG); GL11.glPopMatrix(); } diff --git a/src/main/java/com/hbm/util/DamageResistanceHandler.java b/src/main/java/com/hbm/util/DamageResistanceHandler.java index 30d2059f8..f38afcfe7 100644 --- a/src/main/java/com/hbm/util/DamageResistanceHandler.java +++ b/src/main/java/com/hbm/util/DamageResistanceHandler.java @@ -28,8 +28,10 @@ public class DamageResistanceHandler { public static float currentPDT = 0F; /** Currently cached armor piercing % */ public static float currentPDR = 0F; - - public static final String KEY_EXPLOSION = "EXPL"; + + public static final String CATEGORY_EXPLOSION = "EXPL"; + public static final String CATEGORY_FIRE = "FIRE"; + public static final String CATEGORY_PROJECTILE = "PROJ"; public static HashMap itemStats = new HashMap(); public static HashMap, ResistanceStats> setStats = new HashMap(); @@ -41,33 +43,73 @@ public class DamageResistanceHandler { setStats.clear(); entityStats.clear(); - entityStats.put(EntityCreeper.class, new ResistanceStats().add(KEY_EXPLOSION, 2F, 0.5F)); + entityStats.put(EntityCreeper.class, new ResistanceStats().addCategory(CATEGORY_EXPLOSION, 2F, 0.5F)); setStats.put(new Quartet(ModItems.steel_helmet, ModItems.steel_plate, ModItems.steel_legs, ModItems.steel_boots), new ResistanceStats()); setStats.put(new Quartet(ModItems.titanium_helmet, ModItems.titanium_plate, ModItems.titanium_legs, ModItems.titanium_boots), new ResistanceStats()); - setStats.put(new Quartet(ModItems.alloy_helmet, ModItems.alloy_plate, ModItems.alloy_legs, ModItems.alloy_boots), new ResistanceStats()); - setStats.put(new Quartet(ModItems.cobalt_helmet, ModItems.cobalt_plate, ModItems.cobalt_legs, ModItems.cobalt_boots), new ResistanceStats()); + setStats.put(new Quartet(ModItems.alloy_helmet, ModItems.alloy_plate, ModItems.alloy_legs, ModItems.alloy_boots), new ResistanceStats() + .addCategory(CATEGORY_PROJECTILE, 2F, 0.1F)); + setStats.put(new Quartet(ModItems.cobalt_helmet, ModItems.cobalt_plate, ModItems.cobalt_legs, ModItems.cobalt_boots), new ResistanceStats() + .addCategory(CATEGORY_PROJECTILE, 2F, 0.1F)); setStats.put(new Quartet(ModItems.starmetal_helmet, ModItems.starmetal_plate, ModItems.starmetal_legs, ModItems.starmetal_boots), new ResistanceStats()); - setStats.put(new Quartet(ModItems.zirconium_legs, ModItems.zirconium_legs, ModItems.zirconium_legs, ModItems.zirconium_legs), new ResistanceStats()); + setStats.put(new Quartet(ModItems.zirconium_legs, ModItems.zirconium_legs, ModItems.zirconium_legs, ModItems.zirconium_legs), new ResistanceStats() + .setOther(0F, 1F)); setStats.put(new Quartet(ModItems.dnt_helmet, ModItems.dnt_plate, ModItems.dnt_legs, ModItems.dnt_boots), new ResistanceStats()); setStats.put(new Quartet(ModItems.schrabidium_helmet, ModItems.schrabidium_plate, ModItems.schrabidium_legs, ModItems.schrabidium_boots), new ResistanceStats()); setStats.put(new Quartet(ModItems.robes_helmet, ModItems.robes_plate, ModItems.robes_legs, ModItems.robes_boots), new ResistanceStats()); setStats.put(new Quartet(ModItems.steamsuit_helmet, ModItems.steamsuit_plate, ModItems.steamsuit_legs, ModItems.steamsuit_boots), new ResistanceStats()); setStats.put(new Quartet(ModItems.dieselsuit_helmet, ModItems.dieselsuit_plate, ModItems.dieselsuit_legs, ModItems.dieselsuit_boots), new ResistanceStats()); - setStats.put(new Quartet(ModItems.t45_helmet, ModItems.t45_plate, ModItems.t45_legs, ModItems.t45_boots), new ResistanceStats()); - setStats.put(new Quartet(ModItems.ajr_helmet, ModItems.ajr_plate, ModItems.ajr_legs, ModItems.ajr_boots), new ResistanceStats()); - setStats.put(new Quartet(ModItems.ajro_helmet, ModItems.ajro_plate, ModItems.ajro_legs, ModItems.ajro_boots), new ResistanceStats()); - setStats.put(new Quartet(ModItems.rpa_helmet, ModItems.rpa_plate, ModItems.rpa_legs, ModItems.rpa_boots), new ResistanceStats()); - ResistanceStats bj = new ResistanceStats(); + setStats.put(new Quartet(ModItems.t45_helmet, ModItems.t45_plate, ModItems.t45_legs, ModItems.t45_boots), new ResistanceStats() + .addCategory(CATEGORY_PROJECTILE, 2F, 0.15F) + .addCategory(CATEGORY_FIRE, 0.5F, 0.35F) + .addCategory(CATEGORY_EXPLOSION, 5F, 0.25F) + .setOther(0F, 0.1F)); + setStats.put(new Quartet(ModItems.ajr_helmet, ModItems.ajr_plate, ModItems.ajr_legs, ModItems.ajr_boots), new ResistanceStats() + .addCategory(CATEGORY_PROJECTILE, 4F, 0.15F) + .addCategory(CATEGORY_FIRE, 0.5F, 0.35F) + .addCategory(CATEGORY_EXPLOSION, 7.5F, 0.25F) + .setOther(0F, 0.15F)); + setStats.put(new Quartet(ModItems.ajro_helmet, ModItems.ajro_plate, ModItems.ajro_legs, ModItems.ajro_boots), new ResistanceStats() + .addCategory(CATEGORY_PROJECTILE, 4F, 0.15F) + .addCategory(CATEGORY_FIRE, 0.5F, 0.35F) + .addCategory(CATEGORY_EXPLOSION, 7.5F, 0.25F) + .setOther(0F, 0.15F)); + setStats.put(new Quartet(ModItems.rpa_helmet, ModItems.rpa_plate, ModItems.rpa_legs, ModItems.rpa_boots), new ResistanceStats() + .addCategory(CATEGORY_PROJECTILE, 20F, 0.5F) + .addCategory(CATEGORY_FIRE, 10F, 0.75F) + .addCategory(CATEGORY_EXPLOSION, 15F, 0.25F) + .addExact(DamageClass.LASER.name(), 10F, 0.75F) + .setOther(2F, 0.15F)); + ResistanceStats bj = new ResistanceStats() + .addCategory(CATEGORY_PROJECTILE, 5F, 0.25F) + .addCategory(CATEGORY_FIRE, 2.5F, 0.5F) + .addCategory(CATEGORY_EXPLOSION, 10F, 0.25F) + .setOther(2F, 0.15F); setStats.put(new Quartet(ModItems.bj_helmet, ModItems.bj_plate, ModItems.bj_legs, ModItems.bj_boots), bj); setStats.put(new Quartet(ModItems.bj_helmet, ModItems.bj_plate_jetpack, ModItems.bj_legs, ModItems.bj_boots), bj); setStats.put(new Quartet(ModItems.envsuit_helmet, ModItems.envsuit_plate, ModItems.envsuit_legs, ModItems.envsuit_boots), new ResistanceStats()); - setStats.put(new Quartet(ModItems.hev_helmet, ModItems.hev_plate, ModItems.hev_legs, ModItems.hev_boots), new ResistanceStats()); - setStats.put(new Quartet(ModItems.bismuth_helmet, ModItems.bismuth_plate, ModItems.bismuth_legs, ModItems.bismuth_boots), new ResistanceStats()); + setStats.put(new Quartet(ModItems.hev_helmet, ModItems.hev_plate, ModItems.hev_legs, ModItems.hev_boots), new ResistanceStats() + .addCategory(CATEGORY_PROJECTILE, 2F, 0.15F) + .addCategory(CATEGORY_FIRE, 0.5F, 0.5F) + .addCategory(CATEGORY_EXPLOSION, 5F, 0.25F) + .addExact(DamageSource.onFire.damageType, 0F, 1F) + .setOther(2F, 0.25F)); + setStats.put(new Quartet(ModItems.bismuth_helmet, ModItems.bismuth_plate, ModItems.bismuth_legs, ModItems.bismuth_boots), new ResistanceStats() + .addCategory(CATEGORY_PROJECTILE, 2F, 0.15F) + .addCategory(CATEGORY_FIRE, 5F, 0.5F) + .addCategory(CATEGORY_EXPLOSION, 5F, 0.25F) + .setOther(2F, 0.25F)); setStats.put(new Quartet(ModItems.fau_helmet, ModItems.fau_plate, ModItems.fau_legs, ModItems.fau_boots), new ResistanceStats()); - setStats.put(new Quartet(ModItems.dns_helmet, ModItems.dns_plate, ModItems.dns_legs, ModItems.dns_boots), new ResistanceStats()); - setStats.put(new Quartet(ModItems.trenchmaster_helmet, ModItems.trenchmaster_plate, ModItems.trenchmaster_legs, ModItems.trenchmaster_boots), new ResistanceStats()); + setStats.put(new Quartet(ModItems.dns_helmet, ModItems.dns_plate, ModItems.dns_legs, ModItems.dns_boots), new ResistanceStats() + .addCategory(CATEGORY_EXPLOSION, 100F, 0.9F) + .setOther(100F, 100F)); + setStats.put(new Quartet(ModItems.trenchmaster_helmet, ModItems.trenchmaster_plate, ModItems.trenchmaster_legs, ModItems.trenchmaster_boots), new ResistanceStats() + .addCategory(CATEGORY_PROJECTILE, 5F, 0.5F) + .addCategory(CATEGORY_FIRE, 5F, 0.5F) + .addCategory(CATEGORY_EXPLOSION, 5F, 0.25F) + .addExact(DamageClass.LASER.name(), 15F, 0.9F) + .setOther(5F, 0.25F)); setStats.put(new Quartet(ModItems.hazmat_helmet, ModItems.hazmat_plate, ModItems.hazmat_legs, ModItems.hazmat_boots), new ResistanceStats()); setStats.put(new Quartet(ModItems.hazmat_helmet_red, ModItems.hazmat_plate_red, ModItems.hazmat_legs_red, ModItems.hazmat_boots_red), new ResistanceStats()); @@ -103,7 +145,7 @@ public class DamageResistanceHandler { float amount = event.ammount; float[] vals = getDTDR(e, event.source, amount, currentPDT, currentPDR); - float dt = vals[0]; + float dt = vals[0] - currentPDT; if(dt > 0 && dt >= event.ammount) { event.setCanceled(true); @@ -116,13 +158,15 @@ public class DamageResistanceHandler { event.ammount = calculateDamage(event.entityLiving, event.source, event.ammount, currentPDT, currentPDR); } - public static String typeToKey(DamageSource source) { - if(source.isExplosion()) return KEY_EXPLOSION; + public static String typeToCategory(DamageSource source) { + if(source.isExplosion()) return CATEGORY_EXPLOSION; + if(source.isFireDamage()) return CATEGORY_FIRE; + if(source.isProjectile()) return CATEGORY_PROJECTILE; return source.damageType; } public static float calculateDamage(EntityLivingBase entity, DamageSource damage, float amount, float pierceDT, float pierce) { - if(damage.isDamageAbsolute() || damage.isUnblockable()) return amount; + if(damage.isDamageAbsolute()) return amount; float[] vals = getDTDR(entity, damage, amount, pierceDT, pierce); float dt = vals[0]; @@ -138,7 +182,6 @@ public class DamageResistanceHandler { public static float[] getDTDR(EntityLivingBase entity, DamageSource damage, float amount, float pierceDT, float pierce) { - String key = typeToKey(damage); float dt = 0; float dr = 0; @@ -152,7 +195,7 @@ public class DamageResistanceHandler { ResistanceStats setResistance = setStats.get(wornSet); if(setResistance != null) { - Resistance res = setResistance.resistances.get(key); + Resistance res = setResistance.getResistance(damage); if(res != null) { dt += res.threshold; dr += res.resistance; @@ -165,7 +208,7 @@ public class DamageResistanceHandler { if(armor == null) continue; ResistanceStats stats = itemStats.get(armor.getItem()); if(stats == null) continue; - Resistance res = stats.resistances.get(key); + Resistance res = stats.getResistance(damage); if(res == null) continue; dt += res.threshold; dr += res.resistance; @@ -174,7 +217,7 @@ public class DamageResistanceHandler { /// ENTITY CLASS HANDLING /// ResistanceStats innateResistance = entityStats.get(entity.getClass()); if(innateResistance != null) { - Resistance res = innateResistance.resistances.get(key); + Resistance res = innateResistance.getResistance(damage); if(res != null) { dt += res.threshold; dr += res.resistance; @@ -185,13 +228,22 @@ public class DamageResistanceHandler { } public static class ResistanceStats { + + public HashMap exactResistances = new HashMap(); + public HashMap categoryResistances = new HashMap(); + public Resistance otherResistance; - public HashMap resistances = new HashMap(); - - public ResistanceStats add(String type, float threshold, float resistance) { - resistances.put(type, new Resistance(threshold, resistance)); - return this; + public Resistance getResistance(DamageSource source) { + Resistance exact = exactResistances.get(source.damageType); + if(exact != null) return exact; + Resistance category = categoryResistances.get(typeToCategory(source)); + if(category != null) return category; + return source.isUnblockable() ? null : otherResistance; } + + public ResistanceStats addExact(String type, float threshold, float resistance) { exactResistances.put(type, new Resistance(threshold, resistance)); return this; } + public ResistanceStats addCategory(String type, float threshold, float resistance) { categoryResistances.put(type, new Resistance(threshold, resistance)); return this; } + public ResistanceStats setOther(float threshold, float resistance) { otherResistance = new Resistance(threshold, resistance); return this; } } public static class Resistance { diff --git a/src/main/java/com/hbm/util/EntityDamageUtil.java b/src/main/java/com/hbm/util/EntityDamageUtil.java index e5f1636ea..708ca7d9a 100644 --- a/src/main/java/com/hbm/util/EntityDamageUtil.java +++ b/src/main/java/com/hbm/util/EntityDamageUtil.java @@ -149,7 +149,7 @@ public class EntityDamageUtil { public static float applyArmorCalculationsNT(EntityLivingBase living, DamageSource source, float amount) { if(!source.isUnblockable()) { - int i = 25 - living.getTotalArmorValue(); + float i = 25F - (living.getTotalArmorValue() * (1 - DamageResistanceHandler.currentPDR)); float armor = amount * (float) i; damageArmorNT(living, amount); amount = armor / 25.0F; From ba855a8c0ff16ac7558e0d76557fc9a59e92e453 Mon Sep 17 00:00:00 2001 From: Boblet Date: Wed, 4 Dec 2024 12:06:01 +0100 Subject: [PATCH 14/24] added high-power skeletonizer engine --- .../java/com/hbm/entity/mob/EntityDummy.java | 4 +- .../hbm/items/weapon/sedna/BulletConfig.java | 1 + .../weapon/sedna/factory/ConfettiUtil.java | 20 ++ .../com/hbm/particle/ParticleSkeleton.java | 148 ++++++++++++ .../com/hbm/particle/helper/AshesCreator.java | 3 + .../hbm/particle/helper/ParticleCreators.java | 1 + .../hbm/particle/helper/SkeletonCreator.java | 138 +++++++++++ src/main/java/com/hbm/util/Vec3NT.java | 6 +- .../assets/hbm/models/effect/skeleton.obj | 214 ++++++++++++++++++ .../assets/hbm/textures/particle/skeleton.png | Bin 0 -> 858 bytes 10 files changed, 531 insertions(+), 4 deletions(-) create mode 100644 src/main/java/com/hbm/particle/ParticleSkeleton.java create mode 100644 src/main/java/com/hbm/particle/helper/SkeletonCreator.java create mode 100644 src/main/resources/assets/hbm/models/effect/skeleton.obj create mode 100644 src/main/resources/assets/hbm/textures/particle/skeleton.png diff --git a/src/main/java/com/hbm/entity/mob/EntityDummy.java b/src/main/java/com/hbm/entity/mob/EntityDummy.java index 2c9a6bc1b..cd64ff427 100644 --- a/src/main/java/com/hbm/entity/mob/EntityDummy.java +++ b/src/main/java/com/hbm/entity/mob/EntityDummy.java @@ -26,7 +26,9 @@ public class EntityDummy extends EntityLiving implements IAnimals { } @Override @SideOnly(Side.CLIENT) public boolean getAlwaysRenderNameTagForRender() { return true; } - @Override public String getCommandSenderName() { return (int) (this.getHealth() * 10) / 10F + " / " + (int) (this.getMaxHealth() * 10) / 10F; } + @Override public String getCommandSenderName() { + return (int) (this.getHealth() * 10) / 10F + " / " + (int) (this.getMaxHealth() * 10) / 10F; } + //return (int) this.rotationYaw + " " + (int) this.renderYawOffset + " " + (int) this.rotationYawHead + " " + (int) this.newRotationYaw; } @Override protected void dropEquipment(boolean b, int i) { } } diff --git a/src/main/java/com/hbm/items/weapon/sedna/BulletConfig.java b/src/main/java/com/hbm/items/weapon/sedna/BulletConfig.java index c2a3ecc82..596a246d2 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/BulletConfig.java +++ b/src/main/java/com/hbm/items/weapon/sedna/BulletConfig.java @@ -136,6 +136,7 @@ public class BulletConfig implements Cloneable { BEAM } + @SuppressWarnings("incomplete-switch") //shut up public static DamageSource getDamage(Entity projectile, EntityLivingBase shooter, DamageClass dmgClass) { DamageSource dmg; diff --git a/src/main/java/com/hbm/items/weapon/sedna/factory/ConfettiUtil.java b/src/main/java/com/hbm/items/weapon/sedna/factory/ConfettiUtil.java index 0df13de04..7c914ba7e 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/factory/ConfettiUtil.java +++ b/src/main/java/com/hbm/items/weapon/sedna/factory/ConfettiUtil.java @@ -1,9 +1,14 @@ package com.hbm.items.weapon.sedna.factory; +import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toclient.AuxParticlePacketNT; import com.hbm.particle.helper.AshesCreator; +import com.hbm.particle.helper.SkeletonCreator; import com.hbm.util.DamageResistanceHandler.DamageClass; +import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import net.minecraft.entity.EntityLivingBase; +import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.DamageSource; import net.minecraft.util.MathHelper; @@ -11,6 +16,8 @@ public class ConfettiUtil { public static void decideConfetti(EntityLivingBase entity, DamageSource source) { if(source.damageType.equals(DamageClass.LASER.name())) pulverize(entity); + if(source.damageType.equals(DamageClass.EXPLOSIVE.name())) gib(entity); + skullanize(entity); } public static void pulverize(EntityLivingBase entity) { @@ -18,4 +25,17 @@ public class ConfettiUtil { int amount = MathHelper.clamp_int((int) (entity.width * entity.height * entity.width * 25), 5, 50); AshesCreator.composeEffect(entity.worldObj, entity, amount, 0.125F); } + + public static void skullanize(EntityLivingBase entity) { + if(entity.isEntityAlive()) return; + SkeletonCreator.composeEffect(entity.worldObj, entity); + } + + public static void gib(EntityLivingBase entity) { + NBTTagCompound vdat = new NBTTagCompound(); + vdat.setString("type", "giblets"); + vdat.setInteger("ent", entity.getEntityId()); + PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(vdat, entity.posX, entity.posY + entity.height * 0.5, entity.posZ), new TargetPoint(entity.dimension, entity.posX, entity.posY + entity.height * 0.5, entity.posZ, 150)); + entity.worldObj.playSoundEffect(entity.posX, entity.posY, entity.posZ, "mob.zombie.woodbreak", 2.0F, 0.95F + entity.getRNG().nextFloat() * 0.2F); + } } diff --git a/src/main/java/com/hbm/particle/ParticleSkeleton.java b/src/main/java/com/hbm/particle/ParticleSkeleton.java new file mode 100644 index 000000000..314fb7e9a --- /dev/null +++ b/src/main/java/com/hbm/particle/ParticleSkeleton.java @@ -0,0 +1,148 @@ +package com.hbm.particle; + +import org.lwjgl.opengl.GL11; +import org.lwjgl.opengl.GL12; + +import com.hbm.lib.RefStrings; +import com.hbm.particle.helper.SkeletonCreator.EnumSkeletonType; +import com.hbm.render.loader.HFRWavefrontObject; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.client.Minecraft; +import net.minecraft.client.particle.EntityFX; +import net.minecraft.client.renderer.OpenGlHelper; +import net.minecraft.client.renderer.RenderHelper; +import net.minecraft.client.renderer.Tessellator; +import net.minecraft.client.renderer.texture.TextureManager; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.util.MathHelper; +import net.minecraft.util.ResourceLocation; +import net.minecraft.world.World; +import net.minecraftforge.client.model.IModelCustom; + +@SideOnly(Side.CLIENT) +public class ParticleSkeleton extends EntityFX { + + public static final ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/particle/skeleton.png"); + public static final IModelCustom skeleton = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/effect/skeleton.obj"), false).asVBO(); + protected EnumSkeletonType type; + + private float momentumYaw; + private float momentumPitch; + private int initialDelay; + + private final TextureManager textureManager; + + public ParticleSkeleton(TextureManager textureManager, World world, double x, double y, double z, float r, float g, float b, EnumSkeletonType type) { + super(world, x, y, z); + this.textureManager = textureManager; + this.type = type; + + this.particleMaxAge = 200 + rand.nextInt(20); + + this.particleRed = r; + this.particleGreen = g; + this.particleBlue = b; + this.particleGravity = 0.02F; + this.initialDelay = 20; + + this.momentumPitch = rand.nextFloat() * 5 * (rand.nextBoolean() ? 1 : -1); + this.momentumYaw = rand.nextFloat() * 5 * (rand.nextBoolean() ? 1 : -1); + } + + @Override + public void onUpdate() { + + this.prevPosX = this.posX; + this.prevPosY = this.posY; + this.prevPosZ = this.posZ; + this.prevRotationPitch = this.rotationPitch; + this.prevRotationYaw = this.rotationYaw; + + if(initialDelay-- > 0) return; + + if(initialDelay == -1) { + this.motionX = rand.nextGaussian() * 0.025; + this.motionZ = rand.nextGaussian() * 0.025; + } + + if(this.particleAge++ >= this.particleMaxAge) { + this.setDead(); + } + + this.motionY -= this.particleGravity; + this.moveEntity(this.motionX, this.motionY, this.motionZ); + this.motionX *= 0.98D; + this.motionY *= 0.98D; + this.motionZ *= 0.98D; + + if(!this.onGround) { + this.rotationPitch += this.momentumPitch; + this.rotationYaw += this.momentumYaw; + } else { + this.motionX = 0; + this.motionY = 0; + this.motionZ = 0; + } + } + + @Override + public int getFXLayer() { + return 3; + } + + @Override + public void renderParticle(Tessellator tess, float interp, float x, float y, float z, float tx, float tz) { + + GL11.glPushMatrix(); + GL11.glEnable(GL11.GL_LIGHTING); + GL11.glEnable(GL11.GL_CULL_FACE); + GL11.glEnable(GL11.GL_BLEND); + GL11.glAlphaFunc(GL11.GL_GREATER, 0); + OpenGlHelper.glBlendFunc(770, 771, 1, 0); + RenderHelper.enableStandardItemLighting(); + + this.textureManager.bindTexture(texture); + + double pX = prevPosX + (posX - prevPosX) * interp; + double pY = prevPosY + (posY - prevPosY) * interp; + double pZ = prevPosZ + (posZ - prevPosZ) * interp; + EntityPlayer player = Minecraft.getMinecraft().thePlayer; + double dX = player.lastTickPosX + (player.posX - player.lastTickPosX) * (double)interp; + double dY = player.lastTickPosY + (player.posY - player.lastTickPosY) * (double)interp; + double dZ = player.lastTickPosZ + (player.posZ - player.lastTickPosZ) * (double)interp; + + GL11.glTranslated(pX - dX, pY - dY, pZ - dZ); + + GL11.glRotated(this.prevRotationYaw + (this.rotationYaw - this.prevRotationYaw) * interp, 0, 1, 0); + GL11.glRotated(this.prevRotationPitch + (this.rotationPitch - this.prevRotationPitch) * interp, 1, 0, 0); + + float timeLeft = this.particleMaxAge - (this.particleAge + interp); + if(timeLeft < 40) { + this.particleAlpha = timeLeft / 40F; + } else { + this.particleAlpha = 1F; + } + + int brightness = worldObj.getLightBrightnessForSkyBlocks(MathHelper.floor_double(pX), MathHelper.floor_double(pY), MathHelper.floor_double(pZ), 0); + int lX = brightness % 65536; + int lY = brightness / 65536; + OpenGlHelper.setLightmapTextureCoords(OpenGlHelper.lightmapTexUnit, (float)lX / 1.0F, (float)lY / 1.0F); + + GL11.glColor4f(particleRed, particleGreen, particleBlue, particleAlpha); + GL11.glRotated(-90, 0, 1, 0); + + switch(type) { + case SKULL: skeleton.renderPart("Skull"); break; + case TORSO: skeleton.renderPart("Torso"); break; + case LIMB: skeleton.renderPart("Limb"); break; + } + + GL11.glColor4f(1F, 1F, 1F, 1F); + GL11.glAlphaFunc(GL11.GL_GREATER, 0.1F); + GL11.glDisable(GL11.GL_CULL_FACE); + + GL11.glPopMatrix(); + } +} diff --git a/src/main/java/com/hbm/particle/helper/AshesCreator.java b/src/main/java/com/hbm/particle/helper/AshesCreator.java index 2076e6baa..56a36acc5 100644 --- a/src/main/java/com/hbm/particle/helper/AshesCreator.java +++ b/src/main/java/com/hbm/particle/helper/AshesCreator.java @@ -5,6 +5,8 @@ import java.util.Random; import com.hbm.main.ClientProxy; import com.hbm.particle.ParticleAshes; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.client.Minecraft; import net.minecraft.client.particle.EntityFlameFX; import net.minecraft.client.renderer.texture.TextureManager; @@ -26,6 +28,7 @@ public class AshesCreator implements IParticleCreator { } @Override + @SideOnly(Side.CLIENT) public void makeParticle(World world, EntityPlayer player, TextureManager texman, Random rand, double x, double y, double z, NBTTagCompound data) { int entityID = data.getInteger("entityID"); diff --git a/src/main/java/com/hbm/particle/helper/ParticleCreators.java b/src/main/java/com/hbm/particle/helper/ParticleCreators.java index 023233b8b..2f23f88f4 100644 --- a/src/main/java/com/hbm/particle/helper/ParticleCreators.java +++ b/src/main/java/com/hbm/particle/helper/ParticleCreators.java @@ -13,5 +13,6 @@ public class ParticleCreators { particleCreators.put("explosionSmall", new ExplosionSmallCreator()); particleCreators.put("blackPowder", new BlackPowderCreator()); particleCreators.put("ashes", new AshesCreator()); + particleCreators.put("skeleton", new SkeletonCreator()); } } diff --git a/src/main/java/com/hbm/particle/helper/SkeletonCreator.java b/src/main/java/com/hbm/particle/helper/SkeletonCreator.java new file mode 100644 index 000000000..78dfaeafa --- /dev/null +++ b/src/main/java/com/hbm/particle/helper/SkeletonCreator.java @@ -0,0 +1,138 @@ +package com.hbm.particle.helper; + +import java.util.HashMap; +import java.util.Random; +import java.util.function.Function; + +import com.hbm.entity.mob.EntityDummy; +import com.hbm.main.ClientProxy; +import com.hbm.particle.ParticleSkeleton; +import com.hbm.util.Vec3NT; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.client.Minecraft; +import net.minecraft.client.entity.EntityClientPlayerMP; +import net.minecraft.client.entity.EntityOtherPlayerMP; +import net.minecraft.client.entity.EntityPlayerSP; +import net.minecraft.client.renderer.texture.TextureManager; +import net.minecraft.entity.Entity; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.entity.monster.EntitySkeleton; +import net.minecraft.entity.monster.EntityZombie; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.world.World; + +public class SkeletonCreator implements IParticleCreator { + + public static HashMap> skullanizer = new HashMap(); + + public static void composeEffect(World world, Entity toSkeletonize) { + + NBTTagCompound data = new NBTTagCompound(); + data.setString("type", "skeleton"); + data.setInteger("entityID", toSkeletonize.getEntityId()); + IParticleCreator.sendPacket(world, toSkeletonize.posX, toSkeletonize.posY, toSkeletonize.posZ, 100, data); + } + + @Override + @SideOnly(Side.CLIENT) + public void makeParticle(World world, EntityPlayer player, TextureManager texman, Random rand, double x, double y, double z, NBTTagCompound data) { + + if(skullanizer.isEmpty()) init(); + + int entityID = data.getInteger("entityID"); + Entity entity = world.getEntityByID(entityID); + if(!(entity instanceof EntityLivingBase)) return; + EntityLivingBase living = (EntityLivingBase) entity; + + ClientProxy.vanish(entityID); + + Function bonealizer = skullanizer.get(entity.getClass()); + + if(bonealizer != null) { + BoneDefinition[] bones = bonealizer.apply(living); + for(BoneDefinition bone : bones) { + ParticleSkeleton skeleton = new ParticleSkeleton(Minecraft.getMinecraft().getTextureManager(), world, bone.x, bone.y, bone.z, 1F, 1F, 1F, bone.type); + skeleton.prevRotationYaw = skeleton.rotationYaw = bone.yaw; + skeleton.prevRotationPitch = skeleton.rotationPitch = bone.pitch; + Minecraft.getMinecraft().effectRenderer.addEffect(skeleton); + } + } + } + + public static class BoneDefinition { + public EnumSkeletonType type; + public float yaw; + public float pitch; + public double x; + public double y; + public double z; + + public BoneDefinition(EnumSkeletonType type, float yaw, float pitch, double x, double y, double z) { + this.type = type; + this.yaw = yaw; + this.pitch = pitch; + this.x = x; + this.y = y; + this.z = z; + } + } + + public static enum EnumSkeletonType { + SKULL, TORSO, LIMB + } + + public static Function BONES_BIPED = (entity) -> { + Vec3NT leftarm = new Vec3NT(0.375, 0, 0).rotateAroundYDeg(-entity.renderYawOffset); + Vec3NT leftleg = new Vec3NT(0.125, 0, 0).rotateAroundYDeg(-entity.renderYawOffset); + return new BoneDefinition[] { + new BoneDefinition(EnumSkeletonType.SKULL, -entity.rotationYawHead, entity.rotationPitch, entity.posX, entity.posY + 1.75, entity.posZ), + new BoneDefinition(EnumSkeletonType.TORSO, -entity.renderYawOffset, 0, entity.posX, entity.posY + 1.125, entity.posZ), + new BoneDefinition(EnumSkeletonType.LIMB, -entity.renderYawOffset, 0, entity.posX + leftarm.xCoord, entity.posY + 1.125, entity.posZ + leftarm.zCoord), + new BoneDefinition(EnumSkeletonType.LIMB, -entity.renderYawOffset, 0, entity.posX - leftarm.xCoord, entity.posY + 1.125, entity.posZ - leftarm.zCoord), + new BoneDefinition(EnumSkeletonType.LIMB, -entity.renderYawOffset, 0, entity.posX + leftleg.xCoord, entity.posY + 0.625, entity.posZ + leftleg.zCoord), + new BoneDefinition(EnumSkeletonType.LIMB, -entity.renderYawOffset, 0, entity.posX - leftleg.xCoord, entity.posY + 0.625, entity.posZ - leftleg.zCoord), + }; + }; + + public static Function BONES_ZOMBIE = (entity) -> { + Vec3NT leftarm = new Vec3NT(0.375, 0, 0).rotateAroundYDeg(-entity.renderYawOffset); + Vec3NT forward = new Vec3NT(0, 0, 0.25).rotateAroundYDeg(-entity.renderYawOffset); + Vec3NT leftleg = new Vec3NT(0.125, 0, 0).rotateAroundYDeg(-entity.renderYawOffset); + return new BoneDefinition[] { + new BoneDefinition(EnumSkeletonType.SKULL, -entity.rotationYawHead, entity.rotationPitch, entity.posX, entity.posY + 1.75, entity.posZ), + new BoneDefinition(EnumSkeletonType.TORSO, -entity.renderYawOffset, 0, entity.posX, entity.posY + 1.125, entity.posZ), + new BoneDefinition(EnumSkeletonType.LIMB, -entity.renderYawOffset, -90, entity.posX + leftarm.xCoord + forward.xCoord, entity.posY + 1.375, entity.posZ + leftarm.zCoord + forward.zCoord), + new BoneDefinition(EnumSkeletonType.LIMB, -entity.renderYawOffset, -90, entity.posX - leftarm.xCoord + forward.xCoord, entity.posY + 1.375, entity.posZ - leftarm.zCoord + forward.zCoord), + new BoneDefinition(EnumSkeletonType.LIMB, -entity.renderYawOffset, 0, entity.posX + leftleg.xCoord, entity.posY + 0.625, entity.posZ + leftleg.zCoord), + new BoneDefinition(EnumSkeletonType.LIMB, -entity.renderYawOffset, 0, entity.posX - leftleg.xCoord, entity.posY + 0.625, entity.posZ - leftleg.zCoord), + }; + }; + + public static Function BONES_DUMMY = (entity) -> { + Vec3NT leftarm = new Vec3NT(0.375, 0, 0).rotateAroundYDeg(-entity.renderYawOffset); + Vec3NT forward = new Vec3NT(0, 0, 0.25).rotateAroundYDeg(-entity.renderYawOffset); + Vec3NT leftleg = new Vec3NT(0.125, 0, 0).rotateAroundYDeg(-entity.renderYawOffset); + return new BoneDefinition[] { + new BoneDefinition(EnumSkeletonType.SKULL, -entity.rotationYawHead, entity.rotationPitch, entity.posX, entity.posY + 1.75, entity.posZ), + new BoneDefinition(EnumSkeletonType.TORSO, -entity.renderYawOffset, 0, entity.posX, entity.posY + 1.125, entity.posZ), + new BoneDefinition(EnumSkeletonType.LIMB, -entity.renderYawOffset, -90, entity.posX + leftarm.xCoord + forward.xCoord, entity.posY + 1.375, entity.posZ + leftarm.zCoord + forward.zCoord), + new BoneDefinition(EnumSkeletonType.LIMB, -entity.renderYawOffset, -90, entity.posX - leftarm.xCoord + forward.xCoord, entity.posY + 1.375, entity.posZ - leftarm.zCoord + forward.zCoord), + new BoneDefinition(EnumSkeletonType.LIMB, -entity.renderYawOffset, 0, entity.posX + leftleg.xCoord, entity.posY + 0.625, entity.posZ + leftleg.zCoord), + new BoneDefinition(EnumSkeletonType.LIMB, -entity.renderYawOffset, 0, entity.posX - leftleg.xCoord, entity.posY + 0.625, entity.posZ - leftleg.zCoord), + }; + }; + + public static void init() { + skullanizer.put(EntityOtherPlayerMP.class, BONES_BIPED); + skullanizer.put(EntityClientPlayerMP.class, BONES_BIPED); + skullanizer.put(EntityPlayerSP.class, BONES_BIPED); + + skullanizer.put(EntityZombie.class, BONES_ZOMBIE); + skullanizer.put(EntitySkeleton.class, BONES_ZOMBIE); + + skullanizer.put(EntityDummy.class, BONES_DUMMY); + } +} diff --git a/src/main/java/com/hbm/util/Vec3NT.java b/src/main/java/com/hbm/util/Vec3NT.java index 8bedb3869..0cb8121a7 100644 --- a/src/main/java/com/hbm/util/Vec3NT.java +++ b/src/main/java/com/hbm/util/Vec3NT.java @@ -79,15 +79,15 @@ public class Vec3NT extends Vec3 { } public Vec3NT rotateAroundXDeg(double alpha) { - return this.rotateAroundXRad(alpha * 180D / Math.PI); + return this.rotateAroundXRad(alpha / 180D * Math.PI); } public Vec3NT rotateAroundYDeg(double alpha) { - return this.rotateAroundYRad(alpha * 180D / Math.PI); + return this.rotateAroundYRad(alpha / 180D * Math.PI); } public Vec3NT rotateAroundZDeg(double alpha) { - return this.rotateAroundZRad(alpha * 180D / Math.PI); + return this.rotateAroundZRad(alpha / 180D * Math.PI); } public static double getMinX(Vec3NT... vecs) { diff --git a/src/main/resources/assets/hbm/models/effect/skeleton.obj b/src/main/resources/assets/hbm/models/effect/skeleton.obj new file mode 100644 index 000000000..d7ae2c48e --- /dev/null +++ b/src/main/resources/assets/hbm/models/effect/skeleton.obj @@ -0,0 +1,214 @@ +# Blender v2.79 (sub 0) OBJ File: 'skeleton.blend' +# www.blender.org +o Torso +v 0.125000 -0.375000 0.250000 +v 0.125000 0.375000 0.250000 +v 0.125000 -0.375000 -0.250000 +v 0.125000 0.375000 -0.250000 +v -0.125000 -0.375000 0.250000 +v -0.125000 0.375000 0.250000 +v -0.125000 -0.375000 -0.250000 +v -0.125000 0.375000 -0.250000 +v 0.125000 -0.375000 0.250000 +v 0.125000 0.375000 0.250000 +v 0.125000 -0.375000 -0.250000 +v 0.125000 0.375000 -0.250000 +v -0.125000 -0.375000 0.250000 +v -0.125000 0.375000 0.250000 +v -0.125000 -0.375000 -0.250000 +v -0.125000 0.375000 -0.250000 +vt 0.312500 0.000000 +vt 0.437500 0.375000 +vt 0.437500 0.000000 +vt 0.500000 0.000000 +vt 0.437500 0.375000 +vt 0.437500 0.000000 +vt 0.625000 0.000000 +vt 0.500000 0.375000 +vt 0.312500 0.000000 +vt 0.250000 0.375000 +vt 0.250000 0.000000 +vt 0.437500 0.500000 +vt 0.562500 0.375000 +vt 0.562500 0.500000 +vt 0.312500 0.500000 +vt 0.437500 0.500000 +vt 0.437500 0.375000 +vt 0.312500 0.000000 +vt 0.437500 0.000000 +vt 0.437500 0.375000 +vt 0.500000 0.000000 +vt 0.437500 0.000000 +vt 0.500000 0.375000 +vt 0.625000 0.000000 +vt 0.250000 0.375000 +vt 0.312500 0.000000 +vt 0.250000 0.000000 +vt 0.562500 0.375000 +vt 0.437500 0.500000 +vt 0.562500 0.500000 +vt 0.312500 0.500000 +vt 0.437500 0.500000 +vt 0.312500 0.375000 +vt 0.625000 0.375000 +vt 0.312500 0.375000 +vt 0.437500 0.375000 +vt 0.312500 0.375000 +vt 0.625000 0.375000 +vt 0.312500 0.375000 +vt 0.437500 0.375000 +vn 1.0000 0.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +vn -1.0000 0.0000 0.0000 +vn 0.0000 0.0000 1.0000 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 1.0000 0.0000 +s off +f 3/1/1 2/2/1 1/3/1 +f 7/4/2 4/5/2 3/6/2 +f 5/7/3 8/8/3 7/4/3 +f 1/9/4 6/10/4 5/11/4 +f 1/12/5 7/13/5 3/14/5 +f 6/15/6 4/5/6 8/16/6 +f 10/17/3 11/18/3 9/19/3 +f 12/20/4 15/21/4 11/22/4 +f 16/23/1 13/24/1 15/21/1 +f 14/25/2 9/26/2 13/27/2 +f 15/28/6 9/29/6 11/30/6 +f 12/20/5 14/31/5 16/32/5 +f 3/1/1 4/33/1 2/2/1 +f 7/4/2 8/8/2 4/5/2 +f 5/7/3 6/34/3 8/8/3 +f 1/9/4 2/35/4 6/10/4 +f 1/12/5 5/36/5 7/13/5 +f 6/15/6 2/35/6 4/5/6 +f 10/17/3 12/37/3 11/18/3 +f 12/20/4 16/23/4 15/21/4 +f 16/23/1 14/38/1 13/24/1 +f 14/25/2 10/39/2 9/26/2 +f 15/28/6 13/40/6 9/29/6 +f 12/20/5 10/39/5 14/31/5 +o Skull +v -0.250000 -0.250000 0.250000 +v -0.250000 0.250000 0.250000 +v -0.250000 -0.250000 -0.250000 +v -0.250000 0.250000 -0.250000 +v 0.250000 -0.250000 0.250000 +v 0.250000 0.250000 0.250000 +v 0.250000 -0.250000 -0.250000 +v 0.250000 0.250000 -0.250000 +v -0.250000 -0.250000 0.250000 +v -0.250000 0.250000 0.250000 +v -0.250000 -0.250000 -0.250000 +v -0.250000 0.250000 -0.250000 +v 0.250000 -0.250000 0.250000 +v 0.250000 0.250000 0.250000 +v 0.250000 -0.250000 -0.250000 +v 0.250000 0.250000 -0.250000 +vt 0.500000 0.750000 +vt 0.375000 0.500000 +vt 0.500000 0.500000 +vt 0.375000 0.750000 +vt 0.250000 0.500000 +vt 0.250000 0.750000 +vt 0.125000 0.500000 +vt 0.125000 0.750000 +vt -0.000000 0.500000 +vt 0.250000 0.750000 +vt 0.375000 1.000000 +vt 0.250000 1.000000 +vt 0.250000 1.000000 +vt 0.375000 0.500000 +vt 0.500000 0.750000 +vt 0.500000 0.500000 +vt 0.250000 0.500000 +vt 0.375000 0.750000 +vt 0.125000 0.500000 +vt 0.250000 0.750000 +vt -0.000000 0.500000 +vt 0.125000 0.750000 +vt 0.375000 1.000000 +vt 0.250000 0.750000 +vt 0.250000 1.000000 +vt 0.250000 1.000000 +vt -0.000000 0.750000 +vt 0.375000 0.750000 +vt 0.125000 1.000000 +vt -0.000000 0.750000 +vt 0.375000 0.750000 +vt 0.125000 1.000000 +vn -1.0000 0.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +vn 1.0000 0.0000 0.0000 +vn 0.0000 0.0000 1.0000 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 1.0000 0.0000 +s off +f 18/41/7 19/42/7 17/43/7 +f 20/44/8 23/45/8 19/42/8 +f 24/46/9 21/47/9 23/45/9 +f 22/48/10 17/49/10 21/47/10 +f 23/50/11 17/51/11 19/52/11 +f 20/53/12 22/48/12 24/46/12 +f 27/54/9 26/55/9 25/56/9 +f 31/57/10 28/58/10 27/54/10 +f 29/59/7 32/60/7 31/57/7 +f 25/61/8 30/62/8 29/59/8 +f 25/63/12 31/64/12 27/65/12 +f 30/62/11 28/66/11 32/60/11 +f 18/41/7 20/44/7 19/42/7 +f 20/44/8 24/46/8 23/45/8 +f 24/46/9 22/48/9 21/47/9 +f 22/48/10 18/67/10 17/49/10 +f 23/50/11 21/68/11 17/51/11 +f 20/53/12 18/69/12 22/48/12 +f 27/54/9 28/58/9 26/55/9 +f 31/57/10 32/60/10 28/58/10 +f 29/59/7 30/62/7 32/60/7 +f 25/61/8 26/70/8 30/62/8 +f 25/63/12 29/71/12 31/64/12 +f 30/62/11 26/72/11 28/66/11 +o Limb +v -0.062500 -0.375000 0.062500 +v -0.062500 0.375000 0.062500 +v -0.062500 -0.375000 -0.062500 +v -0.062500 0.375000 -0.062500 +v 0.062500 -0.375000 0.062500 +v 0.062500 0.375000 0.062500 +v 0.062500 -0.375000 -0.062500 +v 0.062500 0.375000 -0.062500 +vt 0.125000 0.437500 +vt 0.093750 0.062500 +vt 0.125000 0.062500 +vt 0.093750 0.437500 +vt 0.062500 0.062500 +vt 0.062500 0.437500 +vt 0.031250 0.062500 +vt 0.031250 0.437500 +vt 0.000000 0.062500 +vt 0.062500 0.437500 +vt 0.093750 0.500000 +vt 0.062500 0.500000 +vt 0.062500 0.500000 +vt -0.000000 0.437500 +vt 0.093750 0.437500 +vt 0.031250 0.500000 +vn -1.0000 0.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +vn 1.0000 0.0000 0.0000 +vn 0.0000 0.0000 1.0000 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 1.0000 0.0000 +s off +f 34/73/13 35/74/13 33/75/13 +f 36/76/14 39/77/14 35/74/14 +f 40/78/15 37/79/15 39/77/15 +f 38/80/16 33/81/16 37/79/16 +f 39/82/17 33/83/17 35/84/17 +f 36/85/18 38/80/18 40/78/18 +f 34/73/13 36/76/13 35/74/13 +f 36/76/14 40/78/14 39/77/14 +f 40/78/15 38/80/15 37/79/15 +f 38/80/16 34/86/16 33/81/16 +f 39/82/17 37/87/17 33/83/17 +f 36/85/18 34/88/18 38/80/18 diff --git a/src/main/resources/assets/hbm/textures/particle/skeleton.png b/src/main/resources/assets/hbm/textures/particle/skeleton.png new file mode 100644 index 0000000000000000000000000000000000000000..184b5853ed9b1e3bb03735ef2673c96c4d7602b2 GIT binary patch literal 858 zcmV-g1Eu_lP)dL;4E|VXE)sI=B}^{A=%wYa^}orGRapf@+=mM43X#a+3IvUPMS7PyWMWRUa!&- z`u+Y_Y>toq4*}!xINNMCuIQa_l+kG92ns!A|2|r23l4>){B$~P9s#nxEKe;`s2k$} zD2oSB>~d%X0U_lT4;n#$tUjO5od--NlRO|cf&eM5C7@ua7yt=H<>RCMY&Od%QVwOe z+ikX9uk*58E}g}ZBPb%vHwcg%eJoKLS3#40w#_@9R69XF0Vswd)Vtlz)hfK7&*$uP zI=OH3m5lm`NJ~Ij9#K01QUu^Aft3J{b)?kwdd+UPTlRQ7vitq+%JFz~$|Hj;edsGM z;9Xu)mPgc1fPk-7tK6z`ae$-f<#KT~*5B{E?&zBsZJ?AT3wRP15#PWs^0U=z%{Wd(~TDeE?Fc&AZ=E zS7?&+*`ZxH#^&vAOXD_OMGl8tFzOr^~EFGGxTnc>O zaM&B4P&)>?%K!30J7#ix_Us;NSE*oZELq#iCC8V1f|%CkzpVYI1pEMBP*j&9scw?r k#h1Ll?hjMlB&Sy3AGp-UUwDhUp8x;=07*qoM6N<$f^$Zd8~^|S literal 0 HcmV?d00001 From 3e8000a1661cae75b0bef9b51862c14973fb11b4 Mon Sep 17 00:00:00 2001 From: Boblet Date: Wed, 4 Dec 2024 15:50:59 +0100 Subject: [PATCH 15/24] get skullanized, idiot --- .../standard/EntityProcessorCrossSmooth.java | 11 ++++++++++- .../java/com/hbm/handler/EntityEffectHandler.java | 5 +++++ .../com/hbm/items/weapon/sedna/BulletConfig.java | 4 +++- .../items/weapon/sedna/factory/ConfettiUtil.java | 14 ++++++++------ .../items/weapon/sedna/factory/XFactoryFlamer.java | 8 ++++---- src/main/java/com/hbm/particle/ParticleAshes.java | 10 +++++----- .../java/com/hbm/particle/ParticleSkeleton.java | 3 +-- .../com/hbm/particle/helper/SkeletonCreator.java | 14 +++++++++----- 8 files changed, 45 insertions(+), 24 deletions(-) diff --git a/src/main/java/com/hbm/explosion/vanillant/standard/EntityProcessorCrossSmooth.java b/src/main/java/com/hbm/explosion/vanillant/standard/EntityProcessorCrossSmooth.java index 51bdef9e5..38cb3383f 100644 --- a/src/main/java/com/hbm/explosion/vanillant/standard/EntityProcessorCrossSmooth.java +++ b/src/main/java/com/hbm/explosion/vanillant/standard/EntityProcessorCrossSmooth.java @@ -2,10 +2,13 @@ package com.hbm.explosion.vanillant.standard; import com.hbm.explosion.vanillant.ExplosionVNT; import com.hbm.items.weapon.sedna.BulletConfig; +import com.hbm.items.weapon.sedna.factory.ConfettiUtil; +import com.hbm.util.EntityDamageUtil; import com.hbm.util.DamageResistanceHandler.DamageClass; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLivingBase; +import net.minecraft.util.DamageSource; public class EntityProcessorCrossSmooth extends EntityProcessorCross { @@ -27,7 +30,13 @@ public class EntityProcessorCrossSmooth extends EntityProcessorCross { @Override public void attackEntity(Entity entity, ExplosionVNT source, float amount) { - entity.attackEntityFrom(BulletConfig.getDamage(null, source.exploder instanceof EntityLivingBase ? (EntityLivingBase) source.exploder : null, clazz), amount); + DamageSource dmg = BulletConfig.getDamage(null, source.exploder instanceof EntityLivingBase ? (EntityLivingBase) source.exploder : null, clazz); + if(!(entity instanceof EntityLivingBase)) { + entity.attackEntityFrom(dmg, amount); + } else { + EntityDamageUtil.attackEntityFromNT((EntityLivingBase) entity, dmg, amount, true, false, 0F, pierceDT, pierceDR); + if(!entity.isEntityAlive()) ConfettiUtil.decideConfetti((EntityLivingBase) entity, dmg); + } } @Override diff --git a/src/main/java/com/hbm/handler/EntityEffectHandler.java b/src/main/java/com/hbm/handler/EntityEffectHandler.java index c6597b3f5..52c80352c 100644 --- a/src/main/java/com/hbm/handler/EntityEffectHandler.java +++ b/src/main/java/com/hbm/handler/EntityEffectHandler.java @@ -18,6 +18,7 @@ import com.hbm.handler.pollution.PollutionHandler.PollutionType; import com.hbm.handler.radiation.ChunkRadiationManager; import com.hbm.interfaces.IArmorModDash; import com.hbm.items.armor.ArmorFSB; +import com.hbm.items.weapon.sedna.factory.ConfettiUtil; import com.hbm.lib.ModDamageSource; import com.hbm.main.MainRegistry; import com.hbm.packet.PacketDispatcher; @@ -572,6 +573,8 @@ public class EntityEffectHandler { HbmLivingProps props = HbmLivingProps.getData(living); Random rand = living.getRNG(); + if(!entity.isEntityAlive()) return; + if(living.isImmuneToFire()) props.fire = 0; double x = living.posX; @@ -594,6 +597,8 @@ public class EntityEffectHandler { if((living.ticksExisted + living.getEntityId()) % 20 == 0) living.attackEntityFrom(DamageSource.onFire, 5F); FlameCreator.composeEffect(entity.worldObj, x - living.width / 2 + living.width * rand.nextDouble(), y + rand.nextDouble() * living.height, z - living.width / 2 + living.width * rand.nextDouble(), FlameCreator.META_BALEFIRE); } + + if(props.fire > 0 || props.balefire > 0) if(!entity.isEntityAlive()) ConfettiUtil.decideConfetti(living, DamageSource.onFire); } private static void handleDashing(Entity entity) { diff --git a/src/main/java/com/hbm/items/weapon/sedna/BulletConfig.java b/src/main/java/com/hbm/items/weapon/sedna/BulletConfig.java index 596a246d2..f9e5c341c 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/BulletConfig.java +++ b/src/main/java/com/hbm/items/weapon/sedna/BulletConfig.java @@ -49,7 +49,7 @@ public class BulletConfig implements Cloneable { public float damageMult = 1.0F; public float armorThresholdNegation = 0.0F; public float armorPiercingPercent = 0.0F; - public float knockbackMult = 0.25F; + public float knockbackMult = 0.1F; public float headshotMult = 1.0F; public DamageClass dmgClass = DamageClass.PHYSICAL; @@ -219,6 +219,8 @@ public class BulletConfig implements Cloneable { bullet.setPosition(mop.hitVec.xCoord, mop.hitVec.yCoord, mop.hitVec.zCoord); bullet.setDead(); } + + if(!living.isEntityAlive()) ConfettiUtil.decideConfetti(living, source); } }; diff --git a/src/main/java/com/hbm/items/weapon/sedna/factory/ConfettiUtil.java b/src/main/java/com/hbm/items/weapon/sedna/factory/ConfettiUtil.java index 7c914ba7e..b5070b6dc 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/factory/ConfettiUtil.java +++ b/src/main/java/com/hbm/items/weapon/sedna/factory/ConfettiUtil.java @@ -15,20 +15,22 @@ import net.minecraft.util.MathHelper; public class ConfettiUtil { public static void decideConfetti(EntityLivingBase entity, DamageSource source) { + if(entity.isEntityAlive()) return; if(source.damageType.equals(DamageClass.LASER.name())) pulverize(entity); - if(source.damageType.equals(DamageClass.EXPLOSIVE.name())) gib(entity); - skullanize(entity); + if(source.isExplosion()) gib(entity); + if(source.isFireDamage()) cremate(entity); } public static void pulverize(EntityLivingBase entity) { - if(entity.isEntityAlive()) return; int amount = MathHelper.clamp_int((int) (entity.width * entity.height * entity.width * 25), 5, 50); AshesCreator.composeEffect(entity.worldObj, entity, amount, 0.125F); + SkeletonCreator.composeEffect(entity.worldObj, entity, 1F); } - public static void skullanize(EntityLivingBase entity) { - if(entity.isEntityAlive()) return; - SkeletonCreator.composeEffect(entity.worldObj, entity); + public static void cremate(EntityLivingBase entity) { + int amount = MathHelper.clamp_int((int) (entity.width * entity.height * entity.width * 25), 5, 50); + AshesCreator.composeEffect(entity.worldObj, entity, amount, 0.125F); + SkeletonCreator.composeEffect(entity.worldObj, entity, 0.25F); } public static void gib(EntityLivingBase entity) { diff --git a/src/main/java/com/hbm/items/weapon/sedna/factory/XFactoryFlamer.java b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactoryFlamer.java index 1ff33433c..57828b6ad 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/factory/XFactoryFlamer.java +++ b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactoryFlamer.java @@ -108,13 +108,13 @@ public class XFactoryFlamer { } public static void init() { - flame_diesel = new BulletConfig().setItem(EnumAmmo.FLAME_DIESEL).setupDamageClass(DamageClass.FIRE).setLife(100).setVel(1F).setGrav(0.02D).setReloadCount(500).setSelfDamageDelay(20) + flame_diesel = new BulletConfig().setItem(EnumAmmo.FLAME_DIESEL).setupDamageClass(DamageClass.FIRE).setLife(100).setVel(1F).setGrav(0.02D).setReloadCount(500).setSelfDamageDelay(20).setKnockback(0F) .setOnUpdate(LAMBDA_FIRE).setOnRicochet(LAMBDA_LINGER_DIESEL); - flame_gas = new BulletConfig().setItem(EnumAmmo.FLAME_GAS).setupDamageClass(DamageClass.FIRE).setLife(10).setSpread(0.05F).setVel(1F).setGrav(0.0D).setReloadCount(500).setSelfDamageDelay(20) + flame_gas = new BulletConfig().setItem(EnumAmmo.FLAME_GAS).setupDamageClass(DamageClass.FIRE).setLife(10).setSpread(0.05F).setVel(1F).setGrav(0.0D).setReloadCount(500).setSelfDamageDelay(20).setKnockback(0F) .setOnUpdate(LAMBDA_FIRE).setOnRicochet(LAMBDA_LINGER_GAS); - flame_napalm = new BulletConfig().setItem(EnumAmmo.FLAME_NAPALM).setupDamageClass(DamageClass.FIRE).setLife(200).setVel(1F).setGrav(0.02D).setReloadCount(500).setSelfDamageDelay(20) + flame_napalm = new BulletConfig().setItem(EnumAmmo.FLAME_NAPALM).setupDamageClass(DamageClass.FIRE).setLife(200).setVel(1F).setGrav(0.02D).setReloadCount(500).setSelfDamageDelay(20).setKnockback(0F) .setOnUpdate(LAMBDA_FIRE).setOnRicochet(LAMBDA_LINGER_NAPALM); - flame_balefire = new BulletConfig().setItem(EnumAmmo.FLAME_BALEFIRE).setupDamageClass(DamageClass.FIRE).setLife(200).setVel(1F).setGrav(0.02D).setReloadCount(500).setSelfDamageDelay(20) + flame_balefire = new BulletConfig().setItem(EnumAmmo.FLAME_BALEFIRE).setupDamageClass(DamageClass.FIRE).setLife(200).setVel(1F).setGrav(0.02D).setReloadCount(500).setSelfDamageDelay(20).setKnockback(0F) .setOnUpdate(LAMBDA_BALEFIRE).setOnRicochet(LAMBDA_LINGER_BALEFIRE); flame_topaz_diesel = flame_diesel .clone().setProjectiles(2).setSpread(0.05F).setLife(60).setGrav(0.0D); diff --git a/src/main/java/com/hbm/particle/ParticleAshes.java b/src/main/java/com/hbm/particle/ParticleAshes.java index 636ca2835..07b50286f 100644 --- a/src/main/java/com/hbm/particle/ParticleAshes.java +++ b/src/main/java/com/hbm/particle/ParticleAshes.java @@ -14,7 +14,7 @@ public class ParticleAshes extends EntityFXRotating { public ParticleAshes(World world, double x, double y, double z, float scale) { super(world, x, y, z); particleIcon = ModEventHandlerClient.particleBase; - this.particleMaxAge = 200 + rand.nextInt(15); + this.particleMaxAge = 1200 + rand.nextInt(20); this.particleScale = scale * 0.9F + rand.nextFloat() * 0.2F; this.particleGravity = 0.01F; @@ -72,14 +72,14 @@ public class ParticleAshes extends EntityFXRotating { float pZ = (float) (this.prevPosZ + (this.posZ - this.prevPosZ) * (double) interp - interpPosZ); Vec3NT vec = new Vec3NT(particleScale, 0, particleScale).rotateAroundYDeg(this.rotationPitch); - - tess.addVertexWithUV(pX + vec.xCoord, pY + 0.05, pZ + vec.zCoord, particleIcon.getMaxU(), particleIcon.getMaxV()); - vec.rotateAroundYDeg(-90); + tess.addVertexWithUV(pX + vec.xCoord, pY + 0.05, pZ + vec.zCoord, particleIcon.getMaxU(), particleIcon.getMinV()); vec.rotateAroundYDeg(-90); - tess.addVertexWithUV(pX + vec.xCoord, pY + 0.05, pZ + vec.zCoord, particleIcon.getMinU(), particleIcon.getMinV()); + tess.addVertexWithUV(pX + vec.xCoord, pY + 0.05, pZ + vec.zCoord, particleIcon.getMaxU(), particleIcon.getMaxV()); vec.rotateAroundYDeg(-90); tess.addVertexWithUV(pX + vec.xCoord, pY + 0.05, pZ + vec.zCoord, particleIcon.getMinU(), particleIcon.getMaxV()); + vec.rotateAroundYDeg(-90); + tess.addVertexWithUV(pX + vec.xCoord, pY + 0.05, pZ + vec.zCoord, particleIcon.getMinU(), particleIcon.getMinV()); } else { renderParticleRotated(tess, interp, sX, sY, sZ, dX, dZ, this.particleScale); } diff --git a/src/main/java/com/hbm/particle/ParticleSkeleton.java b/src/main/java/com/hbm/particle/ParticleSkeleton.java index 314fb7e9a..95e937812 100644 --- a/src/main/java/com/hbm/particle/ParticleSkeleton.java +++ b/src/main/java/com/hbm/particle/ParticleSkeleton.java @@ -1,7 +1,6 @@ package com.hbm.particle; import org.lwjgl.opengl.GL11; -import org.lwjgl.opengl.GL12; import com.hbm.lib.RefStrings; import com.hbm.particle.helper.SkeletonCreator.EnumSkeletonType; @@ -39,7 +38,7 @@ public class ParticleSkeleton extends EntityFX { this.textureManager = textureManager; this.type = type; - this.particleMaxAge = 200 + rand.nextInt(20); + this.particleMaxAge = 1200 + rand.nextInt(20); this.particleRed = r; this.particleGreen = g; diff --git a/src/main/java/com/hbm/particle/helper/SkeletonCreator.java b/src/main/java/com/hbm/particle/helper/SkeletonCreator.java index 78dfaeafa..ed938a05f 100644 --- a/src/main/java/com/hbm/particle/helper/SkeletonCreator.java +++ b/src/main/java/com/hbm/particle/helper/SkeletonCreator.java @@ -18,6 +18,7 @@ import net.minecraft.client.entity.EntityPlayerSP; import net.minecraft.client.renderer.texture.TextureManager; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLivingBase; +import net.minecraft.entity.monster.EntityPigZombie; import net.minecraft.entity.monster.EntitySkeleton; import net.minecraft.entity.monster.EntityZombie; import net.minecraft.entity.player.EntityPlayer; @@ -28,11 +29,12 @@ public class SkeletonCreator implements IParticleCreator { public static HashMap> skullanizer = new HashMap(); - public static void composeEffect(World world, Entity toSkeletonize) { + public static void composeEffect(World world, Entity toSkeletonize, float brightness) { NBTTagCompound data = new NBTTagCompound(); data.setString("type", "skeleton"); data.setInteger("entityID", toSkeletonize.getEntityId()); + data.setFloat("brightness", brightness); IParticleCreator.sendPacket(world, toSkeletonize.posX, toSkeletonize.posY, toSkeletonize.posZ, 100, data); } @@ -49,12 +51,14 @@ public class SkeletonCreator implements IParticleCreator { ClientProxy.vanish(entityID); + float brightness = data.getFloat("brightness"); + Function bonealizer = skullanizer.get(entity.getClass()); if(bonealizer != null) { BoneDefinition[] bones = bonealizer.apply(living); for(BoneDefinition bone : bones) { - ParticleSkeleton skeleton = new ParticleSkeleton(Minecraft.getMinecraft().getTextureManager(), world, bone.x, bone.y, bone.z, 1F, 1F, 1F, bone.type); + ParticleSkeleton skeleton = new ParticleSkeleton(Minecraft.getMinecraft().getTextureManager(), world, bone.x, bone.y, bone.z, brightness, brightness, brightness, bone.type); skeleton.prevRotationYaw = skeleton.rotationYaw = bone.yaw; skeleton.prevRotationPitch = skeleton.rotationPitch = bone.pitch; Minecraft.getMinecraft().effectRenderer.addEffect(skeleton); @@ -113,13 +117,12 @@ public class SkeletonCreator implements IParticleCreator { public static Function BONES_DUMMY = (entity) -> { Vec3NT leftarm = new Vec3NT(0.375, 0, 0).rotateAroundYDeg(-entity.renderYawOffset); - Vec3NT forward = new Vec3NT(0, 0, 0.25).rotateAroundYDeg(-entity.renderYawOffset); Vec3NT leftleg = new Vec3NT(0.125, 0, 0).rotateAroundYDeg(-entity.renderYawOffset); return new BoneDefinition[] { new BoneDefinition(EnumSkeletonType.SKULL, -entity.rotationYawHead, entity.rotationPitch, entity.posX, entity.posY + 1.75, entity.posZ), new BoneDefinition(EnumSkeletonType.TORSO, -entity.renderYawOffset, 0, entity.posX, entity.posY + 1.125, entity.posZ), - new BoneDefinition(EnumSkeletonType.LIMB, -entity.renderYawOffset, -90, entity.posX + leftarm.xCoord + forward.xCoord, entity.posY + 1.375, entity.posZ + leftarm.zCoord + forward.zCoord), - new BoneDefinition(EnumSkeletonType.LIMB, -entity.renderYawOffset, -90, entity.posX - leftarm.xCoord + forward.xCoord, entity.posY + 1.375, entity.posZ - leftarm.zCoord + forward.zCoord), + new BoneDefinition(EnumSkeletonType.LIMB, -entity.renderYawOffset, 0, entity.posX + leftarm.xCoord, entity.posY + 1.125, entity.posZ + leftarm.zCoord), + new BoneDefinition(EnumSkeletonType.LIMB, -entity.renderYawOffset, 0, entity.posX - leftarm.xCoord, entity.posY + 1.125, entity.posZ - leftarm.zCoord), new BoneDefinition(EnumSkeletonType.LIMB, -entity.renderYawOffset, 0, entity.posX + leftleg.xCoord, entity.posY + 0.625, entity.posZ + leftleg.zCoord), new BoneDefinition(EnumSkeletonType.LIMB, -entity.renderYawOffset, 0, entity.posX - leftleg.xCoord, entity.posY + 0.625, entity.posZ - leftleg.zCoord), }; @@ -132,6 +135,7 @@ public class SkeletonCreator implements IParticleCreator { skullanizer.put(EntityZombie.class, BONES_ZOMBIE); skullanizer.put(EntitySkeleton.class, BONES_ZOMBIE); + skullanizer.put(EntityPigZombie.class, BONES_ZOMBIE); skullanizer.put(EntityDummy.class, BONES_DUMMY); } From 938d9935bfaba96753ee2b35c6a0c5fb95483b9c Mon Sep 17 00:00:00 2001 From: Bob Date: Wed, 4 Dec 2024 23:30:53 +0100 Subject: [PATCH 16/24] infrared laser heat ray fuck --- .../weapon/sedna/factory/ConfettiUtil.java | 2 + .../weapon/sedna/factory/GunFactory.java | 2 +- .../sedna/factory/GunFactoryClient.java | 4 +- .../weapon/sedna/factory/XFactory762mm.java | 4 +- .../weapon/sedna/factory/XFactoryEnergy.java | 37 +++++++++++++++++- .../java/com/hbm/particle/ParticleAshes.java | 6 +-- .../com/hbm/particle/ParticleSkeleton.java | 8 +++- .../hbm/particle/helper/SkeletonCreator.java | 28 ++++++++----- src/main/resources/assets/hbm/sounds.json | 1 + .../hbm/sounds/weapon/fire/disintegration.ogg | Bin 0 -> 56165 bytes .../items/ammo_standard.capacitor_ir.png | Bin 0 -> 251 bytes 11 files changed, 74 insertions(+), 18 deletions(-) create mode 100644 src/main/resources/assets/hbm/sounds/weapon/fire/disintegration.ogg create mode 100644 src/main/resources/assets/hbm/textures/items/ammo_standard.capacitor_ir.png diff --git a/src/main/java/com/hbm/items/weapon/sedna/factory/ConfettiUtil.java b/src/main/java/com/hbm/items/weapon/sedna/factory/ConfettiUtil.java index b5070b6dc..0a483910c 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/factory/ConfettiUtil.java +++ b/src/main/java/com/hbm/items/weapon/sedna/factory/ConfettiUtil.java @@ -25,12 +25,14 @@ public class ConfettiUtil { int amount = MathHelper.clamp_int((int) (entity.width * entity.height * entity.width * 25), 5, 50); AshesCreator.composeEffect(entity.worldObj, entity, amount, 0.125F); SkeletonCreator.composeEffect(entity.worldObj, entity, 1F); + entity.worldObj.playSoundEffect(entity.posX, entity.posY, entity.posZ, "hbm:weapon.fire.disintegration", 2.0F, 0.9F + entity.getRNG().nextFloat() * 0.2F); } public static void cremate(EntityLivingBase entity) { int amount = MathHelper.clamp_int((int) (entity.width * entity.height * entity.width * 25), 5, 50); AshesCreator.composeEffect(entity.worldObj, entity, amount, 0.125F); SkeletonCreator.composeEffect(entity.worldObj, entity, 0.25F); + entity.worldObj.playSoundEffect(entity.posX, entity.posY, entity.posZ, "hbm:weapon.fire.disintegration", 2.0F, 0.9F + entity.getRNG().nextFloat() * 0.2F); } public static void gib(EntityLivingBase entity) { diff --git a/src/main/java/com/hbm/items/weapon/sedna/factory/GunFactory.java b/src/main/java/com/hbm/items/weapon/sedna/factory/GunFactory.java index 51bf4adfd..b68413fd1 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/factory/GunFactory.java +++ b/src/main/java/com/hbm/items/weapon/sedna/factory/GunFactory.java @@ -84,7 +84,7 @@ public class GunFactory { G40_HE, G40_HEAT, G40_DEMO, G40_INC, G40_PHOSPHORUS, ROCKET_HE, ROCKET_HEAT, ROCKET_DEMO, ROCKET_INC, ROCKET_PHOSPHORUS, FLAME_DIESEL, FLAME_GAS, FLAME_NAPALM, FLAME_BALEFIRE, - CAPACITOR, CAPACITOR_OVERCHARGE, + CAPACITOR, CAPACITOR_OVERCHARGE, CAPACITOR_IR, TAU_URANIUM, COIL_TUNGSTEN, COIL_FERROURANIUM, NUKE_STANDARD, NUKE_DEMO, NUKE_HIGH, NUKE_TOTS, NUKE_HIVE diff --git a/src/main/java/com/hbm/items/weapon/sedna/factory/GunFactoryClient.java b/src/main/java/com/hbm/items/weapon/sedna/factory/GunFactoryClient.java index 998133113..3cc626948 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/factory/GunFactoryClient.java +++ b/src/main/java/com/hbm/items/weapon/sedna/factory/GunFactoryClient.java @@ -161,8 +161,8 @@ public class GunFactoryClient { setRendererBulkBeam(LegoClient.RENDER_LIGHTNING, energy_tesla, energy_tesla_overcharge); setRendererBulkBeam(LegoClient.RENDER_TAU, tau_uranium); setRendererBulkBeam(LegoClient.RENDER_TAU_CHARGE, tau_uranium_charge); - setRendererBulkBeam(LegoClient.RENDER_LASER_RED, energy_las, energy_las_overcharge); - setRendererBulkBeam(LegoClient.RENDER_LASER_PURPLE, energy_lacunae, energy_lacunae_overcharge); + setRendererBulkBeam(LegoClient.RENDER_LASER_RED, energy_las, energy_las_overcharge, energy_las_ir); + setRendererBulkBeam(LegoClient.RENDER_LASER_PURPLE, energy_lacunae, energy_lacunae_overcharge, energy_lacunae_ir); setRendererBulk(LegoClient.RENDER_AP_BULLET, coil_tungsten, coil_ferrouranium); diff --git a/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory762mm.java b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory762mm.java index 854f6d6f8..692d5cf6c 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory762mm.java +++ b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory762mm.java @@ -35,6 +35,7 @@ public class XFactory762mm { public static BulletConfig energy_lacunae; public static BulletConfig energy_lacunae_overcharge; + public static BulletConfig energy_lacunae_ir; public static void init() { SpentCasing casing762 = new SpentCasing(CasingType.BOTTLENECK).setColor(SpentCasing.COLOR_CASE_BRASS); @@ -51,6 +52,7 @@ public class XFactory762mm { energy_lacunae = new BulletConfig().setItem(EnumAmmo.CAPACITOR).setupDamageClass(DamageClass.LASER).setBeam().setReloadCount(40).setSpread(0.0F).setLife(5).setRenderRotations(false).setOnBeamImpact(BulletConfig.LAMBDA_STANDARD_BEAM_HIT); energy_lacunae_overcharge = new BulletConfig().setItem(EnumAmmo.CAPACITOR_OVERCHARGE).setupDamageClass(DamageClass.LASER).setBeam().setReloadCount(40).setSpread(0.0F).setLife(5).setRenderRotations(false).setDoesPenetrate(true).setOnBeamImpact(BulletConfig.LAMBDA_STANDARD_BEAM_HIT); + energy_lacunae_ir = new BulletConfig().setItem(EnumAmmo.CAPACITOR_IR).setupDamageClass(DamageClass.FIRE).setBeam().setReloadCount(40).setSpread(0.0F).setLife(5).setRenderRotations(false).setOnBeamImpact(XFactoryEnergy.LAMBDA_IR_HIT); ModItems.gun_carbine = new ItemGunBaseNT(WeaponQuality.A_SIDE, new GunConfig() .dura(3_000).draw(10).inspect(31).reloadSequential(true).crosshair(Crosshair.CIRCLE).smoke(LAMBDA_SMOKE) @@ -77,7 +79,7 @@ public class XFactory762mm { .dura(50_000).draw(20).inspect(20).crosshair(Crosshair.L_CIRCLE) .rec(new Receiver(0) .dmg(12F).delay(1).auto(true).dry(15).reload(15).spread(0.01F).sound("hbm:weapon.fire.blackPowder", 1.0F, 1.0F) - .mag(new MagazineFullReload(0, 200).addConfigs(energy_lacunae, energy_lacunae_overcharge)) + .mag(new MagazineFullReload(0, 200).addConfigs(energy_lacunae, energy_lacunae_overcharge, energy_lacunae_ir)) .offset(1, -0.0625 * 2.5, -0.25D) .setupStandardFire().recoil(Lego.LAMBDA_STANDARD_RECOIL)) .setupStandardConfiguration() diff --git a/src/main/java/com/hbm/items/weapon/sedna/factory/XFactoryEnergy.java b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactoryEnergy.java index dc57410ae..85c9e99ab 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/factory/XFactoryEnergy.java +++ b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactoryEnergy.java @@ -3,10 +3,12 @@ package com.hbm.items.weapon.sedna.factory; import java.util.function.BiConsumer; import java.util.function.BiFunction; +import com.hbm.entity.effect.EntityFireLingering; import com.hbm.entity.projectile.EntityBulletBeamBase; import com.hbm.explosion.vanillant.ExplosionVNT; import com.hbm.explosion.vanillant.standard.EntityProcessorCrossSmooth; import com.hbm.explosion.vanillant.standard.PlayerProcessorStandard; +import com.hbm.extprop.HbmLivingProps; import com.hbm.items.ModItems; import com.hbm.items.weapon.sedna.BulletConfig; import com.hbm.items.weapon.sedna.Crosshair; @@ -28,13 +30,16 @@ import com.hbm.render.anim.HbmAnimations.AnimType; import com.hbm.util.DamageResistanceHandler.DamageClass; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; +import net.minecraft.block.Block; import net.minecraft.entity.EntityLivingBase; +import net.minecraft.init.Blocks; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.potion.Potion; import net.minecraft.potion.PotionEffect; import net.minecraft.util.MovingObjectPosition; import net.minecraft.util.ResourceLocation; +import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; public class XFactoryEnergy { @@ -46,6 +51,7 @@ public class XFactoryEnergy { public static BulletConfig energy_las; public static BulletConfig energy_las_overcharge; + public static BulletConfig energy_las_ir; public static BiConsumer LAMBDA_LIGHTNING_HIT = (beam, mop) -> { @@ -85,6 +91,34 @@ public class XFactoryEnergy { } }; + public static BiConsumer LAMBDA_IR_HIT = (beam, mop) -> { + BulletConfig.LAMBDA_STANDARD_BEAM_HIT.accept(beam, mop); + + if(mop.typeOfHit == mop.typeOfHit.ENTITY) { + if(mop.entityHit instanceof EntityLivingBase) { + EntityLivingBase living = (EntityLivingBase) mop.entityHit; + HbmLivingProps props = HbmLivingProps.getData(living); + if(props.fire < 100) props.fire = 100; + } + } + + if(mop.typeOfHit == mop.typeOfHit.BLOCK) { + World world = beam.worldObj; + Block b = world.getBlock(mop.blockX, mop.blockY, mop.blockZ); + ForgeDirection dir = ForgeDirection.getOrientation(mop.sideHit); + if(b.isFlammable(world, mop.blockX, mop.blockY, mop.blockZ, dir.getOpposite())) { + if(world.getBlock(mop.blockX + dir.offsetX, mop.blockY + dir.offsetY, mop.blockZ + dir.offsetZ).isAir(world, mop.blockX + dir.offsetX, mop.blockY + dir.offsetY, mop.blockZ + dir.offsetZ)) { + world.setBlock(mop.blockX + dir.offsetX, mop.blockY + dir.offsetY, mop.blockZ + dir.offsetZ, Blocks.fire); + return; + } + } + + EntityFireLingering fire = new EntityFireLingering(beam.worldObj).setArea(2, 1).setDuration(100).setType(EntityFireLingering.TYPE_DIESEL); + fire.setPosition(mop.hitVec.xCoord, mop.hitVec.yCoord, mop.hitVec.zCoord); + beam.worldObj.spawnEntityInWorld(fire); + } + }; + public static void init() { energy_tesla = new BulletConfig().setItem(EnumAmmo.CAPACITOR).setupDamageClass(DamageClass.ELECTRIC).setBeam().setSpread(0.0F).setLife(5).setRenderRotations(false).setDoesPenetrate(true) @@ -94,6 +128,7 @@ public class XFactoryEnergy { energy_las = new BulletConfig().setItem(EnumAmmo.CAPACITOR).setupDamageClass(DamageClass.LASER).setBeam().setSpread(0.0F).setLife(5).setRenderRotations(false).setOnBeamImpact(BulletConfig.LAMBDA_STANDARD_BEAM_HIT); energy_las_overcharge = new BulletConfig().setItem(EnumAmmo.CAPACITOR_OVERCHARGE).setupDamageClass(DamageClass.LASER).setBeam().setSpread(0.0F).setLife(5).setRenderRotations(false).setDoesPenetrate(true).setOnBeamImpact(BulletConfig.LAMBDA_STANDARD_BEAM_HIT); + energy_las_ir = new BulletConfig().setItem(EnumAmmo.CAPACITOR_IR).setupDamageClass(DamageClass.FIRE).setBeam().setSpread(0.0F).setLife(5).setRenderRotations(false).setOnBeamImpact(LAMBDA_IR_HIT); ModItems.gun_tesla_cannon = new ItemGunBaseNT(WeaponQuality.A_SIDE, new GunConfig() .dura(2_000).draw(10).inspect(33).reloadSequential(true).crosshair(Crosshair.CIRCLE) @@ -110,7 +145,7 @@ public class XFactoryEnergy { .dura(2_000).draw(10).inspect(26).reloadSequential(true).crosshair(Crosshair.CIRCLE).scopeTexture(scope_luna) .rec(new Receiver(0) .dmg(50F).delay(8).reload(44).jam(36).sound("hbm:weapon.fire.blackPowder", 1.0F, 1.0F) - .mag(new MagazineFullReload(0, 24).addConfigs(energy_las, energy_las_overcharge)) + .mag(new MagazineFullReload(0, 24).addConfigs(energy_las, energy_las_overcharge, energy_las_ir)) .offset(0.75, -0.0625 * 1.5, -0.1875) .setupStandardFire().recoil(Lego.LAMBDA_STANDARD_RECOIL)) .setupStandardConfiguration() diff --git a/src/main/java/com/hbm/particle/ParticleAshes.java b/src/main/java/com/hbm/particle/ParticleAshes.java index 07b50286f..5b869ed7e 100644 --- a/src/main/java/com/hbm/particle/ParticleAshes.java +++ b/src/main/java/com/hbm/particle/ParticleAshes.java @@ -73,13 +73,13 @@ public class ParticleAshes extends EntityFXRotating { Vec3NT vec = new Vec3NT(particleScale, 0, particleScale).rotateAroundYDeg(this.rotationPitch); - tess.addVertexWithUV(pX + vec.xCoord, pY + 0.05, pZ + vec.zCoord, particleIcon.getMaxU(), particleIcon.getMinV()); - vec.rotateAroundYDeg(-90); tess.addVertexWithUV(pX + vec.xCoord, pY + 0.05, pZ + vec.zCoord, particleIcon.getMaxU(), particleIcon.getMaxV()); vec.rotateAroundYDeg(-90); - tess.addVertexWithUV(pX + vec.xCoord, pY + 0.05, pZ + vec.zCoord, particleIcon.getMinU(), particleIcon.getMaxV()); + tess.addVertexWithUV(pX + vec.xCoord, pY + 0.05, pZ + vec.zCoord, particleIcon.getMaxU(), particleIcon.getMinV()); vec.rotateAroundYDeg(-90); tess.addVertexWithUV(pX + vec.xCoord, pY + 0.05, pZ + vec.zCoord, particleIcon.getMinU(), particleIcon.getMinV()); + vec.rotateAroundYDeg(-90); + tess.addVertexWithUV(pX + vec.xCoord, pY + 0.05, pZ + vec.zCoord, particleIcon.getMinU(), particleIcon.getMaxV()); } else { renderParticleRotated(tess, interp, sX, sY, sZ, dX, dZ, this.particleScale); } diff --git a/src/main/java/com/hbm/particle/ParticleSkeleton.java b/src/main/java/com/hbm/particle/ParticleSkeleton.java index 95e937812..7958124ae 100644 --- a/src/main/java/com/hbm/particle/ParticleSkeleton.java +++ b/src/main/java/com/hbm/particle/ParticleSkeleton.java @@ -3,6 +3,7 @@ package com.hbm.particle; import org.lwjgl.opengl.GL11; import com.hbm.lib.RefStrings; +import com.hbm.main.MainRegistry; import com.hbm.particle.helper.SkeletonCreator.EnumSkeletonType; import com.hbm.render.loader.HFRWavefrontObject; @@ -69,7 +70,8 @@ public class ParticleSkeleton extends EntityFX { if(this.particleAge++ >= this.particleMaxAge) { this.setDead(); } - + boolean wasOnGround = this.onGround; + this.motionY -= this.particleGravity; this.moveEntity(this.motionX, this.motionY, this.motionZ); this.motionX *= 0.98D; @@ -83,6 +85,10 @@ public class ParticleSkeleton extends EntityFX { this.motionX = 0; this.motionY = 0; this.motionZ = 0; + + if(!wasOnGround) { + MainRegistry.proxy.playSoundClient(posX, posY, posZ, "mob.skeleton.hurt", 0.25F, 0.8F + rand.nextFloat() * 0.4F); + } } } diff --git a/src/main/java/com/hbm/particle/helper/SkeletonCreator.java b/src/main/java/com/hbm/particle/helper/SkeletonCreator.java index ed938a05f..04bc10b22 100644 --- a/src/main/java/com/hbm/particle/helper/SkeletonCreator.java +++ b/src/main/java/com/hbm/particle/helper/SkeletonCreator.java @@ -27,7 +27,7 @@ import net.minecraft.world.World; public class SkeletonCreator implements IParticleCreator { - public static HashMap> skullanizer = new HashMap(); + public static HashMap> skullanizer = new HashMap(); public static void composeEffect(World world, Entity toSkeletonize, float brightness) { @@ -53,7 +53,7 @@ public class SkeletonCreator implements IParticleCreator { float brightness = data.getFloat("brightness"); - Function bonealizer = skullanizer.get(entity.getClass()); + Function bonealizer = skullanizer.get(entity.getClass().getSimpleName()); if(bonealizer != null) { BoneDefinition[] bones = bonealizer.apply(living); @@ -129,14 +129,24 @@ public class SkeletonCreator implements IParticleCreator { }; public static void init() { - skullanizer.put(EntityOtherPlayerMP.class, BONES_BIPED); - skullanizer.put(EntityClientPlayerMP.class, BONES_BIPED); - skullanizer.put(EntityPlayerSP.class, BONES_BIPED); + skullanizer.put(EntityOtherPlayerMP.class.getSimpleName(), BONES_BIPED); + skullanizer.put(EntityClientPlayerMP.class.getSimpleName(), BONES_BIPED); + skullanizer.put(EntityPlayerSP.class.getSimpleName(), BONES_BIPED); - skullanizer.put(EntityZombie.class, BONES_ZOMBIE); - skullanizer.put(EntitySkeleton.class, BONES_ZOMBIE); - skullanizer.put(EntityPigZombie.class, BONES_ZOMBIE); + skullanizer.put(EntityZombie.class.getSimpleName(), BONES_ZOMBIE); + skullanizer.put(EntitySkeleton.class.getSimpleName(), BONES_ZOMBIE); + skullanizer.put(EntityPigZombie.class.getSimpleName(), BONES_ZOMBIE); - skullanizer.put(EntityDummy.class, BONES_DUMMY); + skullanizer.put(EntityDummy.class.getSimpleName(), BONES_DUMMY); + + //techguns compat, for some reason + //not alwayss accurate because of variable arm position, but better than nothing + skullanizer.put("ArmySoldier", BONES_ZOMBIE); + skullanizer.put("PsychoSteve", BONES_ZOMBIE); + skullanizer.put("SkeletonSoldier", BONES_ZOMBIE); + skullanizer.put("ZombieFarmer", BONES_ZOMBIE); + skullanizer.put("ZombieMiner", BONES_ZOMBIE); + skullanizer.put("ZombiePigmanSoldier", BONES_ZOMBIE); + skullanizer.put("ZombieSoldier", BONES_ZOMBIE); } } diff --git a/src/main/resources/assets/hbm/sounds.json b/src/main/resources/assets/hbm/sounds.json index 3090f9d63..c2d0c65c9 100644 --- a/src/main/resources/assets/hbm/sounds.json +++ b/src/main/resources/assets/hbm/sounds.json @@ -235,6 +235,7 @@ "weapon.fire.smack": {"category": "player", "sounds": ["weapon/fire/smack"]}, "weapon.fire.vstar": {"category": "player", "sounds": ["weapon/fire/vstar"]}, "weapon.fire.loudestNoiseOnEarth": {"category": "player", "sounds": ["weapon/fire/loudestNoiseOnEarth"]}, + "weapon.fire.disintegration": {"category": "player", "sounds": ["weapon/fire/disintegration"]}, "weapon.reload.boltClose": {"category": "player", "sounds": ["weapon/reload/boltClose"]}, "weapon.reload.boltOpen": {"category": "player", "sounds": ["weapon/reload/boltOpen"]}, diff --git a/src/main/resources/assets/hbm/sounds/weapon/fire/disintegration.ogg b/src/main/resources/assets/hbm/sounds/weapon/fire/disintegration.ogg new file mode 100644 index 0000000000000000000000000000000000000000..944cb0fb92ad3aacd2ce405dd9aa832e9aa59ae6 GIT binary patch literal 56165 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 Date: Thu, 5 Dec 2024 16:33:13 +0100 Subject: [PATCH 17/24] hawk tuah 2: eagle tuah --- .../hbm/blocks/generic/BlockOreBasalt.java | 1 - .../java/com/hbm/crafting/WeaponRecipes.java | 88 +----- .../projectile/EntityBulletBaseMK4.java | 16 ++ .../hbm/handler/guncfg/GunDartFactory.java | 24 -- src/main/java/com/hbm/items/ModItems.java | 157 +++++----- .../java/com/hbm/items/weapon/GunB93.java | 270 ------------------ .../com/hbm/items/weapon/GunCryolator.java | 95 ------ .../com/hbm/items/weapon/GunDefabricator.java | 103 ------- .../com/hbm/items/weapon/GunEuthanasia.java | 105 ------- .../java/com/hbm/items/weapon/GunFolly.java | 135 --------- src/main/java/com/hbm/items/weapon/GunHP.java | 71 ----- .../java/com/hbm/items/weapon/GunJack.java | 150 ---------- .../com/hbm/items/weapon/GunLeverActionS.java | 232 --------------- .../java/com/hbm/items/weapon/GunSpark.java | 141 --------- .../java/com/hbm/items/weapon/GunSuicide.java | 158 ---------- .../com/hbm/items/weapon/ItemCoilgun.java | 40 --- .../java/com/hbm/items/weapon/ItemGunBio.java | 125 -------- .../hbm/items/weapon/ItemGunChemthrower.java | 226 --------------- .../com/hbm/items/weapon/ItemGunDart.java | 78 ----- .../hbm/items/weapon/ItemGunDetonator.java | 17 -- .../com/hbm/items/weapon/ItemGunGauss.java | 158 ---------- .../com/hbm/items/weapon/ItemGunLacunae.java | 42 --- .../com/hbm/items/weapon/ItemGunOSIPR.java | 62 ---- .../java/com/hbm/items/weapon/ItemGunPip.java | 137 --------- .../com/hbm/items/weapon/ItemGunShotty.java | 24 -- .../hbm/items/weapon/sedna/BulletConfig.java | 2 + src/main/java/com/hbm/main/ClientProxy.java | 59 ---- src/main/java/com/hbm/main/MainRegistry.java | 8 + .../item/weapon/ItemRenderBioRevolver.java | 185 ------------ .../render/item/weapon/ItemRenderGunAnim.java | 12 - .../weapon/ItemRenderWeaponChemthrower.java | 105 ------- .../item/weapon/ItemRenderWeaponCoilgun.java | 100 ------- .../item/weapon/ItemRenderWeaponCongo.java | 164 ----------- .../item/weapon/ItemRenderWeaponLilMac.java | 256 ----------------- .../item/weapon/ItemRenderWeaponQuadro.java | 135 --------- .../item/weapon/ItemRenderWeaponSpas12.java | 131 --------- .../item/weapon/ItemRenderWeaponTau.java | 116 -------- .../turret/TileEntityTurretBaseNT.java | 23 +- .../turret/TileEntityTurretChekhov.java | 24 +- .../turret/TileEntityTurretFriendly.java | 11 +- .../turret/TileEntityTurretHoward.java | 8 +- .../turret/TileEntityTurretJeremy.java | 48 +++- .../turret/TileEntityTurretRichard.java | 31 +- .../turret/TileEntityTurretSentry.java | 19 +- .../turret/TileEntityTurretSentryDamaged.java | 10 +- .../turret/TileEntityTurretTauon.java | 8 +- src/main/resources/assets/hbm/lang/de_DE.lang | 1 + src/main/resources/assets/hbm/lang/en_US.lang | 1 + 48 files changed, 186 insertions(+), 3926 deletions(-) delete mode 100644 src/main/java/com/hbm/items/weapon/GunB93.java delete mode 100644 src/main/java/com/hbm/items/weapon/GunCryolator.java delete mode 100644 src/main/java/com/hbm/items/weapon/GunDefabricator.java delete mode 100644 src/main/java/com/hbm/items/weapon/GunEuthanasia.java delete mode 100644 src/main/java/com/hbm/items/weapon/GunFolly.java delete mode 100644 src/main/java/com/hbm/items/weapon/GunHP.java delete mode 100644 src/main/java/com/hbm/items/weapon/GunJack.java delete mode 100644 src/main/java/com/hbm/items/weapon/GunLeverActionS.java delete mode 100644 src/main/java/com/hbm/items/weapon/GunSpark.java delete mode 100644 src/main/java/com/hbm/items/weapon/GunSuicide.java delete mode 100644 src/main/java/com/hbm/items/weapon/ItemCoilgun.java delete mode 100644 src/main/java/com/hbm/items/weapon/ItemGunBio.java delete mode 100644 src/main/java/com/hbm/items/weapon/ItemGunChemthrower.java delete mode 100644 src/main/java/com/hbm/items/weapon/ItemGunDart.java delete mode 100644 src/main/java/com/hbm/items/weapon/ItemGunDetonator.java delete mode 100644 src/main/java/com/hbm/items/weapon/ItemGunGauss.java delete mode 100644 src/main/java/com/hbm/items/weapon/ItemGunLacunae.java delete mode 100644 src/main/java/com/hbm/items/weapon/ItemGunOSIPR.java delete mode 100644 src/main/java/com/hbm/items/weapon/ItemGunPip.java delete mode 100644 src/main/java/com/hbm/items/weapon/ItemGunShotty.java delete mode 100644 src/main/java/com/hbm/render/item/weapon/ItemRenderBioRevolver.java delete mode 100644 src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponChemthrower.java delete mode 100644 src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponCoilgun.java delete mode 100644 src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponCongo.java delete mode 100644 src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponLilMac.java delete mode 100644 src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponQuadro.java delete mode 100644 src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponSpas12.java delete mode 100644 src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponTau.java diff --git a/src/main/java/com/hbm/blocks/generic/BlockOreBasalt.java b/src/main/java/com/hbm/blocks/generic/BlockOreBasalt.java index 2c02d928f..41e4a35c4 100644 --- a/src/main/java/com/hbm/blocks/generic/BlockOreBasalt.java +++ b/src/main/java/com/hbm/blocks/generic/BlockOreBasalt.java @@ -19,7 +19,6 @@ import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.util.IIcon; import net.minecraft.world.World; -import net.minecraftforge.common.util.ForgeDirection; public class BlockOreBasalt extends BlockEnumMulti { diff --git a/src/main/java/com/hbm/crafting/WeaponRecipes.java b/src/main/java/com/hbm/crafting/WeaponRecipes.java index ad269a269..381e7f74c 100644 --- a/src/main/java/com/hbm/crafting/WeaponRecipes.java +++ b/src/main/java/com/hbm/crafting/WeaponRecipes.java @@ -101,87 +101,10 @@ public class WeaponRecipes { CraftingManager.addRecipeAuto(new ItemStack(ModBlocks.turret_sentry, 1), new Object[] { "PPL", " MD", " SC", 'P', STEEL.plate(), 'M', ModItems.motor, 'L', ModItems.mechanism_rifle_1, 'S', ModBlocks.steel_scaffold, 'C', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.BASIC), 'D', ModItems.crt_display }); //Guns - CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_rpg, 1), new Object[] { "SSW", " MW", 'S', STEEL.shell(), 'W', IRON.plate(), 'M', ModItems.mechanism_launcher_1 }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_karl, 1), new Object[] { "SSW", " MW", 'S', STEEL.shell(), 'W', ALLOY.plate(), 'M', ModItems.mechanism_launcher_2 }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_hk69, 1), new Object[] { "SSI", " MB", 'S', STEEL.shell(), 'I', IRON.ingot(), 'M', ModItems.mechanism_launcher_1, 'B', STEEL.bolt() }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_revolver, 1), new Object[] { "SSM", " RW", 'S', STEEL.plate(), 'W', KEY_PLANKS, 'R', AL.wireFine(), 'M', ModItems.mechanism_revolver_1 }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_revolver_saturnite, 1), new Object[] { "SSM", " RW", 'S', BIGMT.plate(), 'W', KEY_PLANKS, 'R', W.wireFine(), 'M', ModItems.mechanism_revolver_2 }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_revolver_gold, 1), new Object[] { "SSM", " RW", 'S', GOLD.plate(), 'W', W.ingot(), 'R', GOLD.wireFine(), 'M', ModItems.mechanism_revolver_1 }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_revolver_schrabidium, 1), new Object[] { "SSM", " RW", 'S', SA326.block(), 'W', W.ingot(), 'R', SA326.wireFine(), 'M', ModItems.mechanism_special }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_revolver_pip, 1), new Object[] { " G ", "SSP", " TI", 'G', KEY_ANYPANE, 'S', STEEL.plate(), 'P', ModItems.mechanism_revolver_2, 'T', W.wireFine(), 'I', ANY_PLASTIC.ingot() }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_revolver_nopip, 1), new Object[] { "SSP", " TI", 'S', STEEL.plate(), 'P', ModItems.mechanism_revolver_2, 'T', W.wireFine(), 'I', ANY_PLASTIC.ingot() }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_revolver_blackjack, 1), new Object[] { "SSP", " TI", 'S', STEEL.plate(), 'P', ModItems.mechanism_revolver_2, 'T', W.wireFine(), 'I', KEY_PLANKS }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_revolver_silver, 1), new Object[] { "SSP", " TI", 'S', AL.plate(), 'P', ModItems.mechanism_revolver_2, 'T', W.wireFine(), 'I', KEY_PLANKS }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_revolver_red, 1), new Object[] { "R ", " B", 'R', ModItems.key_red, 'B', ModItems.gun_revolver_blackjack }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_deagle, 1), new Object[] { "PPM", " BI", 'P', STEEL.plate(), 'B', STEEL.bolt(), 'I', ANY_PLASTIC.ingot(), 'M', ModItems.mechanism_rifle_1 }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_uac_pistol, 1), new Object[] { "IIM", " BI", 'B', DURA.bolt(), 'I', ANY_PLASTIC.ingot(), 'M', ModItems.mechanism_rifle_1 }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_revolver_cursed, 1), new Object[] { "TTM", "SRI", 'S', STEEL.plate(), 'I', STEEL.ingot(), 'R', MINGRADE.wireFine(), 'T', TI.plate(), 'M', ModItems.mechanism_revolver_2 }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_revolver_nightmare, 1), new Object[] { "SEM", " RW", 'S', STEEL.plate(), 'W', KEY_PLANKS, 'R', AL.wireFine(), 'E', ModItems.powder_power, 'M', ModItems.mechanism_revolver_2 }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_revolver_nightmare2, 1), new Object[] { "SSM", "RRW", 'S', OreDictManager.getReflector(), 'W', W.ingot(), 'R', GOLD.wireFine(), 'M', ModItems.mechanism_special }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_bio_revolver, 1), new Object[] { "SSM", "BTW", 'S', STEEL.plate(), 'M', ModItems.mechanism_revolver_2, 'B', B.ingot(), 'T', W.bolt(), 'W', KEY_LOG }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_chemthrower, 1), new Object[] { "RWC", "HHT", "RLC", 'R', RUBBER.ingot(), 'W', ModItems.wrench, 'C', CU.plate(), 'H', STEEL.shell(), 'T', ModItems.tank_steel, 'L', ModItems.mechanism_launcher_2 }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_mirv, 1), new Object[] { "LLL", "WFW", "SSS", 'S', STEEL.plate(), 'L', PB.plate(), 'W', GOLD.wireFine(), 'F', ModItems.gun_fatman }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_proto, 1), new Object[] { "LLL", "WFW", "SSS", 'S', ANY_RUBBER.ingot(), 'L', ModItems.plate_desh, 'W', W.wireFine(), 'F', ModItems.gun_fatman }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.ammo_nuke, 1, AmmoFatman.BALEFIRE.ordinal()), new Object[] { " S ", "EBE", " S ", 'S', STEEL.shell(), 'E', ModItems.powder_power, 'B', ModItems.egg_balefire_shard }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_mp40, 1), new Object[] { "IIM", " SW", " S ", 'S', STEEL.plate(), 'I', STEEL.ingot(), 'W', KEY_PLANKS, 'M', ModItems.mechanism_rifle_1 }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_thompson, 1), new Object[] { "IIM", " SW", " S ", 'S', IRON.plate(), 'I', STEEL.plate(), 'W', KEY_PLANKS, 'M', ModItems.mechanism_rifle_2 }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_flechette, 1), new Object[] { "PPM", "TIS", "G ", 'P', STEEL.plate(), 'M', ModItems.mechanism_rifle_2, 'T', STEEL.shell(), 'I', STEEL.ingot(), 'S', ANY_PLASTIC.ingot(), 'G', ModItems.mechanism_launcher_1 }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_uboinik, 1), new Object[] { "IIM", "SPW", 'P', STEEL.plate(), 'I', STEEL.ingot(), 'W', KEY_PLANKS, 'S', KEY_STICK, 'M', ModItems.mechanism_revolver_2 }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_supershotgun, 1), new Object[] { "BBM", "BBM", "AWL", 'B', STEEL.pipe(), 'M', ModItems.mechanism_rifle_2, 'A', ModItems.plate_dalekanium, 'W', GOLD.wireFine(), 'L', KEY_LOG }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_ks23, 1), new Object[] { "PPM", "SWL", 'P', STEEL.plate(), 'M', ModItems.mechanism_rifle_1, 'S', KEY_STICK, 'W', W.wireFine(), 'L', KEY_LOG }); - CraftingManager.addShapelessAuto(new ItemStack(ModItems.gun_sauer, 1), new Object[] { ModItems.ducttape, ModItems.gun_ks23, Blocks.lever, ModItems.gun_ks23 }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_xvl1456, 1), new Object[] { "PBB", "ACC", "PRY", 'P', STEEL.plate(), 'R', ModItems.redcoil_capacitor, 'A', ModItems.coil_advanced_alloy, 'B', ModItems.battery_generic, 'C', ModItems.coil_advanced_torus, 'Y', ModItems.mechanism_special }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_xvl1456_ammo, 16), new Object[] { " S ", "SRS", " S ", 'S', STEEL.plate(), 'R', ModItems.waste_natural_uranium }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_xvl1456_ammo, 16), new Object[] { " S ", "SRS", " S ", 'S', STEEL.plate(), 'R', ModItems.waste_uranium }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_xvl1456_ammo, 20), new Object[] { " S ", " R ", " S ", 'S', STEEL.plate(), 'R', ModItems.waste_plate_u235 }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_xvl1456_ammo, 16), new Object[] { "SRS", 'S', STEEL.plate(), 'R', ModItems.waste_u235 }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_xvl1456_ammo, 16), new Object[] { " S ", " R ", " S ", 'S', STEEL.plate(), 'R', U238.ingot() }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_xvl1456_ammo, 16), new Object[] { "SRS", 'S', STEEL.plate(), 'R', U238.ingot() }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_osipr, 1), new Object[] { "CCT", "WWI", "MCC", 'C', CMB.plate(), 'T', W.ingot(), 'W', MAGTUNG.wireFine(), 'I', ModItems.mechanism_rifle_2, 'M', ModItems.coil_magnetized_tungsten }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_immolator, 1), new Object[] { "WCC", "PMT", "WAA", 'W', GOLD.wireFine(), 'C', CU.plate(), 'P', ALLOY.plate(), 'M', ModItems.mechanism_launcher_1, 'T', ModItems.tank_steel, 'A', STEEL.plate() }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_immolator_ammo, 16), new Object[] { "SPS", "PCP", "SPS", 'S', STEEL.plate(), 'C', COAL.dust(), 'P', P_RED.dust() }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_immolator_ammo, 16), new Object[] { " F ", "SFS", " F ", 'S', STEEL.plate(), 'F', Fluids.DIESEL.getDict(1000) }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_immolator_ammo, 24), new Object[] { " F ", "SFS", " F ", 'S', STEEL.plate(), 'F', ModItems.canister_napalm }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_cryolator, 1), new Object[] { "SSS", "IWL", "LMI", 'S', STEEL.plate(), 'I', IRON.plate(), 'L', Items.leather, 'M', ModItems.mechanism_launcher_1, 'W', AL.wireFine() }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_cryolator_ammo, 16), new Object[] { "SPS", "PCP", "SPS", 'S', STEEL.plate(), 'C', KNO.dust(), 'P', Items.snowball }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_cryolator_ammo, 16), new Object[] { " F ", "SFS", " F ", 'S', STEEL.plate(), 'F', ModItems.powder_ice }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_mp, 1), new Object[] { "EEE", "SSM", "III", 'E', EUPH.ingot(), 'S', STEEL.plate(), 'I', STEEL.ingot(), 'M', ModItems.mechanism_rifle_2 }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_emp, 1), new Object[] { "CPG", "CMF", "CPI", 'C', ModItems.coil_copper, 'P', PB.plate(), 'G', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.ADVANCED), 'M', ModItems.magnetron, 'I', W.ingot(), 'F', ModItems.mechanism_special }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_emp_ammo, 8), new Object[] { "IGI", "IPI", "IPI", 'G', GOLD.plate(), 'I', IRON.plate(), 'P', ModItems.powder_power }); - //CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_jack, 1), new Object[] { "WW ", "TSD", " TT", 'W', "ingotWeidanium", 'T', ModItems.toothpicks, 'S', ModItems.gun_uboinik, 'D', ModItems.ducttape }); - CraftingManager.addShapelessAuto(new ItemStack(ModItems.gun_jack_ammo, 1), new Object[] { ModItems.ammo_12gauge, ModItems.ammo_12gauge, ModItems.ammo_12gauge, ModItems.ammo_12gauge }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_euthanasia, 1), new Object[] { "TDT", "AAS", " T ", 'A', AUSTRALIUM.ingot(), 'T', ModItems.toothpicks, 'S', ModItems.gun_mp40, 'D', ModItems.ducttape }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_euthanasia_ammo, 12), new Object[] { "P", "S", "N", 'P', ModItems.powder_poison, 'N', KNO.dust(), 'S', ModItems.syringe_metal_empty }); - //CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_spark, 1), new Object[] { "TTD", "AAS", " T", 'A', "ingotDaffergon", 'T', ModItems.toothpicks, 'S', ModItems.gun_rpg, 'D', ModItems.ducttape }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_spark_ammo, 4), new Object[] { "PCP", "DDD", "PCP", 'P', PB.plate(), 'C', ModItems.coil_gold, 'D', ModItems.powder_power }); - //CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_skystinger, 1), new Object[] { "TTT", "AAS", " D ", 'A', "ingotUnobtainium", 'T', ModItems.toothpicks, 'S', ModItems.gun_stinger, 'D', ModItems.ducttape }); - //CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_hp, 1), new Object[] { "TDT", "ASA", " T ", 'A', "ingotReiium", 'T', ModItems.toothpicks, 'S', ModItems.gun_xvl1456, 'D', ModItems.ducttape }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_hp_ammo, 8), new Object[] { " R ", "BSK", " Y ", 'S', STEEL.plate(), 'K', KEY_BLACK, 'R', KEY_RED, 'B', KEY_BLUE, 'Y', KEY_YELLOW }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_defabricator_ammo, 16), new Object[] { "PCP", "DDD", "PCP", 'P', STEEL.plate(), 'C', ModItems.coil_copper, 'D', LI.dust() }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_lever_action, 1), new Object[] { "PPI", "SWD", 'P', IRON.plate(), 'I', ModItems.mechanism_rifle_1, 'S', KEY_STICK, 'D', KEY_PLANKS, 'W', STEEL.wireFine() }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_lever_action_dark, 1), new Object[] { "PPI", "SWD", 'P', STEEL.plate(), 'I', ModItems.mechanism_rifle_1, 'S', KEY_STICK, 'D', KEY_PLANKS, 'W', STEEL.wireFine() }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_bolt_action, 1), new Object[] { "PPI", "SWD", 'P', STEEL.plate(), 'I', ModItems.mechanism_rifle_1, 'S', KEY_STICK, 'D', KEY_PLANKS, 'W', CU.wireFine() }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_bolt_action_green, 1), new Object[] { "PPI", "SWD", 'P', IRON.plate(), 'I', ModItems.mechanism_rifle_1, 'S', KEY_STICK, 'D', KEY_PLANKS, 'W', CU.wireFine() }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_bolt_action_saturnite, 1), new Object[] { "PPI", "SWD", 'P', BIGMT.plate(), 'I', ModItems.mechanism_rifle_1, 'S', KEY_STICK, 'D', KEY_PLANKS, 'W', W.wireFine() }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_b92), new Object[] { "DDD", "SSC", " R", 'D', ModItems.plate_dineutronium, 'S', STAR.ingot(), 'C', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.BISMOID), 'R', ModItems.gun_revolver_schrabidium }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_b93), new Object[] { "PCE", "SEB", "PCE", 'P', ModItems.plate_dineutronium, 'C', ModItems.weaponized_starblaster_cell, 'E', ModItems.component_emitter, 'B', ModItems.gun_b92, 'S', ModItems.singularity_spark }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_b92), new Object[] { "DDD", "SSC", " R", 'D', ModItems.plate_dineutronium, 'S', STAR.ingot(), 'C', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.BISMOID), 'R', ModItems.gun_lasrifle }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_b92_ammo, 1), new Object[] { "PSP", "ESE", "PSP", 'P', STEEL.plate(), 'S', STAR.ingot(), 'E', ModItems.powder_spark_mix }); CraftingManager.addShapelessAuto(new ItemStack(ModItems.weaponized_starblaster_cell, 1), new Object[] { new ItemStack(ModItems.fluid_tank_full, 1, Fluids.PEROXIDE.getID()), GunB92Cell.getFullCell(), CU.wireFine() }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_uzi_silencer, 1), new Object[] { "P ", " P ", " U", 'P', ANY_PLASTIC.ingot(), 'U', ModItems.gun_uzi }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_uzi_saturnite, 1), new Object[] { "SMS", " PB", " P ", 'S', BIGMT.ingot(), 'M', ModItems.mechanism_rifle_2, 'P', BIGMT.plate(), 'B', W.bolt() }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_uzi_saturnite_silencer, 1), new Object[] { "P ", " P ", " U", 'P', ANY_PLASTIC.ingot(), 'U', ModItems.gun_uzi_saturnite }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_bolter, 1), new Object[] { "SSM", "PIP", " I ", 'S', BIGMT.plate(), 'I', BIGMT.ingot(), 'M', ModItems.mechanism_special, 'P', ANY_PLASTIC.ingot() }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_calamity, 1), new Object[] { " PI", "BBM", " PI", 'P', IRON.plate(), 'B', STEEL.pipe(), 'M', ModItems.mechanism_rifle_1, 'I', STEEL.ingot() }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_m2, 1), new Object[] { " PI", "BBM", " PI", 'P', STEEL.plate(), 'B', STEEL.pipe(), 'M', ModItems.mechanism_rifle_2, 'I', STEEL.ingot() }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_lacunae, 1), new Object[] { "TIT", "ILI", "PRP", 'T', ModItems.syringe_taint, 'I', STAR.ingot(), 'L', ModItems.gun_minigun, 'P', ModItems.pellet_rtg, 'R', ModBlocks.machine_rtg_grey }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_mymy, 1), new Object[] { "PP ", " WP", 'P', ANY_RUBBER.ingot(), 'W', STEEL.wireFine() }); - //CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_darter, 1), new Object[] { "SST", " P", 'S', STEEL.plate(), 'T', ModItems.gas_empty, 'P', ANY_PLASTIC.ingot() }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_fireext, 1), new Object[] { "HB", " T", 'H', STEEL.pipe(), 'B', STEEL.bolt(), 'T', ModItems.tank_steel }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_spas12, 1), new Object[] { "TPS", "HHR", " L", 'T', STEEL.bolt(), 'P', STEEL.plate(), 'S', STEEL.ingot(), 'H', STEEL.pipe(), 'R', ModItems.mechanism_rifle_1, 'L', ANY_PLASTIC.ingot()}); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_glass_cannon, 1), new Object[] { "GGC", "GTM", 'G', Item.getItemFromBlock(ModBlocks.glass_quartz), 'C', ModItems.battery_lithium_cell, 'T', ModItems.crt_display, 'M', ModItems.mechanism_special }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_remington, 1), new Object[] { "PPM", "S L", 'P', STEEL.plate(), 'M', ModItems.mechanism_rifle_1, 'S', KEY_SLAB, 'L', KEY_LOG }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_benelli), new Object[] { "HHP", "SSM", "AAP", 'H', ModItems.ingot_dura_steel, 'S', STEEL.pipe(), 'A', AL.pipe(), 'P', ANY_PLASTIC.ingot(), 'M', ModItems.mechanism_rifle_2 }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_lunatic_marksman), new Object[] { " GN", "SSM", " A", 'G', KEY_ANYPANE, 'N', ModItems.powder_nitan_mix, 'S', BIGMT.plate(), 'M', ModItems.mechanism_special, 'A', ANY_RESISTANTALLOY.plateCast() }); //TODO: somehow add more variance, 4 gauge is still missing CraftingManager.addShapelessAuto(new ItemStack(ModItems.ammo_22lr, 16), new Object[] { ModItems.nitra_small }); @@ -239,15 +162,6 @@ public class WeaponRecipes { CraftingManager.addRecipeAuto(new ItemStack(ModItems.assembly_762, 1), " I", "GC", 'I', CU.ingot(), 'G', ANY_SMOKELESS.dust(), 'C', ModItems.casing_50); CraftingManager.addRecipeAuto(new ItemStack(ModItems.assembly_luna, 1), new Object[] { " B ", "GCG", "GPG", 'B', FERRO.ingot(), 'G', ModItems.powder_nitan_mix, 'C', ModItems.casing_50, 'P', ModItems.powder_power}); - //Folly shells - CraftingManager.addRecipeAuto(new ItemStack(ModItems.folly_bullet, 1), new Object[] { " S ", "STS", "SMS", 'S', STAR.ingot(), 'T', ModItems.powder_magic, 'M', ModBlocks.block_meteor }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.folly_bullet_nuclear, 1), new Object[] { " N ", "UTU", "UTU", 'N', ModItems.ammo_nuke, 'U', IRON.ingot(), 'T', W.block() }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.folly_bullet_du, 1), new Object[] { " U ", "UDU", "UTU", 'U', U238.block(), 'D', DESH.block(), 'T', W.block() }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.folly_shell, 1), new Object[] { "IPI", "IPI", "IMI", 'I', IRON.ingot(), 'P', IRON.plate(), 'M', ANY_SMOKELESS.dust() }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.ammo_folly, 1), new Object[] { " B ", "MEM", " S ", 'B', ModItems.folly_bullet, 'M', ModItems.powder_magic, 'E', ModItems.powder_power, 'S', ModItems.folly_shell }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.ammo_folly_nuclear, 1), new Object[] { " B ", "EEE", " S ", 'B', ModItems.folly_bullet_nuclear, 'E', ModBlocks.det_charge, 'S', ModItems.folly_shell }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.ammo_folly_du, 1), new Object[] { " B ", "EEE", " S ", 'B', ModItems.folly_bullet_du, 'E', ModBlocks.det_charge, 'S', ModItems.folly_shell }); - //Rockets CraftingManager.addRecipeAuto(new ItemStack(ModItems.ammo_rocket, 1), new Object[] { "T", "C", "G", 'T', ModItems.ball_dynamite, 'G', ModItems.rocket_fuel, 'C', STEEL.shell() }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.ammo_rocket, 2), new Object[] { "T", "C", "G", 'T', ANY_PLASTICEXPLOSIVE.ingot(), 'G', ModItems.rocket_fuel, 'C', STEEL.shell() }); diff --git a/src/main/java/com/hbm/entity/projectile/EntityBulletBaseMK4.java b/src/main/java/com/hbm/entity/projectile/EntityBulletBaseMK4.java index bd228c2e0..3118e764c 100644 --- a/src/main/java/com/hbm/entity/projectile/EntityBulletBaseMK4.java +++ b/src/main/java/com/hbm/entity/projectile/EntityBulletBaseMK4.java @@ -61,6 +61,22 @@ public class EntityBulletBaseMK4 extends EntityThrowableInterp { this.setThrowableHeading(this.motionX, this.motionY, this.motionZ, 1.0F, this.config.spread + gunSpread); } + + /** For turrets - angles are in radians, andp itch is negative! */ + public EntityBulletBaseMK4(World world, BulletConfig config, float baseDamage, float gunSpread, float yaw, float pitch) { + this(world); + + this.setBulletConfig(config); + this.damage = baseDamage * this.config.damageMult; + + this.prevRotationYaw = this.rotationYaw = yaw * 180F / (float) Math.PI; + this.prevRotationPitch = this.rotationPitch = -pitch * 180F / (float) Math.PI; + + this.motionX = -MathHelper.sin(this.rotationYaw / 180.0F * (float) Math.PI) * MathHelper.cos(this.rotationPitch / 180.0F * (float) Math.PI); + this.motionZ = MathHelper.cos(this.rotationYaw / 180.0F * (float) Math.PI) * MathHelper.cos(this.rotationPitch / 180.0F * (float) Math.PI); + this.motionY = (-MathHelper.sin(this.rotationPitch / 180.0F * (float) Math.PI)); + this.setThrowableHeading(this.motionX, this.motionY, this.motionZ, 1.0F, this.config.spread + gunSpread); + } @Override protected void entityInit() { diff --git a/src/main/java/com/hbm/handler/guncfg/GunDartFactory.java b/src/main/java/com/hbm/handler/guncfg/GunDartFactory.java index 287022576..62c48b7d9 100644 --- a/src/main/java/com/hbm/handler/guncfg/GunDartFactory.java +++ b/src/main/java/com/hbm/handler/guncfg/GunDartFactory.java @@ -9,13 +9,11 @@ import com.hbm.handler.GunConfiguration; import com.hbm.inventory.RecipesCommon.ComparableStack; import com.hbm.items.ItemAmmoEnums.AmmoDart; import com.hbm.items.ModItems; -import com.hbm.items.weapon.ItemGunDart; import com.hbm.items.weapon.sedna.Crosshair; import com.hbm.lib.HbmCollection.EnumGunManufacturer; import com.hbm.main.MainRegistry; import net.minecraft.entity.EntityLivingBase; -import net.minecraft.entity.player.EntityPlayer; import net.minecraft.potion.Potion; import net.minecraft.potion.PotionEffect; @@ -100,28 +98,6 @@ public class GunDartFactory { bullet.effects = new ArrayList(); bullet.effects.add(new PotionEffect(Potion.wither.id, 60 * 20, 2)); - bullet.bntHurt = (bulletnt, hit) -> { - - if(bulletnt.worldObj.isRemote) - return; - - if(hit instanceof EntityPlayer) { - - if(((EntityPlayer) hit).inventory.hasItem(ModItems.ingot_meteorite_forged)) - return; - - if(bulletnt.getThrower() instanceof EntityPlayer) { - - EntityPlayer shooter = (EntityPlayer) bulletnt.getThrower(); - - if(shooter.getHeldItem() != null && shooter.getHeldItem().getItem() == ModItems.gun_darter) { - ItemGunDart.writePlayer(shooter.getHeldItem(), (EntityPlayer) hit); - shooter.playSound("random.orb", 1.0F, 1.0F); - } - } - } - }; - return bullet; } diff --git a/src/main/java/com/hbm/items/ModItems.java b/src/main/java/com/hbm/items/ModItems.java index 3ba70a540..9b74e78b8 100644 --- a/src/main/java/com/hbm/items/ModItems.java +++ b/src/main/java/com/hbm/items/ModItems.java @@ -620,11 +620,6 @@ public class ModItems { public static Item casing; - public static Item folly_shell; - public static Item folly_bullet; - public static Item folly_bullet_nuclear; - public static Item folly_bullet_du; - public static Item wiring_red_copper; public static Item shell; public static Item pipe; @@ -784,7 +779,6 @@ public class ModItems { public static Item pellet_rtg_actinium; public static Item pellet_rtg_polonium; public static Item pellet_rtg_americium; - public static Item pellet_rtg_berkelium; public static Item pellet_rtg_gold; public static Item pellet_rtg_lead; @@ -1494,9 +1488,6 @@ public class ModItems { public static Item ammo_cell; - public static Item ammo_folly; - public static Item ammo_folly_nuclear; - public static Item ammo_folly_du; public static Item ammo_dgk; public static Item ammo_arty; public static Item ammo_himars; @@ -3031,10 +3022,6 @@ public class ModItems { assembly_lacunae = new Item().setUnlocalizedName("assembly_lacunae").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":assembly_lacunae"); assembly_nuke = new Item().setUnlocalizedName("assembly_nuke").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":assembly_nuke"); assembly_luna = new Item().setUnlocalizedName("assembly_luna").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":assembly_luna"); - folly_shell = new Item().setUnlocalizedName("folly_shell").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":folly_shell"); - folly_bullet = new Item().setUnlocalizedName("folly_bullet").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":folly_bullet"); - folly_bullet_nuclear = new Item().setUnlocalizedName("folly_bullet_nuclear").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":folly_bullet_nuclear"); - folly_bullet_du = new Item().setUnlocalizedName("folly_bullet_du").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":folly_bullet_du"); casing = new ItemEnumMulti(ItemEnums.EnumCasingType.class, true, true).setUnlocalizedName("casing").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":casing"); wiring_red_copper = new ItemWiring().setUnlocalizedName("wiring_red_copper").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":wiring_red_copper"); @@ -3048,7 +3035,6 @@ public class ModItems { pellet_rtg_cobalt = new ItemRTGPellet(15).setDecays(DepletedRTGMaterial.NICKEL, (long) (RTGUtil.getLifespan(5.3F, HalfLifeType.MEDIUM, false) * 1.5)).setUnlocalizedName("pellet_rtg_cobalt").setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":pellet_rtg_cobalt"); pellet_rtg_actinium = new ItemRTGPellet(20).setDecays(DepletedRTGMaterial.LEAD, (long) (RTGUtil.getLifespan(21.8F, HalfLifeType.MEDIUM, false) * 1.5)).setUnlocalizedName("pellet_rtg_actinium").setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":pellet_rtg_actinium"); pellet_rtg_americium = new ItemRTGPellet(20).setDecays(DepletedRTGMaterial.NEPTUNIUM, (long) (RTGUtil.getLifespan(4.7F, HalfLifeType.LONG, false) * 1.5)).setUnlocalizedName("pellet_rtg_americium").setCreativeTab(MainRegistry.controlTab).setMaxStackSize(1).setTextureName(RefStrings.MODID + ":pellet_rtg_americium"); - pellet_rtg_berkelium = new ItemRTGPellet(20).setUnlocalizedName("pellet_rtg_berkelium").setCreativeTab(MainRegistry.controlTab).setMaxStackSize(1).setTextureName(RefStrings.MODID + ":pellet_rtg_berkelium"); pellet_rtg_polonium = new ItemRTGPellet(50).setDecays(DepletedRTGMaterial.LEAD, (long) (RTGUtil.getLifespan(138.0F, HalfLifeType.SHORT, false) * 1.5)).setUnlocalizedName("pellet_rtg_polonium").setCreativeTab(MainRegistry.controlTab).setMaxStackSize(1).setTextureName(RefStrings.MODID + ":pellet_rtg_polonium"); pellet_rtg_gold = new ItemRTGPellet(VersatileConfig.rtgDecay() ? 200 : 100).setDecays(DepletedRTGMaterial.MERCURY, (long) (RTGUtil.getLifespan(2.7F, HalfLifeType.SHORT, false) * 1.5)).setUnlocalizedName("pellet_rtg_gold").setCreativeTab(MainRegistry.controlTab).setMaxStackSize(1).setTextureName(RefStrings.MODID + ":pellet_rtg_gold"); pellet_rtg_lead = new ItemRTGPellet(VersatileConfig.rtgDecay() ? 600 : 200).setDecays(DepletedRTGMaterial.BISMUTH, (long) (RTGUtil.getLifespan(0.3F, HalfLifeType.SHORT, false) * 1.5)).setUnlocalizedName("pellet_rtg_lead").setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":pellet_rtg_lead"); @@ -4038,94 +4024,89 @@ public class ModItems { ammo_stinger_rocket = new ItemAmmo(AmmoStinger.class).setUnlocalizedName("ammo_stinger_rocket"); ammo_luna_sniper = new ItemAmmo(AmmoLunaticSniper.class).setUnlocalizedName("ammo_luna_sniper"); ammo_misc = new ItemAmmo(AmmoMisc.class).setUnlocalizedName("ammo_misc"); - ammo_folly = new ItemCustomLore().setUnlocalizedName("ammo_folly"); - ammo_folly_nuclear = new ItemCustomLore().setUnlocalizedName("ammo_folly_nuclear"); - ammo_folly_du = new ItemCustomLore().setUnlocalizedName("ammo_folly_du"); ammo_arty = new ItemAmmoArty().setUnlocalizedName("ammo_arty"); ammo_himars = new ItemAmmoHIMARS().setUnlocalizedName("ammo_himars"); - gun_rpg = new ItemGunBase(GunRocketFactory.getGustavConfig()).setUnlocalizedName("gun_rpg").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_rpg"); - gun_karl = new ItemGunBase(GunRocketFactory.getKarlConfig()).setUnlocalizedName("gun_karl").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_karl"); - gun_panzerschreck = new ItemGunBase(GunRocketFactory.getPanzConfig()).setUnlocalizedName("gun_panzerschreck").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_panzerschreck"); - gun_hk69 = new ItemGunBase(GunGrenadeFactory.getHK69Config()).setUnlocalizedName("gun_hk69").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_hk69"); - //gun_congolake = new ItemGunBase(GunGrenadeFactory.getCongoConfig()).setUnlocalizedName("gun_congolake").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_congolake"); - gun_skystinger = new ItemGunBase(GunRocketHomingFactory.getSkyStingerConfig()).setUnlocalizedName("gun_skystinger").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_skystinger"); - gun_revolver = new ItemGunBase(Gun357MagnumFactory.getRevolverConfig()).setUnlocalizedName("gun_revolver").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_revolver"); - gun_revolver_saturnite = new ItemGunBase(Gun357MagnumFactory.getRevolverSaturniteConfig()).setUnlocalizedName("gun_revolver_saturnite").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_revolver_saturnite"); - gun_revolver_gold = new ItemGunBase(Gun357MagnumFactory.getRevolverGoldConfig()).setUnlocalizedName("gun_revolver_gold").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_revolver_gold"); - gun_revolver_schrabidium = new ItemGunBase(Gun357MagnumFactory.getRevolverSchrabidiumConfig()).setUnlocalizedName("gun_revolver_schrabidium").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_revolver_schrabidium"); - gun_revolver_cursed = new ItemGunBase(Gun357MagnumFactory.getRevolverCursedConfig()).setUnlocalizedName("gun_revolver_cursed").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_revolver_cursed"); - gun_revolver_nightmare = new ItemGunBase(Gun357MagnumFactory.getRevolverNightmareConfig()).setUnlocalizedName("gun_revolver_nightmare").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_revolver_nightmare"); - gun_revolver_nightmare2 = new ItemGunBase(Gun357MagnumFactory.getRevolverNightmare2Config()).setUnlocalizedName("gun_revolver_nightmare2").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_revolver_nightmare2"); - gun_revolver_pip = new ItemGunPip(Gun44MagnumFactory.getMacintoshConfig()).setUnlocalizedName("gun_revolver_pip").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_revolver_pip"); - gun_revolver_nopip = new ItemGunBase(Gun44MagnumFactory.getNovacConfig()).setUnlocalizedName("gun_revolver_nopip").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_revolver_nopip"); - gun_revolver_blackjack = new ItemGunBase(Gun44MagnumFactory.getBlackjackConfig()).setUnlocalizedName("gun_revolver_blackjack").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_revolver_blackjack"); - gun_revolver_silver = new ItemGunBase(Gun44MagnumFactory.getSilverConfig()).setUnlocalizedName("gun_revolver_silver").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_revolver_silver"); - gun_revolver_red = new ItemGunBase(Gun44MagnumFactory.getRedConfig()).setUnlocalizedName("gun_revolver_red").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_revolver_red"); - gun_deagle = new ItemGunBase(Gun50AEFactory.getDeagleConfig()).setUnlocalizedName("gun_deagle").setFull3D().setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_deagle"); - gun_bio_revolver = new ItemGunBio(Gun357MagnumFactory.getRevolverBioConfig()).setUnlocalizedName("gun_bio_revolver").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_bio_revolver"); - gun_flechette = new ItemGunBase(Gun556mmFactory.getSPIWConfig(), Gun556mmFactory.getGLauncherConfig()).setUnlocalizedName("gun_flechette").setFull3D().setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_flechette"); - gun_ar15 = new ItemGunBase(Gun50BMGFactory.getAR15Config(), Gun50BMGFactory.getAR15BurstConfig()).setUnlocalizedName("gun_ar15").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_ar15"); - gun_calamity = new ItemGunBase(Gun762mmFactory.getCalamityConfig()).setUnlocalizedName("gun_calamity").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_calamity"); - gun_lacunae = new ItemGunLacunae(Gun5mmFactory.getLacunaeConfig()).setUnlocalizedName("gun_lacunae").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_lacunae"); - gun_proto = new ItemGunBase(GunFatmanFactory.getProtoConfig()).setUnlocalizedName("gun_proto").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_fatman"); - gun_mirv = new ItemGunBase(GunFatmanFactory.getMIRVConfig()).setUnlocalizedName("gun_mirv").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_mirv"); - gun_bf = new ItemGunBase(GunFatmanFactory.getBELConfig()).setUnlocalizedName("gun_bf").setCreativeTab(null).setTextureName(RefStrings.MODID + ":gun_bf"); - gun_mp40 = new ItemGunBase(Gun9mmFactory.getMP40Config()).setUnlocalizedName("gun_mp40").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_mp40"); - gun_thompson = new ItemGunBase(Gun45ACPFactory.getThompsonConfig()).setUnlocalizedName("gun_thompson").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_thompson"); - gun_uzi_silencer = new ItemGunBase(Gun22LRFactory.getUziConfig().silenced()).setUnlocalizedName("gun_uzi_silencer").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_uzi_silencer"); - gun_uzi_saturnite = new ItemGunBase(Gun22LRFactory.getSaturniteConfig()).setUnlocalizedName("gun_uzi_saturnite").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_uzi_saturnite"); - gun_uzi_saturnite_silencer = new ItemGunBase(Gun22LRFactory.getSaturniteConfig().silenced()).setUnlocalizedName("gun_uzi_saturnite_silencer").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_uzi_saturnite_silencer"); - gun_uboinik = new ItemGunBase(Gun12GaugeFactory.getUboinikConfig()).setUnlocalizedName("gun_uboinik").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_uboinik"); - gun_remington = new ItemGunBase(Gun12GaugeFactory.getRemington870Config()).setUnlocalizedName("gun_remington").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_spas12"); - gun_benelli = new ItemGunBase(Gun12GaugeFactory.getBenelliModConfig()).setUnlocalizedName("gun_benelli").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_spas12"); - gun_supershotgun = new ItemGunShotty(Gun12GaugeFactory.getShottyConfig()).setUnlocalizedName("gun_supershotgun").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_uboinik"); - gun_ks23 = new ItemGunBase(Gun4GaugeFactory.getKS23Config()).setUnlocalizedName("gun_ks23").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_uboinik"); - gun_sauer = new ItemGunBase(Gun4GaugeFactory.getSauerConfig()).setUnlocalizedName("gun_sauer").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_uboinik"); - gun_lever_action = new ItemGunBase(Gun20GaugeFactory.getMareConfig()).setUnlocalizedName("gun_lever_action").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_lever_action"); - gun_lever_action_dark = new ItemGunBase(Gun20GaugeFactory.getMareDarkConfig()).setUnlocalizedName("gun_lever_action_dark").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_lever_action_dark"); - gun_lever_action_sonata = new GunLeverActionS().setUnlocalizedName("gun_lever_action_sonata").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_lever_action_sonata"); - gun_bolt_action = new ItemGunBase(Gun762mmFactory.getBoltConfig()).setUnlocalizedName("gun_bolt_action").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_bolt_action"); - gun_bolt_action_green = new ItemGunBase(Gun762mmFactory.getBoltGreenConfig()).setUnlocalizedName("gun_bolt_action_green").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_bolt_action_green"); - gun_bolt_action_saturnite = new ItemGunBase(Gun762mmFactory.getBoltSaturniteConfig()).setUnlocalizedName("gun_bolt_action_saturnite").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_bolt_action_saturnite"); - gun_mymy = new ItemGunBase(GunDartFactory.getMymyConfig()).setUnlocalizedName("gun_mymy").setFull3D().setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_mymy"); + gun_rpg = new Item().setUnlocalizedName("gun_rpg").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_rpg"); + gun_karl = new Item().setUnlocalizedName("gun_karl").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_karl"); + gun_hk69 = new Item().setUnlocalizedName("gun_hk69").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_hk69"); + gun_skystinger = new Item().setUnlocalizedName("gun_skystinger").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_skystinger"); + gun_revolver = new Item().setUnlocalizedName("gun_revolver").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_revolver"); + gun_revolver_saturnite = new Item().setUnlocalizedName("gun_revolver_saturnite").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_revolver_saturnite"); + gun_revolver_gold = new Item().setUnlocalizedName("gun_revolver_gold").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_revolver_gold"); + gun_revolver_schrabidium = new Item().setUnlocalizedName("gun_revolver_schrabidium").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_revolver_schrabidium"); + gun_revolver_cursed = new Item().setUnlocalizedName("gun_revolver_cursed").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_revolver_cursed"); + gun_revolver_nightmare = new Item().setUnlocalizedName("gun_revolver_nightmare").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_revolver_nightmare"); + gun_revolver_nightmare2 = new Item().setUnlocalizedName("gun_revolver_nightmare2").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_revolver_nightmare2"); + gun_revolver_pip = new Item().setUnlocalizedName("gun_revolver_pip").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_revolver_pip"); + gun_revolver_nopip = new Item().setUnlocalizedName("gun_revolver_nopip").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_revolver_nopip"); + gun_revolver_blackjack = new Item().setUnlocalizedName("gun_revolver_blackjack").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_revolver_blackjack"); + gun_revolver_silver = new Item().setUnlocalizedName("gun_revolver_silver").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_revolver_silver"); + gun_revolver_red = new Item().setUnlocalizedName("gun_revolver_red").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_revolver_red"); + gun_deagle = new Item().setUnlocalizedName("gun_deagle").setFull3D().setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_deagle"); + gun_bio_revolver = new Item().setUnlocalizedName("gun_bio_revolver").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_bio_revolver"); + gun_flechette = new Item().setUnlocalizedName("gun_flechette").setFull3D().setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_flechette"); + gun_ar15 = new Item().setUnlocalizedName("gun_ar15").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_ar15"); + gun_calamity = new Item().setUnlocalizedName("gun_calamity").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_calamity"); + gun_lacunae = new Item().setUnlocalizedName("gun_lacunae").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_lacunae"); + gun_proto = new Item().setUnlocalizedName("gun_proto").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_fatman"); + gun_mirv = new Item().setUnlocalizedName("gun_mirv").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_mirv"); + gun_bf = new Item().setUnlocalizedName("gun_bf").setCreativeTab(null).setTextureName(RefStrings.MODID + ":gun_bf"); + gun_mp40 = new Item().setUnlocalizedName("gun_mp40").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_mp40"); + gun_thompson = new Item().setUnlocalizedName("gun_thompson").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_thompson"); + gun_uzi_silencer = new Item().setUnlocalizedName("gun_uzi_silencer").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_uzi_silencer"); + gun_uzi_saturnite = new Item().setUnlocalizedName("gun_uzi_saturnite").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_uzi_saturnite"); + gun_uzi_saturnite_silencer = new Item().setUnlocalizedName("gun_uzi_saturnite_silencer").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_uzi_saturnite_silencer"); + gun_uboinik = new Item().setUnlocalizedName("gun_uboinik").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_uboinik"); + gun_remington = new Item().setUnlocalizedName("gun_remington").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_spas12"); + gun_benelli = new Item().setUnlocalizedName("gun_benelli").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_spas12"); + gun_supershotgun = new Item().setUnlocalizedName("gun_supershotgun").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_uboinik"); + gun_ks23 = new Item().setUnlocalizedName("gun_ks23").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_uboinik"); + gun_sauer = new Item().setUnlocalizedName("gun_sauer").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_uboinik"); + gun_lever_action = new Item().setUnlocalizedName("gun_lever_action").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_lever_action"); + gun_lever_action_dark = new Item().setUnlocalizedName("gun_lever_action_dark").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_lever_action_dark"); + gun_lever_action_sonata = new Item().setUnlocalizedName("gun_lever_action_sonata").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_lever_action_sonata"); + gun_bolt_action = new Item().setUnlocalizedName("gun_bolt_action").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_bolt_action"); + gun_bolt_action_green = new Item().setUnlocalizedName("gun_bolt_action_green").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_bolt_action_green"); + gun_bolt_action_saturnite = new Item().setUnlocalizedName("gun_bolt_action_saturnite").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_bolt_action_saturnite"); + gun_mymy = new Item().setUnlocalizedName("gun_mymy").setFull3D().setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_mymy"); gun_b92_ammo = new GunB92Cell().setUnlocalizedName("gun_b92_ammo").setMaxStackSize(1).setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_b92_ammo_alt"); gun_b92 = new GunB92().setUnlocalizedName("gun_b92").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_b92"); - gun_b93 = new GunB93().setUnlocalizedName("gun_b93").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_b93"); + gun_b93 = new Item().setUnlocalizedName("gun_b93").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_b93"); gun_xvl1456_ammo = new Item().setUnlocalizedName("gun_xvl1456_ammo").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_xvl1456_ammo"); - gun_xvl1456 = new ItemGunGauss(GunGaussFactory.getXVLConfig(), GunGaussFactory.getChargedConfig()).setUnlocalizedName("gun_xvl1456").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_xvl1456"); + gun_xvl1456 = new Item().setUnlocalizedName("gun_xvl1456").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_xvl1456"); gun_osipr_ammo = new Item().setUnlocalizedName("gun_osipr_ammo").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_osipr_ammo"); gun_osipr_ammo2 = new Item().setUnlocalizedName("gun_osipr_ammo2").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_osipr_ammo2"); - gun_osipr = new ItemGunOSIPR(GunOSIPRFactory.getOSIPRConfig(), GunOSIPRFactory.getAltConfig()).setUnlocalizedName("gun_osipr").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_osipr"); + gun_osipr = new Item().setUnlocalizedName("gun_osipr").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_osipr"); gun_immolator_ammo = new Item().setUnlocalizedName("gun_immolator_ammo").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_immolator_ammo"); gun_immolator = new Item().setUnlocalizedName("gun_immolator").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_immolator"); gun_cryolator_ammo = new Item().setUnlocalizedName("gun_cryolator_ammo").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_cryolator_ammo"); - gun_cryolator = new GunCryolator().setUnlocalizedName("gun_cryolator").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_cryolator"); + gun_cryolator = new Item().setUnlocalizedName("gun_cryolator").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_cryolator"); gun_cryocannon = new ItemCryoCannon(GunEnergyFactory.getCryoCannonConfig()).setUnlocalizedName("gun_cryocannon").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_cryocannon"); gun_fireext = new ItemGunBase(GunEnergyFactory.getExtConfig()).setUnlocalizedName("gun_fireext").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_fireext"); - gun_mp = new ItemGunBase(Gun556mmFactory.getEuphieConfig()).setUnlocalizedName("gun_mp").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_pm"); - gun_bolter_digamma = new ItemGunBase(Gun75BoltFactory.getBolterConfig()).setUnlocalizedName("gun_bolter_digamma").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_bolter_digamma"); - gun_zomg = new ItemGunBase(GunEnergyFactory.getZOMGConfig()).setUnlocalizedName("gun_zomg").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_zomg"); - gun_revolver_inverted = new GunSuicide().setUnlocalizedName("gun_revolver_inverted").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_revolver_inverted"); + gun_mp = new Item().setUnlocalizedName("gun_mp").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_pm"); + gun_bolter_digamma = new Item().setUnlocalizedName("gun_bolter_digamma").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_bolter_digamma"); + gun_zomg = new Item().setUnlocalizedName("gun_zomg").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_zomg"); + gun_revolver_inverted = new Item().setUnlocalizedName("gun_revolver_inverted").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_revolver_inverted"); gun_emp_ammo = new Item().setUnlocalizedName("gun_emp_ammo").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_emp_ammo"); - gun_emp = new ItemGunBase(GunEnergyFactory.getEMPConfig()).setUnlocalizedName("gun_emp").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_emp"); + gun_emp = new Item().setUnlocalizedName("gun_emp").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_emp"); gun_jack_ammo = new Item().setUnlocalizedName("gun_jack_ammo").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_jack_ammo"); - gun_jack = new GunJack().setUnlocalizedName("gun_jack").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_jack"); + gun_jack = new Item().setUnlocalizedName("gun_jack").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_jack"); gun_spark_ammo = new Item().setUnlocalizedName("gun_spark_ammo").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_spark_ammo"); - gun_spark = new GunSpark().setUnlocalizedName("gun_spark").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_spark"); + gun_spark = new Item().setUnlocalizedName("gun_spark").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_spark"); gun_hp_ammo = new Item().setUnlocalizedName("gun_hp_ammo").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_hp_ammo"); - gun_hp = new GunHP().setUnlocalizedName("gun_hp").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_hp"); + gun_hp = new Item().setUnlocalizedName("gun_hp").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_hp"); gun_euthanasia_ammo = new Item().setUnlocalizedName("gun_euthanasia_ammo").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_euthanasia_ammo"); - gun_euthanasia = new GunEuthanasia().setUnlocalizedName("gun_euthanasia").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_euthanasia"); + gun_euthanasia = new Item().setUnlocalizedName("gun_euthanasia").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_euthanasia"); gun_defabricator_ammo = new Item().setUnlocalizedName("gun_defabricator_ammo").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_defabricator_ammo"); - gun_defabricator = new GunDefabricator().setUnlocalizedName("gun_defabricator").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_defabricator"); - gun_vortex = new ItemGunBase(Gun556mmFactory.getEuphieConfig()).setUnlocalizedName("gun_vortex").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_vortex"); - gun_super_shotgun = new ItemCustomLore().setUnlocalizedName("gun_super_shotgun").setMaxStackSize(1).setFull3D().setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_super_shotgun"); - gun_moist_nugget = new ItemNugget(3, false).setUnlocalizedName("gun_moist_nugget").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_moist_nugget"); - gun_darter = new ItemGunDart(GunDartFactory.getDarterConfig()).setFull3D().setUnlocalizedName("gun_darter").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_darter"); - gun_glass_cannon = new ItemEnergyGunBase(GunPoweredFactory.getGlassCannonConfig()).setFull3D().setUnlocalizedName("gun_glass_cannon").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_darter"); - gun_lunatic_marksman = new ItemGunBase(Gun50BMGFactory.getLunaticMarksman()).setFull3D().setUnlocalizedName("gun_lunatic_marksman").setCreativeTab(MainRegistry.weaponTab); - gun_uac_pistol = new ItemGunBase(Gun45ACPFactory.getUACPistolConfig(), Gun45ACPFactory.getUACPistolBurstConfig()).setFull3D().setUnlocalizedName("gun_uac_pistol").setCreativeTab(MainRegistry.weaponTab); + gun_defabricator = new Item().setUnlocalizedName("gun_defabricator").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_defabricator"); + gun_vortex = new Item().setUnlocalizedName("gun_vortex").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_vortex"); + gun_super_shotgun = new Item().setUnlocalizedName("gun_super_shotgun").setMaxStackSize(1).setFull3D().setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_super_shotgun"); + gun_moist_nugget = new Item().setUnlocalizedName("gun_moist_nugget").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_moist_nugget"); + gun_darter = new Item().setFull3D().setUnlocalizedName("gun_darter").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_darter"); + gun_glass_cannon = new Item().setFull3D().setUnlocalizedName("gun_glass_cannon").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_darter"); + gun_lunatic_marksman = new Item().setFull3D().setUnlocalizedName("gun_lunatic_marksman").setCreativeTab(MainRegistry.weaponTab); + gun_uac_pistol = new Item().setFull3D().setUnlocalizedName("gun_uac_pistol").setCreativeTab(MainRegistry.weaponTab); ToolMaterial matCrucible = EnumHelper.addToolMaterial("CRUCIBLE", 10, 3, 50.0F, 100.0F, 0); crucible = new ItemCrucible(5000, 1F, matCrucible).setUnlocalizedName("crucible").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":crucible"); @@ -6046,12 +6027,6 @@ public class ModItems { GameRegistry.registerItem(assembly_nuke, assembly_nuke.getUnlocalizedName()); GameRegistry.registerItem(assembly_luna, assembly_luna.getUnlocalizedName()); - //Folly Parts - GameRegistry.registerItem(folly_shell, folly_shell.getUnlocalizedName()); - GameRegistry.registerItem(folly_bullet, folly_bullet.getUnlocalizedName()); - GameRegistry.registerItem(folly_bullet_nuclear, folly_bullet_nuclear.getUnlocalizedName()); - GameRegistry.registerItem(folly_bullet_du, folly_bullet_du.getUnlocalizedName()); - //Wiring GameRegistry.registerItem(wiring_red_copper, wiring_red_copper.getUnlocalizedName()); @@ -6070,7 +6045,6 @@ public class ModItems { GameRegistry.registerItem(pellet_rtg_actinium, pellet_rtg_actinium.getUnlocalizedName()); GameRegistry.registerItem(pellet_rtg_polonium, pellet_rtg_polonium.getUnlocalizedName()); GameRegistry.registerItem(pellet_rtg_americium, pellet_rtg_americium.getUnlocalizedName()); - GameRegistry.registerItem(pellet_rtg_berkelium, pellet_rtg_berkelium.getUnlocalizedName()); GameRegistry.registerItem(pellet_rtg_gold, pellet_rtg_gold.getUnlocalizedName()); GameRegistry.registerItem(pellet_rtg_lead, pellet_rtg_lead.getUnlocalizedName()); GameRegistry.registerItem(pellet_rtg_depleted, pellet_rtg_depleted.getUnlocalizedName()); @@ -6973,9 +6947,6 @@ public class ModItems { GameRegistry.registerItem(ammo_dgk, ammo_dgk.getUnlocalizedName()); GameRegistry.registerItem(ammo_arty, ammo_arty.getUnlocalizedName()); GameRegistry.registerItem(ammo_himars, ammo_himars.getUnlocalizedName()); - GameRegistry.registerItem(ammo_folly, ammo_folly.getUnlocalizedName()); - GameRegistry.registerItem(ammo_folly_nuclear, ammo_folly_nuclear.getUnlocalizedName()); - GameRegistry.registerItem(ammo_folly_du, ammo_folly_du.getUnlocalizedName()); //-C-l-i-p-s- Magazines GameRegistry.registerItem(clip_revolver_iron, clip_revolver_iron.getUnlocalizedName()); diff --git a/src/main/java/com/hbm/items/weapon/GunB93.java b/src/main/java/com/hbm/items/weapon/GunB93.java deleted file mode 100644 index 245279dd9..000000000 --- a/src/main/java/com/hbm/items/weapon/GunB93.java +++ /dev/null @@ -1,270 +0,0 @@ -package com.hbm.items.weapon; - -import java.util.List; -import java.util.Random; - -import com.google.common.collect.Multimap; -import com.hbm.entity.effect.EntityCloudFleijaRainbow; -import com.hbm.entity.logic.EntityNukeExplosionMK3; -import com.hbm.entity.projectile.EntityModBeam; -import net.minecraft.entity.Entity; -import net.minecraft.entity.SharedMonsterAttributes; -import net.minecraft.entity.ai.attributes.AttributeModifier; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.EnumAction; -import net.minecraft.item.EnumRarity; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.world.World; -import net.minecraftforge.common.MinecraftForge; -import net.minecraftforge.event.entity.player.ArrowLooseEvent; -import net.minecraftforge.event.entity.player.ArrowNockEvent; - -public class GunB93 extends Item { - - Random rand = new Random(); - - public int dmgMin = 16; - public int dmgMax = 28; - - public GunB93() { - - this.maxStackSize = 1; - } - - @Override - public void onPlayerStoppedUsing(ItemStack p_77615_1_, World p_77615_2_, EntityPlayer p_77615_3_, int p_77615_4_) { - if (!p_77615_3_.isSneaking()) { - int j = this.getMaxItemUseDuration(p_77615_1_) - p_77615_4_; - - ArrowLooseEvent event = new ArrowLooseEvent(p_77615_3_, p_77615_1_, j); - MinecraftForge.EVENT_BUS.post(event); - j = event.charge; - - boolean flag = true; - - if (flag) { - float f = j / 20.0F; - f = (f * f + f * 2.0F) / 3.0F; - - if (j < 10.0D) { - return; - } - - if (j > 10.0F) { - f = 10.0F; - } - - if (!p_77615_2_.isRemote) { - - EntityModBeam entityarrow1; - entityarrow1 = new EntityModBeam(p_77615_2_, p_77615_3_, 3.0F); - entityarrow1.mode = getPower(p_77615_1_) - 1; - p_77615_1_.damageItem(1, p_77615_3_); - - p_77615_2_.spawnEntityInWorld(entityarrow1); - - p_77615_2_.playSoundAtEntity(p_77615_3_, "hbm:weapon.sparkShoot", 5.0F, 1.0F); - } - - setAnim(p_77615_1_, 1); - setPower(p_77615_1_, 0); - } - } else { - } - } - - @Override - public void onUpdate(ItemStack stack, World world, Entity entity, int i, boolean b) { - int j = getAnim(stack); - - if (j > 0) { - if (j < 30) - setAnim(stack, j + 1); - else - setAnim(stack, 0); - - if (j == 15) { - world.playSoundAtEntity(entity, "hbm:weapon.b92Reload", 2F, 0.9F); - setPower(stack, getPower(stack) + 1); - - if(getPower(stack) > 10) { - - setPower(stack, 0); - - if(!world.isRemote) { - EntityNukeExplosionMK3 ex = EntityNukeExplosionMK3.statFacFleija(world, entity.posX, entity.posY, entity.posZ, 50); - if(!ex.isDead) { - world.playSoundEffect(entity.posX, entity.posY, entity.posZ, "random.explode", 100.0f, world.rand.nextFloat() * 0.1F + 0.9F); - - world.spawnEntityInWorld(ex); - - EntityCloudFleijaRainbow cloud = new EntityCloudFleijaRainbow(world, 50); - cloud.posX = entity.posX; - cloud.posY = entity.posY; - cloud.posZ = entity.posZ; - world.spawnEntityInWorld(cloud); - } - } - } - } - } - - } - - @Override - public ItemStack onEaten(ItemStack p_77654_1_, World p_77654_2_, EntityPlayer p_77654_3_) { - return p_77654_1_; - } - - /** - * How long it takes to use or consume an item - */ - @Override - public int getMaxItemUseDuration(ItemStack p_77626_1_) { - return 72000; - } - - /** - * returns the action that specifies what animation to play when the items - * is being used - */ - @Override - public EnumAction getItemUseAction(ItemStack p_77661_1_) { - return EnumAction.bow; - } - - /** - * Called whenever this item is equipped and the right mouse button is - * pressed. Args: itemStack, world, entityPlayer - */ - @Override - public ItemStack onItemRightClick(ItemStack p_77659_1_, World p_77659_2_, EntityPlayer p_77659_3_) { - if (!p_77659_3_.isSneaking() && getPower(p_77659_1_) > 0) { - ArrowNockEvent event = new ArrowNockEvent(p_77659_3_, p_77659_1_); - MinecraftForge.EVENT_BUS.post(event); - - if (this.getAnim(p_77659_1_) == 0) - p_77659_3_.setItemInUse(p_77659_1_, this.getMaxItemUseDuration(p_77659_1_)); - } else { - if (getAnim(p_77659_1_) == 0) { - setAnim(p_77659_1_, 1); - } - } - - return p_77659_1_; - } - - /** - * Return the enchantability factor of the item, most of the time is based - * on material. - */ - @Override - public int getItemEnchantability() { - return 1; - } - - @Override - public void addInformation(ItemStack itemstack, EntityPlayer player, List list, boolean bool) { - - list.add("[LEGENDARY WEAPON]"); - } - - @Override - public Multimap getItemAttributeModifiers() { - Multimap multimap = super.getItemAttributeModifiers(); - multimap.put(SharedMonsterAttributes.attackDamage.getAttributeUnlocalizedName(), - new AttributeModifier(field_111210_e, "Weapon modifier", 3.5, 0)); - return multimap; - } - - private static int getAnim(ItemStack stack) { - if (stack.stackTagCompound == null) { - stack.stackTagCompound = new NBTTagCompound(); - return 0; - } - - return stack.stackTagCompound.getInteger("animation"); - - } - - private static void setAnim(ItemStack stack, int i) { - if (stack.stackTagCompound == null) { - stack.stackTagCompound = new NBTTagCompound(); - } - - stack.stackTagCompound.setInteger("animation", i); - - } - - private static int getPower(ItemStack stack) { - if (stack.stackTagCompound == null) { - stack.stackTagCompound = new NBTTagCompound(); - return 0; - } - - return stack.stackTagCompound.getInteger("energy"); - - } - - private static void setPower(ItemStack stack, int i) { - if (stack.stackTagCompound == null) { - stack.stackTagCompound = new NBTTagCompound(); - } - - stack.stackTagCompound.setInteger("energy", i); - - } - - public static float getRotationFromAnim(ItemStack stack) { - float rad = 0.0174533F; - rad *= 7.5F; - int i = getAnim(stack); - - if (i < 10) - return 0; - i -= 10; - - if (i < 6) - return rad * i; - if (i > 14) - return rad * (5 - (i - 15)); - return rad * 5; - } - - public static float getOffsetFromAnim(ItemStack stack) { - float i = getAnim(stack); - - if (i < 10) - return 0; - i -= 10; - - if (i < 10) - return i / 10; - else - return 2 - (i / 10); - } - - public static float getTransFromAnim(ItemStack stack) { - float i = getAnim(stack); - - if (i < 10) - return 0; - i -= 10; - - if (i > 4 && i < 10) - return (i - 5) * 0.05F; - - if (i > 9 && i < 15) - return (10 * 0.05F) - ((i - 5) * 0.05F); - - return 0; - } - - @Override - public EnumRarity getRarity(ItemStack p_77613_1_) { - - return EnumRarity.uncommon; - } -} diff --git a/src/main/java/com/hbm/items/weapon/GunCryolator.java b/src/main/java/com/hbm/items/weapon/GunCryolator.java deleted file mode 100644 index 1a0c8b44f..000000000 --- a/src/main/java/com/hbm/items/weapon/GunCryolator.java +++ /dev/null @@ -1,95 +0,0 @@ -package com.hbm.items.weapon; - -import java.util.List; -import java.util.Random; - -import com.google.common.collect.Multimap; -import com.hbm.entity.projectile.EntityLN2; -import com.hbm.items.ModItems; - -import net.minecraft.enchantment.Enchantment; -import net.minecraft.enchantment.EnchantmentHelper; -import net.minecraft.entity.SharedMonsterAttributes; -import net.minecraft.entity.ai.attributes.AttributeModifier; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.EnumAction; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.world.World; -import net.minecraftforge.event.entity.player.ArrowNockEvent; - -public class GunCryolator extends Item { - - Random rand = new Random(); - - public GunCryolator() { - this.maxStackSize = 1; - } - - @Override - public EnumAction getItemUseAction(ItemStack par1ItemStack) { - return EnumAction.bow; - } - - @Override - public int getMaxItemUseDuration(ItemStack p_77626_1_) { - return 72000; - } - - @Override - public ItemStack onItemRightClick(ItemStack p_77659_1_, World p_77659_2_, EntityPlayer p_77659_3_) { - new ArrowNockEvent(p_77659_3_, p_77659_1_); - { - p_77659_3_.setItemInUse(p_77659_1_, this.getMaxItemUseDuration(p_77659_1_)); - } - - return p_77659_1_; - } - - @Override - public void onUsingTick(ItemStack stack, EntityPlayer player, int count) { - World world = player.worldObj; - - boolean flag = player.capabilities.isCreativeMode - || EnchantmentHelper.getEnchantmentLevel(Enchantment.infinity.effectId, stack) > 0; - if ((player.capabilities.isCreativeMode || player.inventory.hasItem(ModItems.gun_cryolator_ammo))) { - EntityLN2 entityarrow = new EntityLN2(world, player, 3.0F); - - if (flag) { - entityarrow.canBePickedUp = 2; - } else { - if (count % 10 == 0) - player.inventory.consumeInventoryItem(ModItems.gun_cryolator_ammo); - } - - if (count % 5 == 0) - world.playSoundAtEntity(player, "hbm:weapon.cryolatorShoot", 1.0F, 1F); - - if (!world.isRemote) { - world.spawnEntityInWorld(entityarrow); - } - } - } - - @Override - public int getItemEnchantability() { - return 0; - } - - @Override - public void addInformation(ItemStack itemstack, EntityPlayer player, List list, boolean bool) { - - list.add("Ice to meet you!"); - list.add(""); - list.add("Ammo: Cryolator Ammo"); - list.add("Damage: 5"); - } - - @Override - public Multimap getItemAttributeModifiers() { - Multimap multimap = super.getItemAttributeModifiers(); - multimap.put(SharedMonsterAttributes.attackDamage.getAttributeUnlocalizedName(), - new AttributeModifier(field_111210_e, "Weapon modifier", 4, 0)); - return multimap; - } -} diff --git a/src/main/java/com/hbm/items/weapon/GunDefabricator.java b/src/main/java/com/hbm/items/weapon/GunDefabricator.java deleted file mode 100644 index ce1457033..000000000 --- a/src/main/java/com/hbm/items/weapon/GunDefabricator.java +++ /dev/null @@ -1,103 +0,0 @@ -package com.hbm.items.weapon; - -import java.util.List; -import java.util.Random; - -import com.google.common.collect.Multimap; -import com.hbm.entity.projectile.EntityBullet; -import com.hbm.items.ModItems; -import com.hbm.main.MainRegistry; - -import net.minecraft.enchantment.Enchantment; -import net.minecraft.enchantment.EnchantmentHelper; -import net.minecraft.entity.SharedMonsterAttributes; -import net.minecraft.entity.ai.attributes.AttributeModifier; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.EnumAction; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.world.World; -import net.minecraftforge.event.entity.player.ArrowNockEvent; - -public class GunDefabricator extends Item { - - Random rand = new Random(); - - public GunDefabricator() - { - this.maxStackSize = 1; - } - - @Override - public EnumAction getItemUseAction(ItemStack par1ItemStack) { - return EnumAction.bow; - } - - @Override - public int getMaxItemUseDuration(ItemStack p_77626_1_) { - return 72000; - } - - @Override - public ItemStack onItemRightClick(ItemStack p_77659_1_, World p_77659_2_, EntityPlayer p_77659_3_) { - new ArrowNockEvent(p_77659_3_, p_77659_1_); - { - p_77659_3_.setItemInUse(p_77659_1_, this.getMaxItemUseDuration(p_77659_1_)); - } - - return p_77659_1_; - } - - @Override - public void onUsingTick(ItemStack stack, EntityPlayer player, int count) - { - World world = player.worldObj; - - boolean flag = player.capabilities.isCreativeMode - || EnchantmentHelper.getEnchantmentLevel(Enchantment.infinity.effectId, stack) > 0; - if ((player.capabilities.isCreativeMode || player.inventory.hasItem(ModItems.gun_defabricator_ammo)) - && count % 2 == 0) { - EntityBullet entitybullet = new EntityBullet(world, player, 3.0F, 40, 120, false, "tauDay"); - entitybullet.setDamage(40 + rand.nextInt(120 - 40)); - - //world.playSoundAtEntity(player, "random.explode", 1.0F, 1.5F + (rand.nextFloat() / 4)); - world.playSoundAtEntity(player, "hbm:weapon.defabShoot", 1.0F, 0.9F + (rand.nextFloat() * 0.2F)); - if(count == this.getMaxItemUseDuration(stack)) - world.playSoundAtEntity(player, "hbm:weapon.defabSpinup", 1.0F, 1.0F); - - if(count % 20 == 0 && !flag) - player.inventory.consumeInventoryItem(ModItems.gun_defabricator_ammo); - - if (!world.isRemote) { - world.spawnEntityInWorld(entitybullet); - } - } - } - - @Override - public int getItemEnchantability() { - return 0; - } - - @Override - public void addInformation(ItemStack itemstack, EntityPlayer player, List list, boolean bool) { - - if(MainRegistry.polaroidID == 11) - list.add("Did you set your alarm for volcano day?"); - else - list.add("BAD WOLF"); - list.add(""); - list.add("Ammo: Defabricator Energy Cell"); - list.add("Damage: 40 - 120"); - list.add(""); - list.add("[LEGENDARY WEAPON]"); - } - - @Override - public Multimap getItemAttributeModifiers() { - Multimap multimap = super.getItemAttributeModifiers(); - multimap.put(SharedMonsterAttributes.attackDamage.getAttributeUnlocalizedName(), - new AttributeModifier(field_111210_e, "Weapon modifier", 6.5, 0)); - return multimap; - } -} diff --git a/src/main/java/com/hbm/items/weapon/GunEuthanasia.java b/src/main/java/com/hbm/items/weapon/GunEuthanasia.java deleted file mode 100644 index adf81090d..000000000 --- a/src/main/java/com/hbm/items/weapon/GunEuthanasia.java +++ /dev/null @@ -1,105 +0,0 @@ -package com.hbm.items.weapon; - -import java.util.List; -import java.util.Random; - -import com.google.common.collect.Multimap; -import com.hbm.entity.projectile.EntityBullet; -import com.hbm.items.ModItems; - -import net.minecraft.enchantment.Enchantment; -import net.minecraft.enchantment.EnchantmentHelper; -import net.minecraft.entity.SharedMonsterAttributes; -import net.minecraft.entity.ai.attributes.AttributeModifier; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.EnumAction; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.world.World; -import net.minecraftforge.event.entity.player.ArrowNockEvent; - -public class GunEuthanasia extends Item { - - Random rand = new Random(); - - public GunEuthanasia() - { - this.maxStackSize = 1; - } - - @Override - public EnumAction getItemUseAction(ItemStack par1ItemStack) { - return EnumAction.bow; - } - - @Override - public int getMaxItemUseDuration(ItemStack p_77626_1_) { - return 72000; - } - - @Override - public ItemStack onItemRightClick(ItemStack p_77659_1_, World p_77659_2_, EntityPlayer p_77659_3_) { - new ArrowNockEvent(p_77659_3_, p_77659_1_); - { - p_77659_3_.setItemInUse(p_77659_1_, this.getMaxItemUseDuration(p_77659_1_)); - } - - return p_77659_1_; - } - - @Override - public void onUsingTick(ItemStack stack, EntityPlayer player, int count) - { - World world = player.worldObj; - - boolean flag = player.capabilities.isCreativeMode - || EnchantmentHelper.getEnchantmentLevel(Enchantment.infinity.effectId, stack) > 0; - if ((player.capabilities.isCreativeMode || player.inventory.hasItem(ModItems.gun_euthanasia_ammo)) - && count % 8 == 0) { - - int deadly = rand.nextInt(5); - - EntityBullet entityarrow = new EntityBullet(world, player, 3.0F, 2, 8, deadly == 0, false); - entityarrow.setDamage(1 + rand.nextInt(3)); - entityarrow.antidote = true; - - //world.playSoundAtEntity(player, "random.explode", 1.0F, 1.5F + (rand.nextFloat() / 4)); - world.playSoundAtEntity(player, "hbm:weapon.rifleShoot", 1.0F, 0.8F + (rand.nextFloat() * 0.4F)); - - if (flag) { - entityarrow.canBePickedUp = 2; - } else { - player.inventory.consumeInventoryItem(ModItems.gun_euthanasia_ammo); - } - - if (!world.isRemote) { - world.spawnEntityInWorld(entityarrow); - } - } - } - - @Override - public int getItemEnchantability() { - return 0; - } - - @Override - public void addInformation(ItemStack itemstack, EntityPlayer player, List list, boolean bool) { - - list.add("Say hello to my little syringe gun!"); - list.add(""); - list.add("Ammo: Syringe"); - list.add("Damage: 1 - 4"); - list.add("Syringes have a 20% chance to instakill the enemy."); - list.add(""); - list.add("[LEGENDARY WEAPON]"); - } - - @Override - public Multimap getItemAttributeModifiers() { - Multimap multimap = super.getItemAttributeModifiers(); - multimap.put(SharedMonsterAttributes.attackDamage.getAttributeUnlocalizedName(), - new AttributeModifier(field_111210_e, "Weapon modifier", 3, 0)); - return multimap; - } -} diff --git a/src/main/java/com/hbm/items/weapon/GunFolly.java b/src/main/java/com/hbm/items/weapon/GunFolly.java deleted file mode 100644 index 4fe1a0f49..000000000 --- a/src/main/java/com/hbm/items/weapon/GunFolly.java +++ /dev/null @@ -1,135 +0,0 @@ -package com.hbm.items.weapon; - -import com.hbm.entity.projectile.EntityBulletBaseNT; -import com.hbm.handler.BulletConfigSyncingUtil; -import com.hbm.interfaces.IHoldableWeapon; -import com.hbm.items.ModItems; -import com.hbm.items.weapon.sedna.Crosshair; - -import net.minecraft.entity.Entity; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.world.World; - -public class GunFolly extends Item implements IHoldableWeapon { - - @Override - public Crosshair getCrosshair() { - return Crosshair.L_SPLIT; - } - - @Override - public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer player) { - - int state = getState(stack); - - if(state == 0) { - - world.playSoundAtEntity(player, "hbm:weapon.follyOpen", 1.0F, 1.0F); - setState(stack, 1); - - } else if(state == 1) { - - if(player.inventory.hasItem(ModItems.ammo_folly)) { - - world.playSoundAtEntity(player, "hbm:weapon.follyReload", 1.0F, 1.0F); - player.inventory.consumeInventoryItem(ModItems.ammo_folly); - setState(stack, 2); - } else { - - world.playSoundAtEntity(player, "hbm:weapon.follyClose", 1.0F, 1.0F); - setState(stack, 0); - } - - } else if(state == 2) { - - world.playSoundAtEntity(player, "hbm:weapon.follyClose", 1.0F, 1.0F); - setState(stack, 3); - setTimer(stack, 100); - } else if(state == 3) { - - if(getTimer(stack) == 0) { - - setState(stack, 0); - world.playSoundAtEntity(player, "hbm:weapon.follyFire", 1.0F, 1.0F); - - double mult = 1.75D; - - player.motionX -= player.getLookVec().xCoord * mult; - player.motionY -= player.getLookVec().yCoord * mult; - player.motionZ -= player.getLookVec().zCoord * mult; - - if (!world.isRemote) { - EntityBulletBaseNT bullet = new EntityBulletBaseNT(world, BulletConfigSyncingUtil.TEST_CONFIG, player); - world.spawnEntityInWorld(bullet); - } - } - } - - return stack; - } - - @Override - public void onUpdate(ItemStack stack, World world, Entity entity, int slot, boolean isCurrentItem) { - - if(getState(stack) == 3) { - - if(isCurrentItem) { - int timer = getTimer(stack); - - if(timer > 0) { - timer--; - - if(timer % 20 == 0 && timer != 0) - world.playSoundAtEntity(entity, "hbm:weapon.follyBuzzer", 1.0F, 1.0F); - - if(timer == 0) - world.playSoundAtEntity(entity, "hbm:weapon.follyAquired", 1.0F, 1.0F); - - setTimer(stack, timer); - } - } else { - setTimer(stack, 100); - } - } - } - - //0: closed, empty, - //1: open, empty - //2: open, full - //3: closed, full - public static void setState(ItemStack stack, int i) { - writeNBT(stack, "state", i); - } - - public static int getState(ItemStack stack) { - return readNBT(stack, "state"); - } - - public static void setTimer(ItemStack stack, int i) { - writeNBT(stack, "timer", i); - } - - public static int getTimer(ItemStack stack) { - return readNBT(stack, "timer"); - } - - private static void writeNBT(ItemStack stack, String key, int value) { - - if(!stack.hasTagCompound()) - stack.stackTagCompound = new NBTTagCompound(); - - stack.stackTagCompound.setInteger(key, value); - } - - private static int readNBT(ItemStack stack, String key) { - - if(!stack.hasTagCompound()) - return 0; - - return stack.stackTagCompound.getInteger(key); - } - -} diff --git a/src/main/java/com/hbm/items/weapon/GunHP.java b/src/main/java/com/hbm/items/weapon/GunHP.java deleted file mode 100644 index 5899bb44a..000000000 --- a/src/main/java/com/hbm/items/weapon/GunHP.java +++ /dev/null @@ -1,71 +0,0 @@ -package com.hbm.items.weapon; - -import java.util.List; -import java.util.Random; - -import com.google.common.collect.Multimap; -import net.minecraft.entity.SharedMonsterAttributes; -import net.minecraft.entity.ai.attributes.AttributeModifier; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.EnumAction; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.world.World; -import net.minecraftforge.event.entity.player.ArrowNockEvent; - -@Deprecated -public class GunHP extends Item { - - Random rand = new Random(); - - public GunHP() { - this.maxStackSize = 1; - } - - @Override - public EnumAction getItemUseAction(ItemStack par1ItemStack) { - return EnumAction.bow; - } - - @Override - public int getMaxItemUseDuration(ItemStack p_77626_1_) { - return 72000; - } - - @Override - public ItemStack onItemRightClick(ItemStack p_77659_1_, World p_77659_2_, EntityPlayer p_77659_3_) { - new ArrowNockEvent(p_77659_3_, p_77659_1_); - { - p_77659_3_.setItemInUse(p_77659_1_, this.getMaxItemUseDuration(p_77659_1_)); - } - - return p_77659_1_; - } - - @Override - public void onUsingTick(ItemStack stack, EntityPlayer player, int count) { } - - @Override - public int getItemEnchantability() { - return 0; - } - - @Override - public void addInformation(ItemStack itemstack, EntityPlayer player, List list, boolean bool) { - - list.add("Rrrrt - rrrrt - rrrrt, weeee!"); - list.add(""); - list.add("Ammo: Ink Cartridge"); - list.add("Damage: 25 - 45"); - list.add(""); - list.add("[LEGENDARY WEAPON]"); - } - - @Override - public Multimap getItemAttributeModifiers() { - Multimap multimap = super.getItemAttributeModifiers(); - multimap.put(SharedMonsterAttributes.attackDamage.getAttributeUnlocalizedName(), - new AttributeModifier(field_111210_e, "Weapon modifier", 4, 0)); - return multimap; - } -} diff --git a/src/main/java/com/hbm/items/weapon/GunJack.java b/src/main/java/com/hbm/items/weapon/GunJack.java deleted file mode 100644 index efb6e453e..000000000 --- a/src/main/java/com/hbm/items/weapon/GunJack.java +++ /dev/null @@ -1,150 +0,0 @@ -package com.hbm.items.weapon; - -import java.util.List; -import java.util.Random; - -import com.google.common.collect.Multimap; -import com.hbm.entity.projectile.EntityBullet; -import com.hbm.items.ModItems; - -import net.minecraft.enchantment.Enchantment; -import net.minecraft.enchantment.EnchantmentHelper; -import net.minecraft.entity.SharedMonsterAttributes; -import net.minecraft.entity.ai.attributes.AttributeModifier; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.EnumAction; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.world.World; -import net.minecraftforge.common.MinecraftForge; -import net.minecraftforge.event.entity.player.ArrowLooseEvent; -import net.minecraftforge.event.entity.player.ArrowNockEvent; - -public class GunJack extends Item { - Random rand = new Random(); - - public int dmgMin = 12; - public int dmgMax = 24; - - public GunJack() { - - this.maxStackSize = 1; - } - - /** - * called when the player releases the use item button. Args: itemstack, - * world, entityplayer, itemInUseCount - */ - @Override - public void onPlayerStoppedUsing(ItemStack p_77615_1_, World p_77615_2_, EntityPlayer p_77615_3_, int p_77615_4_) { - int j = this.getMaxItemUseDuration(p_77615_1_) - p_77615_4_; - - ArrowLooseEvent event = new ArrowLooseEvent(p_77615_3_, p_77615_1_, j); - MinecraftForge.EVENT_BUS.post(event); - j = event.charge; - - boolean flag = p_77615_3_.capabilities.isCreativeMode - || EnchantmentHelper.getEnchantmentLevel(Enchantment.infinity.effectId, p_77615_1_) > 0; - - if (flag || p_77615_3_.inventory.hasItem(ModItems.gun_jack_ammo)) { - float f = j / 20.0F; - f = (f * f + f * 2.0F) / 3.0F; - - if (j < 10.0D) { - return; - } - - if (j > 10.0F) { - f = 10.0F; - } - - p_77615_1_.damageItem(1, p_77615_3_); - - p_77615_2_.playSoundAtEntity(p_77615_3_, "hbm:weapon.shotgunShoot", 1.0F, 1.0F); - - if (flag) { } else { - p_77615_3_.inventory.consumeInventoryItem(ModItems.gun_jack_ammo); - } - - int k = rand.nextInt(25) + 24; - - for(int i = 0; i < k; i++) { - - EntityBullet entityarrow1 = new EntityBullet(p_77615_2_, p_77615_3_, 3.0F); - entityarrow1.setDamage(dmgMin + rand.nextInt(dmgMax - dmgMin)); - - if(!p_77615_2_.isRemote) - p_77615_2_.spawnEntityInWorld(entityarrow1); - } - } - } - - @Override - public ItemStack onEaten(ItemStack p_77654_1_, World p_77654_2_, EntityPlayer p_77654_3_) { - return p_77654_1_; - } - - /** - * How long it takes to use or consume an item - */ - @Override - public int getMaxItemUseDuration(ItemStack p_77626_1_) { - return 72000; - } - - /** - * returns the action that specifies what animation to play when the items - * is being used - */ - @Override - public EnumAction getItemUseAction(ItemStack p_77661_1_) { - return EnumAction.bow; - } - - /** - * Called whenever this item is equipped and the right mouse button is - * pressed. Args: itemStack, world, entityPlayer - */ - @Override - public ItemStack onItemRightClick(ItemStack p_77659_1_, World p_77659_2_, EntityPlayer p_77659_3_) { - ArrowNockEvent event = new ArrowNockEvent(p_77659_3_, p_77659_1_); - MinecraftForge.EVENT_BUS.post(event); - - if (p_77659_3_.capabilities.isCreativeMode || p_77659_3_.inventory.hasItem(ModItems.gun_jack_ammo)) { - p_77659_3_.setItemInUse(p_77659_1_, this.getMaxItemUseDuration(p_77659_1_)); - } - - return p_77659_1_; - } - - /** - * Return the enchantability factor of the item, most of the time is based - * on material. - */ - @Override - public int getItemEnchantability() { - return 1; - } - - @Override - public void addInformation(ItemStack itemstack, EntityPlayer player, List list, boolean bool) { - - list.add("One barrel? Boring."); - list.add("Two barrels? Nah."); - list.add("Four barrels? Heck yes!"); - list.add(""); - list.add("Ammo: Quadruple Shotgun Shells"); - list.add("Damage: 12 - 24"); - list.add("Projectiles: 24 - 48"); - list.add(""); - list.add("[LEGENDARY WEAPON]"); - } - - @Override - public Multimap getItemAttributeModifiers() { - Multimap multimap = super.getItemAttributeModifiers(); - multimap.put(SharedMonsterAttributes.attackDamage.getAttributeUnlocalizedName(), - new AttributeModifier(field_111210_e, "Weapon modifier", 4.5, 0)); - return multimap; - } -} diff --git a/src/main/java/com/hbm/items/weapon/GunLeverActionS.java b/src/main/java/com/hbm/items/weapon/GunLeverActionS.java deleted file mode 100644 index 2d90d50ca..000000000 --- a/src/main/java/com/hbm/items/weapon/GunLeverActionS.java +++ /dev/null @@ -1,232 +0,0 @@ -package com.hbm.items.weapon; - -import java.util.List; -import java.util.Random; - -import com.google.common.collect.Multimap; -import com.hbm.items.ModItems; -import com.hbm.lib.ModDamageSource; -import com.hbm.main.MainRegistry; - -import net.minecraft.enchantment.Enchantment; -import net.minecraft.enchantment.EnchantmentHelper; -import net.minecraft.entity.Entity; -import net.minecraft.entity.SharedMonsterAttributes; -import net.minecraft.entity.ai.attributes.AttributeModifier; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.EnumAction; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.util.StatCollector; -import net.minecraft.util.Vec3; -import net.minecraft.world.World; -import net.minecraftforge.common.MinecraftForge; -import net.minecraftforge.event.entity.player.ArrowLooseEvent; -import net.minecraftforge.event.entity.player.ArrowNockEvent; - -public class GunLeverActionS extends Item { - - Random rand = new Random(); - - public int dmgMin = 8; - public int dmgMax = 16; - - public GunLeverActionS() { - - this.maxStackSize = 1; - - this.setMaxDamage(500); - } - - /** - * called when the player releases the use item button. Args: itemstack, - * world, entityplayer, itemInUseCount - */ - @Override - public void onPlayerStoppedUsing(ItemStack p_77615_1_, World p_77615_2_, EntityPlayer p_77615_3_, int p_77615_4_) { - int j = this.getMaxItemUseDuration(p_77615_1_) - p_77615_4_; - - ArrowLooseEvent event = new ArrowLooseEvent(p_77615_3_, p_77615_1_, j); - MinecraftForge.EVENT_BUS.post(event); - j = event.charge; - - boolean flag = p_77615_3_.capabilities.isCreativeMode - || EnchantmentHelper.getEnchantmentLevel(Enchantment.infinity.effectId, p_77615_1_) > 0; - - if (flag || p_77615_3_.inventory.hasItem(ModItems.ammo_20gauge)) { - float f = j / 20.0F; - f = (f * f + f * 2.0F) / 3.0F; - - if (j < 10.0D) { - return; - } - - if (j > 10.0F) { - f = 10.0F; - } - - Vec3 vec = p_77615_3_.getLookVec(); - vec.xCoord *= -1; - vec.yCoord *= -1; - vec.zCoord *= -1; - vec.normalize(); - - p_77615_3_.motionX += vec.xCoord * 0.75; - p_77615_3_.motionY += vec.yCoord * 0.75; - p_77615_3_.motionZ += vec.zCoord * 0.75; - - p_77615_3_.inventory.consumeInventoryItem(ModItems.ammo_20gauge); - - p_77615_1_.damageItem(1, p_77615_3_); - - p_77615_3_.attackEntityFrom(ModDamageSource.suicide, 10000); - if(!p_77615_3_.capabilities.isCreativeMode) - p_77615_3_.setHealth(0.0F); - - p_77615_2_.playSoundAtEntity(p_77615_3_, "hbm:weapon.revolverShootAlt", 5.0F, 0.75F); - - setAnim(p_77615_1_, 1); - } - } - - - @Override - public void onUpdate(ItemStack stack, World world, Entity entity, int i, boolean b) { - int j = getAnim(stack); - - if(j > 0) { - if(j < 30) - setAnim(stack, j + 1); - else - setAnim(stack, 0); - - if(j == 15) - world.playSoundAtEntity(entity, "hbm:weapon.leverActionReload", 2F, 0.85F); - } - - } - - @Override - public ItemStack onEaten(ItemStack p_77654_1_, World p_77654_2_, EntityPlayer p_77654_3_) { - return p_77654_1_; - } - - /** - * How long it takes to use or consume an item - */ - @Override - public int getMaxItemUseDuration(ItemStack p_77626_1_) { - return 72000; - } - - /** - * returns the action that specifies what animation to play when the items - * is being used - */ - @Override - public EnumAction getItemUseAction(ItemStack p_77661_1_) { - return EnumAction.bow; - } - - /** - * Called whenever this item is equipped and the right mouse button is - * pressed. Args: itemStack, world, entityPlayer - */ - @Override - public ItemStack onItemRightClick(ItemStack p_77659_1_, World p_77659_2_, EntityPlayer p_77659_3_) { - ArrowNockEvent event = new ArrowNockEvent(p_77659_3_, p_77659_1_); - MinecraftForge.EVENT_BUS.post(event); - - if(this.getAnim(p_77659_1_) == 0) - p_77659_3_.setItemInUse(p_77659_1_, this.getMaxItemUseDuration(p_77659_1_)); - - return p_77659_1_; - } - - /** - * Return the enchantability factor of the item, most of the time is based - * on material. - */ - @Override - public int getItemEnchantability() { - return 1; - } - - public String getItemStackDisplayName(ItemStack stack) - { - if(MainRegistry.polaroidID == 11) - return ("" + StatCollector.translateToLocal(this.getUnlocalizedName() + "_2.name")).trim(); - else - return ("" + StatCollector.translateToLocal(this.getUnlocalizedName() + ".name")).trim(); - } - - @Override - public void addInformation(ItemStack itemstack, EntityPlayer player, List list, boolean bool) { - - if(MainRegistry.polaroidID == 11) - list.add("Vee guilt-tripped me into this."); - else - list.add("I hate your guts, Vee."); - list.add(""); - list.add("Ammo: 12x74 Buckshot"); - list.add("Damage: Infinite"); - list.add(""); - list.add("[LEGENDARY WEAPON]"); - } - - @Override - public Multimap getItemAttributeModifiers() { - Multimap multimap = super.getItemAttributeModifiers(); - multimap.put(SharedMonsterAttributes.attackDamage.getAttributeUnlocalizedName(), - new AttributeModifier(field_111210_e, "Weapon modifier", 3.5, 0)); - return multimap; - } - - private static int getAnim(ItemStack stack) { - if(stack.stackTagCompound == null) { - stack.stackTagCompound = new NBTTagCompound(); - return 0; - } - - return stack.stackTagCompound.getInteger("animation"); - - } - - private static void setAnim(ItemStack stack, int i) { - if(stack.stackTagCompound == null) { - stack.stackTagCompound = new NBTTagCompound(); - } - - stack.stackTagCompound.setInteger("animation", i); - - } - - public static float getRotationFromAnim(ItemStack stack) { - float rad = 0.0174533F; - rad *= 7.5F; - int i = getAnim(stack); - - if(i < 10) - return 0; - i -= 10; - - if(i < 10) - return rad * i; - else - return (rad * 10) - (rad * (i - 10)); - } - - public static float getOffsetFromAnim(ItemStack stack) { - float i = getAnim(stack); - - if(i < 10) - return 0; - i -= 10; - - if(i < 10) - return i / 10; - else - return 2 - (i / 10); - } -} diff --git a/src/main/java/com/hbm/items/weapon/GunSpark.java b/src/main/java/com/hbm/items/weapon/GunSpark.java deleted file mode 100644 index 55b34c1d7..000000000 --- a/src/main/java/com/hbm/items/weapon/GunSpark.java +++ /dev/null @@ -1,141 +0,0 @@ -package com.hbm.items.weapon; - -import java.util.List; -import java.util.Random; - -import com.google.common.collect.Multimap; -import com.hbm.entity.projectile.EntitySparkBeam; -import com.hbm.items.ModItems; - -import net.minecraft.enchantment.Enchantment; -import net.minecraft.enchantment.EnchantmentHelper; -import net.minecraft.entity.SharedMonsterAttributes; -import net.minecraft.entity.ai.attributes.AttributeModifier; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.EnumAction; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.world.World; -import net.minecraftforge.common.MinecraftForge; -import net.minecraftforge.event.entity.player.ArrowLooseEvent; -import net.minecraftforge.event.entity.player.ArrowNockEvent; - -public class GunSpark extends Item { - Random rand = new Random(); - - public int dmgMin = 12; - public int dmgMax = 24; - - public GunSpark() { - - this.maxStackSize = 1; - } - - /** - * called when the player releases the use item button. Args: itemstack, - * world, entityplayer, itemInUseCount - */ - @Override - public void onPlayerStoppedUsing(ItemStack p_77615_1_, World p_77615_2_, EntityPlayer p_77615_3_, int p_77615_4_) { - int j = this.getMaxItemUseDuration(p_77615_1_) - p_77615_4_; - - ArrowLooseEvent event = new ArrowLooseEvent(p_77615_3_, p_77615_1_, j); - MinecraftForge.EVENT_BUS.post(event); - j = event.charge; - - boolean flag = p_77615_3_.capabilities.isCreativeMode - || EnchantmentHelper.getEnchantmentLevel(Enchantment.infinity.effectId, p_77615_1_) > 0; - - if (flag || p_77615_3_.inventory.hasItem(ModItems.gun_spark_ammo)) { - float f = j / 20.0F; - f = (f * f + f * 2.0F) / 3.0F; - - if (j < 10.0D) { - return; - } - - if (j > 10.0F) { - f = 10.0F; - } - - p_77615_1_.damageItem(1, p_77615_3_); - - p_77615_2_.playSoundAtEntity(p_77615_3_, "hbm:weapon.sparkShoot", 1.0F, 1.0F); - - if (flag) { } else { - p_77615_3_.inventory.consumeInventoryItem(ModItems.gun_spark_ammo); - } - - EntitySparkBeam beam = new EntitySparkBeam(p_77615_2_, p_77615_3_, 3F); - beam.setDamage(dmgMin + rand.nextInt(dmgMax - dmgMin)); - - if(!p_77615_2_.isRemote) - p_77615_2_.spawnEntityInWorld(beam); - } - } - - @Override - public ItemStack onEaten(ItemStack p_77654_1_, World p_77654_2_, EntityPlayer p_77654_3_) { - return p_77654_1_; - } - - /** - * How long it takes to use or consume an item - */ - @Override - public int getMaxItemUseDuration(ItemStack p_77626_1_) { - return 72000; - } - - /** - * returns the action that specifies what animation to play when the items - * is being used - */ - @Override - public EnumAction getItemUseAction(ItemStack p_77661_1_) { - return EnumAction.bow; - } - - /** - * Called whenever this item is equipped and the right mouse button is - * pressed. Args: itemStack, world, entityPlayer - */ - @Override - public ItemStack onItemRightClick(ItemStack p_77659_1_, World p_77659_2_, EntityPlayer p_77659_3_) { - ArrowNockEvent event = new ArrowNockEvent(p_77659_3_, p_77659_1_); - MinecraftForge.EVENT_BUS.post(event); - - p_77659_3_.setItemInUse(p_77659_1_, this.getMaxItemUseDuration(p_77659_1_)); - - return p_77659_1_; - } - - /** - * Return the enchantability factor of the item, most of the time is based - * on material. - */ - @Override - public int getItemEnchantability() { - return 1; - } - - @Override - public void addInformation(ItemStack itemstack, EntityPlayer player, List list, boolean bool) { - - list.add("'magic does not compute'"); - list.add("'aeiou'"); - list.add(""); - list.add("Ammo: Electromagnetic Cartridge"); - list.add("Projectiles explode on impact."); - list.add(""); - list.add("[LEGENDARY WEAPON]"); - } - - @Override - public Multimap getItemAttributeModifiers() { - Multimap multimap = super.getItemAttributeModifiers(); - multimap.put(SharedMonsterAttributes.attackDamage.getAttributeUnlocalizedName(), - new AttributeModifier(field_111210_e, "Weapon modifier", 4.5, 0)); - return multimap; - } -} diff --git a/src/main/java/com/hbm/items/weapon/GunSuicide.java b/src/main/java/com/hbm/items/weapon/GunSuicide.java deleted file mode 100644 index b94700be1..000000000 --- a/src/main/java/com/hbm/items/weapon/GunSuicide.java +++ /dev/null @@ -1,158 +0,0 @@ -package com.hbm.items.weapon; - -import java.util.List; -import java.util.Random; - -import com.google.common.collect.Multimap; -import com.hbm.items.ModItems; -import com.hbm.lib.ModDamageSource; - -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; -import net.minecraft.enchantment.Enchantment; -import net.minecraft.enchantment.EnchantmentHelper; -import net.minecraft.entity.SharedMonsterAttributes; -import net.minecraft.entity.ai.attributes.AttributeModifier; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.EnumAction; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.util.IIcon; -import net.minecraft.world.World; -import net.minecraftforge.common.MinecraftForge; -import net.minecraftforge.event.entity.player.ArrowLooseEvent; -import net.minecraftforge.event.entity.player.ArrowNockEvent; - -public class GunSuicide extends Item { - - public static final String[] bowPullIconNameArray = new String[] {"pulling_0", "pulling_1", "pulling_2"}; - @SideOnly(Side.CLIENT) - private IIcon[] iconArray; - private Item ammo; - Random rand = new Random(); - - public GunSuicide() - { - this.maxStackSize = 1; - //if(this == ModItems.gun_revolver) - { - this.setMaxDamage(500); - } - - this.ammo = ModItems.ammo_357; - } - - /** - * called when the player releases the use item button. Args: itemstack, world, entityplayer, itemInUseCount - */ - @Override - public void onPlayerStoppedUsing(ItemStack p_77615_1_, World p_77615_2_, EntityPlayer p_77615_3_, int p_77615_4_) - { - int j = this.getMaxItemUseDuration(p_77615_1_) - p_77615_4_; - - ArrowLooseEvent event = new ArrowLooseEvent(p_77615_3_, p_77615_1_, j); - MinecraftForge.EVENT_BUS.post(event); - j = event.charge; - - boolean flag = p_77615_3_.capabilities.isCreativeMode || EnchantmentHelper.getEnchantmentLevel(Enchantment.infinity.effectId, p_77615_1_) > 0; - - - if (flag || p_77615_3_.inventory.hasItem(ammo)) - { - float f = j / 20.0F; - f = (f * f + f * 2.0F) / 3.0F; - - if (j < 10.0D) - { - return; - } - - if (j > 10.0F) - { - f = 10.0F; - } - - p_77615_1_.damageItem(1, p_77615_3_); - p_77615_2_.playSoundAtEntity(p_77615_3_, "hbm:weapon.revolverShoot", 1.0F, 1.0F); - - if (flag) - { } - else - { - p_77615_3_.inventory.consumeInventoryItem(ammo); - } - - if (!p_77615_2_.isRemote) - { - p_77615_3_.attackEntityFrom(ModDamageSource.suicide, 10000); - if(!p_77615_3_.capabilities.isCreativeMode) - p_77615_3_.setHealth(0.0F); - } - } - } - - @Override - public ItemStack onEaten(ItemStack p_77654_1_, World p_77654_2_, EntityPlayer p_77654_3_) - { - return p_77654_1_; - } - - /** - * How long it takes to use or consume an item - */ - @Override - public int getMaxItemUseDuration(ItemStack p_77626_1_) - { - return 72000; - } - - /** - * returns the action that specifies what animation to play when the items is being used - */ - @Override - public EnumAction getItemUseAction(ItemStack p_77661_1_) - { - return EnumAction.bow; - } - - /** - * Called whenever this item is equipped and the right mouse button is pressed. Args: itemStack, world, entityPlayer - */ - @Override - public ItemStack onItemRightClick(ItemStack p_77659_1_, World p_77659_2_, EntityPlayer p_77659_3_) - { - ArrowNockEvent event = new ArrowNockEvent(p_77659_3_, p_77659_1_); - MinecraftForge.EVENT_BUS.post(event); - - p_77659_3_.setItemInUse(p_77659_1_, this.getMaxItemUseDuration(p_77659_1_)); - - return p_77659_1_; - } - - /** - * Return the enchantability factor of the item, most of the time is based on material. - */ - @Override - public int getItemEnchantability() - { - return 1; - } - - @Override - public void addInformation(ItemStack itemstack, EntityPlayer player, List list, boolean bool) { - - list.add("I've seen things..."); - list.add("...I shouldn't have seen."); - list.add(""); - list.add("Ammo: Lead Bullets"); - list.add("Damage: Infinite"); - } - - @Override - public Multimap getItemAttributeModifiers() { - Multimap multimap = super.getItemAttributeModifiers(); - multimap.put(SharedMonsterAttributes.attackDamage.getAttributeUnlocalizedName(), - new AttributeModifier(field_111210_e, "Weapon modifier", 2.5, 0)); - return multimap; - } -} diff --git a/src/main/java/com/hbm/items/weapon/ItemCoilgun.java b/src/main/java/com/hbm/items/weapon/ItemCoilgun.java deleted file mode 100644 index 86e8dc937..000000000 --- a/src/main/java/com/hbm/items/weapon/ItemCoilgun.java +++ /dev/null @@ -1,40 +0,0 @@ -package com.hbm.items.weapon; - -import com.hbm.handler.GunConfiguration; -import com.hbm.render.anim.BusAnimation; -import com.hbm.render.anim.BusAnimationSequence; -import com.hbm.render.anim.HbmAnimations.AnimType; - -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; -import net.minecraft.item.ItemStack; - -public class ItemCoilgun extends ItemGunBase { - - public ItemCoilgun(GunConfiguration config) { - super(config); - } - - @Override - @SideOnly(Side.CLIENT) - public BusAnimation getAnimation(ItemStack stack, AnimType type) { - - if(type == AnimType.CYCLE) { - return new BusAnimation() - .addBus("RECOIL", new BusAnimationSequence() - .addPos(1, 0, 0, 100) - .addPos(0, 0, 0, 200)); - } - - if(type == AnimType.RELOAD) { - return new BusAnimation() - .addBus("RELOAD", new BusAnimationSequence() - .addPos(1, 0, 0, 250) - .addPos(1, 0, 0, 500) - .addPos(0, 0, 0, 250)); - } - - GunConfiguration config = ((ItemGunBase) stack.getItem()).mainConfig; - return config.animations.get(type); - } -} diff --git a/src/main/java/com/hbm/items/weapon/ItemGunBio.java b/src/main/java/com/hbm/items/weapon/ItemGunBio.java deleted file mode 100644 index 5ba412702..000000000 --- a/src/main/java/com/hbm/items/weapon/ItemGunBio.java +++ /dev/null @@ -1,125 +0,0 @@ -package com.hbm.items.weapon; - -import java.util.ArrayList; -import java.util.List; - -import com.hbm.handler.GunConfiguration; -import com.hbm.render.anim.BusAnimation; -import com.hbm.render.anim.BusAnimationSequence; -import com.hbm.render.anim.HbmAnimations.AnimType; - -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.ItemStack; -import net.minecraft.util.Vec3; -import net.minecraft.world.World; - -public class ItemGunBio extends ItemGunBase { - - public ItemGunBio(GunConfiguration config) { - super(config); - } - - public static long lastShot; - public static List smokeNodes = new ArrayList(); - - @Override - public void startActionClient(ItemStack stack, World world, EntityPlayer player, boolean main) { } - - @Override - @SideOnly(Side.CLIENT) - protected void updateClient(ItemStack stack, World world, EntityPlayer entity, int slot, boolean isCurrentItem) { - super.updateClient(stack, world, entity, slot, isCurrentItem); - - boolean smoking = lastShot + 2000 > System.currentTimeMillis(); - - if(!smoking && !smokeNodes.isEmpty()) { - smokeNodes.clear(); - } - - if(smoking) { - - Vec3 prev = Vec3.createVectorHelper(-entity.motionX, -entity.motionY, -entity.motionZ); - prev.rotateAroundY((float) (entity.rotationYaw * Math.PI / 180D)); - double accel = 15D; - double side = (entity.rotationYaw - entity.prevRotationYawHead) * 0.1D; - double waggle = 0.025D; - - for(double[] node : smokeNodes) { - node[0] += prev.xCoord * accel + world.rand.nextGaussian() * waggle + side; - node[1] += prev.yCoord + 1.5D; - node[2] += prev.zCoord * accel + world.rand.nextGaussian() * waggle; - } - - double alpha = (System.currentTimeMillis() - ItemGunBio.lastShot) / 2000D; - alpha = (1 - alpha) * 0.5D; - - if(this.getIsReloading(stack)) alpha = 0; - - smokeNodes.add(new double[] {0, 0, 0, alpha}); - } - } - - @Override - @SideOnly(Side.CLIENT) - public BusAnimation getAnimation(ItemStack stack, AnimType type) { - - if(type == AnimType.CYCLE) { - lastShot = System.currentTimeMillis(); - return new BusAnimation() - .addBus("RECOIL", new BusAnimationSequence() - .addPos(0, 0, 0, 50) - .addPos(0, 0, -3, 50) - .addPos(0, 0, 0, 250) - ) - .addBus("HAMMER", new BusAnimationSequence() - .addPos(0, 0, 1, 50) - .addPos(0, 0, 1, 300) - .addPos(0, 0, 0, 200) - ) - .addBus("DRUM", new BusAnimationSequence() - .addPos(0, 0, 1, 50) - ); - } - - if(type == AnimType.RELOAD) { - return new BusAnimation() - .addBus("LATCH", new BusAnimationSequence() - .addPos(0, 0, 90, 300) - .addPos(0, 0, 90, 2000) - .addPos(0, 0, 0, 150) - ) - .addBus("FRONT", new BusAnimationSequence() - .addPos(0, 0, 0, 200) - .addPos(0, 0, 45, 150) - .addPos(0, 0, 45, 2000) - .addPos(0, 0, 0, 75) - ) - .addBus("RELOAD_ROT", new BusAnimationSequence() - .addPos(0, 0, 0, 300) - .addPos(60, 0, 0, 500) - .addPos(60, 0, 0, 500) - .addPos(0, -90, -90, 0) - .addPos(0, -90, -90, 600) - .addPos(0, 0, 0, 300) - .addPos(0, 0, 0, 100) - .addPos(-45, 0, 0, 50) - .addPos(-45, 0, 0, 100) - .addPos(0, 0, 0, 300) - ) - .addBus("RELOAD_MOVE", new BusAnimationSequence() - .addPos(0, 0, 0, 300) - .addPos(0, -15, 0, 1000) - .addPos(0, 0, 0, 450) - ) - .addBus("DRUM_PUSH", new BusAnimationSequence() - .addPos(0, 0, 0, 1600) - .addPos(0, 0, -5, 0) - .addPos(0, 0, 0, 300) - ); - } - - return null; - } -} diff --git a/src/main/java/com/hbm/items/weapon/ItemGunChemthrower.java b/src/main/java/com/hbm/items/weapon/ItemGunChemthrower.java deleted file mode 100644 index 9dec64259..000000000 --- a/src/main/java/com/hbm/items/weapon/ItemGunChemthrower.java +++ /dev/null @@ -1,226 +0,0 @@ -package com.hbm.items.weapon; - -import java.util.List; - -import com.hbm.config.GeneralConfig; -import com.hbm.entity.projectile.EntityChemical; -import com.hbm.handler.GunConfiguration; -import com.hbm.handler.guncfg.GunEnergyFactory; -import com.hbm.interfaces.IHoldableWeapon; -import com.hbm.inventory.fluid.FluidType; -import com.hbm.inventory.fluid.Fluids; -import com.hbm.items.machine.ItemFluidIcon; -import com.hbm.items.weapon.sedna.Crosshair; -import com.hbm.packet.PacketDispatcher; -import com.hbm.packet.toclient.GunAnimationPacket; -import com.hbm.render.anim.HbmAnimations.AnimType; -import com.hbm.render.util.RenderScreenOverlay; -import api.hbm.fluid.IFillableItem; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; -import net.minecraft.client.Minecraft; -import net.minecraft.enchantment.Enchantment; -import net.minecraft.enchantment.EnchantmentHelper; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.entity.player.EntityPlayerMP; -import net.minecraft.item.ItemStack; -import net.minecraft.util.EnumChatFormatting; -import net.minecraft.world.World; -import net.minecraftforge.client.event.RenderGameOverlayEvent.ElementType; -import net.minecraftforge.client.event.RenderGameOverlayEvent.Pre; - -public class ItemGunChemthrower extends ItemGunBase implements IFillableItem { - - public ItemGunChemthrower() { - super(GunEnergyFactory.getChemConfig()); - } - - @Override - protected void fire(ItemStack stack, World world, EntityPlayer player) { - - if(!hasAmmo(stack, player, true)) - return; - - int bullets = 1; - - for(int i = 0; i < bullets; i++) { - spawnProjectile(world, player, stack, 0); - } - - if(player instanceof EntityPlayerMP) - PacketDispatcher.wrapper.sendTo(new GunAnimationPacket(AnimType.CYCLE.ordinal()), (EntityPlayerMP) player); - - useUpAmmo(player, stack, true); - player.inventoryContainer.detectAndSendChanges(); - - int wear = (int) Math.ceil(10 / (1F + EnchantmentHelper.getEnchantmentLevel(Enchantment.unbreaking.effectId, stack))); - setItemWear(stack, getItemWear(stack) + wear); - } - - @Override - public boolean hasAmmo(ItemStack stack, EntityPlayer player, boolean main) { - return getMag(stack) >= 0 + this.getConsumption(stack); - } - - @Override - public void useUpAmmo(EntityPlayer player, ItemStack stack, boolean main) { - - if(!main && altConfig == null) - return; - - GunConfiguration config = mainConfig; - - if(!main) - config = altConfig; - - if(hasInfinity(stack, config)) - return; - - setMag(stack, getMag(stack) - this.getConsumption(stack)); - } - - @Override - public boolean canReload(ItemStack stack, World world, EntityPlayer player) { - return false; - } - - @Override - protected void spawnProjectile(World world, EntityPlayer player, ItemStack stack, int config) { - //spawn fluid projectile - EntityChemical chem = new EntityChemical(world, player, 0, 0, 0); - chem.setFluid(this.getFluidType(stack)); - world.spawnEntityInWorld(chem); - } - - @Override - public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean bool) { - - list.add("Ammo: " + getMag(stack) + " / " + mainConfig.ammoCap + "mB"); - - list.add("Ammo Type: " + this.getFluidType(stack).getLocalizedName()); - - int dura = mainConfig.durability - getItemWear(stack); - - if(dura < 0) - dura = 0; - - list.add("Durability: " + dura + " / " + mainConfig.durability); - list.add(""); - list.add("Name: " + mainConfig.name); - list.add("Manufacturer: " + mainConfig.manufacturer); - - if(!mainConfig.comment.isEmpty()) { - list.add(""); - for(String s : mainConfig.comment) - list.add(EnumChatFormatting.ITALIC + s); - } - - if(GeneralConfig.enableExtendedLogging) { - list.add(""); - list.add("Type: " + getMagType(stack)); - list.add("Is Reloading: " + getIsReloading(stack)); - list.add("Reload Cycle: " + getReloadCycle(stack)); - list.add("RoF Cooldown: " + getDelay(stack)); - } - } - - @Override - @SideOnly(Side.CLIENT) - public void renderHUD(Pre event, ElementType type, EntityPlayer player, ItemStack stack) { - - ItemGunBase gun = ((ItemGunBase)stack.getItem()); - GunConfiguration gcfg = gun.mainConfig; - - if(type == ElementType.HOTBAR) { - - FluidType fluid = this.getFluidType(stack); - - ItemStack ammo = ItemFluidIcon.make(fluid, 1); - - int count = ItemGunBase.getMag(stack); - int max = gcfg.ammoCap; - boolean showammo = gcfg.showAmmo; - - int dura = ItemGunBase.getItemWear(stack) * 50 / gcfg.durability; - - RenderScreenOverlay.renderAmmo(event.resolution, Minecraft.getMinecraft().ingameGUI, ammo, count, max, dura, showammo); - } - - if(type == ElementType.CROSSHAIRS && GeneralConfig.enableCrosshairs) { - - event.setCanceled(true); - - if(!(gcfg.hasSights && player.isSneaking())) - RenderScreenOverlay.renderCustomCrosshairs(event.resolution, Minecraft.getMinecraft().ingameGUI, ((IHoldableWeapon)player.getHeldItem().getItem()).getCrosshair()); - else - RenderScreenOverlay.renderCustomCrosshairs(event.resolution, Minecraft.getMinecraft().ingameGUI, Crosshair.NONE); - } - } - - @Override - protected void reload2(ItemStack stack, World world, EntityPlayer player) { - this.setIsReloading(stack, false); - } - - public FluidType getFluidType(ItemStack stack) { - return Fluids.fromID(this.getMagType(stack)); - } - - public int getConsumption(ItemStack stack) { - return 3; - } - - @Override - public boolean acceptsFluid(FluidType type, ItemStack stack) { - return getFluidType(stack) == type || this.getMag(stack) == 0; - } - - public static final int transferSpeed = 50; - - @Override - public int tryFill(FluidType type, int amount, ItemStack stack) { - - if(!acceptsFluid(type, stack)) - return amount; - - if(this.getMag(stack) == 0) - this.setMagType(stack, type.getID()); - - int fill = this.getMag(stack); - int req = this.mainConfig.ammoCap - fill; - - int toFill = Math.min(amount, req); - toFill = Math.min(toFill, transferSpeed); - - this.setMag(stack, fill + toFill); - - return amount - toFill; - } - - @Override - public boolean providesFluid(FluidType type, ItemStack stack) { - return getFluidType(stack) == type; - } - - @Override - public int tryEmpty(FluidType type, int amount, ItemStack stack) { - - int fill = this.getMag(stack); - int toUnload = Math.min(fill, amount); - toUnload = Math.min(toUnload, transferSpeed); - - this.setMag(stack, fill - toUnload); - - return toUnload; - } - - @Override - public FluidType getFirstFluidType(ItemStack stack) { - return this.getFluidType(stack); - } - - @Override - public int getFill(ItemStack stack) { - return this.getMag(stack); - } -} diff --git a/src/main/java/com/hbm/items/weapon/ItemGunDart.java b/src/main/java/com/hbm/items/weapon/ItemGunDart.java deleted file mode 100644 index 1840cda68..000000000 --- a/src/main/java/com/hbm/items/weapon/ItemGunDart.java +++ /dev/null @@ -1,78 +0,0 @@ -package com.hbm.items.weapon; - -import com.hbm.handler.GunConfiguration; - -import api.hbm.item.IDesignatorItem; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.server.MinecraftServer; -import net.minecraft.util.ChatComponentText; -import net.minecraft.util.ChatStyle; -import net.minecraft.util.EnumChatFormatting; -import net.minecraft.util.Vec3; -import net.minecraft.world.World; - -public class ItemGunDart extends ItemGunBase implements IDesignatorItem { - - public ItemGunDart(GunConfiguration config) { - super(config); - } - - public static void writePlayer(ItemStack stack, EntityPlayer player) { - - if(!stack.hasTagCompound()) - stack.stackTagCompound = new NBTTagCompound(); - - stack.stackTagCompound.setString("player", player.getDisplayName()); - stack.stackTagCompound.setLong("lease", player.worldObj.getTotalWorldTime() + 60 * 60 * 20); - } - - public static EntityPlayer readPlayer(World world, ItemStack stack) { - - if(!stack.hasTagCompound()) - return null; - - if(stack.stackTagCompound.getLong("lease") < world.getTotalWorldTime()) - return null; - - return MinecraftServer.getServer().getConfigurationManager().func_152612_a(stack.stackTagCompound.getString("player")); - } - - public void startAction(ItemStack stack, World world, EntityPlayer player, boolean main) { - - if(main) { - super.startAction(stack, world, player, main); - } else { - - EntityPlayer target = readPlayer(world, stack); - - if(target != null) { - - int dim = target.worldObj.provider.dimensionId; - int x = (int)target.posX; - int y = (int)target.posY; - int z = (int)target.posZ; - int dist = (int) target.getDistanceToEntity(player); - - player.addChatComponentMessage(new ChatComponentText(target.getDisplayName()).setChatStyle(new ChatStyle().setColor(EnumChatFormatting.YELLOW))); - player.addChatComponentMessage(new ChatComponentText("Dim: " + dim + " X:" + x + " Y:" + y + " Z:" + z + " (" + dist + " blocks away)").setChatStyle(new ChatStyle().setColor(EnumChatFormatting.YELLOW))); - } else { - - player.addChatComponentMessage(new ChatComponentText("No Target").setChatStyle(new ChatStyle().setColor(EnumChatFormatting.RED))); - } - } - } - - @Override - public boolean isReady(World world, ItemStack stack, int x, int y, int z) { - EntityPlayer target = readPlayer(world, stack); - return target != null && target.dimension == world.provider.dimensionId; - } - - @Override - public Vec3 getCoords(World world, ItemStack stack, int x, int y, int z) { - EntityPlayer target = readPlayer(world, stack); - return Vec3.createVectorHelper(target.posX, target.posY, target.posZ); - } -} diff --git a/src/main/java/com/hbm/items/weapon/ItemGunDetonator.java b/src/main/java/com/hbm/items/weapon/ItemGunDetonator.java deleted file mode 100644 index ae89da2c9..000000000 --- a/src/main/java/com/hbm/items/weapon/ItemGunDetonator.java +++ /dev/null @@ -1,17 +0,0 @@ -package com.hbm.items.weapon; - -import com.hbm.handler.GunConfiguration; - -import net.minecraft.item.ItemStack; - -public class ItemGunDetonator extends ItemGunBase { - - public ItemGunDetonator(GunConfiguration config) { - super(config); - } - - @Override - public boolean hasInfinity(ItemStack stack, GunConfiguration config) { - return true; - } -} diff --git a/src/main/java/com/hbm/items/weapon/ItemGunGauss.java b/src/main/java/com/hbm/items/weapon/ItemGunGauss.java deleted file mode 100644 index b3c7e83c0..000000000 --- a/src/main/java/com/hbm/items/weapon/ItemGunGauss.java +++ /dev/null @@ -1,158 +0,0 @@ -package com.hbm.items.weapon; - -import com.hbm.entity.projectile.EntityBulletBaseNT; -import com.hbm.handler.GunConfiguration; -import com.hbm.items.ModItems; -import com.hbm.lib.ModDamageSource; -import com.hbm.main.MainRegistry; -import com.hbm.packet.PacketDispatcher; -import com.hbm.packet.toclient.GunAnimationPacket; -import com.hbm.render.anim.HbmAnimations.AnimType; -import com.hbm.sound.AudioWrapper; - -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.entity.player.EntityPlayerMP; -import net.minecraft.item.ItemStack; -import net.minecraft.world.World; - -public class ItemGunGauss extends ItemGunBase { - - private AudioWrapper chargeLoop; - - public ItemGunGauss(GunConfiguration config, GunConfiguration alt) { - super(config, alt); - } - - public void endAction(ItemStack stack, World world, EntityPlayer player, boolean main) { - - if(getHasShot(stack)) { - world.playSoundAtEntity(player, "hbm:weapon.sparkShoot", 2.0F, 1.0F); - setHasShot(stack, false); - } - - if(!main && getStored(stack) > 0) { - EntityBulletBaseNT bullet = new EntityBulletBaseNT(world, altConfig.config.get(0), player); - bullet.overrideDamage = Math.max(getStored(stack), 1) * 10F; - world.spawnEntityInWorld(bullet); - world.playSoundAtEntity(player, "hbm:weapon.tauShoot", 0.5F, 0.75F); - setItemWear(stack, getItemWear(stack) + (getCharge(stack)) * 2); - setCharge(stack, 0); - - if(player instanceof EntityPlayerMP) - PacketDispatcher.wrapper.sendTo(new GunAnimationPacket(AnimType.CYCLE.ordinal()), (EntityPlayerMP) player); - } - } - - public void endActionClient(ItemStack stack, World world, EntityPlayer player, boolean main) { - - if(chargeLoop != null) { - chargeLoop.stopSound(); - chargeLoop = null; - } - } - - protected void altFire(ItemStack stack, World world, EntityPlayer player) { - setCharge(stack, 1); - } - - @Override - public void startActionClient(ItemStack stack, World world, EntityPlayer player, boolean main) { - - if(!main && getItemWear(stack) < mainConfig.durability && player.inventory.hasItem(ModItems.gun_xvl1456_ammo)) { - chargeLoop = MainRegistry.proxy.getLoopedSound("hbm:weapon.tauChargeLoop2", (float)player.posX, (float)player.posY, (float)player.posZ, 1.0F, 5F, 0.75F); - world.playSoundAtEntity(player, "hbm:weapon.tauChargeLoop2", 1.0F, 0.75F); - - if(chargeLoop != null) { - chargeLoop.startSound(); - } - } - } - - protected void updateServer(ItemStack stack, World world, EntityPlayer player, int slot, boolean isCurrentItem) { - - super.updateServer(stack, world, player, slot, isCurrentItem); - - if(getIsAltDown(stack) && getItemWear(stack) < mainConfig.durability) { - - int c = getCharge(stack); - - if(c > 200) { - setCharge(stack, 0); - setItemWear(stack, mainConfig.durability); - player.attackEntityFrom(ModDamageSource.tauBlast, 1000); - world.newExplosion(player, player.posX, player.posY + player.eyeHeight, player.posZ, 5.0F, true, true); - return; - } - - if(c > 0) { - setCharge(stack, c + 1); - - if(c % 10 == 1 && c < 140 && c > 2) { - - if(player.inventory.hasItem(ModItems.gun_xvl1456_ammo)) { - player.inventory.consumeInventoryItem(ModItems.gun_xvl1456_ammo); - setStored(stack, getStored(stack) + 1); - } else { - setCharge(stack, 0); - setStored(stack, 0); - } - } - } else { - setStored(stack, 0); - } - } else { - setCharge(stack, 0); - setStored(stack, 0); - } - } - - protected void updateClient(ItemStack stack, World world, EntityPlayer player, int slot, boolean isCurrentItem) { - super.updateClient(stack, world, player, slot, isCurrentItem); - - if(chargeLoop != null) { - if(!chargeLoop.isPlaying()) { - chargeLoop = rebootAudio(chargeLoop, player); - } - chargeLoop.updatePosition((float)player.posX, (float)player.posY, (float)player.posZ); - chargeLoop.updatePitch(1 + (getCharge(stack)) * 0.01F); - } - } - - public AudioWrapper rebootAudio(AudioWrapper wrapper, EntityPlayer player) { - wrapper.stopSound(); - AudioWrapper audio = MainRegistry.proxy.getLoopedSound("hbm:weapon.tauChargeLoop2", (float)player.posX, (float)player.posY, (float)player.posZ, wrapper.getVolume(), wrapper.getRange(), wrapper.getPitch()); - audio.startSound(); - return audio; - } - - protected void spawnProjectile(World world, EntityPlayer player, ItemStack stack, int config) { - - super.spawnProjectile(world, player, stack, config); - setHasShot(stack, true); - } - - public static void setHasShot(ItemStack stack, boolean b) { - writeNBT(stack, "hasShot", b ? 1 : 0); - } - - public static boolean getHasShot(ItemStack stack) { - return readNBT(stack, "hasShot") == 1; - } - - /// gauss charge state /// - public static void setCharge(ItemStack stack, int i) { - writeNBT(stack, "gauss_charge", i); - } - - public static int getCharge(ItemStack stack) { - return readNBT(stack, "gauss_charge"); - } - - public static void setStored(ItemStack stack, int i) { - writeNBT(stack, "gauss_stored", i); - } - - public static int getStored(ItemStack stack) { - return readNBT(stack, "gauss_stored"); - } -} diff --git a/src/main/java/com/hbm/items/weapon/ItemGunLacunae.java b/src/main/java/com/hbm/items/weapon/ItemGunLacunae.java deleted file mode 100644 index 03fa31c1c..000000000 --- a/src/main/java/com/hbm/items/weapon/ItemGunLacunae.java +++ /dev/null @@ -1,42 +0,0 @@ -package com.hbm.items.weapon; - -import com.hbm.handler.GunConfiguration; - -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.ItemStack; -import net.minecraft.world.World; - -public class ItemGunLacunae extends ItemGunBase { - - public ItemGunLacunae(GunConfiguration config) { - super(config); - } - - @Override - public void startAction(ItemStack stack, World world, EntityPlayer player, boolean main) { - - if(main) { - setDelay(stack, 20); - world.playSoundAtEntity(player, "hbm:weapon.lacunaeSpinup", 1.0F, 1.0F); - } - } - - @Override - public void endAction(ItemStack stack, World world, EntityPlayer player, boolean main) { - - if(main) - world.playSoundAtEntity(player, "hbm:weapon.lacunaeSpindown", 1.0F, 1.0F); - } - - protected void updateServer(ItemStack stack, World world, EntityPlayer player, int slot, boolean isCurrentItem) { - - super.updateServer(stack, world, player, slot, isCurrentItem); - - if(getIsMouseDown(stack)) { - - int rot = readNBT(stack, "rot") % 360; - rot += 25; - writeNBT(stack, "rot", rot); - } - } -} diff --git a/src/main/java/com/hbm/items/weapon/ItemGunOSIPR.java b/src/main/java/com/hbm/items/weapon/ItemGunOSIPR.java deleted file mode 100644 index dd8f945bc..000000000 --- a/src/main/java/com/hbm/items/weapon/ItemGunOSIPR.java +++ /dev/null @@ -1,62 +0,0 @@ -package com.hbm.items.weapon; - -import com.hbm.entity.projectile.EntityCombineBallNT; -import com.hbm.handler.BulletConfigSyncingUtil; -import com.hbm.handler.GunConfiguration; -import com.hbm.items.ModItems; - -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.ItemStack; -import net.minecraft.world.World; - -public class ItemGunOSIPR extends ItemGunBase { - - public ItemGunOSIPR(GunConfiguration config, GunConfiguration alt) { - super(config, alt); - } - - @Override - protected void altFire(ItemStack stack, World world, EntityPlayer player) { - - setCharge(stack, 1); - world.playSoundAtEntity(player, "hbm:weapon.osiprCharging", 1.0F, 1F); - } - - @Override - protected void updateServer(ItemStack stack, World world, EntityPlayer player, int slot, boolean isCurrentItem) { - super.updateServer(stack, world, player, slot, isCurrentItem); - - if(!isCurrentItem) { - setCharge(stack, 0); - return; - } - - int i = getCharge(stack); - - if(i >= 20) { - EntityCombineBallNT energyBall = new EntityCombineBallNT(world, BulletConfigSyncingUtil.SPECIAL_OSIPR_CHARGED, player); - world.spawnEntityInWorld(energyBall); - world.playSoundAtEntity(player, altConfig.firingSound, 1.0F, 1F); - setCharge(stack, 0); - setDelay(stack, altConfig.rateOfFire); - player.inventory.consumeInventoryItem(ModItems.gun_osipr_ammo2); - - } else if(i > 0) - setCharge(stack, i + 1); - } - - @Override - protected boolean tryShoot(ItemStack stack, World world, EntityPlayer player, boolean main) { - - return super.tryShoot(stack, world, player, main) && getCharge(stack) == 0; - } - - /// CMB charge state /// - public static void setCharge(ItemStack stack, int i) { - writeNBT(stack, "cmb_charge", i); - } - - public static int getCharge(ItemStack stack) { - return readNBT(stack, "cmb_charge"); - } -} diff --git a/src/main/java/com/hbm/items/weapon/ItemGunPip.java b/src/main/java/com/hbm/items/weapon/ItemGunPip.java deleted file mode 100644 index 5e0e636ca..000000000 --- a/src/main/java/com/hbm/items/weapon/ItemGunPip.java +++ /dev/null @@ -1,137 +0,0 @@ -package com.hbm.items.weapon; - -import java.util.ArrayList; -import java.util.List; - -import com.hbm.handler.GunConfiguration; -import com.hbm.render.anim.BusAnimation; -import com.hbm.render.anim.BusAnimationSequence; -import com.hbm.render.anim.HbmAnimations.AnimType; - -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.ItemStack; -import net.minecraft.util.Vec3; -import net.minecraft.world.World; - -public class ItemGunPip extends ItemGunBase { - - public static long lastShot; - public static List smokeNodes = new ArrayList(); - - public ItemGunPip(GunConfiguration config) { - super(config); - } - - @Override - @SideOnly(Side.CLIENT) - protected void updateClient(ItemStack stack, World world, EntityPlayer entity, int slot, boolean isCurrentItem) { - super.updateClient(stack, world, entity, slot, isCurrentItem); - - boolean smoking = lastShot + 2000 > System.currentTimeMillis(); - - if(!smoking && !smokeNodes.isEmpty()) { - smokeNodes.clear(); - } - - if(smoking) { - Vec3 prev = Vec3.createVectorHelper(-entity.motionX, -entity.motionY, -entity.motionZ); - prev.rotateAroundY((float) (entity.rotationYaw * Math.PI / 180D)); - double accel = 15D; - double side = (entity.rotationYaw - entity.prevRotationYawHead) * 0.1D; - double waggle = 0.025D; - - for(double[] node : smokeNodes) { - node[0] += -prev.zCoord * accel + world.rand.nextGaussian() * waggle; - node[1] += prev.yCoord + 1.5D; - node[2] += prev.xCoord * accel + world.rand.nextGaussian() * waggle + side; - } - - double alpha = (System.currentTimeMillis() - lastShot) / 2000D; - alpha = (1 - alpha) * 0.5D; - - if(this.getIsReloading(stack)) alpha = 0; - - smokeNodes.add(new double[] {0, 0, 0, alpha}); - } - } - - @Override - @SideOnly(Side.CLIENT) - public BusAnimation getAnimation(ItemStack stack, AnimType type) { - - if(type == AnimType.EQUIP) { - return new BusAnimation() - .addBus("ROTATE", new BusAnimationSequence() - .addPos(-360, 0, 0, 350) - ); - } - - if(type == AnimType.CYCLE) { - lastShot = System.currentTimeMillis(); - int s = 1; - return new BusAnimation() - .addBus("RECOIL", new BusAnimationSequence() - .addPos(0, 0, 0, 50 * s) - .addPos(0, 0, -3, 50 * s) - .addPos(0, 0, 0, 250 * s) - ) - .addBus("HAMMER", new BusAnimationSequence() - .addPos(0, 0, 1, 50 * s) - .addPos(0, 0, 1, 300 * s) - .addPos(0, 0, 0, 200 * s) - ) - .addBus("DRUM", new BusAnimationSequence() - .addPos(0, 0, 1, 50 * s) - ); - } - - if(type == AnimType.RELOAD) { - int s = 1; - return new BusAnimation() - .addBus("RELAOD_TILT", new BusAnimationSequence() - .addPos(-15, 0, 0, 100 * s) - .addPos(65, 0, 0, 100 * s) //200 - .addPos(45, 0, 0, 50 * s) //250 - .addPos(0, 0, 0, 200 * s) //450 - .addPos(0, 0, 0, 1450 * s) //1900 - .addPos(-80, 0, 0, 100 * s) //2000 - .addPos(-80, 0, 0, 100 * s) //2100 - .addPos(0, 0, 0, 200 * s) //2300 - ) - .addBus("RELOAD_CYLINDER", new BusAnimationSequence() - .addPos(0, 0, 0, 200 * s) - .addPos(90, 0, 0, 100 * s) //300 - .addPos(90, 0, 0, 1700 * s) //2000 - .addPos(0, 0, 0, 70 * s) //2100 - ) - .addBus("RELOAD_LIFT", new BusAnimationSequence() - .addPos(0, 0, 0, 350 * s) - .addPos(-45, 0, 0, 250 * s) //600 - .addPos(-45, 0, 0, 350 * s) //950 - .addPos(-15, 0, 0, 200 * s) //1150 - .addPos(-15, 0, 0, 1050 * s) //2200 - .addPos(0, 0, 0, 100 * s) //2300 - ) - .addBus("RELOAD_JOLT", new BusAnimationSequence() - .addPos(0, 0, 0, 600 * s) - .addPos(2, 0, 0, 50 * s) //650 - .addPos(0, 0, 0, 100 * s) //750 - ) - .addBus("RELOAD_BULLETS", new BusAnimationSequence() - .addPos(0, 0, 0, 650 * s) - .addPos(10, 0, 0, 300 * s) //950 - .addPos(10, 0, 0, 200 * s) //1150 - .addPos(0, 0, 0, 700 * s) //1850 - ) - .addBus("RELOAD_BULLETS_CON", new BusAnimationSequence() - .addPos(1, 0, 0, 0 * s) - .addPos(1, 0, 0, 950 * s) - .addPos(0, 0, 0, 1 * s) - ); - } - - return null; - } -} diff --git a/src/main/java/com/hbm/items/weapon/ItemGunShotty.java b/src/main/java/com/hbm/items/weapon/ItemGunShotty.java deleted file mode 100644 index 39588922c..000000000 --- a/src/main/java/com/hbm/items/weapon/ItemGunShotty.java +++ /dev/null @@ -1,24 +0,0 @@ -package com.hbm.items.weapon; - -import com.hbm.handler.GunConfiguration; -import com.hbm.util.ShadyUtil; - -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.ItemStack; -import net.minecraft.world.World; - -public class ItemGunShotty extends ItemGunBase { - - public ItemGunShotty(GunConfiguration config) { - super(config); - } - - protected void updateServer(ItemStack stack, World world, EntityPlayer player, int slot, boolean isCurrentItem) { - super.updateServer(stack, world, player, slot, isCurrentItem); - - if((player.getUniqueID().toString().equals(ShadyUtil.Dr_Nostalgia) || player.getDisplayName().equals("Tankish") || player.getDisplayName().equals("Tankish020")) && - this.getDelay(stack) < this.mainConfig.rateOfFire * 0.9) - this.setDelay(stack, 0); - } - -} diff --git a/src/main/java/com/hbm/items/weapon/sedna/BulletConfig.java b/src/main/java/com/hbm/items/weapon/sedna/BulletConfig.java index f9e5c341c..ab07755b9 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/BulletConfig.java +++ b/src/main/java/com/hbm/items/weapon/sedna/BulletConfig.java @@ -22,6 +22,7 @@ import com.hbm.util.DamageResistanceHandler.DamageClass; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLivingBase; import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; import net.minecraft.util.DamageSource; import net.minecraft.util.EntityDamageSourceIndirect; import net.minecraft.util.MovingObjectPosition; @@ -94,6 +95,7 @@ public class BulletConfig implements Cloneable { public BulletConfig setBeam() { this.pType = ProjectileType.BEAM; return this; } public BulletConfig setChunkloading() { this.pType = ProjectileType.BULLET_CHUNKLOADING; return this; } public BulletConfig setItem(Item ammo) { this.ammo = new ComparableStack(ammo); return this; } + public BulletConfig setItem(ItemStack ammo) { this.ammo = new ComparableStack(ammo); return this; } public BulletConfig setItem(EnumAmmo ammo) { this.ammo = new ComparableStack(ModItems.ammo_standard, 1, ammo.ordinal()); return this; } public BulletConfig setItem(EnumAmmoSecret ammo) { this.ammo = new ComparableStack(ModItems.ammo_secret, 1, ammo.ordinal()); return this; } public BulletConfig setReloadCount(int ammoReloadCount) { this.ammoReloadCount = ammoReloadCount; return this; } diff --git a/src/main/java/com/hbm/main/ClientProxy.java b/src/main/java/com/hbm/main/ClientProxy.java index 56e67b0d4..bd399fa8e 100644 --- a/src/main/java/com/hbm/main/ClientProxy.java +++ b/src/main/java/com/hbm/main/ClientProxy.java @@ -532,67 +532,8 @@ public class ClientProxy extends ServerProxy { MinecraftForgeClient.registerItemRenderer(ModItems.chainsaw, new ItemRenderChainsaw()); MinecraftForgeClient.registerItemRenderer(ModItems.boltgun, new ItemRenderBoltgun()); //guns - MinecraftForgeClient.registerItemRenderer(ModItems.gun_rpg, new ItemRenderRpg()); - MinecraftForgeClient.registerItemRenderer(ModItems.gun_karl, new ItemRenderRpg()); - MinecraftForgeClient.registerItemRenderer(ModItems.gun_skystinger, new ItemRenderStinger()); - MinecraftForgeClient.registerItemRenderer(ModItems.gun_revolver, new ItemRenderWeaponFFColt(ResourceManager.ff_gun_bright, ResourceManager.ff_iron, ResourceManager.ff_wood)); - MinecraftForgeClient.registerItemRenderer(ModItems.gun_revolver_saturnite, new ItemRenderWeaponFFColt(ResourceManager.ff_saturnite, ResourceManager.ff_iron, ResourceManager.ff_wood)); - MinecraftForgeClient.registerItemRenderer(ModItems.gun_revolver_gold, new ItemRenderWeaponFFColt(ResourceManager.ff_gold, ResourceManager.ff_gold, ResourceManager.ff_gun_dark)); - MinecraftForgeClient.registerItemRenderer(ModItems.gun_revolver_schrabidium, new ItemRenderWeaponFFColt(ResourceManager.ff_schrabidium, ResourceManager.ff_schrabidium, ResourceManager.ff_gun_dark)); - MinecraftForgeClient.registerItemRenderer(ModItems.gun_revolver_cursed, new ItemRenderWeaponFFCursed()); - MinecraftForgeClient.registerItemRenderer(ModItems.gun_revolver_nightmare, new ItemRenderWeaponFFNightmare()); - MinecraftForgeClient.registerItemRenderer(ModItems.gun_revolver_nightmare2, new ItemRenderWeaponFFNightmareDark()); - MinecraftForgeClient.registerItemRenderer(ModItems.gun_proto, new ItemRenderFatMan()); - MinecraftForgeClient.registerItemRenderer(ModItems.gun_mirv, new ItemRenderMIRVLauncher()); - MinecraftForgeClient.registerItemRenderer(ModItems.gun_bf, new ItemRenderBFLauncher()); - MinecraftForgeClient.registerItemRenderer(ModItems.gun_xvl1456, new ItemRenderWeaponTau()); - MinecraftForgeClient.registerItemRenderer(ModItems.gun_zomg, new ItemRenderZOMG()); - MinecraftForgeClient.registerItemRenderer(ModItems.gun_osipr, new ItemRenderOSIPR()); - MinecraftForgeClient.registerItemRenderer(ModItems.gun_mp, new ItemRenderMP()); - MinecraftForgeClient.registerItemRenderer(ModItems.gun_revolver_inverted, new ItemRenderRevolverInverted()); - MinecraftForgeClient.registerItemRenderer(ModItems.gun_mp40, new ItemRenderMP40()); - MinecraftForgeClient.registerItemRenderer(ModItems.gun_emp, new ItemRenderEMPRay()); - MinecraftForgeClient.registerItemRenderer(ModItems.gun_immolator, new ItemRenderImmolator()); - MinecraftForgeClient.registerItemRenderer(ModItems.gun_cryolator, new ItemRenderCryolator()); - MinecraftForgeClient.registerItemRenderer(ModItems.gun_uboinik, new ItemRenderUboinik()); - MinecraftForgeClient.registerItemRenderer(ModItems.gun_jack, new ItemRenderOverkill()); - MinecraftForgeClient.registerItemRenderer(ModItems.gun_spark, new ItemRenderOverkill()); - MinecraftForgeClient.registerItemRenderer(ModItems.gun_hp, new ItemRenderOverkill()); - MinecraftForgeClient.registerItemRenderer(ModItems.gun_euthanasia, new ItemRenderOverkill()); - MinecraftForgeClient.registerItemRenderer(ModItems.gun_defabricator, new ItemRenderOverkill()); - MinecraftForgeClient.registerItemRenderer(ModItems.gun_bolt_action, new ItemRenderWeaponFFBolt(ResourceManager.rem700, ResourceManager.rem700_tex)); - MinecraftForgeClient.registerItemRenderer(ModItems.gun_bolt_action_green, new ItemRenderWeaponFFBolt(ResourceManager.rem700poly, ResourceManager.rem700poly_tex)); - MinecraftForgeClient.registerItemRenderer(ModItems.gun_bolt_action_saturnite, new ItemRenderGunAnim()); - MinecraftForgeClient.registerItemRenderer(ModItems.gun_bolt_action_saturnite, new ItemRenderWeaponFFBolt(ResourceManager.rem700sat, ResourceManager.rem700sat_tex)); MinecraftForgeClient.registerItemRenderer(ModItems.gun_b92, new ItemRenderGunAnim()); - MinecraftForgeClient.registerItemRenderer(ModItems.gun_b93, new ItemRenderGunAnim()); - MinecraftForgeClient.registerItemRenderer(ModItems.gun_uzi_silencer, new ItemRenderUZI()); - MinecraftForgeClient.registerItemRenderer(ModItems.gun_uzi_saturnite, new ItemRenderUZI()); - MinecraftForgeClient.registerItemRenderer(ModItems.gun_uzi_saturnite_silencer, new ItemRenderUZI()); - MinecraftForgeClient.registerItemRenderer(ModItems.gun_calamity, new ItemRenderWeaponFFMG42()); - MinecraftForgeClient.registerItemRenderer(ModItems.gun_lacunae, new ItemRenderOverkill()); - MinecraftForgeClient.registerItemRenderer(ModItems.gun_hk69, new ItemRenderWeaponObj()); - MinecraftForgeClient.registerItemRenderer(ModItems.gun_bio_revolver, new ItemRenderBioRevolver()); - MinecraftForgeClient.registerItemRenderer(ModItems.gun_deagle, new ItemRenderWeaponObj()); - MinecraftForgeClient.registerItemRenderer(ModItems.gun_supershotgun, new ItemRenderWeaponShotty()); - MinecraftForgeClient.registerItemRenderer(ModItems.gun_ks23, new ItemRenderWeaponKS23()); - MinecraftForgeClient.registerItemRenderer(ModItems.gun_flechette, new ItemRenderWeaponObj()); - MinecraftForgeClient.registerItemRenderer(ModItems.gun_vortex, new ItemRenderWeaponVortex()); - MinecraftForgeClient.registerItemRenderer(ModItems.gun_thompson, new ItemRenderWeaponThompson()); - MinecraftForgeClient.registerItemRenderer(ModItems.gun_bolter_digamma, new ItemRenderWeaponBolter()); MinecraftForgeClient.registerItemRenderer(ModItems.gun_fireext, new ItemRenderFireExt()); - MinecraftForgeClient.registerItemRenderer(ModItems.gun_ar15, new ItemRenderWeaponAR15()); - MinecraftForgeClient.registerItemRenderer(ModItems.detonator_laser, new ItemRenderDetonatorLaser()); - MinecraftForgeClient.registerItemRenderer(ModItems.gun_remington, new ItemRenderWeaponRemington()); - MinecraftForgeClient.registerItemRenderer(ModItems.gun_glass_cannon, new ItemRenderWeaponGlass()); - MinecraftForgeClient.registerItemRenderer(ModItems.gun_revolver_nopip, new ItemRenderWeaponNovac()); - MinecraftForgeClient.registerItemRenderer(ModItems.gun_revolver_pip, new ItemRenderWeaponLilMac()); - MinecraftForgeClient.registerItemRenderer(ModItems.gun_revolver_blackjack, new ItemRenderWeaponNovac()); - MinecraftForgeClient.registerItemRenderer(ModItems.gun_revolver_silver, new ItemRenderWeaponNovac()); - MinecraftForgeClient.registerItemRenderer(ModItems.gun_revolver_red, new ItemRenderWeaponNovac()); - MinecraftForgeClient.registerItemRenderer(ModItems.gun_lunatic_marksman, new ItemRenderLunaticSniper()); - MinecraftForgeClient.registerItemRenderer(ModItems.gun_benelli, new ItemRenderBenelli()); - MinecraftForgeClient.registerItemRenderer(ModItems.gun_uac_pistol, new ItemRenderUACPistol()); MinecraftForgeClient.registerItemRenderer(ModItems.gun_cryocannon, new ItemRenderWeaponCryoCannon()); //multitool MinecraftForgeClient.registerItemRenderer(ModItems.multitool_dig, new ItemRenderMultitool()); diff --git a/src/main/java/com/hbm/main/MainRegistry.java b/src/main/java/com/hbm/main/MainRegistry.java index 07ada7248..291604ece 100644 --- a/src/main/java/com/hbm/main/MainRegistry.java +++ b/src/main/java/com/hbm/main/MainRegistry.java @@ -1459,6 +1459,14 @@ public class MainRegistry { ignoreMappings.add("hbm:item.powder_verticium"); ignoreMappings.add("hbm:tile.ore_random"); ignoreMappings.add("hbm:item.crate_caller"); + ignoreMappings.add("hbm:item.pellet_rtg_berkelium"); + ignoreMappings.add("hbm:item.folly_shell"); + ignoreMappings.add("hbm:item.folly_bullet"); + ignoreMappings.add("hbm:item.folly_bullet_nuclear"); + ignoreMappings.add("hbm:item.folly_bullet_du"); + ignoreMappings.add("hbm:item.ammo_folly"); + ignoreMappings.add("hbm:item.ammo_folly_nuclear"); + ignoreMappings.add("hbm:item.ammo_folly_du"); /// REMAP /// remapItems.put("hbm:item.gadget_explosive8", ModItems.early_explosive_lenses); diff --git a/src/main/java/com/hbm/render/item/weapon/ItemRenderBioRevolver.java b/src/main/java/com/hbm/render/item/weapon/ItemRenderBioRevolver.java deleted file mode 100644 index ec65b0ef2..000000000 --- a/src/main/java/com/hbm/render/item/weapon/ItemRenderBioRevolver.java +++ /dev/null @@ -1,185 +0,0 @@ -package com.hbm.render.item.weapon; - -import org.lwjgl.opengl.GL11; - -import com.hbm.items.weapon.ItemGunBio; -import com.hbm.main.ResourceManager; -import com.hbm.render.anim.HbmAnimations; - -import net.minecraft.client.Minecraft; -import net.minecraft.client.renderer.Tessellator; -import net.minecraft.item.ItemStack; -import net.minecraftforge.client.IItemRenderer; - -public class ItemRenderBioRevolver implements IItemRenderer { - - @Override - public boolean handleRenderType(ItemStack item, ItemRenderType type) { - switch(type) { - case EQUIPPED: - case EQUIPPED_FIRST_PERSON: - case ENTITY: - case INVENTORY: - return true; - default: return false; - } - } - - @Override - public boolean shouldUseRenderHelper(ItemRenderType type, ItemStack item, ItemRendererHelper helper) { - return type == ItemRenderType.ENTITY && (helper == ItemRendererHelper.ENTITY_ROTATION || helper == ItemRendererHelper.ENTITY_BOBBING); - } - - @Override - public void renderItem(ItemRenderType type, ItemStack item, Object... data) { - - GL11.glPushMatrix(); - - GL11.glDisable(GL11.GL_CULL_FACE); - - Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.bio_revolver_tex); - - switch(type) { - - case EQUIPPED_FIRST_PERSON: - - double s0 = 0.1D; - GL11.glRotated(25, 0, 0, 1); - GL11.glTranslated(1.0, 0.25, -0.25); - GL11.glRotated(80, 0, 1, 0); - GL11.glScaled(s0, s0, s0); - double width = 0.5D; - - GL11.glPushMatrix(); - GL11.glTranslated(0.0, 1.75, 10.0); - - double[] recoil = HbmAnimations.getRelevantTransformation("RECOIL"); - GL11.glTranslated(0, -recoil[2] * 1.5, recoil[2]); - - GL11.glShadeModel(GL11.GL_SMOOTH); - - if(ItemGunBio.smokeNodes.size() > 1) { - - Tessellator tess = Tessellator.instance; - tess.startDrawingQuads(); - tess.setNormal(0F, 1F, 0F); - - for(int i = 0; i < ItemGunBio.smokeNodes.size() - 1; i++) { - double[] node = ItemGunBio.smokeNodes.get(i); - double[] past = ItemGunBio.smokeNodes.get(i + 1); - - tess.setColorRGBA_F(1F, 1F, 1F, (float) node[3]); - tess.addVertex(node[0], node[1], node[2]); - tess.setColorRGBA_F(1F, 1F, 1F, 0F); - tess.addVertex(node[0] + width, node[1], node[2]); - tess.setColorRGBA_F(1F, 1F, 1F, 0F); - tess.addVertex(past[0] + width, past[1], past[2]); - tess.setColorRGBA_F(1F, 1F, 1F, (float) past[3]); - tess.addVertex(past[0], past[1], past[2]); - - tess.setColorRGBA_F(1F, 1F, 1F, (float) node[3]); - tess.addVertex(node[0], node[1], node[2]); - tess.setColorRGBA_F(1F, 1F, 1F, 0F); - tess.addVertex(node[0] - width, node[1], node[2]); - tess.setColorRGBA_F(1F, 1F, 1F, 0F); - tess.addVertex(past[0] - width, past[1], past[2]); - tess.setColorRGBA_F(1F, 1F, 1F, (float) past[3]); - tess.addVertex(past[0], past[1], past[2]); - } - GL11.glAlphaFunc(GL11.GL_GREATER, 0F); - GL11.glEnable(GL11.GL_BLEND); - GL11.glDisable(GL11.GL_TEXTURE_2D); - tess.draw(); - GL11.glEnable(GL11.GL_TEXTURE_2D); - GL11.glDisable(GL11.GL_BLEND); - GL11.glAlphaFunc(GL11.GL_GEQUAL, 0.1F); - } - - GL11.glPopMatrix(); - GL11.glTranslated(recoil[0], recoil[1], recoil[2]); - GL11.glRotated(recoil[2] * 10, 1, 0, 0); - - double[] reloadMove = HbmAnimations.getRelevantTransformation("RELOAD_MOVE"); - GL11.glTranslated(reloadMove[0], reloadMove[1], reloadMove[2]); - - double[] reloadRot = HbmAnimations.getRelevantTransformation("RELOAD_ROT"); - GL11.glRotated(reloadRot[0], 1, 0, 0); - GL11.glRotated(reloadRot[2], 0, 0, 1); - GL11.glRotated(reloadRot[1], 0, 1, 0); - ResourceManager.bio_revolver.renderPart("Grip"); - - GL11.glPushMatrix(); /// FRONT PUSH /// - GL11.glRotated(HbmAnimations.getRelevantTransformation("FRONT")[2], 1, 0, 0); - ResourceManager.bio_revolver.renderPart("Barrel"); - GL11.glPushMatrix(); /// LATCH PUSH /// - GL11.glTranslated(0, 2.3125, -0.875); - GL11.glRotated(HbmAnimations.getRelevantTransformation("LATCH")[2], 1, 0, 0); - GL11.glTranslated(0, -2.3125, 0.875); - ResourceManager.bio_revolver.renderPart("Latch"); - GL11.glPopMatrix(); /// LATCH POP /// - - GL11.glPushMatrix(); /// DRUM PUSH /// - GL11.glTranslated(0, 1, 0); - GL11.glRotated(HbmAnimations.getRelevantTransformation("DRUM")[2] * 60, 0, 0, 1); - GL11.glTranslated(0, -1, 0); - GL11.glTranslated(0, 0, HbmAnimations.getRelevantTransformation("DRUM_PUSH")[2]); - ResourceManager.bio_revolver.renderPart("Drum"); - GL11.glPopMatrix(); /// DRUM POP /// - - GL11.glPopMatrix(); /// FRONT POP /// - - GL11.glPushMatrix(); /// HAMMER /// - GL11.glTranslated(0, 0, -4.5); - GL11.glRotated(-45 + 45 * HbmAnimations.getRelevantTransformation("HAMMER")[2], 1, 0, 0); - GL11.glTranslated(0, 0, 4.5); - ResourceManager.bio_revolver.renderPart("Hammer"); - GL11.glPopMatrix(); - - GL11.glShadeModel(GL11.GL_FLAT); - - break; - - case EQUIPPED: - - double scale = 0.1D; - GL11.glScaled(scale, scale, scale); - GL11.glRotatef(15F, 0.0F, 0.0F, 1.0F); - GL11.glRotatef(10, 0.0F, 1.0F, 0.0F); - GL11.glRotatef(15F, 1.0F, 0.0F, 0.0F); - GL11.glTranslatef(4F, 1F, 4F); - - break; - - case ENTITY: - - double s1 = 0.075D; - GL11.glScaled(s1, s1, s1); - GL11.glRotatef(90, 0.0F, 1.0F, 0.0F); - GL11.glTranslatef(0F, 1F, 0F); - - break; - - case INVENTORY: - - GL11.glEnable(GL11.GL_LIGHTING); - - double s = 0.8D; - GL11.glTranslated(8, 7, 0); - GL11.glRotated(-90, 0, 1, 0); - GL11.glRotated(-135, 1, 0, 0); - GL11.glScaled(s, s, -s); - - break; - - default: break; - } - - if(type != ItemRenderType.EQUIPPED_FIRST_PERSON) { - GL11.glShadeModel(GL11.GL_SMOOTH); - ResourceManager.bio_revolver.renderAll(); - GL11.glShadeModel(GL11.GL_FLAT); - } - - GL11.glPopMatrix(); - } -} diff --git a/src/main/java/com/hbm/render/item/weapon/ItemRenderGunAnim.java b/src/main/java/com/hbm/render/item/weapon/ItemRenderGunAnim.java index 492a2be44..77455bf52 100644 --- a/src/main/java/com/hbm/render/item/weapon/ItemRenderGunAnim.java +++ b/src/main/java/com/hbm/render/item/weapon/ItemRenderGunAnim.java @@ -4,7 +4,6 @@ import org.lwjgl.opengl.GL11; import com.hbm.items.ModItems; import com.hbm.items.weapon.GunB92; -import com.hbm.items.weapon.GunLeverActionS; import com.hbm.lib.RefStrings; import com.hbm.render.model.ModelB92; import com.hbm.render.model.ModelB93; @@ -71,12 +70,6 @@ public class ItemRenderGunAnim implements IItemRenderer { GL11.glTranslatef(2.3F, 0.2F, 0.8F); } - if((item.getItem() == ModItems.gun_lever_action_sonata) && GunLeverActionS.getRotationFromAnim(item) > 0) { - GL11.glRotatef(GunLeverActionS.getRotationFromAnim(item) * -25, 0.0F, 0.0F, 1.0F); - GL11.glTranslatef(GunLeverActionS.getOffsetFromAnim(item) * 1.5F, 0.0F, 0.0F); - GL11.glTranslatef(0.0F, GunLeverActionS.getOffsetFromAnim(item) * -1.5F, 0.0F); - } - if(item.getItem() == ModItems.gun_b92 && GunB92.getRotationFromAnim(item) > 0) { float off = GunB92.getRotationFromAnim(item) * 2; GL11.glRotatef(GunB92.getRotationFromAnim(item) * -90, 0.0F, 0.0F, 1.0F); @@ -88,9 +81,6 @@ public class ItemRenderGunAnim implements IItemRenderer { GL11.glRotatef(GunB92.getRotationFromAnim(item) * -90, 0.0F, 0.0F, 1.0F); GL11.glTranslatef(off * -0.5F, off * -0.5F, 0.0F); } - - if(item.getItem() == ModItems.gun_lever_action_sonata) - flippedGun.renderAnim((Entity)data[1], 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F, GunLeverActionS.getRotationFromAnim(item)); if(item.getItem() == ModItems.gun_b92) b92.renderAnim((Entity)data[1], 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F, GunB92.getTransFromAnim(item)); if(item.getItem() == ModItems.gun_b93) @@ -131,8 +121,6 @@ public class ItemRenderGunAnim implements IItemRenderer { GL11.glTranslatef(2.3F, 0.2F, 0.8F); } - if(item.getItem() == ModItems.gun_lever_action_sonata) - flippedGun.renderAnim((Entity)data[1], 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F, GunLeverActionS.getRotationFromAnim(item)); if(item.getItem() == ModItems.gun_b92) b92.renderAnim((Entity)data[1], 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F, GunB92.getTransFromAnim(item)); if(item.getItem() == ModItems.gun_b93) diff --git a/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponChemthrower.java b/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponChemthrower.java deleted file mode 100644 index 4996d353e..000000000 --- a/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponChemthrower.java +++ /dev/null @@ -1,105 +0,0 @@ -package com.hbm.render.item.weapon; - -import org.lwjgl.opengl.GL11; - -import com.hbm.items.weapon.ItemGunChemthrower; -import com.hbm.main.ResourceManager; - -import net.minecraft.client.Minecraft; -import net.minecraft.item.ItemStack; -import net.minecraftforge.client.IItemRenderer; - -public class ItemRenderWeaponChemthrower implements IItemRenderer { - - @Override - public boolean handleRenderType(ItemStack item, ItemRenderType type) { - switch(type) { - case EQUIPPED: - case EQUIPPED_FIRST_PERSON: - case ENTITY: - case INVENTORY: - return true; - default: return false; - } - } - - @Override - public boolean shouldUseRenderHelper(ItemRenderType type, ItemStack item, ItemRendererHelper helper) { - - return type == ItemRenderType.ENTITY && (helper == ItemRendererHelper.ENTITY_ROTATION || helper == ItemRendererHelper.ENTITY_BOBBING); - } - - @Override - public void renderItem(ItemRenderType type, ItemStack item, Object... data) { - - GL11.glPushMatrix(); - - GL11.glEnable(GL11.GL_CULL_FACE); - - Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.chemthrower_tex); - - switch(type) { - - case EQUIPPED_FIRST_PERSON: - - double s0 = 0.25D; - GL11.glRotated(25, 0, 0, 1); - GL11.glTranslated(1.0, 0.0, 0.0); - GL11.glRotated(170, 0, 1, 0); - GL11.glScaled(s0, s0, s0); - - break; - - case EQUIPPED: - - double scale = 0.25D; - GL11.glScaled(scale, scale, scale); - GL11.glRotated(100, 0, 1, 0); - GL11.glRotated(-10, 1, 0, 0); - GL11.glRotated(10, 0, 0, 1); - GL11.glTranslatef(-0.25F, -2.5F, 1.75F); - - break; - - case ENTITY: - - double s1 = 0.25D; - GL11.glScaled(s1, s1, s1); - - break; - - case INVENTORY: - - GL11.glEnable(GL11.GL_LIGHTING); - - double s = 1.5D; - GL11.glTranslated(9, 9, 0); - GL11.glRotated(180, 1, 0, 0); - GL11.glRotated(45, 0, 0, -1); - GL11.glScaled(s, s, -s); - - break; - - default: break; - } - - ItemGunChemthrower chem = (ItemGunChemthrower) item.getItem(); - - GL11.glShadeModel(GL11.GL_SMOOTH); - - ResourceManager.chemthrower.renderPart("Gun"); - ResourceManager.chemthrower.renderPart("Hose"); - ResourceManager.chemthrower.renderPart("Nozzle"); - - GL11.glTranslated(0, 0.875, 1.75); - double d = (double) chem.getMag(item) / (double) chem.mainConfig.ammoCap; - GL11.glRotated(135 - d * 270, 1, 0, 0); - GL11.glTranslated(0, -0.875, -1.75); - - ResourceManager.chemthrower.renderPart("Gauge"); - - GL11.glShadeModel(GL11.GL_FLAT); - - GL11.glPopMatrix(); - } -} diff --git a/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponCoilgun.java b/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponCoilgun.java deleted file mode 100644 index 4bca0361c..000000000 --- a/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponCoilgun.java +++ /dev/null @@ -1,100 +0,0 @@ -package com.hbm.render.item.weapon; - -import org.lwjgl.opengl.GL11; - -import com.hbm.main.ResourceManager; -import com.hbm.render.anim.HbmAnimations; - -import net.minecraft.client.Minecraft; -import net.minecraft.item.ItemStack; -import net.minecraftforge.client.IItemRenderer; - -public class ItemRenderWeaponCoilgun implements IItemRenderer { - - @Override - public boolean handleRenderType(ItemStack item, ItemRenderType type) { - switch(type) { - case EQUIPPED: - case EQUIPPED_FIRST_PERSON: - case ENTITY: - case INVENTORY: - return true; - default: return false; - } - } - - @Override - public boolean shouldUseRenderHelper(ItemRenderType type, ItemStack item, ItemRendererHelper helper) { - - return type == ItemRenderType.ENTITY && (helper == ItemRendererHelper.ENTITY_ROTATION || helper == ItemRendererHelper.ENTITY_BOBBING); - } - - @Override - public void renderItem(ItemRenderType type, ItemStack item, Object... data) { - - GL11.glPushMatrix(); - - GL11.glEnable(GL11.GL_CULL_FACE); - GL11.glEnable(GL11.GL_LIGHTING); - - Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.coilgun_tex); - - switch(type) { - - case EQUIPPED_FIRST_PERSON: - - double s0 = 0.25D; - GL11.glRotated(20, 0, 0, 1); - GL11.glTranslated(0.75, 0.3, -0.5); - GL11.glRotated(-10, 0, 1, 0); - GL11.glScaled(s0, s0, s0); - - double[] recoil = HbmAnimations.getRelevantTransformation("RECOIL"); - GL11.glTranslated(-1.5 - recoil[0] * 0.5, 0, 0); - GL11.glRotated(recoil[0] * 45, 0, 0, 1); - GL11.glTranslated(1.5, 0, 0); - - double[] reload = HbmAnimations.getRelevantTransformation("RELOAD"); - GL11.glTranslated(-2.5, 0, 0); - GL11.glRotated(reload[0] * -45, 0, 0, 1); - GL11.glTranslated(2.5, 0, 0); - - break; - - case EQUIPPED: - - double scale = 0.25D; - GL11.glScaled(scale, scale, scale); - GL11.glRotatef(15F, 0.0F, 0.0F, 1.0F); - GL11.glRotatef(-80, 0.0F, 1.0F, 0.0F); - GL11.glRotatef(-15F, 0.0F, 0.0F, 1.0F); - GL11.glTranslatef(1.25F, 0.5F, -1.75F); - - break; - - case ENTITY: - - double s1 = 0.2D; - GL11.glScaled(s1, s1, s1); - - break; - - case INVENTORY: - - double s = 3.5D; - GL11.glTranslated(6, 8, 0); - GL11.glRotated(-135, 0, 0, 1); - GL11.glScaled(s, s, -s); - - break; - - default: break; - } - - GL11.glShadeModel(GL11.GL_SMOOTH); - ResourceManager.coilgun.renderAll(); - GL11.glShadeModel(GL11.GL_FLAT); - - GL11.glPopMatrix(); - } -} diff --git a/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponCongo.java b/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponCongo.java deleted file mode 100644 index 07cac42d7..000000000 --- a/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponCongo.java +++ /dev/null @@ -1,164 +0,0 @@ -package com.hbm.render.item.weapon; - -import java.awt.Color; - -import org.lwjgl.opengl.GL11; - -import com.hbm.handler.BulletConfigSyncingUtil; -import com.hbm.handler.BulletConfiguration; -import com.hbm.items.weapon.ItemGunBase; -import com.hbm.main.ResourceManager; -import com.hbm.particle.SpentCasing; -import com.hbm.render.anim.HbmAnimations; - -import net.minecraft.client.Minecraft; -import net.minecraft.item.ItemStack; -import net.minecraftforge.client.IItemRenderer; - -public class ItemRenderWeaponCongo implements IItemRenderer { - - @Override - public boolean handleRenderType(ItemStack item, ItemRenderType type) { - switch(type) { - case EQUIPPED: - case EQUIPPED_FIRST_PERSON: - case ENTITY: - case INVENTORY: - return true; - default: return false; - } - } - - @Override - public boolean shouldUseRenderHelper(ItemRenderType type, ItemStack item, ItemRendererHelper helper) { - - return type == ItemRenderType.ENTITY && (helper == ItemRendererHelper.ENTITY_ROTATION || helper == ItemRendererHelper.ENTITY_BOBBING); - } - - @Override - public void renderItem(ItemRenderType type, ItemStack item, Object... data) { - - GL11.glPushMatrix(); - - GL11.glShadeModel(GL11.GL_SMOOTH); - - Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.congolake_tex); - - switch(type) { - - case EQUIPPED_FIRST_PERSON: - - double s0 = 0.25D; - GL11.glRotated(20, 0, 0, 1); - GL11.glTranslated(0.5, 0.0, -0.5); - GL11.glRotated(-10, 0, 1, 0); - GL11.glRotated(90, 0, 1, 0); - GL11.glScaled(s0, s0, s0); - - HbmAnimations.applyRelevantTransformation("Gun"); - ResourceManager.congolake.renderPart("Gun"); - - - GL11.glPushMatrix(); - { - HbmAnimations.applyRelevantTransformation("Pump"); - ResourceManager.congolake.renderPart("Pump"); - } - GL11.glPopMatrix(); - - - GL11.glPushMatrix(); - { - HbmAnimations.applyRelevantTransformation("Sight"); - ResourceManager.congolake.renderPart("Sight"); - } - GL11.glPopMatrix(); - - - GL11.glPushMatrix(); - { - HbmAnimations.applyRelevantTransformation("Loop"); - ResourceManager.congolake.renderPart("Loop"); - } - GL11.glPopMatrix(); - - - GL11.glPushMatrix(); - { - HbmAnimations.applyRelevantTransformation("GuardOuter"); - ResourceManager.congolake.renderPart("GuardOuter"); - - GL11.glPushMatrix(); - { - HbmAnimations.applyRelevantTransformation("GuardInner"); - ResourceManager.congolake.renderPart("GuardInner"); - } - GL11.glPopMatrix(); - } - GL11.glPopMatrix(); - - - GL11.glPushMatrix(); - { - Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.casings_tex); - - HbmAnimations.applyRelevantTransformation("Shell"); - - ItemGunBase gun = (ItemGunBase)item.getItem(); - BulletConfiguration bullet = BulletConfigSyncingUtil.pullConfig(gun.mainConfig.config.get(ItemGunBase.getMagType(item))); - int[] colors = bullet.spentCasing != null ? bullet.spentCasing.getColors() : new int[] { SpentCasing.COLOR_CASE_40MM }; - - Color shellColor = new Color(colors[0]); - GL11.glColor3f(shellColor.getRed() / 255F, shellColor.getGreen() / 255F, shellColor.getBlue() / 255F); - ResourceManager.congolake.renderPart("Shell"); - - Color shellForeColor = new Color(colors.length > 1 ? colors[1] : colors[0]); - GL11.glColor3f(shellForeColor.getRed() / 255F, shellForeColor.getGreen() / 255F, shellForeColor.getBlue() / 255F); - ResourceManager.congolake.renderPart("ShellFore"); - - GL11.glColor3f(1F, 1F, 1F); - } - GL11.glPopMatrix(); - - break; - - case EQUIPPED: - - double scale = 0.35D; - GL11.glScaled(scale, scale, scale); - GL11.glRotatef(15F, 1.0F, 0.0F, 0.0F); - GL11.glRotatef(15F, 0.0F, 0.0F, 1.0F); - GL11.glRotatef(15, 0.0F, 1.0F, 0.0F); - GL11.glTranslatef(1.25F, -1F, 1.5F); - - break; - - case ENTITY: - - double s1 = 0.2D; - GL11.glScaled(s1, s1, s1); - - break; - - case INVENTORY: - - double s = 2D; - GL11.glTranslated(6, 9, 0); - GL11.glRotated(-135, 0, 0, 1); - GL11.glRotated(-90, 0, 1, 0); - GL11.glScaled(s, s, -s); - - break; - - default: break; - } - - if(type != ItemRenderType.EQUIPPED_FIRST_PERSON) { - ResourceManager.congolake.renderAll(); - } - - GL11.glShadeModel(GL11.GL_FLAT); - - GL11.glPopMatrix(); - } -} diff --git a/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponLilMac.java b/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponLilMac.java deleted file mode 100644 index 9417e7d8a..000000000 --- a/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponLilMac.java +++ /dev/null @@ -1,256 +0,0 @@ -package com.hbm.render.item.weapon; - -import org.lwjgl.opengl.GL11; - -import com.hbm.items.ModItems; -import com.hbm.items.weapon.ItemGunPip; -import com.hbm.lib.RefStrings; -import com.hbm.main.MainRegistry; -import com.hbm.main.ResourceManager; -import com.hbm.render.anim.HbmAnimations; - -import net.minecraft.client.Minecraft; -import net.minecraft.client.renderer.Tessellator; -import net.minecraft.item.ItemStack; -import net.minecraft.util.ResourceLocation; -import net.minecraftforge.client.IItemRenderer; - -public class ItemRenderWeaponLilMac implements IItemRenderer { - - public static final ResourceLocation lilmac_plume = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/lilmac_plume.png"); - - @Override - public boolean handleRenderType(ItemStack item, ItemRenderType type) { - switch(type) { - case EQUIPPED: - case EQUIPPED_FIRST_PERSON: - case ENTITY: - case INVENTORY: - return true; - default: return false; - } - } - - @Override - public boolean shouldUseRenderHelper(ItemRenderType type, ItemStack item, ItemRendererHelper helper) { - return type == ItemRenderType.ENTITY && (helper == ItemRendererHelper.ENTITY_ROTATION || helper == ItemRendererHelper.ENTITY_BOBBING); - } - - @Override - public void renderItem(ItemRenderType type, ItemStack item, Object... data) { - - //prevent rendering when using scope - if(item.getItem() == ModItems.gun_revolver_pip && type == ItemRenderType.EQUIPPED_FIRST_PERSON && MainRegistry.proxy.me().isSneaking()) return; - - GL11.glPushMatrix(); - - switch(type) { - - case EQUIPPED_FIRST_PERSON: - - double s0 = 0.1D; - GL11.glRotated(25, 0, 0, 1); - GL11.glTranslated(1.0, 0.25, -0.25); - GL11.glRotated(170, 0, 1, 0); - GL11.glScaled(s0, s0, s0); - double width = 0.5D; - - double[] recoil = HbmAnimations.getRelevantTransformation("RECOIL"); - double[] reloadLift = HbmAnimations.getRelevantTransformation("RELOAD_LIFT"); - double[] reloadJolt = HbmAnimations.getRelevantTransformation("RELOAD_JOLT"); - double[] equipSpin = HbmAnimations.getRelevantTransformation("ROTATE"); - GL11.glTranslated(2, 0, 0); - GL11.glRotated(equipSpin[0], 0, 0, 1); - GL11.glTranslated(-2, 0, 0); - - GL11.glShadeModel(GL11.GL_SMOOTH); - - GL11.glPushMatrix(); - Tessellator tess = Tessellator.instance; - - GL11.glDisable(GL11.GL_CULL_FACE); - GL11.glEnable(GL11.GL_BLEND); - - GL11.glDisable(GL11.GL_TEXTURE_2D); - GL11.glAlphaFunc(GL11.GL_GREATER, 0F); - GL11.glTranslated(-10, 2.25, 0); - GL11.glTranslated(-recoil[2] * 3.5, -recoil[2] * 1.375, 0); - - if(ItemGunPip.smokeNodes.size() > 1 && equipSpin[0] == 0) { - - tess.startDrawingQuads(); - tess.setNormal(0F, 1F, 0F); - - for(int i = 0; i < ItemGunPip.smokeNodes.size() - 1; i++) { - double[] node = ItemGunPip.smokeNodes.get(i); - double[] past = ItemGunPip.smokeNodes.get(i + 1); - - tess.setColorRGBA_F(1F, 1F, 1F, (float) node[3]); - tess.addVertex(node[0], node[1], node[2]); - tess.setColorRGBA_F(1F, 1F, 1F, 0F); - tess.addVertex(node[0], node[1], node[2] + width); - tess.setColorRGBA_F(1F, 1F, 1F, 0F); - tess.addVertex(past[0], past[1], past[2] + width); - tess.setColorRGBA_F(1F, 1F, 1F, (float) past[3]); - tess.addVertex(past[0], past[1], past[2]); - - tess.setColorRGBA_F(1F, 1F, 1F, (float) node[3]); - tess.addVertex(node[0], node[1], node[2]); - tess.setColorRGBA_F(1F, 1F, 1F, 0F); - tess.addVertex(node[0], node[1], node[2] - width); - tess.setColorRGBA_F(1F, 1F, 1F, 0F); - tess.addVertex(past[0], past[1], past[2] - width); - tess.setColorRGBA_F(1F, 1F, 1F, (float) past[3]); - tess.addVertex(past[0], past[1], past[2]); - } - GL11.glDepthMask(false); - tess.draw(); - GL11.glDepthMask(true); - } - - GL11.glEnable(GL11.GL_TEXTURE_2D); - GL11.glDisable(GL11.GL_BLEND); - GL11.glAlphaFunc(GL11.GL_GEQUAL, 0.1F); - GL11.glEnable(GL11.GL_CULL_FACE); - - GL11.glPopMatrix(); - - GL11.glTranslated(0, reloadLift[0] / -22D, 0); - - GL11.glTranslated(recoil[0], recoil[1], recoil[2]); - GL11.glRotated(recoil[2] * 10, 0, 0, 1); - GL11.glRotated(reloadLift[0], 0, 0, 1); - GL11.glTranslated(reloadJolt[0], 0, 0); - - double[] reloadTilt = HbmAnimations.getRelevantTransformation("RELAOD_TILT"); - GL11.glRotated(reloadTilt[0], 1, 0, 0); - - Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.lilmac_scope_tex); - ResourceManager.lilmac.renderPart("Scope"); - - Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.lilmac_tex); - ResourceManager.lilmac.renderPart("Gun"); - - double[] cylinderFlip = HbmAnimations.getRelevantTransformation("RELOAD_CYLINDER"); - GL11.glPushMatrix(); /// DRUM PUSH /// - GL11.glRotated(cylinderFlip[0], 1, 0, 0); - ResourceManager.lilmac.renderPart("Pivot"); - GL11.glTranslated(0, 1.75, 0); - GL11.glRotated(HbmAnimations.getRelevantTransformation("DRUM")[2] * -60, 1, 0, 0); - GL11.glTranslated(0, -1.75, 0); - ResourceManager.lilmac.renderPart("Cylinder"); - double[] reloadBullets = HbmAnimations.getRelevantTransformation("RELOAD_BULLETS"); - GL11.glTranslated(reloadBullets[0], reloadBullets[1], reloadBullets[2]); - if(HbmAnimations.getRelevantTransformation("RELOAD_BULLETS_CON")[0] != 1) - ResourceManager.lilmac.renderPart("Bullets"); - ResourceManager.lilmac.renderPart("Casings"); - GL11.glPopMatrix(); /// DRUM POP /// - - GL11.glPushMatrix(); /// HAMMER /// - GL11.glTranslated(4, 1.25, 0); - GL11.glRotated(-30 + 30 * HbmAnimations.getRelevantTransformation("HAMMER")[2], 0, 0, 1); - GL11.glTranslated(-4, -1.25, 0); - ResourceManager.lilmac.renderPart("Hammer"); - GL11.glPopMatrix(); - - GL11.glShadeModel(GL11.GL_FLAT); - - int flash = 75; - if(System.currentTimeMillis() - ItemGunPip.lastShot < flash) { - GL11.glEnable(GL11.GL_BLEND); - GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE); - GL11.glPushMatrix(); - GL11.glTranslated(0.125, 2.25, 0); - - double fire = (System.currentTimeMillis() - ItemGunPip.lastShot) / (double) flash; - - double height = 4 * fire; - double length = 15 * fire; - double lift = 3 * fire; - double offset = 1 * fire; - double lengthOffset = 0.125; - Minecraft.getMinecraft().renderEngine.bindTexture(lilmac_plume); - tess.startDrawingQuads(); - tess.setNormal(0F, 1F, 0F); - tess.setColorRGBA_F(1F, 1F, 1F, 1F); - - tess.addVertexWithUV(0, -height, -offset, 1, 1); - tess.addVertexWithUV(0, height, -offset, 0, 1); - tess.addVertexWithUV(0, height + lift, length - offset, 0 ,0); - tess.addVertexWithUV(0, -height + lift, length - offset, 1, 0); - - tess.addVertexWithUV(0, height, offset, 0, 1); - tess.addVertexWithUV(0, -height, offset, 1, 1); - tess.addVertexWithUV(0, -height + lift, -length + offset, 1, 0); - tess.addVertexWithUV(0, height + lift, -length + offset, 0 ,0); - - tess.addVertexWithUV(0, -height, -offset, 1, 1); - tess.addVertexWithUV(0, height, -offset, 0, 1); - tess.addVertexWithUV(lengthOffset, height, length - offset, 0 ,0); - tess.addVertexWithUV(lengthOffset, -height, length - offset, 1, 0); - - tess.addVertexWithUV(0, height, offset, 0, 1); - tess.addVertexWithUV(0, -height, offset, 1, 1); - tess.addVertexWithUV(lengthOffset, -height, -length + offset, 1, 0); - tess.addVertexWithUV(lengthOffset, height, -length + offset, 0 ,0); - - tess.draw(); - GL11.glPopMatrix(); - GL11.glDisable(GL11.GL_BLEND); - } - - break; - - case EQUIPPED: - - double scale = 0.1D; - GL11.glScaled(scale, scale, scale); - GL11.glRotatef(15F, 0.0F, 0.0F, 1.0F); - GL11.glRotatef(100, 0.0F, 1.0F, 0.0F); - GL11.glRotatef(15F, 0.0F, 0.0F, 1.0F); - GL11.glTranslatef(-3F, 1F, 4F); - - break; - - case ENTITY: - - double s1 = 0.075D; - GL11.glScaled(s1, s1, s1); - GL11.glTranslatef(0F, 1F, 0F); - - break; - - case INVENTORY: - - GL11.glEnable(GL11.GL_LIGHTING); - GL11.glAlphaFunc(GL11.GL_GREATER, 0F); - GL11.glEnable(GL11.GL_ALPHA_TEST); - - double s = 0.8D; - GL11.glTranslated(8, 8, 0); - GL11.glRotated(180, 0, 1, 0); - GL11.glRotated(135, 0, 0, 1); - GL11.glScaled(s, s, -s); - - break; - - default: break; - } - - if(type != ItemRenderType.EQUIPPED_FIRST_PERSON) { - GL11.glShadeModel(GL11.GL_SMOOTH); - Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.lilmac_scope_tex); - ResourceManager.lilmac.renderPart("Scope"); - Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.lilmac_tex); - ResourceManager.lilmac.renderPart("Gun"); - ResourceManager.lilmac.renderPart("Cylinder"); - ResourceManager.lilmac.renderPart("Bullets"); - ResourceManager.lilmac.renderPart("Casings"); - ResourceManager.lilmac.renderPart("Pivot"); - ResourceManager.lilmac.renderPart("Hammer"); - GL11.glShadeModel(GL11.GL_FLAT); - } - - GL11.glPopMatrix(); - } -} diff --git a/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponQuadro.java b/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponQuadro.java deleted file mode 100644 index ecfa3056c..000000000 --- a/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponQuadro.java +++ /dev/null @@ -1,135 +0,0 @@ -package com.hbm.render.item.weapon; - -import org.lwjgl.opengl.GL11; - -import com.hbm.items.ModItems; -import com.hbm.items.weapon.ItemGunBase; -import com.hbm.main.ResourceManager; -import com.hbm.render.anim.HbmAnimations; - -import net.minecraft.client.Minecraft; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.ItemStack; -import net.minecraftforge.client.IItemRenderer; - -public class ItemRenderWeaponQuadro implements IItemRenderer { - - public ItemRenderWeaponQuadro() { } - - @Override - public boolean handleRenderType(ItemStack item, ItemRenderType type) { - switch(type) { - case EQUIPPED: - case EQUIPPED_FIRST_PERSON: - case ENTITY: - case INVENTORY: - return true; - default: return false; - } - } - - @Override - public boolean shouldUseRenderHelper(ItemRenderType type, ItemStack item, ItemRendererHelper helper) { - - return type == ItemRenderType.ENTITY && (helper == ItemRendererHelper.ENTITY_ROTATION || helper == ItemRendererHelper.ENTITY_BOBBING); - } - - @Override - public void renderItem(ItemRenderType type, ItemStack item, Object... data) { - - GL11.glPushMatrix(); - GL11.glDisable(GL11.GL_CULL_FACE); - - EntityPlayer player = Minecraft.getMinecraft().thePlayer; - - switch(type) { - - case EQUIPPED_FIRST_PERSON: - - if(item.getItem() == ModItems.gun_quadro) { - GL11.glTranslatef(0.75F, 0.0F, -0.15F); - GL11.glRotatef(90F, 0.0F, 1.0F, 0.0F); - GL11.glRotatef(-25F, 1.0F, 0.0F, 0.0F); - GL11.glRotatef(-10F, 0.0F, 1.0F, 0.0F); - GL11.glScaled(0.5, 0.5, 0.5); - - if(player.isSneaking()) { - GL11.glRotatef(5F, 0.0F, 1.0F, 0.0F); - GL11.glTranslatef(1.0F, 0.5F, 0.3F); - } - - double[] recoil = HbmAnimations.getRelevantTransformation("QUADRO_RECOIL"); - GL11.glTranslated(0, 0, recoil[2]); - - double[] reload = HbmAnimations.getRelevantTransformation("QUADRO_RELOAD_ROTATE"); - GL11.glRotated(reload[2], 1, 0, 0); - } - - break; - - case EQUIPPED: - - if(item.getItem() == ModItems.gun_quadro) { - GL11.glRotatef(20F, 1.0F, 0.0F, 1.0F); - GL11.glRotatef(10F, 0.0F, 1.0F, 0.0F); - GL11.glTranslatef(0.4F, -0.35F, -0.4F); - GL11.glScaled(0.75, 0.75, 0.75); - } - - break; - - case ENTITY: - - if(item.getItem() == ModItems.gun_quadro) { - GL11.glRotatef(-90F, 0.0F, 1.0F, 0.0F); - GL11.glTranslatef(0.0F, 0.0F, 0.0F); - GL11.glScaled(0.75, 0.75, 0.75); - } - - break; - - case INVENTORY: - - GL11.glEnable(GL11.GL_LIGHTING); - - if(item.getItem() == ModItems.gun_quadro) { - GL11.glScaled(4.5, 4.5, -4.5); - GL11.glTranslatef(1.0F, 2.5F, 0.0F); - GL11.glRotatef(180F, 1.0F, 0.0F, 0.0F); - GL11.glRotatef(-90F, 0.0F, 1.0F, 0.0F); - GL11.glRotatef(-45F, 1.0F, 0.0F, 0.0F); - } - - break; - - default: break; - } - - if(item.getItem() == ModItems.gun_quadro) { - GL11.glShadeModel(GL11.GL_SMOOTH); - Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.quadro_tex); - ResourceManager.quadro.renderPart("Launcher"); - - if(ItemGunBase.getMag(item) > 0 || ItemGunBase.getIsReloading(item) && type != ItemRenderType.INVENTORY) { - GL11.glPushMatrix(); - - GL11.glTranslated(0, -1, 0); - - double[] push = HbmAnimations.getRelevantTransformation("QUADRO_RELOAD_PUSH"); - GL11.glTranslated(0, 3, 0); - GL11.glRotated(push[1] * 30, 1, 0, 0); - GL11.glTranslated(0, -3, 0); - GL11.glTranslated(0, 0, push[0] * 3); - - Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.quadro_rocket_tex); - ResourceManager.quadro.renderPart("Rockets"); - GL11.glPopMatrix(); - } - - GL11.glShadeModel(GL11.GL_FLAT); - } - - GL11.glEnable(GL11.GL_CULL_FACE); - GL11.glPopMatrix(); - } -} diff --git a/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponSpas12.java b/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponSpas12.java deleted file mode 100644 index 4fff46dd0..000000000 --- a/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponSpas12.java +++ /dev/null @@ -1,131 +0,0 @@ -package com.hbm.render.item.weapon; - -import java.awt.Color; - -import org.lwjgl.opengl.GL11; - -import com.hbm.handler.BulletConfigSyncingUtil; -import com.hbm.handler.BulletConfiguration; -import com.hbm.items.weapon.ItemGunBase; -import com.hbm.main.ResourceManager; -import com.hbm.render.anim.HbmAnimations; - -import net.minecraft.client.Minecraft; -import net.minecraft.item.ItemStack; -import net.minecraftforge.client.IItemRenderer; - -public class ItemRenderWeaponSpas12 implements IItemRenderer { - - public ItemRenderWeaponSpas12() { } - - @Override - public boolean handleRenderType(ItemStack item, ItemRenderType type) { - switch(type) { - case EQUIPPED: - case EQUIPPED_FIRST_PERSON: - case ENTITY: - case INVENTORY: - return true; - default: return false; - } - } - - @Override - public boolean shouldUseRenderHelper(ItemRenderType type, ItemStack item, ItemRendererHelper helper) { - - return type == ItemRenderType.ENTITY && (helper == ItemRendererHelper.ENTITY_ROTATION || helper == ItemRendererHelper.ENTITY_BOBBING); - } - - @Override - public void renderItem(ItemRenderType type, ItemStack item, Object... data) { - - GL11.glPushMatrix(); - GL11.glEnable(GL11.GL_CULL_FACE); - GL11.glShadeModel(GL11.GL_SMOOTH); - - Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.spas_12_tex); - - switch(type) { - - case EQUIPPED_FIRST_PERSON: - - double s0 = 0.5D; - GL11.glRotated(25, 0, 0, 1); - GL11.glTranslated(0, -0.8, 0.1); - GL11.glRotated(-100, 0, 1, 0); - GL11.glScaled(s0, s0, s0); - - HbmAnimations.applyRelevantTransformation("MainBody"); - ResourceManager.spas_12.renderPart("MainBody"); - - GL11.glPushMatrix(); - HbmAnimations.applyRelevantTransformation("PumpGrip"); - ResourceManager.spas_12.renderPart("PumpGrip"); - GL11.glPopMatrix(); - - - GL11.glPushMatrix(); - Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.casings_tex); - - HbmAnimations.applyRelevantTransformation("Shell"); - - ItemGunBase gun = (ItemGunBase)item.getItem(); - BulletConfiguration bullet = BulletConfigSyncingUtil.pullConfig(gun.mainConfig.config.get(ItemGunBase.getMagType(item))); - int[] colors = bullet.spentCasing.getColors(); - - Color shellColor = new Color(colors[1]); - GL11.glColor3f(shellColor.getRed() / 255F, shellColor.getGreen() / 255F, shellColor.getBlue() / 255F); - ResourceManager.spas_12.renderPart("Shell"); - - Color shellForeColor = new Color(colors[0]); - GL11.glColor3f(shellForeColor.getRed() / 255F, shellForeColor.getGreen() / 255F, shellForeColor.getBlue() / 255F); - ResourceManager.spas_12.renderPart("ShellFore"); - - GL11.glColor3f(1F, 1F, 1F); - GL11.glPopMatrix(); - - break; - - case EQUIPPED: - - double scale = 0.25D; - GL11.glScaled(scale, scale, scale); - GL11.glRotatef(20F, 0.0F, 0.0F, 1.0F); - GL11.glRotatef(190, 0.0F, 1.0F, 0.0F); - GL11.glRotatef(-15F, 1.0F, 0.0F, 0.0F); - GL11.glTranslatef(-2F, -1F, 2F); - - ResourceManager.spas_12.renderAll(); - - break; - - case ENTITY: - - double s1 = 0.25D; - GL11.glScaled(s1, s1, s1); - GL11.glTranslated(0, 0, 4); - - ResourceManager.spas_12.renderAll(); - - break; - - case INVENTORY: - - GL11.glEnable(GL11.GL_LIGHTING); - - double s = 1.6D; - GL11.glTranslated(12, 13.5, 0); - GL11.glRotated(-90, 0, 1, 0); - GL11.glRotated(-135, 1, 0, 0); - GL11.glScaled(s, s, s); - - ResourceManager.spas_12.renderAll(); - - break; - - default: break; - } - - GL11.glPopMatrix(); - } -} diff --git a/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponTau.java b/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponTau.java deleted file mode 100644 index b46f19474..000000000 --- a/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponTau.java +++ /dev/null @@ -1,116 +0,0 @@ -package com.hbm.render.item.weapon; - -import org.lwjgl.opengl.GL11; - -import com.hbm.items.weapon.ItemGunGauss; -import com.hbm.main.ResourceManager; -import com.hbm.render.anim.HbmAnimations; - -import net.minecraft.client.Minecraft; -import net.minecraft.item.ItemStack; -import net.minecraftforge.client.IItemRenderer; - -public class ItemRenderWeaponTau implements IItemRenderer { - - @Override - public boolean handleRenderType(ItemStack item, ItemRenderType type) { - switch(type) { - case EQUIPPED: - case EQUIPPED_FIRST_PERSON: - case ENTITY: - case INVENTORY: - return true; - default: return false; - } - } - - @Override - public boolean shouldUseRenderHelper(ItemRenderType type, ItemStack item, ItemRendererHelper helper) { - - return type == ItemRenderType.ENTITY && (helper == ItemRendererHelper.ENTITY_ROTATION || helper == ItemRendererHelper.ENTITY_BOBBING); - } - - @Override - public void renderItem(ItemRenderType type, ItemStack item, Object... data) { - - GL11.glPushMatrix(); - GL11.glDisable(GL11.GL_CULL_FACE); - GL11.glShadeModel(GL11.GL_SMOOTH); - - Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.tau_tex); - - switch(type) { - - case EQUIPPED_FIRST_PERSON: - - double s0 = 0.35D; - GL11.glRotated(25, 0, 0, 1); - GL11.glTranslated(1.5, 0, 0.1); - GL11.glRotated(80, 0, 1, 0); - GL11.glScaled(s0, s0, s0); - - double[] recoil = HbmAnimations.getRelevantTransformation("RECOIL"); - GL11.glTranslated(0, 0, recoil[0] * -1); - GL11.glTranslated(0, 0, -3); - GL11.glRotated(recoil[0] * -5, 1, 0, 0); - GL11.glTranslated(0, 0, 3); - - ResourceManager.tau.renderPart("Body"); - - if(ItemGunGauss.getCharge(item) > 0) { - GL11.glTranslated(0, -0.2, 0); - GL11.glRotated(System.currentTimeMillis() % 360D, 0, 0, 1); - GL11.glTranslated(0, 0.2, 0); - } - - ResourceManager.tau.renderPart("Rotor"); - - break; - - case EQUIPPED: - - double scale = 0.25D; - GL11.glScaled(scale, scale, scale); - GL11.glRotatef(20F, 0.0F, 0.0F, 1.0F); - GL11.glRotatef(10, 0.0F, 1.0F, 0.0F); - GL11.glRotatef(15F, 1.0F, 0.0F, 0.0F); - GL11.glTranslatef(2F, 1F, 3F); - - ResourceManager.tau.renderAll(); - - break; - - case ENTITY: - - double s1 = 0.25D; - GL11.glScaled(s1, s1, s1); - GL11.glTranslated(0, 1, 0); - - ResourceManager.tau.renderAll(); - - break; - - case INVENTORY: - - GL11.glEnable(GL11.GL_LIGHTING); - - double s = 1.6D; - GL11.glTranslated(8, 7, 0); - GL11.glRotated(-90, 0, 1, 0); - GL11.glRotated(-135, 1, 0, 0); - GL11.glScaled(s, s, -s); - - ResourceManager.tau.renderAll(); - - break; - - default: break; - } - - GL11.glShadeModel(GL11.GL_SMOOTH); - GL11.glShadeModel(GL11.GL_FLAT); - GL11.glEnable(GL11.GL_CULL_FACE); - - GL11.glPopMatrix(); - } -} diff --git a/src/main/java/com/hbm/tileentity/turret/TileEntityTurretBaseNT.java b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretBaseNT.java index 6cea0933e..9d81ff0a5 100644 --- a/src/main/java/com/hbm/tileentity/turret/TileEntityTurretBaseNT.java +++ b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretBaseNT.java @@ -9,10 +9,8 @@ import com.hbm.blocks.BlockDummyable; import com.hbm.entity.logic.EntityBomber; import com.hbm.entity.missile.EntityMissileBaseNT; import com.hbm.entity.missile.EntityMissileCustom; -import com.hbm.entity.projectile.EntityBulletBaseNT; +import com.hbm.entity.projectile.EntityBulletBaseMK4; import com.hbm.entity.train.EntityRailCarBase; -import com.hbm.handler.BulletConfigSyncingUtil; -import com.hbm.handler.BulletConfiguration; import com.hbm.handler.CasingEjector; import com.hbm.handler.CompatHandler; import com.hbm.interfaces.IControlReceiver; @@ -20,6 +18,7 @@ import com.hbm.inventory.RecipesCommon.ComparableStack; import com.hbm.inventory.container.ContainerTurretBase; import com.hbm.items.ModItems; import com.hbm.items.machine.ItemTurretBiometry; +import com.hbm.items.weapon.sedna.BulletConfig; import com.hbm.lib.Library; import com.hbm.packet.PacketDispatcher; import com.hbm.packet.toclient.AuxParticlePacketNT; @@ -331,7 +330,7 @@ public abstract class TileEntityTurretBaseNT extends TileEntityMachineBase imple public boolean usesCasings() { return false; } public int casingDelay() { return 0; } - public BulletConfiguration getFirstConfigLoaded() { + public BulletConfig getFirstConfigLoaded() { List list = getAmmoList(); @@ -346,10 +345,8 @@ public abstract class TileEntityTurretBaseNT extends TileEntityMachineBase imple for(Integer c : list) { //we can afford all this extra iteration trash on the count that a turret has at most like 4 bullet configs - BulletConfiguration conf = BulletConfigSyncingUtil.pullConfig(c); - - if(conf.ammo != null && conf.ammo.matchesRecipe(slots[i], true)) - return conf; + BulletConfig conf = BulletConfig.configs.get(c); + if(conf.ammo != null && conf.ammo.matchesRecipe(slots[i], true)) return conf; } } } @@ -357,17 +354,15 @@ public abstract class TileEntityTurretBaseNT extends TileEntityMachineBase imple return null; } - public void spawnBullet(BulletConfiguration bullet) { + public void spawnBullet(BulletConfig bullet, float baseDamage) { Vec3 pos = this.getTurretPos(); Vec3 vec = Vec3.createVectorHelper(this.getBarrelLength(), 0, 0); vec.rotateAroundZ((float) -this.rotationPitch); vec.rotateAroundY((float) -(this.rotationYaw + Math.PI * 0.5)); - EntityBulletBaseNT proj = new EntityBulletBaseNT(worldObj, BulletConfigSyncingUtil.getKey(bullet)); - proj.setPositionAndRotation(pos.xCoord + vec.xCoord, pos.yCoord + vec.yCoord, pos.zCoord + vec.zCoord, 0.0F, 0.0F); - - proj.setThrowableHeading(vec.xCoord, vec.yCoord, vec.zCoord, bullet.velocity, bullet.spread); + EntityBulletBaseMK4 proj = new EntityBulletBaseMK4(worldObj, bullet, baseDamage, bullet.spread, (float) rotationYaw, (float) rotationPitch); + proj.setPositionAndRotation(pos.xCoord + vec.xCoord, pos.yCoord + vec.yCoord, pos.zCoord + vec.zCoord, proj.rotationYaw, proj.rotationPitch); worldObj.spawnEntityInWorld(proj); if(usesCasings()) { @@ -809,7 +804,7 @@ public abstract class TileEntityTurretBaseNT extends TileEntityMachineBase imple ammoStacks = new ArrayList(); for(Integer i : getAmmoList()) { - BulletConfiguration config = BulletConfigSyncingUtil.pullConfig(i); + BulletConfig config = BulletConfig.configs.get(i); if(config != null && config.ammo != null) { ammoStacks.add(config.ammo.toStack()); diff --git a/src/main/java/com/hbm/tileentity/turret/TileEntityTurretChekhov.java b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretChekhov.java index fd3a0f743..f7dd78176 100644 --- a/src/main/java/com/hbm/tileentity/turret/TileEntityTurretChekhov.java +++ b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretChekhov.java @@ -3,10 +3,10 @@ package com.hbm.tileentity.turret; import java.util.ArrayList; import java.util.List; -import com.hbm.handler.BulletConfigSyncingUtil; -import com.hbm.handler.BulletConfiguration; import com.hbm.handler.CasingEjector; import com.hbm.inventory.gui.GUITurretChekhov; +import com.hbm.items.weapon.sedna.BulletConfig; +import com.hbm.items.weapon.sedna.factory.XFactory50; import com.hbm.packet.PacketDispatcher; import com.hbm.packet.toclient.AuxParticlePacketNT; @@ -26,15 +26,11 @@ public class TileEntityTurretChekhov extends TileEntityTurretBaseNT { //also having a floaty `static` like this looks fun //idk if it's just me though static { - configs.add(BulletConfigSyncingUtil.BMG50_NORMAL); - configs.add(BulletConfigSyncingUtil.BMG50_INCENDIARY); - configs.add(BulletConfigSyncingUtil.BMG50_EXPLOSIVE); - configs.add(BulletConfigSyncingUtil.BMG50_AP); - configs.add(BulletConfigSyncingUtil.BMG50_DU); - configs.add(BulletConfigSyncingUtil.BMG50_STAR); - configs.add(BulletConfigSyncingUtil.BMG50_PHOSPHORUS); - configs.add(BulletConfigSyncingUtil.BMG50_SLEEK); - configs.add(BulletConfigSyncingUtil.CHL_BMG50); + configs.add(XFactory50.bmg50_sp.id); + configs.add(XFactory50.bmg50_fmj.id); + configs.add(XFactory50.bmg50_jhp.id); + configs.add(XFactory50.bmg50_ap.id); + configs.add(XFactory50.bmg50_du.id); } @Override @@ -76,11 +72,11 @@ public class TileEntityTurretChekhov extends TileEntityTurretBaseNT { if(timer > 20 && timer % getDelay() == 0) { - BulletConfiguration conf = this.getFirstConfigLoaded(); + BulletConfig conf = this.getFirstConfigLoaded(); if(conf != null) { - this.cachedCasingConfig = conf.spentCasing; - this.spawnBullet(conf); + this.cachedCasingConfig = conf.casing; + this.spawnBullet(conf, 10F); this.conusmeAmmo(conf.ammo); this.worldObj.playSoundEffect(xCoord, yCoord, zCoord, "hbm:turret.chekhov_fire", 2.0F, 1.0F); diff --git a/src/main/java/com/hbm/tileentity/turret/TileEntityTurretFriendly.java b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretFriendly.java index 8c3a96667..c4c5c122b 100644 --- a/src/main/java/com/hbm/tileentity/turret/TileEntityTurretFriendly.java +++ b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretFriendly.java @@ -3,9 +3,9 @@ package com.hbm.tileentity.turret; import java.util.ArrayList; import java.util.List; -import com.hbm.handler.BulletConfigSyncingUtil; import com.hbm.handler.CasingEjector; import com.hbm.inventory.gui.GUITurretFriendly; +import com.hbm.items.weapon.sedna.factory.XFactory556mm; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -17,11 +17,10 @@ public class TileEntityTurretFriendly extends TileEntityTurretChekhov { static List configs = new ArrayList(); static { - configs.add(BulletConfigSyncingUtil.R5_NORMAL); - configs.add(BulletConfigSyncingUtil.R5_EXPLOSIVE); - configs.add(BulletConfigSyncingUtil.R5_DU); - configs.add(BulletConfigSyncingUtil.R5_STAR); - configs.add(BulletConfigSyncingUtil.CHL_R5); + configs.add(XFactory556mm.r556_sp.id); + configs.add(XFactory556mm.r556_fmj.id); + configs.add(XFactory556mm.r556_jhp.id); + configs.add(XFactory556mm.r556_ap.id); } @Override diff --git a/src/main/java/com/hbm/tileentity/turret/TileEntityTurretHoward.java b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretHoward.java index 87e0414bd..1e69696fd 100644 --- a/src/main/java/com/hbm/tileentity/turret/TileEntityTurretHoward.java +++ b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretHoward.java @@ -4,11 +4,10 @@ import java.util.ArrayList; import java.util.List; import com.hbm.config.WeaponConfig; -import com.hbm.handler.BulletConfigSyncingUtil; -import com.hbm.handler.BulletConfiguration; import com.hbm.handler.CasingEjector; import com.hbm.handler.guncfg.GunDGKFactory; import com.hbm.inventory.gui.GUITurretHoward; +import com.hbm.items.weapon.sedna.BulletConfig; import com.hbm.lib.ModDamageSource; import com.hbm.packet.PacketDispatcher; import com.hbm.packet.toclient.AuxParticlePacketNT; @@ -25,10 +24,11 @@ import net.minecraft.world.World; public class TileEntityTurretHoward extends TileEntityTurretBaseNT { + static BulletConfig dgk_normal = new BulletConfig(); static List configs = new ArrayList(); static { - configs.add(BulletConfigSyncingUtil.DGK_NORMAL); + configs.add(dgk_normal.id); } @Override @@ -114,7 +114,7 @@ public class TileEntityTurretHoward extends TileEntityTurretBaseNT { } else { if(loaded <= 0) { - BulletConfiguration conf = this.getFirstConfigLoaded(); + BulletConfig conf = this.getFirstConfigLoaded(); if(conf != null) { this.conusmeAmmo(conf.ammo); diff --git a/src/main/java/com/hbm/tileentity/turret/TileEntityTurretJeremy.java b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretJeremy.java index 8c16ce6b4..5f57d1c6d 100644 --- a/src/main/java/com/hbm/tileentity/turret/TileEntityTurretJeremy.java +++ b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretJeremy.java @@ -3,12 +3,23 @@ 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.explosion.vanillant.ExplosionVNT; +import com.hbm.explosion.vanillant.standard.BlockAllocatorStandard; +import com.hbm.explosion.vanillant.standard.BlockProcessorStandard; +import com.hbm.explosion.vanillant.standard.EntityProcessorCrossSmooth; +import com.hbm.explosion.vanillant.standard.ExplosionEffectWeapon; +import com.hbm.explosion.vanillant.standard.PlayerProcessorStandard; import com.hbm.handler.CasingEjector; import com.hbm.inventory.gui.GUITurretJeremy; +import com.hbm.items.ModItems; +import com.hbm.items.ItemAmmoEnums.Ammo240Shell; +import com.hbm.items.weapon.sedna.BulletConfig; +import com.hbm.items.weapon.sedna.factory.Lego; +import com.hbm.items.weapon.sedna.factory.XFactoryCatapult; import com.hbm.packet.PacketDispatcher; import com.hbm.packet.toclient.AuxParticlePacketNT; +import com.hbm.particle.SpentCasing; +import com.hbm.particle.SpentCasing.CasingType; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import cpw.mods.fml.relauncher.Side; @@ -20,14 +31,31 @@ import net.minecraft.world.World; public class TileEntityTurretJeremy extends TileEntityTurretBaseNT { + public static SpentCasing CASINNG240MM = new SpentCasing(CasingType.BOTTLENECK).setScale(7.5F).setBounceMotion(0.02F, 0.05F).setColor(SpentCasing.COLOR_CASE_BRASS).setupSmoke(1F, 0.5D, 60, 20); + public static BulletConfig shell_normal = new BulletConfig().setItem(ModItems.ammo_shell.stackFromEnum(Ammo240Shell.STOCK)).setDamage(1F).setCasing(CASINNG240MM).setOnImpact((bullet, mop) -> { + Lego.standardExplode(bullet, mop, 10F); bullet.setDead(); + }); + public static BulletConfig shell_explosive = new BulletConfig().setItem(ModItems.ammo_shell.stackFromEnum(Ammo240Shell.EXPLOSIVE)).setDamage(1.5F).setCasing(CASINNG240MM).setOnImpact((bullet, mop) -> { + ExplosionVNT vnt = new ExplosionVNT(bullet.worldObj, mop.hitVec.xCoord, mop.hitVec.yCoord, mop.hitVec.zCoord, 10F); + vnt.setBlockAllocator(new BlockAllocatorStandard()); + vnt.setBlockProcessor(new BlockProcessorStandard()); + vnt.setEntityProcessor(new EntityProcessorCrossSmooth(1, bullet.damage)); + vnt.setPlayerProcessor(new PlayerProcessorStandard()); + vnt.setSFX(new ExplosionEffectWeapon(10, 2.5F, 1F)); + vnt.explode(); + bullet.setDead(); + }); + public static BulletConfig shell_ap = new BulletConfig().setItem(ModItems.ammo_shell.stackFromEnum(Ammo240Shell.APFSDS_T)).setDamage(2F).setDoesPenetrate(true).setCasing(CASINNG240MM); + public static BulletConfig shell_du = new BulletConfig().setItem(ModItems.ammo_shell.stackFromEnum(Ammo240Shell.APFSDS_DU)).setDamage(2.5F).setDoesPenetrate(true).setDamageFalloutByPen(false).setCasing(CASINNG240MM); + public static BulletConfig shell_w9 = new BulletConfig().setItem(ModItems.ammo_shell.stackFromEnum(Ammo240Shell.W9)).setDamage(2.5F).setCasing(CASINNG240MM).setOnImpact(XFactoryCatapult.LAMBDA_NUKE_STANDARD); static List configs = new ArrayList(); static { - configs.add(BulletConfigSyncingUtil.SHELL_NORMAL); - configs.add(BulletConfigSyncingUtil.SHELL_EXPLOSIVE); - configs.add(BulletConfigSyncingUtil.SHELL_AP); - configs.add(BulletConfigSyncingUtil.SHELL_DU); - configs.add(BulletConfigSyncingUtil.SHELL_W9); + configs.add(shell_normal.id); + configs.add(shell_explosive.id); + configs.add(shell_ap.id); + configs.add(shell_du.id); + configs.add(shell_w9.id); } @Override @@ -87,11 +115,11 @@ public class TileEntityTurretJeremy extends TileEntityTurretBaseNT { if(timer % 40 == 0) { - BulletConfiguration conf = this.getFirstConfigLoaded(); + BulletConfig conf = this.getFirstConfigLoaded(); if(conf != null) { - this.cachedCasingConfig = conf.spentCasing; - this.spawnBullet(conf); + this.cachedCasingConfig = conf.casing; + this.spawnBullet(conf, 50F); this.conusmeAmmo(conf.ammo); this.worldObj.playSoundEffect(xCoord, yCoord, zCoord, "hbm:turret.jeremy_fire", 4.0F, 1.0F); Vec3 pos = this.getTurretPos(); diff --git a/src/main/java/com/hbm/tileentity/turret/TileEntityTurretRichard.java b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretRichard.java index 9a61f8a88..0b5944256 100644 --- a/src/main/java/com/hbm/tileentity/turret/TileEntityTurretRichard.java +++ b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretRichard.java @@ -3,9 +3,7 @@ package com.hbm.tileentity.turret; import java.util.ArrayList; import java.util.List; -import com.hbm.entity.projectile.EntityBulletBaseNT; -import com.hbm.handler.BulletConfigSyncingUtil; -import com.hbm.handler.BulletConfiguration; +import com.hbm.entity.projectile.EntityBulletBaseMK4; import com.hbm.inventory.RecipesCommon.ComparableStack; import com.hbm.inventory.gui.GUITurretRichard; import com.hbm.items.ItemAmmoEnums.AmmoRocket; @@ -14,6 +12,8 @@ import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import com.hbm.items.ModItems; +import com.hbm.items.weapon.sedna.BulletConfig; +import com.hbm.items.weapon.sedna.factory.XFactoryRocket; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.nbt.NBTTagCompound; @@ -25,18 +25,7 @@ public class TileEntityTurretRichard extends TileEntityTurretBaseNT { static List configs = new ArrayList(); static { - configs.add(BulletConfigSyncingUtil.ROCKET_NORMAL); - configs.add(BulletConfigSyncingUtil.ROCKET_HE); - configs.add(BulletConfigSyncingUtil.ROCKET_INCENDIARY); - configs.add(BulletConfigSyncingUtil.ROCKET_SHRAPNEL); - configs.add(BulletConfigSyncingUtil.ROCKET_EMP); - configs.add(BulletConfigSyncingUtil.ROCKET_GLARE); - configs.add(BulletConfigSyncingUtil.ROCKET_SLEEK); - configs.add(BulletConfigSyncingUtil.ROCKET_NUKE); - configs.add(BulletConfigSyncingUtil.ROCKET_CHAINSAW); - configs.add(BulletConfigSyncingUtil.ROCKET_TOXIC); - configs.add(BulletConfigSyncingUtil.ROCKET_PHOSPHORUS); - configs.add(BulletConfigSyncingUtil.ROCKET_CANISTER); + for(BulletConfig cfg : XFactoryRocket.rocket_ml) configs.add(cfg.id); } @Override @@ -129,10 +118,10 @@ public class TileEntityTurretRichard extends TileEntityTurretBaseNT { if(timer > 0 && timer % 10 == 0) { - BulletConfiguration conf = this.getFirstConfigLoaded(); + BulletConfig conf = this.getFirstConfigLoaded(); if(conf != null) { - this.spawnBullet(conf); + this.spawnBullet(conf, 30F); this.conusmeAmmo(conf.ammo); this.worldObj.playSoundEffect(xCoord, yCoord, zCoord, "hbm:turret.richard_fire", 2.0F, 1.0F); this.loaded--; @@ -147,17 +136,15 @@ public class TileEntityTurretRichard extends TileEntityTurretBaseNT { } @Override - public void spawnBullet(BulletConfiguration bullet) { + public void spawnBullet(BulletConfig bullet, float baseDamage) { Vec3 pos = this.getTurretPos(); Vec3 vec = Vec3.createVectorHelper(this.getBarrelLength(), 0, 0); vec.rotateAroundZ((float) -this.rotationPitch); vec.rotateAroundY((float) -(this.rotationYaw + Math.PI * 0.5)); - EntityBulletBaseNT proj = new EntityBulletBaseNT(worldObj, BulletConfigSyncingUtil.getKey(bullet)); - proj.setPositionAndRotation(pos.xCoord + vec.xCoord, pos.yCoord + vec.yCoord, pos.zCoord + vec.zCoord, 0.0F, 0.0F); - - proj.setThrowableHeading(vec.xCoord, vec.yCoord, vec.zCoord, bullet.velocity * 0.75F, bullet.spread); + EntityBulletBaseMK4 proj = new EntityBulletBaseMK4(worldObj, bullet, baseDamage, bullet.spread, (float) rotationYaw, (float) rotationPitch); + proj.setPositionAndRotation(pos.xCoord + vec.xCoord, pos.yCoord + vec.yCoord, pos.zCoord + vec.zCoord, proj.rotationYaw, proj.rotationPitch); worldObj.spawnEntityInWorld(proj); } diff --git a/src/main/java/com/hbm/tileentity/turret/TileEntityTurretSentry.java b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretSentry.java index 8a817c96a..ebaa3ad0d 100644 --- a/src/main/java/com/hbm/tileentity/turret/TileEntityTurretSentry.java +++ b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretSentry.java @@ -3,11 +3,11 @@ package com.hbm.tileentity.turret; import java.util.ArrayList; import java.util.List; -import com.hbm.handler.BulletConfigSyncingUtil; -import com.hbm.handler.BulletConfiguration; import com.hbm.handler.CasingEjector; import com.hbm.inventory.container.ContainerTurretBase; import com.hbm.inventory.gui.GUITurretSentry; +import com.hbm.items.weapon.sedna.BulletConfig; +import com.hbm.items.weapon.sedna.factory.XFactory9mm; import com.hbm.packet.PacketDispatcher; import com.hbm.packet.toclient.AuxParticlePacketNT; import com.hbm.tileentity.IGUIProvider; @@ -37,11 +37,10 @@ public class TileEntityTurretSentry extends TileEntityTurretBaseNT implements IG static List configs = new ArrayList(); static { - configs.add(BulletConfigSyncingUtil.R5_NORMAL); - configs.add(BulletConfigSyncingUtil.R5_EXPLOSIVE); - configs.add(BulletConfigSyncingUtil.R5_DU); - configs.add(BulletConfigSyncingUtil.R5_STAR); - configs.add(BulletConfigSyncingUtil.CHL_R5); + configs.add(XFactory9mm.p9_sp.id); + configs.add(XFactory9mm.p9_fmj.id); + configs.add(XFactory9mm.p9_jhp.id); + configs.add(XFactory9mm.p9_ap.id); } @Override @@ -161,11 +160,11 @@ public class TileEntityTurretSentry extends TileEntityTurretBaseNT implements IG if(timer % 10 == 0) { - BulletConfiguration conf = this.getFirstConfigLoaded(); + BulletConfig conf = this.getFirstConfigLoaded(); if(conf != null) { - this.cachedCasingConfig = conf.spentCasing; - this.spawnBullet(conf); + this.cachedCasingConfig = conf.casing; + this.spawnBullet(conf, 5F); this.conusmeAmmo(conf.ammo); this.worldObj.playSoundEffect(xCoord, yCoord, zCoord, "hbm:turret.sentry_fire", 2.0F, 1.0F); diff --git a/src/main/java/com/hbm/tileentity/turret/TileEntityTurretSentryDamaged.java b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretSentryDamaged.java index bc3dc51ff..5fa6c3ef0 100644 --- a/src/main/java/com/hbm/tileentity/turret/TileEntityTurretSentryDamaged.java +++ b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretSentryDamaged.java @@ -1,7 +1,7 @@ package com.hbm.tileentity.turret; -import com.hbm.handler.BulletConfigSyncingUtil; -import com.hbm.handler.BulletConfiguration; +import com.hbm.items.weapon.sedna.BulletConfig; +import com.hbm.items.weapon.sedna.factory.XFactory9mm; import com.hbm.packet.PacketDispatcher; import com.hbm.packet.toclient.AuxParticlePacketNT; @@ -55,7 +55,7 @@ public class TileEntityTurretSentryDamaged extends TileEntityTurretSentry { if(timer % 10 == 0) { - BulletConfiguration conf = BulletConfigSyncingUtil.pullConfig(BulletConfigSyncingUtil.R5_NORMAL); + BulletConfig conf = XFactory9mm.p9_fmj; if(conf != null) { @@ -63,11 +63,11 @@ public class TileEntityTurretSentryDamaged extends TileEntityTurretSentry { Vec3 vec = Vec3.createVectorHelper(0, 0, 0); Vec3 side = Vec3.createVectorHelper(0, 0, 0); - this.cachedCasingConfig = conf.spentCasing; + this.cachedCasingConfig = conf.casing; if(shotSide) { this.worldObj.playSoundEffect(xCoord, yCoord, zCoord, "hbm:turret.sentry_fire", 2.0F, 1.0F); - this.spawnBullet(conf); + this.spawnBullet(conf, 5F); vec = Vec3.createVectorHelper(this.getBarrelLength(), 0, 0); vec.rotateAroundZ((float) -this.rotationPitch); diff --git a/src/main/java/com/hbm/tileentity/turret/TileEntityTurretTauon.java b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretTauon.java index 038f189eb..9441252be 100644 --- a/src/main/java/com/hbm/tileentity/turret/TileEntityTurretTauon.java +++ b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretTauon.java @@ -3,9 +3,9 @@ package com.hbm.tileentity.turret; import java.util.ArrayList; import java.util.List; -import com.hbm.handler.BulletConfigSyncingUtil; -import com.hbm.handler.BulletConfiguration; import com.hbm.inventory.gui.GUITurretTauon; +import com.hbm.items.weapon.sedna.BulletConfig; +import com.hbm.items.weapon.sedna.factory.XFactoryAccelerator; import com.hbm.lib.ModDamageSource; import com.hbm.packet.PacketDispatcher; import com.hbm.packet.toclient.AuxParticlePacketNT; @@ -23,7 +23,7 @@ public class TileEntityTurretTauon extends TileEntityTurretBaseNT { static List configs = new ArrayList(); static { - configs.add(BulletConfigSyncingUtil.SPECIAL_GAUSS); + configs.add(XFactoryAccelerator.tau_uranium.id); } @Override @@ -123,7 +123,7 @@ public class TileEntityTurretTauon extends TileEntityTurretBaseNT { if(timer % 5 == 0) { - BulletConfiguration conf = this.getFirstConfigLoaded(); + BulletConfig conf = this.getFirstConfigLoaded(); if(conf != null && this.target != null) { this.target.attackEntityFrom(ModDamageSource.electricity, 30F + worldObj.rand.nextInt(11)); diff --git a/src/main/resources/assets/hbm/lang/de_DE.lang b/src/main/resources/assets/hbm/lang/de_DE.lang index 5cb0aba7c..2a4c6a22b 100644 --- a/src/main/resources/assets/hbm/lang/de_DE.lang +++ b/src/main/resources/assets/hbm/lang/de_DE.lang @@ -1161,6 +1161,7 @@ item.ammo_standard.bmg50_fmj.name=.50 BMG Patrone (Vollmantelgeschoss) item.ammo_standard.bmg50_jhp.name=.50 BMG Patrone (Hohlspitz) item.ammo_standard.bmg50_sp.name=.50 BMG Patrone (Teilmantelgeschoss) item.ammo_standard.capacitor.name=Kondensator +item.ammo_standard.capacitor_ir.name=Capacitor (niedrige Wellenlänge) item.ammo_standard.capacitor_overcharge.name=Kondensator (Überladung) item.ammo_standard.flame_balefire.name=Flammenwerferbrennstoff, Balefire item.ammo_standard.flame_diesel.name=Flammenwerferbrennstoff, Diesel diff --git a/src/main/resources/assets/hbm/lang/en_US.lang b/src/main/resources/assets/hbm/lang/en_US.lang index b6d8a1f6f..ecef71ce2 100644 --- a/src/main/resources/assets/hbm/lang/en_US.lang +++ b/src/main/resources/assets/hbm/lang/en_US.lang @@ -1884,6 +1884,7 @@ item.ammo_standard.bmg50_fmj.name=.50 BMG Round (Full Metal Jacket) item.ammo_standard.bmg50_jhp.name=.50 BMG Round (Jacketed Hollow Point) item.ammo_standard.bmg50_sp.name=.50 BMG Round (Soft Point) item.ammo_standard.capacitor.name=Capacitor +item.ammo_standard.capacitor_ir.name=Capacitor (Low Wavelength) item.ammo_standard.capacitor_overcharge.name=Capacitor (Overcharge) item.ammo_standard.flame_balefire.name=Flamer Fuel, Balefire item.ammo_standard.flame_diesel.name=Flamer Fuel, Diesel From ddaa086354e355454d2608ca759c2f8d46eb0c48 Mon Sep 17 00:00:00 2001 From: Boblet Date: Fri, 6 Dec 2024 15:19:19 +0100 Subject: [PATCH 18/24] armor desc overhaul --- changelog | 1 + .../java/com/hbm/items/armor/ArmorDNT.java | 4 - .../java/com/hbm/items/armor/ArmorFSB.java | 62 ++++----- .../com/hbm/main/ModEventHandlerClient.java | 4 + .../turret/TileEntityTurretRichard.java | 7 +- .../com/hbm/util/DamageResistanceHandler.java | 123 +++++++++++++----- 6 files changed, 125 insertions(+), 76 deletions(-) diff --git a/changelog b/changelog index b7ac7a488..631702f59 100644 --- a/changelog +++ b/changelog @@ -59,6 +59,7 @@ * Adjusted damage values to many swords and some tools * Unsats and aromatics can now be filled into gas canisters * Basalt asbestos ore no longer creates asbestos particles every block update, meaning volcanoes no longer cause massive delays with chunk rendering due to constant block changes +* Rockets shot by the rocket turret are no longer subject to gravity and lock onto the intended target ## Fixed * The conveyor grabber should no longer skip over items when used in long lines diff --git a/src/main/java/com/hbm/items/armor/ArmorDNT.java b/src/main/java/com/hbm/items/armor/ArmorDNT.java index d223e45c6..7f245c7f2 100644 --- a/src/main/java/com/hbm/items/armor/ArmorDNT.java +++ b/src/main/java/com/hbm/items/armor/ArmorDNT.java @@ -184,13 +184,9 @@ public class ArmorDNT extends ArmorFSBPowered { } } - list.add(EnumChatFormatting.YELLOW + " " + I18nUtil.resolveKey("armor.explosionImmune")); - list.add(EnumChatFormatting.YELLOW + " " + I18nUtil.resolveKey("armor.cap", 5)); - list.add(EnumChatFormatting.YELLOW + " " + I18nUtil.resolveKey("armor.modifier", 0.001F)); list.add(EnumChatFormatting.RED + " " + I18nUtil.resolveKey("armor.vats")); list.add(EnumChatFormatting.RED + " " + I18nUtil.resolveKey("armor.thermal")); list.add(EnumChatFormatting.RED + " " + I18nUtil.resolveKey("armor.hardLanding")); - list.add(EnumChatFormatting.DARK_RED + " " + I18nUtil.resolveKey("armor.ignoreLimit")); list.add(EnumChatFormatting.AQUA + " " + I18nUtil.resolveKey("armor.rocketBoots")); list.add(EnumChatFormatting.AQUA + " " + I18nUtil.resolveKey("armor.fastFall")); list.add(EnumChatFormatting.AQUA + " " + I18nUtil.resolveKey("armor.sprintBoost")); diff --git a/src/main/java/com/hbm/items/armor/ArmorFSB.java b/src/main/java/com/hbm/items/armor/ArmorFSB.java index c42961138..cf83bf1be 100644 --- a/src/main/java/com/hbm/items/armor/ArmorFSB.java +++ b/src/main/java/com/hbm/items/armor/ArmorFSB.java @@ -54,7 +54,6 @@ public class ArmorFSB extends ItemArmor implements IArmorDisableModel { public boolean geigerSound = false; public boolean customGeiger = false; public boolean hardLanding = false; - public double gravity = 0; public int dashCount = 0; public int stepSize = 0; public String step; @@ -100,11 +99,6 @@ public class ArmorFSB extends ItemArmor implements IArmorDisableModel { this.hardLanding = hardLanding; return this; } - - public ArmorFSB setGravity(double gravity) { - this.gravity = gravity; - return this; - } public ArmorFSB setDashCount(int dashCount) { this.dashCount = dashCount; @@ -146,7 +140,6 @@ public class ArmorFSB extends ItemArmor implements IArmorDisableModel { this.geigerSound = original.geigerSound; this.customGeiger = original.customGeiger; this.hardLanding = original.hardLanding; - this.gravity = original.gravity; this.dashCount = original.dashCount; this.stepSize = original.stepSize; this.step = original.step; @@ -163,23 +156,30 @@ public class ArmorFSB extends ItemArmor implements IArmorDisableModel { @SideOnly(Side.CLIENT) public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean bool) { - - list.add(EnumChatFormatting.GOLD + I18nUtil.resolveKey("armor.fullSetBonus")); + + List toAdd = new ArrayList(); if(!effects.isEmpty()) { + List potionList = new ArrayList(); for(PotionEffect effect : effects) { - list.add(EnumChatFormatting.AQUA + " " + I18n.format(Potion.potionTypes[effect.getPotionID()].getName())); + potionList.add(I18n.format(Potion.potionTypes[effect.getPotionID()].getName())); } + + toAdd.add(EnumChatFormatting.AQUA + String.join(", ", potionList)); } - if(geigerSound) list.add(EnumChatFormatting.GOLD + " " + I18nUtil.resolveKey("armor.geigerSound")); - if(customGeiger) list.add(EnumChatFormatting.GOLD + " " + I18nUtil.resolveKey("armor.geigerHUD")); - if(vats) list.add(EnumChatFormatting.RED + " " + I18nUtil.resolveKey("armor.vats")); - if(thermal) list.add(EnumChatFormatting.RED + " " + I18nUtil.resolveKey("armor.thermal")); - if(hardLanding) list.add(EnumChatFormatting.RED + " " + I18nUtil.resolveKey("armor.hardLanding")); - if(gravity != 0) list.add(EnumChatFormatting.BLUE + " " + I18nUtil.resolveKey("armor.gravity", gravity)); - if(stepSize != 0) list.add(EnumChatFormatting.BLUE + " " + I18nUtil.resolveKey("armor.stepSize", stepSize)); - if(dashCount > 0) list.add(EnumChatFormatting.AQUA + " " + I18nUtil.resolveKey("armor.dash", dashCount)); + if(geigerSound) toAdd.add(EnumChatFormatting.GOLD + " " + I18nUtil.resolveKey("armor.geigerSound")); + if(customGeiger) toAdd.add(EnumChatFormatting.GOLD + " " + I18nUtil.resolveKey("armor.geigerHUD")); + if(vats) toAdd.add(EnumChatFormatting.RED + " " + I18nUtil.resolveKey("armor.vats")); + if(thermal) toAdd.add(EnumChatFormatting.RED + " " + I18nUtil.resolveKey("armor.thermal")); + if(hardLanding) toAdd.add(EnumChatFormatting.RED + " " + I18nUtil.resolveKey("armor.hardLanding")); + if(stepSize != 0) toAdd.add(EnumChatFormatting.BLUE + " " + I18nUtil.resolveKey("armor.stepSize", stepSize)); + if(dashCount > 0) toAdd.add(EnumChatFormatting.AQUA + " " + I18nUtil.resolveKey("armor.dash", dashCount)); + + if(!toAdd.isEmpty()) { + list.add(EnumChatFormatting.GOLD + I18nUtil.resolveKey("armor.fullSetBonus")); + list.addAll(toAdd); + } } public static boolean hasFSBArmor(EntityPlayer player) { @@ -254,9 +254,6 @@ public class ArmorFSB extends ItemArmor implements IArmorDisableModel { } } - if(!player.capabilities.isFlying && !player.isInWater()) - player.motionY -= chestplate.gravity; - if(chestplate.step != null && player.worldObj.isRemote && player.onGround) { try { @@ -335,14 +332,9 @@ public class ArmorFSB extends ItemArmor implements IArmorDisableModel { @Override public void onArmorTick(World world, EntityPlayer entity, ItemStack stack) { - if(this.armorType != 1) - return; - - if(!hasFSBArmor(entity) || !this.geigerSound) - return; - - if(entity.inventory.hasItem(ModItems.geiger_counter) || entity.inventory.hasItem(ModItems.dosimeter)) - return; + if(this.armorType != 1) return; + if(!hasFSBArmor(entity) || !this.geigerSound) return; + if(entity.inventory.hasItem(ModItems.geiger_counter) || entity.inventory.hasItem(ModItems.dosimeter)) return; if(world.getTotalWorldTime() % 5 == 0) { @@ -364,26 +356,20 @@ public class ArmorFSB extends ItemArmor implements IArmorDisableModel { int r = list.get(world.rand.nextInt(list.size())); - if(r > 0) - world.playSoundAtEntity(entity, "hbm:item.geiger" + r, 1.0F, 1.0F); + if(r > 0) world.playSoundAtEntity(entity, "hbm:item.geiger" + r, 1.0F, 1.0F); } } } public static int check(World world, int x, int y, int z) { - int rads = (int) Math.ceil(ChunkRadiationManager.proxy.getRadiation(world, x, y, z)); return rads; } // For crazier stuff not possible without hooking the event - @SideOnly(Side.CLIENT) - public void handleOverlay(RenderGameOverlayEvent.Pre event, EntityPlayer player) { - } + @SideOnly(Side.CLIENT) public void handleOverlay(RenderGameOverlayEvent.Pre event, EntityPlayer player) { } - public boolean isArmorEnabled(ItemStack stack) { - return true; - } + public boolean isArmorEnabled(ItemStack stack) { return true; } @SideOnly(Side.CLIENT) public void renderHelmetOverlay(ItemStack stack, EntityPlayer player, ScaledResolution resolution, float partialTicks, boolean hasScreen, int mouseX, int mouseY) { diff --git a/src/main/java/com/hbm/main/ModEventHandlerClient.java b/src/main/java/com/hbm/main/ModEventHandlerClient.java index 7d343e2ca..1a15b4109 100644 --- a/src/main/java/com/hbm/main/ModEventHandlerClient.java +++ b/src/main/java/com/hbm/main/ModEventHandlerClient.java @@ -80,6 +80,7 @@ import com.hbm.wiaj.cannery.CanneryBase; import com.hbm.wiaj.cannery.Jars; import com.hbm.util.ArmorRegistry; import com.hbm.util.ArmorUtil; +import com.hbm.util.DamageResistanceHandler; import com.hbm.util.ArmorRegistry.HazardClass; import com.mojang.authlib.minecraft.MinecraftProfileTexture.Type; @@ -714,6 +715,9 @@ public class ModEventHandlerClient { ItemStack stack = event.itemStack; List list = event.toolTip; + /// DAMAGE RESISTANCE /// + DamageResistanceHandler.addInfo(stack, list); + /// HAZMAT INFO /// List hazInfo = ArmorRegistry.hazardClasses.get(stack.getItem()); diff --git a/src/main/java/com/hbm/tileentity/turret/TileEntityTurretRichard.java b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretRichard.java index 0b5944256..8cdddff40 100644 --- a/src/main/java/com/hbm/tileentity/turret/TileEntityTurretRichard.java +++ b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretRichard.java @@ -4,14 +4,11 @@ import java.util.ArrayList; import java.util.List; import com.hbm.entity.projectile.EntityBulletBaseMK4; -import com.hbm.inventory.RecipesCommon.ComparableStack; import com.hbm.inventory.gui.GUITurretRichard; -import com.hbm.items.ItemAmmoEnums.AmmoRocket; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; -import com.hbm.items.ModItems; import com.hbm.items.weapon.sedna.BulletConfig; import com.hbm.items.weapon.sedna.factory.XFactoryRocket; @@ -126,8 +123,7 @@ public class TileEntityTurretRichard extends TileEntityTurretBaseNT { this.worldObj.playSoundEffect(xCoord, yCoord, zCoord, "hbm:turret.richard_fire", 2.0F, 1.0F); this.loaded--; - if(conf.ammo.equals(new ComparableStack(ModItems.ammo_rocket.stackFromEnum(AmmoRocket.NUCLEAR)))) - timer = -50; + //if(conf.ammo.equals(new ComparableStack(ModItems.ammo_standard, EnumAmmo.ROCKET_DEMO))) timer = -50; } else { this.loaded = 0; @@ -145,6 +141,7 @@ public class TileEntityTurretRichard extends TileEntityTurretBaseNT { EntityBulletBaseMK4 proj = new EntityBulletBaseMK4(worldObj, bullet, baseDamage, bullet.spread, (float) rotationYaw, (float) rotationPitch); proj.setPositionAndRotation(pos.xCoord + vec.xCoord, pos.yCoord + vec.yCoord, pos.zCoord + vec.zCoord, proj.rotationYaw, proj.rotationPitch); + proj.lockonTarget = this.target; worldObj.spawnEntityInWorld(proj); } diff --git a/src/main/java/com/hbm/util/DamageResistanceHandler.java b/src/main/java/com/hbm/util/DamageResistanceHandler.java index f38afcfe7..fa6c929fe 100644 --- a/src/main/java/com/hbm/util/DamageResistanceHandler.java +++ b/src/main/java/com/hbm/util/DamageResistanceHandler.java @@ -1,6 +1,9 @@ package com.hbm.util; +import java.util.ArrayList; import java.util.HashMap; +import java.util.List; +import java.util.Map.Entry; import com.hbm.items.ModItems; import com.hbm.util.Tuple.Quartet; @@ -12,6 +15,7 @@ import net.minecraft.entity.monster.EntityCreeper; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.util.DamageSource; +import net.minecraft.util.EnumChatFormatting; import net.minecraft.util.MathHelper; import net.minecraftforge.event.entity.living.LivingAttackEvent; import net.minecraftforge.event.entity.living.LivingHurtEvent; @@ -32,50 +36,54 @@ public class DamageResistanceHandler { public static final String CATEGORY_EXPLOSION = "EXPL"; public static final String CATEGORY_FIRE = "FIRE"; public static final String CATEGORY_PROJECTILE = "PROJ"; + public static final String CATEGORY_ENERGY = "EN"; public static HashMap itemStats = new HashMap(); public static HashMap, ResistanceStats> setStats = new HashMap(); public static HashMap, ResistanceStats> entityStats = new HashMap(); + + public static HashMap>> itemInfoSet = new HashMap(); public static void init() { itemStats.clear(); setStats.clear(); entityStats.clear(); + itemInfoSet.clear(); entityStats.put(EntityCreeper.class, new ResistanceStats().addCategory(CATEGORY_EXPLOSION, 2F, 0.5F)); - setStats.put(new Quartet(ModItems.steel_helmet, ModItems.steel_plate, ModItems.steel_legs, ModItems.steel_boots), new ResistanceStats()); - setStats.put(new Quartet(ModItems.titanium_helmet, ModItems.titanium_plate, ModItems.titanium_legs, ModItems.titanium_boots), new ResistanceStats()); - setStats.put(new Quartet(ModItems.alloy_helmet, ModItems.alloy_plate, ModItems.alloy_legs, ModItems.alloy_boots), new ResistanceStats() + registerSet(ModItems.steel_helmet, ModItems.steel_plate, ModItems.steel_legs, ModItems.steel_boots, new ResistanceStats()); + registerSet(ModItems.titanium_helmet, ModItems.titanium_plate, ModItems.titanium_legs, ModItems.titanium_boots, new ResistanceStats()); + registerSet(ModItems.alloy_helmet, ModItems.alloy_plate, ModItems.alloy_legs, ModItems.alloy_boots, new ResistanceStats() .addCategory(CATEGORY_PROJECTILE, 2F, 0.1F)); - setStats.put(new Quartet(ModItems.cobalt_helmet, ModItems.cobalt_plate, ModItems.cobalt_legs, ModItems.cobalt_boots), new ResistanceStats() + registerSet(ModItems.cobalt_helmet, ModItems.cobalt_plate, ModItems.cobalt_legs, ModItems.cobalt_boots, new ResistanceStats() .addCategory(CATEGORY_PROJECTILE, 2F, 0.1F)); - setStats.put(new Quartet(ModItems.starmetal_helmet, ModItems.starmetal_plate, ModItems.starmetal_legs, ModItems.starmetal_boots), new ResistanceStats()); - setStats.put(new Quartet(ModItems.zirconium_legs, ModItems.zirconium_legs, ModItems.zirconium_legs, ModItems.zirconium_legs), new ResistanceStats() + registerSet(ModItems.starmetal_helmet, ModItems.starmetal_plate, ModItems.starmetal_legs, ModItems.starmetal_boots, new ResistanceStats()); + registerSet(ModItems.zirconium_legs, ModItems.zirconium_legs, ModItems.zirconium_legs, ModItems.zirconium_legs, new ResistanceStats() .setOther(0F, 1F)); - setStats.put(new Quartet(ModItems.dnt_helmet, ModItems.dnt_plate, ModItems.dnt_legs, ModItems.dnt_boots), new ResistanceStats()); - setStats.put(new Quartet(ModItems.schrabidium_helmet, ModItems.schrabidium_plate, ModItems.schrabidium_legs, ModItems.schrabidium_boots), new ResistanceStats()); - setStats.put(new Quartet(ModItems.robes_helmet, ModItems.robes_plate, ModItems.robes_legs, ModItems.robes_boots), new ResistanceStats()); + registerSet(ModItems.dnt_helmet, ModItems.dnt_plate, ModItems.dnt_legs, ModItems.dnt_boots, new ResistanceStats()); + registerSet(ModItems.schrabidium_helmet, ModItems.schrabidium_plate, ModItems.schrabidium_legs, ModItems.schrabidium_boots, new ResistanceStats()); + registerSet(ModItems.robes_helmet, ModItems.robes_plate, ModItems.robes_legs, ModItems.robes_boots, new ResistanceStats()); - setStats.put(new Quartet(ModItems.steamsuit_helmet, ModItems.steamsuit_plate, ModItems.steamsuit_legs, ModItems.steamsuit_boots), new ResistanceStats()); - setStats.put(new Quartet(ModItems.dieselsuit_helmet, ModItems.dieselsuit_plate, ModItems.dieselsuit_legs, ModItems.dieselsuit_boots), new ResistanceStats()); - setStats.put(new Quartet(ModItems.t45_helmet, ModItems.t45_plate, ModItems.t45_legs, ModItems.t45_boots), new ResistanceStats() + registerSet(ModItems.steamsuit_helmet, ModItems.steamsuit_plate, ModItems.steamsuit_legs, ModItems.steamsuit_boots, new ResistanceStats()); + registerSet(ModItems.dieselsuit_helmet, ModItems.dieselsuit_plate, ModItems.dieselsuit_legs, ModItems.dieselsuit_boots, new ResistanceStats()); + registerSet(ModItems.t45_helmet, ModItems.t45_plate, ModItems.t45_legs, ModItems.t45_boots, new ResistanceStats() .addCategory(CATEGORY_PROJECTILE, 2F, 0.15F) .addCategory(CATEGORY_FIRE, 0.5F, 0.35F) .addCategory(CATEGORY_EXPLOSION, 5F, 0.25F) .setOther(0F, 0.1F)); - setStats.put(new Quartet(ModItems.ajr_helmet, ModItems.ajr_plate, ModItems.ajr_legs, ModItems.ajr_boots), new ResistanceStats() + registerSet(ModItems.ajr_helmet, ModItems.ajr_plate, ModItems.ajr_legs, ModItems.ajr_boots, new ResistanceStats() .addCategory(CATEGORY_PROJECTILE, 4F, 0.15F) .addCategory(CATEGORY_FIRE, 0.5F, 0.35F) .addCategory(CATEGORY_EXPLOSION, 7.5F, 0.25F) .setOther(0F, 0.15F)); - setStats.put(new Quartet(ModItems.ajro_helmet, ModItems.ajro_plate, ModItems.ajro_legs, ModItems.ajro_boots), new ResistanceStats() + registerSet(ModItems.ajro_helmet, ModItems.ajro_plate, ModItems.ajro_legs, ModItems.ajro_boots, new ResistanceStats() .addCategory(CATEGORY_PROJECTILE, 4F, 0.15F) .addCategory(CATEGORY_FIRE, 0.5F, 0.35F) .addCategory(CATEGORY_EXPLOSION, 7.5F, 0.25F) .setOther(0F, 0.15F)); - setStats.put(new Quartet(ModItems.rpa_helmet, ModItems.rpa_plate, ModItems.rpa_legs, ModItems.rpa_boots), new ResistanceStats() + registerSet(ModItems.rpa_helmet, ModItems.rpa_plate, ModItems.rpa_legs, ModItems.rpa_boots, new ResistanceStats() .addCategory(CATEGORY_PROJECTILE, 20F, 0.5F) .addCategory(CATEGORY_FIRE, 10F, 0.75F) .addCategory(CATEGORY_EXPLOSION, 15F, 0.25F) @@ -86,37 +94,90 @@ public class DamageResistanceHandler { .addCategory(CATEGORY_FIRE, 2.5F, 0.5F) .addCategory(CATEGORY_EXPLOSION, 10F, 0.25F) .setOther(2F, 0.15F); - setStats.put(new Quartet(ModItems.bj_helmet, ModItems.bj_plate, ModItems.bj_legs, ModItems.bj_boots), bj); - setStats.put(new Quartet(ModItems.bj_helmet, ModItems.bj_plate_jetpack, ModItems.bj_legs, ModItems.bj_boots), bj); - setStats.put(new Quartet(ModItems.envsuit_helmet, ModItems.envsuit_plate, ModItems.envsuit_legs, ModItems.envsuit_boots), new ResistanceStats()); - setStats.put(new Quartet(ModItems.hev_helmet, ModItems.hev_plate, ModItems.hev_legs, ModItems.hev_boots), new ResistanceStats() + registerSet(ModItems.bj_helmet, ModItems.bj_plate, ModItems.bj_legs, ModItems.bj_boots, bj); + registerSet(ModItems.bj_helmet, ModItems.bj_plate_jetpack, ModItems.bj_legs, ModItems.bj_boots, bj); + registerSet(ModItems.envsuit_helmet, ModItems.envsuit_plate, ModItems.envsuit_legs, ModItems.envsuit_boots, new ResistanceStats()); + registerSet(ModItems.hev_helmet, ModItems.hev_plate, ModItems.hev_legs, ModItems.hev_boots, new ResistanceStats() .addCategory(CATEGORY_PROJECTILE, 2F, 0.15F) .addCategory(CATEGORY_FIRE, 0.5F, 0.5F) .addCategory(CATEGORY_EXPLOSION, 5F, 0.25F) .addExact(DamageSource.onFire.damageType, 0F, 1F) .setOther(2F, 0.25F)); - setStats.put(new Quartet(ModItems.bismuth_helmet, ModItems.bismuth_plate, ModItems.bismuth_legs, ModItems.bismuth_boots), new ResistanceStats() + registerSet(ModItems.bismuth_helmet, ModItems.bismuth_plate, ModItems.bismuth_legs, ModItems.bismuth_boots, new ResistanceStats() .addCategory(CATEGORY_PROJECTILE, 2F, 0.15F) .addCategory(CATEGORY_FIRE, 5F, 0.5F) .addCategory(CATEGORY_EXPLOSION, 5F, 0.25F) .setOther(2F, 0.25F)); - setStats.put(new Quartet(ModItems.fau_helmet, ModItems.fau_plate, ModItems.fau_legs, ModItems.fau_boots), new ResistanceStats()); - setStats.put(new Quartet(ModItems.dns_helmet, ModItems.dns_plate, ModItems.dns_legs, ModItems.dns_boots), new ResistanceStats() + registerSet(ModItems.fau_helmet, ModItems.fau_plate, ModItems.fau_legs, ModItems.fau_boots, new ResistanceStats()); + registerSet(ModItems.dns_helmet, ModItems.dns_plate, ModItems.dns_legs, ModItems.dns_boots, new ResistanceStats() .addCategory(CATEGORY_EXPLOSION, 100F, 0.9F) .setOther(100F, 100F)); - setStats.put(new Quartet(ModItems.trenchmaster_helmet, ModItems.trenchmaster_plate, ModItems.trenchmaster_legs, ModItems.trenchmaster_boots), new ResistanceStats() + registerSet(ModItems.trenchmaster_helmet, ModItems.trenchmaster_plate, ModItems.trenchmaster_legs, ModItems.trenchmaster_boots, new ResistanceStats() .addCategory(CATEGORY_PROJECTILE, 5F, 0.5F) .addCategory(CATEGORY_FIRE, 5F, 0.5F) .addCategory(CATEGORY_EXPLOSION, 5F, 0.25F) .addExact(DamageClass.LASER.name(), 15F, 0.9F) .setOther(5F, 0.25F)); - setStats.put(new Quartet(ModItems.hazmat_helmet, ModItems.hazmat_plate, ModItems.hazmat_legs, ModItems.hazmat_boots), new ResistanceStats()); - setStats.put(new Quartet(ModItems.hazmat_helmet_red, ModItems.hazmat_plate_red, ModItems.hazmat_legs_red, ModItems.hazmat_boots_red), new ResistanceStats()); - setStats.put(new Quartet(ModItems.hazmat_helmet_grey, ModItems.hazmat_plate_grey, ModItems.hazmat_legs_grey, ModItems.hazmat_boots_grey), new ResistanceStats()); - setStats.put(new Quartet(ModItems.liquidator_helmet, ModItems.liquidator_plate, ModItems.liquidator_legs, ModItems.liquidator_boots), new ResistanceStats()); - setStats.put(new Quartet(ModItems.hazmat_paa_helmet, ModItems.hazmat_paa_plate, ModItems.hazmat_paa_legs, ModItems.hazmat_paa_boots), new ResistanceStats()); - setStats.put(new Quartet(ModItems.asbestos_helmet, ModItems.asbestos_plate, ModItems.asbestos_legs, ModItems.asbestos_boots), new ResistanceStats()); + registerSet(ModItems.hazmat_helmet, ModItems.hazmat_plate, ModItems.hazmat_legs, ModItems.hazmat_boots, new ResistanceStats()); + registerSet(ModItems.hazmat_helmet_red, ModItems.hazmat_plate_red, ModItems.hazmat_legs_red, ModItems.hazmat_boots_red, new ResistanceStats()); + registerSet(ModItems.hazmat_helmet_grey, ModItems.hazmat_plate_grey, ModItems.hazmat_legs_grey, ModItems.hazmat_boots_grey, new ResistanceStats()); + registerSet(ModItems.liquidator_helmet, ModItems.liquidator_plate, ModItems.liquidator_legs, ModItems.liquidator_boots, new ResistanceStats()); + registerSet(ModItems.hazmat_paa_helmet, ModItems.hazmat_paa_plate, ModItems.hazmat_paa_legs, ModItems.hazmat_paa_boots, new ResistanceStats()); + registerSet(ModItems.asbestos_helmet, ModItems.asbestos_plate, ModItems.asbestos_legs, ModItems.asbestos_boots, new ResistanceStats()); + } + + public static void registerSet(Item helmet, Item plate, Item legs, Item boots, ResistanceStats stats) { + Quartet set = new Quartet(helmet, plate, legs, boots); + setStats.put(set, stats); + addToListInHashMap(helmet, itemInfoSet, set); + addToListInHashMap(plate, itemInfoSet, set); + addToListInHashMap(legs, itemInfoSet, set); + addToListInHashMap(boots, itemInfoSet, set); + } + + public static void addToListInHashMap(Object key, HashMap map, Object listElement) { + List list = (List) map.get(key); + if(list == null) { + list = new ArrayList(); + map.put(key, list); + } + list.add(listElement); + } + + public static void addInfo(ItemStack stack, List desc) { + if(stack == null || stack.getItem() == null || !itemInfoSet.containsKey(stack.getItem())) return; + + List> sets = itemInfoSet.get(stack.getItem()); + + for(Quartet set : sets) { + + ResistanceStats stats = setStats.get(set); + if(stats == null) continue; + + List toAdd = new ArrayList(); + + //TODO: why don't we cache this? + for(Entry entry : stats.categoryResistances.entrySet()) { + toAdd.add(I18nUtil.resolveKey("damage.category." + entry.getKey()) + ": " + entry.getValue().threshold + "/" + ((int)(entry.getValue().resistance * 100)) + "%"); + } + for(Entry entry : stats.exactResistances.entrySet()) { + toAdd.add(I18nUtil.resolveKey("damage.exact." + entry.getKey()) + ": " + entry.getValue().threshold + "/" + ((int)(entry.getValue().resistance * 100)) + "%"); + } + if(stats.otherResistance != null) toAdd.add(I18nUtil.resolveKey("damage.other") + ": " + stats.otherResistance.threshold + "/" + ((int)(stats.otherResistance.resistance * 100)) + "%"); + + if(!toAdd.isEmpty()) { + desc.add(EnumChatFormatting.DARK_PURPLE + "Resistances when worn in set:"); + //this sucks ass! + if(set.getW() != null) desc.add(EnumChatFormatting.DARK_PURPLE + " " + new ItemStack(set.getW()).getDisplayName()); + if(set.getX() != null) desc.add(EnumChatFormatting.DARK_PURPLE + " " + new ItemStack(set.getX()).getDisplayName()); + if(set.getY() != null) desc.add(EnumChatFormatting.DARK_PURPLE + " " + new ItemStack(set.getY()).getDisplayName()); + if(set.getZ() != null) desc.add(EnumChatFormatting.DARK_PURPLE + " " + new ItemStack(set.getZ()).getDisplayName()); + desc.addAll(toAdd); + } + + return; //TEMP, only show one set for now + } } public static enum DamageClass { @@ -125,6 +186,7 @@ public class DamageResistanceHandler { EXPLOSIVE, ELECTRIC, LASER, + MICROWAVE, SUBATOMIC, OTHER } @@ -162,6 +224,9 @@ public class DamageResistanceHandler { if(source.isExplosion()) return CATEGORY_EXPLOSION; if(source.isFireDamage()) return CATEGORY_FIRE; if(source.isProjectile()) return CATEGORY_PROJECTILE; + if(source.damageType.equals(DamageClass.LASER.name())) return CATEGORY_ENERGY; + if(source.damageType.equals(DamageClass.MICROWAVE.name())) return CATEGORY_ENERGY; + if(source.damageType.equals(DamageClass.SUBATOMIC.name())) return CATEGORY_ENERGY; return source.damageType; } From da407e6b31f507591e83af0eaf9430023133c817 Mon Sep 17 00:00:00 2001 From: Bob Date: Sat, 7 Dec 2024 22:48:32 +0100 Subject: [PATCH 19/24] do you dare take a spookie dookie in the skoilet? --- .../java/com/hbm/crafting/WeaponRecipes.java | 29 +- .../entity/effect/EntityFireLingering.java | 3 + .../standard/EntityProcessorCrossSmooth.java | 6 + .../java/com/hbm/extprop/HbmLivingProps.java | 3 + .../com/hbm/handler/EntityEffectHandler.java | 14 +- .../com/hbm/handler/nei/AmmoPressHandler.java | 16 + .../com/hbm/inventory/OreDictManager.java | 28 +- .../java/com/hbm/inventory/material/Mats.java | 21 +- .../inventory/recipes/AmmoPressRecipes.java | 44 ++ .../inventory/recipes/anvil/AnvilRecipes.java | 116 +---- .../weapon/sedna/factory/ConfettiUtil.java | 1 + .../weapon/sedna/factory/GunFactory.java | 1 + .../sedna/factory/GunFactoryClient.java | 2 +- .../weapon/sedna/factory/XFactory22lr.java | 8 +- .../weapon/sedna/factory/XFactory40mm.java | 31 +- .../sedna/factory/XFactoryCatapult.java | 4 +- .../weapon/sedna/factory/XFactoryEnergy.java | 2 +- .../weapon/sedna/factory/XFactoryRocket.java | 27 +- .../weapon/sedna/factory/XFactoryTurret.java | 46 ++ src/main/java/com/hbm/main/NEIRegistry.java | 1 + .../java/com/hbm/particle/ParticleGiblet.java | 1 + .../com/hbm/particle/ParticlePlasmaBlast.java | 3 +- .../com/hbm/particle/ParticleSkeleton.java | 18 +- .../hbm/particle/helper/SkeletonCreator.java | 33 +- .../item/weapon/sedna/ItemRenderAtlas.java | 3 +- .../item/weapon/sedna/ItemRenderBolter.java | 4 +- .../item/weapon/sedna/ItemRenderHangman.java | 4 +- .../turret/TileEntityTurretFritz.java | 5 +- .../turret/TileEntityTurretHoward.java | 4 +- .../turret/TileEntityTurretJeremy.java | 42 +- .../java/com/hbm/util/EntityDamageUtil.java | 20 +- src/main/resources/assets/hbm/lang/de_DE.lang | 11 +- src/main/resources/assets/hbm/lang/en_US.lang | 9 + .../assets/hbm/models/effect/skeleton.obj | 426 +++++++++++------- .../hbm/textures/entity/ModelGrenade.png | Bin 702 -> 0 bytes .../hbm/textures/entity/ModelGrenadeHE.png | Bin 873 -> 0 bytes .../entity/ModelGrenadeIncendiary.png | Bin 867 -> 0 bytes .../hbm/textures/entity/ModelGrenadeSleek.png | Bin 823 -> 0 bytes .../hbm/textures/entity/ModelGrenadeToxic.png | Bin 868 -> 0 bytes .../textures/entity/ModelGrenadeTraining.png | Bin 645 -> 0 bytes .../hbm/textures/entity/ModelRocket.png | Bin 337 -> 0 bytes .../textures/entity/ModelRocketCanister.png | Bin 354 -> 0 bytes .../hbm/textures/entity/ModelRocketEMP.png | Bin 322 -> 0 bytes .../hbm/textures/entity/ModelRocketGlare.png | Bin 339 -> 0 bytes .../hbm/textures/entity/ModelRocketHE.png | Bin 333 -> 0 bytes .../textures/entity/ModelRocketIncendiary.png | Bin 333 -> 0 bytes .../textures/entity/ModelRocketNuclear.png | Bin 375 -> 0 bytes .../textures/entity/ModelRocketPhosphorus.png | Bin 322 -> 0 bytes .../textures/entity/ModelRocketShrapnel.png | Bin 326 -> 0 bytes .../hbm/textures/entity/ModelRocketSleek.png | Bin 327 -> 0 bytes .../textures/items/ammo_standard.p22_ap.png | Bin 187 -> 216 bytes .../textures/items/ammo_standard.p22_fmj.png | Bin 192 -> 242 bytes .../textures/items/ammo_standard.p22_jhp.png | Bin 195 -> 221 bytes .../textures/items/ammo_standard.p22_sp.png | Bin 192 -> 235 bytes .../assets/hbm/textures/particle/skoilet.png | Bin 0 -> 1543 bytes 55 files changed, 600 insertions(+), 386 deletions(-) create mode 100644 src/main/java/com/hbm/handler/nei/AmmoPressHandler.java create mode 100644 src/main/java/com/hbm/items/weapon/sedna/factory/XFactoryTurret.java delete mode 100644 src/main/resources/assets/hbm/textures/entity/ModelGrenade.png delete mode 100644 src/main/resources/assets/hbm/textures/entity/ModelGrenadeHE.png delete mode 100644 src/main/resources/assets/hbm/textures/entity/ModelGrenadeIncendiary.png delete mode 100644 src/main/resources/assets/hbm/textures/entity/ModelGrenadeSleek.png delete mode 100644 src/main/resources/assets/hbm/textures/entity/ModelGrenadeToxic.png delete mode 100644 src/main/resources/assets/hbm/textures/entity/ModelGrenadeTraining.png delete mode 100644 src/main/resources/assets/hbm/textures/entity/ModelRocket.png delete mode 100644 src/main/resources/assets/hbm/textures/entity/ModelRocketCanister.png delete mode 100644 src/main/resources/assets/hbm/textures/entity/ModelRocketEMP.png delete mode 100644 src/main/resources/assets/hbm/textures/entity/ModelRocketGlare.png delete mode 100644 src/main/resources/assets/hbm/textures/entity/ModelRocketHE.png delete mode 100644 src/main/resources/assets/hbm/textures/entity/ModelRocketIncendiary.png delete mode 100644 src/main/resources/assets/hbm/textures/entity/ModelRocketNuclear.png delete mode 100644 src/main/resources/assets/hbm/textures/entity/ModelRocketPhosphorus.png delete mode 100644 src/main/resources/assets/hbm/textures/entity/ModelRocketShrapnel.png delete mode 100644 src/main/resources/assets/hbm/textures/entity/ModelRocketSleek.png create mode 100644 src/main/resources/assets/hbm/textures/particle/skoilet.png diff --git a/src/main/java/com/hbm/crafting/WeaponRecipes.java b/src/main/java/com/hbm/crafting/WeaponRecipes.java index 381e7f74c..806071a9d 100644 --- a/src/main/java/com/hbm/crafting/WeaponRecipes.java +++ b/src/main/java/com/hbm/crafting/WeaponRecipes.java @@ -33,6 +33,14 @@ public class WeaponRecipes { //SEDNA Parts CraftingManager.addRecipeAuto(new ItemStack(ModItems.part_stock, 1, Mats.MAT_WOOD.id), new Object[] { "WWW", " W", 'W', KEY_PLANKS }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.part_grip, 1, Mats.MAT_WOOD.id), new Object[] { "W ", " W", " W", 'W', KEY_PLANKS }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.part_stock, 1, Mats.MAT_POLYMER.id), new Object[] { "WWW", " W", 'W', POLYMER.ingot() }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.part_grip, 1, Mats.MAT_POLYMER.id), new Object[] { "W ", " W", " W", 'W', POLYMER.ingot() }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.part_stock, 1, Mats.MAT_BAKELITE.id), new Object[] { "WWW", " W", 'W', BAKELITE.ingot() }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.part_grip, 1, Mats.MAT_BAKELITE.id), new Object[] { "W ", " W", " W", 'W', BAKELITE.ingot() }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.part_stock, 1, Mats.MAT_HARDPLASTIC.id), new Object[] { "WWW", " W", 'W', PC.ingot() }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.part_grip, 1, Mats.MAT_HARDPLASTIC.id), new Object[] { "W ", " W", " W", 'W', PC.ingot() }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.part_stock, 1, Mats.MAT_PVC.id), new Object[] { "WWW", " W", 'W', PVC.ingot() }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.part_grip, 1, Mats.MAT_PVC.id), new Object[] { "W ", " W", " W", 'W', PVC.ingot() }); CraftingManager.addRecipeAuto(DictFrame.fromOne(ModItems.casing, EnumCasingType.SHOTSHELL, 2), new Object[] { "P", "C", 'P', GUNMETAL.plate(), 'C', DictFrame.fromOne(ModItems.casing, EnumCasingType.LARGE) }); CraftingManager.addRecipeAuto(DictFrame.fromOne(ModItems.casing, EnumCasingType.BUCKSHOT, 2), new Object[] { "P", "C", 'P', ANY_PLASTIC.ingot(), 'C', DictFrame.fromOne(ModItems.casing, EnumCasingType.LARGE) }); @@ -45,12 +53,29 @@ public class WeaponRecipes { CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_greasegun, 1), new Object[] { "BRS", "SMG", 'B', STEEL.lightBarrel(), 'R', STEEL.lightReceiver(), 'S', STEEL.bolt(), 'M', GUNMETAL.mechanism(), 'G', STEEL.grip() }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_maresleg, 1), new Object[] { "BRM", "BGS", 'B', STEEL.lightBarrel(), 'R', STEEL.lightReceiver(), 'M', GUNMETAL.mechanism(), 'G', STEEL.bolt(), 'S', WOOD.stock() }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_flaregun, 1), new Object[] { "BRM", " G", 'B', STEEL.heavyBarrel(), 'R', STEEL.lightReceiver(), 'M', GUNMETAL.mechanism(), 'G', STEEL.grip() }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_heavy_revolver, 1), new Object[] { "BRM", " G", 'B', DURA.lightBarrel(), 'R', DURA.lightReceiver(), 'M', GUNMETAL.mechanism(), 'G', WOOD.grip() }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_carbine, 1), new Object[] { "BRM", "G S", 'B', DURA.lightBarrel(), 'R', DURA.lightReceiver(), 'M', GUNMETAL.mechanism(), 'G', WOOD.grip(), 'S', WOOD.stock() }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_am180, 1), new Object[] { "BBR", "GMS", 'B', DURA.lightBarrel(), 'R', DURA.lightReceiver(), 'M', GUNMETAL.mechanism(), 'G', WOOD.grip(), 'S', WOOD.stock() }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_liberator, 1), new Object[] { "BB ", "BBM", "G G", 'B', DURA.lightBarrel(), 'M', GUNMETAL.mechanism(), 'G', WOOD.grip() }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_congolake, 1), new Object[] { "BM ", "BRS", "G ", 'B', DURA.heavyBarrel(), 'M', GUNMETAL.mechanism(), 'R', DURA.lightReceiver(), 'S', WOOD.stock(), 'G', WOOD.grip() }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_flamer, 1), new Object[] { " MG", "BBR", " GM", 'M', GUNMETAL.mechanism(), 'G', DURA.grip(), 'B', DURA.heavyBarrel(), 'R', DURA.heavyReceiver() }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_heavy_revolver, 1), new Object[] { "BRM", " G", 'B', DESH.lightBarrel(), 'R', DESH.lightReceiver(), 'M', GUNMETAL.mechanism(), 'G', WOOD.grip() }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_carbine, 1), new Object[] { "BRM", "G S", 'B', DESH.lightBarrel(), 'R',DESH.lightReceiver(), 'M', GUNMETAL.mechanism(), 'G', WOOD.grip(), 'S', WOOD.stock() }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_uzi, 1), new Object[] { "BRS", " GM", 'B', DESH.lightBarrel(), 'R', DESH.lightReceiver(), 'S', ANY_PLASTIC.stock(), 'G', ANY_PLASTIC.grip(), 'M', GUNMETAL.mechanism() }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_spas12, 1), new Object[] { "BRM", "BGS", 'B', DESH.lightBarrel(), 'R', DESH.lightReceiver(), 'M', GUNMETAL.mechanism(), 'G', ANY_PLASTIC.grip(), 'S', DESH.stock() }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_panzerschreck, 1), new Object[] { "BBB", "PGM", 'B', DESH.heavyBarrel(), 'P', STEEL.plateCast(), 'G', DESH.grip(), 'M', GUNMETAL.mechanism() }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_g3, 1), new Object[] { "BRM", "WGS", 'B', WEAPONSTEEL.lightBarrel(), 'R', WEAPONSTEEL.lightReceiver(), 'M', WEAPONSTEEL.mechanism(), 'W', WOOD.grip(), 'G', RUBBER.grip(), 'S', WOOD.stock() }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_stinger, 1), new Object[] { "BBB", "PGM", 'B', WEAPONSTEEL.heavyBarrel(), 'P', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.ADVANCED), 'G', WEAPONSTEEL.grip(), 'M', WEAPONSTEEL.mechanism() }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_chemthrower, 1), new Object[] { "MHW", "PSS", 'M', WEAPONSTEEL.mechanism(), 'H', RUBBER.pipe(), 'W', ModItems.wrench, 'P', WEAPONSTEEL.heavyBarrel(), 'S', WEAPONSTEEL.shell() }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_m2, 1), new Object[] { " G", "BRM", " G", 'G', WOOD.grip(), 'B', FERRO.heavyBarrel(), 'R', FERRO.heavyReceiver(), 'M', WEAPONSTEEL.mechanism() }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_autoshotgun, 1), new Object[] { "BRM", "G G", 'B', FERRO.heavyBarrel(), 'R', FERRO.heavyReceiver(), 'M', WEAPONSTEEL.mechanism(), 'G', ANY_PLASTIC.grip() }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_quadro, 1), new Object[] { "BCB", "BMB", "GG ", 'B', FERRO.heavyBarrel(), 'C', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.ADVANCED), 'M', WEAPONSTEEL.mechanism(), 'G', ANY_PLASTIC.grip() }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_lag, 1), new Object[] { "BRM", " G", 'B', ANY_RESISTANTALLOY.lightBarrel(), 'R', ANY_RESISTANTALLOY.lightReceiver(), 'M', WEAPONSTEEL.mechanism(), 'G', ANY_PLASTIC.grip() }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_minigun, 1), new Object[] { "BMG", "BRE", "BGM", 'B', ANY_RESISTANTALLOY.lightBarrel(), 'M', WEAPONSTEEL.mechanism(), 'G', ANY_PLASTIC.grip(), 'R', ANY_RESISTANTALLOY.heavyReceiver(), 'E', ModItems.motor_desh }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_missile_launcher, 1), new Object[] { " CM", "BBB", "G ", 'C', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.ADVANCED), 'M', WEAPONSTEEL.mechanism(), 'B', ANY_RESISTANTALLOY.heavyBarrel(), 'G', ANY_PLASTIC.grip() }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_tesla_cannon, 1), new Object[] { "CCC", "BRB", "MGE", 'C', ModItems.coil_advanced_alloy, 'B', ANY_RESISTANTALLOY.heavyBarrel(), 'R', ANY_RESISTANTALLOY.heavyReceiver(), 'M', WEAPONSTEEL.mechanism(), 'G', ANY_PLASTIC.grip(), 'E', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.ADVANCED) }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_stg77, 1), new Object[] { " D ", "BRS", "GM ", 'D', DIAMOND.gem(), 'B', BIGMT.lightBarrel(), 'R', BIGMT.lightReceiver(), 'S', ANY_HARDPLASTIC.stock(), 'G', ANY_HARDPLASTIC.grip(), 'M', BIGMT.mechanism() }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_fatman, 1), new Object[] { "PPP", "BSR", "G M", 'P', BIGMT.plate(), 'B', BIGMT.heavyBarrel(), 'S', BIGMT.shell(), 'R', BIGMT.heavyReceiver(), 'G', ANY_HARDPLASTIC.grip(), 'M', BIGMT.mechanism() }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_tau, 1), new Object[] { " RD", "CTT", "GMS", 'D', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.BISMOID), 'C', CU.pipe(), 'T', ModItems.coil_advanced_torus, 'G', ANY_HARDPLASTIC.grip(), 'R', BIGMT.lightReceiver(), 'M', BIGMT.mechanism(), 'S', ANY_HARDPLASTIC.stock() }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_lasrifle, 1), new Object[] { "LC ", "BRS", "MG ", 'L', ModItems.crystal_redstone, 'C', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.BISMOID), 'B', ANY_BISMOIDBRONZE.lightBarrel(), 'R', ANY_BISMOIDBRONZE.lightReceiver(), 'S', ANY_HARDPLASTIC.stock(), 'M', BIGMT.mechanism(), 'G', ANY_HARDPLASTIC.grip() }); //SEDNA Ammo CraftingManager.addRecipeAuto(DictFrame.fromOne(ModItems.ammo_standard, EnumAmmo.STONE, 6), new Object[] { "C", "P", "G", 'C', KEY_COBBLESTONE, 'P', Items.paper, 'G', Items.gunpowder }); diff --git a/src/main/java/com/hbm/entity/effect/EntityFireLingering.java b/src/main/java/com/hbm/entity/effect/EntityFireLingering.java index 2c101d471..1aef970e4 100644 --- a/src/main/java/com/hbm/entity/effect/EntityFireLingering.java +++ b/src/main/java/com/hbm/entity/effect/EntityFireLingering.java @@ -19,6 +19,7 @@ public class EntityFireLingering extends Entity { public static int TYPE_DIESEL = 0; public static int TYPE_BALEFIRE = 1; + public static int TYPE_PHOSPHORUS = 2; public int maxAge = 150; public EntityFireLingering(World world) { @@ -72,6 +73,7 @@ public class EntityFireLingering extends Entity { EntityLivingBase livng = (EntityLivingBase) e; HbmLivingProps props = HbmLivingProps.getData(livng); if(this.getType() == this.TYPE_DIESEL) if(props.fire < 60) props.fire = 60; + if(this.getType() == this.TYPE_PHOSPHORUS) if(props.fire < 300) props.fire = 300; if(this.getType() == this.TYPE_BALEFIRE) if(props.balefire < 100) props.balefire = 100; } else { e.setFire(4); @@ -88,6 +90,7 @@ public class EntityFireLingering extends Entity { MovingObjectPosition mop = worldObj.func_147447_a(up, down, false, true, true); if(mop != null && mop.typeOfHit == mop.typeOfHit.BLOCK) down = mop.hitVec; if(this.getType() == this.TYPE_DIESEL) FlameCreator.composeEffectClient(worldObj, x, down.yCoord, z, FlameCreator.META_FIRE); + if(this.getType() == this.TYPE_PHOSPHORUS) FlameCreator.composeEffectClient(worldObj, x, down.yCoord, z, FlameCreator.META_FIRE); if(this.getType() == this.TYPE_BALEFIRE) FlameCreator.composeEffectClient(worldObj, x, down.yCoord, z, FlameCreator.META_BALEFIRE); } } diff --git a/src/main/java/com/hbm/explosion/vanillant/standard/EntityProcessorCrossSmooth.java b/src/main/java/com/hbm/explosion/vanillant/standard/EntityProcessorCrossSmooth.java index 38cb3383f..48d25e4a2 100644 --- a/src/main/java/com/hbm/explosion/vanillant/standard/EntityProcessorCrossSmooth.java +++ b/src/main/java/com/hbm/explosion/vanillant/standard/EntityProcessorCrossSmooth.java @@ -28,8 +28,14 @@ public class EntityProcessorCrossSmooth extends EntityProcessorCross { return this; } + public EntityProcessorCrossSmooth setDamageClass(DamageClass clazz) { + this.clazz = clazz; + return this; + } + @Override public void attackEntity(Entity entity, ExplosionVNT source, float amount) { + if(!entity.isEntityAlive()) return; DamageSource dmg = BulletConfig.getDamage(null, source.exploder instanceof EntityLivingBase ? (EntityLivingBase) source.exploder : null, clazz); if(!(entity instanceof EntityLivingBase)) { entity.attackEntityFrom(dmg, amount); diff --git a/src/main/java/com/hbm/extprop/HbmLivingProps.java b/src/main/java/com/hbm/extprop/HbmLivingProps.java index e295d64bd..8a7331382 100644 --- a/src/main/java/com/hbm/extprop/HbmLivingProps.java +++ b/src/main/java/com/hbm/extprop/HbmLivingProps.java @@ -47,6 +47,7 @@ public class HbmLivingProps implements IExtendedEntityProperties { private int contagion; private int oil; public int fire; + public int phosphorus; public int balefire; private List contamination = new ArrayList(); @@ -284,6 +285,7 @@ public class HbmLivingProps implements IExtendedEntityProperties { props.setInteger("hfr_blacklung", blacklung); props.setInteger("hfr_oil", oil); props.setInteger("hfr_fire", fire); + props.setInteger("hfr_phosphorus", phosphorus); props.setInteger("hfr_balefire", balefire); props.setInteger("hfr_cont_count", this.contamination.size()); @@ -309,6 +311,7 @@ public class HbmLivingProps implements IExtendedEntityProperties { blacklung = props.getInteger("hfr_blacklung"); oil = props.getInteger("hfr_oil"); fire = props.getInteger("hfr_fire"); + phosphorus = props.getInteger("hfr_phosphorus"); balefire = props.getInteger("hfr_balefire"); int cont = props.getInteger("hfr_cont_count"); diff --git a/src/main/java/com/hbm/handler/EntityEffectHandler.java b/src/main/java/com/hbm/handler/EntityEffectHandler.java index 52c80352c..ab683b588 100644 --- a/src/main/java/com/hbm/handler/EntityEffectHandler.java +++ b/src/main/java/com/hbm/handler/EntityEffectHandler.java @@ -575,7 +575,10 @@ public class EntityEffectHandler { if(!entity.isEntityAlive()) return; - if(living.isImmuneToFire()) props.fire = 0; + if(living.isImmuneToFire()) { + props.fire = 0; + props.phosphorus = 0; + } double x = living.posX; double y = living.posY; @@ -590,6 +593,13 @@ public class EntityEffectHandler { FlameCreator.composeEffect(entity.worldObj, x - living.width / 2 + living.width * rand.nextDouble(), y + rand.nextDouble() * living.height, z - living.width / 2 + living.width * rand.nextDouble(), FlameCreator.META_FIRE); } + if(props.phosphorus > 0) { + props.phosphorus--; + if((living.ticksExisted + living.getEntityId()) % 15 == 0) living.worldObj.playSoundEffect(living.posX, living.posY + living.height / 2, living.posZ, "random.fizz", 1F, 1.5F + rand.nextFloat() * 0.5F); + if((living.ticksExisted + living.getEntityId()) % 40 == 0) living.attackEntityFrom(DamageSource.onFire, 5F); + FlameCreator.composeEffect(entity.worldObj, x - living.width / 2 + living.width * rand.nextDouble(), y + rand.nextDouble() * living.height, z - living.width / 2 + living.width * rand.nextDouble(), FlameCreator.META_FIRE); + } + if(props.balefire > 0) { props.balefire--; if((living.ticksExisted + living.getEntityId()) % 15 == 0) living.worldObj.playSoundEffect(living.posX, living.posY + living.height / 2, living.posZ, "random.fizz", 1F, 1.5F + rand.nextFloat() * 0.5F); @@ -598,7 +608,7 @@ public class EntityEffectHandler { FlameCreator.composeEffect(entity.worldObj, x - living.width / 2 + living.width * rand.nextDouble(), y + rand.nextDouble() * living.height, z - living.width / 2 + living.width * rand.nextDouble(), FlameCreator.META_BALEFIRE); } - if(props.fire > 0 || props.balefire > 0) if(!entity.isEntityAlive()) ConfettiUtil.decideConfetti(living, DamageSource.onFire); + if(props.fire > 0 || props.phosphorus > 0 || props.balefire > 0) if(!entity.isEntityAlive()) ConfettiUtil.decideConfetti(living, DamageSource.onFire); } private static void handleDashing(Entity entity) { diff --git a/src/main/java/com/hbm/handler/nei/AmmoPressHandler.java b/src/main/java/com/hbm/handler/nei/AmmoPressHandler.java new file mode 100644 index 000000000..3f1ba26b8 --- /dev/null +++ b/src/main/java/com/hbm/handler/nei/AmmoPressHandler.java @@ -0,0 +1,16 @@ +package com.hbm.handler.nei; + +import com.hbm.blocks.ModBlocks; +import com.hbm.inventory.recipes.AmmoPressRecipes; + +public class AmmoPressHandler extends NEIUniversalHandler { + + public AmmoPressHandler() { + super(ModBlocks.machine_ammo_press.getLocalizedName(), ModBlocks.machine_ammo_press, AmmoPressRecipes.getRecipes()); + } + + @Override + public String getKey() { + return "ntmAmmoPress"; + } +} diff --git a/src/main/java/com/hbm/inventory/OreDictManager.java b/src/main/java/com/hbm/inventory/OreDictManager.java index ef6fb0d36..b918c1480 100644 --- a/src/main/java/com/hbm/inventory/OreDictManager.java +++ b/src/main/java/com/hbm/inventory/OreDictManager.java @@ -546,15 +546,15 @@ public class OreDictManager { for(NTMMaterial mat : Mats.orderedList) { if(mat.smeltable == SmeltingBehavior.SMELTABLE) { - if(mat.autogen.contains(MaterialShapes.BOLT)) for(String name : mat.names) OreDictionary.registerOre(MaterialShapes.BOLT.name() + name, new ItemStack(ModItems.bolt, 1, mat.id)); - if(mat.autogen.contains(MaterialShapes.INGOT)) for(String name : mat.names) OreDictionary.registerOre(MaterialShapes.INGOT.name() + name, new ItemStack(ModItems.ingot_raw, 1, mat.id)); if(mat.autogen.contains(MaterialShapes.CASTPLATE)) for(String name : mat.names) OreDictionary.registerOre(MaterialShapes.CASTPLATE.name() + name, new ItemStack(ModItems.plate_cast, 1, mat.id)); if(mat.autogen.contains(MaterialShapes.WELDEDPLATE)) for(String name : mat.names) OreDictionary.registerOre(MaterialShapes.WELDEDPLATE.name() + name, new ItemStack(ModItems.plate_welded, 1, mat.id)); if(mat.autogen.contains(MaterialShapes.HEAVY_COMPONENT)) for(String name : mat.names) OreDictionary.registerOre(MaterialShapes.HEAVY_COMPONENT.name() + name, new ItemStack(ModItems.heavy_component, 1, mat.id)); if(mat.autogen.contains(MaterialShapes.DENSEWIRE)) for(String name : mat.names) OreDictionary.registerOre(MaterialShapes.DENSEWIRE.name() + name, new ItemStack(ModItems.wire_dense, 1, mat.id)); - if(mat.autogen.contains(MaterialShapes.SHELL)) for(String name : mat.names) OreDictionary.registerOre(MaterialShapes.SHELL.name() + name, new ItemStack(ModItems.shell, 1, mat.id)); - if(mat.autogen.contains(MaterialShapes.PIPE)) for(String name : mat.names) OreDictionary.registerOre(MaterialShapes.PIPE.name() + name, new ItemStack(ModItems.pipe, 1, mat.id)); } + if(mat.autogen.contains(MaterialShapes.BOLT)) for(String name : mat.names) OreDictionary.registerOre(MaterialShapes.BOLT.name() + name, new ItemStack(ModItems.bolt, 1, mat.id)); + if(mat.autogen.contains(MaterialShapes.INGOT)) for(String name : mat.names) OreDictionary.registerOre(MaterialShapes.INGOT.name() + name, new ItemStack(ModItems.ingot_raw, 1, mat.id)); + if(mat.autogen.contains(MaterialShapes.SHELL)) for(String name : mat.names) OreDictionary.registerOre(MaterialShapes.SHELL.name() + name, new ItemStack(ModItems.shell, 1, mat.id)); + if(mat.autogen.contains(MaterialShapes.PIPE)) for(String name : mat.names) OreDictionary.registerOre(MaterialShapes.PIPE.name() + name, new ItemStack(ModItems.pipe, 1, mat.id)); if(mat.autogen.contains(MaterialShapes.FRAGMENT)) for(String name : mat.names) OreDictionary.registerOre(MaterialShapes.FRAGMENT.name() + name, new ItemStack(ModItems.bedrock_ore_fragment, 1, mat.id)); if(mat.autogen.contains(MaterialShapes.WIRE)) for(String name : mat.names) OreDictionary.registerOre(MaterialShapes.WIRE.name() + name, new ItemStack(ModItems.wire_fine, 1, mat.id)); @@ -674,10 +674,11 @@ public class OreDictManager { public static void registerGroups() { ANY_RUBBER.addPrefix(INGOT, true); - ANY_PLASTIC.addPrefix(INGOT, true).addPrefix(DUST, true).addPrefix(BLOCK, true); - ANY_HARDPLASTIC.addPrefix(INGOT, true); - ANY_RESISTANTALLOY.addPrefix(INGOT, true).addPrefix(DUST, true).addPrefix(CASTPLATE, true).addPrefix(WELDEDPLATE, true).addPrefix(HEAVY_COMPONENT, true).addPrefix(BLOCK, true); - ANY_BISMOIDBRONZE.addPrefix(INGOT, true).addPrefix(CASTPLATE, true); + ANY_PLASTIC.addPrefix(INGOT, true).addPrefix(DUST, true).addPrefix(BLOCK, true).addPrefix(GRIP, true).addPrefix(STOCK, true); + ANY_HARDPLASTIC.addPrefix(INGOT, true).addPrefix(STOCK, true).addPrefix(GRIP, true); + ANY_RESISTANTALLOY.addPrefix(INGOT, true).addPrefix(DUST, true).addPrefix(CASTPLATE, true).addPrefix(WELDEDPLATE, true).addPrefix(HEAVY_COMPONENT, true).addPrefix(BLOCK, true) + .addPrefix(LIGHTBARREL, true).addPrefix(HEAVYBARREL, true).addPrefix(LIGHTRECEIVER, true).addPrefix(HEAVYRECEIVER, true); + ANY_BISMOIDBRONZE.addPrefix(INGOT, true).addPrefix(CASTPLATE, true).addPrefix(LIGHTBARREL, true).addPrefix(HEAVYBARREL, true).addPrefix(LIGHTRECEIVER, true).addPrefix(HEAVYRECEIVER, true); ANY_TAR.addPrefix(ANY, false); } @@ -685,9 +686,7 @@ public class OreDictManager { @SubscribeEvent public void onRegisterOre(OreRegisterEvent event) { - - if(recursionBrake) - return; + if(recursionBrake) return; recursionBrake = true; @@ -1016,6 +1015,13 @@ public class OreDictManager { public String billet() { return BILLET.name() + groupName; } public String block() { return BLOCK.name() + groupName; } public String ore() { return ORE.name() + groupName; } + public String lightBarrel() { return LIGHTBARREL.name() + groupName; } + public String heavyBarrel() { return HEAVYBARREL.name() + groupName; } + public String lightReceiver() { return LIGHTRECEIVER.name() + groupName; } + public String heavyReceiver() { return HEAVYRECEIVER.name() + groupName; } + public String mechanism() { return MECHANISM.name() + groupName; } + public String stock() { return STOCK.name() + groupName; } + public String grip() { return GRIP.name() + groupName; } } private static void addReRegistration(String original, String additional) { diff --git a/src/main/java/com/hbm/inventory/material/Mats.java b/src/main/java/com/hbm/inventory/material/Mats.java index adfa898fb..122b660cb 100644 --- a/src/main/java/com/hbm/inventory/material/Mats.java +++ b/src/main/java/com/hbm/inventory/material/Mats.java @@ -137,13 +137,13 @@ public class Mats { public static final NTMMaterial MAT_MINGRADE = makeSmeltable(_AS + 1, MINGRADE, 0xFFBA7D, 0xAF1700, 0xE44C0F).setAutogen(WIRE, DUST, BLOCK).m(); public static final NTMMaterial MAT_ALLOY = makeSmeltable(_AS + 2, ALLOY, 0xFF8330, 0x700000, 0xFF7318).setAutogen(WIRE, DUST, DENSEWIRE, PLATE, CASTPLATE, BLOCK, HEAVY_COMPONENT).m(); public static final NTMMaterial MAT_DURA = makeSmeltable(_AS + 3, DURA, 0x183039, 0x030B0B, 0x376373).setAutogen(BOLT, DUST, PIPE, BLOCK, LIGHTBARREL, HEAVYBARREL, LIGHTRECEIVER, HEAVYRECEIVER, GRIP).m(); - public static final NTMMaterial MAT_DESH = makeSmeltable(_AS + 12, DESH, 0xFF6D6D, 0x720000, 0xF22929).setAutogen(DUST, CASTPLATE, BLOCK, HEAVY_COMPONENT).m(); + public static final NTMMaterial MAT_DESH = makeSmeltable(_AS + 12, DESH, 0xFF6D6D, 0x720000, 0xF22929).setAutogen(DUST, CASTPLATE, BLOCK, HEAVY_COMPONENT, LIGHTBARREL, HEAVYBARREL, LIGHTRECEIVER, STOCK, GRIP).m(); public static final NTMMaterial MAT_STAR = makeSmeltable(_AS + 5, STAR, 0xCCCCEA, 0x11111A, 0xA5A5D3).setAutogen(DUST, DENSEWIRE, BLOCK).m(); - public static final NTMMaterial MAT_FERRO = makeSmeltable(_AS + 7, FERRO, 0xB7B7C9, 0x101022, 0x6B6B8B).m(); - public static final NTMMaterial MAT_TCALLOY = makeSmeltable(_AS + 6, TCALLOY, 0xD4D6D6, 0x323D3D, 0x9CA6A6).setAutogen(DUST, CASTPLATE, WELDEDPLATE, HEAVY_COMPONENT).m(); - public static final NTMMaterial MAT_CDALLOY = makeSmeltable(_AS + 13, CDALLOY, 0xF7DF8F, 0x604308, 0xFBD368).setAutogen(CASTPLATE, WELDEDPLATE, HEAVY_COMPONENT).m(); - public static final NTMMaterial MAT_BBRONZE = makeSmeltable(_AS + 16, BBRONZE, 0xE19A69, 0x485353, 0x987D65).setAutogen(CASTPLATE).m(); - public static final NTMMaterial MAT_ABRONZE = makeSmeltable(_AS + 17, ABRONZE, 0xDB9462, 0x203331, 0x77644D).setAutogen(CASTPLATE).m(); + public static final NTMMaterial MAT_FERRO = makeSmeltable(_AS + 7, FERRO, 0xB7B7C9, 0x101022, 0x6B6B8B).setAutogen(HEAVYBARREL, HEAVYRECEIVER).m(); + public static final NTMMaterial MAT_TCALLOY = makeSmeltable(_AS + 6, TCALLOY, 0xD4D6D6, 0x323D3D, 0x9CA6A6).setAutogen(DUST, CASTPLATE, WELDEDPLATE, HEAVY_COMPONENT, LIGHTBARREL, HEAVYBARREL, LIGHTRECEIVER, HEAVYRECEIVER).m(); + public static final NTMMaterial MAT_CDALLOY = makeSmeltable(_AS + 13, CDALLOY, 0xF7DF8F, 0x604308, 0xFBD368).setAutogen(CASTPLATE, WELDEDPLATE, HEAVY_COMPONENT, LIGHTBARREL, HEAVYBARREL, LIGHTRECEIVER, HEAVYRECEIVER).m(); + public static final NTMMaterial MAT_BBRONZE = makeSmeltable(_AS + 16, BBRONZE, 0xE19A69, 0x485353, 0x987D65).setAutogen(CASTPLATE, LIGHTBARREL, LIGHTRECEIVER).m(); + public static final NTMMaterial MAT_ABRONZE = makeSmeltable(_AS + 17, ABRONZE, 0xDB9462, 0x203331, 0x77644D).setAutogen(CASTPLATE, LIGHTBARREL, LIGHTRECEIVER).m(); public static final NTMMaterial MAT_BSCCO = makeSmeltable(_AS + 18, BSCCO, 0x767BF1, 0x000000, 0x5E62C0).setAutogen(DENSEWIRE).m(); public static final NTMMaterial MAT_MAGTUNG = makeSmeltable(_AS + 8, MAGTUNG, 0x22A2A2, 0x0F0F0F, 0x22A2A2).setAutogen(WIRE, DUST, DENSEWIRE, BLOCK).m(); public static final NTMMaterial MAT_CMB = makeSmeltable(_AS + 9, CMB, 0x6F6FB4, 0x000011, 0x6F6FB4).setAutogen(DUST, PLATE, CASTPLATE, WELDEDPLATE, BLOCK).m(); @@ -152,11 +152,16 @@ public class Mats { public static final NTMMaterial MAT_SLAG = makeSmeltable(_AS + 11, SLAG, 0x554940, 0x34281F, 0x6C6562).setAutogen(BLOCK).n(); public static final NTMMaterial MAT_MUD = makeSmeltable(_AS + 14, MUD, 0xBCB5A9, 0x481213, 0x96783B).n(); public static final NTMMaterial MAT_GUNMETAL = makeSmeltable(_AS + 19, GUNMETAL, 0xFFEF3F, 0xAD3600, 0xF9C62C).setAutogen(LIGHTBARREL, HEAVYBARREL, LIGHTRECEIVER, HEAVYRECEIVER, MECHANISM, STOCK, GRIP).n(); - public static final NTMMaterial MAT_WEAPONSTEEL = makeSmeltable(_AS + 20, WEAPONSTEEL, 0xA0A0A0, 0x000000, 0x808080).setAutogen(LIGHTBARREL, HEAVYBARREL, LIGHTRECEIVER, HEAVYRECEIVER, MECHANISM, STOCK, GRIP).n(); - public static final NTMMaterial MAT_SATURN = makeSmeltable(_AS + 4, BIGMT, 0x3AC4DA, 0x09282C, 0x30A4B7).setAutogen(PLATE, CASTPLATE, BLOCK, LIGHTBARREL, HEAVYBARREL, LIGHTRECEIVER, HEAVYRECEIVER, MECHANISM, STOCK, GRIP).m(); + public static final NTMMaterial MAT_WEAPONSTEEL = makeSmeltable(_AS + 20, WEAPONSTEEL, 0xA0A0A0, 0x000000, 0x808080).setAutogen(SHELL, LIGHTBARREL, HEAVYBARREL, LIGHTRECEIVER, HEAVYRECEIVER, MECHANISM, STOCK, GRIP).n(); + public static final NTMMaterial MAT_SATURN = makeSmeltable(_AS + 4, BIGMT, 0x3AC4DA, 0x09282C, 0x30A4B7).setAutogen(PLATE, CASTPLATE, SHELL, BLOCK, LIGHTBARREL, HEAVYBARREL, LIGHTRECEIVER, HEAVYRECEIVER, MECHANISM, STOCK, GRIP).m(); //Extension public static final NTMMaterial MAT_RAREEARTH = makeNonSmeltable(_ES + 00, RAREEARTH, 0xC1BDBD, 0x384646, 0x7B7F7F).setAutogen(FRAGMENT).n(); + public static final NTMMaterial MAT_POLYMER = makeNonSmeltable(_ES + 01, POLYMER, 0x363636, 0x040404, 0x272727).setAutogen(STOCK, GRIP).n(); + public static final NTMMaterial MAT_BAKELITE = makeNonSmeltable(_ES + 02, BAKELITE, 0xF28086, 0x2B0608, 0xC93940).setAutogen(STOCK, GRIP).n(); + public static final NTMMaterial MAT_RUBBER = makeNonSmeltable(_ES + 03, RUBBER, 0x817F75, 0x0F0D03, 0x4B4A3F).setAutogen(PIPE, GRIP).n(); + public static final NTMMaterial MAT_HARDPLASTIC = makeNonSmeltable(_ES + 04, PC, 0xEDE7C4, 0x908A67, 0xE1DBB8).setAutogen(STOCK, GRIP).n(); + public static final NTMMaterial MAT_PVC = makeNonSmeltable(_ES + 05, PVC, 0xFCFCFC, 0x9F9F9F, 0xF0F0F0).setAutogen(STOCK, GRIP).n(); public static NTMMaterial makeSmeltable(int id, DictFrame dict, int color) { return makeSmeltable(id, dict, color, color, color); } diff --git a/src/main/java/com/hbm/inventory/recipes/AmmoPressRecipes.java b/src/main/java/com/hbm/inventory/recipes/AmmoPressRecipes.java index af8c71dbd..d65a7b064 100644 --- a/src/main/java/com/hbm/inventory/recipes/AmmoPressRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/AmmoPressRecipes.java @@ -2,6 +2,7 @@ package com.hbm.inventory.recipes; import java.io.IOException; import java.util.ArrayList; +import java.util.HashMap; import java.util.List; import static com.hbm.inventory.OreDictManager.*; @@ -14,6 +15,7 @@ import com.hbm.inventory.OreDictManager.DictFrame; import com.hbm.inventory.RecipesCommon.AStack; import com.hbm.inventory.RecipesCommon.ComparableStack; import com.hbm.inventory.RecipesCommon.OreDictStack; +import com.hbm.inventory.fluid.Fluids; import com.hbm.inventory.recipes.loader.SerializableRecipe; import com.hbm.items.ItemEnums.EnumCasingType; import com.hbm.items.ModItems; @@ -41,6 +43,7 @@ public class AmmoPressRecipes extends SerializableRecipe { OreDictStack smokeless = new OreDictStack(ANY_SMOKELESS.dust()); OreDictStack he = new OreDictStack(ANY_HIGHEXPLOSIVE.ingot()); OreDictStack wp = new OreDictStack(P_WHITE.ingot()); + OreDictStack rp = new OreDictStack(P_RED.dust()); ComparableStack cSmall = new ComparableStack(ModItems.casing, 1, EnumCasingType.SMALL); ComparableStack cBig = new ComparableStack(ModItems.casing, 1, EnumCasingType.LARGE); ComparableStack sSmall = new ComparableStack(ModItems.casing, 1, EnumCasingType.SMALL_STEEL); @@ -229,6 +232,47 @@ public class AmmoPressRecipes extends SerializableRecipe { null, wp, null, null, smokeless, null, null, sShell, null)); + + recipes.add(new AmmoPressRecipe(DictFrame.fromOne(ModItems.ammo_standard, EnumAmmo.G26_FLARE, 4), + null, rp, null, + null, smokeless, null, + null, cBig, null)); + + ComparableStack dyn = new ComparableStack(ModItems.ball_dynamite); + OreDictStack coplate = new OreDictStack(CU.plate()); + OreDictStack diesel = new OreDictStack(Fluids.DIESEL.getDict(1_000)); + recipes.add(new AmmoPressRecipe(DictFrame.fromOne(ModItems.ammo_standard, EnumAmmo.G40_HE, 4), + null, dyn, null, + null, smokeless, null, + null, cBig, null)); + recipes.add(new AmmoPressRecipe(DictFrame.fromOne(ModItems.ammo_standard, EnumAmmo.G40_HEAT, 4), + coplate, he, null, + null, smokeless, null, + null, cBig, null)); + recipes.add(new AmmoPressRecipe(DictFrame.fromOne(ModItems.ammo_standard, EnumAmmo.G40_DEMO, 4), + null, he.copy(2), null, + null, smokeless, null, + null, cBig, null)); + recipes.add(new AmmoPressRecipe(DictFrame.fromOne(ModItems.ammo_standard, EnumAmmo.G40_INC, 4), + null, diesel, null, + null, smokeless, null, + null, cBig, null)); + recipes.add(new AmmoPressRecipe(DictFrame.fromOne(ModItems.ammo_standard, EnumAmmo.G40_PHOSPHORUS, 4), + null, wp, null, + null, smokeless, null, + null, cBig, null)); + } + + public static HashMap getRecipes() { + HashMap recipes = new HashMap(); + + for(AmmoPressRecipe recipe : AmmoPressRecipes.recipes) { + List inputs = new ArrayList(); + for(AStack stack : recipe.input) if(stack != null) inputs.add(stack); + recipes.put(inputs.toArray(new AStack[0]), recipe.output.copy()); + } + + return recipes; } @Override diff --git a/src/main/java/com/hbm/inventory/recipes/anvil/AnvilRecipes.java b/src/main/java/com/hbm/inventory/recipes/anvil/AnvilRecipes.java index 767950bd8..3bffaac96 100644 --- a/src/main/java/com/hbm/inventory/recipes/anvil/AnvilRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/anvil/AnvilRecipes.java @@ -18,7 +18,6 @@ import com.hbm.inventory.material.Mats; import com.hbm.inventory.material.NTMMaterial; import com.hbm.inventory.recipes.AssemblerRecipes; import com.hbm.inventory.recipes.AssemblerRecipes.AssemblerRecipe; -import com.hbm.items.ItemAmmoEnums.*; import com.hbm.items.ItemEnums.EnumChunkType; import com.hbm.items.ModItems; import com.hbm.items.food.ItemFlask.EnumInfusion; @@ -27,7 +26,6 @@ import com.hbm.items.machine.ItemCircuit.EnumCircuitType; 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; @@ -184,9 +182,13 @@ public class AnvilRecipes { for(NTMMaterial mat : Mats.orderedList) if(mat.autogen.contains(MaterialShapes.SHELL)) constructionRecipes.add(new AnvilConstructionRecipe( new OreDictStack(MaterialShapes.PLATE.name() + mat.names[0], 4), new AnvilOutput(new ItemStack(ModItems.shell, 1, mat.id))).setTier(1)); - for(NTMMaterial mat : Mats.orderedList) if(mat.autogen.contains(MaterialShapes.PIPE)) constructionRecipes.add(new AnvilConstructionRecipe( - new OreDictStack(MaterialShapes.PLATE.name() + mat.names[0], 3), - new AnvilOutput(new ItemStack(ModItems.pipe, 1, mat.id))).setTier(1)); + for(NTMMaterial mat : Mats.orderedList) if(mat.autogen.contains(MaterialShapes.PIPE)) { + String key = (OreDictionary.doesOreNameExist(MaterialShapes.PLATE.name() + mat.names[0]) ? + MaterialShapes.PLATE.name() + mat.names[0] : MaterialShapes.INGOT.name() + mat.names[0]); + constructionRecipes.add(new AnvilConstructionRecipe( + new OreDictStack(key, 3), + new AnvilOutput(new ItemStack(ModItems.pipe, 1, mat.id))).setTier(1)); + } constructionRecipes.add(new AnvilConstructionRecipe( new ComparableStack(ModItems.coil_copper, 2), @@ -578,112 +580,8 @@ public class AnvilRecipes { constructionRecipes.add(new AnvilConstructionRecipe(new AStack[]{new ComparableStack(ModItems.mold_base), new OreDictStack(STEEL.ingot(), 4)}, new AnvilOutput(new ItemStack(ModItems.mold, 1, 27))).setTier(2)); constructionRecipes.add(new AnvilConstructionRecipe(new AStack[]{new ComparableStack(ModItems.mold_base), new OreDictStack(STEEL.ingot(), 4)}, new AnvilOutput(new ItemStack(ModItems.mold, 1, 28))).setTier(2)); - constructionRecipes.add(new AnvilConstructionRecipe(new OreDictStack(CU.plate()), new AnvilOutput(new ItemStack(ModItems.casing_357))).setTier(1)); - constructionRecipes.add(new AnvilConstructionRecipe(new OreDictStack(CU.plate()), new AnvilOutput(new ItemStack(ModItems.casing_44))).setTier(1)); - constructionRecipes.add(new AnvilConstructionRecipe(new OreDictStack(CU.plate()), new AnvilOutput(new ItemStack(ModItems.casing_9))).setTier(1)); - constructionRecipes.add(new AnvilConstructionRecipe(new OreDictStack(CU.plate()), new AnvilOutput(new ItemStack(ModItems.casing_50))).setTier(1)); - constructionRecipes.add(new AnvilConstructionRecipe(new OreDictStack(CU.plate()), new AnvilOutput(new ItemStack(ModItems.casing_buckshot))).setTier(1)); - pullFromAssembler(new ComparableStack(ModItems.pellet_buckshot), 1); pullFromAssembler(new ComparableStack(ModItems.pellet_canister), 1); - - constructionRecipes.add(new AnvilConstructionRecipe( new AStack[]{ - new ComparableStack(ModItems.powder_chlorophyte, 1), - new OreDictStack(PB.nugget(), 12),}, - new AnvilOutput(new ItemStack(ModItems.pellet_chlorophyte, 2))).setTier(1)); - - Object[][] recs = new Object[][] { - {ModItems.ammo_12gauge.stackFromEnum(12, Ammo12Gauge.STOCK), P_RED.dust(), ModItems.ammo_12gauge.stackFromEnum(12, Ammo12Gauge.INCENDIARY), 2}, - {ModItems.ammo_12gauge.stackFromEnum(12, Ammo12Gauge.STOCK), Item.getItemFromBlock(ModBlocks.gravel_obsidian), ModItems.ammo_12gauge.stackFromEnum(12, Ammo12Gauge.SHRAPNEL), 2}, - {ModItems.ammo_12gauge.stackFromEnum(12, Ammo12Gauge.STOCK), U238.ingot(), ModItems.ammo_12gauge.stackFromEnum(12, Ammo12Gauge.DU), 3}, - {ModItems.ammo_12gauge.stackFromEnum(120, Ammo12Gauge.STOCK), ModItems.coin_maskman, ModItems.ammo_12gauge.stackFromEnum(120, Ammo12Gauge.SLEEK), 4}, - - {ModItems.ammo_20gauge.stackFromEnum(12, Ammo20Gauge.STOCK), P_RED.dust(), ModItems.ammo_20gauge.stackFromEnum(12, Ammo20Gauge.INCENDIARY), 2}, - {ModItems.ammo_20gauge.stackFromEnum(12, Ammo20Gauge.STOCK), Item.getItemFromBlock(ModBlocks.gravel_obsidian), ModItems.ammo_20gauge.stackFromEnum(12, Ammo20Gauge.SHRAPNEL), 2}, - {ModItems.ammo_20gauge.stackFromEnum(12, Ammo20Gauge.STOCK), ModItems.powder_poison, ModItems.ammo_20gauge.stackFromEnum(12, Ammo20Gauge.CAUSTIC), 2}, - {ModItems.ammo_20gauge.stackFromEnum(12, Ammo20Gauge.STOCK), DIAMOND.dust(), ModItems.ammo_20gauge.stackFromEnum(12, Ammo20Gauge.SHOCK), 2}, - {ModItems.ammo_20gauge.stackFromEnum(12, Ammo20Gauge.STOCK), Item.getItemFromBlock(Blocks.soul_sand), ModItems.ammo_20gauge.stackFromEnum(12, Ammo20Gauge.WITHER), 3}, - {ModItems.ammo_20gauge.stackFromEnum(120, Ammo20Gauge.STOCK), ModItems.coin_maskman, ModItems.ammo_20gauge.stackFromEnum(120, Ammo20Gauge.SLEEK), 4}, - - {ModItems.ammo_4gauge.stackFromEnum(12, Ammo4Gauge.FLECHETTE), P_WHITE.ingot(), ModItems.ammo_4gauge.stackFromEnum(12, Ammo4Gauge.FLECHETTE_PHOSPHORUS), 2}, - {ModItems.ammo_4gauge.stackFromEnum(12, Ammo4Gauge.EXPLOSIVE), ModItems.egg_balefire_shard, ModItems.ammo_4gauge.stackFromEnum(12, Ammo4Gauge.BALEFIRE), 4}, - {ModItems.ammo_4gauge.stackFromEnum(4, Ammo4Gauge.EXPLOSIVE), ModItems.ammo_rocket, ModItems.ammo_4gauge.stackFromEnum(4, Ammo4Gauge.KAMPF), 2}, - {ModItems.ammo_4gauge.stackFromEnum(12, Ammo4Gauge.KAMPF), ModItems.pellet_canister, ModItems.ammo_4gauge.stackFromEnum(12, Ammo4Gauge.CANISTER), 3}, - {ModItems.ammo_4gauge.stackFromEnum(4, Ammo4Gauge.STOCK), ModItems.pellet_claws, ModItems.ammo_4gauge.stackFromEnum(4, Ammo4Gauge.CLAW), 5}, - {ModItems.ammo_4gauge.stackFromEnum(4, Ammo4Gauge.STOCK), ModItems.toothpicks, ModItems.ammo_4gauge.stackFromEnum(4, Ammo4Gauge.VAMPIRE), 5}, - {ModItems.ammo_4gauge.stackFromEnum(Ammo4Gauge.STOCK), ModItems.pellet_charged, ModItems.ammo_4gauge.stackFromEnum(Ammo4Gauge.VOID), 5}, - {ModItems.ammo_4gauge.stackFromEnum(120, Ammo4Gauge.STOCK), ModItems.coin_maskman, ModItems.ammo_4gauge.stackFromEnum(120, Ammo4Gauge.SLEEK), 4}, - - {ModItems.ammo_44.stackFromEnum(24, Ammo44Magnum.STOCK), DURA.ingot(), ModItems.ammo_44.stackFromEnum(24, Ammo44Magnum.AP), 2}, - {ModItems.ammo_44.stackFromEnum(24, Ammo44Magnum.STOCK), U238.ingot(), ModItems.ammo_44.stackFromEnum(24, Ammo44Magnum.DU), 2}, - {ModItems.ammo_44.stackFromEnum(24, Ammo44Magnum.STOCK), P_WHITE.ingot(), ModItems.ammo_44.stackFromEnum(24, Ammo44Magnum.PHOSPHORUS), 2}, - {ModItems.ammo_44.stackFromEnum(12, Ammo44Magnum.DU), STAR.ingot(), ModItems.ammo_44.stackFromEnum(12, Ammo44Magnum.STAR), 3}, - {ModItems.ammo_44.stackFromEnum(24, Ammo44Magnum.STOCK), ModItems.pellet_chlorophyte, ModItems.ammo_44.stackFromEnum(24, Ammo44Magnum.CHLOROPHYTE), 3}, - - {ModItems.ammo_45.stackFromEnum(32, Ammo45ACP.STOCK), DURA.ingot(), ModItems.ammo_45.stackFromEnum(32, Ammo45ACP.AP), 3}, - {ModItems.ammo_45.stackFromEnum(32, Ammo45ACP.STOCK), U238.ingot(), ModItems.ammo_45.stackFromEnum(32, Ammo45ACP.DU), 3}, - - {ModItems.ammo_5mm.stackFromEnum(128, Ammo5mm.STOCK), ModItems.ingot_semtex, ModItems.ammo_5mm.stackFromEnum(128, Ammo5mm.EXPLOSIVE), 2}, - {ModItems.ammo_5mm.stackFromEnum(128, Ammo5mm.STOCK), U238.ingot(), ModItems.ammo_5mm.stackFromEnum(128, Ammo5mm.DU), 2}, - {ModItems.ammo_5mm.stackFromEnum(32, Ammo5mm.DU), STAR.ingot(), ModItems.ammo_5mm.stackFromEnum(32, Ammo5mm.STAR), 3}, - {ModItems.ammo_5mm.stackFromEnum(128, Ammo5mm.STOCK), ModItems.pellet_chlorophyte, ModItems.ammo_5mm.stackFromEnum(128, Ammo5mm.CHLOROPHYTE), 3}, - - {ModItems.ammo_9mm.stackFromEnum(32, Ammo9mm.STOCK), DURA.ingot(), ModItems.ammo_9mm.stackFromEnum(32, Ammo9mm.AP), 2}, - {ModItems.ammo_9mm.stackFromEnum(32, Ammo9mm.STOCK), U238.ingot(), ModItems.ammo_9mm.stackFromEnum(32, Ammo9mm.DU), 2}, - {ModItems.ammo_9mm.stackFromEnum(32, Ammo9mm.STOCK), ModItems.pellet_chlorophyte, ModItems.ammo_9mm.stackFromEnum(32, Ammo9mm.CHLOROPHYTE), 3}, - - {ModItems.ammo_22lr.stackFromEnum(32, Ammo22LR.STOCK), DURA.ingot(), ModItems.ammo_22lr.stackFromEnum(32, Ammo22LR.AP), 2}, - {ModItems.ammo_22lr.stackFromEnum(32, Ammo22LR.STOCK), ModItems.pellet_chlorophyte, ModItems.ammo_22lr.stackFromEnum(32, Ammo22LR.CHLOROPHYTE), 3}, - - {ModItems.ammo_50bmg.stackFromEnum(16, Ammo50BMG.STOCK), P_RED.dust(), ModItems.ammo_50bmg.stackFromEnum(16, Ammo50BMG.INCENDIARY), 2}, - {ModItems.ammo_50bmg.stackFromEnum(16, Ammo50BMG.STOCK), P_WHITE.ingot(), ModItems.ammo_50bmg.stackFromEnum(16, Ammo50BMG.PHOSPHORUS), 2}, - {ModItems.ammo_50bmg.stackFromEnum(16, Ammo50BMG.STOCK), ModItems.ingot_semtex, ModItems.ammo_50bmg.stackFromEnum(16, Ammo50BMG.EXPLOSIVE), 2}, - {ModItems.ammo_50bmg.stackFromEnum(16, Ammo50BMG.STOCK), DURA.ingot(), ModItems.ammo_50bmg.stackFromEnum(16, Ammo50BMG.AP), 2}, - {ModItems.ammo_50bmg.stackFromEnum(16, Ammo50BMG.STOCK), U238.ingot(), ModItems.ammo_50bmg.stackFromEnum(16, Ammo50BMG.DU), 2}, - {ModItems.ammo_50bmg.stackFromEnum(8, Ammo50BMG.DU), STAR.ingot(), ModItems.ammo_50bmg.stackFromEnum(8, Ammo50BMG.STAR), 3}, - {ModItems.ammo_50bmg.stackFromEnum(16, Ammo50BMG.STOCK), ModItems.pellet_chlorophyte, ModItems.ammo_50bmg.stackFromEnum(16, Ammo50BMG.CHLOROPHYTE), 3}, - {ModItems.ammo_50bmg.stackFromEnum(128, Ammo50BMG.STOCK), ModItems.coin_maskman, ModItems.ammo_50bmg.stackFromEnum(128, Ammo50BMG.SLEEK), 4}, - {ModItems.ammo_50bmg.stackFromEnum(16, Ammo50BMG.STOCK), ModItems.pellet_flechette, ModItems.ammo_50bmg.stackFromEnum(16, Ammo50BMG.FLECHETTE), 2}, - {ModItems.ammo_50bmg.stackFromEnum(16, Ammo50BMG.FLECHETTE), ModItems.nugget_am_mix, ModItems.ammo_50bmg.stackFromEnum(16, Ammo50BMG.FLECHETTE_AM), 3}, - {ModItems.ammo_50bmg.stackFromEnum(32, Ammo50BMG.FLECHETTE), ModItems.powder_polonium, ModItems.ammo_50bmg.stackFromEnum(32, Ammo50BMG.FLECHETTE_PO), 3}, - - {ModItems.ammo_50ae.stackFromEnum(32, Ammo50AE.STOCK), DURA.ingot(), ModItems.ammo_50ae.stackFromEnum(32, Ammo50AE.AP), 2}, - {ModItems.ammo_50ae.stackFromEnum(32, Ammo50AE.STOCK), U238.ingot(), ModItems.ammo_50ae.stackFromEnum(32, Ammo50AE.DU), 2}, - {ModItems.ammo_50ae.stackFromEnum(16, Ammo50AE.DU), STAR.ingot(), ModItems.ammo_50ae.stackFromEnum(16, Ammo50AE.STAR), 3}, - {ModItems.ammo_50ae.stackFromEnum(32, Ammo50AE.STOCK), ModItems.pellet_chlorophyte, ModItems.ammo_50ae.stackFromEnum(32, Ammo50AE.CHLOROPHYTE), 3}, - - {ModItems.ammo_556.stackFromEnum(32, Ammo556mm.STOCK), P_WHITE.ingot(), ModItems.ammo_556.stackFromEnum(32, Ammo556mm.PHOSPHORUS), 2}, - {ModItems.ammo_556.stackFromEnum(32, Ammo556mm.STOCK), DURA.ingot(), ModItems.ammo_556.stackFromEnum(32, Ammo556mm.AP), 2}, - {ModItems.ammo_556.stackFromEnum(32, Ammo556mm.STOCK), U238.ingot(), ModItems.ammo_556.stackFromEnum(32, Ammo556mm.DU), 2}, - {ModItems.ammo_556.stackFromEnum(16, Ammo556mm.DU), STAR.ingot(), ModItems.ammo_556.stackFromEnum(16, Ammo556mm.STAR), 3}, - {ModItems.ammo_556.stackFromEnum(32, Ammo556mm.STOCK), ModItems.pellet_chlorophyte, ModItems.ammo_556.stackFromEnum(32, Ammo556mm.CHLOROPHYTE), 3}, - {ModItems.ammo_556.stackFromEnum(128, Ammo556mm.STOCK), ModItems.coin_maskman, ModItems.ammo_556.stackFromEnum(128, Ammo556mm.SLEEK), 4}, - {ModItems.ammo_556.stackFromEnum(32, Ammo556mm.STOCK), Items.redstone, ModItems.ammo_556.stackFromEnum(32, Ammo556mm.TRACER), 2}, - {ModItems.ammo_556.stackFromEnum(32, Ammo556mm.STOCK), ModItems.pellet_flechette, ModItems.ammo_556.stackFromEnum(32, Ammo556mm.FLECHETTE), 2}, - {ModItems.ammo_556.stackFromEnum(32, Ammo556mm.FLECHETTE), P_RED.dust(), ModItems.ammo_556.stackFromEnum(32, Ammo556mm.FLECHETTE_INCENDIARY), 2}, - {ModItems.ammo_556.stackFromEnum(32, Ammo556mm.FLECHETTE), P_WHITE.ingot(), ModItems.ammo_556.stackFromEnum(32, Ammo556mm.FLECHETTE_PHOSPHORUS), 2}, - {ModItems.ammo_556.stackFromEnum(32, Ammo556mm.FLECHETTE), U238.ingot(), ModItems.ammo_556.stackFromEnum(32, Ammo556mm.FLECHETTE_DU), 2}, - {ModItems.ammo_556.stackFromEnum(100, Ammo556mm.FLECHETTE), ModItems.coin_maskman, ModItems.ammo_556.stackFromEnum(128, Ammo556mm.FLECHETTE_SLEEK), 4}, - {ModItems.ammo_556.stackFromEnum(32, Ammo556mm.FLECHETTE), ModItems.pellet_chlorophyte, ModItems.ammo_556.stackFromEnum(32, Ammo556mm.FLECHETTE_CHLOROPHYTE), 3}, - - {ModItems.ammo_762.stackFromEnum(32, Ammo762NATO.STOCK), Items.redstone, ModItems.ammo_762.stackFromEnum(32, Ammo762NATO.TRACER), 2}, - {ModItems.ammo_762.stackFromEnum(32, Ammo762NATO.STOCK), DURA.ingot(), ModItems.ammo_762.stackFromEnum(32, Ammo762NATO.AP), 2}, - {ModItems.ammo_762.stackFromEnum(32, Ammo762NATO.STOCK), P_WHITE.ingot(), ModItems.ammo_762.stackFromEnum(32, Ammo762NATO.PHOSPHORUS), 2}, - {ModItems.ammo_762.stackFromEnum(32, Ammo762NATO.STOCK), U238.ingot(), ModItems.ammo_762.stackFromEnum(32, Ammo762NATO.DU), 2} - }; - - for(Object[] objs : recs) { - - ComparableStack ammoIn = new ComparableStack((ItemStack) objs[0]); - ItemStack out = (ItemStack) objs[2]; - - if(objs[1] instanceof Item) { - constructionRecipes.add(new AnvilConstructionRecipe(new AStack[] { ammoIn, new ComparableStack((Item)objs[1], 1) }, new AnvilOutput(out)).setTier((int)objs[3])); - - } else if(objs[1] instanceof String) { - constructionRecipes.add(new AnvilConstructionRecipe(new AStack[] { ammoIn, new OreDictStack((String)objs[1], 1) }, new AnvilOutput(out)).setTier((int)objs[3])); - } - } } public static void registerConstructionUpgrades() { diff --git a/src/main/java/com/hbm/items/weapon/sedna/factory/ConfettiUtil.java b/src/main/java/com/hbm/items/weapon/sedna/factory/ConfettiUtil.java index 0a483910c..78f42363a 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/factory/ConfettiUtil.java +++ b/src/main/java/com/hbm/items/weapon/sedna/factory/ConfettiUtil.java @@ -17,6 +17,7 @@ public class ConfettiUtil { public static void decideConfetti(EntityLivingBase entity, DamageSource source) { if(entity.isEntityAlive()) return; if(source.damageType.equals(DamageClass.LASER.name())) pulverize(entity); + if(source.damageType.equals(DamageClass.ELECTRIC.name())) pulverize(entity); if(source.isExplosion()) gib(entity); if(source.isFireDamage()) cremate(entity); } diff --git a/src/main/java/com/hbm/items/weapon/sedna/factory/GunFactory.java b/src/main/java/com/hbm/items/weapon/sedna/factory/GunFactory.java index b68413fd1..f53ea37d2 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/factory/GunFactory.java +++ b/src/main/java/com/hbm/items/weapon/sedna/factory/GunFactory.java @@ -64,6 +64,7 @@ public class GunFactory { XFactoryCatapult.init(); XFactory75Bolt.init(); XFactoryFolly.init(); + XFactoryTurret.init(); /// PROXY BULLSHIT /// MainRegistry.proxy.registerGunCfg(); diff --git a/src/main/java/com/hbm/items/weapon/sedna/factory/GunFactoryClient.java b/src/main/java/com/hbm/items/weapon/sedna/factory/GunFactoryClient.java index 3cc626948..bf2d4d3be 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/factory/GunFactoryClient.java +++ b/src/main/java/com/hbm/items/weapon/sedna/factory/GunFactoryClient.java @@ -148,7 +148,7 @@ public class GunFactoryClient { g26_flare_supply.setRenderer(LegoClient.RENDER_FLARE_SUPPLY); g26_flare_weapon.setRenderer(LegoClient.RENDER_FLARE_WEAPON); - setRendererBulk(LegoClient.RENDER_GRENADE, g40_he, g40_heat, g40_demo, g40_inc); + setRendererBulk(LegoClient.RENDER_GRENADE, g40_he, g40_heat, g40_demo, g40_inc, g40_phosphorus); setRendererBulk(LegoClient.RENDER_RPZB, rocket_rpzb); setRendererBulk(LegoClient.RENDER_QD, rocket_qd); diff --git a/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory22lr.java b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory22lr.java index 4c5af27ea..5d5739636 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory22lr.java +++ b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory22lr.java @@ -33,13 +33,13 @@ public class XFactory22lr { public static void init() { SpentCasing casing22 = new SpentCasing(CasingType.STRAIGHT).setColor(SpentCasing.COLOR_CASE_BRASS).setScale(0.5F); - p22_sp = new BulletConfig().setItem(EnumAmmo.P22_SP) + p22_sp = new BulletConfig().setItem(EnumAmmo.P22_SP).setKnockback(0F) .setCasing(casing22.clone().register("p22")); - p22_fmj = new BulletConfig().setItem(EnumAmmo.P22_FMJ).setDamage(0.8F).setArmorPiercing(0.1F) + p22_fmj = new BulletConfig().setItem(EnumAmmo.P22_FMJ).setKnockback(0F).setDamage(0.8F).setArmorPiercing(0.1F) .setCasing(casing22.clone().register("p22fmj")); - p22_jhp = new BulletConfig().setItem(EnumAmmo.P22_JHP).setDamage(1.5F).setArmorPiercing(-0.25F) + p22_jhp = new BulletConfig().setItem(EnumAmmo.P22_JHP).setKnockback(0F).setDamage(1.5F).setArmorPiercing(-0.25F) .setCasing(casing22.clone().register("p22jhp")); - p22_ap = new BulletConfig().setItem(EnumAmmo.P22_AP).setDoesPenetrate(true).setDamageFalloutByPen(false).setDamage(1.5F).setArmorPiercing(0.15F) + p22_ap = new BulletConfig().setItem(EnumAmmo.P22_AP).setKnockback(0F).setDoesPenetrate(true).setDamageFalloutByPen(false).setDamage(1.5F).setArmorPiercing(0.15F) .setCasing(casing22.clone().setColor(SpentCasing.COLOR_CASE_44).register("p22ap")); ModItems.gun_am180 = new ItemGunBaseNT(WeaponQuality.A_SIDE, new GunConfig() diff --git a/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory40mm.java b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory40mm.java index 76314dcdb..502e11fb4 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory40mm.java +++ b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory40mm.java @@ -33,7 +33,9 @@ import com.hbm.render.anim.BusAnimation; import com.hbm.render.anim.BusAnimationSequence; import com.hbm.render.anim.BusAnimationKeyframe.IType; import com.hbm.render.anim.HbmAnimations.AnimType; +import com.hbm.util.EntityDamageUtil; import com.hbm.util.TrackerUtil; +import com.hbm.util.DamageResistanceHandler.DamageClass; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLivingBase; @@ -53,6 +55,7 @@ public class XFactory40mm { public static BulletConfig g40_heat; public static BulletConfig g40_demo; public static BulletConfig g40_inc; + public static BulletConfig g40_phosphorus; public static BiConsumer LAMBDA_STANDARD_IGNITE = (bullet, mop) -> { if(mop.typeOfHit == mop.typeOfHit.ENTITY) { @@ -67,7 +70,11 @@ public class XFactory40mm { }; public static BiConsumer LAMBDA_STANDARD_EXPLODE_HEAT = (bullet, mop) -> { if(mop.typeOfHit == mop.typeOfHit.ENTITY && bullet.ticksExisted < 3) return; - Lego.standardExplode(bullet, mop, 2.5F); bullet.setDead(); + Lego.standardExplode(bullet, mop, 3.5F); bullet.setDead(); + if(mop.typeOfHit == mop.typeOfHit.ENTITY && mop.entityHit instanceof EntityLivingBase) { + EntityLivingBase living = (EntityLivingBase) mop.entityHit; + EntityDamageUtil.attackEntityFromNT(living, bullet.config.getDamage(bullet, bullet.getThrower(), DamageClass.EXPLOSIVE), bullet.damage * 3F, true, true, 0.5F, 3F, 0.15F); + } }; public static BiConsumer LAMBDA_STANDARD_EXPLODE_DEMO = (bullet, mop) -> { if(mop.typeOfHit == mop.typeOfHit.ENTITY && bullet.ticksExisted < 3) return; @@ -81,16 +88,23 @@ public class XFactory40mm { bullet.setDead(); }; public static BiConsumer LAMBDA_STANDARD_EXPLODE_INC = (bullet, mop) -> { + spawnFire(bullet, mop, false, 200); + }; + public static BiConsumer LAMBDA_STANDARD_EXPLODE_PHOSPHORUS = (bullet, mop) -> { + spawnFire(bullet, mop, true, 400); + }; + + public static void spawnFire(EntityBulletBaseMK4 bullet, MovingObjectPosition mop, boolean phosphorus, int duration) { if(mop.typeOfHit == mop.typeOfHit.ENTITY && bullet.ticksExisted < 3) return; World world = bullet.worldObj; Lego.standardExplode(bullet, mop, 3F); - EntityFireLingering fire = new EntityFireLingering(world).setArea(5, 2).setDuration(200).setType(EntityFireLingering.TYPE_DIESEL); + EntityFireLingering fire = new EntityFireLingering(world).setArea(5, 2).setDuration(duration).setType(phosphorus ? EntityFireLingering.TYPE_PHOSPHORUS : EntityFireLingering.TYPE_DIESEL); fire.setPosition(mop.hitVec.xCoord, mop.hitVec.yCoord, mop.hitVec.zCoord); world.spawnEntityInWorld(fire); bullet.setDead(); for(int dx = -1; dx <= 1; dx++) { for(int dy = -1; dy <= 1; dy++) { - for(int dz = -2; dz <= 2; dz++) { + for(int dz = -1; dz <= 1; dz++) { int x = (int) Math.floor(mop.hitVec.xCoord) + dx; int y = (int) Math.floor(mop.hitVec.yCoord) + dy; int z = (int) Math.floor(mop.hitVec.zCoord) + dz; @@ -103,7 +117,7 @@ public class XFactory40mm { } } } - }; + } public static Consumer LAMBDA_SPAWN_C130_SUPPLIESS = (entity) -> { spawnPlane(entity, C130PayloadType.SUPPLIES); }; public static Consumer LAMBDA_SPAWN_C130_WEAPONS = (entity) -> { spawnPlane(entity, C130PayloadType.WEAPONS); }; @@ -130,9 +144,10 @@ public class XFactory40mm { BulletConfig g40_base = new BulletConfig().setLife(200).setVel(2F).setGrav(0.035D); g40_he = g40_base.clone().setItem(EnumAmmo.G40_HE).setOnImpact(LAMBDA_STANDARD_EXPLODE).setCasing(new SpentCasing(CasingType.STRAIGHT).setColor(0x777777).setScale(2, 2F, 1.5F).register("g40")); - g40_heat = g40_base.clone().setItem(EnumAmmo.G40_HEAT).setOnImpact(LAMBDA_STANDARD_EXPLODE_HEAT).setCasing(new SpentCasing(CasingType.STRAIGHT).setColor(0x5E6854).setScale(2, 2F, 1.5F).register("g40heat")); - g40_demo = g40_base.clone().setItem(EnumAmmo.G40_DEMO).setOnImpact(LAMBDA_STANDARD_EXPLODE_DEMO).setCasing(new SpentCasing(CasingType.STRAIGHT).setColor(0xE30000).setScale(2, 2F, 1.5F).register("g40demo")); - g40_inc = g40_base.clone().setItem(EnumAmmo.G40_INC).setOnImpact(LAMBDA_STANDARD_EXPLODE_INC).setCasing(new SpentCasing(CasingType.STRAIGHT).setColor(0xE86F20).setScale(2, 2F, 1.5F).register("g40inc")); + g40_heat = g40_base.clone().setItem(EnumAmmo.G40_HEAT).setOnImpact(LAMBDA_STANDARD_EXPLODE_HEAT).setDamage(0.5F).setCasing(new SpentCasing(CasingType.STRAIGHT).setColor(0x5E6854).setScale(2, 2F, 1.5F).register("g40heat")); + g40_demo = g40_base.clone().setItem(EnumAmmo.G40_DEMO).setOnImpact(LAMBDA_STANDARD_EXPLODE_DEMO).setDamage(0.75F).setCasing(new SpentCasing(CasingType.STRAIGHT).setColor(0xE30000).setScale(2, 2F, 1.5F).register("g40demo")); + g40_inc = g40_base.clone().setItem(EnumAmmo.G40_INC).setOnImpact(LAMBDA_STANDARD_EXPLODE_INC).setDamage(0.75F).setCasing(new SpentCasing(CasingType.STRAIGHT).setColor(0xE86F20).setScale(2, 2F, 1.5F).register("g40inc")); + g40_phosphorus = g40_base.clone().setItem(EnumAmmo.G40_PHOSPHORUS).setOnImpact(LAMBDA_STANDARD_EXPLODE_PHOSPHORUS).setDamage(0.75F).setCasing(new SpentCasing(CasingType.STRAIGHT).setColor(0xC8C8C8).setScale(2, 2F, 1.5F).register("g40phos")); ModItems.gun_flaregun = new ItemGunBaseNT(WeaponQuality.A_SIDE, new GunConfig() .dura(100).draw(7).inspect(39).crosshair(Crosshair.L_CIRCUMFLEX).smoke(LAMBDA_SMOKE) @@ -149,7 +164,7 @@ public class XFactory40mm { .dura(400).draw(7).inspect(39).reloadSequential(true).crosshair(Crosshair.L_CIRCUMFLEX).smoke(LAMBDA_SMOKE) .rec(new Receiver(0) .dmg(20F).delay(24).reload(16, 16, 16, 0).jam(0).sound("hbm:weapon.glShoot", 1.0F, 1.0F) - .mag(new MagazineSingleReload(0, 4).addConfigs(g40_he, g40_heat, g40_demo, g40_inc)) + .mag(new MagazineSingleReload(0, 4).addConfigs(g40_he, g40_heat, g40_demo, g40_inc, g40_phosphorus)) .offset(0.75, -0.0625, -0.1875D) .setupStandardFire().recoil(Lego.LAMBDA_STANDARD_RECOIL)) .setupStandardConfiguration() diff --git a/src/main/java/com/hbm/items/weapon/sedna/factory/XFactoryCatapult.java b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactoryCatapult.java index 301828e7d..5eaada4fd 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/factory/XFactoryCatapult.java +++ b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactoryCatapult.java @@ -122,7 +122,7 @@ public class XFactoryCatapult { if(bullet.isDead) return; bullet.setDead(); ExplosionVNT vnt = new ExplosionVNT(bullet.worldObj, mop.hitVec.xCoord, mop.hitVec.yCoord, mop.hitVec.zCoord, 5); - vnt.setEntityProcessor(new EntityProcessorCrossSmooth(2, bullet.damage).withRangeMod(1.5F)); + vnt.setEntityProcessor(new EntityProcessorCrossSmooth(1, bullet.damage).withRangeMod(1.5F)); vnt.setPlayerProcessor(new PlayerProcessorStandard()); vnt.setSFX(new ExplosionEffectWeapon(10, 2.5F, 1F)); vnt.explode(); @@ -134,7 +134,7 @@ public class XFactoryCatapult { nuke_demo = new BulletConfig().setItem(EnumAmmo.NUKE_DEMO).setLife(300).setVel(3F).setGrav(0.025F).setOnImpact(LAMBDA_NUKE_DEMO); nuke_high = new BulletConfig().setItem(EnumAmmo.NUKE_HIGH).setLife(300).setVel(3F).setGrav(0.025F).setOnImpact(LAMBDA_NUKE_HIGH); nuke_tots = new BulletConfig().setItem(EnumAmmo.NUKE_TOTS).setProjectiles(8).setLife(300).setVel(3F).setGrav(0.025F).setSpread(0.1F).setOnImpact(LAMBDA_NUKE_TINYTOT); - nuke_hive = new BulletConfig().setItem(EnumAmmo.NUKE_HIVE).setProjectiles(12).setLife(300).setVel(1F).setGrav(0.025F).setSpread(0.15F).setOnImpact(LAMBDA_NUKE_HIVE); + nuke_hive = new BulletConfig().setItem(EnumAmmo.NUKE_HIVE).setProjectiles(12).setLife(300).setVel(1F).setGrav(0.025F).setSpread(0.15F).setDamage(0.5F).setOnImpact(LAMBDA_NUKE_HIVE); ModItems.gun_fatman = new ItemGunBaseNT(WeaponQuality.A_SIDE, new GunConfig() .dura(300).draw(20).inspect(30).crosshair(Crosshair.L_CIRCUMFLEX).hideCrosshair(false) diff --git a/src/main/java/com/hbm/items/weapon/sedna/factory/XFactoryEnergy.java b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactoryEnergy.java index 85c9e99ab..50773003f 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/factory/XFactoryEnergy.java +++ b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactoryEnergy.java @@ -63,7 +63,7 @@ public class XFactoryEnergy { } ExplosionVNT vnt = new ExplosionVNT(beam.worldObj, mop.hitVec.xCoord, mop.hitVec.yCoord, mop.hitVec.zCoord, 2F); - vnt.setEntityProcessor(new EntityProcessorCrossSmooth(1, beam.damage)); + vnt.setEntityProcessor(new EntityProcessorCrossSmooth(1, beam.damage).setDamageClass(beam.config.dmgClass)); vnt.setPlayerProcessor(new PlayerProcessorStandard()); vnt.explode(); beam.worldObj.playSoundEffect(mop.hitVec.xCoord, mop.hitVec.yCoord, mop.hitVec.zCoord, "hbm:entity.ufoBlast", 5.0F, 0.9F + beam.worldObj.rand.nextFloat() * 0.2F); diff --git a/src/main/java/com/hbm/items/weapon/sedna/factory/XFactoryRocket.java b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactoryRocket.java index da062c452..f0a9933c6 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/factory/XFactoryRocket.java +++ b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactoryRocket.java @@ -30,8 +30,11 @@ import com.hbm.render.anim.BusAnimation; import com.hbm.render.anim.BusAnimationSequence; import com.hbm.render.anim.BusAnimationKeyframe.IType; import com.hbm.render.anim.HbmAnimations.AnimType; +import com.hbm.util.EntityDamageUtil; +import com.hbm.util.DamageResistanceHandler.DamageClass; import net.minecraft.entity.Entity; +import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.init.Blocks; import net.minecraft.item.ItemStack; @@ -82,7 +85,11 @@ public class XFactoryRocket { }; public static BiConsumer LAMBDA_STANDARD_EXPLODE_HEAT = (bullet, mop) -> { if(mop.typeOfHit == mop.typeOfHit.ENTITY && bullet.ticksExisted < 3) return; - Lego.standardExplode(bullet, mop, 2.5F); bullet.setDead(); + Lego.standardExplode(bullet, mop, 3.5F); bullet.setDead(); + if(mop.typeOfHit == mop.typeOfHit.ENTITY && mop.entityHit instanceof EntityLivingBase) { + EntityLivingBase living = (EntityLivingBase) mop.entityHit; + EntityDamageUtil.attackEntityFromNT(living, bullet.config.getDamage(bullet, bullet.getThrower(), DamageClass.EXPLOSIVE), bullet.damage * 3F, true, true, 0.5F, 5F, 0.2F); + } }; public static BiConsumer LAMBDA_STANDARD_EXPLODE_DEMO = (bullet, mop) -> { if(mop.typeOfHit == mop.typeOfHit.ENTITY && bullet.ticksExisted < 3) return; @@ -96,10 +103,17 @@ public class XFactoryRocket { bullet.setDead(); }; public static BiConsumer LAMBDA_STANDARD_EXPLODE_INC = (bullet, mop) -> { + spawnFire(bullet, mop, false, 300); + }; + public static BiConsumer LAMBDA_STANDARD_EXPLODE_PHOSPHORUS = (bullet, mop) -> { + spawnFire(bullet, mop, true, 600); + }; + + public static void spawnFire(EntityBulletBaseMK4 bullet, MovingObjectPosition mop, boolean phosphorus, int duration) { if(mop.typeOfHit == mop.typeOfHit.ENTITY && bullet.ticksExisted < 3) return; World world = bullet.worldObj; Lego.standardExplode(bullet, mop, 3F); - EntityFireLingering fire = new EntityFireLingering(world).setArea(6, 2).setDuration(300).setType(EntityFireLingering.TYPE_DIESEL); + EntityFireLingering fire = new EntityFireLingering(world).setArea(6, 2).setDuration(duration).setType(phosphorus ? EntityFireLingering.TYPE_PHOSPHORUS : EntityFireLingering.TYPE_DIESEL); fire.setPosition(mop.hitVec.xCoord, mop.hitVec.yCoord, mop.hitVec.zCoord); world.spawnEntityInWorld(fire); bullet.setDead(); @@ -118,7 +132,7 @@ public class XFactoryRocket { } } } - }; + } public static BulletConfig makeRPZB(BulletConfig original) { return original.clone(); } public static BulletConfig makeQD(BulletConfig original) { return original.clone().setLife(400).setOnUpdate(LAMBDA_STEERING_ACCELERATE); } @@ -127,14 +141,15 @@ public class XFactoryRocket { //this is starting to get messy but we need to put this crap *somewhere* and fragmenting it into a billion classes with two methods each just isn't gonna help public static void init() { - rocket_template = new BulletConfig[4]; + rocket_template = new BulletConfig[5]; BulletConfig baseRocket = new BulletConfig().setLife(300).setSelfDamageDelay(10).setVel(0F).setGrav(0D).setOnEntityHit(null).setOnRicochet(null).setOnUpdate(LAMBDA_STANDARD_ACCELERATE); rocket_template[0] = baseRocket.clone().setItem(EnumAmmo.ROCKET_HE).setOnImpact(LAMBDA_STANDARD_EXPLODE); - rocket_template[1] = baseRocket.clone().setItem(EnumAmmo.ROCKET_HEAT).setDamage(1.5F).setOnImpact(LAMBDA_STANDARD_EXPLODE_HEAT); - rocket_template[2] = baseRocket.clone().setItem(EnumAmmo.ROCKET_DEMO).setDamage(0.5F).setOnImpact(LAMBDA_STANDARD_EXPLODE_DEMO); + rocket_template[1] = baseRocket.clone().setItem(EnumAmmo.ROCKET_HEAT).setDamage(0.5F).setOnImpact(LAMBDA_STANDARD_EXPLODE_HEAT); + rocket_template[2] = baseRocket.clone().setItem(EnumAmmo.ROCKET_DEMO).setDamage(0.75F).setOnImpact(LAMBDA_STANDARD_EXPLODE_DEMO); rocket_template[3] = baseRocket.clone().setItem(EnumAmmo.ROCKET_INC).setDamage(0.75F).setOnImpact(LAMBDA_STANDARD_EXPLODE_INC); + rocket_template[4] = baseRocket.clone().setItem(EnumAmmo.ROCKET_PHOSPHORUS).setDamage(0.75F).setOnImpact(LAMBDA_STANDARD_EXPLODE_PHOSPHORUS); rocket_rpzb = new BulletConfig[rocket_template.length]; rocket_qd = new BulletConfig[rocket_template.length]; diff --git a/src/main/java/com/hbm/items/weapon/sedna/factory/XFactoryTurret.java b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactoryTurret.java new file mode 100644 index 000000000..c5a50ce06 --- /dev/null +++ b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactoryTurret.java @@ -0,0 +1,46 @@ +package com.hbm.items.weapon.sedna.factory; + +import com.hbm.explosion.vanillant.ExplosionVNT; +import com.hbm.explosion.vanillant.standard.BlockAllocatorStandard; +import com.hbm.explosion.vanillant.standard.BlockProcessorStandard; +import com.hbm.explosion.vanillant.standard.EntityProcessorCrossSmooth; +import com.hbm.explosion.vanillant.standard.ExplosionEffectWeapon; +import com.hbm.explosion.vanillant.standard.PlayerProcessorStandard; +import com.hbm.items.ModItems; +import com.hbm.items.ItemAmmoEnums.Ammo240Shell; +import com.hbm.items.weapon.sedna.BulletConfig; +import com.hbm.particle.SpentCasing; +import com.hbm.particle.SpentCasing.CasingType; + +public class XFactoryTurret { + + public static BulletConfig dgk_normal; + + public static SpentCasing CASINNG240MM = new SpentCasing(CasingType.BOTTLENECK).setScale(7.5F).setBounceMotion(0.02F, 0.05F).setColor(SpentCasing.COLOR_CASE_BRASS).setupSmoke(1F, 0.5D, 60, 20); + public static BulletConfig shell_normal; + public static BulletConfig shell_explosive; + public static BulletConfig shell_ap; + public static BulletConfig shell_du; + public static BulletConfig shell_w9; + + public static void init() { + dgk_normal = new BulletConfig(); + + shell_normal = new BulletConfig().setItem(ModItems.ammo_shell.stackFromEnum(Ammo240Shell.STOCK)).setDamage(1F).setCasing(CASINNG240MM).setOnImpact((bullet, mop) -> { + Lego.standardExplode(bullet, mop, 10F); bullet.setDead(); + }); + shell_explosive = new BulletConfig().setItem(ModItems.ammo_shell.stackFromEnum(Ammo240Shell.EXPLOSIVE)).setDamage(1.5F).setCasing(CASINNG240MM).setOnImpact((bullet, mop) -> { + ExplosionVNT vnt = new ExplosionVNT(bullet.worldObj, mop.hitVec.xCoord, mop.hitVec.yCoord, mop.hitVec.zCoord, 10F); + vnt.setBlockAllocator(new BlockAllocatorStandard()); + vnt.setBlockProcessor(new BlockProcessorStandard()); + vnt.setEntityProcessor(new EntityProcessorCrossSmooth(1, bullet.damage)); + vnt.setPlayerProcessor(new PlayerProcessorStandard()); + vnt.setSFX(new ExplosionEffectWeapon(10, 2.5F, 1F)); + vnt.explode(); + bullet.setDead(); + }); + shell_ap = new BulletConfig().setItem(ModItems.ammo_shell.stackFromEnum(Ammo240Shell.APFSDS_T)).setDamage(2F).setDoesPenetrate(true).setCasing(CASINNG240MM); + shell_du = new BulletConfig().setItem(ModItems.ammo_shell.stackFromEnum(Ammo240Shell.APFSDS_DU)).setDamage(2.5F).setDoesPenetrate(true).setDamageFalloutByPen(false).setCasing(CASINNG240MM); + shell_w9 = new BulletConfig().setItem(ModItems.ammo_shell.stackFromEnum(Ammo240Shell.W9)).setDamage(2.5F).setCasing(CASINNG240MM).setOnImpact(XFactoryCatapult.LAMBDA_NUKE_STANDARD); + } +} diff --git a/src/main/java/com/hbm/main/NEIRegistry.java b/src/main/java/com/hbm/main/NEIRegistry.java index 3899820c8..1c40d9429 100644 --- a/src/main/java/com/hbm/main/NEIRegistry.java +++ b/src/main/java/com/hbm/main/NEIRegistry.java @@ -67,6 +67,7 @@ public class NEIRegistry { handlers.add(new ArcFurnaceSolidHandler()); handlers.add(new ArcFurnaceFluidHandler()); handlers.add(new RotaryFurnaceHandler()); + handlers.add(new AmmoPressHandler()); //this shit comes last handlers.add(new FluidRecipeHandler()); diff --git a/src/main/java/com/hbm/particle/ParticleGiblet.java b/src/main/java/com/hbm/particle/ParticleGiblet.java index c09a00799..a93128750 100644 --- a/src/main/java/com/hbm/particle/ParticleGiblet.java +++ b/src/main/java/com/hbm/particle/ParticleGiblet.java @@ -66,6 +66,7 @@ public class ParticleGiblet extends EntityFX { GL11.glPushMatrix(); GL11.glDisable(GL11.GL_LIGHTING); + GL11.glDisable(GL11.GL_BLEND); this.theRenderEngine.bindTexture(texture); /* use this instead of EntityFX.interpPosN since interpPosN isn't set up correctly for the current tick for layer 3 particles */ diff --git a/src/main/java/com/hbm/particle/ParticlePlasmaBlast.java b/src/main/java/com/hbm/particle/ParticlePlasmaBlast.java index 18430e811..413dd35b9 100644 --- a/src/main/java/com/hbm/particle/ParticlePlasmaBlast.java +++ b/src/main/java/com/hbm/particle/ParticlePlasmaBlast.java @@ -7,6 +7,7 @@ import com.hbm.lib.RefStrings; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.client.particle.EntityFX; +import net.minecraft.client.renderer.OpenGlHelper; import net.minecraft.client.renderer.RenderHelper; import net.minecraft.client.renderer.Tessellator; import net.minecraft.client.renderer.texture.TextureManager; @@ -84,9 +85,9 @@ public class ParticlePlasmaBlast extends EntityFX { if(fog) GL11.glEnable(GL11.GL_FOG); GL11.glPolygonOffset(0.0F, 0.0F); - GL11.glEnable(GL11.GL_CULL_FACE); GL11.glAlphaFunc(GL11.GL_GREATER, 0.1F); GL11.glEnable(GL11.GL_LIGHTING); + OpenGlHelper.glBlendFunc(770, 771, 1, 0); GL11.glPopMatrix(); } } diff --git a/src/main/java/com/hbm/particle/ParticleSkeleton.java b/src/main/java/com/hbm/particle/ParticleSkeleton.java index 7958124ae..a3eb3f4c9 100644 --- a/src/main/java/com/hbm/particle/ParticleSkeleton.java +++ b/src/main/java/com/hbm/particle/ParticleSkeleton.java @@ -25,6 +25,7 @@ import net.minecraftforge.client.model.IModelCustom; public class ParticleSkeleton extends EntityFX { public static final ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/particle/skeleton.png"); + public static final ResourceLocation texture_ext = new ResourceLocation(RefStrings.MODID + ":textures/particle/skoilet.png"); public static final IModelCustom skeleton = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/effect/skeleton.obj"), false).asVBO(); protected EnumSkeletonType type; @@ -107,8 +108,6 @@ public class ParticleSkeleton extends EntityFX { GL11.glAlphaFunc(GL11.GL_GREATER, 0); OpenGlHelper.glBlendFunc(770, 771, 1, 0); RenderHelper.enableStandardItemLighting(); - - this.textureManager.bindTexture(texture); double pX = prevPosX + (posX - prevPosX) * interp; double pY = prevPosY + (posY - prevPosY) * interp; @@ -139,9 +138,18 @@ public class ParticleSkeleton extends EntityFX { GL11.glRotated(-90, 0, 1, 0); switch(type) { - case SKULL: skeleton.renderPart("Skull"); break; - case TORSO: skeleton.renderPart("Torso"); break; - case LIMB: skeleton.renderPart("Limb"); break; + case SKULL: + this.textureManager.bindTexture(texture); + skeleton.renderPart("Skull"); break; + case TORSO: + this.textureManager.bindTexture(texture); + skeleton.renderPart("Torso"); break; + case LIMB: + this.textureManager.bindTexture(texture); + skeleton.renderPart("Limb"); break; + case SKULL_VILLAGER: + this.textureManager.bindTexture(texture_ext); + skeleton.renderPart("SkullVillager"); break; } GL11.glColor4f(1F, 1F, 1F, 1F); diff --git a/src/main/java/com/hbm/particle/helper/SkeletonCreator.java b/src/main/java/com/hbm/particle/helper/SkeletonCreator.java index 04bc10b22..48ee29761 100644 --- a/src/main/java/com/hbm/particle/helper/SkeletonCreator.java +++ b/src/main/java/com/hbm/particle/helper/SkeletonCreator.java @@ -20,7 +20,9 @@ import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.monster.EntityPigZombie; import net.minecraft.entity.monster.EntitySkeleton; +import net.minecraft.entity.monster.EntityWitch; import net.minecraft.entity.monster.EntityZombie; +import net.minecraft.entity.passive.EntityVillager; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.world.World; @@ -85,7 +87,7 @@ public class SkeletonCreator implements IParticleCreator { } public static enum EnumSkeletonType { - SKULL, TORSO, LIMB + SKULL, TORSO, LIMB, SKULL_VILLAGER } public static Function BONES_BIPED = (entity) -> { @@ -96,8 +98,8 @@ public class SkeletonCreator implements IParticleCreator { new BoneDefinition(EnumSkeletonType.TORSO, -entity.renderYawOffset, 0, entity.posX, entity.posY + 1.125, entity.posZ), new BoneDefinition(EnumSkeletonType.LIMB, -entity.renderYawOffset, 0, entity.posX + leftarm.xCoord, entity.posY + 1.125, entity.posZ + leftarm.zCoord), new BoneDefinition(EnumSkeletonType.LIMB, -entity.renderYawOffset, 0, entity.posX - leftarm.xCoord, entity.posY + 1.125, entity.posZ - leftarm.zCoord), - new BoneDefinition(EnumSkeletonType.LIMB, -entity.renderYawOffset, 0, entity.posX + leftleg.xCoord, entity.posY + 0.625, entity.posZ + leftleg.zCoord), - new BoneDefinition(EnumSkeletonType.LIMB, -entity.renderYawOffset, 0, entity.posX - leftleg.xCoord, entity.posY + 0.625, entity.posZ - leftleg.zCoord), + new BoneDefinition(EnumSkeletonType.LIMB, -entity.renderYawOffset, 0, entity.posX + leftleg.xCoord, entity.posY + 0.375, entity.posZ + leftleg.zCoord), + new BoneDefinition(EnumSkeletonType.LIMB, -entity.renderYawOffset, 0, entity.posX - leftleg.xCoord, entity.posY + 0.375, entity.posZ - leftleg.zCoord), }; }; @@ -110,8 +112,22 @@ public class SkeletonCreator implements IParticleCreator { new BoneDefinition(EnumSkeletonType.TORSO, -entity.renderYawOffset, 0, entity.posX, entity.posY + 1.125, entity.posZ), new BoneDefinition(EnumSkeletonType.LIMB, -entity.renderYawOffset, -90, entity.posX + leftarm.xCoord + forward.xCoord, entity.posY + 1.375, entity.posZ + leftarm.zCoord + forward.zCoord), new BoneDefinition(EnumSkeletonType.LIMB, -entity.renderYawOffset, -90, entity.posX - leftarm.xCoord + forward.xCoord, entity.posY + 1.375, entity.posZ - leftarm.zCoord + forward.zCoord), - new BoneDefinition(EnumSkeletonType.LIMB, -entity.renderYawOffset, 0, entity.posX + leftleg.xCoord, entity.posY + 0.625, entity.posZ + leftleg.zCoord), - new BoneDefinition(EnumSkeletonType.LIMB, -entity.renderYawOffset, 0, entity.posX - leftleg.xCoord, entity.posY + 0.625, entity.posZ - leftleg.zCoord), + new BoneDefinition(EnumSkeletonType.LIMB, -entity.renderYawOffset, 0, entity.posX + leftleg.xCoord, entity.posY + 0.375, entity.posZ + leftleg.zCoord), + new BoneDefinition(EnumSkeletonType.LIMB, -entity.renderYawOffset, 0, entity.posX - leftleg.xCoord, entity.posY + 0.375, entity.posZ - leftleg.zCoord), + }; + }; + + public static Function BONES_VILLAGER = (entity) -> { + Vec3NT leftarm = new Vec3NT(0.375, 0, 0).rotateAroundYDeg(-entity.renderYawOffset); + Vec3NT forward = new Vec3NT(0, 0, 0.25).rotateAroundYDeg(-entity.renderYawOffset); + Vec3NT leftleg = new Vec3NT(0.125, 0, 0).rotateAroundYDeg(-entity.renderYawOffset); + return new BoneDefinition[] { + new BoneDefinition(EnumSkeletonType.SKULL_VILLAGER, -entity.rotationYawHead, entity.rotationPitch, entity.posX, entity.posY + 1.6875, entity.posZ), + new BoneDefinition(EnumSkeletonType.TORSO, -entity.renderYawOffset, 0, entity.posX, entity.posY + 1, entity.posZ), + new BoneDefinition(EnumSkeletonType.LIMB, -entity.renderYawOffset, -45, entity.posX + leftarm.xCoord + forward.xCoord, entity.posY + 1.125, entity.posZ + leftarm.zCoord + forward.zCoord), + new BoneDefinition(EnumSkeletonType.LIMB, -entity.renderYawOffset, -45, entity.posX - leftarm.xCoord + forward.xCoord, entity.posY + 1.125, entity.posZ - leftarm.zCoord + forward.zCoord), + new BoneDefinition(EnumSkeletonType.LIMB, -entity.renderYawOffset, 0, entity.posX + leftleg.xCoord, entity.posY + 0.375, entity.posZ + leftleg.zCoord), + new BoneDefinition(EnumSkeletonType.LIMB, -entity.renderYawOffset, 0, entity.posX - leftleg.xCoord, entity.posY + 0.375, entity.posZ - leftleg.zCoord), }; }; @@ -123,8 +139,8 @@ public class SkeletonCreator implements IParticleCreator { new BoneDefinition(EnumSkeletonType.TORSO, -entity.renderYawOffset, 0, entity.posX, entity.posY + 1.125, entity.posZ), new BoneDefinition(EnumSkeletonType.LIMB, -entity.renderYawOffset, 0, entity.posX + leftarm.xCoord, entity.posY + 1.125, entity.posZ + leftarm.zCoord), new BoneDefinition(EnumSkeletonType.LIMB, -entity.renderYawOffset, 0, entity.posX - leftarm.xCoord, entity.posY + 1.125, entity.posZ - leftarm.zCoord), - new BoneDefinition(EnumSkeletonType.LIMB, -entity.renderYawOffset, 0, entity.posX + leftleg.xCoord, entity.posY + 0.625, entity.posZ + leftleg.zCoord), - new BoneDefinition(EnumSkeletonType.LIMB, -entity.renderYawOffset, 0, entity.posX - leftleg.xCoord, entity.posY + 0.625, entity.posZ - leftleg.zCoord), + new BoneDefinition(EnumSkeletonType.LIMB, -entity.renderYawOffset, 0, entity.posX + leftleg.xCoord, entity.posY + 0.375, entity.posZ + leftleg.zCoord), + new BoneDefinition(EnumSkeletonType.LIMB, -entity.renderYawOffset, 0, entity.posX - leftleg.xCoord, entity.posY + 0.375, entity.posZ - leftleg.zCoord), }; }; @@ -137,6 +153,9 @@ public class SkeletonCreator implements IParticleCreator { skullanizer.put(EntitySkeleton.class.getSimpleName(), BONES_ZOMBIE); skullanizer.put(EntityPigZombie.class.getSimpleName(), BONES_ZOMBIE); + skullanizer.put(EntityVillager.class.getSimpleName(), BONES_VILLAGER); + skullanizer.put(EntityWitch.class.getSimpleName(), BONES_VILLAGER); + skullanizer.put(EntityDummy.class.getSimpleName(), BONES_DUMMY); //techguns compat, for some reason diff --git a/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderAtlas.java b/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderAtlas.java index 394415ace..907f5f5c9 100644 --- a/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderAtlas.java +++ b/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderAtlas.java @@ -104,8 +104,9 @@ public class ItemRenderAtlas extends ItemRenderWeaponBase { @Override public void setupThirdPerson(ItemStack stack) { super.setupThirdPerson(stack); + double scale = 0.75D; + GL11.glScaled(scale, scale, scale); GL11.glTranslated(0, 1, 3); - } @Override diff --git a/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderBolter.java b/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderBolter.java index ba3af6235..165cd20cc 100644 --- a/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderBolter.java +++ b/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderBolter.java @@ -89,9 +89,9 @@ public class ItemRenderBolter extends ItemRenderWeaponBase { @Override public void setupThirdPerson(ItemStack stack) { super.setupThirdPerson(stack); - double scale = 3D; + double scale = 2.5D; GL11.glScaled(scale, scale, scale); - GL11.glTranslated(0, 0.25, 1.25); + GL11.glTranslated(0, -0.75, 1.25); } diff --git a/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderHangman.java b/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderHangman.java index 732cf2abf..f02c22562 100644 --- a/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderHangman.java +++ b/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderHangman.java @@ -104,9 +104,9 @@ public class ItemRenderHangman extends ItemRenderWeaponBase { @Override public void setupThirdPerson(ItemStack stack) { super.setupThirdPerson(stack); - double scale = 0.375D; + double scale = 0.5D; GL11.glScaled(scale, scale, scale); - GL11.glTranslated(0, 4.25, 8); + GL11.glTranslated(0, 4.25, 11); } diff --git a/src/main/java/com/hbm/tileentity/turret/TileEntityTurretFritz.java b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretFritz.java index 226fd6bd4..1271b00f5 100644 --- a/src/main/java/com/hbm/tileentity/turret/TileEntityTurretFritz.java +++ b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretFritz.java @@ -15,6 +15,7 @@ import com.hbm.inventory.fluid.trait.FT_Flammable; import com.hbm.inventory.fluid.trait.FluidTraitSimple.FT_Liquid; import com.hbm.inventory.gui.GUITurretFritz; import com.hbm.items.ModItems; +import com.hbm.items.weapon.sedna.factory.GunFactory.EnumAmmo; import com.hbm.packet.PacketDispatcher; import com.hbm.packet.toclient.AuxParticlePacketNT; @@ -57,7 +58,7 @@ public class TileEntityTurretFritz extends TileEntityTurretBaseNT implements IFl ammoStacks = new ArrayList(); - ammoStacks.add(new ItemStack(ModItems.ammo_fuel)); + ammoStacks.add(new ItemStack(ModItems.ammo_standard, 1, EnumAmmo.FLAME_DIESEL.ordinal())); for(FluidType type : Fluids.getInNiceOrder()) { if(type.hasTrait(FT_Combustible.class) && type.hasTrait(FT_Liquid.class)) { @@ -144,7 +145,7 @@ public class TileEntityTurretFritz extends TileEntityTurretBaseNT implements IFl for(int i = 1; i < 10; i++) { - if(slots[i] != null && slots[i].getItem() == ModItems.ammo_fuel) { + if(slots[i] != null && slots[i].getItem() == ModItems.ammo_standard && slots[i].getItemDamage() == EnumAmmo.FLAME_DIESEL.ordinal()) { if(this.tank.getTankType() == Fluids.DIESEL && this.tank.getFill() + 1000 <= this.tank.getMaxFill()) { this.tank.setFill(this.tank.getFill() + 1000); this.decrStackSize(i, 1); diff --git a/src/main/java/com/hbm/tileentity/turret/TileEntityTurretHoward.java b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretHoward.java index 1e69696fd..71993d569 100644 --- a/src/main/java/com/hbm/tileentity/turret/TileEntityTurretHoward.java +++ b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretHoward.java @@ -8,6 +8,7 @@ import com.hbm.handler.CasingEjector; import com.hbm.handler.guncfg.GunDGKFactory; import com.hbm.inventory.gui.GUITurretHoward; import com.hbm.items.weapon.sedna.BulletConfig; +import com.hbm.items.weapon.sedna.factory.XFactoryTurret; import com.hbm.lib.ModDamageSource; import com.hbm.packet.PacketDispatcher; import com.hbm.packet.toclient.AuxParticlePacketNT; @@ -24,11 +25,10 @@ import net.minecraft.world.World; public class TileEntityTurretHoward extends TileEntityTurretBaseNT { - static BulletConfig dgk_normal = new BulletConfig(); static List configs = new ArrayList(); static { - configs.add(dgk_normal.id); + configs.add(XFactoryTurret.dgk_normal.id); } @Override diff --git a/src/main/java/com/hbm/tileentity/turret/TileEntityTurretJeremy.java b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretJeremy.java index 5f57d1c6d..b2af72b35 100644 --- a/src/main/java/com/hbm/tileentity/turret/TileEntityTurretJeremy.java +++ b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretJeremy.java @@ -3,23 +3,12 @@ package com.hbm.tileentity.turret; import java.util.ArrayList; import java.util.List; -import com.hbm.explosion.vanillant.ExplosionVNT; -import com.hbm.explosion.vanillant.standard.BlockAllocatorStandard; -import com.hbm.explosion.vanillant.standard.BlockProcessorStandard; -import com.hbm.explosion.vanillant.standard.EntityProcessorCrossSmooth; -import com.hbm.explosion.vanillant.standard.ExplosionEffectWeapon; -import com.hbm.explosion.vanillant.standard.PlayerProcessorStandard; import com.hbm.handler.CasingEjector; import com.hbm.inventory.gui.GUITurretJeremy; -import com.hbm.items.ModItems; -import com.hbm.items.ItemAmmoEnums.Ammo240Shell; import com.hbm.items.weapon.sedna.BulletConfig; -import com.hbm.items.weapon.sedna.factory.Lego; -import com.hbm.items.weapon.sedna.factory.XFactoryCatapult; +import com.hbm.items.weapon.sedna.factory.XFactoryTurret; import com.hbm.packet.PacketDispatcher; import com.hbm.packet.toclient.AuxParticlePacketNT; -import com.hbm.particle.SpentCasing; -import com.hbm.particle.SpentCasing.CasingType; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import cpw.mods.fml.relauncher.Side; @@ -30,32 +19,15 @@ import net.minecraft.util.Vec3; import net.minecraft.world.World; public class TileEntityTurretJeremy extends TileEntityTurretBaseNT { - - public static SpentCasing CASINNG240MM = new SpentCasing(CasingType.BOTTLENECK).setScale(7.5F).setBounceMotion(0.02F, 0.05F).setColor(SpentCasing.COLOR_CASE_BRASS).setupSmoke(1F, 0.5D, 60, 20); - public static BulletConfig shell_normal = new BulletConfig().setItem(ModItems.ammo_shell.stackFromEnum(Ammo240Shell.STOCK)).setDamage(1F).setCasing(CASINNG240MM).setOnImpact((bullet, mop) -> { - Lego.standardExplode(bullet, mop, 10F); bullet.setDead(); - }); - public static BulletConfig shell_explosive = new BulletConfig().setItem(ModItems.ammo_shell.stackFromEnum(Ammo240Shell.EXPLOSIVE)).setDamage(1.5F).setCasing(CASINNG240MM).setOnImpact((bullet, mop) -> { - ExplosionVNT vnt = new ExplosionVNT(bullet.worldObj, mop.hitVec.xCoord, mop.hitVec.yCoord, mop.hitVec.zCoord, 10F); - vnt.setBlockAllocator(new BlockAllocatorStandard()); - vnt.setBlockProcessor(new BlockProcessorStandard()); - vnt.setEntityProcessor(new EntityProcessorCrossSmooth(1, bullet.damage)); - vnt.setPlayerProcessor(new PlayerProcessorStandard()); - vnt.setSFX(new ExplosionEffectWeapon(10, 2.5F, 1F)); - vnt.explode(); - bullet.setDead(); - }); - public static BulletConfig shell_ap = new BulletConfig().setItem(ModItems.ammo_shell.stackFromEnum(Ammo240Shell.APFSDS_T)).setDamage(2F).setDoesPenetrate(true).setCasing(CASINNG240MM); - public static BulletConfig shell_du = new BulletConfig().setItem(ModItems.ammo_shell.stackFromEnum(Ammo240Shell.APFSDS_DU)).setDamage(2.5F).setDoesPenetrate(true).setDamageFalloutByPen(false).setCasing(CASINNG240MM); - public static BulletConfig shell_w9 = new BulletConfig().setItem(ModItems.ammo_shell.stackFromEnum(Ammo240Shell.W9)).setDamage(2.5F).setCasing(CASINNG240MM).setOnImpact(XFactoryCatapult.LAMBDA_NUKE_STANDARD); + static List configs = new ArrayList(); static { - configs.add(shell_normal.id); - configs.add(shell_explosive.id); - configs.add(shell_ap.id); - configs.add(shell_du.id); - configs.add(shell_w9.id); + configs.add(XFactoryTurret.shell_normal.id); + configs.add(XFactoryTurret.shell_explosive.id); + configs.add(XFactoryTurret.shell_ap.id); + configs.add(XFactoryTurret.shell_du.id); + configs.add(XFactoryTurret.shell_w9.id); } @Override diff --git a/src/main/java/com/hbm/util/EntityDamageUtil.java b/src/main/java/com/hbm/util/EntityDamageUtil.java index 708ca7d9a..54d72e20e 100644 --- a/src/main/java/com/hbm/util/EntityDamageUtil.java +++ b/src/main/java/com/hbm/util/EntityDamageUtil.java @@ -106,7 +106,7 @@ public class EntityDamageUtil { } living.attackedAtYaw = (float) (Math.atan2(deltaZ, deltaX) * 180.0D / Math.PI) - living.rotationYaw; - if(knockbackMultiplier > 0) living.knockBack(entity, amount, deltaX * knockbackMultiplier, deltaZ * knockbackMultiplier); + if(knockbackMultiplier > 0) knockBack(living, entity, amount, deltaX, deltaZ, knockbackMultiplier); } else { living.attackedAtYaw = (float) ((int) (Math.random() * 2.0D) * 180); } @@ -126,6 +126,24 @@ public class EntityDamageUtil { return true; } + public static void knockBack(EntityLivingBase living, Entity attacker, float damage, double motionX, double motionZ, double multiplier) { + if(living.getRNG().nextDouble() >= living.getEntityAttribute(SharedMonsterAttributes.knockbackResistance).getAttributeValue()) { + living.isAirBorne = true; + double horizontal = Math.sqrt(motionX * motionX + motionZ * motionZ); + double magnitude = 0.4D * multiplier; + living.motionX /= 2.0D; + living.motionY /= 2.0D; + living.motionZ /= 2.0D; + living.motionX -= motionX / horizontal * magnitude; + living.motionY += (double) magnitude; + living.motionZ -= motionZ / horizontal * magnitude; + + if(living.motionY > 0.2D) { + living.motionY = 0.2D * multiplier; + } + } + } + public static void damageEntityNT(EntityLivingBase living, DamageSource source, float amount) { if(!living.isEntityInvulnerable()) { amount = ForgeHooks.onLivingHurt(living, source, amount); diff --git a/src/main/resources/assets/hbm/lang/de_DE.lang b/src/main/resources/assets/hbm/lang/de_DE.lang index 2a4c6a22b..f9263ab56 100644 --- a/src/main/resources/assets/hbm/lang/de_DE.lang +++ b/src/main/resources/assets/hbm/lang/de_DE.lang @@ -1184,6 +1184,7 @@ item.ammo_standard.g40_demo.name=40mm Abrissgranate item.ammo_standard.g40_he.name=40mm Sprenggranate item.ammo_standard.g40_heat.name=40mm Hohlladungsgranate item.ammo_standard.g40_inc.name=40mm Brandgranate +item.ammo_standard.g40_phosphorus.name=40mm Weiße Phosphorgranate item.ammo_standard.m357_ap.name=.357 Magnumkugel (Panzerbrechend) item.ammo_standard.m357_bp.name=.357 Magnumkugel (Schwarzpulver) item.ammo_standard.m357_express.name=.357 Magnumkugel (VMG Express) @@ -1222,6 +1223,7 @@ item.ammo_standard.rocket_demo.name=Abrissrakete item.ammo_standard.rocket_he.name=Explosivrakete item.ammo_standard.rocket_heat.name=Hohlladungsrakete item.ammo_standard.rocket_inc.name=Brandrakete +item.ammo_standard.rocket_phosphorus.name=Weiße Phosphorrakete item.ammo_standard.stone.name=Kugel und Pulver item.ammo_standard.stone_ap.name=Feuerstein und Pulver item.ammo_standard.stone_iron.name=Eisenkugel und Pulver @@ -3778,23 +3780,30 @@ rbmk.rod.xenon=Xenonvergiftung: %s rbmk.rod.coreTemp=Kerntemperatur: %s rbmk.rod.skinTemp=Außentemperatur: %s / %s +shape.barrelHeavy=Schwerer Lauf +shape.barrelLight=Leichter Lauf shape.billet=Billet shape.blade=Turbinenblatt shape.blades=Sägeblatt shape.block=Block shape.dust=Haufen shape.dusttiny=Winziger Haufen -shape.hull_big=Große Hülle +shape.grip=Griff +shape.gunMechanism=Mechanism +shape.hull_big=Große Mechanismus shape.hull_small=Kleine Hülle shape.ingot=Barren shape.nugget=Nugget shape.quantum=Quantum shape.quart=Viertel Block +shape.receiverHeavy=Schwerer Verschluss +shape.receiverLight=Leichter Verschluss shape.ntmpipe=Rohr shape.plate=Platte shape.plateTriple=Gussplatte shape.shell=Mantel shape.stamp=Stempel +shape.stock=Schaft shape.wireFine=Drähte shape.wireDense=Dichter Draht shape.wiresDense=Dichte Drähte diff --git a/src/main/resources/assets/hbm/lang/en_US.lang b/src/main/resources/assets/hbm/lang/en_US.lang index ecef71ce2..986a89820 100644 --- a/src/main/resources/assets/hbm/lang/en_US.lang +++ b/src/main/resources/assets/hbm/lang/en_US.lang @@ -1907,6 +1907,7 @@ item.ammo_standard.g40_demo.name=40mm Grenade, Demolition item.ammo_standard.g40_he.name=40mm Grenade, High-Explosive item.ammo_standard.g40_heat.name=40mm Grenade, Shaped Charge item.ammo_standard.g40_inc.name=40mm Grenade, Incendiary +item.ammo_standard.g40_phosphorus.name=40mm Grenade, White Phosphorus item.ammo_standard.m357_ap.name=.357 Magnum Round (Armor Piercing) item.ammo_standard.m357_bp.name=.357 Magnum Round (Black Powder) item.ammo_standard.m357_express.name=.357 Magnum Round (FMJ Express) @@ -1945,6 +1946,7 @@ item.ammo_standard.rocket_demo.name=Rocket, Demolition item.ammo_standard.rocket_he.name=Rocket, High-Explosive item.ammo_standard.rocket_heat.name=Rocket, Shaped Charge item.ammo_standard.rocket_inc.name=Rocket, Incendiary +item.ammo_standard.rocket_phosphorus.name=Rocket, White Phosphorus item.ammo_standard.stone.name=Ball and Powder item.ammo_standard.stone_ap.name=Flint and Powder item.ammo_standard.stone_iron.name=Iron Ball and Powder @@ -4833,23 +4835,30 @@ rbmk.screen.rod=Control: %s rbmk.screen.temp=Temp: %s rbmk.screen.xenon=Xenon: %s +shape.barrelHeavy=Heavy Barrel +shape.barrelLight=Light Barrel shape.billet=Billet shape.blade=Blade shape.blades=Shredder Blades shape.block=Block shape.dust=Dust shape.dusttiny=Tiny Dust +shape.grip=Grip +shape.gunMechanism=Mechanism shape.hull_big=Big Shell shape.hull_small=Small Shell shape.ingot=Ingot shape.nugget=Nugget shape.quantum=Quantum shape.quart=Quarter Block +shape.receiverHeavy=Heavy Receiver +shape.receiverLight=Light Receiver shape.ntmpipe=Pipe shape.plate=Plate shape.plateTriple=Cast Plate shape.shell=Shell shape.stamp=Press Stamp +shape.stock=Stock shape.wireFine=Wires shape.wireDense=Dense Wire shape.wiresDense=Dense Wires diff --git a/src/main/resources/assets/hbm/models/effect/skeleton.obj b/src/main/resources/assets/hbm/models/effect/skeleton.obj index d7ae2c48e..6e5c28f3c 100644 --- a/src/main/resources/assets/hbm/models/effect/skeleton.obj +++ b/src/main/resources/assets/hbm/models/effect/skeleton.obj @@ -1,182 +1,94 @@ -# Blender v2.79 (sub 0) OBJ File: 'skeleton.blend' +# Blender v2.79 (sub 0) OBJ File: '' # www.blender.org -o Torso -v 0.125000 -0.375000 0.250000 -v 0.125000 0.375000 0.250000 -v 0.125000 -0.375000 -0.250000 -v 0.125000 0.375000 -0.250000 -v -0.125000 -0.375000 0.250000 -v -0.125000 0.375000 0.250000 -v -0.125000 -0.375000 -0.250000 -v -0.125000 0.375000 -0.250000 -v 0.125000 -0.375000 0.250000 -v 0.125000 0.375000 0.250000 -v 0.125000 -0.375000 -0.250000 -v 0.125000 0.375000 -0.250000 -v -0.125000 -0.375000 0.250000 -v -0.125000 0.375000 0.250000 -v -0.125000 -0.375000 -0.250000 -v -0.125000 0.375000 -0.250000 -vt 0.312500 0.000000 -vt 0.437500 0.375000 -vt 0.437500 0.000000 -vt 0.500000 0.000000 -vt 0.437500 0.375000 -vt 0.437500 0.000000 -vt 0.625000 0.000000 -vt 0.500000 0.375000 -vt 0.312500 0.000000 -vt 0.250000 0.375000 -vt 0.250000 0.000000 -vt 0.437500 0.500000 -vt 0.562500 0.375000 -vt 0.562500 0.500000 -vt 0.312500 0.500000 -vt 0.437500 0.500000 -vt 0.437500 0.375000 -vt 0.312500 0.000000 -vt 0.437500 0.000000 -vt 0.437500 0.375000 -vt 0.500000 0.000000 -vt 0.437500 0.000000 -vt 0.500000 0.375000 -vt 0.625000 0.000000 -vt 0.250000 0.375000 -vt 0.312500 0.000000 -vt 0.250000 0.000000 -vt 0.562500 0.375000 -vt 0.437500 0.500000 -vt 0.562500 0.500000 -vt 0.312500 0.500000 -vt 0.437500 0.500000 -vt 0.312500 0.375000 -vt 0.625000 0.375000 -vt 0.312500 0.375000 -vt 0.437500 0.375000 -vt 0.312500 0.375000 -vt 0.625000 0.375000 -vt 0.312500 0.375000 -vt 0.437500 0.375000 -vn 1.0000 0.0000 0.0000 -vn 0.0000 0.0000 -1.0000 -vn -1.0000 0.0000 0.0000 -vn 0.0000 0.0000 1.0000 -vn 0.0000 -1.0000 0.0000 -vn 0.0000 1.0000 0.0000 -s off -f 3/1/1 2/2/1 1/3/1 -f 7/4/2 4/5/2 3/6/2 -f 5/7/3 8/8/3 7/4/3 -f 1/9/4 6/10/4 5/11/4 -f 1/12/5 7/13/5 3/14/5 -f 6/15/6 4/5/6 8/16/6 -f 10/17/3 11/18/3 9/19/3 -f 12/20/4 15/21/4 11/22/4 -f 16/23/1 13/24/1 15/21/1 -f 14/25/2 9/26/2 13/27/2 -f 15/28/6 9/29/6 11/30/6 -f 12/20/5 14/31/5 16/32/5 -f 3/1/1 4/33/1 2/2/1 -f 7/4/2 8/8/2 4/5/2 -f 5/7/3 6/34/3 8/8/3 -f 1/9/4 2/35/4 6/10/4 -f 1/12/5 5/36/5 7/13/5 -f 6/15/6 2/35/6 4/5/6 -f 10/17/3 12/37/3 11/18/3 -f 12/20/4 16/23/4 15/21/4 -f 16/23/1 14/38/1 13/24/1 -f 14/25/2 10/39/2 9/26/2 -f 15/28/6 13/40/6 9/29/6 -f 12/20/5 10/39/5 14/31/5 -o Skull -v -0.250000 -0.250000 0.250000 -v -0.250000 0.250000 0.250000 -v -0.250000 -0.250000 -0.250000 -v -0.250000 0.250000 -0.250000 -v 0.250000 -0.250000 0.250000 -v 0.250000 0.250000 0.250000 -v 0.250000 -0.250000 -0.250000 -v 0.250000 0.250000 -0.250000 -v -0.250000 -0.250000 0.250000 -v -0.250000 0.250000 0.250000 -v -0.250000 -0.250000 -0.250000 -v -0.250000 0.250000 -0.250000 -v 0.250000 -0.250000 0.250000 -v 0.250000 0.250000 0.250000 -v 0.250000 -0.250000 -0.250000 -v 0.250000 0.250000 -0.250000 -vt 0.500000 0.750000 -vt 0.375000 0.500000 -vt 0.500000 0.500000 -vt 0.375000 0.750000 -vt 0.250000 0.500000 -vt 0.250000 0.750000 -vt 0.125000 0.500000 -vt 0.125000 0.750000 -vt -0.000000 0.500000 -vt 0.250000 0.750000 +o SkullVillager +v -0.250000 0.312500 0.250000 +v -0.250000 -0.312500 -0.250000 +v -0.250000 -0.312500 0.250000 +v -0.250000 0.312500 -0.250000 +v 0.250000 -0.312500 -0.250000 +v 0.250000 0.312500 -0.250000 +v 0.250000 -0.312500 0.250000 +v 0.250000 0.312500 0.250000 +v -0.250000 -0.312500 -0.250000 +v -0.250000 0.312500 0.250000 +v -0.250000 -0.312500 0.250000 +v 0.250000 -0.312500 -0.250000 +v -0.250000 0.312500 -0.250000 +v 0.250000 -0.312500 0.250000 +v 0.250000 0.312500 -0.250000 +v 0.250000 0.312500 0.250000 +vt 0.500000 0.875000 +vt 0.375000 0.718750 +vt 0.500000 0.718750 +vt 0.375000 0.875000 +vt 0.250000 0.718750 +vt 0.250000 0.875000 +vt 0.125000 0.718750 +vt 0.125000 0.875000 +vt 0.000000 0.718750 +vt 0.250000 0.875000 vt 0.375000 1.000000 vt 0.250000 1.000000 vt 0.250000 1.000000 -vt 0.375000 0.500000 -vt 0.500000 0.750000 -vt 0.500000 0.500000 -vt 0.250000 0.500000 -vt 0.375000 0.750000 -vt 0.125000 0.500000 -vt 0.250000 0.750000 -vt -0.000000 0.500000 -vt 0.125000 0.750000 +vt 0.375000 0.718750 +vt 0.500000 0.875000 +vt 0.500000 0.718750 +vt 0.250000 0.718750 +vt 0.375000 0.875000 +vt 0.125000 0.718750 +vt 0.250000 0.875000 +vt 0.000000 0.718750 +vt 0.125000 0.875000 vt 0.375000 1.000000 -vt 0.250000 0.750000 +vt 0.250000 0.875000 vt 0.250000 1.000000 vt 0.250000 1.000000 -vt -0.000000 0.750000 -vt 0.375000 0.750000 +vt 0.000000 0.875000 +vt 0.375000 0.875000 vt 0.125000 1.000000 -vt -0.000000 0.750000 -vt 0.375000 0.750000 +vt 0.000000 0.875000 +vt 0.375000 0.875000 vt 0.125000 1.000000 vn -1.0000 0.0000 0.0000 vn 0.0000 0.0000 -1.0000 vn 1.0000 0.0000 0.0000 -vn 0.0000 0.0000 1.0000 +vn 0.0000 -0.0000 1.0000 vn 0.0000 -1.0000 0.0000 vn 0.0000 1.0000 0.0000 -s off -f 18/41/7 19/42/7 17/43/7 -f 20/44/8 23/45/8 19/42/8 -f 24/46/9 21/47/9 23/45/9 -f 22/48/10 17/49/10 21/47/10 -f 23/50/11 17/51/11 19/52/11 -f 20/53/12 22/48/12 24/46/12 -f 27/54/9 26/55/9 25/56/9 -f 31/57/10 28/58/10 27/54/10 -f 29/59/7 32/60/7 31/57/7 -f 25/61/8 30/62/8 29/59/8 -f 25/63/12 31/64/12 27/65/12 -f 30/62/11 28/66/11 32/60/11 -f 18/41/7 20/44/7 19/42/7 -f 20/44/8 24/46/8 23/45/8 -f 24/46/9 22/48/9 21/47/9 -f 22/48/10 18/67/10 17/49/10 -f 23/50/11 21/68/11 17/51/11 -f 20/53/12 18/69/12 22/48/12 -f 27/54/9 28/58/9 26/55/9 -f 31/57/10 32/60/10 28/58/10 -f 29/59/7 30/62/7 32/60/7 -f 25/61/8 26/70/8 30/62/8 -f 25/63/12 29/71/12 31/64/12 -f 30/62/11 26/72/11 28/66/11 +s 1 +f 1/1/1 2/2/1 3/3/1 +f 4/4/2 5/5/2 2/2/2 +f 6/6/3 7/7/3 5/5/3 +f 8/8/4 3/9/4 7/7/4 +f 5/10/5 3/11/5 2/12/5 +f 4/13/6 8/8/6 6/6/6 +f 9/14/3 10/15/3 11/16/3 +f 12/17/4 13/18/4 9/14/4 +f 14/19/1 15/20/1 12/17/1 +f 11/21/2 16/22/2 14/19/2 +f 11/23/6 12/24/6 9/25/6 +f 16/22/5 13/26/5 15/20/5 +f 1/1/1 4/4/1 2/2/1 +f 4/4/2 6/6/2 5/5/2 +f 6/6/3 8/8/3 7/7/3 +f 8/8/4 1/27/4 3/9/4 +f 5/10/5 7/28/5 3/11/5 +f 4/13/6 1/29/6 8/8/6 +f 9/14/3 13/18/3 10/15/3 +f 12/17/4 15/20/4 13/18/4 +f 14/19/1 16/22/1 15/20/1 +f 11/21/2 10/30/2 16/22/2 +f 11/23/6 14/31/6 12/24/6 +f 16/22/5 10/32/5 13/26/5 o Limb -v -0.062500 -0.375000 0.062500 v -0.062500 0.375000 0.062500 v -0.062500 -0.375000 -0.062500 +v -0.062500 -0.375000 0.062500 v -0.062500 0.375000 -0.062500 -v 0.062500 -0.375000 0.062500 -v 0.062500 0.375000 0.062500 v 0.062500 -0.375000 -0.062500 v 0.062500 0.375000 -0.062500 +v 0.062500 -0.375000 0.062500 +v 0.062500 0.375000 0.062500 vt 0.125000 0.437500 vt 0.093750 0.062500 vt 0.125000 0.062500 @@ -196,19 +108,187 @@ vt 0.031250 0.500000 vn -1.0000 0.0000 0.0000 vn 0.0000 0.0000 -1.0000 vn 1.0000 0.0000 0.0000 -vn 0.0000 0.0000 1.0000 +vn 0.0000 -0.0000 1.0000 vn 0.0000 -1.0000 0.0000 vn 0.0000 1.0000 0.0000 -s off -f 34/73/13 35/74/13 33/75/13 -f 36/76/14 39/77/14 35/74/14 -f 40/78/15 37/79/15 39/77/15 -f 38/80/16 33/81/16 37/79/16 -f 39/82/17 33/83/17 35/84/17 -f 36/85/18 38/80/18 40/78/18 -f 34/73/13 36/76/13 35/74/13 -f 36/76/14 40/78/14 39/77/14 -f 40/78/15 38/80/15 37/79/15 -f 38/80/16 34/86/16 33/81/16 -f 39/82/17 37/87/17 33/83/17 -f 36/85/18 34/88/18 38/80/18 +s 1 +f 17/33/7 18/34/7 19/35/7 +f 20/36/8 21/37/8 18/34/8 +f 22/38/9 23/39/9 21/37/9 +f 24/40/10 19/41/10 23/39/10 +f 21/42/11 19/43/11 18/44/11 +f 20/45/12 24/40/12 22/38/12 +f 17/33/7 20/36/7 18/34/7 +f 20/36/8 22/38/8 21/37/8 +f 22/38/9 24/40/9 23/39/9 +f 24/40/10 17/46/10 19/41/10 +f 21/42/11 23/47/11 19/43/11 +f 20/45/12 17/48/12 24/40/12 +o Skull +v -0.250000 0.250000 0.250000 +v -0.250000 -0.250000 -0.250000 +v -0.250000 -0.250000 0.250000 +v -0.250000 0.250000 -0.250000 +v 0.250000 -0.250000 -0.250000 +v 0.250000 0.250000 -0.250000 +v 0.250000 -0.250000 0.250000 +v 0.250000 0.250000 0.250000 +v -0.250000 -0.250000 -0.250000 +v -0.250000 0.250000 0.250000 +v -0.250000 -0.250000 0.250000 +v 0.250000 -0.250000 -0.250000 +v -0.250000 0.250000 -0.250000 +v 0.250000 -0.250000 0.250000 +v 0.250000 0.250000 -0.250000 +v 0.250000 0.250000 0.250000 +vt 0.500000 0.750000 +vt 0.375000 0.500000 +vt 0.500000 0.500000 +vt 0.375000 0.750000 +vt 0.250000 0.500000 +vt 0.250000 0.750000 +vt 0.125000 0.500000 +vt 0.125000 0.750000 +vt -0.000000 0.500000 +vt 0.250000 0.750000 +vt 0.375000 1.000000 +vt 0.250000 1.000000 +vt 0.250000 1.000000 +vt 0.375000 0.500000 +vt 0.500000 0.750000 +vt 0.500000 0.500000 +vt 0.250000 0.500000 +vt 0.375000 0.750000 +vt 0.125000 0.500000 +vt 0.250000 0.750000 +vt -0.000000 0.500000 +vt 0.125000 0.750000 +vt 0.375000 1.000000 +vt 0.250000 0.750000 +vt 0.250000 1.000000 +vt 0.250000 1.000000 +vt -0.000000 0.750000 +vt 0.375000 0.750000 +vt 0.125000 1.000000 +vt -0.000000 0.750000 +vt 0.375000 0.750000 +vt 0.125000 1.000000 +vn -1.0000 -0.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +vn 1.0000 -0.0000 0.0000 +vn 0.0000 -0.0000 1.0000 +vn 0.0000 -1.0000 -0.0000 +vn 0.0000 1.0000 0.0000 +s 1 +f 25/49/13 26/50/13 27/51/13 +f 28/52/14 29/53/14 26/50/14 +f 30/54/15 31/55/15 29/53/15 +f 32/56/16 27/57/16 31/55/16 +f 29/58/17 27/59/17 26/60/17 +f 28/61/18 32/56/18 30/54/18 +f 33/62/15 34/63/15 35/64/15 +f 36/65/16 37/66/16 33/62/16 +f 38/67/13 39/68/13 36/65/13 +f 35/69/14 40/70/14 38/67/14 +f 35/71/18 36/72/18 33/73/18 +f 40/70/17 37/74/17 39/68/17 +f 25/49/13 28/52/13 26/50/13 +f 28/52/14 30/54/14 29/53/14 +f 30/54/15 32/56/15 31/55/15 +f 32/56/16 25/75/16 27/57/16 +f 29/58/17 31/76/17 27/59/17 +f 28/61/18 25/77/18 32/56/18 +f 33/62/15 37/66/15 34/63/15 +f 36/65/16 39/68/16 37/66/16 +f 38/67/13 40/70/13 39/68/13 +f 35/69/14 34/78/14 40/70/14 +f 35/71/18 38/79/18 36/72/18 +f 40/70/17 34/80/17 37/74/17 +o Torso +v 0.125000 -0.375000 -0.250000 +v 0.125000 0.375000 0.250000 +v 0.125000 -0.375000 0.250000 +v -0.125000 -0.375000 -0.250000 +v 0.125000 0.375000 -0.250000 +v -0.125000 -0.375000 0.250000 +v -0.125000 0.375000 -0.250000 +v -0.125000 0.375000 0.250000 +v 0.125000 0.375000 0.250000 +v 0.125000 -0.375000 -0.250000 +v 0.125000 -0.375000 0.250000 +v 0.125000 0.375000 -0.250000 +v -0.125000 -0.375000 -0.250000 +v -0.125000 0.375000 -0.250000 +v -0.125000 -0.375000 0.250000 +v -0.125000 0.375000 0.250000 +vt 0.312500 0.000000 +vt 0.437500 0.375000 +vt 0.437500 0.000000 +vt 0.500000 0.000000 +vt 0.437500 0.375000 +vt 0.437500 0.000000 +vt 0.625000 0.000000 +vt 0.500000 0.375000 +vt 0.312500 0.000000 +vt 0.250000 0.375000 +vt 0.250000 0.000000 +vt 0.437500 0.500000 +vt 0.562500 0.375000 +vt 0.562500 0.500000 +vt 0.312500 0.500000 +vt 0.437500 0.500000 +vt 0.437500 0.375000 +vt 0.312500 0.000000 +vt 0.437500 0.000000 +vt 0.437500 0.375000 +vt 0.500000 0.000000 +vt 0.437500 0.000000 +vt 0.500000 0.375000 +vt 0.625000 0.000000 +vt 0.250000 0.375000 +vt 0.312500 0.000000 +vt 0.250000 0.000000 +vt 0.562500 0.375000 +vt 0.437500 0.500000 +vt 0.562500 0.500000 +vt 0.312500 0.500000 +vt 0.437500 0.500000 +vt 0.312500 0.375000 +vt 0.625000 0.375000 +vt 0.312500 0.375000 +vt 0.437500 0.375000 +vt 0.312500 0.375000 +vt 0.625000 0.375000 +vt 0.312500 0.375000 +vt 0.437500 0.375000 +vn 1.0000 -0.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +vn -1.0000 -0.0000 0.0000 +vn 0.0000 -0.0000 1.0000 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 1.0000 0.0000 +s 1 +f 41/81/19 42/82/19 43/83/19 +f 44/84/20 45/85/20 41/86/20 +f 46/87/21 47/88/21 44/84/21 +f 43/89/22 48/90/22 46/91/22 +f 43/92/23 44/93/23 41/94/23 +f 48/95/24 45/85/24 47/96/24 +f 49/97/21 50/98/21 51/99/21 +f 52/100/22 53/101/22 50/102/22 +f 54/103/19 55/104/19 53/101/19 +f 56/105/20 51/106/20 55/107/20 +f 53/108/24 51/109/24 50/110/24 +f 52/100/23 56/111/23 54/112/23 +f 41/81/19 45/113/19 42/82/19 +f 44/84/20 47/88/20 45/85/20 +f 46/87/21 48/114/21 47/88/21 +f 43/89/22 42/115/22 48/90/22 +f 43/92/23 46/116/23 44/93/23 +f 48/95/24 42/115/24 45/85/24 +f 49/97/21 52/117/21 50/98/21 +f 52/100/22 54/103/22 53/101/22 +f 54/103/19 56/118/19 55/104/19 +f 56/105/20 49/119/20 51/106/20 +f 53/108/24 55/120/24 51/109/24 +f 52/100/23 49/119/23 56/111/23 diff --git a/src/main/resources/assets/hbm/textures/entity/ModelGrenade.png b/src/main/resources/assets/hbm/textures/entity/ModelGrenade.png deleted file mode 100644 index 519dd733df5eee017eca58c38aea779a0c0d5907..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 702 zcmV;v0zv(WP)N2bZe?^J zG%hhNHDpIvQUCw~JV``BR9Hvtlrc-hKoEuVj|5Rv6hROyV7+F4p!_`jkr&I|8e_RJD29r(COZZb3bW_OD&JH9-soR_8b#=p2PTfA>KjWmGio?+4xrv;}##AJB=S{`dfK-Ryl8LTaADFc-`W2XSeYqO@C8qiAt<1Cx5Dd zCMH@y8zXq8f_HjU{pgao4cg|C>HQBPtkbY^TwL*(Z!VeM{~*FT4J$|U@tAKe zSziV49dgBEzIj1!D8f1o%0bO|%r}?ZM-pKz!v>}7EbgZZ$2h|0n=9a(GQwJhBZ^oQ zMl--0Kum=Hbc|r_8osaClMufjm=8_h8TdDdiSk7)hX*i$uGnLU-;h`UHy#S5@*{VY z|B=iC@FCF4#$$*p5NY!bg*+*x)8rmQw8rE=jHZhcXn?rE;~27J9B@e^n>MY-gMS!y664$Y$ zoibYV6I*K^l0Y$#Lpuo^<`n!EbG7!N2oS1KplnHd5C#Q*E96@HPy~8OEJ9K6^C;HZ zha%8R;%1{+B+zUj64CJxFiDx(b-y$a$EbiQP-+)p@t5+TrM2r&T3lX8C?lYZg3$J- z!yE)*U`(!_a{#C`s}Lf)mQsoXzAx|9-l2jBA@J(iYi+Z*_vlWc2?5y}SEDfqA>@@N z2Y?B85_|RU0DvHj3nbeFy41?#Q)?{ZcH%~(0pIrl0G{WeQmJHO@Ib#WNVkqf4G*P8e0b@+sCjH(h*FcV1jXFP67-#jH7gv&xKQ7Aq`AgsMZvV2pUt4|NbaM3FIXkWW;9T5F0#-haix9s~Kd(s<4;~Uat>M zATN2pBX)CbIypV=z$G>;=HmCSI&R$kl&Syv;(w_oB7^C)AfYTOg zhrV`=>vXyo*<71WswXJivL#vjegl8%BJ;8_x4KgTb_&66EzQe;b#>w^9A?9zHUbeN z2=%phm_ndd4{>|tb4H@AjhUq1mkMN>XZysMa7+L3FBDo2V`I@2)95Ky|GE>2;;u~-Kc9EI=BM=@gM&Htx9IfNF!d3czd%u`(tspo7vr&yUmd@9~^i4-t2qd zesAWzy&8s~xweuNZHuk%*qOWx0GOB@FWqzV&mKOVp927_KYLpn6rT`s1?IRJOOrwBpWp+RCOa530t$ic{!z7l0EcrzgY3(Bs z7$$MI(=8JSVuUh09RemPQ@id-{nJ#y6ezXJp!}pl##*}$wdUGN!fXm=Gf>w1c5DZJ z;2V>x=Ntg)-3Fx0uVswkK_=tZwGK(4u=xxa#3Bc&j=Vwkdu@5lDMv$ z`CZq|lBMz0`B5NXR>0&_vh<+o!PPv?JHmyP?R!?$1fix>d^~j2pLG@9#G{x z5c`WJNJ&L`6o4mcsOILF`C5pKQvnydf%(p>UzYp*ttK=G}n>WKBj2<@(fATio4 zPrHV*VVP38cLus#<27BM$)TW t1QEn&3kg4rD*d}r*Er diff --git a/src/main/resources/assets/hbm/textures/entity/ModelGrenadeSleek.png b/src/main/resources/assets/hbm/textures/entity/ModelGrenadeSleek.png deleted file mode 100644 index 581649526c56cce356cb43c4d82f881596dba5d7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 823 zcmV-71IYY|P)=HZtr$76OyqQGMm{+c4y`6?!m(5Ws-dIeR(g5 zu)+p|LAB_6a6iKP54Af@)6SSDk1ITX6#)PylS#B}ezppLQrhu}1h8&GNVlH@9{1@1 zB=H=;*H1VHrRx6yh_nKwwX$04PQOta9{0ZitdiIm)9IJ0f-y@&-ydL=#7cFgmN`yO z0iVPGZ~VUgqC7h<0CkLQ9dJQD z?gD8_k>`0+N8H-c0?=CH@bJ)kVur(^cN=buEvyS{4{n;KI6giG02I=%3JdLWaaXP_ z##n2OvMiee$vH}pma@uP0x%Wp0 zU^E(4ZtB@n9SVUfXP)OxD!L2W|BV99{oz`$V1NE}rF!#j-hTN^;OUEbdpsWZD)tBa z!|L4m4UDdS@qQnygh@<O7^brt$8?wRN;YP08U%4 z8mV;eE7mo_1?16meSk&DWv+TDu(!KYUAmam8{h)Je@$`y#-lyKX)lwu;FyCEs)nu+5)~s}W09xf%te+*!mBX4WYJeqA1uuX|)?OcM zbCYBI^;%WOO+)4e*;JvB+IxR514!ca0nY5q{sIFrVUKCk0&M^Q002ovPDHLkV1jq1 Bb5H;P diff --git a/src/main/resources/assets/hbm/textures/entity/ModelGrenadeToxic.png b/src/main/resources/assets/hbm/textures/entity/ModelGrenadeToxic.png deleted file mode 100644 index cd1064afc6432fdb9345cb0bbe4bbf3cd61a7a0b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 868 zcmV-q1DpJbP)q9Sr|e}JNR2#Rox<<(m0A*WXy79z?a zSZOcF;T2XEo)%)|)s{BGsfA}F79z;Obz)eOon-REVmGssWU{}w@*adu-kZGl&G+WL zmu+E;tgf%*Rb6!c2iW&B0Dz;%+O>DY#a-~P3jl!4$1hr={F8A2s8e5(aZBl`Lu>Y& z+eZD201N@xFaUE{9iYXH`k4R_T3?cIOX;IHs@pSR)XxN99K|x0HG3pdv<&*00F0x! z7xe0Oks*=E!2oEYve26th@%5!z!bpN^fIpRREi9iL2r`Q>iSAf9Rli55ZeD`4nq`2 z#^6A?&H=#dbs%MVEu|FuVoyEmy+aowrNpa^H^ydh_sN}F69URP?j$E5rBqiD902C{ zJpOcl0|1gJg(d47B2Bvl%=8209LuyHI0yoSVF&zEK`1gN{($n zN{KKG6#xKm90!zARjy6lkrZ?p0~sg-DsOS#vfu(+jA2VsETKZ#WP*m!+?rv>cPoZY;4Lk+C>+)of@!(le!C`A&P zb5EECK=?7<-u_aeXl;8jpLEB1w@gHe`O_znWCE73AVmh@$F+ATw}t?8ItmH=zSBuQ zD)fVzbGxzLb?LKN0AO_h1$CzRT?3$Xzs%rkoDiK31z=FOlcYc&Fqy&ESOC03vHo!> uPcnf>q=VBdkwoc4|87btn1O*qIh6m{<9p;PwO>2{0000hPcG45q|Z|A+y<2oNqbMM~Ff8Naee;a{|fw5Ft z>mFHd-b4|Vk68gCCDRL%E;r2dynuuj&{uT%a9RPnL+5{I+ze9+;97i=&sYH4;L$gkpf8y-En8$S8nH_=lk~87K);%{U(IK?$h@H0(OopwwK$@ zV&9S`1OS^SZt-%IixIFb|1J1WxILk8Rxoeq}5=!0O-hagW0AkEPBW4df z-=Zjx=lNIw03=BQAq2?z0mPW=`m@&;K?2C2<_8dyUQZoQC4>-=^1owADc$Y?mL)Oi z^-TK!K#bf%N+~2sG8R-0jwO-)W^ME7nGxIt47>xI=U-Z%;n$TcE=ox(j@B<#*DGJH{}Fz(*Y!xG&ft;3ycnlN6@t z0_JeCrs9t6Fv{-noz!lvI6;>1s;*b3=DjSL74G){)!Z!;BHSB$B+p3w-XL>9yZ`{we|OtR7_w0P`Bpe z$;G8jPS*o}Du^Zu9ak08b>X+0sN)`ABv5oN#A{*HYxfg{_f~&=fBol8hNKI|k~*5Z8CC;e3wgRpEH}Yuay6$P}?V~x7=I4u6&a_ zJ4mVH^3OTB9G@i?-xatO(S3SbhoITDOQyjIN^Mee?j|=(D_gLb@$8Ro#t*HUSDtm8 zZCsh5UoLaJP$peYaSx-(i}bP0l+XlZ%9prCl=$YSq~rna_7C z@%jpU#>sonecwYVg=JZg-;FV+?jHa;?>#?vyP~y*wN}&!4ghi(2JsbzwE|~u4kIE4 zfEXjTZNomnOu1h*fihTDJB}j*z%)%&)dQC)@ZNI>fr*H<)=)|z#)z^%)^&YPq$UEm zmVHm{`#z#0A~wc|7$eHZ7$fc_Ruc&TAq2M8eoz}i`0?PtANUjAKtx=s-`ll$c?IOr zqP13(s!My{D`z=8tnB{%H2lVBHX4maqw&9Z10i;!az4n+y8r+H07*qoM6N<$f)((P Ap#T5? diff --git a/src/main/resources/assets/hbm/textures/entity/ModelRocketEMP.png b/src/main/resources/assets/hbm/textures/entity/ModelRocketEMP.png deleted file mode 100644 index 5dcff98f237bba5d8d09525349aae9fe68626b1f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 322 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz#^NA%Cx&(BWL^R}Ea{HEjtmSN z`?>!lvI6;>1s;*b3=DjSL74G){)!Z!;2KXC$B+p3w-aKym=$?iitXZSJ~;0AdoQ7X zf>DB(SA>5M*iHZ&*y*M%8+!yNOEWJ?Y-wcK2NmX zdRM8h`K8Uw89z78W0LxIVcF##)4iO_{qH(0YgzcG?=NGu-PGBc-kLmDix}r}CdxTQ zNH|Gn=Q{QnY!tg8#H5zA;^4h{mJK%?)-&lnR%c?E;k4}@laFip*2flok1Z}MR56^% zD6Uy~c%mK9-3*?telF{r5}JTa`4ZQN65srk)EtJ8)Z~o3RQ;g*!lvI6;>1s;*b3=DjSL74G){)!Z!;9gG`$B+p3w-XL>9yZ`{we?Y$5V)r;{e-G` ze9_6Sy9<=REcxW9bx5VpTPJ9RT#Zs>-@YdbPb!y{MrNG;srQmmkth40I)9eL`?d=(t^N!8h%)2{3)_GgY!aaUJnNs&^ zSKnSXh2zl{`*i6;Hpeo|Tg32n4IMl!FI;R$`*Vch#~~4| z;v>%vglw5^-S^m{?{dGuy%lF-51pFYydCHf22WQ%mvv4FO+co6iEBiOZ+=Q@4ns(4 Yaz!lvI6;>1s;*b3=DjSL74G){)!Z!;C4?J$B+p3w-X$>m<>5xZR5=%Qv{3dt=s*c zx2i$zz$Zs`PUD$VI=2MK*SIAgTd%14{LE63bzAeC`aTEx*6lxcoh_hw;>k0zncppq z&!)fgu$G@^{^L2rZ!lvI6;>1s;*b3=DjSL74G){)!Z!;C4?J$B+p3w-XGx4jb^emTu6CwW|2|;NXvM zdmZ~1d~)PEq|)cD6SYFFMk%syUrJEXxfrj9QLojWSjb;}^8Iy9E`zDW%rkc;md!W5 zT=T4N%jbuc%5`@;e>&zQYsNG4s@fcxrDwctPVSDH*MhrLdA^qZ5`Xd9`{wO!TaQgx z^4jvYz%xzN{fcWgPMuO4sGO6Nn!WCT3$L!l?|#OrUyXfiC6CqF4u~%cn6F&MzHHTA z8;&Lgj;2z9y^N+>))t;-TIYdYVDNPHb6Mw<&;(@4m$*ih_~xgi<}ie$CTHZO>IdZ~ QXQ!6vgT)|h(e1I`06%ViX#fBK diff --git a/src/main/resources/assets/hbm/textures/entity/ModelRocketNuclear.png b/src/main/resources/assets/hbm/textures/entity/ModelRocketNuclear.png deleted file mode 100644 index 81bf7d0e578159115f5cae555ba369d9834a0648..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 375 zcmV--0f_#IP))jvKrY3KwxT* zC%8vAB<4hGDiO>vz)-h{G`(>B3r&a4kWXE*oBM5k*+iJo?RE61zEA!1fa~@lci9KU z^Cxe`7=T5w+nak~18SQr_JMSJ9kqjH4y?-gtrLImz&c4;f}R}1`58Puf&G?fz4gne zWeK`Et)$h2MvV9n2iR+0B0t%oFX8F`suP+UM}{MKd4+0$7B}v-09VZJ_Tnm5fQNqS zb@wp21zCa)QdD!a)imP6k(sxN@5Ojph))Dc+h>BF&wH+h=BPx-ApKrMBQ9fGtw3{Q ze|6p-$yUYLftPTGsw0aW^2KgC0Hz1rKColodUHG6Z9a+2ZE(lFiwFb)fk5DY^98$S Vm~P`~2!;Rv002ovPDHLkV1mTyqwN3y diff --git a/src/main/resources/assets/hbm/textures/entity/ModelRocketPhosphorus.png b/src/main/resources/assets/hbm/textures/entity/ModelRocketPhosphorus.png deleted file mode 100644 index 30a9c896dc752ec63c9617ffbdc56138aa75cbfd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 322 zcmV-I0lof-P)+-vRh*ZCMsU1BaG}dmyZ}F$LEgxV7iM zPCVU#dx=V^sI`v8eKP`x=j$y2NGSnu&NVe&&LN4ox5A#up;CED974c*pY~ihP+9NF zF9(b<(HPU^%uCW&@SRj^jg*oQ0(|uc0PDK)2oVB)Y%l43-c?d^rBuwvHDNtDrsUrH zi)xdINAr4rLalYot1si;Jl%m~ZPI%$@~ZQ=?3GrkFUz~%IVZ}vr+~p=Fc=I5pX}m| UImPg1kN^Mx07*qoM6N<$f>RZZ_y7O^ diff --git a/src/main/resources/assets/hbm/textures/entity/ModelRocketShrapnel.png b/src/main/resources/assets/hbm/textures/entity/ModelRocketShrapnel.png deleted file mode 100644 index 62fa9befdb2d0fdce8efa0276a40c993b2d67a6d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 326 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz#^NA%Cx&(BWL^R}Ea{HEjtmSN z`?>!lvI6;>1s;*b3=DjSL74G){)!Z!;08|@$B+p3w-da%niY9kil;a&Y%hF#sI}tv zy#?+bk_M{0^;d(owmxfSe5`Cdu|-08`4o%ie+07LY(Mwv^ZB1q42Bsqd+w}!doO*- z&l7WRPLMif%Qa+ZjAv{an^LB{Tt<@+GbjCBFG7sW}WGsmU36sro_r$=RtT`d~2# JTXcJ@Hvp~ldr<%Y diff --git a/src/main/resources/assets/hbm/textures/entity/ModelRocketSleek.png b/src/main/resources/assets/hbm/textures/entity/ModelRocketSleek.png deleted file mode 100644 index cd8b7015351e2ab6b4de32cc6fe56aa5085fc60a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 327 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz#^NA%Cx&(BWL^R}Ea{HEjtmSN z`?>!lvI6;>1s;*b3=DjSL74G){)!Z!;6_gu$B+p3w-c?o4jTx#TxGk&)%5F&RfG23 z|6FY5jdz?9&v>m7k8F&P=lGq#_4Za(a*jmdUAc>v)05Zs&QM@!6-Wf#( zX-{a9tY#Xeni;hc|e z^tUc4spL>pD#_uWeky@~=l6a2oiC^CtC3KBctPkgx5tv2ikUB28J5K8obOts(Y5Fg z=dl`w#23p~*lhda0CYTqr>mdKI;VstAXC1?HKN2fKP5GXAtW_9BQI4yC_gznwL~8* L24RbCkM#xsaI?Gwv?1YX}Qw`P2|3v#FGw+pO4OX za8HCGk4FIhK4mP-Ebr^ydzp{VxsHV-wAK(20FXP7%j-r&KoUqk869Q1fn=H)NJ0`M zEuS+PNGiSeM{})pX>v#&O-RDs-H7C aXSo4C+fl<76S%_w0000@{jUH@o0?V-nDygLaH>;on>3P zCX@(10Ydt}u${K^s2RxCT1Lb&^8QWq-ZjP$prc8EETyFFrAc0Qh;0D^6cMVmUe;bF xcaU3P6`2CN>r9cI!%h+4?8&~!ar0yG0SSXj5)*QpU;qFB00>D%PDHLkV1kltLU{lH diff --git a/src/main/resources/assets/hbm/textures/items/ammo_standard.p22_fmj.png b/src/main/resources/assets/hbm/textures/items/ammo_standard.p22_fmj.png index 1112b26c1c7f0a90af37e90dac2b028f4ff0d471..cfe452c8d451654dee7e45633f7bc7ecfc7df2a0 100644 GIT binary patch delta 198 zcmX@W_=$0XN&QMs7sn8b-sA*{PYr@Ig{7o^$sdc`TV<-etjOm;)0xVzuSA_gLq!k2 zy}eyhLPFx7a59JRt^**RUEQA(3TkR?kCYb06nuE#=*Gs@_TS3NiYF*2hzA6wXGi{f zZTA1*OChlm#umdKI;Vst0I`x&4FCWD delta 148 zcmV;F0Bis90l)!}G=FzVL_t(IjbmUKejqe7^nYk*=zn6>vmkTq?d|`kq@*z1zI~g4 zfq~)w>eZ_m2^qkIE^zzyZHA8@KQf4ki7{NRWg*%nD6YuP&i;S7mgWEd_xAtEGGu=w z!~dsC#Qy(0rZZ{?njusP*!__Vq-#btglx?;0{|#9Y9;|`-VM+I00003GE8QBoBHPZ|L Y0Bt{FaR2CHcK`qY07*qoM6N<$f--y95pr?fHG`fWAi4Bc(+=H;P_LKE6{ME)iGv_qf8jvqyjuhYEI1 zV_mN(p$C>c{yiToDX^||mgDjhvlb{u9Q^0eX7S&DddJ`Yl|Ik^|Ns8&e|x9m^z29t n^OSlO=9jZ3@+w9fpJiZhd6@Ay|B@sR0}yz+`njxgN@xNA2qImV delta 148 zcmV;F0Bis20l)!}G=FzVL_t(IjbmUKejwLL^?$CD>VIO@vmkSP^rZgBSSd3+`|^*0 zfq~)wmT_sSQy80000hPT^Gl3kiP?LZ*LPt(bDlpM@L&pe`Awqt8{W*mvXrbK(E(R&*L}-7Atvt zd^}oP!j#Fa(n%`cY&KIBW)mb%fOPj>uSXb$0630Axm;FD;%_E#0w$FdLJ$N2g+d`! zp{|mZmO!u9BM1Tj_V)Ht73iv2X##>EU~g{^UDs(goBa6kBW<~^jFnCSskj=XX;Y`c z->};+V(awuR0(fc7I7S77{*kmD2mwG*`eKT69fT52-SBm7y!`k_krdhG9^tRJeQhE&%7}=k)u1 zWl6_zFbsnzifFZ32qA#+WK1%t{3J4x+$1^EG}Q-P*NNkpIF4~$S9!+g&!5$I0oQf; z`ST|*J{}v52CnO>ak{S4?REi>@4n8Fq~`lRLJ0EtJaHW3`#!_r5XW)Y+1UZ$=FOY< zzE2PY^m;ut5dgMrBZQ#a?GlC|rfFiDCQ%frF@-`wMUsYL;5d$YwrMmNyQtihr0ZLj z#qRDdrfG6~dz2fZbjE^5bqU$=lySv13tj5ZBNv?AwshOsU z@B8HQdA@!7#{T|3x~|i1x9N7fn5IdsR+}31;ll?2o;-Pi=Xu0&OtDx*2*H;xU$}Sg zo>~rZ94o7Po=3CUWH1;^ZM>UA^L-x}Z-7#$;c%$d_4n`JdGzR!iVG~uqTB6a+qT;5 zgb?Zkc=+(4dSAQU2Eh0I3z6jc`T2#@A|oRsBO@atBO@atBO~K#NW7EJ>I2B?1FrS0 z?z&|40ZARQ`T(x?t?s&H^#QAN`lssyUcY`lg7H;2%+C%ls}Gn=r?*-yl@`zC#?B?L z%NNBFFJ8RZXq<4t17vns2!UjN5%20;+0f*pG7=-_UuwU;mw;jBN;acAs7q>^!t5sxg4fxUa)N1 z^5x)nXu7DqOl;f6aU6!jp>k&#OUV6bmNezlV0`1#>-FZgNmQ%V(PYSM+cp4)hlf*^ zsnu#DfKQ)3O^uiRVH`8m>-EvBV(ZA4gyy;~g+hTvZ4xIZCsT@6tJM*V6_%4wtJOww zf@b?qB9)(FMbx&70(;jdNXA$_pfs_Dyn{{09y8(VWiMMYsR}002ovPDHLkV1iY7_1^#h literal 0 HcmV?d00001 From f49b832c961e3527d133fdee9b3f9e50621e6f69 Mon Sep 17 00:00:00 2001 From: Bob Date: Sun, 8 Dec 2024 22:30:42 +0100 Subject: [PATCH 20/24] fuck --- changelog | 1 + .../com/hbm/blocks/generic/BlockCrate.java | 12 - .../hbm/blocks/generic/BlockSupplyCrate.java | 4 + .../hbm/blocks/machine/MachineAmmoPress.java | 22 +- .../java/com/hbm/crafting/WeaponRecipes.java | 43 +- .../inventory/gui/GUIMachineAmmoPress.java | 4 +- .../inventory/recipes/AmmoPressRecipes.java | 101 +- .../java/com/hbm/itempool/ItemPoolsC130.java | 1 + .../com/hbm/itempool/ItemPoolsSingle.java | 3 - src/main/java/com/hbm/items/ModItems.java | 99 +- .../weapon/sedna/factory/GunFactory.java | 2 +- .../sedna/factory/GunFactoryClient.java | 6 +- .../weapon/sedna/factory/Orchestras.java | 29 +- .../weapon/sedna/factory/XFactory12ga.java | 28 +- .../weapon/sedna/factory/XFactory22lr.java | 2 +- .../weapon/sedna/factory/XFactory357.java | 17 +- .../weapon/sedna/factory/XFactory44.java | 2 +- .../weapon/sedna/factory/XFactory556mm.java | 4 +- .../weapon/sedna/factory/XFactory762mm.java | 2 +- .../weapon/sedna/factory/XFactory9mm.java | 20 +- .../weapon/sedna/factory/XFactoryEnergy.java | 2 +- src/main/java/com/hbm/main/ClientProxy.java | 1 + .../java/com/hbm/main/CraftingManager.java | 1 + src/main/java/com/hbm/main/MainRegistry.java | 32 + .../java/com/hbm/main/ResourceManager.java | 4 + .../java/com/hbm/particle/ParticleGiblet.java | 12 +- .../item/weapon/sedna/ItemRenderAtlas.java | 11 +- .../item/weapon/sedna/ItemRenderG3.java | 2 +- .../item/weapon/sedna/ItemRenderLAG.java | 49 +- .../render/tileentity/RenderAmmoPress.java | 75 + .../com/hbm/render/util/RenderInfoSystem.java | 2 +- .../machine/TileEntityMachineAmmoPress.java | 90 +- src/main/resources/assets/hbm/lang/de_DE.lang | 9 + src/main/resources/assets/hbm/lang/en_US.lang | 9 + .../assets/hbm/models/machines/ammo_press.obj | 2582 +++++++++++++++++ .../hbm/models/weapons/animations/lag.json | 1 + src/main/resources/assets/hbm/sounds.json | 10 + .../assets/hbm/sounds/weapon/fire/assault.ogg | Bin 0 -> 22085 bytes .../assets/hbm/sounds/weapon/fire/laser.ogg | Bin 0 -> 29016 bytes .../hbm/sounds/weapon/fire/laserGatling.ogg | Bin 0 -> 4672 bytes .../assets/hbm/sounds/weapon/fire/pistol.ogg | Bin 0 -> 26597 bytes .../assets/hbm/sounds/weapon/fire/rifle.ogg | Bin 0 -> 20956 bytes .../hbm/sounds/weapon/fire/rifleHeavy.ogg | Bin 0 -> 28746 bytes .../assets/hbm/sounds/weapon/fire/shotgun.ogg | Bin 0 -> 32430 bytes .../hbm/sounds/weapon/fire/shotgunAlt.ogg | Bin 0 -> 30213 bytes .../hbm/sounds/weapon/fire/shotgunAuto.ogg | Bin 0 -> 23591 bytes .../hbm/sounds/weapon/fire/silenced.ogg | Bin 0 -> 10952 bytes .../textures/models/machines/ammo_press.png | Bin 0 -> 7414 bytes .../textures/models/weapons/bio_revolver.png | Bin 2964 -> 2770 bytes .../models/weapons/bio_revolver_atlas.png | Bin 0 -> 2964 bytes .../hbm/textures/models/weapons/carbine.png | Bin 281864 -> 0 bytes .../assets/hbm/textures/models/weapons/g3.png | Bin 11313 -> 11441 bytes 52 files changed, 3089 insertions(+), 205 deletions(-) create mode 100644 src/main/java/com/hbm/render/tileentity/RenderAmmoPress.java create mode 100644 src/main/resources/assets/hbm/models/machines/ammo_press.obj create mode 100644 src/main/resources/assets/hbm/models/weapons/animations/lag.json create mode 100644 src/main/resources/assets/hbm/sounds/weapon/fire/assault.ogg create mode 100644 src/main/resources/assets/hbm/sounds/weapon/fire/laser.ogg create mode 100644 src/main/resources/assets/hbm/sounds/weapon/fire/laserGatling.ogg create mode 100644 src/main/resources/assets/hbm/sounds/weapon/fire/pistol.ogg create mode 100644 src/main/resources/assets/hbm/sounds/weapon/fire/rifle.ogg create mode 100644 src/main/resources/assets/hbm/sounds/weapon/fire/rifleHeavy.ogg create mode 100644 src/main/resources/assets/hbm/sounds/weapon/fire/shotgun.ogg create mode 100644 src/main/resources/assets/hbm/sounds/weapon/fire/shotgunAlt.ogg create mode 100644 src/main/resources/assets/hbm/sounds/weapon/fire/shotgunAuto.ogg create mode 100644 src/main/resources/assets/hbm/sounds/weapon/fire/silenced.ogg create mode 100644 src/main/resources/assets/hbm/textures/models/machines/ammo_press.png create mode 100644 src/main/resources/assets/hbm/textures/models/weapons/bio_revolver_atlas.png delete mode 100644 src/main/resources/assets/hbm/textures/models/weapons/carbine.png diff --git a/changelog b/changelog index 631702f59..cec7aa2fa 100644 --- a/changelog +++ b/changelog @@ -80,3 +80,4 @@ * Fixed slag crashing the game when trying to flow into the void * Fixed issue where drones that are too fast may skip waypoints * Fixed the electrolyzer speed upgrades not increasing energy consumption as advertised +* Fixed giblets rendering in fullbright even in the dark diff --git a/src/main/java/com/hbm/blocks/generic/BlockCrate.java b/src/main/java/com/hbm/blocks/generic/BlockCrate.java index ea7ffd968..6fa75c7fb 100644 --- a/src/main/java/com/hbm/blocks/generic/BlockCrate.java +++ b/src/main/java/com/hbm/blocks/generic/BlockCrate.java @@ -52,18 +52,6 @@ public class BlockCrate extends BlockFalling { // Supply Crate BlockCrate.addToListWithWeight(crateList, ModItems.syringe_metal_stimpak, 10); BlockCrate.addToListWithWeight(crateList, ModItems.syringe_antidote, 5); - BlockCrate.addToListWithWeight(crateList, ModItems.clip_revolver_iron, 9); - BlockCrate.addToListWithWeight(crateList, ModItems.clip_revolver, 7); - BlockCrate.addToListWithWeight(crateList, ModItems.clip_revolver_gold, 4); - BlockCrate.addToListWithWeight(crateList, ModItems.clip_revolver_lead, 6); - BlockCrate.addToListWithWeight(crateList, ModItems.clip_revolver_cursed, 5); - BlockCrate.addToListWithWeight(crateList, ModItems.clip_rpg, 5); - BlockCrate.addToListWithWeight(crateList, ModItems.clip_fatman, 1); - BlockCrate.addToListWithWeight(crateList, ModItems.clip_mp40, 7); - BlockCrate.addToListWithWeight(crateList, ModItems.clip_uzi, 7); - BlockCrate.addToListWithWeight(crateList, ModItems.clip_uboinik, 7); - BlockCrate.addToListWithWeight(crateList, ModItems.clip_lever_action, 5); - BlockCrate.addToListWithWeight(crateList, ModItems.clip_bolt_action, 5); BlockCrate.addToListWithWeight(crateList, ModItems.grenade_generic, 8); BlockCrate.addToListWithWeight(crateList, ModItems.grenade_strong, 6); BlockCrate.addToListWithWeight(crateList, ModItems.grenade_mk2, 4); diff --git a/src/main/java/com/hbm/blocks/generic/BlockSupplyCrate.java b/src/main/java/com/hbm/blocks/generic/BlockSupplyCrate.java index f9052f062..961032204 100644 --- a/src/main/java/com/hbm/blocks/generic/BlockSupplyCrate.java +++ b/src/main/java/com/hbm/blocks/generic/BlockSupplyCrate.java @@ -2,6 +2,7 @@ package com.hbm.blocks.generic; import java.util.ArrayList; import java.util.List; +import java.util.Random; import com.hbm.items.ModItems; @@ -10,6 +11,7 @@ import net.minecraft.block.material.Material; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.item.EntityItem; import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagList; @@ -30,6 +32,8 @@ public class BlockSupplyCrate extends BlockContainer { @Override public int getRenderType() { return BlockCanCrate.renderID; } @Override public boolean isOpaqueCube() { return false; } @Override public boolean renderAsNormalBlock() { return false; } + + @Override public Item getItemDropped(int i, Random rand, int j) { return null; } @Override public boolean removedByPlayer(World world, EntityPlayer player, int x, int y, int z, boolean willHarvest) { diff --git a/src/main/java/com/hbm/blocks/machine/MachineAmmoPress.java b/src/main/java/com/hbm/blocks/machine/MachineAmmoPress.java index 226a16a67..b54d34e7f 100644 --- a/src/main/java/com/hbm/blocks/machine/MachineAmmoPress.java +++ b/src/main/java/com/hbm/blocks/machine/MachineAmmoPress.java @@ -1,16 +1,15 @@ package com.hbm.blocks.machine; -import com.hbm.main.MainRegistry; +import com.hbm.blocks.BlockDummyable; +import com.hbm.tileentity.TileEntityProxyCombo; import com.hbm.tileentity.machine.TileEntityMachineAmmoPress; -import cpw.mods.fml.common.network.internal.FMLNetworkHandler; -import net.minecraft.block.BlockContainer; import net.minecraft.block.material.Material; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.tileentity.TileEntity; import net.minecraft.world.World; -public class MachineAmmoPress extends BlockContainer { +public class MachineAmmoPress extends BlockDummyable { public MachineAmmoPress() { super(Material.iron); @@ -18,19 +17,14 @@ public class MachineAmmoPress extends BlockContainer { @Override public TileEntity createNewTileEntity(World world, int meta) { - return new TileEntityMachineAmmoPress(); + return meta >= 12 ? new TileEntityMachineAmmoPress() : new TileEntityProxyCombo().inventory(); } @Override public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) { - - if(world.isRemote) { - return true; - } else if(!player.isSneaking()) { - FMLNetworkHandler.openGui(player, MainRegistry.instance, 0, world, x, y, z); - return true; - } else { - return false; - } + return this.standardOpenBehavior(world, x, y, z, player, 0); } + + @Override public int[] getDimensions() { return new int[] {1, 0, 0, 0, 1, 1}; } + @Override public int getOffset() { return 0; } } diff --git a/src/main/java/com/hbm/crafting/WeaponRecipes.java b/src/main/java/com/hbm/crafting/WeaponRecipes.java index 806071a9d..25767f63e 100644 --- a/src/main/java/com/hbm/crafting/WeaponRecipes.java +++ b/src/main/java/com/hbm/crafting/WeaponRecipes.java @@ -49,17 +49,21 @@ public class WeaponRecipes { //SEDNA Guns CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_pepperbox, 1), new Object[] { "IIW", " C", 'I', IRON.ingot(), 'W', KEY_PLANKS, 'C', CU.ingot() }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_light_revolver, 1), new Object[] { "BRM", " G", 'B', STEEL.lightBarrel(), 'R', STEEL.lightReceiver(), 'M', GUNMETAL.mechanism(), 'G', WOOD.grip() }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_light_revolver_atlas, 1), new Object[] { " M ", "MAM", " M ", 'M', WEAPONSTEEL.mechanism(), 'A', ModItems.gun_light_revolver }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_henry, 1), new Object[] { "BRP", "BMS", 'B', STEEL.lightBarrel(), 'R', GUNMETAL.lightReceiver(), 'M', GUNMETAL.mechanism(), 'S', WOOD.stock(), 'P', GUNMETAL.plate() }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_greasegun, 1), new Object[] { "BRS", "SMG", 'B', STEEL.lightBarrel(), 'R', STEEL.lightReceiver(), 'S', STEEL.bolt(), 'M', GUNMETAL.mechanism(), 'G', STEEL.grip() }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_maresleg, 1), new Object[] { "BRM", "BGS", 'B', STEEL.lightBarrel(), 'R', STEEL.lightReceiver(), 'M', GUNMETAL.mechanism(), 'G', STEEL.bolt(), 'S', WOOD.stock() }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_maresleg_akimbo, 1), new Object[] { "SMS", 'S', ModItems.gun_maresleg, 'M', WEAPONSTEEL.mechanism() }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_flaregun, 1), new Object[] { "BRM", " G", 'B', STEEL.heavyBarrel(), 'R', STEEL.lightReceiver(), 'M', GUNMETAL.mechanism(), 'G', STEEL.grip() }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_am180, 1), new Object[] { "BBR", "GMS", 'B', DURA.lightBarrel(), 'R', DURA.lightReceiver(), 'M', GUNMETAL.mechanism(), 'G', WOOD.grip(), 'S', WOOD.stock() }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_liberator, 1), new Object[] { "BB ", "BBM", "G G", 'B', DURA.lightBarrel(), 'M', GUNMETAL.mechanism(), 'G', WOOD.grip() }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_congolake, 1), new Object[] { "BM ", "BRS", "G ", 'B', DURA.heavyBarrel(), 'M', GUNMETAL.mechanism(), 'R', DURA.lightReceiver(), 'S', WOOD.stock(), 'G', WOOD.grip() }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_flamer, 1), new Object[] { " MG", "BBR", " GM", 'M', GUNMETAL.mechanism(), 'G', DURA.grip(), 'B', DURA.heavyBarrel(), 'R', DURA.heavyReceiver() }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_flamer_topaz, 1), new Object[] { " M ", "MFM", " M ", 'M', WEAPONSTEEL.mechanism(), 'F', ModItems.gun_flamer }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_heavy_revolver, 1), new Object[] { "BRM", " G", 'B', DESH.lightBarrel(), 'R', DESH.lightReceiver(), 'M', GUNMETAL.mechanism(), 'G', WOOD.grip() }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_carbine, 1), new Object[] { "BRM", "G S", 'B', DESH.lightBarrel(), 'R',DESH.lightReceiver(), 'M', GUNMETAL.mechanism(), 'G', WOOD.grip(), 'S', WOOD.stock() }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_uzi, 1), new Object[] { "BRS", " GM", 'B', DESH.lightBarrel(), 'R', DESH.lightReceiver(), 'S', ANY_PLASTIC.stock(), 'G', ANY_PLASTIC.grip(), 'M', GUNMETAL.mechanism() }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_uzi_akimbo, 1), new Object[] { "UMU", 'U', ModItems.gun_uzi, 'M', WEAPONSTEEL.mechanism() }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_spas12, 1), new Object[] { "BRM", "BGS", 'B', DESH.lightBarrel(), 'R', DESH.lightReceiver(), 'M', GUNMETAL.mechanism(), 'G', ANY_PLASTIC.grip(), 'S', DESH.stock() }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_panzerschreck, 1), new Object[] { "BBB", "PGM", 'B', DESH.heavyBarrel(), 'P', STEEL.plateCast(), 'G', DESH.grip(), 'M', GUNMETAL.mechanism() }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_g3, 1), new Object[] { "BRM", "WGS", 'B', WEAPONSTEEL.lightBarrel(), 'R', WEAPONSTEEL.lightReceiver(), 'M', WEAPONSTEEL.mechanism(), 'W', WOOD.grip(), 'G', RUBBER.grip(), 'S', WOOD.stock() }); @@ -148,44 +152,7 @@ public class WeaponRecipes { //Ammo assemblies CraftingManager.addRecipeAuto(new ItemStack(ModItems.pellet_flechette, 1), new Object[] { " L ", " L ", "LLL", 'L', PB.nugget() }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.pellet_claws, 1), new Object[] { " X ", "X X", " XX", 'X', STEEL.plate() }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.assembly_iron, 1), new Object[] { " I", "GC", 'I', IRON.ingot(), 'G', ANY_GUNPOWDER.dust(), 'C', ModItems.casing_357 }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.assembly_steel, 1), new Object[] { " I", "GC", 'I', PB.ingot(), 'G', ANY_GUNPOWDER.dust(), 'C', ModItems.casing_357 }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.assembly_lead, 1), new Object[] { " I", "GC", 'I', U235.ingot(), 'G', ModItems.cordite, 'C', KEY_CLEARGLASS }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.assembly_lead, 1), new Object[] { " I", "GC", 'I', PU239.ingot(), 'G', ModItems.cordite, 'C', KEY_CLEARGLASS }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.assembly_lead, 1), new Object[] { " I", "GC", 'I', ModItems.trinitite, 'G', ModItems.cordite, 'C', KEY_CLEARGLASS }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.assembly_lead, 1), new Object[] { " I", "GC", 'I', ModItems.nuclear_waste_tiny, 'G', ModItems.cordite, 'C', KEY_CLEARGLASS }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.assembly_gold, 1), new Object[] { " I", "GC", 'I', GOLD.ingot(), 'G', ModItems.cordite, 'C', ModItems.casing_357 }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.assembly_schrabidium, 1), new Object[] { " I ", "GCN", 'I', SA326.ingot(), 'G', ModItems.cordite, 'C', ModItems.casing_357, 'N', ModItems.billet_yharonite }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.assembly_nightmare, 1), new Object[] { " I", "GC", 'I', W.ingot(), 'G', ModItems.cordite, 'C', ModItems.casing_357 }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.assembly_desh, 1), new Object[] { " I", "GC", 'I', DESH.ingot(), 'G', ModItems.cordite, 'C', ModItems.casing_357 }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.assembly_smg, 1), new Object[] { " I", "GC", 'I', PB.ingot(), 'G', ANY_SMOKELESS.dust(), 'C', ModItems.casing_9 }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.assembly_556, 1), new Object[] { " I", "GC", 'I', STEEL.ingot(), 'G', ANY_SMOKELESS.dust(), 'C', ModItems.casing_9 }); - CraftingManager.addRecipeAuto(ModItems.ammo_556.stackFromEnum(30, Ammo556mm.K), new Object[] { "G", "C", 'G', ANY_GUNPOWDER.dust(), 'C', ModItems.casing_9 }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.assembly_uzi, 1), new Object[] { " I", "GC", 'I', IRON.ingot(), 'G', ANY_SMOKELESS.dust(), 'C', ModItems.casing_9 }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.assembly_lacunae, 1), new Object[] { " I", "GC", 'I', CU.ingot(), 'G', ModItems.cordite, 'C', ModItems.casing_9 }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.assembly_nopip, 1), new Object[] { " I", "GC", 'I', PB.ingot(), 'G', ANY_SMOKELESS.dust(), 'C', ModItems.casing_44 }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.ammo_12gauge, 12), new Object[] { " I ", "GCL", 'I', ModItems.pellet_buckshot, 'G', ANY_SMOKELESS.dust(), 'C', ModItems.casing_buckshot, 'L', ANY_RUBBER.ingot() }); - CraftingManager.addRecipeAuto(ModItems.ammo_12gauge.stackFromEnum(12, Ammo12Gauge.PERCUSSION), new Object[] { "G", "C", 'G', ANY_SMOKELESS.dust(), 'C', ModItems.casing_buckshot }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.ammo_4gauge, 12), new Object[] { " I ", "GCL", 'I', ModItems.pellet_buckshot, 'G', ModItems.cordite, 'C', ModItems.casing_50, 'L', ANY_RUBBER.ingot() }); - CraftingManager.addRecipeAuto(ModItems.ammo_4gauge.stackFromEnum(12, Ammo4Gauge.SLUG), new Object[] { " I ", "GCL", 'I', STEEL.ingot(), 'G', ModItems.cordite, 'C', ModItems.casing_50, 'L', ANY_RUBBER.ingot() }); - CraftingManager.addRecipeAuto(ModItems.ammo_4gauge.stackFromEnum(12, Ammo4Gauge.FLECHETTE), new Object[] { " I ", "GCL", 'I', ModItems.pellet_flechette, 'G', ModItems.cordite, 'C', ModItems.casing_50, 'L', ANY_RUBBER.ingot() }); - CraftingManager.addRecipeAuto(ModItems.ammo_4gauge.stackFromEnum(4, Ammo4Gauge.EXPLOSIVE), new Object[] { " I ", "GCL", 'I', ModBlocks.tnt, 'G', ModItems.cordite, 'C', ModItems.casing_50, 'L', ANY_RUBBER.ingot() }); - CraftingManager.addRecipeAuto(ModItems.ammo_4gauge.stackFromEnum(6, Ammo4Gauge.EXPLOSIVE), new Object[] { " I ", "GCL", 'I', ANY_PLASTICEXPLOSIVE.ingot(), 'G', ModItems.cordite, 'C', ModItems.casing_50, 'L', ANY_RUBBER.ingot() }); - CraftingManager.addRecipeAuto(ModItems.ammo_4gauge.stackFromEnum(4, Ammo4Gauge.MINING), new Object[] { " I ", "GCL", 'I', ModBlocks.det_miner, 'G', ModItems.cordite, 'C', ModItems.casing_50, 'L', ANY_RUBBER.ingot() }); - CraftingManager.addShapelessAuto(ModItems.ammo_4gauge.stackFromEnum(Ammo4Gauge.QUACK), new Object[] { ModItems.ammo_4gauge, ModItems.nugget_bismuth, ModItems.nugget_tantalium, ModItems.ball_dynamite }); - CraftingManager.addRecipeAuto(ModItems.ammo_20gauge.stackFromEnum(12, Ammo20Gauge.STOCK), new Object[] { " I ", "GCL", 'I', ModItems.pellet_buckshot, 'G', ANY_SMOKELESS.dust(), 'C', ModItems.casing_buckshot, 'L', CU.plate() }); - CraftingManager.addRecipeAuto(ModItems.ammo_20gauge.stackFromEnum(12, Ammo20Gauge.SLUG), new Object[] { " I ", "GCL", 'I', PB.ingot(), 'G', ANY_SMOKELESS.dust(), 'C', ModItems.casing_buckshot, 'L', CU.plate() }); - CraftingManager.addRecipeAuto(ModItems.ammo_20gauge.stackFromEnum(12, Ammo20Gauge.EXPLOSIVE), new Object[] { " I ", "GCL", 'I', ModItems.pellet_cluster, 'G', ANY_SMOKELESS.dust(), 'C', ModItems.casing_buckshot, 'L', CU.plate() }); - CraftingManager.addRecipeAuto(ModItems.ammo_20gauge.stackFromEnum(20, Ammo20Gauge.FLECHETTE), new Object[] { " I ", "GCL", 'I', ModItems.pellet_flechette, 'G', ANY_SMOKELESS.dust(), 'C', ModItems.casing_buckshot, 'L', CU.plate() }); - CraftingManager.addRecipeAuto(ModItems.ammo_357.stackFromEnum(6, Ammo357Magnum.NIGHTMARE2), new Object[] { "I", "C", 'I', ModItems.powder_power, 'C', ModItems.casing_buckshot }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.assembly_calamity, 1), new Object[] { " I ", "GCG", 'I', PB.ingot(), 'G', ModItems.cordite, 'C', ModItems.casing_50 }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.assembly_actionexpress, 1), new Object[] { " I", "GC", 'I', PB.ingot(), 'G', ModItems.cordite, 'C', ModItems.casing_50 }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.assembly_nuke, 1), new Object[] { " WP", "SEP", " WP", 'W', STEEL.wireFine(), 'P', STEEL.plate(), 'S', STEEL.shell(), 'E', ANY_HIGHEXPLOSIVE.ingot() }); - CraftingManager.addRecipeAuto(ModItems.ammo_dart.stackFromEnum(16, AmmoDart.GPS), new Object[] { "IPI", "ICI", "IPI", 'I', ANY_RUBBER.ingot(), 'P', IRON.plate(), 'C', new ItemStack(ModItems.fluid_tank_lead_full, 1, Fluids.WATZ.getID()) }); - CraftingManager.addRecipeAuto(ModItems.ammo_dart.stackFromEnum(16, AmmoDart.NERF), new Object[] { "I", "I", 'I', ANY_RUBBER.ingot() }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.assembly_45, 1), " I", "GC", 'I', CU.ingot(), 'G', ANY_SMOKELESS.dust(), 'C', ModItems.casing_44); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.assembly_762, 1), " I", "GC", 'I', CU.ingot(), 'G', ANY_SMOKELESS.dust(), 'C', ModItems.casing_50); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.assembly_luna, 1), new Object[] { " B ", "GCG", "GPG", 'B', FERRO.ingot(), 'G', ModItems.powder_nitan_mix, 'C', ModItems.casing_50, 'P', ModItems.powder_power}); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.assembly_nuke, 1), new Object[] { " WP", "SEP", " WP", 'W', GOLD.wireFine(), 'P', STEEL.plate(), 'S', STEEL.shell(), 'E', ModItems.ball_tatb }); //Rockets CraftingManager.addRecipeAuto(new ItemStack(ModItems.ammo_rocket, 1), new Object[] { "T", "C", "G", 'T', ModItems.ball_dynamite, 'G', ModItems.rocket_fuel, 'C', STEEL.shell() }); diff --git a/src/main/java/com/hbm/inventory/gui/GUIMachineAmmoPress.java b/src/main/java/com/hbm/inventory/gui/GUIMachineAmmoPress.java index 8f304b80f..94c5499c9 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIMachineAmmoPress.java +++ b/src/main/java/com/hbm/inventory/gui/GUIMachineAmmoPress.java @@ -282,7 +282,9 @@ public class GUIMachineAmmoPress extends GuiInfoContainer { GL11.glDisable(GL11.GL_BLEND); } } - + + RenderHelper.disableStandardItemLighting(); + GL11.glColor4f(1F, 1F, 1F, 1F); this.search.drawTextBox(); } diff --git a/src/main/java/com/hbm/inventory/recipes/AmmoPressRecipes.java b/src/main/java/com/hbm/inventory/recipes/AmmoPressRecipes.java index d65a7b064..eca9aac34 100644 --- a/src/main/java/com/hbm/inventory/recipes/AmmoPressRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/AmmoPressRecipes.java @@ -254,13 +254,110 @@ public class AmmoPressRecipes extends SerializableRecipe { null, smokeless, null, null, cBig, null)); recipes.add(new AmmoPressRecipe(DictFrame.fromOne(ModItems.ammo_standard, EnumAmmo.G40_INC, 4), - null, diesel, null, + diesel, dyn, null, null, smokeless, null, null, cBig, null)); recipes.add(new AmmoPressRecipe(DictFrame.fromOne(ModItems.ammo_standard, EnumAmmo.G40_PHOSPHORUS, 4), - null, wp, null, + wp, he, null, null, smokeless, null, null, cBig, null)); + + recipes.add(new AmmoPressRecipe(DictFrame.fromOne(ModItems.ammo_standard, EnumAmmo.ROCKET_HE, 2), + null, dyn, null, + null, cBig, null, + null, smokeless.copy(2), null)); + recipes.add(new AmmoPressRecipe(DictFrame.fromOne(ModItems.ammo_standard, EnumAmmo.ROCKET_HEAT, 2), + coplate, he, null, + null, cBig, null, + null, smokeless.copy(2), null)); + recipes.add(new AmmoPressRecipe(DictFrame.fromOne(ModItems.ammo_standard, EnumAmmo.ROCKET_DEMO, 2), + null, he.copy(2), null, + null, cBig, null, + null, smokeless.copy(2), null)); + recipes.add(new AmmoPressRecipe(DictFrame.fromOne(ModItems.ammo_standard, EnumAmmo.ROCKET_INC, 2), + diesel, dyn, null, + null, cBig, null, + null, smokeless.copy(2), null)); + recipes.add(new AmmoPressRecipe(DictFrame.fromOne(ModItems.ammo_standard, EnumAmmo.ROCKET_PHOSPHORUS, 2), + wp, he, null, + null, cBig, null, + null, smokeless.copy(2), null)); + + OreDictStack sPlate = new OreDictStack(STEEL.plate()); + ComparableStack napalm = new ComparableStack(ModItems.canister_napalm); + OreDictStack gas = new OreDictStack(Fluids.GAS.getDict(1000)); + OreDictStack bf = new OreDictStack(Fluids.BALEFIRE.getDict(1000)); + recipes.add(new AmmoPressRecipe(DictFrame.fromOne(ModItems.ammo_standard, EnumAmmo.FLAME_DIESEL, 1), + null, sPlate, null, + null, diesel, null, + null, sPlate, null)); + recipes.add(new AmmoPressRecipe(DictFrame.fromOne(ModItems.ammo_standard, EnumAmmo.FLAME_NAPALM, 1), + null, sPlate, null, + null, napalm, null, + null, sPlate, null)); + recipes.add(new AmmoPressRecipe(DictFrame.fromOne(ModItems.ammo_standard, EnumAmmo.FLAME_GAS, 1), + null, sPlate, null, + null, gas, null, + null, sPlate, null)); + recipes.add(new AmmoPressRecipe(DictFrame.fromOne(ModItems.ammo_standard, EnumAmmo.FLAME_BALEFIRE, 1), + null, sPlate, null, + null, bf, null, + null, sPlate, null)); + + OreDictStack silicon = new OreDictStack(SI.billet()); + recipes.add(new AmmoPressRecipe(DictFrame.fromOne(ModItems.ammo_standard, EnumAmmo.CAPACITOR, 4), + null, plastic, null, + null, silicon.copy(4), null, + null, plastic, null)); + recipes.add(new AmmoPressRecipe(DictFrame.fromOne(ModItems.ammo_standard, EnumAmmo.CAPACITOR_OVERCHARGE, 4), + null, plastic, null, + null, silicon.copy(6), null, + null, plastic, null)); + recipes.add(new AmmoPressRecipe(DictFrame.fromOne(ModItems.ammo_standard, EnumAmmo.CAPACITOR_IR, 4), + null, plastic, null, + null, silicon.copy(4), null, + null, plastic, null)); + + OreDictStack lPlate = new OreDictStack(PB.plate()); + recipes.add(new AmmoPressRecipe(DictFrame.fromOne(ModItems.ammo_standard, EnumAmmo.TAU_URANIUM, 16), + null, lPlate, null, + null, uranium, null, + null, lPlate , null)); + + OreDictStack tungsten = new OreDictStack(W.ingot()); + OreDictStack ferro = new OreDictStack(FERRO.ingot()); + recipes.add(new AmmoPressRecipe(DictFrame.fromOne(ModItems.ammo_standard, EnumAmmo.COIL_TUNGSTEN, 4), + null, null, null, + null, tungsten, null, + null, null , null)); + recipes.add(new AmmoPressRecipe(DictFrame.fromOne(ModItems.ammo_standard, EnumAmmo.COIL_FERROURANIUM, 4), + null, null, null, + null, ferro, null, + null, null , null)); + + ComparableStack shell = new ComparableStack(ModItems.assembly_nuke); + ComparableStack tatb = new ComparableStack(ModItems.ball_tatb); + OreDictStack plutonium = new OreDictStack(PU239.nugget()); + recipes.add(new AmmoPressRecipe(DictFrame.fromOne(ModItems.ammo_standard, EnumAmmo.NUKE_STANDARD, 1), + null, plutonium, null, + null, shell, null, + null, null , null)); + recipes.add(new AmmoPressRecipe(DictFrame.fromOne(ModItems.ammo_standard, EnumAmmo.NUKE_DEMO, 1), + null, plutonium.copy(2), null, + null, shell, null, + null, null , null)); + recipes.add(new AmmoPressRecipe(DictFrame.fromOne(ModItems.ammo_standard, EnumAmmo.NUKE_HIGH, 1), + null, plutonium.copy(4), null, + null, shell, null, + null, null , null)); + recipes.add(new AmmoPressRecipe(DictFrame.fromOne(ModItems.ammo_standard, EnumAmmo.NUKE_TOTS, 1), + null, plutonium.copy(2), null, + null, tatb.copy(2), null, + null, sPlate.copy(4) , null)); + recipes.add(new AmmoPressRecipe(DictFrame.fromOne(ModItems.ammo_standard, EnumAmmo.NUKE_HIVE, 1), + null, he.copy(8), null, + null, sBig.copy(2), null, + null, sPlate.copy(4), null)); } public static HashMap getRecipes() { diff --git a/src/main/java/com/hbm/itempool/ItemPoolsC130.java b/src/main/java/com/hbm/itempool/ItemPoolsC130.java index d7b19dc98..63e3fb695 100644 --- a/src/main/java/com/hbm/itempool/ItemPoolsC130.java +++ b/src/main/java/com/hbm/itempool/ItemPoolsC130.java @@ -27,6 +27,7 @@ public class ItemPoolsC130 { weighted(ModBlocks.machine_diesel, 0, 1, 1, 1), weighted(ModItems.geiger_counter, 0, 1, 1, 2), weighted(ModItems.med_bag, 0, 1, 1, 3), + weighted(ModItems.radaway, 0, 1, 5, 10), }; }}; diff --git a/src/main/java/com/hbm/itempool/ItemPoolsSingle.java b/src/main/java/com/hbm/itempool/ItemPoolsSingle.java index f4c1105db..10519c924 100644 --- a/src/main/java/com/hbm/itempool/ItemPoolsSingle.java +++ b/src/main/java/com/hbm/itempool/ItemPoolsSingle.java @@ -70,7 +70,6 @@ public class ItemPoolsSingle { weighted(ModItems.powder_yellowcake, 0, 16, 24, 1), weighted(ModItems.gun_uzi, 0, 1, 1, 1), weighted(ModItems.gun_uzi_silencer, 0, 1, 1, 1), - weighted(ModItems.clip_uzi, 0, 1, 3, 1), weighted(ModItems.circuit, EnumCircuitType.VACUUM_TUBE.ordinal(), 12, 16, 1), weighted(ModItems.circuit, EnumCircuitType.CHIP.ordinal(), 2, 6, 1) }; @@ -91,7 +90,6 @@ public class ItemPoolsSingle { weighted(ModItems.powder_yellowcake, 0, 26, 42, 1), weighted(ModItems.ingot_u235, 0, 3, 6, 1), weighted(ModItems.gun_revolver_pip, 0, 1, 1, 1), - weighted(ModItems.clip_revolver_pip, 0, 2, 4, 1), weighted(ModItems.circuit, EnumCircuitType.CHIP.ordinal(), 18, 32, 1), weighted(ModItems.circuit, EnumCircuitType.BASIC.ordinal(), 6, 12, 1) }; @@ -100,7 +98,6 @@ public class ItemPoolsSingle { new ItemPool(POOL_VAULT_UNBREAKABLE) {{ this.pool = new WeightedRandomChestContent[] { weighted(ModItems.ammo_container, 0, 3, 6, 1), - weighted(ModItems.clip_fatman, 0, 2, 3, 1), weighted(ModItems.ammo_nuke, AmmoFatman.MIRV.ordinal(), 2, 3, 1), weighted(ModItems.gun_mirv, 0, 1, 1, 1), weighted(ModItems.gun_proto, 0, 1, 1, 1), diff --git a/src/main/java/com/hbm/items/ModItems.java b/src/main/java/com/hbm/items/ModItems.java index 9b74e78b8..b513d8fd4 100644 --- a/src/main/java/com/hbm/items/ModItems.java +++ b/src/main/java/com/hbm/items/ModItems.java @@ -1579,6 +1579,7 @@ public class ModItems { public static Item gun_pepperbox; public static Item gun_light_revolver; + public static Item gun_light_revolver_atlas; public static Item gun_light_revolver_dani; public static Item gun_henry; public static Item gun_greasegun; @@ -2254,38 +2255,6 @@ public class ModItems { public static Item loot_10; public static Item loot_15; public static Item loot_misc; - - public static Item clip_revolver_iron; - public static Item clip_revolver; - public static Item clip_revolver_gold; - public static Item clip_revolver_lead; - public static Item clip_revolver_schrabidium; - public static Item clip_revolver_cursed; - public static Item clip_revolver_nightmare; - public static Item clip_revolver_nightmare2; - public static Item clip_revolver_pip; - public static Item clip_revolver_nopip; - public static Item clip_rpg; - public static Item clip_stinger; - public static Item clip_fatman; - public static Item clip_mirv; - public static Item clip_bf; - public static Item clip_mp40; - public static Item clip_uzi; - public static Item clip_uboinik; - public static Item clip_lever_action; - public static Item clip_bolt_action; - public static Item clip_osipr; - public static Item clip_immolator; - public static Item clip_cryolator; - public static Item clip_mp; - public static Item clip_xvl1456; - public static Item clip_emp; - public static Item clip_jack; - public static Item clip_spark; - public static Item clip_hp; - public static Item clip_euthanasia; - public static Item clip_defabricator; public static Item ammo_container; @@ -4403,38 +4372,6 @@ public class ModItems { loot_10 = new ItemLootCrate().setUnlocalizedName("loot_10").setMaxStackSize(1).setCreativeTab(MainRegistry.missileTab).setTextureName(RefStrings.MODID + ":loot_10"); loot_15 = new ItemLootCrate().setUnlocalizedName("loot_15").setMaxStackSize(1).setCreativeTab(MainRegistry.missileTab).setTextureName(RefStrings.MODID + ":loot_15"); loot_misc = new ItemLootCrate().setUnlocalizedName("loot_misc").setMaxStackSize(1).setCreativeTab(MainRegistry.missileTab).setTextureName(RefStrings.MODID + ":loot_misc"); - - clip_revolver_iron = new ItemClip(ammo_357.stackFromEnum(20, Ammo357Magnum.IRON)).setUnlocalizedName("clip_revolver_iron").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":clip_revolver_iron"); - clip_revolver = new ItemClip(ammo_357.stackFromEnum(12, Ammo357Magnum.LEAD)).setUnlocalizedName("clip_revolver").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":clip_revolver"); - clip_revolver_gold = new ItemClip(ammo_357.stackFromEnum(6, Ammo357Magnum.GOLD)).setUnlocalizedName("clip_revolver_gold").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":clip_revolver_gold"); - clip_revolver_lead = new ItemClip(ammo_357.stackFromEnum(6, Ammo357Magnum.NUCLEAR)).setUnlocalizedName("clip_revolver_lead").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":clip_revolver_lead"); - clip_revolver_schrabidium = new ItemClip(ammo_357.stackFromEnum(2, Ammo357Magnum.SCHRABIDIUM)).setUnlocalizedName("clip_revolver_schrabidium").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":clip_revolver_schrabidium"); - clip_revolver_cursed = new ItemClip(ammo_357.stackFromEnum(17, Ammo357Magnum.STEEL)).setUnlocalizedName("clip_revolver_cursed").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":clip_revolver_cursed"); - clip_revolver_nightmare = new ItemClip(ammo_357.stackFromEnum(6, Ammo357Magnum.NIGHTMARE1)).setUnlocalizedName("clip_revolver_nightmare").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":clip_revolver_nightmare"); - clip_revolver_nightmare2 = new ItemClip(ammo_357.stackFromEnum(6, Ammo357Magnum.NIGHTMARE2)).setUnlocalizedName("clip_revolver_nightmare2").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":clip_revolver_nightmare2"); - clip_revolver_pip = new ItemClip(ammo_44.stackFromEnum(6, Ammo44Magnum.PIP)).setUnlocalizedName("clip_revolver_pip").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":clip_revolver_pip"); - clip_revolver_nopip = new ItemClip(ammo_44.stackFromEnum(6, Ammo44Magnum.STOCK)).setUnlocalizedName("clip_revolver_nopip").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":clip_revolver_nopip"); - clip_rpg = new ItemClip(ammo_rocket.stackFromEnum(4, AmmoRocket.STOCK)).setUnlocalizedName("clip_rpg").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":clip_rpg_alt"); - clip_stinger = new ItemClip(ammo_stinger_rocket.stackFromEnum(4, AmmoStinger.STOCK)).setUnlocalizedName("clip_stinger").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":clip_stinger"); - clip_fatman = new ItemClip(ammo_nuke.stackFromEnum(6, AmmoFatman.STOCK)).setUnlocalizedName("clip_fatman").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":clip_fatman"); - clip_mirv = new ItemClip(ammo_nuke.stackFromEnum(3, AmmoFatman.MIRV)).setUnlocalizedName("clip_mirv").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":clip_mirv"); - clip_bf = new ItemClip(ammo_nuke.stackFromEnum(2, AmmoFatman.BALEFIRE)).setUnlocalizedName("clip_bf").setCreativeTab(null).setTextureName(RefStrings.MODID + ":clip_bf"); - clip_mp40 = new ItemClip(ammo_9mm.stackFromEnum(32, Ammo9mm.STOCK)).setUnlocalizedName("clip_mp40").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":clip_mp40"); - clip_uzi = new ItemClip(ammo_22lr.stackFromEnum(32, Ammo22LR.STOCK)).setUnlocalizedName("clip_uzi").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":clip_uzi"); - clip_uboinik = new ItemClip(ammo_12gauge.stackFromEnum(12, Ammo12Gauge.STOCK)).setUnlocalizedName("clip_uboinik").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":clip_uboinik"); - clip_lever_action = new ItemClip(ammo_20gauge.stackFromEnum(12, Ammo20Gauge.STOCK)).setUnlocalizedName("clip_lever_action").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":clip_lever_action"); - clip_bolt_action = new ItemClip(ammo_20gauge.stackFromEnum(12, Ammo20Gauge.SLUG)).setUnlocalizedName("clip_bolt_action").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":clip_bolt_action"); - clip_osipr = new ItemClip(new ItemStack(gun_osipr_ammo, 3)).setUnlocalizedName("clip_osipr").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":clip_osipr"); - clip_immolator = new ItemClip(new ItemStack(gun_immolator_ammo, 60)).setUnlocalizedName("clip_immolator").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":clip_immolator"); - clip_cryolator = new ItemClip(new ItemStack(gun_cryolator_ammo, 60)).setUnlocalizedName("clip_cryolator").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":clip_cryolator"); - clip_mp = new ItemClip(ammo_556.stackFromEnum(2, Ammo556mm.GOLD)).setUnlocalizedName("clip_mp").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":clip_mp"); - clip_xvl1456 = new ItemClip(new ItemStack(gun_xvl1456_ammo, 50)).setUnlocalizedName("clip_xvl1456").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":clip_xvl1456"); - clip_emp = new ItemClip(new ItemStack(gun_emp_ammo, 12)).setUnlocalizedName("clip_emp").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":clip_emp"); - clip_jack = new ItemClip(new ItemStack(gun_jack_ammo, 12)).setUnlocalizedName("clip_jack").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":clip_jack"); - clip_spark = new ItemClip(new ItemStack(gun_spark_ammo, 12)).setUnlocalizedName("clip_spark").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":clip_spark"); - clip_hp = new ItemClip(new ItemStack(gun_hp_ammo, 24)).setUnlocalizedName("clip_hp").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":clip_hp"); - clip_euthanasia = new ItemClip(new ItemStack(gun_euthanasia_ammo, 32)).setUnlocalizedName("clip_euthanasia").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":clip_euthanasia"); - clip_defabricator = new ItemClip(new ItemStack(gun_defabricator_ammo, 50)).setUnlocalizedName("clip_defabricator").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":clip_defabricator"); ammo_container = new ItemAmmoContainer().setUnlocalizedName("ammo_container").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":ammo_container"); @@ -6861,6 +6798,7 @@ public class ModItems { GameRegistry.registerItem(gun_pepperbox, gun_pepperbox.getUnlocalizedName()); GameRegistry.registerItem(gun_light_revolver, gun_light_revolver.getUnlocalizedName()); + GameRegistry.registerItem(gun_light_revolver_atlas, gun_light_revolver_atlas.getUnlocalizedName()); GameRegistry.registerItem(gun_light_revolver_dani, gun_light_revolver_dani.getUnlocalizedName()); GameRegistry.registerItem(gun_henry, gun_henry.getUnlocalizedName()); GameRegistry.registerItem(gun_greasegun, gun_greasegun.getUnlocalizedName()); @@ -6948,39 +6886,6 @@ public class ModItems { GameRegistry.registerItem(ammo_arty, ammo_arty.getUnlocalizedName()); GameRegistry.registerItem(ammo_himars, ammo_himars.getUnlocalizedName()); - //-C-l-i-p-s- Magazines - GameRegistry.registerItem(clip_revolver_iron, clip_revolver_iron.getUnlocalizedName()); - GameRegistry.registerItem(clip_revolver, clip_revolver.getUnlocalizedName()); - GameRegistry.registerItem(clip_revolver_gold, clip_revolver_gold.getUnlocalizedName()); - GameRegistry.registerItem(clip_revolver_lead, clip_revolver_lead.getUnlocalizedName()); - GameRegistry.registerItem(clip_revolver_schrabidium, clip_revolver_schrabidium.getUnlocalizedName()); - GameRegistry.registerItem(clip_revolver_cursed, clip_revolver_cursed.getUnlocalizedName()); - GameRegistry.registerItem(clip_revolver_nightmare, clip_revolver_nightmare.getUnlocalizedName()); - GameRegistry.registerItem(clip_revolver_nightmare2, clip_revolver_nightmare2.getUnlocalizedName()); - GameRegistry.registerItem(clip_revolver_pip, clip_revolver_pip.getUnlocalizedName()); - GameRegistry.registerItem(clip_revolver_nopip, clip_revolver_nopip.getUnlocalizedName()); - GameRegistry.registerItem(clip_rpg, clip_rpg.getUnlocalizedName()); - GameRegistry.registerItem(clip_stinger, clip_stinger.getUnlocalizedName()); - GameRegistry.registerItem(clip_fatman, clip_fatman.getUnlocalizedName()); - GameRegistry.registerItem(clip_mirv, clip_mirv.getUnlocalizedName()); - GameRegistry.registerItem(clip_bf, clip_bf.getUnlocalizedName()); - GameRegistry.registerItem(clip_mp40, clip_mp40.getUnlocalizedName()); - GameRegistry.registerItem(clip_uzi, clip_uzi.getUnlocalizedName()); - GameRegistry.registerItem(clip_uboinik, clip_uboinik.getUnlocalizedName()); - GameRegistry.registerItem(clip_lever_action, clip_lever_action.getUnlocalizedName()); - GameRegistry.registerItem(clip_bolt_action, clip_bolt_action.getUnlocalizedName()); - GameRegistry.registerItem(clip_xvl1456, clip_xvl1456.getUnlocalizedName()); - GameRegistry.registerItem(clip_osipr, clip_osipr.getUnlocalizedName()); - GameRegistry.registerItem(clip_immolator, clip_immolator.getUnlocalizedName()); - GameRegistry.registerItem(clip_cryolator, clip_cryolator.getUnlocalizedName()); - GameRegistry.registerItem(clip_mp, clip_mp.getUnlocalizedName()); - GameRegistry.registerItem(clip_emp, clip_emp.getUnlocalizedName()); - GameRegistry.registerItem(clip_jack, clip_jack.getUnlocalizedName()); - GameRegistry.registerItem(clip_spark, clip_spark.getUnlocalizedName()); - GameRegistry.registerItem(clip_hp, clip_hp.getUnlocalizedName()); - GameRegistry.registerItem(clip_euthanasia, clip_euthanasia.getUnlocalizedName()); - GameRegistry.registerItem(clip_defabricator, clip_defabricator.getUnlocalizedName()); - GameRegistry.registerItem(ammo_container, ammo_container.getUnlocalizedName()); //Grenades diff --git a/src/main/java/com/hbm/items/weapon/sedna/factory/GunFactory.java b/src/main/java/com/hbm/items/weapon/sedna/factory/GunFactory.java index f53ea37d2..3b5c9b6b2 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/factory/GunFactory.java +++ b/src/main/java/com/hbm/items/weapon/sedna/factory/GunFactory.java @@ -80,7 +80,7 @@ public class GunFactory { R762_SP, R762_FMJ, R762_JHP, R762_AP, R762_DU, BMG50_SP, BMG50_FMJ, BMG50_JHP, BMG50_AP, BMG50_DU, B75, B75_INC, B75_EXP, - G12_BP, G12_BP_MAGNUM, G12_BP_SLUG, G12, G12_SLUG, G12_FLECHETTE, G12_MAGNUM, G12_EXPLOSIVE, G12_PHOSPHORUS, G12_ANTHRAX, + G12_BP, G12_BP_MAGNUM, G12_BP_SLUG, G12, G12_SLUG, G12_FLECHETTE, G12_MAGNUM, G12_EXPLOSIVE, G12_PHOSPHORUS, //G12_ANTHRAX, G26_FLARE, G26_FLARE_SUPPLY, G26_FLARE_WEAPON, G40_HE, G40_HEAT, G40_DEMO, G40_INC, G40_PHOSPHORUS, ROCKET_HE, ROCKET_HEAT, ROCKET_DEMO, ROCKET_INC, ROCKET_PHOSPHORUS, diff --git a/src/main/java/com/hbm/items/weapon/sedna/factory/GunFactoryClient.java b/src/main/java/com/hbm/items/weapon/sedna/factory/GunFactoryClient.java index bf2d4d3be..1632ab508 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/factory/GunFactoryClient.java +++ b/src/main/java/com/hbm/items/weapon/sedna/factory/GunFactoryClient.java @@ -36,7 +36,8 @@ public class GunFactoryClient { //GUNS MinecraftForgeClient.registerItemRenderer(ModItems.gun_debug, new ItemRenderDebug()); MinecraftForgeClient.registerItemRenderer(ModItems.gun_pepperbox, new ItemRenderPepperbox()); - MinecraftForgeClient.registerItemRenderer(ModItems.gun_light_revolver, new ItemRenderAtlas()); + MinecraftForgeClient.registerItemRenderer(ModItems.gun_light_revolver, new ItemRenderAtlas(ResourceManager.bio_revolver_tex)); + MinecraftForgeClient.registerItemRenderer(ModItems.gun_light_revolver_atlas, new ItemRenderAtlas(ResourceManager.bio_revolver_atlas_tex)); MinecraftForgeClient.registerItemRenderer(ModItems.gun_light_revolver_dani, new ItemRenderDANI()); MinecraftForgeClient.registerItemRenderer(ModItems.gun_henry, new ItemRenderHenry()); MinecraftForgeClient.registerItemRenderer(ModItems.gun_greasegun, new ItemRenderGreasegun()); @@ -141,7 +142,7 @@ public class GunFactoryClient { g12_magnum.setRenderer(LegoClient.RENDER_STANDARD_BULLET); g12_explosive.setRenderer(LegoClient.RENDER_EXPRESS_BULLET); g12_phosphorus.setRenderer(LegoClient.RENDER_AP_BULLET); - g12_anthrax.setRenderer(LegoClient.RENDER_STANDARD_BULLET); + //g12_anthrax.setRenderer(LegoClient.RENDER_STANDARD_BULLET); g12_equestrian.setRenderer(LegoClient.RENDER_LEGENDARY_BULLET); g26_flare.setRenderer(LegoClient.RENDER_FLARE); @@ -173,6 +174,7 @@ public class GunFactoryClient { ((ItemGunBaseNT) ModItems.gun_debug) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO); ((ItemGunBaseNT) ModItems.gun_pepperbox) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO); ((ItemGunBaseNT) ModItems.gun_light_revolver) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO); + ((ItemGunBaseNT) ModItems.gun_light_revolver_atlas) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO); ((ItemGunBaseNT) ModItems.gun_henry) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO); ((ItemGunBaseNT) ModItems.gun_greasegun) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO); ((ItemGunBaseNT) ModItems.gun_maresleg) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO); diff --git a/src/main/java/com/hbm/items/weapon/sedna/factory/Orchestras.java b/src/main/java/com/hbm/items/weapon/sedna/factory/Orchestras.java index dcacf6a52..8349ae7a4 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/factory/Orchestras.java +++ b/src/main/java/com/hbm/items/weapon/sedna/factory/Orchestras.java @@ -594,6 +594,28 @@ public class Orchestras { AnimType type = ItemGunBaseNT.getLastAnim(stack, ctx.configIndex); int timer = ItemGunBaseNT.getAnimTimer(stack, ctx.configIndex); boolean aiming = ItemGunBaseNT.getIsAiming(stack); + + if(type == AnimType.CYCLE) { + if(timer == 1) { + SpentCasing casing = ctx.config.getReceivers(stack)[0].getMagazine(stack).getCasing(stack, ctx.inventory); + if(casing != null) CasingCreator.composeEffect(entity.worldObj, entity, 0.375, aiming ? 0 : -0.0625, aiming ? 0 : -0.25D, 0, 0.18, -0.12, 0.01, casing.getName()); + } + } + if(type == AnimType.CYCLE_DRY) { + if(timer == 0) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.dryFireClick", 1F, 1F); + if(timer == 8) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.revolverCock", 1F, 1F); + + } + if(type == AnimType.RELOAD) { + if(timer == 8) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.magRemove", 1F, 1F); + if(timer == 26) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.magInsert", 1F, 1F); + if(timer == 40) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.pistolCock", 1F, 1F); + } + if(type == AnimType.JAMMED) { + if(timer == 8) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.magRemove", 1F, 1F); + if(timer == 20) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.impact", 0.5F, 1.6F); + if(timer == 36) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.magInsert", 1F, 1F); + } }; public static BiConsumer ORCHESTRA_UZI = (stack, ctx) -> { @@ -726,8 +748,7 @@ public class Orchestras { } if(type == AnimType.CYCLE_DRY) { if(timer == 0) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.dryFireClick", 1F, 0.8F); - if(timer == 5) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.revolverClose", 1F, 0.9F); - if(timer == 9) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.revolverClose", 1F, 1F); + if(timer == 5) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.pistolCock", 1F, 0.9F); } if(type == AnimType.RELOAD) { @@ -1097,6 +1118,10 @@ public class Orchestras { if(entity.worldObj.isRemote) return; AnimType type = ItemGunBaseNT.getLastAnim(stack, ctx.configIndex); int timer = ItemGunBaseNT.getAnimTimer(stack, ctx.configIndex); + + if(type == AnimType.CYCLE_DRY) { + if(timer == 0) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.dryFireClick", 1F, 1.5F); + } if(type == AnimType.RELOAD) { if(timer == 2) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.magSmallRemove", 1F, 1F); diff --git a/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory12ga.java b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory12ga.java index d3740c351..e3ee3d5c7 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory12ga.java +++ b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory12ga.java @@ -4,6 +4,7 @@ import java.util.function.BiConsumer; import java.util.function.BiFunction; import com.hbm.entity.projectile.EntityBulletBaseMK4; +import com.hbm.extprop.HbmLivingProps; import com.hbm.items.ModItems; import com.hbm.items.weapon.sedna.BulletConfig; import com.hbm.items.weapon.sedna.Crosshair; @@ -56,19 +57,20 @@ public class XFactory12ga { g12_bp_slug = new BulletConfig().setItem(EnumAmmo.G12_BP_SLUG).setBlackPowder(true).setDamage(0.5F).setSpread(0.01F).setRicochetAngle(5).setCasing(new SpentCasing(CasingType.SHOTGUN).setColor(SpentCasing.COLOR_CASE_BRASS, SpentCasing.COLOR_CASE_BRASS).setScale(0.75F).register("12GA_BP_SLUG")); g12 = new BulletConfig().setItem(EnumAmmo.G12).setProjectiles(8).setDamage(1F/8F).setSpread(0.05F).setRicochetAngle(15).setCasing(new SpentCasing(CasingType.SHOTGUN).setColor(0xB52B2B, SpentCasing.COLOR_CASE_BRASS).setScale(0.75F).register("12GA")); g12_slug = new BulletConfig().setItem(EnumAmmo.G12_SLUG).setSpread(0.0F).setRicochetAngle(25).setCasing(new SpentCasing(CasingType.SHOTGUN).setColor(0x393939, SpentCasing.COLOR_CASE_BRASS).setScale(0.75F).register("12GA_SLUG")); - g12_flechette = new BulletConfig().setItem(EnumAmmo.G12_FLECHETTE).setProjectiles(8).setDamage(1F/8F).setSpread(0.025F).setRicochetAngle(5).setCasing(new SpentCasing(CasingType.SHOTGUN).setColor(0x3C80F0, SpentCasing.COLOR_CASE_BRASS).setScale(0.75F).register("12GA_FLECHETTE")); + g12_flechette = new BulletConfig().setItem(EnumAmmo.G12_FLECHETTE).setProjectiles(8).setDamage(1F/8F).setThresholdNegation(5F).setArmorPiercing(0.2F).setSpread(0.025F).setRicochetAngle(5).setCasing(new SpentCasing(CasingType.SHOTGUN).setColor(0x3C80F0, SpentCasing.COLOR_CASE_BRASS).setScale(0.75F).register("12GA_FLECHETTE")); g12_magnum = new BulletConfig().setItem(EnumAmmo.G12_MAGNUM).setProjectiles(4).setDamage(2F/4F).setSpread(0.015F).setRicochetAngle(15).setCasing(new SpentCasing(CasingType.SHOTGUN).setColor(0x278400, SpentCasing.COLOR_CASE_12GA).setScale(0.75F).register("12GA_MAGNUM")); g12_explosive = new BulletConfig().setItem(EnumAmmo.G12_EXPLOSIVE).setDamage(5F).setOnImpact(LAMBDA_STANDARD_EXPLODE).setSpread(0F).setRicochetAngle(15).setCasing(new SpentCasing(CasingType.SHOTGUN).setColor(0xDA4127, SpentCasing.COLOR_CASE_12GA).setScale(0.75F).register("12GA_EXPLOSIVE")); - g12_phosphorus = new BulletConfig().setItem(EnumAmmo.G12_PHOSPHORUS).setProjectiles(8).setDamage(1F/8F).setSpread(0.015F).setRicochetAngle(15).setCasing(new SpentCasing(CasingType.SHOTGUN).setColor(0x910001, SpentCasing.COLOR_CASE_12GA).setScale(0.75F).register("12GA_PHOSPHORUS")); - g12_anthrax = new BulletConfig().setItem(EnumAmmo.G12_ANTHRAX).setProjectiles(8).setDamage(1F/8F).setSpread(0.015F).setRicochetAngle(15).setCasing(new SpentCasing(CasingType.SHOTGUN).setColor(0x749300, SpentCasing.COLOR_CASE_12GA).setScale(0.75F).register("12GA_ANTHRAX")); + g12_phosphorus = new BulletConfig().setItem(EnumAmmo.G12_PHOSPHORUS).setProjectiles(8).setDamage(1F/8F).setSpread(0.015F).setRicochetAngle(15).setCasing(new SpentCasing(CasingType.SHOTGUN).setColor(0x910001, SpentCasing.COLOR_CASE_12GA).setScale(0.75F).register("12GA_PHOSPHORUS")) + .setOnImpact((bullet, mop) -> { if(mop.entityHit != null && mop.entityHit instanceof EntityLivingBase) { HbmLivingProps data = HbmLivingProps.getData((EntityLivingBase) mop.entityHit); if(data.phosphorus < 300) data.phosphorus = 300; } }); + //g12_anthrax = new BulletConfig().setItem(EnumAmmo.G12_ANTHRAX).setProjectiles(8).setDamage(1F/8F).setSpread(0.015F).setRicochetAngle(15).setCasing(new SpentCasing(CasingType.SHOTGUN).setColor(0x749300, SpentCasing.COLOR_CASE_12GA).setScale(0.75F).register("12GA_ANTHRAX")); g12_equestrian = new BulletConfig().setItem(EnumAmmoSecret.G12_EQUESTRIAN).setDamage(0F).setCasing(new SpentCasing(CasingType.SHOTGUN).setColor(SpentCasing.COLOR_CASE_EQUESTRIAN, SpentCasing.COLOR_CASE_12GA).setScale(0.75F).register("12gaEquestrian")); - BulletConfig[] all = new BulletConfig[] {g12_bp, g12_bp_magnum, g12_bp_slug, g12, g12_slug, g12_flechette, g12_magnum, g12_explosive, g12_phosphorus, g12_anthrax}; + BulletConfig[] all = new BulletConfig[] {g12_bp, g12_bp_magnum, g12_bp_slug, g12, g12_slug, g12_flechette, g12_magnum, g12_explosive, g12_phosphorus}; ModItems.gun_maresleg = new ItemGunBaseNT(WeaponQuality.A_SIDE, new GunConfig() .dura(600).draw(10).inspect(39).reloadSequential(true).crosshair(Crosshair.L_CIRCLE).smoke(Lego.LAMBDA_STANDARD_SMOKE) .rec(new Receiver(0) - .dmg(16F).delay(20).reload(22, 10, 13, 0).jam(24).sound("hbm:weapon.fire.blackPowder", 1.0F, 1.0F) + .dmg(16F).delay(20).reload(22, 10, 13, 0).jam(24).sound("hbm:weapon.fire.shotgun", 1.0F, 1.0F) .mag(new MagazineSingleReload(0, 6).addConfigs(all)) .offset(0.75, -0.0625, -0.1875) .setupStandardFire().recoil(Lego.LAMBDA_STANDARD_RECOIL)) @@ -78,7 +80,7 @@ public class XFactory12ga { ModItems.gun_maresleg_akimbo = new ItemGunBaseNT(WeaponQuality.B_SIDE, new GunConfig().dura(600).draw(5).inspect(39).reloadSequential(true).crosshair(Crosshair.L_CIRCLE).smoke(Lego.LAMBDA_STANDARD_SMOKE) .rec(new Receiver(0) - .dmg(16F).delay(20).reload(22, 10, 13, 0).jam(24).sound("hbm:weapon.fire.blackPowder", 1.0F, 1.0F) + .dmg(16F).delay(20).reload(22, 10, 13, 0).jam(24).sound("hbm:weapon.fire.shotgun", 1.0F, 1.0F) .mag(new MagazineSingleReload(0, 6).addConfigs(all)) .offset(0.75, -0.0625, 0.1875D) .setupStandardFire().recoil(Lego.LAMBDA_STANDARD_RECOIL)) @@ -87,7 +89,7 @@ public class XFactory12ga { .anim(LAMBDA_MARESLEG_SHORT_ANIMS).orchestra(Orchestras.ORCHESTRA_MARESLEG_AKIMBO), new GunConfig().dura(600).draw(5).inspect(39).reloadSequential(true).crosshair(Crosshair.L_CIRCLE).smoke(Lego.LAMBDA_STANDARD_SMOKE) .rec(new Receiver(0) - .dmg(12F).delay(20).reload(22, 10, 13, 0).jam(24).sound("hbm:weapon.fire.blackPowder", 1.0F, 1.0F) + .dmg(12F).delay(20).reload(22, 10, 13, 0).jam(24).sound("hbm:weapon.fire.shotgun", 1.0F, 1.0F) .mag(new MagazineSingleReload(1, 6).addConfigs(all)) .offset(0.75, -0.0625, -0.1875) .setupStandardFire().recoil(Lego.LAMBDA_STANDARD_RECOIL)) @@ -98,7 +100,7 @@ public class XFactory12ga { ModItems.gun_maresleg_broken = new ItemGunBaseNT(WeaponQuality.LEGENDARY, new GunConfig() .dura(0).draw(5).inspect(39).reloadSequential(true).crosshair(Crosshair.L_CIRCLE).smoke(Lego.LAMBDA_STANDARD_SMOKE) .rec(new Receiver(0) - .dmg(32F).delay(20).reload(22, 10, 13, 0).jam(24).sound("hbm:weapon.fire.blackPowder", 1.0F, 1.0F) + .dmg(32F).delay(20).reload(22, 10, 13, 0).jam(24).sound("hbm:weapon.fire.shotgun", 1.0F, 1.0F) .mag(new MagazineSingleReload(0, 6).addConfigs(all)) .offset(0.75, -0.0625, -0.1875) .canFire(Lego.LAMBDA_STANDARD_CAN_FIRE).fire(Lego.LAMBDA_NOWEAR_FIRE).recoil(Lego.LAMBDA_STANDARD_RECOIL)) @@ -109,7 +111,7 @@ public class XFactory12ga { ModItems.gun_liberator = new ItemGunBaseNT(WeaponQuality.A_SIDE, new GunConfig() .dura(200).draw(20).inspect(21).reloadSequential(true).crosshair(Crosshair.L_CIRCLE).smoke(Lego.LAMBDA_STANDARD_SMOKE) .rec(new Receiver(0) - .dmg(8F).delay(20).rounds(4).reload(25, 15, 7, 0).jam(45).sound("hbm:weapon.fire.blackPowder", 1.0F, 1.0F) + .dmg(8F).delay(20).rounds(4).reload(25, 15, 7, 0).jam(45).sound("hbm:weapon.fire.shotgunAlt", 1.0F, 1.0F) .mag(new MagazineSingleReload(0, 4).addConfigs(all)) .offset(0.75, -0.0625, -0.1875) .setupStandardFire().recoil(Lego.LAMBDA_STANDARD_RECOIL)) @@ -131,7 +133,7 @@ public class XFactory12ga { ModItems.gun_autoshotgun = new ItemGunBaseNT(WeaponQuality.A_SIDE, new GunConfig() .dura(2_000).draw(10).inspect(33).reloadSequential(true).crosshair(Crosshair.L_CIRCLE).smoke(Lego.LAMBDA_STANDARD_SMOKE) .rec(new Receiver(0) - .dmg(48F).delay(10).auto(true).autoAfterDry(true).dryfireAfterAuto(true).reload(44).jam(19).sound("hbm:weapon.fire.blackPowder", 1.0F, 1.0F) + .dmg(48F).delay(10).auto(true).autoAfterDry(true).dryfireAfterAuto(true).reload(44).jam(19).sound("hbm:weapon.fire.shotgunAuto", 1.0F, 1.0F) .mag(new MagazineFullReload(0, 20).addConfigs(all)) .offset(0.75, -0.125, -0.25) .setupStandardFire().recoil(Lego.LAMBDA_STANDARD_RECOIL)) @@ -141,15 +143,15 @@ public class XFactory12ga { ModItems.gun_autoshotgun_sexy = new ItemGunBaseNT(WeaponQuality.LEGENDARY, new GunConfig() .dura(5_000).draw(10).inspect(33).reloadSequential(true).crosshair(Crosshair.L_CIRCLE).smoke(Lego.LAMBDA_STANDARD_SMOKE) .rec(new Receiver(0) - .dmg(64F).delay(1).auto(true).dryfireAfterAuto(true).reload(44).jam(19).sound("hbm:weapon.fire.blackPowder", 1.0F, 1.0F) - .mag(new MagazineFullReload(0, 100).addConfigs(g12_equestrian, g12_bp, g12_bp_magnum, g12_bp_slug, g12, g12_slug, g12_flechette, g12_magnum, g12_explosive, g12_phosphorus, g12_anthrax)) + .dmg(64F).delay(1).auto(true).dryfireAfterAuto(true).reload(44).jam(19).sound("hbm:weapon.fire.shotgunAuto", 1.0F, 1.0F) + .mag(new MagazineFullReload(0, 100).addConfigs(g12_equestrian, g12_bp, g12_bp_magnum, g12_bp_slug, g12, g12_slug, g12_flechette, g12_magnum, g12_explosive, g12_phosphorus)) .offset(0.75, -0.125, -0.25) .setupStandardFire().recoil(Lego.LAMBDA_STANDARD_RECOIL)) .setupStandardConfiguration() .anim(LAMBDA_SEXY_ANIMS).orchestra(Orchestras.ORCHESTRA_SHREDDER_SEXY) ).setUnlocalizedName("gun_autoshotgun_sexy"); } - //TODO: make generic code for this crap + public static BiConsumer LAMBDA_SPAS_SECONDARY = (stack, ctx) -> { EntityLivingBase entity = ctx.entity; EntityPlayer player = ctx.getPlayer(); diff --git a/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory22lr.java b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory22lr.java index 5d5739636..d9e24ab74 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory22lr.java +++ b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory22lr.java @@ -45,7 +45,7 @@ public class XFactory22lr { ModItems.gun_am180 = new ItemGunBaseNT(WeaponQuality.A_SIDE, new GunConfig() .dura(177 * 25).draw(15).inspect(38).crosshair(Crosshair.L_CIRCLE).smoke(LAMBDA_SMOKE) .rec(new Receiver(0) - .dmg(2F).delay(1).dry(10).auto(true).spread(0.02F).reload(66).jam(30).sound("hbm:weapon.fire.blackPowder", 1.0F, 1.0F) + .dmg(2F).delay(1).dry(10).auto(true).spread(0.02F).reload(66).jam(30).sound("hbm:weapon.fire.silenced", 1.0F, 1.0F) .mag(new MagazineFullReload(0, 177).addConfigs(p22_sp, p22_fmj, p22_jhp, p22_ap)) .offset(1, -0.0625 * 1.5, -0.1875D) .setupStandardFire().recoil(Lego.LAMBDA_STANDARD_RECOIL)) diff --git a/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory357.java b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory357.java index 38bb00bbb..d5468521b 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory357.java +++ b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory357.java @@ -38,18 +38,27 @@ public class XFactory357 { ModItems.gun_light_revolver = new ItemGunBaseNT(WeaponQuality.A_SIDE, new GunConfig() .dura(300).draw(4).inspect(23).crosshair(Crosshair.CIRCLE).smoke(Lego.LAMBDA_STANDARD_SMOKE) .rec(new Receiver(0) - .dmg(7.5F).delay(16).reload(55).jam(45).sound("hbm:weapon.fire.blackPowder", 1.0F, 1.0F) + .dmg(7.5F).delay(16).reload(55).jam(45).sound("hbm:weapon.fire.pistol", 1.0F, 1.0F) .mag(new MagazineFullReload(0, 6).addConfigs(m357_bp, m357_sp, m357_fmj, m357_jhp, m357_ap, m357_express)) .offset(0.75, -0.0625, -0.3125D) .setupStandardFire().recoil(Lego.LAMBDA_STANDARD_RECOIL)) .setupStandardConfiguration() .anim(LAMBDA_ATLAS_ANIMS).orchestra(Orchestras.ORCHESTRA_ATLAS) ).setUnlocalizedName("gun_light_revolver"); - + ModItems.gun_light_revolver_atlas = new ItemGunBaseNT(WeaponQuality.A_SIDE, new GunConfig() + .dura(300).draw(4).inspect(23).crosshair(Crosshair.CIRCLE).smoke(Lego.LAMBDA_STANDARD_SMOKE) + .rec(new Receiver(0) + .dmg(12.5F).delay(16).reload(55).jam(45).sound("hbm:weapon.fire.pistol", 1.0F, 1.0F) + .mag(new MagazineFullReload(0, 6).addConfigs(m357_bp, m357_sp, m357_fmj, m357_jhp, m357_ap, m357_express)) + .offset(0.75, -0.0625, -0.3125D) + .setupStandardFire().recoil(Lego.LAMBDA_STANDARD_RECOIL)) + .setupStandardConfiguration() + .anim(LAMBDA_ATLAS_ANIMS).orchestra(Orchestras.ORCHESTRA_ATLAS) + ).setUnlocalizedName("gun_light_revolver_atlas"); ModItems.gun_light_revolver_dani = new ItemGunBaseNT(WeaponQuality.LEGENDARY, new GunConfig().dura(30_000).draw(20).inspect(23).crosshair(Crosshair.CIRCLE).smoke(Lego.LAMBDA_STANDARD_SMOKE) .rec(new Receiver(0) - .dmg(15F).delay(11).reload(55).jam(45).sound("hbm:weapon.fire.blackPowder", 1.0F, 1.0F) + .dmg(15F).delay(11).reload(55).jam(45).sound("hbm:weapon.fire.pistol", 1.0F, 1.1F) .mag(new MagazineFullReload(0, 6).addConfigs(m357_bp, m357_sp, m357_fmj, m357_jhp, m357_ap, m357_express)) .offset(0.75, -0.0625, 0.3125D) .setupStandardFire().recoil(Lego.LAMBDA_STANDARD_RECOIL)) @@ -58,7 +67,7 @@ public class XFactory357 { .anim(LAMBDA_DANI_ANIMS).orchestra(Orchestras.ORCHESTRA_DANI), new GunConfig().dura(30_000).draw(20).inspect(23).crosshair(Crosshair.CIRCLE).smoke(Lego.LAMBDA_STANDARD_SMOKE) .rec(new Receiver(0) - .dmg(15F).delay(11).reload(55).jam(45).sound("hbm:weapon.fire.blackPowder", 1.0F, 1.0F) + .dmg(15F).delay(11).reload(55).jam(45).sound("hbm:weapon.fire.pistol", 1.0F, 0.9F) .mag(new MagazineFullReload(1, 6).addConfigs(m357_bp, m357_sp, m357_fmj, m357_jhp, m357_ap, m357_express)) .offset(0.75, -0.0625, -0.3125D) .setupStandardFire().recoil(Lego.LAMBDA_STANDARD_RECOIL)) diff --git a/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory44.java b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory44.java index de41c4037..161bed164 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory44.java +++ b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory44.java @@ -59,7 +59,7 @@ public class XFactory44 { ModItems.gun_henry = new ItemGunBaseNT(WeaponQuality.A_SIDE, new GunConfig() .dura(300).draw(15).inspect(23).reloadSequential(true).crosshair(Crosshair.CIRCLE).smoke(Lego.LAMBDA_STANDARD_SMOKE) .rec(new Receiver(0) - .dmg(10F).delay(20).reload(25, 11, 14, 8).jam(45).sound("hbm:weapon.fire.blackPowder", 1.0F, 1.0F) + .dmg(10F).delay(20).reload(25, 11, 14, 8).jam(45).sound("hbm:weapon.fire.rifle", 1.0F, 1.0F) .mag(new MagazineSingleReload(0, 14).addConfigs(m44_bp, m44_sp, m44_fmj, m44_jhp, m44_ap, m44_express)) .offset(0.75, -0.0625, -0.1875D) .setupStandardFire().recoil(Lego.LAMBDA_STANDARD_RECOIL)) diff --git a/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory556mm.java b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory556mm.java index 1d7a628c2..a914e87bc 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory556mm.java +++ b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory556mm.java @@ -47,7 +47,7 @@ public class XFactory556mm { ModItems.gun_g3 = new ItemGunBaseNT(WeaponQuality.A_SIDE, new GunConfig() .dura(3_000).draw(10).inspect(33).crosshair(Crosshair.CIRCLE).smoke(LAMBDA_SMOKE) .rec(new Receiver(0) - .dmg(5F).delay(2).auto(true).dry(15).spread(0.0F).reload(50).jam(47).sound("hbm:weapon.fire.blackPowder", 1.0F, 1.0F) + .dmg(5F).delay(2).auto(true).dry(15).spread(0.0F).reload(50).jam(47).sound("hbm:weapon.fire.assault", 1.0F, 1.0F) .mag(new MagazineFullReload(0, 30).addConfigs(r556_sp, r556_fmj, r556_jhp, r556_ap)) .offset(1, -0.0625 * 2.5, -0.25D) .setupStandardFire().recoil(Lego.LAMBDA_STANDARD_RECOIL)) @@ -58,7 +58,7 @@ public class XFactory556mm { ModItems.gun_stg77 = new ItemGunBaseNT(WeaponQuality.A_SIDE, new GunConfig() .dura(3_000).draw(10).inspect(125).crosshair(Crosshair.CIRCLE).smoke(LAMBDA_SMOKE) .rec(new Receiver(0) - .dmg(10F).delay(2).dry(15).auto(true).spread(0.0F).reload(46).jam(0).sound("hbm:weapon.fire.blackPowder", 1.0F, 1.0F) + .dmg(10F).delay(2).dry(15).auto(true).spread(0.0F).reload(46).jam(0).sound("hbm:weapon.fire.assault", 1.0F, 1.0F) .mag(new MagazineFullReload(0, 30).addConfigs(r556_sp, r556_fmj, r556_jhp, r556_ap)) .offset(1, -0.0625 * 2.5, -0.25D) .setupStandardFire().recoil(Lego.LAMBDA_STANDARD_RECOIL)) diff --git a/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory762mm.java b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory762mm.java index 692d5cf6c..6a4451b40 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory762mm.java +++ b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory762mm.java @@ -78,7 +78,7 @@ public class XFactory762mm { ModItems.gun_minigun_lacunae = new ItemGunBaseNT(WeaponQuality.LEGENDARY, new GunConfig() .dura(50_000).draw(20).inspect(20).crosshair(Crosshair.L_CIRCLE) .rec(new Receiver(0) - .dmg(12F).delay(1).auto(true).dry(15).reload(15).spread(0.01F).sound("hbm:weapon.fire.blackPowder", 1.0F, 1.0F) + .dmg(12F).delay(1).auto(true).dry(15).reload(15).spread(0.01F).sound("hbm:weapon.fire.laserGatling", 1.0F, 1.0F) .mag(new MagazineFullReload(0, 200).addConfigs(energy_lacunae, energy_lacunae_overcharge, energy_lacunae_ir)) .offset(1, -0.0625 * 2.5, -0.25D) .setupStandardFire().recoil(Lego.LAMBDA_STANDARD_RECOIL)) diff --git a/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory9mm.java b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory9mm.java index 37564377a..2367c292e 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory9mm.java +++ b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory9mm.java @@ -15,6 +15,7 @@ import com.hbm.items.weapon.sedna.ItemGunBaseNT.WeaponQuality; import com.hbm.items.weapon.sedna.factory.GunFactory.EnumAmmo; import com.hbm.items.weapon.sedna.mags.MagazineFullReload; import com.hbm.main.MainRegistry; +import com.hbm.main.ResourceManager; import com.hbm.particle.SpentCasing; import com.hbm.particle.SpentCasing.CasingType; import com.hbm.render.anim.BusAnimation; @@ -54,9 +55,9 @@ public class XFactory9mm { ).setUnlocalizedName("gun_greasegun"); ModItems.gun_lag = new ItemGunBaseNT(WeaponQuality.A_SIDE, new GunConfig() - .dura(1_700).draw(15).inspect(31).crosshair(Crosshair.CIRCLE).smoke(LAMBDA_SMOKE) + .dura(1_700).draw(7).inspect(31).crosshair(Crosshair.CIRCLE).smoke(LAMBDA_SMOKE) .rec(new Receiver(0) - .dmg(25F).delay(4).dry(40).spread(0.005F).reload(60).jam(55).sound("hbm:weapon.fire.blackPowder", 1.0F, 1.0F) + .dmg(25F).delay(20).dry(4).spread(0.005F).reload(53).jam(44).sound("hbm:weapon.fire.blackPowder", 1.0F, 1.0F) .mag(new MagazineFullReload(0, 17).addConfigs(p9_sp, p9_fmj, p9_jhp, p9_ap)) .offset(1, -0.0625 * 2.5, -0.25D) .setupStandardFire().recoil(Lego.LAMBDA_STANDARD_RECOIL)) @@ -141,7 +142,20 @@ public class XFactory9mm { return null; }; - public static BiFunction LAMBDA_LAG_ANIMS = (stack, type) -> { + @SuppressWarnings("incomplete-switch") public static BiFunction LAMBDA_LAG_ANIMS = (stack, type) -> { + switch(type) { + case EQUIP: return new BusAnimation() + .addBus("EQUIP", new BusAnimationSequence().addPos(-90, 0, 0, 0).addPos(0, 0, 0, 350, IType.SIN_DOWN)); + case CYCLE: return ResourceManager.lag_anim.get("Firing"); + //.addBus("HAMMER", new BusAnimationSequence().addPos(0, 0, 25, 50).addPos(0, 0, 25, 50).addPos(0, 0, 0, 100, IType.SIN_DOWN)); + case CYCLE_DRY: return ResourceManager.lag_anim.get("Dryfire"); + case RELOAD: return ResourceManager.lag_anim.get("Reload"); + case JAMMED: return ResourceManager.lag_anim.get("Jam"); + case INSPECT: return ResourceManager.lag_anim.get("Inspect") + .addBus("ADD_TRANS", new BusAnimationSequence().addPos(-4, 0, -3, 500).addPos(-4, 0, -3, 2000).addPos(0, 0, 0, 500)) + .addBus("ADD_ROT", new BusAnimationSequence().addPos(0, -2, 5, 500).addPos(0, -2, 5, 2000).addPos(0, 0, 0, 500)); + } + return null; }; diff --git a/src/main/java/com/hbm/items/weapon/sedna/factory/XFactoryEnergy.java b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactoryEnergy.java index 50773003f..3266ebe94 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/factory/XFactoryEnergy.java +++ b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactoryEnergy.java @@ -144,7 +144,7 @@ public class XFactoryEnergy { ModItems.gun_lasrifle = new ItemGunBaseNT(WeaponQuality.A_SIDE, new GunConfig() .dura(2_000).draw(10).inspect(26).reloadSequential(true).crosshair(Crosshair.CIRCLE).scopeTexture(scope_luna) .rec(new Receiver(0) - .dmg(50F).delay(8).reload(44).jam(36).sound("hbm:weapon.fire.blackPowder", 1.0F, 1.0F) + .dmg(50F).delay(8).reload(44).jam(36).sound("hbm:weapon.fire.laser", 1.0F, 1.0F) .mag(new MagazineFullReload(0, 24).addConfigs(energy_las, energy_las_overcharge, energy_las_ir)) .offset(0.75, -0.0625 * 1.5, -0.1875) .setupStandardFire().recoil(Lego.LAMBDA_STANDARD_RECOIL)) diff --git a/src/main/java/com/hbm/main/ClientProxy.java b/src/main/java/com/hbm/main/ClientProxy.java index bd399fa8e..2147cbd4e 100644 --- a/src/main/java/com/hbm/main/ClientProxy.java +++ b/src/main/java/com/hbm/main/ClientProxy.java @@ -270,6 +270,7 @@ public class ClientProxy extends ServerProxy { ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineLPW2.class, new RenderLPW2()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachinePress.class, new RenderPress()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineEPress.class, new RenderEPress()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineAmmoPress.class, new RenderAmmoPress()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineRadGen.class, new RenderRadGen()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineRadarNT.class, new RenderRadar()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineRadarLarge.class, new RenderRadarLarge()); diff --git a/src/main/java/com/hbm/main/CraftingManager.java b/src/main/java/com/hbm/main/CraftingManager.java index 5196b41ed..9bb41a4a8 100644 --- a/src/main/java/com/hbm/main/CraftingManager.java +++ b/src/main/java/com/hbm/main/CraftingManager.java @@ -295,6 +295,7 @@ public class CraftingManager { addRecipeAuto(new ItemStack(ModBlocks.machine_funnel, 1), new Object[] { "S S", "SRS", " S ", 'S', STEEL.ingot(), 'R', REDSTONE.dust() }); addRecipeAuto(new ItemStack(ModBlocks.machine_waste_drum, 1), new Object[] { "LRL", "BRB", "LRL", 'L', PB.ingot(), 'B', Blocks.iron_bars, 'R', ModItems.rod_quad_empty }); addRecipeAuto(new ItemStack(ModBlocks.machine_press, 1), new Object[] { "IRI", "IPI", "IBI", 'I', IRON.ingot(), 'R', Blocks.furnace, 'B', IRON.block(), 'P', Blocks.piston }); + addRecipeAuto(new ItemStack(ModBlocks.machine_ammo_press, 1), new Object[] { "IPI", "C C", "SSS", 'I', IRON.ingot(), 'P', Blocks.piston, 'C', CU.ingot(), 'S', Blocks.stone }); addRecipeAuto(new ItemStack(ModBlocks.machine_siren, 1), new Object[] { "SIS", "ICI", "SRS", 'S', STEEL.plate(), 'I', ANY_RUBBER.ingot(), 'C', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.VACUUM_TUBE), 'R', REDSTONE.dust() }); addRecipeAuto(new ItemStack(ModBlocks.machine_microwave, 1), new Object[] { "III", "SGM", "IDI", 'I', ModItems.plate_polymer, 'S', STEEL.plate(), 'G', KEY_ANYPANE, 'M', ModItems.magnetron, 'D', ModItems.motor }); addRecipeAuto(new ItemStack(ModBlocks.machine_solar_boiler), new Object[] { "SHS", "DHD", "SHS", 'S', STEEL.ingot(), 'H', STEEL.shell(), 'D', KEY_BLACK }); diff --git a/src/main/java/com/hbm/main/MainRegistry.java b/src/main/java/com/hbm/main/MainRegistry.java index 291604ece..685bc14dc 100644 --- a/src/main/java/com/hbm/main/MainRegistry.java +++ b/src/main/java/com/hbm/main/MainRegistry.java @@ -1467,6 +1467,38 @@ public class MainRegistry { ignoreMappings.add("hbm:item.ammo_folly"); ignoreMappings.add("hbm:item.ammo_folly_nuclear"); ignoreMappings.add("hbm:item.ammo_folly_du"); + ignoreMappings.add("hbm:item.clip_revolver_iron"); + ignoreMappings.add("hbm:item.clip_revolver"); + ignoreMappings.add("hbm:item.clip_revolver_gold"); + ignoreMappings.add("hbm:item.clip_revolver_lead"); + ignoreMappings.add("hbm:item.clip_revolver_schrabidium"); + ignoreMappings.add("hbm:item.clip_revolver_cursed"); + ignoreMappings.add("hbm:item.clip_revolver_nightmare"); + ignoreMappings.add("hbm:item.clip_revolver_nightmare2"); + ignoreMappings.add("hbm:item.clip_revolver_pip"); + ignoreMappings.add("hbm:item.clip_revolver_nopip"); + ignoreMappings.add("hbm:item.clip_rpg"); + ignoreMappings.add("hbm:item.clip_stinger"); + ignoreMappings.add("hbm:item.clip_fatman"); + ignoreMappings.add("hbm:item.clip_mirv"); + ignoreMappings.add("hbm:item.clip_bf"); + ignoreMappings.add("hbm:item.clip_mp40"); + ignoreMappings.add("hbm:item.clip_uzi"); + ignoreMappings.add("hbm:item.clip_uboinik"); + ignoreMappings.add("hbm:item.clip_lever_action"); + ignoreMappings.add("hbm:item.clip_bolt_action"); + ignoreMappings.add("hbm:item.clip_xvl1456"); + ignoreMappings.add("hbm:item.clip_osipr"); + ignoreMappings.add("hbm:item.clip_immolator"); + ignoreMappings.add("hbm:item.clip_cryolator"); + ignoreMappings.add("hbm:item.clip_mp"); + ignoreMappings.add("hbm:item.clip_emp"); + ignoreMappings.add("hbm:item.clip_jack"); + ignoreMappings.add("hbm:item.clip_spark"); + ignoreMappings.add("hbm:item.clip_hp"); + ignoreMappings.add("hbm:item.clip_euthanasia"); + ignoreMappings.add("hbm:item.clip_defabricator"); + ignoreMappings.add("hbm:item.ammo_folly_du"); /// REMAP /// remapItems.put("hbm:item.gadget_explosive8", ModItems.early_explosive_lenses); diff --git a/src/main/java/com/hbm/main/ResourceManager.java b/src/main/java/com/hbm/main/ResourceManager.java index dffef5372..d203ebb00 100644 --- a/src/main/java/com/hbm/main/ResourceManager.java +++ b/src/main/java/com/hbm/main/ResourceManager.java @@ -130,6 +130,7 @@ public class ResourceManager { public static final IModelCustom epress_body = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/epress_body.obj")); public static final IModelCustom epress_head = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/epress_head.obj")); public static final IModelCustom conveyor_press = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/machines/conveyor_press.obj")); + public static final IModelCustom ammo_press = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/ammo_press.obj")).asVBO(); //Assembler public static final IModelCustom assembler_body = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/assembler_new_body.obj")); @@ -537,6 +538,7 @@ public class ResourceManager { public static final ResourceLocation epress_head_tex = new ResourceLocation(RefStrings.MODID, "textures/models/epress_head.png"); public static final ResourceLocation conveyor_press_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/conveyor_press.png"); public static final ResourceLocation conveyor_press_belt_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/conveyor_press_belt.png"); + public static final ResourceLocation ammo_press_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/ammo_press.png"); //Assembler public static final ResourceLocation assembler_body_tex = new ResourceLocation(RefStrings.MODID, "textures/models/assembler_base_new.png"); @@ -878,6 +880,7 @@ public class ResourceManager { public static final HashMap am180_anim = AnimationLoader.load(new ResourceLocation(RefStrings.MODID, "models/weapons/animations/am180.json")); public static final HashMap flamethrower_anim = AnimationLoader.load(new ResourceLocation(RefStrings.MODID, "models/weapons/animations/flamethrower.json")); public static final HashMap stg77_anim = AnimationLoader.load(new ResourceLocation(RefStrings.MODID, "models/weapons/animations/stg77.json")); + public static final HashMap lag_anim = AnimationLoader.load(new ResourceLocation(RefStrings.MODID, "models/weapons/animations/lag.json")); public static final IModelCustom lance = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/weapons/lance.obj")); @@ -973,6 +976,7 @@ public class ResourceManager { public static final ResourceLocation debug_gun_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/debug_gun.png"); public static final ResourceLocation pepperbox_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/pepperbox.png"); public static final ResourceLocation bio_revolver_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/bio_revolver.png"); + public static final ResourceLocation bio_revolver_atlas_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/bio_revolver_atlas.png"); public static final ResourceLocation dani_celestial_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/dani_celestial.png"); public static final ResourceLocation dani_lunar_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/dani_lunar.png"); public static final ResourceLocation henry_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/henry.png"); diff --git a/src/main/java/com/hbm/particle/ParticleGiblet.java b/src/main/java/com/hbm/particle/ParticleGiblet.java index a93128750..a5fdd3439 100644 --- a/src/main/java/com/hbm/particle/ParticleGiblet.java +++ b/src/main/java/com/hbm/particle/ParticleGiblet.java @@ -9,10 +9,12 @@ import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.client.Minecraft; import net.minecraft.client.particle.EntityFX; +import net.minecraft.client.renderer.OpenGlHelper; import net.minecraft.client.renderer.Tessellator; import net.minecraft.client.renderer.texture.TextureManager; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.init.Blocks; +import net.minecraft.util.MathHelper; import net.minecraft.util.ResourceLocation; import net.minecraft.world.World; @@ -80,9 +82,17 @@ public class ParticleGiblet extends EntityFX { float f12 = (float) (this.prevPosY + (this.posY - this.prevPosY) * (double) interp - dY); float f13 = (float) (this.prevPosZ + (this.posZ - this.prevPosZ) * (double) interp - dZ); + double pX = prevPosX + (posX - prevPosX) * interp; + double pY = prevPosY + (posY - prevPosY) * interp; + double pZ = prevPosZ + (posZ - prevPosZ) * interp; + int brightness = worldObj.getLightBrightnessForSkyBlocks(MathHelper.floor_double(pX), MathHelper.floor_double(pY), MathHelper.floor_double(pZ), 0); + int lX = brightness % 65536; + int lY = brightness / 65536; + OpenGlHelper.setLightmapTextureCoords(OpenGlHelper.lightmapTexUnit, (float)lX / 1.0F, (float)lY / 1.0F); + tess.startDrawingQuads(); tess.setNormal(0.0F, 1.0F, 0.0F); - tess.setBrightness(240); + //tess.setBrightness(240); tess.setColorRGBA_F(this.particleRed, this.particleGreen, this.particleBlue, this.particleAlpha); tess.addVertexWithUV((double) (f11 - x * f10 - tx * f10), (double) (f12 - y * f10), (double) (f13 - z * f10 - tz * f10), (double) 0, (double) 0); tess.addVertexWithUV((double) (f11 - x * f10 + tx * f10), (double) (f12 + y * f10), (double) (f13 - z * f10 + tz * f10), (double) 0, (double) 1); diff --git a/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderAtlas.java b/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderAtlas.java index 907f5f5c9..85be22898 100644 --- a/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderAtlas.java +++ b/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderAtlas.java @@ -8,8 +8,15 @@ import com.hbm.render.anim.HbmAnimations; import net.minecraft.client.Minecraft; import net.minecraft.item.ItemStack; +import net.minecraft.util.ResourceLocation; public class ItemRenderAtlas extends ItemRenderWeaponBase { + + public ResourceLocation texture; + + public ItemRenderAtlas(ResourceLocation texture) { + this.texture = texture; + } @Override protected float getTurnMagnitude(ItemStack stack) { return ItemGunBaseNT.getIsAiming(stack) ? 2.5F : -0.25F; } @@ -34,7 +41,7 @@ public class ItemRenderAtlas extends ItemRenderWeaponBase { public void renderFirstPerson(ItemStack stack) { ItemGunBaseNT gun = (ItemGunBaseNT) stack.getItem(); - Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.bio_revolver_tex); + Minecraft.getMinecraft().renderEngine.bindTexture(texture); double scale = 0.125D; GL11.glScaled(scale, scale, scale); @@ -124,7 +131,7 @@ public class ItemRenderAtlas extends ItemRenderWeaponBase { GL11.glEnable(GL11.GL_LIGHTING); GL11.glShadeModel(GL11.GL_SMOOTH); - Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.bio_revolver_tex); + Minecraft.getMinecraft().renderEngine.bindTexture(texture); ResourceManager.bio_revolver.renderAll(); GL11.glShadeModel(GL11.GL_FLAT); } diff --git a/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderG3.java b/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderG3.java index 5edb45d39..c647d6f2c 100644 --- a/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderG3.java +++ b/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderG3.java @@ -70,7 +70,7 @@ public class ItemRenderG3 extends ItemRenderWeaponBase { GL11.glRotated(speen[1], 0, 1, 0); GL11.glTranslated(0, 1.75, 0.5); ResourceManager.g3.renderPart("Magazine"); - if(bullet[0] != 1) ResourceManager.g3.renderPart("Bullet"); + if(bullet[0] == 0) ResourceManager.g3.renderPart("Bullet"); GL11.glPopMatrix(); GL11.glPushMatrix(); diff --git a/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderLAG.java b/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderLAG.java index 75e4db426..1a3f532a5 100644 --- a/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderLAG.java +++ b/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderLAG.java @@ -4,6 +4,7 @@ import org.lwjgl.opengl.GL11; import com.hbm.items.weapon.sedna.ItemGunBaseNT; import com.hbm.main.ResourceManager; +import com.hbm.render.anim.HbmAnimations; import net.minecraft.client.Minecraft; import net.minecraft.item.ItemStack; @@ -38,12 +39,56 @@ public class ItemRenderLAG extends ItemRenderWeaponBase { GL11.glScaled(scale, scale, scale); GL11.glRotated(90, 0, 1, 0); + double[] equip = HbmAnimations.getRelevantTransformation("EQUIP"); + //double[] hammer = HbmAnimations.getRelevantTransformation("HAMMER"); + double[] addTrans = HbmAnimations.getRelevantTransformation("ADD_TRANS"); + double[] addRot = HbmAnimations.getRelevantTransformation("ADD_ROT"); + //Animation anim = HbmAnimations.getRelevantAnim(0); + + GL11.glTranslated(4, -4, 0); + GL11.glRotated(-equip[0], 0, 0, 1); + GL11.glTranslated(-4, 4, 0); + + GL11.glTranslated(addTrans[0], addTrans[1], addTrans[2]); + GL11.glRotated(addRot[2], 0, 0, 1); + GL11.glRotated(addRot[1], 0, 1, 0); + GL11.glShadeModel(GL11.GL_SMOOTH); + + GL11.glPushMatrix(); + HbmAnimations.applyRelevantTransformation("Grip"); ResourceManager.mike_hawk.renderPart("Grip"); + + GL11.glPushMatrix(); + HbmAnimations.applyRelevantTransformation("Slide"); + + /*if(anim != null) { + BusAnimationSequence slideSeq = anim.animation.getBus("Hammer"); + if(slideSeq != null) GL11.glTranslated(0, 0.75, 0); + }*/ + ResourceManager.mike_hawk.renderPart("Slide"); + GL11.glPopMatrix(); + + GL11.glPushMatrix(); + GL11.glTranslated(3.125, 0.125, 0); + GL11.glRotated(-25, 0, 0, 1); + GL11.glTranslated(-3.125, -0.125, 0); + HbmAnimations.applyRelevantTransformation("Hammer"); ResourceManager.mike_hawk.renderPart("Hammer"); - ResourceManager.mike_hawk.renderPart("Bullet"); + GL11.glPopMatrix(); + + if(gun.getConfig(stack, 0).getReceivers(stack)[0].getMagazine(stack).getAmount(stack, null) > 0) { + GL11.glPushMatrix(); + HbmAnimations.applyRelevantTransformation("Bullet"); + ResourceManager.mike_hawk.renderPart("Bullet"); + GL11.glPopMatrix(); + } + + GL11.glPushMatrix(); + HbmAnimations.applyRelevantTransformation("Magazine"); ResourceManager.mike_hawk.renderPart("Magazine"); + GL11.glPopMatrix(); double smokeScale = 0.5; @@ -60,6 +105,8 @@ public class ItemRenderLAG extends ItemRenderWeaponBase { GL11.glRotated(90 * gun.shotRand, 1, 0, 0); this.renderMuzzleFlash(gun.lastShot[0], 75, 7.5); GL11.glPopMatrix(); + + GL11.glPopMatrix(); } @Override diff --git a/src/main/java/com/hbm/render/tileentity/RenderAmmoPress.java b/src/main/java/com/hbm/render/tileentity/RenderAmmoPress.java new file mode 100644 index 000000000..3eb232496 --- /dev/null +++ b/src/main/java/com/hbm/render/tileentity/RenderAmmoPress.java @@ -0,0 +1,75 @@ +package com.hbm.render.tileentity; + +import org.lwjgl.opengl.GL11; + +import com.hbm.blocks.BlockDummyable; +import com.hbm.blocks.ModBlocks; +import com.hbm.main.ResourceManager; +import com.hbm.render.item.ItemRenderBase; +import com.hbm.tileentity.machine.TileEntityMachineAmmoPress; + +import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; +import net.minecraft.item.Item; +import net.minecraft.tileentity.TileEntity; +import net.minecraftforge.client.IItemRenderer; + +public class RenderAmmoPress extends TileEntitySpecialRenderer implements IItemRendererProvider { + + @Override + public void renderTileEntityAt(TileEntity tileEntity, double x, double y, double z, float f) { + GL11.glPushMatrix(); + GL11.glTranslated(x + 0.5D, y, z + 0.5D); + GL11.glEnable(GL11.GL_LIGHTING); + GL11.glDisable(GL11.GL_CULL_FACE); + GL11.glShadeModel(GL11.GL_SMOOTH); + + TileEntityMachineAmmoPress tile = (TileEntityMachineAmmoPress) tileEntity; + + switch(tileEntity.getBlockMetadata() - BlockDummyable.offset) { + case 2: GL11.glRotatef(90, 0F, 1F, 0F); break; + case 4: GL11.glRotatef(180, 0F, 1F, 0F); break; + case 3: GL11.glRotatef(270, 0F, 1F, 0F); break; + case 5: GL11.glRotatef(0, 0F, 1F, 0F); break; + } + + float press = tile.prevPress + (tile.press - tile.prevPress) * f; + float lift = tile.prevLift + (tile.lift - tile.prevLift) * f; + + bindTexture(ResourceManager.ammo_press_tex); + ResourceManager.ammo_press.renderPart("Frame"); + + GL11.glPushMatrix(); + GL11.glTranslatef(0, -press * 0.25F, 0); + ResourceManager.ammo_press.renderPart("Press"); + GL11.glPopMatrix(); + + GL11.glPushMatrix(); + GL11.glTranslatef(0, lift * 0.5F - 0.5F, 0); + ResourceManager.ammo_press.renderPart("Shells"); + if(tile.animState == tile.animState.RETRACTING || tile.animState == tile.animState.LOWERING) ResourceManager.ammo_press.renderPart("Bullets"); + GL11.glPopMatrix(); + + GL11.glShadeModel(GL11.GL_FLAT); + GL11.glPopMatrix(); + } + + @Override + public Item getItemForRenderer() { + return Item.getItemFromBlock(ModBlocks.machine_ammo_press); + } + + @Override + public IItemRenderer getRenderer() { + return new ItemRenderBase( ) { + public void renderInventory() { + GL11.glTranslated(0, -2.5, 0); + GL11.glScaled(5, 5, 5); + } + public void renderCommon() { + GL11.glRotatef(90, 0F, 1F, 0F); + bindTexture(ResourceManager.ammo_press_tex); + ResourceManager.ammo_press.renderAll(); + GL11.glShadeModel(GL11.GL_FLAT); + }}; + } +} diff --git a/src/main/java/com/hbm/render/util/RenderInfoSystem.java b/src/main/java/com/hbm/render/util/RenderInfoSystem.java index 136e9d8fe..7f7edde9f 100644 --- a/src/main/java/com/hbm/render/util/RenderInfoSystem.java +++ b/src/main/java/com/hbm/render/util/RenderInfoSystem.java @@ -50,7 +50,7 @@ public class RenderInfoSystem { if(event.type != ElementType.CROSSHAIRS) return; - //this.messages.put(-666, new InfoEntry("Monarch celebratory special edition (balls tuah director's cut)", 666_666)); + this.messages.put(-666, new InfoEntry("Super Cancer World preview special edition director's cut and Knuckles", 666_666)); if(this.messages.isEmpty()) return; diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineAmmoPress.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineAmmoPress.java index ce0c9e3a7..52e8c65a5 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineAmmoPress.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineAmmoPress.java @@ -15,11 +15,24 @@ import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Container; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.AxisAlignedBB; import net.minecraft.world.World; public class TileEntityMachineAmmoPress extends TileEntityMachineBase implements IControlReceiver, IGUIProvider { public int selectedRecipe = -1; + + public AnimationState animState = AnimationState.LIFTING; + + public int playAnimation = 0; + public float prevLift = 0F; + public float lift = 0F; + public float prevPress = 0F; + public float press = 0F; + + public static enum AnimationState { + LIFTING, PRESSING, RETRACTING, LOWERING + } public TileEntityMachineAmmoPress() { super(10); @@ -33,8 +46,40 @@ public class TileEntityMachineAmmoPress extends TileEntityMachineBase implements @Override public void updateEntity() { if(!worldObj.isRemote) { + if(this.playAnimation > 0) this.playAnimation--; this.performRecipe(); this.networkPackNT(25); + } else { + + this.prevLift = this.lift; + this.prevPress = this.press; + + if(playAnimation > 0 || lift > 0) switch(animState) { + case LIFTING: + this.lift += 1F / 40F; + if(this.lift >= 1F) { + this.lift = 1F; + this.animState = AnimationState.PRESSING; + } break; + case PRESSING: + this.press += 1F / 20F; + if(this.press >= 1F) { + this.press = 1F; + this.animState = AnimationState.RETRACTING; + } break; + case RETRACTING: + this.press -= 1F / 20F; + if(this.press <= 0F) { + this.press = 0F; + this.animState = AnimationState.LOWERING; + } break; + case LOWERING: + this.lift -= 1F / 40F; + if(this.lift <= 0F) { + this.lift = 0F; + this.animState = AnimationState.LIFTING; + } break; + } } } @@ -44,12 +89,14 @@ public class TileEntityMachineAmmoPress extends TileEntityMachineBase implements @Override public void setInventorySlotContents(int slot, ItemStack stack) { super.setInventorySlotContents(slot, stack); + /*if(this.worldObj.isRemote) return; + //while this allowed one shift click to process absolutely everything, it also caused a fuckton of issues if(!recipeLock) { recipeLock = true; if(slot < 10) this.performRecipe(); recipeLock = false; - } + }*/ } public void performRecipe() { @@ -93,6 +140,8 @@ public class TileEntityMachineAmmoPress extends TileEntityMachineBase implements } else { slots[9].stackSize += recipe.output.stackSize; } + + this.playAnimation = 40; } public int[] access = new int[] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }; @@ -120,12 +169,26 @@ public class TileEntityMachineAmmoPress extends TileEntityMachineBase implements @Override public void serialize(ByteBuf buf) { super.serialize(buf); buf.writeInt(this.selectedRecipe); + buf.writeInt(this.playAnimation); } @Override public void deserialize(ByteBuf buf) { super.deserialize(buf); this.selectedRecipe = buf.readInt(); + this.playAnimation = buf.readInt(); + } + + @Override + public void readFromNBT(NBTTagCompound nbt) { + super.readFromNBT(nbt); + this.selectedRecipe = nbt.getInteger("recipe"); + } + + @Override + public void writeToNBT(NBTTagCompound nbt) { + super.writeToNBT(nbt); + nbt.setInteger("recipe", selectedRecipe); } @Override @@ -140,6 +203,31 @@ public class TileEntityMachineAmmoPress extends TileEntityMachineBase implements else this.selectedRecipe = newRecipe; this.markDirty(); } + + AxisAlignedBB bb = null; + + @Override + public AxisAlignedBB getRenderBoundingBox() { + + if(bb == null) { + bb = AxisAlignedBB.getBoundingBox( + xCoord - 1, + yCoord, + zCoord - 1, + xCoord + 2, + yCoord + 2, + zCoord + 2 + ); + } + + return bb; + } + + @Override + @SideOnly(Side.CLIENT) + public double getMaxRenderDistanceSquared() { + return 65536.0D; + } @Override public Container provideContainer(int ID, EntityPlayer player, World world, int x, int y, int z) { return new ContainerMachineAmmoPress(player.inventory, this); } @Override @SideOnly(Side.CLIENT) public Object provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GUIMachineAmmoPress(player.inventory, this); } diff --git a/src/main/resources/assets/hbm/lang/de_DE.lang b/src/main/resources/assets/hbm/lang/de_DE.lang index f9263ab56..b2e5a8cd3 100644 --- a/src/main/resources/assets/hbm/lang/de_DE.lang +++ b/src/main/resources/assets/hbm/lang/de_DE.lang @@ -351,6 +351,7 @@ container.launchPad=Startrampe container.launchPadRusted=Startrampe container.launchTable=Große Startrampe container.leadBox=Sicherheitsbehälter +container.machineAmmoPress=Munitionspresse container.machineArcWelder=Lichtbogenschweißer container.machineArcFurnaceLarge=Lichtbogenofen container.machineBoiler=Ölwärmer @@ -1155,6 +1156,9 @@ item.ammo_secret.folly_nuke.name=Silberne Kugel, Atomar item.ammo_secret.folly_sm.name=Silberne Kugel item.ammo_secret.g12_equestrian.name=Kaliber 12 Gleisnägel item.ammo_secret.m44_equestrian.name=.44 Magnum Schädelsprenger +item.ammo_standard.b75.name=.75 Bolzen +item.ammo_standard.b75_exp.name=.75 Bolzen (Explosiv) +item.ammo_standard.b75_inc.name=.75 Bolzen (Brand) item.ammo_standard.bmg50_ap.name=.50 BMG Patrone (Panzerbrechend) item.ammo_standard.bmg50_du.name=.50 BMG Patrone (Urangeschoss) item.ammo_standard.bmg50_fmj.name=.50 BMG Patrone (Vollmantelgeschoss) @@ -1163,6 +1167,8 @@ item.ammo_standard.bmg50_sp.name=.50 BMG Patrone (Teilmantelgeschoss) item.ammo_standard.capacitor.name=Kondensator item.ammo_standard.capacitor_ir.name=Capacitor (niedrige Wellenlänge) item.ammo_standard.capacitor_overcharge.name=Kondensator (Überladung) +item.ammo_standard.coil_ferrouranium.name=Ferrourankugel +item.ammo_standard.coil_tungsten.name=Wolframkugel item.ammo_standard.flame_balefire.name=Flammenwerferbrennstoff, Balefire item.ammo_standard.flame_diesel.name=Flammenwerferbrennstoff, Diesel item.ammo_standard.flame_gas.name=Flammenwerferbrennstoff, Gas @@ -1228,6 +1234,7 @@ item.ammo_standard.stone.name=Kugel und Pulver item.ammo_standard.stone_ap.name=Feuerstein und Pulver item.ammo_standard.stone_iron.name=Eisenkugel und Pulver item.ammo_standard.stone_shot.name=Schrot und Pulver +item.ammo_standard.tau_uranium.name=Erschöpfte Uran-235-Kiste item.ammo_stinger_rocket.name=Stinger-Rakete item.ammo_stinger_rocket_he.name=Stinger-Rakete (HE) item.ammo_stinger_rocket_incendiary.name=Stinger-Rakete (Brand) @@ -2209,6 +2216,7 @@ item.gun_lever_action_sonata.name=Verkehrter Mare's Leg item.gun_lever_action_sonata_2.name=§cSonatas Mikrophon§r item.gun_liberator.name=Liberator item.gun_light_revolver.name=Kipplaufrevolver +item.gun_light_revolver_atlas.name=Atlas item.gun_light_revolver_dani.name=Tag und Nacht item.gun_lunatic_marksman.name=Lunatic-Scharfschützengewehr item.gun_m2.name=üsMG @@ -4389,6 +4397,7 @@ tile.launch_table.name=Große Startrampe tile.leaves_layer.name=Totes Laub tile.lox_barrel.name=LOX-Fass tile.machine_amgen.name=Umgebungsstrahlungs-Generator +tile.machine_ammo_press.name=Munitionspresse tile.machine_arc_furnace.name=Electrischer Lichtbogenofen tile.machine_arc_furnace_off.name=Lichtbogenofen tile.machine_arc_furnace_on.name=Lichtbogenofen diff --git a/src/main/resources/assets/hbm/lang/en_US.lang b/src/main/resources/assets/hbm/lang/en_US.lang index 986a89820..c2b16bdaa 100644 --- a/src/main/resources/assets/hbm/lang/en_US.lang +++ b/src/main/resources/assets/hbm/lang/en_US.lang @@ -753,6 +753,7 @@ container.launchPad=Launch Pad container.launchPadRusted=Launch Pad container.launchTable=Large Launch Pad container.leadBox=Containment Box +container.machineAmmoPress=Ammo Press container.machineArcWelder=Arc Welder container.machineArcFurnaceLarge=Arc Furnace container.machineBoiler=Oil Heater @@ -1878,6 +1879,9 @@ item.ammo_secret.folly_nuke.name=Silver Bullet, Nuclear item.ammo_secret.folly_sm.name=Silver Bullet item.ammo_secret.g12_equestrian.name=12 Gauge Railway Spike Shot item.ammo_secret.m44_equestrian.name=.44 Magnum Head-Exploder +item.ammo_standard.b75.name=.75 Bolt +item.ammo_standard.b75_exp.name=.75 Bolt (Explosive) +item.ammo_standard.b75_inc.name=.75 Bolt (Incendiary) item.ammo_standard.bmg50_ap.name=.50 BMG Round (Armor Piercing) item.ammo_standard.bmg50_du.name=.50 BMG Round (Depleted Uranium) item.ammo_standard.bmg50_fmj.name=.50 BMG Round (Full Metal Jacket) @@ -1886,6 +1890,8 @@ item.ammo_standard.bmg50_sp.name=.50 BMG Round (Soft Point) item.ammo_standard.capacitor.name=Capacitor item.ammo_standard.capacitor_ir.name=Capacitor (Low Wavelength) item.ammo_standard.capacitor_overcharge.name=Capacitor (Overcharge) +item.ammo_standard.coil_ferrouranium.name=Coilgun Ferrouranium Ball +item.ammo_standard.coil_tungsten.name=Coilgun Tungsten Ball item.ammo_standard.flame_balefire.name=Flamer Fuel, Balefire item.ammo_standard.flame_diesel.name=Flamer Fuel, Diesel item.ammo_standard.flame_gas.name=Flamer Fuel, Gas @@ -1951,6 +1957,7 @@ item.ammo_standard.stone.name=Ball and Powder item.ammo_standard.stone_ap.name=Flint and Powder item.ammo_standard.stone_iron.name=Iron Ball and Powder item.ammo_standard.stone_shot.name=Shot and Powder +item.ammo_standard.tau_uranium.name=Depleted Uranium-235 Box item.ammo_stinger_rocket.name=Stinger Rocket item.ammo_stinger_rocket_he.name=Stinger Rocket (HE) item.ammo_stinger_rocket_incendiary.name=Stinger Rocket (Incendiary) @@ -3018,6 +3025,7 @@ item.gun_lever_action_sonata.name=Flipped Mare's Leg item.gun_lever_action_sonata_2.name=§cSonata's Microphone§r item.gun_liberator.name=Liberator item.gun_light_revolver.name=Break-Action Revolver +item.gun_light_revolver_atlas.name=Atlas item.gun_light_revolver_dani.name=Day And Night item.gun_lunatic_marksman.name=Lunatic Sniper Rifle item.gun_m2.name=Ma Deuce @@ -5485,6 +5493,7 @@ tile.launch_table.name=Large Launch Pad tile.leaves_layer.name=Fallen Leaves tile.lox_barrel.name=LOX Barrel tile.machine_amgen.name=Ambience Radiation Generator +tile.machine_ammo_press.name=Ammo Press tile.machine_arc_furnace.name=Electric Arc Furnace tile.machine_arc_furnace_off.name=Arc Furnace tile.machine_arc_furnace_on.name=Arc Furnace diff --git a/src/main/resources/assets/hbm/models/machines/ammo_press.obj b/src/main/resources/assets/hbm/models/machines/ammo_press.obj new file mode 100644 index 000000000..b3a868e84 --- /dev/null +++ b/src/main/resources/assets/hbm/models/machines/ammo_press.obj @@ -0,0 +1,2582 @@ +# Blender v2.79 (sub 0) OBJ File: 'ammo_press.blend' +# www.blender.org +o Press +v -0.250000 1.875000 -0.750000 +v -0.250000 1.875000 0.750000 +v 0.250000 1.875000 0.750000 +v 0.250000 1.875000 -0.750000 +v -0.250000 1.375000 -0.750000 +v -0.250000 1.375000 0.750000 +v 0.250000 1.375000 0.750000 +v 0.250000 1.375000 -0.750000 +vt 0.508772 0.857143 +vt 0.719298 0.761905 +vt 0.719298 0.857143 +vt 0.719298 0.666667 +vt 0.508772 0.761905 +vt 0.508772 0.666667 +vt 0.719298 0.571429 +vt 0.508772 0.571429 +vt 0.789474 0.761905 +vt 0.789474 0.666667 +vt 0.438596 0.666667 +vt 0.438596 0.761905 +vn 1.0000 0.0000 0.0000 +vn 0.0000 -1.0000 0.0000 +vn -1.0000 0.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +vn 0.0000 0.0000 1.0000 +s off +f 3/1/1 8/2/1 4/3/1 +f 5/4/2 7/5/2 6/6/2 +f 1/7/3 6/6/3 2/8/3 +f 4/9/4 5/4/4 1/10/4 +f 2/11/5 7/5/5 3/12/5 +f 3/1/1 7/5/1 8/2/1 +f 5/4/2 8/2/2 7/5/2 +f 1/7/3 5/4/3 6/6/3 +f 4/9/4 8/2/4 5/4/4 +f 2/11/5 6/6/5 7/5/5 +o Shells +v 0.250000 1.000000 -0.750000 +v 0.250000 1.000000 0.750000 +v -0.250000 1.000000 0.750000 +v -0.250000 1.000000 -0.750000 +v 0.125000 1.000000 0.406250 +v 0.102903 1.000000 0.415403 +v 0.093750 1.000000 0.437500 +v 0.102903 1.000000 0.459597 +v 0.125000 1.000000 0.468750 +v 0.147097 1.000000 0.459597 +v 0.156250 1.000000 0.437500 +v 0.147097 1.000000 0.415403 +v 0.125000 1.125000 0.406250 +v 0.102903 1.125000 0.415403 +v 0.093750 1.125000 0.437500 +v 0.102903 1.125000 0.459597 +v 0.125000 1.125000 0.468750 +v 0.147097 1.125000 0.459597 +v 0.156250 1.125000 0.437500 +v 0.147097 1.125000 0.415403 +v 0.156250 1.000000 -0.468750 +v 0.156250 1.000000 0.468750 +v 0.156250 1.062500 -0.468750 +v 0.156250 1.062500 0.468750 +v 0.187500 1.000000 -0.468750 +v 0.187500 1.000000 0.468750 +v 0.187500 1.062500 -0.468750 +v 0.187500 1.062500 0.468750 +v 0.062500 1.000000 -0.468750 +v 0.062500 1.000000 0.468750 +v 0.062500 1.062500 -0.468750 +v 0.062500 1.062500 0.468750 +v 0.093750 1.000000 -0.468750 +v 0.093750 1.000000 0.468750 +v 0.093750 1.062500 -0.468750 +v 0.093750 1.062500 0.468750 +v -0.093750 1.000000 -0.468750 +v -0.093750 1.000000 0.468750 +v -0.093750 1.062500 -0.468750 +v -0.093750 1.062500 0.468750 +v -0.062500 1.000000 -0.468750 +v -0.062500 1.000000 0.468750 +v -0.062500 1.062500 -0.468750 +v -0.062500 1.062500 0.468750 +v -0.187500 1.000000 -0.468750 +v -0.187500 1.000000 0.468750 +v -0.187500 1.062500 -0.468750 +v -0.187500 1.062500 0.468750 +v -0.156250 1.000000 -0.468750 +v -0.156250 1.000000 0.468750 +v -0.156250 1.062500 -0.468750 +v -0.156250 1.062500 0.468750 +v -0.125000 1.000000 0.406250 +v -0.147097 1.000000 0.415403 +v -0.156250 1.000000 0.437500 +v -0.147097 1.000000 0.459597 +v -0.125000 1.000000 0.468750 +v -0.102903 1.000000 0.459597 +v -0.093750 1.000000 0.437500 +v -0.102903 1.000000 0.415403 +v -0.125000 1.125000 0.406250 +v -0.147097 1.125000 0.415403 +v -0.156250 1.125000 0.437500 +v -0.147097 1.125000 0.459597 +v -0.125000 1.125000 0.468750 +v -0.102903 1.125000 0.459597 +v -0.093750 1.125000 0.437500 +v -0.102903 1.125000 0.415403 +v 0.125000 1.000000 0.281250 +v 0.102903 1.000000 0.290403 +v 0.093750 1.000000 0.312500 +v 0.102903 1.000000 0.334597 +v 0.125000 1.000000 0.343750 +v 0.147097 1.000000 0.334597 +v 0.156250 1.000000 0.312500 +v 0.147097 1.000000 0.290403 +v 0.125000 1.125000 0.281250 +v 0.102903 1.125000 0.290403 +v 0.093750 1.125000 0.312500 +v 0.102903 1.125000 0.334597 +v 0.125000 1.125000 0.343750 +v 0.147097 1.125000 0.334597 +v 0.156250 1.125000 0.312500 +v 0.147097 1.125000 0.290403 +v -0.125000 1.000000 0.281250 +v -0.147097 1.000000 0.290403 +v -0.156250 1.000000 0.312500 +v -0.147097 1.000000 0.334597 +v -0.125000 1.000000 0.343750 +v -0.102903 1.000000 0.334597 +v -0.093750 1.000000 0.312500 +v -0.102903 1.000000 0.290403 +v -0.125000 1.125000 0.281250 +v -0.147097 1.125000 0.290403 +v -0.156250 1.125000 0.312500 +v -0.147097 1.125000 0.334597 +v -0.125000 1.125000 0.343750 +v -0.102903 1.125000 0.334597 +v -0.093750 1.125000 0.312500 +v -0.102903 1.125000 0.290403 +v 0.125000 1.000000 0.156250 +v 0.102903 1.000000 0.165403 +v 0.093750 1.000000 0.187500 +v 0.102903 1.000000 0.209597 +v 0.125000 1.000000 0.218750 +v 0.147097 1.000000 0.209597 +v 0.156250 1.000000 0.187500 +v 0.147097 1.000000 0.165403 +v 0.125000 1.125000 0.156250 +v 0.102903 1.125000 0.165403 +v 0.093750 1.125000 0.187500 +v 0.102903 1.125000 0.209597 +v 0.125000 1.125000 0.218750 +v 0.147097 1.125000 0.209597 +v 0.156250 1.125000 0.187500 +v 0.147097 1.125000 0.165403 +v -0.125000 1.000000 0.156250 +v -0.147097 1.000000 0.165403 +v -0.156250 1.000000 0.187500 +v -0.147097 1.000000 0.209597 +v -0.125000 1.000000 0.218750 +v -0.102903 1.000000 0.209597 +v -0.093750 1.000000 0.187500 +v -0.102903 1.000000 0.165403 +v -0.125000 1.125000 0.156250 +v -0.147097 1.125000 0.165403 +v -0.156250 1.125000 0.187500 +v -0.147097 1.125000 0.209597 +v -0.125000 1.125000 0.218750 +v -0.102903 1.125000 0.209597 +v -0.093750 1.125000 0.187500 +v -0.102903 1.125000 0.165403 +v 0.125000 1.000000 0.031250 +v 0.102903 1.000000 0.040403 +v 0.093750 1.000000 0.062500 +v 0.102903 1.000000 0.084597 +v 0.125000 1.000000 0.093750 +v 0.147097 1.000000 0.084597 +v 0.156250 1.000000 0.062500 +v 0.147097 1.000000 0.040403 +v 0.125000 1.125000 0.031250 +v 0.102903 1.125000 0.040403 +v 0.093750 1.125000 0.062500 +v 0.102903 1.125000 0.084597 +v 0.125000 1.125000 0.093750 +v 0.147097 1.125000 0.084597 +v 0.156250 1.125000 0.062500 +v 0.147097 1.125000 0.040403 +v -0.125000 1.000000 0.031250 +v -0.147097 1.000000 0.040403 +v -0.156250 1.000000 0.062500 +v -0.147097 1.000000 0.084597 +v -0.125000 1.000000 0.093750 +v -0.102903 1.000000 0.084597 +v -0.093750 1.000000 0.062500 +v -0.102903 1.000000 0.040403 +v -0.125000 1.125000 0.031250 +v -0.147097 1.125000 0.040403 +v -0.156250 1.125000 0.062500 +v -0.147097 1.125000 0.084597 +v -0.125000 1.125000 0.093750 +v -0.102903 1.125000 0.084597 +v -0.093750 1.125000 0.062500 +v -0.102903 1.125000 0.040403 +v 0.125000 1.000000 -0.093750 +v 0.102903 1.000000 -0.084597 +v 0.093750 1.000000 -0.062500 +v 0.102903 1.000000 -0.040403 +v 0.125000 1.000000 -0.031250 +v 0.147097 1.000000 -0.040403 +v 0.156250 1.000000 -0.062500 +v 0.147097 1.000000 -0.084597 +v 0.125000 1.125000 -0.093750 +v 0.102903 1.125000 -0.084597 +v 0.093750 1.125000 -0.062500 +v 0.102903 1.125000 -0.040403 +v 0.125000 1.125000 -0.031250 +v 0.147097 1.125000 -0.040403 +v 0.156250 1.125000 -0.062500 +v 0.147097 1.125000 -0.084597 +v -0.125000 1.000000 -0.093750 +v -0.147097 1.000000 -0.084597 +v -0.156250 1.000000 -0.062500 +v -0.147097 1.000000 -0.040403 +v -0.125000 1.000000 -0.031250 +v -0.102903 1.000000 -0.040403 +v -0.093750 1.000000 -0.062500 +v -0.102903 1.000000 -0.084597 +v -0.125000 1.125000 -0.093750 +v -0.147097 1.125000 -0.084597 +v -0.156250 1.125000 -0.062500 +v -0.147097 1.125000 -0.040403 +v -0.125000 1.125000 -0.031250 +v -0.102903 1.125000 -0.040403 +v -0.093750 1.125000 -0.062500 +v -0.102903 1.125000 -0.084597 +v 0.125000 1.000000 -0.218750 +v 0.102903 1.000000 -0.209597 +v 0.093750 1.000000 -0.187500 +v 0.102903 1.000000 -0.165403 +v 0.125000 1.000000 -0.156250 +v 0.147097 1.000000 -0.165403 +v 0.156250 1.000000 -0.187500 +v 0.147097 1.000000 -0.209597 +v 0.125000 1.125000 -0.218750 +v 0.102903 1.125000 -0.209597 +v 0.093750 1.125000 -0.187500 +v 0.102903 1.125000 -0.165403 +v 0.125000 1.125000 -0.156250 +v 0.147097 1.125000 -0.165403 +v 0.156250 1.125000 -0.187500 +v 0.147097 1.125000 -0.209597 +v -0.125000 1.000000 -0.218750 +v -0.147097 1.000000 -0.209597 +v -0.156250 1.000000 -0.187500 +v -0.147097 1.000000 -0.165403 +v -0.125000 1.000000 -0.156250 +v -0.102903 1.000000 -0.165403 +v -0.093750 1.000000 -0.187500 +v -0.102903 1.000000 -0.209597 +v -0.125000 1.125000 -0.218750 +v -0.147097 1.125000 -0.209597 +v -0.156250 1.125000 -0.187500 +v -0.147097 1.125000 -0.165403 +v -0.125000 1.125000 -0.156250 +v -0.102903 1.125000 -0.165403 +v -0.093750 1.125000 -0.187500 +v -0.102903 1.125000 -0.209597 +v 0.125000 1.000000 -0.343750 +v 0.102903 1.000000 -0.334597 +v 0.093750 1.000000 -0.312500 +v 0.102903 1.000000 -0.290403 +v 0.125000 1.000000 -0.281250 +v 0.147097 1.000000 -0.290403 +v 0.156250 1.000000 -0.312500 +v 0.147097 1.000000 -0.334597 +v 0.125000 1.125000 -0.343750 +v 0.102903 1.125000 -0.334597 +v 0.093750 1.125000 -0.312500 +v 0.102903 1.125000 -0.290403 +v 0.125000 1.125000 -0.281250 +v 0.147097 1.125000 -0.290403 +v 0.156250 1.125000 -0.312500 +v 0.147097 1.125000 -0.334597 +v -0.125000 1.000000 -0.343750 +v -0.147097 1.000000 -0.334597 +v -0.156250 1.000000 -0.312500 +v -0.147097 1.000000 -0.290403 +v -0.125000 1.000000 -0.281250 +v -0.102903 1.000000 -0.290403 +v -0.093750 1.000000 -0.312500 +v -0.102903 1.000000 -0.334597 +v -0.125000 1.125000 -0.343750 +v -0.147097 1.125000 -0.334597 +v -0.156250 1.125000 -0.312500 +v -0.147097 1.125000 -0.290403 +v -0.125000 1.125000 -0.281250 +v -0.102903 1.125000 -0.290403 +v -0.093750 1.125000 -0.312500 +v -0.102903 1.125000 -0.334597 +v 0.125000 1.000000 -0.468750 +v 0.102903 1.000000 -0.459597 +v 0.093750 1.000000 -0.437500 +v 0.102903 1.000000 -0.415403 +v 0.125000 1.000000 -0.406250 +v 0.147097 1.000000 -0.415403 +v 0.156250 1.000000 -0.437500 +v 0.147097 1.000000 -0.459597 +v 0.125000 1.125000 -0.468750 +v 0.102903 1.125000 -0.459597 +v 0.093750 1.125000 -0.437500 +v 0.102903 1.125000 -0.415403 +v 0.125000 1.125000 -0.406250 +v 0.147097 1.125000 -0.415403 +v 0.156250 1.125000 -0.437500 +v 0.147097 1.125000 -0.459597 +v -0.125000 1.000000 -0.468750 +v -0.147097 1.000000 -0.459597 +v -0.156250 1.000000 -0.437500 +v -0.147097 1.000000 -0.415403 +v -0.125000 1.000000 -0.406250 +v -0.102903 1.000000 -0.415403 +v -0.093750 1.000000 -0.437500 +v -0.102903 1.000000 -0.459597 +v -0.125000 1.125000 -0.468750 +v -0.147097 1.125000 -0.459597 +v -0.156250 1.125000 -0.437500 +v -0.147097 1.125000 -0.415403 +v -0.125000 1.125000 -0.406250 +v -0.102903 1.125000 -0.415403 +v -0.093750 1.125000 -0.437500 +v -0.102903 1.125000 -0.459597 +vt 0.333333 0.833333 +vt 0.122807 0.928571 +vt 0.122807 0.833333 +vt 0.868620 0.630952 +vt 0.877193 0.619317 +vt 0.885766 0.630952 +vt 0.728070 0.607143 +vt 0.859649 0.595238 +vt 0.859649 0.607143 +vt 0.868421 0.583333 +vt 0.868421 0.595238 +vt 0.719298 0.595238 +vt 0.728070 0.583333 +vt 0.728070 0.595238 +vt 0.859649 0.583333 +vt 0.859649 0.571429 +vt 0.728070 0.607143 +vt 0.859649 0.595238 +vt 0.859649 0.607143 +vt 0.868421 0.583333 +vt 0.868421 0.595238 +vt 0.719298 0.595238 +vt 0.728070 0.583333 +vt 0.728070 0.595238 +vt 0.859649 0.583333 +vt 0.859649 0.571429 +vt 0.728070 0.607143 +vt 0.859649 0.595238 +vt 0.859649 0.607143 +vt 0.868421 0.583333 +vt 0.868421 0.595238 +vt 0.719298 0.595238 +vt 0.728070 0.583333 +vt 0.728070 0.595238 +vt 0.859649 0.583333 +vt 0.859649 0.571429 +vt 0.728070 0.607143 +vt 0.859649 0.595238 +vt 0.859649 0.607143 +vt 0.868421 0.583333 +vt 0.868421 0.595238 +vt 0.719298 0.595238 +vt 0.728070 0.583333 +vt 0.728070 0.595238 +vt 0.859649 0.583333 +vt 0.859649 0.571429 +vt 0.868620 0.630952 +vt 0.877193 0.619317 +vt 0.885766 0.630952 +vt 0.868620 0.630952 +vt 0.877193 0.619317 +vt 0.885766 0.630952 +vt 0.868620 0.630952 +vt 0.877193 0.619317 +vt 0.885766 0.630952 +vt 0.868620 0.630952 +vt 0.877193 0.619317 +vt 0.885766 0.630952 +vt 0.868620 0.630952 +vt 0.877193 0.619317 +vt 0.885766 0.630952 +vt 0.868620 0.630952 +vt 0.877193 0.619317 +vt 0.885766 0.630952 +vt 0.868620 0.630952 +vt 0.877193 0.619317 +vt 0.885766 0.630952 +vt 0.868620 0.630952 +vt 0.877193 0.619317 +vt 0.885766 0.630952 +vt 0.868620 0.630952 +vt 0.877193 0.619317 +vt 0.885766 0.630952 +vt 0.868620 0.630952 +vt 0.877193 0.619317 +vt 0.885766 0.630952 +vt 0.868620 0.630952 +vt 0.877193 0.619317 +vt 0.885766 0.630952 +vt 0.868620 0.630952 +vt 0.877193 0.619317 +vt 0.885766 0.630952 +vt 0.868620 0.630952 +vt 0.877193 0.619317 +vt 0.885766 0.630952 +vt 0.868620 0.630952 +vt 0.877193 0.619317 +vt 0.885766 0.630952 +vt 0.868620 0.630952 +vt 0.877193 0.619317 +vt 0.885766 0.630952 +vt 0.333333 0.928571 +vt 0.883255 0.639180 +vt 0.877193 0.642588 +vt 0.871131 0.639180 +vt 0.871131 0.622725 +vt 0.883255 0.622725 +vt 0.719298 0.583333 +vt 0.728070 0.571429 +vt 0.719298 0.583333 +vt 0.728070 0.571429 +vt 0.719298 0.583333 +vt 0.728070 0.571429 +vt 0.719298 0.583333 +vt 0.728070 0.571429 +vt 0.883255 0.639180 +vt 0.877193 0.642588 +vt 0.871131 0.639180 +vt 0.871131 0.622725 +vt 0.883255 0.622725 +vt 0.883255 0.639180 +vt 0.877193 0.642588 +vt 0.871131 0.639180 +vt 0.871131 0.622725 +vt 0.883255 0.622725 +vt 0.883255 0.639180 +vt 0.877193 0.642588 +vt 0.871131 0.639180 +vt 0.871131 0.622725 +vt 0.883255 0.622725 +vt 0.883255 0.639180 +vt 0.877193 0.642588 +vt 0.871131 0.639180 +vt 0.871131 0.622725 +vt 0.883255 0.622725 +vt 0.883255 0.639180 +vt 0.877193 0.642588 +vt 0.871131 0.639180 +vt 0.871131 0.622725 +vt 0.883255 0.622725 +vt 0.883255 0.639180 +vt 0.877193 0.642588 +vt 0.871131 0.639180 +vt 0.871131 0.622725 +vt 0.883255 0.622725 +vt 0.883255 0.639180 +vt 0.877193 0.642588 +vt 0.871131 0.639180 +vt 0.871131 0.622725 +vt 0.883255 0.622725 +vt 0.883255 0.639180 +vt 0.877193 0.642588 +vt 0.871131 0.639180 +vt 0.871131 0.622725 +vt 0.883255 0.622725 +vt 0.883255 0.639180 +vt 0.877193 0.642588 +vt 0.871131 0.639180 +vt 0.871131 0.622725 +vt 0.883255 0.622725 +vt 0.883255 0.639180 +vt 0.877193 0.642588 +vt 0.871131 0.639180 +vt 0.871131 0.622725 +vt 0.883255 0.622725 +vt 0.883255 0.639180 +vt 0.877193 0.642588 +vt 0.871131 0.639180 +vt 0.871131 0.622725 +vt 0.883255 0.622725 +vt 0.883255 0.639180 +vt 0.877193 0.642588 +vt 0.871131 0.639180 +vt 0.871131 0.622725 +vt 0.883255 0.622725 +vt 0.883255 0.639180 +vt 0.877193 0.642588 +vt 0.871131 0.639180 +vt 0.871131 0.622725 +vt 0.883255 0.622725 +vt 0.883255 0.639180 +vt 0.877193 0.642588 +vt 0.871131 0.639180 +vt 0.871131 0.622725 +vt 0.883255 0.622725 +vt 0.883255 0.639180 +vt 0.877193 0.642588 +vt 0.871131 0.639180 +vt 0.871131 0.622725 +vt 0.883255 0.622725 +vt 0.894737 0.571429 +vt 0.885965 0.619048 +vt 0.885965 0.571429 +vt 0.877193 0.571429 +vt 0.868421 0.619048 +vt 0.868421 0.571429 +vt 0.929825 0.571429 +vt 0.921053 0.619048 +vt 0.921053 0.571429 +vt 0.912281 0.571429 +vt 0.903509 0.619048 +vt 0.903509 0.571429 +vt 0.894737 0.619048 +vt 0.877193 0.619048 +vt 0.938596 0.571429 +vt 0.929825 0.619048 +vt 0.912281 0.619048 +vt 0.894737 0.571429 +vt 0.885965 0.619048 +vt 0.885965 0.571429 +vt 0.877193 0.571429 +vt 0.868421 0.619048 +vt 0.868421 0.571429 +vt 0.929825 0.571429 +vt 0.921053 0.619048 +vt 0.921053 0.571429 +vt 0.912281 0.571429 +vt 0.903509 0.619048 +vt 0.903509 0.571429 +vt 0.894737 0.619048 +vt 0.877193 0.619048 +vt 0.938596 0.571429 +vt 0.929825 0.619048 +vt 0.912281 0.619048 +vt 0.894737 0.571429 +vt 0.885965 0.619048 +vt 0.885965 0.571429 +vt 0.877193 0.571429 +vt 0.868421 0.619048 +vt 0.868421 0.571429 +vt 0.929825 0.571429 +vt 0.921053 0.619048 +vt 0.921053 0.571429 +vt 0.912281 0.571429 +vt 0.903509 0.619048 +vt 0.903509 0.571429 +vt 0.894737 0.619048 +vt 0.877193 0.619048 +vt 0.938596 0.571429 +vt 0.929825 0.619048 +vt 0.912281 0.619048 +vt 0.894737 0.571429 +vt 0.885965 0.619048 +vt 0.885965 0.571429 +vt 0.877193 0.571429 +vt 0.868421 0.619048 +vt 0.868421 0.571429 +vt 0.929825 0.571429 +vt 0.921053 0.619048 +vt 0.921053 0.571429 +vt 0.912281 0.571429 +vt 0.903509 0.619048 +vt 0.903509 0.571429 +vt 0.894737 0.619048 +vt 0.877193 0.619048 +vt 0.938596 0.571429 +vt 0.929825 0.619048 +vt 0.912281 0.619048 +vt 0.894737 0.571429 +vt 0.885965 0.619048 +vt 0.885965 0.571429 +vt 0.877193 0.571429 +vt 0.868421 0.619048 +vt 0.868421 0.571429 +vt 0.929825 0.571429 +vt 0.921053 0.619048 +vt 0.921053 0.571429 +vt 0.912281 0.571429 +vt 0.903509 0.619048 +vt 0.903509 0.571429 +vt 0.894737 0.619048 +vt 0.877193 0.619048 +vt 0.938596 0.571429 +vt 0.929825 0.619048 +vt 0.912281 0.619048 +vt 0.894737 0.571429 +vt 0.885965 0.619048 +vt 0.885965 0.571429 +vt 0.877193 0.571429 +vt 0.868421 0.619048 +vt 0.868421 0.571429 +vt 0.929825 0.571429 +vt 0.921053 0.619048 +vt 0.921053 0.571429 +vt 0.912281 0.571429 +vt 0.903509 0.619048 +vt 0.903509 0.571429 +vt 0.894737 0.619048 +vt 0.877193 0.619048 +vt 0.938596 0.571429 +vt 0.929825 0.619048 +vt 0.912281 0.619048 +vt 0.894737 0.571429 +vt 0.885965 0.619048 +vt 0.885965 0.571429 +vt 0.877193 0.571429 +vt 0.868421 0.619048 +vt 0.868421 0.571429 +vt 0.929825 0.571429 +vt 0.921053 0.619048 +vt 0.921053 0.571429 +vt 0.912281 0.571429 +vt 0.903509 0.619048 +vt 0.903509 0.571429 +vt 0.894737 0.619048 +vt 0.877193 0.619048 +vt 0.938596 0.571429 +vt 0.929825 0.619048 +vt 0.912281 0.619048 +vt 0.894737 0.571429 +vt 0.885965 0.619048 +vt 0.885965 0.571429 +vt 0.877193 0.571429 +vt 0.868421 0.619048 +vt 0.868421 0.571429 +vt 0.929825 0.571429 +vt 0.921053 0.619048 +vt 0.921053 0.571429 +vt 0.912281 0.571429 +vt 0.903509 0.619048 +vt 0.903509 0.571429 +vt 0.894737 0.619048 +vt 0.877193 0.619048 +vt 0.938596 0.571429 +vt 0.929825 0.619048 +vt 0.912281 0.619048 +vt 0.894737 0.571429 +vt 0.885965 0.619048 +vt 0.885965 0.571429 +vt 0.877193 0.571429 +vt 0.868421 0.619048 +vt 0.868421 0.571429 +vt 0.929825 0.571429 +vt 0.921053 0.619048 +vt 0.921053 0.571429 +vt 0.912281 0.571429 +vt 0.903509 0.619048 +vt 0.903509 0.571429 +vt 0.894737 0.619048 +vt 0.877193 0.619048 +vt 0.938596 0.571429 +vt 0.929825 0.619048 +vt 0.912281 0.619048 +vt 0.894737 0.571429 +vt 0.885965 0.619048 +vt 0.885965 0.571429 +vt 0.877193 0.571429 +vt 0.868421 0.619048 +vt 0.868421 0.571429 +vt 0.929825 0.571429 +vt 0.921053 0.619048 +vt 0.921053 0.571429 +vt 0.912281 0.571429 +vt 0.903509 0.619048 +vt 0.903509 0.571429 +vt 0.894737 0.619048 +vt 0.877193 0.619048 +vt 0.938596 0.571429 +vt 0.929825 0.619048 +vt 0.912281 0.619048 +vt 0.894737 0.571429 +vt 0.885965 0.619048 +vt 0.885965 0.571429 +vt 0.877193 0.571429 +vt 0.868421 0.619048 +vt 0.868421 0.571429 +vt 0.929825 0.571429 +vt 0.921053 0.619048 +vt 0.921053 0.571429 +vt 0.912281 0.571429 +vt 0.903509 0.619048 +vt 0.903509 0.571429 +vt 0.894737 0.619048 +vt 0.877193 0.619048 +vt 0.938596 0.571429 +vt 0.929825 0.619048 +vt 0.912281 0.619048 +vt 0.894737 0.571429 +vt 0.885965 0.619048 +vt 0.885965 0.571429 +vt 0.877193 0.571429 +vt 0.868421 0.619048 +vt 0.868421 0.571429 +vt 0.929825 0.571429 +vt 0.921053 0.619048 +vt 0.921053 0.571429 +vt 0.912281 0.571429 +vt 0.903509 0.619048 +vt 0.903509 0.571429 +vt 0.894737 0.619048 +vt 0.877193 0.619048 +vt 0.938596 0.571429 +vt 0.929825 0.619048 +vt 0.912281 0.619048 +vt 0.894737 0.571429 +vt 0.885965 0.619048 +vt 0.885965 0.571429 +vt 0.877193 0.571429 +vt 0.868421 0.619048 +vt 0.868421 0.571429 +vt 0.929825 0.571429 +vt 0.921053 0.619048 +vt 0.921053 0.571429 +vt 0.912281 0.571429 +vt 0.903509 0.619048 +vt 0.903509 0.571429 +vt 0.894737 0.619048 +vt 0.877193 0.619048 +vt 0.938596 0.571429 +vt 0.929825 0.619048 +vt 0.912281 0.619048 +vt 0.894737 0.571429 +vt 0.885965 0.619048 +vt 0.885965 0.571429 +vt 0.877193 0.571429 +vt 0.868421 0.619048 +vt 0.868421 0.571429 +vt 0.929825 0.571429 +vt 0.921053 0.619048 +vt 0.921053 0.571429 +vt 0.912281 0.571429 +vt 0.903509 0.619048 +vt 0.903509 0.571429 +vt 0.894737 0.619048 +vt 0.877193 0.619048 +vt 0.938596 0.571429 +vt 0.929825 0.619048 +vt 0.912281 0.619048 +vt 0.894737 0.571429 +vt 0.885965 0.619048 +vt 0.885965 0.571429 +vt 0.877193 0.571429 +vt 0.868421 0.619048 +vt 0.868421 0.571429 +vt 0.929825 0.571429 +vt 0.921053 0.619048 +vt 0.921053 0.571429 +vt 0.912281 0.571429 +vt 0.903509 0.619048 +vt 0.903509 0.571429 +vt 0.894737 0.619048 +vt 0.877193 0.619048 +vt 0.938596 0.571429 +vt 0.929825 0.619048 +vt 0.912281 0.619048 +vt 0.894737 0.571429 +vt 0.885965 0.619048 +vt 0.885965 0.571429 +vt 0.877193 0.571429 +vt 0.868421 0.619048 +vt 0.868421 0.571429 +vt 0.929825 0.571429 +vt 0.921053 0.619048 +vt 0.921053 0.571429 +vt 0.912281 0.571429 +vt 0.903509 0.619048 +vt 0.903509 0.571429 +vt 0.894737 0.619048 +vt 0.877193 0.619048 +vt 0.938596 0.571429 +vt 0.929825 0.619048 +vt 0.912281 0.619048 +vt 0.938596 0.619048 +vt 0.938596 0.619048 +vt 0.938596 0.619048 +vt 0.938596 0.619048 +vt 0.938596 0.619048 +vt 0.938596 0.619048 +vt 0.938596 0.619048 +vt 0.938596 0.619048 +vt 0.938596 0.619048 +vt 0.938596 0.619048 +vt 0.938596 0.619048 +vt 0.938596 0.619048 +vt 0.938596 0.619048 +vt 0.938596 0.619048 +vt 0.938596 0.619048 +vt 0.938596 0.619048 +vn 0.0000 1.0000 0.0000 +vn -1.0000 0.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +vn 0.0000 0.0000 1.0000 +vn 1.0000 0.0000 0.0000 +vn 0.7071 0.0000 -0.7071 +vn 0.7071 0.0000 0.7071 +vn -0.7071 0.0000 0.7071 +vn -0.7071 0.0000 -0.7071 +s off +f 9/13/6 11/14/6 10/15/6 +f 25/16/6 27/17/6 21/18/6 +f 30/19/7 31/20/7 29/21/7 +f 31/20/8 33/22/8 29/23/8 +f 30/24/9 36/25/9 32/26/9 +f 32/26/6 35/27/6 31/20/6 +f 36/25/10 33/28/10 35/27/10 +f 38/29/7 39/30/7 37/31/7 +f 39/30/8 41/32/8 37/33/8 +f 38/34/9 44/35/9 40/36/9 +f 40/36/6 43/37/6 39/30/6 +f 44/35/10 41/38/10 43/37/10 +f 46/39/7 47/40/7 45/41/7 +f 47/40/8 49/42/8 45/43/8 +f 46/44/9 52/45/9 48/46/9 +f 48/46/6 51/47/6 47/40/6 +f 52/45/10 49/48/10 51/47/10 +f 54/49/7 55/50/7 53/51/7 +f 55/50/8 57/52/8 53/53/8 +f 54/54/9 60/55/9 56/56/9 +f 56/56/6 59/57/6 55/50/6 +f 60/55/10 57/58/10 59/57/10 +f 73/59/6 75/60/6 69/61/6 +f 89/62/6 91/63/6 85/64/6 +f 105/65/6 107/66/6 101/67/6 +f 121/68/6 123/69/6 117/70/6 +f 137/71/6 139/72/6 133/73/6 +f 153/74/6 155/75/6 149/76/6 +f 169/77/6 171/78/6 165/79/6 +f 185/80/6 187/81/6 181/82/6 +f 201/83/6 203/84/6 197/85/6 +f 217/86/6 219/87/6 213/88/6 +f 233/89/6 235/90/6 229/91/6 +f 249/92/6 251/93/6 245/94/6 +f 265/95/6 267/96/6 261/97/6 +f 281/98/6 283/99/6 277/100/6 +f 297/101/6 299/102/6 293/103/6 +f 9/13/6 12/104/6 11/14/6 +f 21/18/6 22/105/6 23/106/6 +f 23/106/6 24/107/6 25/16/6 +f 25/16/6 26/108/6 27/17/6 +f 27/17/6 28/109/6 21/18/6 +f 21/18/6 23/106/6 25/16/6 +f 30/19/7 32/26/7 31/20/7 +f 31/20/8 35/27/8 33/22/8 +f 30/24/9 34/110/9 36/25/9 +f 32/26/6 36/25/6 35/27/6 +f 36/25/10 34/111/10 33/28/10 +f 38/29/7 40/36/7 39/30/7 +f 39/30/8 43/37/8 41/32/8 +f 38/34/9 42/112/9 44/35/9 +f 40/36/6 44/35/6 43/37/6 +f 44/35/10 42/113/10 41/38/10 +f 46/39/7 48/46/7 47/40/7 +f 47/40/8 51/47/8 49/42/8 +f 46/44/9 50/114/9 52/45/9 +f 48/46/6 52/45/6 51/47/6 +f 52/45/10 50/115/10 49/48/10 +f 54/49/7 56/56/7 55/50/7 +f 55/50/8 59/57/8 57/52/8 +f 54/54/9 58/116/9 60/55/9 +f 56/56/6 60/55/6 59/57/6 +f 60/55/10 58/117/10 57/58/10 +f 69/61/6 70/118/6 71/119/6 +f 71/119/6 72/120/6 73/59/6 +f 73/59/6 74/121/6 75/60/6 +f 75/60/6 76/122/6 69/61/6 +f 69/61/6 71/119/6 73/59/6 +f 85/64/6 86/123/6 87/124/6 +f 87/124/6 88/125/6 89/62/6 +f 89/62/6 90/126/6 91/63/6 +f 91/63/6 92/127/6 85/64/6 +f 85/64/6 87/124/6 89/62/6 +f 101/67/6 102/128/6 103/129/6 +f 103/129/6 104/130/6 105/65/6 +f 105/65/6 106/131/6 107/66/6 +f 107/66/6 108/132/6 101/67/6 +f 101/67/6 103/129/6 105/65/6 +f 117/70/6 118/133/6 119/134/6 +f 119/134/6 120/135/6 121/68/6 +f 121/68/6 122/136/6 123/69/6 +f 123/69/6 124/137/6 117/70/6 +f 117/70/6 119/134/6 121/68/6 +f 133/73/6 134/138/6 135/139/6 +f 135/139/6 136/140/6 137/71/6 +f 137/71/6 138/141/6 139/72/6 +f 139/72/6 140/142/6 133/73/6 +f 133/73/6 135/139/6 137/71/6 +f 149/76/6 150/143/6 151/144/6 +f 151/144/6 152/145/6 153/74/6 +f 153/74/6 154/146/6 155/75/6 +f 155/75/6 156/147/6 149/76/6 +f 149/76/6 151/144/6 153/74/6 +f 165/79/6 166/148/6 167/149/6 +f 167/149/6 168/150/6 169/77/6 +f 169/77/6 170/151/6 171/78/6 +f 171/78/6 172/152/6 165/79/6 +f 165/79/6 167/149/6 169/77/6 +f 181/82/6 182/153/6 183/154/6 +f 183/154/6 184/155/6 185/80/6 +f 185/80/6 186/156/6 187/81/6 +f 187/81/6 188/157/6 181/82/6 +f 181/82/6 183/154/6 185/80/6 +f 197/85/6 198/158/6 199/159/6 +f 199/159/6 200/160/6 201/83/6 +f 201/83/6 202/161/6 203/84/6 +f 203/84/6 204/162/6 197/85/6 +f 197/85/6 199/159/6 201/83/6 +f 213/88/6 214/163/6 215/164/6 +f 215/164/6 216/165/6 217/86/6 +f 217/86/6 218/166/6 219/87/6 +f 219/87/6 220/167/6 213/88/6 +f 213/88/6 215/164/6 217/86/6 +f 229/91/6 230/168/6 231/169/6 +f 231/169/6 232/170/6 233/89/6 +f 233/89/6 234/171/6 235/90/6 +f 235/90/6 236/172/6 229/91/6 +f 229/91/6 231/169/6 233/89/6 +f 245/94/6 246/173/6 247/174/6 +f 247/174/6 248/175/6 249/92/6 +f 249/92/6 250/176/6 251/93/6 +f 251/93/6 252/177/6 245/94/6 +f 245/94/6 247/174/6 249/92/6 +f 261/97/6 262/178/6 263/179/6 +f 263/179/6 264/180/6 265/95/6 +f 265/95/6 266/181/6 267/96/6 +f 267/96/6 268/182/6 261/97/6 +f 261/97/6 263/179/6 265/95/6 +f 277/100/6 278/183/6 279/184/6 +f 279/184/6 280/185/6 281/98/6 +f 281/98/6 282/186/6 283/99/6 +f 283/99/6 284/187/6 277/100/6 +f 277/100/6 279/184/6 281/98/6 +f 293/103/6 294/188/6 295/189/6 +f 295/189/6 296/190/6 297/101/6 +f 297/101/6 298/191/6 299/102/6 +f 299/102/6 300/192/6 293/103/6 +f 293/103/6 295/189/6 297/101/6 +s 1 +f 20/193/11 27/194/10 19/195/10 +f 18/196/12 25/197/9 17/198/9 +f 16/199/13 23/200/7 15/201/7 +f 14/202/14 21/203/8 13/204/8 +f 13/204/8 28/205/11 20/193/11 +f 19/195/10 26/206/12 18/196/12 +f 17/207/9 24/208/13 16/199/13 +f 15/201/7 22/209/14 14/202/14 +f 68/210/11 75/211/10 67/212/10 +f 66/213/12 73/214/9 65/215/9 +f 64/216/13 71/217/7 63/218/7 +f 62/219/14 69/220/8 61/221/8 +f 61/221/8 76/222/11 68/210/11 +f 67/212/10 74/223/12 66/213/12 +f 65/224/9 72/225/13 64/216/13 +f 63/218/7 70/226/14 62/219/14 +f 84/227/11 91/228/10 83/229/10 +f 82/230/12 89/231/9 81/232/9 +f 80/233/13 87/234/7 79/235/7 +f 78/236/14 85/237/8 77/238/8 +f 77/238/8 92/239/11 84/227/11 +f 83/229/10 90/240/12 82/230/12 +f 81/241/9 88/242/13 80/233/13 +f 79/235/7 86/243/14 78/236/14 +f 100/244/11 107/245/10 99/246/10 +f 98/247/12 105/248/9 97/249/9 +f 96/250/13 103/251/7 95/252/7 +f 94/253/14 101/254/8 93/255/8 +f 93/255/8 108/256/11 100/244/11 +f 99/246/10 106/257/12 98/247/12 +f 97/258/9 104/259/13 96/250/13 +f 95/252/7 102/260/14 94/253/14 +f 116/261/11 123/262/10 115/263/10 +f 114/264/12 121/265/9 113/266/9 +f 112/267/13 119/268/7 111/269/7 +f 110/270/14 117/271/8 109/272/8 +f 109/272/8 124/273/11 116/261/11 +f 115/263/10 122/274/12 114/264/12 +f 113/275/9 120/276/13 112/267/13 +f 111/269/7 118/277/14 110/270/14 +f 132/278/11 139/279/10 131/280/10 +f 130/281/12 137/282/9 129/283/9 +f 128/284/13 135/285/7 127/286/7 +f 126/287/14 133/288/8 125/289/8 +f 125/289/8 140/290/11 132/278/11 +f 131/280/10 138/291/12 130/281/12 +f 129/292/9 136/293/13 128/284/13 +f 127/286/7 134/294/14 126/287/14 +f 148/295/11 155/296/10 147/297/10 +f 146/298/12 153/299/9 145/300/9 +f 144/301/13 151/302/7 143/303/7 +f 142/304/14 149/305/8 141/306/8 +f 141/306/8 156/307/11 148/295/11 +f 147/297/10 154/308/12 146/298/12 +f 145/309/9 152/310/13 144/301/13 +f 143/303/7 150/311/14 142/304/14 +f 164/312/11 171/313/10 163/314/10 +f 162/315/12 169/316/9 161/317/9 +f 160/318/13 167/319/7 159/320/7 +f 158/321/14 165/322/8 157/323/8 +f 157/323/8 172/324/11 164/312/11 +f 163/314/10 170/325/12 162/315/12 +f 161/326/9 168/327/13 160/318/13 +f 159/320/7 166/328/14 158/321/14 +f 180/329/11 187/330/10 179/331/10 +f 178/332/12 185/333/9 177/334/9 +f 176/335/13 183/336/7 175/337/7 +f 174/338/14 181/339/8 173/340/8 +f 173/340/8 188/341/11 180/329/11 +f 179/331/10 186/342/12 178/332/12 +f 177/343/9 184/344/13 176/335/13 +f 175/337/7 182/345/14 174/338/14 +f 196/346/11 203/347/10 195/348/10 +f 194/349/12 201/350/9 193/351/9 +f 192/352/13 199/353/7 191/354/7 +f 190/355/14 197/356/8 189/357/8 +f 189/357/8 204/358/11 196/346/11 +f 195/348/10 202/359/12 194/349/12 +f 193/360/9 200/361/13 192/352/13 +f 191/354/7 198/362/14 190/355/14 +f 212/363/11 219/364/10 211/365/10 +f 210/366/12 217/367/9 209/368/9 +f 208/369/13 215/370/7 207/371/7 +f 206/372/14 213/373/8 205/374/8 +f 205/374/8 220/375/11 212/363/11 +f 211/365/10 218/376/12 210/366/12 +f 209/377/9 216/378/13 208/369/13 +f 207/371/7 214/379/14 206/372/14 +f 228/380/11 235/381/10 227/382/10 +f 226/383/12 233/384/9 225/385/9 +f 224/386/13 231/387/7 223/388/7 +f 222/389/14 229/390/8 221/391/8 +f 221/391/8 236/392/11 228/380/11 +f 227/382/10 234/393/12 226/383/12 +f 225/394/9 232/395/13 224/386/13 +f 223/388/7 230/396/14 222/389/14 +f 244/397/11 251/398/10 243/399/10 +f 242/400/12 249/401/9 241/402/9 +f 240/403/13 247/404/7 239/405/7 +f 238/406/14 245/407/8 237/408/8 +f 237/408/8 252/409/11 244/397/11 +f 243/399/10 250/410/12 242/400/12 +f 241/411/9 248/412/13 240/403/13 +f 239/405/7 246/413/14 238/406/14 +f 260/414/11 267/415/10 259/416/10 +f 258/417/12 265/418/9 257/419/9 +f 256/420/13 263/421/7 255/422/7 +f 254/423/14 261/424/8 253/425/8 +f 253/425/8 268/426/11 260/414/11 +f 259/416/10 266/427/12 258/417/12 +f 257/428/9 264/429/13 256/420/13 +f 255/422/7 262/430/14 254/423/14 +f 276/431/11 283/432/10 275/433/10 +f 274/434/12 281/435/9 273/436/9 +f 272/437/13 279/438/7 271/439/7 +f 270/440/14 277/441/8 269/442/8 +f 269/442/8 284/443/11 276/431/11 +f 275/433/10 282/444/12 274/434/12 +f 273/445/9 280/446/13 272/437/13 +f 271/439/7 278/447/14 270/440/14 +f 292/448/11 299/449/10 291/450/10 +f 290/451/12 297/452/9 289/453/9 +f 288/454/13 295/455/7 287/456/7 +f 286/457/14 293/458/8 285/459/8 +f 285/459/8 300/460/11 292/448/11 +f 291/450/10 298/461/12 290/451/12 +f 289/462/9 296/463/13 288/454/13 +f 287/456/7 294/464/14 286/457/14 +f 20/193/11 28/205/11 27/194/10 +f 18/196/12 26/206/12 25/197/9 +f 16/199/13 24/208/13 23/200/7 +f 14/202/14 22/209/14 21/203/8 +f 13/204/8 21/203/8 28/205/11 +f 19/195/10 27/194/10 26/206/12 +f 17/207/9 25/465/9 24/208/13 +f 15/201/7 23/200/7 22/209/14 +f 68/210/11 76/222/11 75/211/10 +f 66/213/12 74/223/12 73/214/9 +f 64/216/13 72/225/13 71/217/7 +f 62/219/14 70/226/14 69/220/8 +f 61/221/8 69/220/8 76/222/11 +f 67/212/10 75/211/10 74/223/12 +f 65/224/9 73/466/9 72/225/13 +f 63/218/7 71/217/7 70/226/14 +f 84/227/11 92/239/11 91/228/10 +f 82/230/12 90/240/12 89/231/9 +f 80/233/13 88/242/13 87/234/7 +f 78/236/14 86/243/14 85/237/8 +f 77/238/8 85/237/8 92/239/11 +f 83/229/10 91/228/10 90/240/12 +f 81/241/9 89/467/9 88/242/13 +f 79/235/7 87/234/7 86/243/14 +f 100/244/11 108/256/11 107/245/10 +f 98/247/12 106/257/12 105/248/9 +f 96/250/13 104/259/13 103/251/7 +f 94/253/14 102/260/14 101/254/8 +f 93/255/8 101/254/8 108/256/11 +f 99/246/10 107/245/10 106/257/12 +f 97/258/9 105/468/9 104/259/13 +f 95/252/7 103/251/7 102/260/14 +f 116/261/11 124/273/11 123/262/10 +f 114/264/12 122/274/12 121/265/9 +f 112/267/13 120/276/13 119/268/7 +f 110/270/14 118/277/14 117/271/8 +f 109/272/8 117/271/8 124/273/11 +f 115/263/10 123/262/10 122/274/12 +f 113/275/9 121/469/9 120/276/13 +f 111/269/7 119/268/7 118/277/14 +f 132/278/11 140/290/11 139/279/10 +f 130/281/12 138/291/12 137/282/9 +f 128/284/13 136/293/13 135/285/7 +f 126/287/14 134/294/14 133/288/8 +f 125/289/8 133/288/8 140/290/11 +f 131/280/10 139/279/10 138/291/12 +f 129/292/9 137/470/9 136/293/13 +f 127/286/7 135/285/7 134/294/14 +f 148/295/11 156/307/11 155/296/10 +f 146/298/12 154/308/12 153/299/9 +f 144/301/13 152/310/13 151/302/7 +f 142/304/14 150/311/14 149/305/8 +f 141/306/8 149/305/8 156/307/11 +f 147/297/10 155/296/10 154/308/12 +f 145/309/9 153/471/9 152/310/13 +f 143/303/7 151/302/7 150/311/14 +f 164/312/11 172/324/11 171/313/10 +f 162/315/12 170/325/12 169/316/9 +f 160/318/13 168/327/13 167/319/7 +f 158/321/14 166/328/14 165/322/8 +f 157/323/8 165/322/8 172/324/11 +f 163/314/10 171/313/10 170/325/12 +f 161/326/9 169/472/9 168/327/13 +f 159/320/7 167/319/7 166/328/14 +f 180/329/11 188/341/11 187/330/10 +f 178/332/12 186/342/12 185/333/9 +f 176/335/13 184/344/13 183/336/7 +f 174/338/14 182/345/14 181/339/8 +f 173/340/8 181/339/8 188/341/11 +f 179/331/10 187/330/10 186/342/12 +f 177/343/9 185/473/9 184/344/13 +f 175/337/7 183/336/7 182/345/14 +f 196/346/11 204/358/11 203/347/10 +f 194/349/12 202/359/12 201/350/9 +f 192/352/13 200/361/13 199/353/7 +f 190/355/14 198/362/14 197/356/8 +f 189/357/8 197/356/8 204/358/11 +f 195/348/10 203/347/10 202/359/12 +f 193/360/9 201/474/9 200/361/13 +f 191/354/7 199/353/7 198/362/14 +f 212/363/11 220/375/11 219/364/10 +f 210/366/12 218/376/12 217/367/9 +f 208/369/13 216/378/13 215/370/7 +f 206/372/14 214/379/14 213/373/8 +f 205/374/8 213/373/8 220/375/11 +f 211/365/10 219/364/10 218/376/12 +f 209/377/9 217/475/9 216/378/13 +f 207/371/7 215/370/7 214/379/14 +f 228/380/11 236/392/11 235/381/10 +f 226/383/12 234/393/12 233/384/9 +f 224/386/13 232/395/13 231/387/7 +f 222/389/14 230/396/14 229/390/8 +f 221/391/8 229/390/8 236/392/11 +f 227/382/10 235/381/10 234/393/12 +f 225/394/9 233/476/9 232/395/13 +f 223/388/7 231/387/7 230/396/14 +f 244/397/11 252/409/11 251/398/10 +f 242/400/12 250/410/12 249/401/9 +f 240/403/13 248/412/13 247/404/7 +f 238/406/14 246/413/14 245/407/8 +f 237/408/8 245/407/8 252/409/11 +f 243/399/10 251/398/10 250/410/12 +f 241/411/9 249/477/9 248/412/13 +f 239/405/7 247/404/7 246/413/14 +f 260/414/11 268/426/11 267/415/10 +f 258/417/12 266/427/12 265/418/9 +f 256/420/13 264/429/13 263/421/7 +f 254/423/14 262/430/14 261/424/8 +f 253/425/8 261/424/8 268/426/11 +f 259/416/10 267/415/10 266/427/12 +f 257/428/9 265/478/9 264/429/13 +f 255/422/7 263/421/7 262/430/14 +f 276/431/11 284/443/11 283/432/10 +f 274/434/12 282/444/12 281/435/9 +f 272/437/13 280/446/13 279/438/7 +f 270/440/14 278/447/14 277/441/8 +f 269/442/8 277/441/8 284/443/11 +f 275/433/10 283/432/10 282/444/12 +f 273/445/9 281/479/9 280/446/13 +f 271/439/7 279/438/7 278/447/14 +f 292/448/11 300/460/11 299/449/10 +f 290/451/12 298/461/12 297/452/9 +f 288/454/13 296/463/13 295/455/7 +f 286/457/14 294/464/14 293/458/8 +f 285/459/8 293/458/8 300/460/11 +f 291/450/10 299/449/10 298/461/12 +f 289/462/9 297/480/9 296/463/13 +f 287/456/7 295/455/7 294/464/14 +o Bullets +v 0.125000 1.125000 0.414062 +v 0.108427 1.125000 0.420927 +v 0.101562 1.125000 0.437500 +v 0.108427 1.125000 0.454073 +v 0.125000 1.125000 0.460938 +v 0.141573 1.125000 0.454073 +v 0.148438 1.125000 0.437500 +v 0.141573 1.125000 0.420927 +v 0.125000 1.187500 0.437500 +v 0.141573 1.156250 0.454073 +v 0.125000 1.156250 0.460938 +v 0.108427 1.156250 0.454073 +v 0.101562 1.156250 0.437500 +v 0.108427 1.156250 0.420927 +v 0.125000 1.156250 0.414062 +v 0.141573 1.156250 0.420927 +v 0.148438 1.156250 0.437500 +v -0.125000 1.125000 0.414062 +v -0.141573 1.125000 0.420927 +v -0.148438 1.125000 0.437500 +v -0.141573 1.125000 0.454073 +v -0.125000 1.125000 0.460938 +v -0.108427 1.125000 0.454073 +v -0.101562 1.125000 0.437500 +v -0.108427 1.125000 0.420927 +v -0.125000 1.187500 0.437500 +v -0.108427 1.156250 0.454073 +v -0.125000 1.156250 0.460938 +v -0.141573 1.156250 0.454073 +v -0.148438 1.156250 0.437500 +v -0.141573 1.156250 0.420927 +v -0.125000 1.156250 0.414062 +v -0.108427 1.156250 0.420927 +v -0.101562 1.156250 0.437500 +v 0.125000 1.125000 0.289062 +v 0.108427 1.125000 0.295927 +v 0.101562 1.125000 0.312500 +v 0.108427 1.125000 0.329073 +v 0.125000 1.125000 0.335938 +v 0.141573 1.125000 0.329073 +v 0.148438 1.125000 0.312500 +v 0.141573 1.125000 0.295927 +v 0.125000 1.187500 0.312500 +v 0.141573 1.156250 0.329073 +v 0.125000 1.156250 0.335938 +v 0.108427 1.156250 0.329073 +v 0.101562 1.156250 0.312500 +v 0.108427 1.156250 0.295927 +v 0.125000 1.156250 0.289062 +v 0.141573 1.156250 0.295927 +v 0.148438 1.156250 0.312500 +v -0.125000 1.125000 0.289062 +v -0.141573 1.125000 0.295927 +v -0.148438 1.125000 0.312500 +v -0.141573 1.125000 0.329073 +v -0.125000 1.125000 0.335938 +v -0.108427 1.125000 0.329073 +v -0.101562 1.125000 0.312500 +v -0.108427 1.125000 0.295927 +v -0.125000 1.187500 0.312500 +v -0.108427 1.156250 0.329073 +v -0.125000 1.156250 0.335938 +v -0.141573 1.156250 0.329073 +v -0.148438 1.156250 0.312500 +v -0.141573 1.156250 0.295927 +v -0.125000 1.156250 0.289062 +v -0.108427 1.156250 0.295927 +v -0.101562 1.156250 0.312500 +v 0.125000 1.125000 0.164062 +v 0.108427 1.125000 0.170927 +v 0.101562 1.125000 0.187500 +v 0.108427 1.125000 0.204073 +v 0.125000 1.125000 0.210938 +v 0.141573 1.125000 0.204073 +v 0.148438 1.125000 0.187500 +v 0.141573 1.125000 0.170927 +v 0.125000 1.187500 0.187500 +v 0.141573 1.156250 0.204073 +v 0.125000 1.156250 0.210938 +v 0.108427 1.156250 0.204073 +v 0.101562 1.156250 0.187500 +v 0.108427 1.156250 0.170927 +v 0.125000 1.156250 0.164062 +v 0.141573 1.156250 0.170927 +v 0.148438 1.156250 0.187500 +v -0.125000 1.125000 0.164062 +v -0.141573 1.125000 0.170927 +v -0.148438 1.125000 0.187500 +v -0.141573 1.125000 0.204073 +v -0.125000 1.125000 0.210938 +v -0.108427 1.125000 0.204073 +v -0.101562 1.125000 0.187500 +v -0.108427 1.125000 0.170927 +v -0.125000 1.187500 0.187500 +v -0.108427 1.156250 0.204073 +v -0.125000 1.156250 0.210938 +v -0.141573 1.156250 0.204073 +v -0.148438 1.156250 0.187500 +v -0.141573 1.156250 0.170927 +v -0.125000 1.156250 0.164062 +v -0.108427 1.156250 0.170927 +v -0.101562 1.156250 0.187500 +v 0.125000 1.125000 0.039062 +v 0.108427 1.125000 0.045927 +v 0.101562 1.125000 0.062500 +v 0.108427 1.125000 0.079073 +v 0.125000 1.125000 0.085938 +v 0.141573 1.125000 0.079073 +v 0.148438 1.125000 0.062500 +v 0.141573 1.125000 0.045927 +v 0.125000 1.187500 0.062500 +v 0.141573 1.156250 0.079073 +v 0.125000 1.156250 0.085938 +v 0.108427 1.156250 0.079073 +v 0.101562 1.156250 0.062500 +v 0.108427 1.156250 0.045927 +v 0.125000 1.156250 0.039062 +v 0.141573 1.156250 0.045927 +v 0.148438 1.156250 0.062500 +v -0.125000 1.125000 0.039062 +v -0.141573 1.125000 0.045927 +v -0.148438 1.125000 0.062500 +v -0.141573 1.125000 0.079073 +v -0.125000 1.125000 0.085938 +v -0.108427 1.125000 0.079073 +v -0.101562 1.125000 0.062500 +v -0.108427 1.125000 0.045927 +v -0.125000 1.187500 0.062500 +v -0.108427 1.156250 0.079073 +v -0.125000 1.156250 0.085938 +v -0.141573 1.156250 0.079073 +v -0.148438 1.156250 0.062500 +v -0.141573 1.156250 0.045927 +v -0.125000 1.156250 0.039062 +v -0.108427 1.156250 0.045927 +v -0.101562 1.156250 0.062500 +v 0.125000 1.125000 -0.085938 +v 0.108427 1.125000 -0.079073 +v 0.101562 1.125000 -0.062500 +v 0.108427 1.125000 -0.045927 +v 0.125000 1.125000 -0.039062 +v 0.141573 1.125000 -0.045927 +v 0.148438 1.125000 -0.062500 +v 0.141573 1.125000 -0.079073 +v 0.125000 1.187500 -0.062500 +v 0.141573 1.156250 -0.045927 +v 0.125000 1.156250 -0.039062 +v 0.108427 1.156250 -0.045927 +v 0.101562 1.156250 -0.062500 +v 0.108427 1.156250 -0.079073 +v 0.125000 1.156250 -0.085938 +v 0.141573 1.156250 -0.079073 +v 0.148438 1.156250 -0.062500 +v -0.125000 1.125000 -0.085938 +v -0.141573 1.125000 -0.079073 +v -0.148438 1.125000 -0.062500 +v -0.141573 1.125000 -0.045927 +v -0.125000 1.125000 -0.039062 +v -0.108427 1.125000 -0.045927 +v -0.101562 1.125000 -0.062500 +v -0.108427 1.125000 -0.079073 +v -0.125000 1.187500 -0.062500 +v -0.108427 1.156250 -0.045927 +v -0.125000 1.156250 -0.039062 +v -0.141573 1.156250 -0.045927 +v -0.148438 1.156250 -0.062500 +v -0.141573 1.156250 -0.079073 +v -0.125000 1.156250 -0.085938 +v -0.108427 1.156250 -0.079073 +v -0.101562 1.156250 -0.062500 +v 0.125000 1.125000 -0.210938 +v 0.108427 1.125000 -0.204073 +v 0.101562 1.125000 -0.187500 +v 0.108427 1.125000 -0.170927 +v 0.125000 1.125000 -0.164062 +v 0.141573 1.125000 -0.170927 +v 0.148438 1.125000 -0.187500 +v 0.141573 1.125000 -0.204073 +v 0.125000 1.187500 -0.187500 +v 0.141573 1.156250 -0.170927 +v 0.125000 1.156250 -0.164062 +v 0.108427 1.156250 -0.170927 +v 0.101562 1.156250 -0.187500 +v 0.108427 1.156250 -0.204073 +v 0.125000 1.156250 -0.210938 +v 0.141573 1.156250 -0.204073 +v 0.148438 1.156250 -0.187500 +v -0.125000 1.125000 -0.210938 +v -0.141573 1.125000 -0.204073 +v -0.148438 1.125000 -0.187500 +v -0.141573 1.125000 -0.170927 +v -0.125000 1.125000 -0.164062 +v -0.108427 1.125000 -0.170927 +v -0.101562 1.125000 -0.187500 +v -0.108427 1.125000 -0.204073 +v -0.125000 1.187500 -0.187500 +v -0.108427 1.156250 -0.170927 +v -0.125000 1.156250 -0.164062 +v -0.141573 1.156250 -0.170927 +v -0.148438 1.156250 -0.187500 +v -0.141573 1.156250 -0.204073 +v -0.125000 1.156250 -0.210938 +v -0.108427 1.156250 -0.204073 +v -0.101562 1.156250 -0.187500 +v 0.125000 1.125000 -0.335938 +v 0.108427 1.125000 -0.329073 +v 0.101562 1.125000 -0.312500 +v 0.108427 1.125000 -0.295927 +v 0.125000 1.125000 -0.289062 +v 0.141573 1.125000 -0.295927 +v 0.148438 1.125000 -0.312500 +v 0.141573 1.125000 -0.329073 +v 0.125000 1.187500 -0.312500 +v 0.141573 1.156250 -0.295927 +v 0.125000 1.156250 -0.289062 +v 0.108427 1.156250 -0.295927 +v 0.101562 1.156250 -0.312500 +v 0.108427 1.156250 -0.329073 +v 0.125000 1.156250 -0.335938 +v 0.141573 1.156250 -0.329073 +v 0.148438 1.156250 -0.312500 +v -0.125000 1.125000 -0.335938 +v -0.141573 1.125000 -0.329073 +v -0.148438 1.125000 -0.312500 +v -0.141573 1.125000 -0.295927 +v -0.125000 1.125000 -0.289062 +v -0.108427 1.125000 -0.295927 +v -0.101562 1.125000 -0.312500 +v -0.108427 1.125000 -0.329073 +v -0.125000 1.187500 -0.312500 +v -0.108427 1.156250 -0.295927 +v -0.125000 1.156250 -0.289062 +v -0.141573 1.156250 -0.295927 +v -0.148438 1.156250 -0.312500 +v -0.141573 1.156250 -0.329073 +v -0.125000 1.156250 -0.335938 +v -0.108427 1.156250 -0.329073 +v -0.101562 1.156250 -0.312500 +v 0.125000 1.125000 -0.460938 +v 0.108427 1.125000 -0.454073 +v 0.101562 1.125000 -0.437500 +v 0.108427 1.125000 -0.420927 +v 0.125000 1.125000 -0.414062 +v 0.141573 1.125000 -0.420927 +v 0.148438 1.125000 -0.437500 +v 0.141573 1.125000 -0.454073 +v 0.125000 1.187500 -0.437500 +v 0.141573 1.156250 -0.420927 +v 0.125000 1.156250 -0.414062 +v 0.108427 1.156250 -0.420927 +v 0.101562 1.156250 -0.437500 +v 0.108427 1.156250 -0.454073 +v 0.125000 1.156250 -0.460938 +v 0.141573 1.156250 -0.454073 +v 0.148438 1.156250 -0.437500 +v -0.125000 1.125000 -0.460938 +v -0.141573 1.125000 -0.454073 +v -0.148438 1.125000 -0.437500 +v -0.141573 1.125000 -0.420927 +v -0.125000 1.125000 -0.414062 +v -0.108427 1.125000 -0.420927 +v -0.101562 1.125000 -0.437500 +v -0.108427 1.125000 -0.454073 +v -0.125000 1.187500 -0.437500 +v -0.108427 1.156250 -0.420927 +v -0.125000 1.156250 -0.414062 +v -0.141573 1.156250 -0.420927 +v -0.148438 1.156250 -0.437500 +v -0.141573 1.156250 -0.454073 +v -0.125000 1.156250 -0.460938 +v -0.108427 1.156250 -0.454073 +v -0.101562 1.156250 -0.437500 +vt 0.894737 0.642857 +vt 0.885965 0.654762 +vt 0.885965 0.642857 +vt 0.877193 0.666667 +vt 0.877193 0.654762 +vt 0.929825 0.666667 +vt 0.929825 0.654762 +vt 0.938596 0.654762 +vt 0.912281 0.666667 +vt 0.912281 0.654762 +vt 0.921053 0.654762 +vt 0.885965 0.666667 +vt 0.894737 0.654762 +vt 0.868421 0.666667 +vt 0.868421 0.654762 +vt 0.921053 0.666667 +vt 0.894737 0.666667 +vt 0.903509 0.654762 +vt 0.921053 0.642857 +vt 0.912281 0.642857 +vt 0.938596 0.642857 +vt 0.929825 0.642857 +vt 0.877193 0.642857 +vt 0.903509 0.642857 +vt 0.868421 0.642857 +vt 0.903509 0.666667 +vt 0.894737 0.642857 +vt 0.885965 0.654762 +vt 0.885965 0.642857 +vt 0.877193 0.666667 +vt 0.877193 0.654762 +vt 0.929825 0.666667 +vt 0.929825 0.654762 +vt 0.938596 0.654762 +vt 0.912281 0.666667 +vt 0.912281 0.654762 +vt 0.921053 0.654762 +vt 0.885965 0.666667 +vt 0.894737 0.654762 +vt 0.868421 0.666667 +vt 0.868421 0.654762 +vt 0.921053 0.666667 +vt 0.894737 0.666667 +vt 0.903509 0.654762 +vt 0.921053 0.642857 +vt 0.912281 0.642857 +vt 0.938596 0.642857 +vt 0.929825 0.642857 +vt 0.877193 0.642857 +vt 0.903509 0.642857 +vt 0.868421 0.642857 +vt 0.903509 0.666667 +vt 0.894737 0.642857 +vt 0.885965 0.654762 +vt 0.885965 0.642857 +vt 0.877193 0.666667 +vt 0.877193 0.654762 +vt 0.929825 0.666667 +vt 0.929825 0.654762 +vt 0.938596 0.654762 +vt 0.912281 0.666667 +vt 0.912281 0.654762 +vt 0.921053 0.654762 +vt 0.885965 0.666667 +vt 0.894737 0.654762 +vt 0.868421 0.666667 +vt 0.868421 0.654762 +vt 0.921053 0.666667 +vt 0.894737 0.666667 +vt 0.903509 0.654762 +vt 0.921053 0.642857 +vt 0.912281 0.642857 +vt 0.938596 0.642857 +vt 0.929825 0.642857 +vt 0.877193 0.642857 +vt 0.903509 0.642857 +vt 0.868421 0.642857 +vt 0.903509 0.666667 +vt 0.894737 0.642857 +vt 0.885965 0.654762 +vt 0.885965 0.642857 +vt 0.877193 0.666667 +vt 0.877193 0.654762 +vt 0.929825 0.666667 +vt 0.929825 0.654762 +vt 0.938596 0.654762 +vt 0.912281 0.666667 +vt 0.912281 0.654762 +vt 0.921053 0.654762 +vt 0.885965 0.666667 +vt 0.894737 0.654762 +vt 0.868421 0.666667 +vt 0.868421 0.654762 +vt 0.921053 0.666667 +vt 0.894737 0.666667 +vt 0.903509 0.654762 +vt 0.921053 0.642857 +vt 0.912281 0.642857 +vt 0.938596 0.642857 +vt 0.929825 0.642857 +vt 0.877193 0.642857 +vt 0.903509 0.642857 +vt 0.868421 0.642857 +vt 0.903509 0.666667 +vt 0.894737 0.642857 +vt 0.885965 0.654762 +vt 0.885965 0.642857 +vt 0.877193 0.666667 +vt 0.877193 0.654762 +vt 0.929825 0.666667 +vt 0.929825 0.654762 +vt 0.938596 0.654762 +vt 0.912281 0.666667 +vt 0.912281 0.654762 +vt 0.921053 0.654762 +vt 0.885965 0.666667 +vt 0.894737 0.654762 +vt 0.868421 0.666667 +vt 0.868421 0.654762 +vt 0.921053 0.666667 +vt 0.894737 0.666667 +vt 0.903509 0.654762 +vt 0.921053 0.642857 +vt 0.912281 0.642857 +vt 0.938596 0.642857 +vt 0.929825 0.642857 +vt 0.877193 0.642857 +vt 0.903509 0.642857 +vt 0.868421 0.642857 +vt 0.903509 0.666667 +vt 0.894737 0.642857 +vt 0.885965 0.654762 +vt 0.885965 0.642857 +vt 0.877193 0.666667 +vt 0.877193 0.654762 +vt 0.929825 0.666667 +vt 0.929825 0.654762 +vt 0.938596 0.654762 +vt 0.912281 0.666667 +vt 0.912281 0.654762 +vt 0.921053 0.654762 +vt 0.885965 0.666667 +vt 0.894737 0.654762 +vt 0.868421 0.666667 +vt 0.868421 0.654762 +vt 0.921053 0.666667 +vt 0.894737 0.666667 +vt 0.903509 0.654762 +vt 0.921053 0.642857 +vt 0.912281 0.642857 +vt 0.938596 0.642857 +vt 0.929825 0.642857 +vt 0.877193 0.642857 +vt 0.903509 0.642857 +vt 0.868421 0.642857 +vt 0.903509 0.666667 +vt 0.894737 0.642857 +vt 0.885965 0.654762 +vt 0.885965 0.642857 +vt 0.877193 0.666667 +vt 0.877193 0.654762 +vt 0.929825 0.666667 +vt 0.929825 0.654762 +vt 0.938596 0.654762 +vt 0.912281 0.666667 +vt 0.912281 0.654762 +vt 0.921053 0.654762 +vt 0.885965 0.666667 +vt 0.894737 0.654762 +vt 0.868421 0.666667 +vt 0.868421 0.654762 +vt 0.921053 0.666667 +vt 0.894737 0.666667 +vt 0.903509 0.654762 +vt 0.921053 0.642857 +vt 0.912281 0.642857 +vt 0.938596 0.642857 +vt 0.929825 0.642857 +vt 0.877193 0.642857 +vt 0.903509 0.642857 +vt 0.868421 0.642857 +vt 0.903509 0.666667 +vt 0.894737 0.642857 +vt 0.885965 0.654762 +vt 0.885965 0.642857 +vt 0.877193 0.666667 +vt 0.877193 0.654762 +vt 0.929825 0.666667 +vt 0.929825 0.654762 +vt 0.938596 0.654762 +vt 0.912281 0.666667 +vt 0.912281 0.654762 +vt 0.921053 0.654762 +vt 0.885965 0.666667 +vt 0.894737 0.654762 +vt 0.868421 0.666667 +vt 0.868421 0.654762 +vt 0.921053 0.666667 +vt 0.894737 0.666667 +vt 0.903509 0.654762 +vt 0.921053 0.642857 +vt 0.912281 0.642857 +vt 0.938596 0.642857 +vt 0.929825 0.642857 +vt 0.877193 0.642857 +vt 0.903509 0.642857 +vt 0.868421 0.642857 +vt 0.903509 0.666667 +vt 0.894737 0.642857 +vt 0.885965 0.654762 +vt 0.885965 0.642857 +vt 0.877193 0.666667 +vt 0.877193 0.654762 +vt 0.929825 0.666667 +vt 0.929825 0.654762 +vt 0.938596 0.654762 +vt 0.912281 0.666667 +vt 0.912281 0.654762 +vt 0.921053 0.654762 +vt 0.885965 0.666667 +vt 0.894737 0.654762 +vt 0.868421 0.666667 +vt 0.868421 0.654762 +vt 0.921053 0.666667 +vt 0.894737 0.666667 +vt 0.903509 0.654762 +vt 0.921053 0.642857 +vt 0.912281 0.642857 +vt 0.938596 0.642857 +vt 0.929825 0.642857 +vt 0.877193 0.642857 +vt 0.903509 0.642857 +vt 0.868421 0.642857 +vt 0.903509 0.666667 +vt 0.894737 0.642857 +vt 0.885965 0.654762 +vt 0.885965 0.642857 +vt 0.877193 0.666667 +vt 0.877193 0.654762 +vt 0.929825 0.666667 +vt 0.929825 0.654762 +vt 0.938596 0.654762 +vt 0.912281 0.666667 +vt 0.912281 0.654762 +vt 0.921053 0.654762 +vt 0.885965 0.666667 +vt 0.894737 0.654762 +vt 0.868421 0.666667 +vt 0.868421 0.654762 +vt 0.921053 0.666667 +vt 0.894737 0.666667 +vt 0.903509 0.654762 +vt 0.921053 0.642857 +vt 0.912281 0.642857 +vt 0.938596 0.642857 +vt 0.929825 0.642857 +vt 0.877193 0.642857 +vt 0.903509 0.642857 +vt 0.868421 0.642857 +vt 0.903509 0.666667 +vt 0.894737 0.642857 +vt 0.885965 0.654762 +vt 0.885965 0.642857 +vt 0.877193 0.666667 +vt 0.877193 0.654762 +vt 0.929825 0.666667 +vt 0.929825 0.654762 +vt 0.938596 0.654762 +vt 0.912281 0.666667 +vt 0.912281 0.654762 +vt 0.921053 0.654762 +vt 0.885965 0.666667 +vt 0.894737 0.654762 +vt 0.868421 0.666667 +vt 0.868421 0.654762 +vt 0.921053 0.666667 +vt 0.894737 0.666667 +vt 0.903509 0.654762 +vt 0.921053 0.642857 +vt 0.912281 0.642857 +vt 0.938596 0.642857 +vt 0.929825 0.642857 +vt 0.877193 0.642857 +vt 0.903509 0.642857 +vt 0.868421 0.642857 +vt 0.903509 0.666667 +vt 0.894737 0.642857 +vt 0.885965 0.654762 +vt 0.885965 0.642857 +vt 0.877193 0.666667 +vt 0.877193 0.654762 +vt 0.929825 0.666667 +vt 0.929825 0.654762 +vt 0.938596 0.654762 +vt 0.912281 0.666667 +vt 0.912281 0.654762 +vt 0.921053 0.654762 +vt 0.885965 0.666667 +vt 0.894737 0.654762 +vt 0.868421 0.666667 +vt 0.868421 0.654762 +vt 0.921053 0.666667 +vt 0.894737 0.666667 +vt 0.903509 0.654762 +vt 0.921053 0.642857 +vt 0.912281 0.642857 +vt 0.938596 0.642857 +vt 0.929825 0.642857 +vt 0.877193 0.642857 +vt 0.903509 0.642857 +vt 0.868421 0.642857 +vt 0.903509 0.666667 +vt 0.894737 0.642857 +vt 0.885965 0.654762 +vt 0.885965 0.642857 +vt 0.877193 0.666667 +vt 0.877193 0.654762 +vt 0.929825 0.666667 +vt 0.929825 0.654762 +vt 0.938596 0.654762 +vt 0.912281 0.666667 +vt 0.912281 0.654762 +vt 0.921053 0.654762 +vt 0.885965 0.666667 +vt 0.894737 0.654762 +vt 0.868421 0.666667 +vt 0.868421 0.654762 +vt 0.921053 0.666667 +vt 0.894737 0.666667 +vt 0.903509 0.654762 +vt 0.921053 0.642857 +vt 0.912281 0.642857 +vt 0.938596 0.642857 +vt 0.929825 0.642857 +vt 0.877193 0.642857 +vt 0.903509 0.642857 +vt 0.868421 0.642857 +vt 0.903509 0.666667 +vt 0.894737 0.642857 +vt 0.885965 0.654762 +vt 0.885965 0.642857 +vt 0.877193 0.666667 +vt 0.877193 0.654762 +vt 0.929825 0.666667 +vt 0.929825 0.654762 +vt 0.938596 0.654762 +vt 0.912281 0.666667 +vt 0.912281 0.654762 +vt 0.921053 0.654762 +vt 0.885965 0.666667 +vt 0.894737 0.654762 +vt 0.868421 0.666667 +vt 0.868421 0.654762 +vt 0.921053 0.666667 +vt 0.894737 0.666667 +vt 0.903509 0.654762 +vt 0.921053 0.642857 +vt 0.912281 0.642857 +vt 0.938596 0.642857 +vt 0.929825 0.642857 +vt 0.877193 0.642857 +vt 0.903509 0.642857 +vt 0.868421 0.642857 +vt 0.903509 0.666667 +vt 0.894737 0.642857 +vt 0.885965 0.654762 +vt 0.885965 0.642857 +vt 0.877193 0.666667 +vt 0.877193 0.654762 +vt 0.929825 0.666667 +vt 0.929825 0.654762 +vt 0.938596 0.654762 +vt 0.912281 0.666667 +vt 0.912281 0.654762 +vt 0.921053 0.654762 +vt 0.885965 0.666667 +vt 0.894737 0.654762 +vt 0.868421 0.666667 +vt 0.868421 0.654762 +vt 0.921053 0.666667 +vt 0.894737 0.666667 +vt 0.903509 0.654762 +vt 0.921053 0.642857 +vt 0.912281 0.642857 +vt 0.938596 0.642857 +vt 0.929825 0.642857 +vt 0.877193 0.642857 +vt 0.903509 0.642857 +vt 0.868421 0.642857 +vt 0.903509 0.666667 +vt 0.894737 0.642857 +vt 0.885965 0.654762 +vt 0.885965 0.642857 +vt 0.877193 0.666667 +vt 0.877193 0.654762 +vt 0.929825 0.666667 +vt 0.929825 0.654762 +vt 0.938596 0.654762 +vt 0.912281 0.666667 +vt 0.912281 0.654762 +vt 0.921053 0.654762 +vt 0.885965 0.666667 +vt 0.894737 0.654762 +vt 0.868421 0.666667 +vt 0.868421 0.654762 +vt 0.921053 0.666667 +vt 0.894737 0.666667 +vt 0.903509 0.654762 +vt 0.921053 0.642857 +vt 0.912281 0.642857 +vt 0.938596 0.642857 +vt 0.929825 0.642857 +vt 0.877193 0.642857 +vt 0.903509 0.642857 +vt 0.868421 0.642857 +vt 0.903509 0.666667 +vn 0.7071 0.0000 -0.7071 +vn 0.9554 0.2952 -0.0000 +vn 1.0000 0.0000 0.0000 +vn -0.0000 1.0000 -0.0000 +vn 0.6756 0.2952 0.6756 +vn -0.6756 0.2952 0.6756 +vn 0.0000 0.2952 0.9554 +vn -0.6756 0.2952 -0.6756 +vn -0.9554 0.2952 -0.0000 +vn 0.6756 0.2952 -0.6756 +vn -0.0000 0.2952 -0.9554 +vn -1.0000 0.0000 0.0000 +vn -0.7071 0.0000 -0.7071 +vn -0.0000 0.0000 1.0000 +vn -0.7071 0.0000 0.7071 +vn 0.7071 0.0000 0.7071 +vn 0.0000 0.0000 -1.0000 +s 1 +f 308/481/15 317/482/16 307/483/17 +f 317/482/16 309/484/18 310/485/19 +f 309/486/18 312/487/20 311/488/21 +f 309/489/18 314/490/22 313/491/23 +f 309/492/18 317/482/16 316/493/24 +f 310/485/19 309/494/18 311/495/21 +f 312/487/20 309/496/18 313/491/23 +f 309/497/18 316/493/24 315/498/25 +f 303/499/26 314/490/22 302/500/27 +f 305/501/28 312/487/20 304/502/29 +f 307/483/17 310/485/19 306/503/30 +f 301/504/31 316/493/24 308/481/15 +f 302/500/27 315/498/25 301/504/31 +f 304/502/29 313/491/23 303/499/26 +f 306/503/30 311/495/21 305/505/28 +f 314/490/22 309/506/18 315/498/25 +f 325/507/15 334/508/16 324/509/17 +f 334/508/16 326/510/18 327/511/19 +f 326/512/18 329/513/20 328/514/21 +f 326/515/18 331/516/22 330/517/23 +f 326/518/18 334/508/16 333/519/24 +f 327/511/19 326/520/18 328/521/21 +f 329/513/20 326/522/18 330/517/23 +f 326/523/18 333/519/24 332/524/25 +f 320/525/26 331/516/22 319/526/27 +f 322/527/28 329/513/20 321/528/29 +f 324/509/17 327/511/19 323/529/30 +f 318/530/31 333/519/24 325/507/15 +f 319/526/27 332/524/25 318/530/31 +f 321/528/29 330/517/23 320/525/26 +f 323/529/30 328/521/21 322/531/28 +f 331/516/22 326/532/18 332/524/25 +f 342/533/15 351/534/16 341/535/17 +f 351/534/16 343/536/18 344/537/19 +f 343/538/18 346/539/20 345/540/21 +f 343/541/18 348/542/22 347/543/23 +f 343/544/18 351/534/16 350/545/24 +f 344/537/19 343/546/18 345/547/21 +f 346/539/20 343/548/18 347/543/23 +f 343/549/18 350/545/24 349/550/25 +f 337/551/26 348/542/22 336/552/27 +f 339/553/28 346/539/20 338/554/29 +f 341/535/17 344/537/19 340/555/30 +f 335/556/31 350/545/24 342/533/15 +f 336/552/27 349/550/25 335/556/31 +f 338/554/29 347/543/23 337/551/26 +f 340/555/30 345/547/21 339/557/28 +f 348/542/22 343/558/18 349/550/25 +f 359/559/15 368/560/16 358/561/17 +f 368/560/16 360/562/18 361/563/19 +f 360/564/18 363/565/20 362/566/21 +f 360/567/18 365/568/22 364/569/23 +f 360/570/18 368/560/16 367/571/24 +f 361/563/19 360/572/18 362/573/21 +f 363/565/20 360/574/18 364/569/23 +f 360/575/18 367/571/24 366/576/25 +f 354/577/26 365/568/22 353/578/27 +f 356/579/28 363/565/20 355/580/29 +f 358/561/17 361/563/19 357/581/30 +f 352/582/31 367/571/24 359/559/15 +f 353/578/27 366/576/25 352/582/31 +f 355/580/29 364/569/23 354/577/26 +f 357/581/30 362/573/21 356/583/28 +f 365/568/22 360/584/18 366/576/25 +f 376/585/15 385/586/16 375/587/17 +f 385/586/16 377/588/18 378/589/19 +f 377/590/18 380/591/20 379/592/21 +f 377/593/18 382/594/22 381/595/23 +f 377/596/18 385/586/16 384/597/24 +f 378/589/19 377/598/18 379/599/21 +f 380/591/20 377/600/18 381/595/23 +f 377/601/18 384/597/24 383/602/25 +f 371/603/26 382/594/22 370/604/27 +f 373/605/28 380/591/20 372/606/29 +f 375/587/17 378/589/19 374/607/30 +f 369/608/31 384/597/24 376/585/15 +f 370/604/27 383/602/25 369/608/31 +f 372/606/29 381/595/23 371/603/26 +f 374/607/30 379/599/21 373/609/28 +f 382/594/22 377/610/18 383/602/25 +f 393/611/15 402/612/16 392/613/17 +f 402/612/16 394/614/18 395/615/19 +f 394/616/18 397/617/20 396/618/21 +f 394/619/18 399/620/22 398/621/23 +f 394/622/18 402/612/16 401/623/24 +f 395/615/19 394/624/18 396/625/21 +f 397/617/20 394/626/18 398/621/23 +f 394/627/18 401/623/24 400/628/25 +f 388/629/26 399/620/22 387/630/27 +f 390/631/28 397/617/20 389/632/29 +f 392/613/17 395/615/19 391/633/30 +f 386/634/31 401/623/24 393/611/15 +f 387/630/27 400/628/25 386/634/31 +f 389/632/29 398/621/23 388/629/26 +f 391/633/30 396/625/21 390/635/28 +f 399/620/22 394/636/18 400/628/25 +f 410/637/15 419/638/16 409/639/17 +f 419/638/16 411/640/18 412/641/19 +f 411/642/18 414/643/20 413/644/21 +f 411/645/18 416/646/22 415/647/23 +f 411/648/18 419/638/16 418/649/24 +f 412/641/19 411/650/18 413/651/21 +f 414/643/20 411/652/18 415/647/23 +f 411/653/18 418/649/24 417/654/25 +f 405/655/26 416/646/22 404/656/27 +f 407/657/28 414/643/20 406/658/29 +f 409/639/17 412/641/19 408/659/30 +f 403/660/31 418/649/24 410/637/15 +f 404/656/27 417/654/25 403/660/31 +f 406/658/29 415/647/23 405/655/26 +f 408/659/30 413/651/21 407/661/28 +f 416/646/22 411/662/18 417/654/25 +f 427/663/15 436/664/16 426/665/17 +f 436/664/16 428/666/18 429/667/19 +f 428/668/18 431/669/20 430/670/21 +f 428/671/18 433/672/22 432/673/23 +f 428/674/18 436/664/16 435/675/24 +f 429/667/19 428/676/18 430/677/21 +f 431/669/20 428/678/18 432/673/23 +f 428/679/18 435/675/24 434/680/25 +f 422/681/26 433/672/22 421/682/27 +f 424/683/28 431/669/20 423/684/29 +f 426/665/17 429/667/19 425/685/30 +f 420/686/31 435/675/24 427/663/15 +f 421/682/27 434/680/25 420/686/31 +f 423/684/29 432/673/23 422/681/26 +f 425/685/30 430/677/21 424/687/28 +f 433/672/22 428/688/18 434/680/25 +f 444/689/15 453/690/16 443/691/17 +f 453/690/16 445/692/18 446/693/19 +f 445/694/18 448/695/20 447/696/21 +f 445/697/18 450/698/22 449/699/23 +f 445/700/18 453/690/16 452/701/24 +f 446/693/19 445/702/18 447/703/21 +f 448/695/20 445/704/18 449/699/23 +f 445/705/18 452/701/24 451/706/25 +f 439/707/26 450/698/22 438/708/27 +f 441/709/28 448/695/20 440/710/29 +f 443/691/17 446/693/19 442/711/30 +f 437/712/31 452/701/24 444/689/15 +f 438/708/27 451/706/25 437/712/31 +f 440/710/29 449/699/23 439/707/26 +f 442/711/30 447/703/21 441/713/28 +f 450/698/22 445/714/18 451/706/25 +f 461/715/15 470/716/16 460/717/17 +f 470/716/16 462/718/18 463/719/19 +f 462/720/18 465/721/20 464/722/21 +f 462/723/18 467/724/22 466/725/23 +f 462/726/18 470/716/16 469/727/24 +f 463/719/19 462/728/18 464/729/21 +f 465/721/20 462/730/18 466/725/23 +f 462/731/18 469/727/24 468/732/25 +f 456/733/26 467/724/22 455/734/27 +f 458/735/28 465/721/20 457/736/29 +f 460/717/17 463/719/19 459/737/30 +f 454/738/31 469/727/24 461/715/15 +f 455/734/27 468/732/25 454/738/31 +f 457/736/29 466/725/23 456/733/26 +f 459/737/30 464/729/21 458/739/28 +f 467/724/22 462/740/18 468/732/25 +f 478/741/15 487/742/16 477/743/17 +f 487/742/16 479/744/18 480/745/19 +f 479/746/18 482/747/20 481/748/21 +f 479/749/18 484/750/22 483/751/23 +f 479/752/18 487/742/16 486/753/24 +f 480/745/19 479/754/18 481/755/21 +f 482/747/20 479/756/18 483/751/23 +f 479/757/18 486/753/24 485/758/25 +f 473/759/26 484/750/22 472/760/27 +f 475/761/28 482/747/20 474/762/29 +f 477/743/17 480/745/19 476/763/30 +f 471/764/31 486/753/24 478/741/15 +f 472/760/27 485/758/25 471/764/31 +f 474/762/29 483/751/23 473/759/26 +f 476/763/30 481/755/21 475/765/28 +f 484/750/22 479/766/18 485/758/25 +f 495/767/15 504/768/16 494/769/17 +f 504/768/16 496/770/18 497/771/19 +f 496/772/18 499/773/20 498/774/21 +f 496/775/18 501/776/22 500/777/23 +f 496/778/18 504/768/16 503/779/24 +f 497/771/19 496/780/18 498/781/21 +f 499/773/20 496/782/18 500/777/23 +f 496/783/18 503/779/24 502/784/25 +f 490/785/26 501/776/22 489/786/27 +f 492/787/28 499/773/20 491/788/29 +f 494/769/17 497/771/19 493/789/30 +f 488/790/31 503/779/24 495/767/15 +f 489/786/27 502/784/25 488/790/31 +f 491/788/29 500/777/23 490/785/26 +f 493/789/30 498/781/21 492/791/28 +f 501/776/22 496/792/18 502/784/25 +f 512/793/15 521/794/16 511/795/17 +f 521/794/16 513/796/18 514/797/19 +f 513/798/18 516/799/20 515/800/21 +f 513/801/18 518/802/22 517/803/23 +f 513/804/18 521/794/16 520/805/24 +f 514/797/19 513/806/18 515/807/21 +f 516/799/20 513/808/18 517/803/23 +f 513/809/18 520/805/24 519/810/25 +f 507/811/26 518/802/22 506/812/27 +f 509/813/28 516/799/20 508/814/29 +f 511/795/17 514/797/19 510/815/30 +f 505/816/31 520/805/24 512/793/15 +f 506/812/27 519/810/25 505/816/31 +f 508/814/29 517/803/23 507/811/26 +f 510/815/30 515/807/21 509/817/28 +f 518/802/22 513/818/18 519/810/25 +f 529/819/15 538/820/16 528/821/17 +f 538/820/16 530/822/18 531/823/19 +f 530/824/18 533/825/20 532/826/21 +f 530/827/18 535/828/22 534/829/23 +f 530/830/18 538/820/16 537/831/24 +f 531/823/19 530/832/18 532/833/21 +f 533/825/20 530/834/18 534/829/23 +f 530/835/18 537/831/24 536/836/25 +f 524/837/26 535/828/22 523/838/27 +f 526/839/28 533/825/20 525/840/29 +f 528/821/17 531/823/19 527/841/30 +f 522/842/31 537/831/24 529/819/15 +f 523/838/27 536/836/25 522/842/31 +f 525/840/29 534/829/23 524/837/26 +f 527/841/30 532/833/21 526/843/28 +f 535/828/22 530/844/18 536/836/25 +f 546/845/15 555/846/16 545/847/17 +f 555/846/16 547/848/18 548/849/19 +f 547/850/18 550/851/20 549/852/21 +f 547/853/18 552/854/22 551/855/23 +f 547/856/18 555/846/16 554/857/24 +f 548/849/19 547/858/18 549/859/21 +f 550/851/20 547/860/18 551/855/23 +f 547/861/18 554/857/24 553/862/25 +f 541/863/26 552/854/22 540/864/27 +f 543/865/28 550/851/20 542/866/29 +f 545/847/17 548/849/19 544/867/30 +f 539/868/31 554/857/24 546/845/15 +f 540/864/27 553/862/25 539/868/31 +f 542/866/29 551/855/23 541/863/26 +f 544/867/30 549/859/21 543/869/28 +f 552/854/22 547/870/18 553/862/25 +f 563/871/15 572/872/16 562/873/17 +f 572/872/16 564/874/18 565/875/19 +f 564/876/18 567/877/20 566/878/21 +f 564/879/18 569/880/22 568/881/23 +f 564/882/18 572/872/16 571/883/24 +f 565/875/19 564/884/18 566/885/21 +f 567/877/20 564/886/18 568/881/23 +f 564/887/18 571/883/24 570/888/25 +f 558/889/26 569/880/22 557/890/27 +f 560/891/28 567/877/20 559/892/29 +f 562/873/17 565/875/19 561/893/30 +f 556/894/31 571/883/24 563/871/15 +f 557/890/27 570/888/25 556/894/31 +f 559/892/29 568/881/23 558/889/26 +f 561/893/30 566/885/21 560/895/28 +f 569/880/22 564/896/18 570/888/25 +f 308/481/15 316/493/24 317/482/16 +f 303/499/26 313/491/23 314/490/22 +f 305/501/28 311/488/21 312/487/20 +f 307/483/17 317/482/16 310/485/19 +f 301/504/31 315/498/25 316/493/24 +f 302/500/27 314/490/22 315/498/25 +f 304/502/29 312/487/20 313/491/23 +f 306/503/30 310/485/19 311/495/21 +f 325/507/15 333/519/24 334/508/16 +f 320/525/26 330/517/23 331/516/22 +f 322/527/28 328/514/21 329/513/20 +f 324/509/17 334/508/16 327/511/19 +f 318/530/31 332/524/25 333/519/24 +f 319/526/27 331/516/22 332/524/25 +f 321/528/29 329/513/20 330/517/23 +f 323/529/30 327/511/19 328/521/21 +f 342/533/15 350/545/24 351/534/16 +f 337/551/26 347/543/23 348/542/22 +f 339/553/28 345/540/21 346/539/20 +f 341/535/17 351/534/16 344/537/19 +f 335/556/31 349/550/25 350/545/24 +f 336/552/27 348/542/22 349/550/25 +f 338/554/29 346/539/20 347/543/23 +f 340/555/30 344/537/19 345/547/21 +f 359/559/15 367/571/24 368/560/16 +f 354/577/26 364/569/23 365/568/22 +f 356/579/28 362/566/21 363/565/20 +f 358/561/17 368/560/16 361/563/19 +f 352/582/31 366/576/25 367/571/24 +f 353/578/27 365/568/22 366/576/25 +f 355/580/29 363/565/20 364/569/23 +f 357/581/30 361/563/19 362/573/21 +f 376/585/15 384/597/24 385/586/16 +f 371/603/26 381/595/23 382/594/22 +f 373/605/28 379/592/21 380/591/20 +f 375/587/17 385/586/16 378/589/19 +f 369/608/31 383/602/25 384/597/24 +f 370/604/27 382/594/22 383/602/25 +f 372/606/29 380/591/20 381/595/23 +f 374/607/30 378/589/19 379/599/21 +f 393/611/15 401/623/24 402/612/16 +f 388/629/26 398/621/23 399/620/22 +f 390/631/28 396/618/21 397/617/20 +f 392/613/17 402/612/16 395/615/19 +f 386/634/31 400/628/25 401/623/24 +f 387/630/27 399/620/22 400/628/25 +f 389/632/29 397/617/20 398/621/23 +f 391/633/30 395/615/19 396/625/21 +f 410/637/15 418/649/24 419/638/16 +f 405/655/26 415/647/23 416/646/22 +f 407/657/28 413/644/21 414/643/20 +f 409/639/17 419/638/16 412/641/19 +f 403/660/31 417/654/25 418/649/24 +f 404/656/27 416/646/22 417/654/25 +f 406/658/29 414/643/20 415/647/23 +f 408/659/30 412/641/19 413/651/21 +f 427/663/15 435/675/24 436/664/16 +f 422/681/26 432/673/23 433/672/22 +f 424/683/28 430/670/21 431/669/20 +f 426/665/17 436/664/16 429/667/19 +f 420/686/31 434/680/25 435/675/24 +f 421/682/27 433/672/22 434/680/25 +f 423/684/29 431/669/20 432/673/23 +f 425/685/30 429/667/19 430/677/21 +f 444/689/15 452/701/24 453/690/16 +f 439/707/26 449/699/23 450/698/22 +f 441/709/28 447/696/21 448/695/20 +f 443/691/17 453/690/16 446/693/19 +f 437/712/31 451/706/25 452/701/24 +f 438/708/27 450/698/22 451/706/25 +f 440/710/29 448/695/20 449/699/23 +f 442/711/30 446/693/19 447/703/21 +f 461/715/15 469/727/24 470/716/16 +f 456/733/26 466/725/23 467/724/22 +f 458/735/28 464/722/21 465/721/20 +f 460/717/17 470/716/16 463/719/19 +f 454/738/31 468/732/25 469/727/24 +f 455/734/27 467/724/22 468/732/25 +f 457/736/29 465/721/20 466/725/23 +f 459/737/30 463/719/19 464/729/21 +f 478/741/15 486/753/24 487/742/16 +f 473/759/26 483/751/23 484/750/22 +f 475/761/28 481/748/21 482/747/20 +f 477/743/17 487/742/16 480/745/19 +f 471/764/31 485/758/25 486/753/24 +f 472/760/27 484/750/22 485/758/25 +f 474/762/29 482/747/20 483/751/23 +f 476/763/30 480/745/19 481/755/21 +f 495/767/15 503/779/24 504/768/16 +f 490/785/26 500/777/23 501/776/22 +f 492/787/28 498/774/21 499/773/20 +f 494/769/17 504/768/16 497/771/19 +f 488/790/31 502/784/25 503/779/24 +f 489/786/27 501/776/22 502/784/25 +f 491/788/29 499/773/20 500/777/23 +f 493/789/30 497/771/19 498/781/21 +f 512/793/15 520/805/24 521/794/16 +f 507/811/26 517/803/23 518/802/22 +f 509/813/28 515/800/21 516/799/20 +f 511/795/17 521/794/16 514/797/19 +f 505/816/31 519/810/25 520/805/24 +f 506/812/27 518/802/22 519/810/25 +f 508/814/29 516/799/20 517/803/23 +f 510/815/30 514/797/19 515/807/21 +f 529/819/15 537/831/24 538/820/16 +f 524/837/26 534/829/23 535/828/22 +f 526/839/28 532/826/21 533/825/20 +f 528/821/17 538/820/16 531/823/19 +f 522/842/31 536/836/25 537/831/24 +f 523/838/27 535/828/22 536/836/25 +f 525/840/29 533/825/20 534/829/23 +f 527/841/30 531/823/19 532/833/21 +f 546/845/15 554/857/24 555/846/16 +f 541/863/26 551/855/23 552/854/22 +f 543/865/28 549/852/21 550/851/20 +f 545/847/17 555/846/16 548/849/19 +f 539/868/31 553/862/25 554/857/24 +f 540/864/27 552/854/22 553/862/25 +f 542/866/29 550/851/20 551/855/23 +f 544/867/30 548/849/19 549/859/21 +f 563/871/15 571/883/24 572/872/16 +f 558/889/26 568/881/23 569/880/22 +f 560/891/28 566/878/21 567/877/20 +f 562/873/17 572/872/16 565/875/19 +f 556/894/31 570/888/25 571/883/24 +f 557/890/27 569/880/22 570/888/25 +f 559/892/29 567/877/20 568/881/23 +f 561/893/30 565/875/19 566/885/21 +o Frame +v -0.500000 0.000000 1.500000 +v 0.500000 0.000000 1.500000 +v -0.500000 0.000000 -1.500000 +v 0.500000 0.000000 -1.500000 +v -0.437500 0.125000 1.437500 +v 0.437500 0.125000 1.437500 +v -0.437500 0.125000 -1.437500 +v 0.437500 0.125000 -1.437500 +v -0.437500 0.875000 1.437500 +v 0.437500 0.875000 1.437500 +v -0.437500 0.875000 -1.437500 +v 0.437500 0.875000 -1.437500 +v -0.500000 1.000000 1.500000 +v 0.500000 1.000000 1.500000 +v -0.500000 1.000000 -1.500000 +v 0.500000 1.000000 -1.500000 +v -0.500000 0.125000 -1.500000 +v -0.500000 0.125000 1.500000 +v 0.500000 0.125000 1.500000 +v 0.500000 0.125000 -1.500000 +v -0.500000 0.875000 -1.500000 +v -0.500000 0.875000 1.500000 +v 0.500000 0.875000 1.500000 +v 0.500000 0.875000 -1.500000 +v 0.250000 1.000000 -0.750000 +v 0.250000 1.000000 0.750000 +v -0.250000 1.000000 0.750000 +v -0.250000 1.000000 -0.750000 +v -0.500000 1.500000 -1.500000 +v -0.500000 1.500000 1.500000 +v 0.500000 1.500000 1.500000 +v 0.500000 1.500000 -1.500000 +v -0.250000 1.500000 -0.750000 +v -0.250000 1.500000 0.750000 +v 0.250000 1.500000 0.750000 +v 0.250000 1.500000 -0.750000 +v 0.437500 1.500000 -1.437500 +v 0.437500 1.500000 -1.062500 +v -0.437500 1.500000 -1.062500 +v -0.437500 1.500000 -1.437500 +v 0.437500 1.000000 -1.437500 +v 0.437500 1.000000 -1.062500 +v -0.437500 1.000000 -1.062500 +v -0.437500 1.000000 -1.437500 +v -0.437500 1.000000 1.062500 +v -0.437500 1.000000 1.437500 +v 0.437500 1.000000 1.437500 +v 0.437500 1.000000 1.062500 +v -0.437500 1.500000 1.062500 +v -0.437500 1.500000 1.437500 +v 0.437500 1.500000 1.437500 +v 0.437500 1.500000 1.062500 +v -0.500000 1.750000 1.500000 +v -0.500000 2.000000 1.250000 +v 0.500000 2.000000 1.250000 +v 0.500000 1.750000 1.500000 +v -0.500000 2.000000 -1.250000 +v -0.500000 1.750000 -1.500000 +v 0.500000 1.750000 -1.500000 +v 0.500000 2.000000 -1.250000 +v 0.250000 0.875000 0.750000 +v 0.250000 0.875000 -0.750000 +v -0.250000 0.875000 0.750000 +v -0.250000 0.875000 -0.750000 +vt 0.438596 0.166667 +vt 0.017544 0.357143 +vt 0.017544 0.166667 +vt 0.421053 0.142857 +vt 0.017544 0.000000 +vt 0.421053 -0.000000 +vt 0.438596 0.142857 +vt 0.456140 0.357143 +vt 0.438596 0.357143 +vt 0.000000 0.166667 +vt 0.017544 0.380952 +vt 0.543860 0.142857 +vt 0.421053 -0.000000 +vt 0.543860 -0.000000 +vt 0.333333 0.833333 +vt 0.017544 0.785714 +vt 0.438596 0.785714 +vt 0.017544 1.000000 +vt 0.438596 0.976190 +vt 0.438596 1.000000 +vt 0.456140 0.976190 +vt 0.456140 0.785714 +vt -0.000000 0.785714 +vt 0.017544 0.976190 +vt -0.000000 0.976190 +vt 0.438596 0.761905 +vt 0.017544 0.761905 +vt 0.429825 0.559524 +vt 0.017544 0.571429 +vt 0.026316 0.559524 +vt 0.026316 0.392857 +vt 0.438596 0.380952 +vt 0.429825 0.392857 +vt 0.438596 0.571429 +vt 0.026316 0.583333 +vt 0.438596 0.571429 +vt 0.429825 0.583333 +vt 0.026316 0.750000 +vt 0.017544 0.571429 +vt 0.429825 0.750000 +vt 0.543860 0.142857 +vt 0.543860 -0.000000 +vt 0.421053 0.142857 +vt 0.017544 0.000000 +vt 0.543860 0.476190 +vt 0.508772 0.285714 +vt 0.543860 0.285714 +vt 0.964912 0.190476 +vt 0.859649 0.047619 +vt 0.964912 0.000000 +vt 0.578947 0.285714 +vt 0.929825 0.476190 +vt 0.578947 0.476190 +vt 0.096491 0.619048 +vt 0.114035 0.714286 +vt 0.096491 0.714286 +vt 0.543860 0.190476 +vt 0.929825 0.285714 +vt 0.964912 0.285714 +vt 1.000000 0.476190 +vt 0.964912 0.476190 +vt 0.543860 -0.000000 +vt 0.649123 0.142857 +vt 0.859649 0.142857 +vt 0.649123 0.047619 +vt 0.201754 0.392857 +vt 0.149123 0.488095 +vt 0.149123 0.392857 +vt 0.026316 0.488095 +vt 0.026316 0.392857 +vt 0.324561 0.392857 +vt 0.201754 0.488095 +vt 0.377193 0.392857 +vt 0.324561 0.488095 +vt 0.377193 0.392857 +vt 0.324561 0.488095 +vt 0.324561 0.392857 +vt 0.201754 0.488095 +vt 0.201754 0.392857 +vt 0.149123 0.392857 +vt 0.026316 0.488095 +vt 0.026316 0.392857 +vt 0.149123 0.488095 +vt 0.964912 0.571429 +vt 0.543860 0.571429 +vt 0.122807 0.833333 +vt 0.122807 0.928571 +vt 0.333333 0.928571 +vt 0.324561 0.714286 +vt 0.114035 0.619048 +vt 0.324561 0.619048 +vt 0.114035 0.738095 +vt 0.324561 0.738095 +vt 0.324561 0.595238 +vt 0.114035 0.595238 +vt 0.342105 0.714286 +vt 0.342105 0.619048 +vt 0.017544 0.142857 +vt 0.017544 0.142857 +vt 0.456140 0.166667 +vt 0.000000 0.357143 +vt 0.017544 0.142857 +vt 0.508772 0.476190 +vt 0.964912 0.238095 +vt 0.543860 0.238095 +vt 1.000000 0.285714 +vt 0.377193 0.488095 +vt 0.377193 0.488095 +vt 0.543860 0.523810 +vt 0.964912 0.523810 +vn 0.0000 -1.0000 0.0000 +vn 1.0000 0.0000 0.0000 +vn -1.0000 0.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +vn 0.0000 0.0000 1.0000 +vn 0.0000 1.0000 0.0000 +vn 0.0000 0.7071 0.7071 +vn 0.0000 0.7071 -0.7071 +s off +f 575/897/32 574/898/32 573/899/32 +f 584/900/33 578/901/33 580/902/33 +f 573/899/34 589/903/34 575/897/34 +f 575/897/35 592/904/35 576/905/35 +f 574/898/36 590/906/36 573/899/36 +f 576/905/33 591/907/33 574/898/33 +f 582/908/36 577/909/36 578/910/36 +f 597/911/37 586/912/37 588/913/37 +f 594/914/34 587/915/34 593/916/34 +f 593/917/35 588/913/35 596/918/35 +f 595/919/36 585/920/36 594/921/36 +f 596/922/33 586/912/33 595/923/33 +f 579/924/37 590/925/37 577/926/37 +f 577/926/37 591/907/37 578/927/37 +f 578/927/37 592/928/37 580/929/37 +f 580/929/37 589/930/37 579/924/37 +f 581/931/32 593/932/32 583/933/32 +f 582/934/32 594/935/32 581/931/32 +f 584/936/32 595/923/32 582/934/32 +f 583/933/32 596/922/32 584/936/32 +f 583/937/35 580/902/35 579/938/35 +f 581/939/34 579/940/34 577/909/34 +f 625/941/36 603/942/36 628/943/36 +f 604/944/32 605/945/32 601/946/32 +f 627/947/37 629/948/37 626/949/37 +f 600/950/36 634/951/36 597/952/36 +f 603/953/33 604/944/33 632/954/33 +f 631/955/35 601/956/35 630/957/35 +f 602/958/32 607/959/32 603/953/32 +f 603/953/32 608/960/32 604/944/32 +f 601/946/32 606/961/32 602/958/32 +f 613/962/33 610/963/33 614/964/33 +f 614/964/36 611/965/36 615/966/36 +f 616/967/35 609/968/35 613/962/35 +f 615/969/34 612/970/34 616/967/34 +f 618/971/34 621/972/34 617/973/34 +f 617/973/35 624/974/35 620/975/35 +f 619/976/36 622/977/36 618/978/36 +f 620/975/33 623/979/33 619/976/33 +f 628/943/38 626/949/38 625/941/38 +f 630/957/39 632/954/39 631/955/39 +f 601/980/34 602/981/34 626/949/34 +f 598/982/37 585/920/37 586/912/37 +f 599/983/37 587/915/37 585/920/37 +f 600/984/37 588/913/37 587/915/37 +f 633/985/37 636/986/37 635/987/37 +f 597/988/34 633/985/34 598/989/34 +f 599/990/33 636/986/33 600/991/33 +f 598/992/35 635/987/35 599/993/35 +f 575/897/32 576/905/32 574/898/32 +f 584/900/33 582/994/33 578/901/33 +f 573/899/34 590/995/34 589/903/34 +f 575/897/35 589/996/35 592/904/35 +f 574/898/36 591/997/36 590/906/36 +f 576/905/33 592/928/33 591/907/33 +f 582/908/36 581/939/36 577/909/36 +f 597/911/37 598/982/37 586/912/37 +f 594/914/34 585/920/34 587/915/34 +f 593/917/35 587/915/35 588/913/35 +f 595/919/36 586/912/36 585/920/36 +f 596/922/33 588/913/33 586/912/33 +f 579/924/37 589/930/37 590/925/37 +f 577/926/37 590/925/37 591/907/37 +f 578/927/37 591/907/37 592/928/37 +f 580/929/37 592/928/37 589/930/37 +f 581/931/32 594/935/32 593/932/32 +f 582/934/32 595/923/32 594/935/32 +f 584/936/32 596/922/32 595/923/32 +f 583/933/32 593/932/32 596/922/32 +f 583/937/35 584/900/35 580/902/35 +f 581/939/34 583/998/34 579/940/34 +f 625/941/36 602/999/36 603/942/36 +f 604/944/32 608/960/32 605/945/32 +f 627/947/37 632/954/37 629/948/37 +f 600/950/36 636/986/36 634/951/36 +f 604/944/33 631/1000/33 632/954/33 +f 632/954/33 627/947/33 603/953/33 +f 627/947/33 628/1001/33 603/953/33 +f 631/955/35 604/1002/35 601/956/35 +f 602/958/32 606/961/32 607/959/32 +f 603/953/32 607/959/32 608/960/32 +f 601/946/32 605/945/32 606/961/32 +f 613/962/33 609/968/33 610/963/33 +f 614/964/36 610/963/36 611/965/36 +f 616/967/35 612/970/35 609/968/35 +f 615/969/34 611/1003/34 612/970/34 +f 618/971/34 622/1004/34 621/972/34 +f 617/973/35 621/972/35 624/974/35 +f 619/976/36 623/979/36 622/977/36 +f 620/975/33 624/974/33 623/979/33 +f 628/943/38 627/947/38 626/949/38 +f 630/957/39 629/948/39 632/954/39 +f 602/981/34 625/1005/34 626/949/34 +f 626/949/34 629/948/34 601/980/34 +f 629/948/34 630/1006/34 601/980/34 +f 598/982/37 599/983/37 585/920/37 +f 599/983/37 600/984/37 587/915/37 +f 600/984/37 597/911/37 588/913/37 +f 633/985/37 634/951/37 636/986/37 +f 597/988/34 634/951/34 633/985/34 +f 599/990/33 635/987/33 636/986/33 +f 598/992/35 633/985/35 635/987/35 diff --git a/src/main/resources/assets/hbm/models/weapons/animations/lag.json b/src/main/resources/assets/hbm/models/weapons/animations/lag.json new file mode 100644 index 000000000..332c4fb73 --- /dev/null +++ b/src/main/resources/assets/hbm/models/weapons/animations/lag.json @@ -0,0 +1 @@ +{"anim": {"Dryfire": {"Grip": {"location": {"x": [[0.0, 0.0, "BEZIER", "AUTO", 194.44444974263507, 0.0, "AUTO_CLAMPED"], [0.0, 583.3333333333334, "BEZIER", "AUTO", 388.8888676961263, 0.0, "AUTO_CLAMPED", 644.444465637207, 0.0, "AUTO_CLAMPED"], [0.07023310661315918, 183.33333333333326, "BEZIER", "AUTO", 705.555534362793, 0.07023310661315918, "AUTO_CLAMPED", 777.7777989705403, 0.07023310661315918, "AUTO_CLAMPED"], [0.07023310661315918, 33.33333333333337, "BEZIER", "AUTO", 788.8888676961263, 0.07023310661315918, "AUTO_CLAMPED", 850.0, 0.07023310661315918, "AUTO_CLAMPED"], [-0.005564689636230469, 150.0, "BEZIER", "AUTO", 900.0, -0.005564689636230469, "AUTO_CLAMPED", 977.7777989705404, -0.005564689636230469, "AUTO_CLAMPED"], [0.0, 83.33333333333326, "BEZIER", "AUTO", 1005.5555343627929, 0.0, "AUTO_CLAMPED", 1061.1111323038738, 0.0, "AUTO_CLAMPED"]], "z": [[-0.0, 0.0, "BEZIER", "AUTO", 194.44444974263507, -0.0, "AUTO_CLAMPED"], [-0.0, 583.3333333333334, "BEZIER", "AUTO", 388.8888676961263, -0.0, "AUTO_CLAMPED", 644.444465637207, -0.0, "AUTO_CLAMPED"], [-0.0, 183.33333333333326, "BEZIER", "AUTO", 705.555534362793, -0.0, "AUTO_CLAMPED", 777.7777989705403, -0.0, "AUTO_CLAMPED"], [-0.0, 33.33333333333337, "BEZIER", "AUTO", 788.8888676961263, -0.0, "AUTO_CLAMPED", 850.0, -0.0, "AUTO_CLAMPED"], [-0.0, 150.0, "BEZIER", "AUTO", 900.0, -0.0, "AUTO_CLAMPED", 977.7777989705404, -0.0, "AUTO_CLAMPED"], [-0.0, 83.33333333333326, "BEZIER", "AUTO", 1005.5555343627929, -0.0, "AUTO_CLAMPED", 1061.1111323038738, -0.0, "AUTO_CLAMPED"]], "y": [[0.0, 0.0, "BEZIER", "AUTO", 194.44444974263507, 0.0, "AUTO_CLAMPED"], [0.0, 583.3333333333334, "BEZIER", "AUTO", 388.8888676961263, 0.0, "AUTO_CLAMPED", 644.444465637207, 0.0, "AUTO_CLAMPED"], [0.17485475540161133, 183.33333333333326, "BEZIER", "AUTO", 705.555534362793, 0.17485475540161133, "AUTO_CLAMPED", 777.7777989705403, 0.17485475540161133, "AUTO_CLAMPED"], [0.17485475540161133, 33.33333333333337, "BEZIER", "AUTO", 788.8888676961263, 0.17485475540161133, "AUTO_CLAMPED", 850.0, 0.17485475540161133, "AUTO_CLAMPED"], [-0.016497015953063965, 150.0, "BEZIER", "AUTO", 900.0, -0.016497015953063965, "AUTO_CLAMPED", 977.7777989705404, -0.016497015953063965, "AUTO_CLAMPED"], [0.0, 83.33333333333326, "BEZIER", "AUTO", 1005.5555343627929, 0.0, "AUTO_CLAMPED", 1061.1111323038738, 0.0, "AUTO_CLAMPED"]]}, "rotation_euler": {"x": [[0.0, 0.0, "BEZIER", "AUTO", 172.22221692403158, 0.0, "AUTO_CLAMPED"], [0.0, 516.6666666666666, "BEZIER", "AUTO", 344.44446563720703, 0.0, "AUTO_CLAMPED", 583.3333333333334, 0.0, "AUTO_CLAMPED"], [-2.1999998762362876, 200.0, "BEZIER", "AUTO", 650.0, -2.1999998762362876, "AUTO_CLAMPED", 744.444465637207, -2.1999998762362876, "AUTO_CLAMPED"], [-2.1999998762362876, 83.33333333333337, "BEZIER", "AUTO", 772.2222010294596, -2.1999998762362876, "AUTO_CLAMPED", 877.7777989705403, -2.1999998762362876, "AUTO_CLAMPED"], [0.0, 233.33333333333326, "BEZIER", "AUTO", 955.555534362793, 0.0, "AUTO_CLAMPED", 1111.111068725586, 0.0, "AUTO_CLAMPED"]], "z": [[0.0, 0.0, "BEZIER", "AUTO", 194.44444974263507, 0.0, "AUTO_CLAMPED"], [0.0, 583.3333333333334, "BEZIER", "AUTO", 388.8888676961263, 0.0, "AUTO_CLAMPED", 644.444465637207, 0.0, "AUTO_CLAMPED"], [-2.575079927950949, 183.33333333333326, "BEZIER", "AUTO", 705.555534362793, -2.575079927950949, "AUTO_CLAMPED", 777.7777989705403, -2.575079927950949, "AUTO_CLAMPED"], [-2.575079927950949, 33.33333333333337, "BEZIER", "AUTO", 788.8888676961263, -2.575079927950949, "AUTO_CLAMPED", 850.0, -2.575079927950949, "AUTO_CLAMPED"], [0.2377203317919303, 150.0, "BEZIER", "AUTO", 900.0, 0.2377203317919303, "AUTO_CLAMPED", 977.7777989705404, 0.2377203317919303, "AUTO_CLAMPED"], [-0.0, 83.33333333333326, "BEZIER", "AUTO", 1005.5555343627929, -0.0, "AUTO_CLAMPED", 1061.1111323038738, -0.0, "AUTO_CLAMPED"]], "y": [[0.0, 0.0, "BEZIER", "AUTO", 194.44444974263507, 0.0, "AUTO_CLAMPED"], [0.0, 583.3333333333334, "BEZIER", "AUTO", 388.8888676961263, 0.0, "AUTO_CLAMPED", 644.444465637207, 0.0, "AUTO_CLAMPED"], [0.0, 183.33333333333326, "BEZIER", "AUTO", 705.555534362793, 0.0, "AUTO_CLAMPED", 777.7777989705403, 0.0, "AUTO_CLAMPED"], [0.0, 33.33333333333337, "BEZIER", "AUTO", 788.8888676961263, 0.0, "AUTO_CLAMPED", 877.7777989705403, 0.0, "AUTO_CLAMPED"], [0.0, 233.33333333333326, "BEZIER", "AUTO", 955.555534362793, 0.0, "AUTO_CLAMPED", 1111.111068725586, 0.0, "AUTO_CLAMPED"]]}}, "Hammer": {"location": {"x": [[3.125, 0.0, "BEZIER", "AUTO", 16.666666666666668, 3.125, "AUTO_CLAMPED"]], "z": [[1.862645149230957e-08, 0.0, "BEZIER", "AUTO", 16.666666666666668, 1.862645149230957e-08, "AUTO_CLAMPED"]], "y": [[0.125, 0.0, "BEZIER", "AUTO", 16.666666666666668, 0.125, "AUTO_CLAMPED"]]}, "rotation_euler": {"z": [[-0.0, 0.0, "BEZIER", "AUTO", 11.111111442248026, -0.0, "AUTO_CLAMPED"], [25.00000012650595, 33.333333333333336, "BEZIER", "AUTO", 22.22222089767456, 25.00000012650595, "AUTO_CLAMPED", 216.66666666666669, 25.00000012650595, "AUTO_CLAMPED"], [25.00000012650595, 550.0, "BEZIER", "AUTO", 400.0, 25.00000012650595, "AUTO_CLAMPED", 627.7777989705403, 25.00000012650595, "AUTO_CLAMPED"], [-60.000001669652114, 133.33333333333326, "BEZIER", "AUTO", 672.2222010294596, -60.000001669652114, "AUTO_CLAMPED", 733.3333333333333, -60.000001669652114, "AUTO_CLAMPED"], [-60.000001669652114, 50.0, "BEZIER", "AUTO", 750.0, -60.000001669652114, "AUTO_CLAMPED", 783.3333333333334, -60.000001669652114, "AUTO_CLAMPED"], [-0.0, 50.0, "BEZIER", "AUTO", 800.0, -0.0, "AUTO_CLAMPED", 833.3333333333334, -0.0, "AUTO_CLAMPED"]], "x": [[0.0, 583.3333333333334, "BEZIER", "AUTO", 627.7777989705403, 0.0, "AUTO_CLAMPED"], [0.0, 133.33333333333326, "BEZIER", "AUTO", 672.2222010294596, 0.0, "AUTO_CLAMPED", 733.3333333333333, 0.0, "AUTO_CLAMPED"], [0.0, 50.0, "BEZIER", "AUTO", 750.0, 0.0, "AUTO_CLAMPED", 783.3333333333334, 0.0, "AUTO_CLAMPED"]], "y": [[0.0, 583.3333333333334, "BEZIER", "AUTO", 627.7777989705403, 0.0, "AUTO_CLAMPED"], [0.0, 133.33333333333326, "BEZIER", "AUTO", 672.2222010294596, 0.0, "AUTO_CLAMPED", 733.3333333333333, 0.0, "AUTO_CLAMPED"], [0.0, 50.0, "BEZIER", "AUTO", 750.0, 0.0, "AUTO_CLAMPED", 783.3333333333334, 0.0, "AUTO_CLAMPED"]]}}}, "Firing": {"Bullet": {"location": {"x": [[1.59375, 0.0, "BEZIER", "AUTO", 11.111111442248026, 1.59375, "AUTO_CLAMPED"], [1.59375, 33.333333333333336, "QUAD", "EASE_OUT", 22.22222089767456, 1.59375, "AUTO_CLAMPED"], [0.90625, 66.66666666666666, "SINE", "EASE_IN"], [-0.5937501192092896, 100.0, "BEZIER", "AUTO", 233.33333333333334, -0.5937501192092896, "AUTO_CLAMPED"]], "y": [[0.5625, 0.0, "BEZIER", "AUTO", 11.111111442248026, 0.5625, "AUTO_CLAMPED"], [0.5625, 33.333333333333336, "QUAD", "AUTO", 22.22222089767456, 0.5625, "AUTO_CLAMPED"], [0.875, 66.66666666666666, "SINE", "AUTO"], [0.9999978542327881, 66.66666666666666, "BEZIER", "AUTO", 188.88888359069824, 0.9999978542327881, "AUTO_CLAMPED"]]}, "rotation_euler": {"z": [[-19.99999941818584, 0.0, "BEZIER", "AUTO", 11.111111442248026, -19.99999941818584, "AUTO_CLAMPED"], [-19.99999941818584, 33.333333333333336, "QUAD", "AUTO", 22.22222089767456, -19.99999941818584, "AUTO_CLAMPED"], [-7.500000208706514, 66.66666666666666, "SINE", "AUTO"], [-0.0, 66.66666666666666, "BEZIER", "AUTO", 188.88888359069824, -0.0, "AUTO_CLAMPED"]]}}, "Grip": {"location": {"x": [[0.0, 0.0, "BEZIER", "AUTO", 11.111111442248026, 0.0, "AUTO_CLAMPED"], [0.0, 33.333333333333336, "QUAD", "EASE_OUT", 22.22222089767456, 0.0, "AUTO_CLAMPED"], [0.5237600207328796, 49.99999999999999, "BEZIER", "AUTO", 108.33333333333334, 0.5237600207328796, "ALIGNED"], [0.3084455132484436, 50.000000000000014, "BEZIER", "AUTO", 116.66666666666667, 0.43553054332733154, "AUTO_CLAMPED", 161.11111640930176, 0.09663715958595276, "AUTO_CLAMPED"], [-0.04659605026245117, 83.33333333333334, "BEZIER", "AUTO", 188.88888359069824, -0.04659605026245117, "AUTO_CLAMPED", 233.33333333333334, -0.04659605026245117, "AUTO_CLAMPED"], [0.0, 50.0, "BEZIER", "AUTO", 250.0, 0.0, "AUTO_CLAMPED", 283.3333333333333, 0.0, "AUTO_CLAMPED"]], "z": [[-0.0, 0.0, "BEZIER", "AUTO", 11.111111442248026, -0.0, "AUTO_CLAMPED"], [-0.0, 33.333333333333336, "QUAD", "EASE_OUT", 22.22222089767456, -0.0, "AUTO_CLAMPED"], [6.210800052031118e-08, 49.99999999999999, "BEZIER", "AUTO", 100.0, 6.210800052031118e-08, "AUTO_CLAMPED"], [6.210800052031118e-08, 50.000000000000014, "BEZIER", "AUTO", 116.66666666666667, 6.210800052031118e-08, "AUTO_CLAMPED", 161.11111640930176, 6.210800052031118e-08, "AUTO_CLAMPED"], [-1.2910305713376147e-08, 83.33333333333334, "BEZIER", "AUTO", 188.88888359069824, -1.2910305713376147e-08, "AUTO_CLAMPED", 233.33333333333334, -1.2910305713376147e-08, "AUTO_CLAMPED"], [-1.063667554035419e-08, 50.0, "BEZIER", "AUTO", 250.0, -1.063667554035419e-08, "AUTO_CLAMPED", 283.3333333333333, -1.063667554035419e-08, "AUTO_CLAMPED"]], "y": [[0.0, 0.0, "BEZIER", "AUTO", 11.111111442248026, 0.0, "AUTO_CLAMPED"], [0.0, 33.333333333333336, "QUAD", "EASE_OUT", 22.22222089767456, 0.0, "AUTO_CLAMPED"], [0.431023508310318, 49.99999999999999, "BEZIER", "AUTO", 108.33333333333334, 0.431023508310318, "ALIGNED"], [0.2511425018310547, 50.000000000000014, "BEZIER", "AUTO", 116.66666666666667, 0.3581860363483429, "AUTO_CLAMPED", 161.11111640930176, 0.07273662090301514, "AUTO_CLAMPED"], [-0.05201435089111328, 83.33333333333334, "BEZIER", "AUTO", 188.88888359069824, -0.05201435089111328, "AUTO_CLAMPED", 233.33333333333334, -0.05201435089111328, "AUTO_CLAMPED"], [0.0, 50.0, "BEZIER", "AUTO", 250.0, 0.0, "AUTO_CLAMPED", 283.3333333333333, 0.0, "AUTO_CLAMPED"]]}, "rotation_euler": {"z": [[0.0, 0.0, "BEZIER", "AUTO", 11.111111442248026, 0.0, "AUTO_CLAMPED"], [0.0, 33.333333333333336, "QUAD", "EASE_OUT", 22.22222089767456, 0.0, "AUTO_CLAMPED"], [-2.49999992727323, 49.99999999999999, "BEZIER", "AUTO", 100.0, -2.49999992727323, "AUTO_CLAMPED"], [-1.2580600137440534, 50.000000000000014, "BEZIER", "AUTO", 116.67113304138184, -4.465294226503781, "ALIGNED", 161.0812822977702, 4.083021345262861, "ALIGNED"], [1.3109028394749147, 83.33333333333334, "BACK", "EASE_OUT", 188.88888359069824, 1.3109028394749147, "ALIGNED", 3.6015799045562744], [-0.0, 216.66666666666669, "BEZIER", "AUTO", 505.5555661519369, -0.0, "AUTO_CLAMPED"]], "y": [[0.0, 0.0, "BEZIER", "AUTO", 11.111111442248026, 0.0, "AUTO_CLAMPED"], [0.0, 33.333333333333336, "QUAD", "EASE_OUT", 22.22222089767456, 0.0, "AUTO_CLAMPED"], [0.6000007957649733, 49.99999999999999, "BEZIER", "AUTO", 100.0, 0.6000007957649733, "AUTO_CLAMPED"], [-0.4999999961268166, 50.000000000000014, "BEZIER", "AUTO", 116.66666666666667, -0.4999999961268166, "AUTO_CLAMPED", 233.33333333333334, -0.4999999961268166, "AUTO_CLAMPED"], [0.0, 300.0, "BEZIER", "AUTO", 333.3333333333333, 0.0, "AUTO_CLAMPED", 533.3333333333334, 0.0, "AUTO_CLAMPED"]]}}, "Hammer": {"rotation_euler": {"z": [[-0.0, 0.0, "BEZIER", "AUTO", 44.444445768992104, -0.0, "ALIGNED"], [25.00000012650595, 33.333333333333336, "BEZIER", "AUTO", 22.22222089767456, 25.00000012650595, "AUTO_CLAMPED", 55.55555820465088, 25.00000012650595, "AUTO_CLAMPED"], [-45.00000125223908, 66.66666666666666, "BEZIER", "AUTO", 77.77777512868245, -45.00000125223908, "AUTO_CLAMPED", 133.33333333333334, -45.00000125223908, "AUTO_CLAMPED"], [-0.0, 100.0, "BEZIER", "AUTO", 166.66666666666666, -0.0, "AUTO_CLAMPED", 233.33333333333334, -0.0, "AUTO_CLAMPED"]]}, "location": {"x": [[3.125, 0.0, "BEZIER", "AUTO", 16.666666666666668, 3.125, "AUTO_CLAMPED"]], "z": [[1.862645149230957e-08, 0.0, "BEZIER", "AUTO", 16.666666666666668, 1.862645149230957e-08, "AUTO_CLAMPED"]], "y": [[0.125, 0.0, "BEZIER", "AUTO", 16.666666666666668, 0.125, "AUTO_CLAMPED"]]}}, "Slide": {"location": {"x": [[-3.25, 0.0, "SINE", "EASE_OUT"], [-3.25, 33.333333333333336, "QUAD", "EASE_OUT"], [-1.75, 66.66666666666666, "SINE", "EASE_IN"], [-3.25, 100.0, "SINE", "EASE_OUT"]], "z": [[-0.0, 0.0, "BEZIER", "AUTO", 16.666666666666668, -0.0, "AUTO_CLAMPED"]], "y": [[0.75, 0.0, "BEZIER", "AUTO", 16.666666666666668, 0.75, "AUTO_CLAMPED"]]}}}, "Inspect": {"Bullet": {"location": {"x": [[1.59375, 0.0, "CONSTANT", "AUTO"], [-0.59375, 16.666666666666668, "BEZIER", "AUTO", 944.4444656372069, -0.59375, "AUTO_CLAMPED"], [-0.59375, 2783.3333333333335, "BEZIER", "AUTO", 1872.2221374511719, -0.59375, "AUTO_CLAMPED", 3727.777862548828, -0.59375, "AUTO_CLAMPED"]], "y": [[0.5625, 0.0, "CONSTANT", "AUTO"], [1.0, 16.666666666666668, "BEZIER", "AUTO", 944.4444656372069, 1.0, "AUTO_CLAMPED"], [1.0, 2783.3333333333335, "BEZIER", "AUTO", 1872.2221374511719, 1.0, "AUTO_CLAMPED", 3727.777862548828, 1.0, "AUTO_CLAMPED"]]}}, "Grip": {"location": {"x": [[0.0, 0.0, "BEZIER", "AUTO", 11.111111442248026, 0.0, "AUTO_CLAMPED"], [0.0, 33.333333333333336, "BEZIER", "EASE_IN", 22.22222089767456, 0.0, "AUTO_CLAMPED", 116.66666666666667, 0.0, "AUTO_CLAMPED"], [-1.71687650680542, 249.99999999999997, "BEZIER", "AUTO", 200.0, -1.71687650680542, "AUTO_CLAMPED", 383.3333333333333, -1.71687650680542, "AUTO_CLAMPED"], [0.5513148307800293, 300.00000000000006, "BEZIER", "AUTO", 483.3333333333333, -0.29949963092803955, "AUTO_CLAMPED", 683.3333333333334, 1.4021292924880981, "AUTO_CLAMPED"], [1.6863813400268555, 299.9999999999999, "BEZIER", "AUTO", 783.3333333333334, 1.6863813400268555, "AUTO_CLAMPED", 1322.2222646077473, 1.6863813400268555, "AUTO_CLAMPED"], [1.0514655113220215, 1316.6666666666667, "BEZIER", "AUTO", 1761.111068725586, 1.6863813400268555, "AUTO_CLAMPED", 2344.4445292154946, 0.8425058722496033, "AUTO_CLAMPED"], [-1.970992922782898, 433.3333333333335, "BEZIER", "AUTO", 2488.8888041178384, -1.970992922782898, "AUTO_CLAMPED", 2688.8888041178384, -1.970992922782898, "AUTO_CLAMPED"], [0.0, 166.66666666666652, "BEZIER", "EASE_IN", 2744.4445292154946, 0.0, "AUTO_CLAMPED", 2855.555470784505, 0.0, "AUTO_CLAMPED"]], "z": [[-0.0, 0.0, "BEZIER", "AUTO", 11.111111442248026, -0.0, "AUTO_CLAMPED"], [-0.0, 33.333333333333336, "BEZIER", "EASE_IN_OUT", 22.22222089767456, -0.0, "AUTO_CLAMPED", 116.66666666666667, -0.0, "AUTO_CLAMPED"], [2.112370729446411, 249.99999999999997, "BEZIER", "AUTO", 200.0, 1.0917030572891235, "AUTO_CLAMPED", 361.11110051472986, 3.0649938583374023, "AUTO_CLAMPED"], [3.955737590789795, 233.33333333333331, "BEZIER", "AUTO", 438.88889948527014, 3.955737590789795, "AUTO_CLAMPED", 538.8888676961263, 3.955737590789795, "AUTO_CLAMPED"], [3.7618730068206787, 66.66666666666674, "BEZIER", "AUTO", 561.1111323038737, 3.8623299598693848, "AUTO_CLAMPED", 683.3333333333334, 3.309816360473633, "AUTO_CLAMPED"], [2.715005397796631, 299.9999999999999, "BEZIER", "AUTO", 783.3333333333334, 2.715005397796631, "AUTO_CLAMPED", 1322.2222646077473, 2.715005397796631, "AUTO_CLAMPED"], [4.174439907073975, 1316.6666666666667, "BEZIER", "AUTO", 1761.111068725586, 2.715005397796631, "AUTO_CLAMPED", 2277.777862548828, 4.433073997497559, "AUTO_CLAMPED"], [5.207278251647949, 233.33333333333303, "BEZIER", "AUTO", 2355.555470784505, 5.207278251647949, "AUTO_CLAMPED", 2555.5554707845054, 5.207278251647949, "AUTO_CLAMPED"], [-0.0, 366.66666666666697, "BEZIER", "EASE_IN_OUT", 2677.777862548828, -0.0, "AUTO_CLAMPED", 2922.222137451172, -0.0, "AUTO_CLAMPED"]], "y": [[0.0, 0.0, "BEZIER", "AUTO", 11.111111442248026, 0.0, "AUTO_CLAMPED"], [0.0, 33.333333333333336, "BEZIER", "EASE_IN_OUT", 22.22222089767456, 0.0, "AUTO_CLAMPED", 216.66666666666669, 0.0, "AUTO_CLAMPED"], [0.9560011625289917, 550.0, "BEZIER", "AUTO", 400.0, 0.6512281894683838, "AUTO_CLAMPED", 683.3333333333334, 1.1222410202026367, "AUTO_CLAMPED"], [1.235924243927002, 299.9999999999999, "BEZIER", "AUTO", 783.3333333333334, 1.1854032278060913, "AUTO_CLAMPED", 1072.2222646077473, 1.331352949142456, "AUTO_CLAMPED"], [1.3816792964935303, 566.6666666666667, "BEZIER", "AUTO", 1261.111068725586, 1.3816792964935303, "AUTO_CLAMPED", 1700.0, 1.3816792964935303, "AUTO_CLAMPED"], [0.991679310798645, 750.0, "BEZIER", "AUTO", 1950.0, 0.991679310798645, "AUTO_CLAMPED", 2277.777862548828, 0.991679310798645, "AUTO_CLAMPED"], [0.991679310798645, 233.33333333333303, "BEZIER", "AUTO", 2355.555470784505, 0.991679310798645, "AUTO_CLAMPED", 2555.5554707845054, 0.991679310798645, "AUTO_CLAMPED"], [0.0, 366.66666666666697, "BEZIER", "EASE_IN_OUT", 2677.777862548828, 0.0, "AUTO_CLAMPED", 2922.222137451172, 0.0, "AUTO_CLAMPED"]]}, "rotation_euler": {"x": [[0.0, 0.0, "BEZIER", "AUTO", 11.111111442248026, 0.0, "AUTO_CLAMPED"], [0.0, 33.333333333333336, "BEZIER", "EASE_IN_OUT", 22.22222089767456, 0.0, "AUTO_CLAMPED", 216.66666666666669, 0.0, "AUTO_CLAMPED"], [5.020503228661193, 550.0, "BEZIER", "AUTO", 400.0, 3.059422302374893, "AUTO_CLAMPED", 683.3333333333334, 6.090183850331944, "AUTO_CLAMPED"], [7.589897451014929, 299.9999999999999, "BEZIER", "AUTO", 783.3333333333334, 6.833084743334013, "AUTO_CLAMPED", 1322.2222646077473, 10.911463694395382, "AUTO_CLAMPED"], [14.500997041935651, 1316.6666666666667, "BEZIER", "AUTO", 1761.111068725586, 14.500997041935651, "AUTO_CLAMPED", 2238.8888041178384, 14.500997041935651, "AUTO_CLAMPED"], [14.500997041935651, 116.66666666666652, "BEZIER", "AUTO", 2277.777862548828, 14.500997041935651, "AUTO_CLAMPED", 2477.777862548828, 14.500997041935651, "AUTO_CLAMPED"], [0.0, 483.3333333333335, "BEZIER", "EASE_IN_OUT", 2638.888804117839, 0.0, "AUTO_CLAMPED", 2961.1111958821616, 0.0, "AUTO_CLAMPED"]], "z": [[0.0, 0.0, "BEZIER", "AUTO", 11.111111442248026, 0.0, "AUTO_CLAMPED"], [0.0, 33.333333333333336, "BEZIER", "EASE_IN_OUT", 22.22222089767456, 0.0, "AUTO_CLAMPED", 216.66666666666669, 0.0, "AUTO_CLAMPED"], [-2.5185520017194545, 550.0, "BEZIER", "AUTO", 400.0, -1.7974633178318207, "AUTO_CLAMPED", 683.3333333333334, -2.9118731408296927, "AUTO_CLAMPED"], [-2.9849506154201286, 299.9999999999999, "BEZIER", "AUTO", 783.3333333333334, -2.9849506154201286, "AUTO_CLAMPED", 1322.2222646077473, -2.9849506154201286, "AUTO_CLAMPED"], [-2.6852116056755273, 1316.6666666666667, "BEZIER", "AUTO", 1761.111068725586, -2.6852116056755273, "AUTO_CLAMPED", 2238.8888041178384, -2.6852116056755273, "AUTO_CLAMPED"], [-2.6852116056755273, 116.66666666666652, "BEZIER", "AUTO", 2277.777862548828, -2.6852116056755273, "AUTO_CLAMPED", 2477.777862548828, -2.6852116056755273, "AUTO_CLAMPED"], [0.0, 483.3333333333335, "BEZIER", "EASE_IN_OUT", 2638.888804117839, 0.0, "AUTO_CLAMPED", 2961.1111958821616, 0.0, "AUTO_CLAMPED"]], "y": [[0.0, 0.0, "BEZIER", "AUTO", 11.111111442248026, 0.0, "AUTO_CLAMPED"], [0.0, 33.333333333333336, "BEZIER", "EASE_IN_OUT", 22.22222089767456, 0.0, "AUTO_CLAMPED", 216.66666666666669, 0.0, "AUTO_CLAMPED"], [133.86457701475643, 550.0, "BEZIER", "AUTO", 400.0, 95.5376944872819, "AUTO_CLAMPED", 683.3333333333334, 154.77014681876466, "AUTO_CLAMPED"], [158.65432513558918, 299.9999999999999, "BEZIER", "AUTO", 783.3333333333334, 158.65432513558918, "AUTO_CLAMPED", 983.3333333333333, 158.65432513558918, "AUTO_CLAMPED"], [157.74876499505052, 300.0, "BEZIER", "AUTO", 1083.3333333333333, 158.02887105291276, "AUTO_CLAMPED", 1333.3333333333333, 157.32859907806804, "AUTO_CLAMPED"], [157.32859907806804, 450.0, "BEZIER", "AUTO", 1483.3333333333335, 157.32859907806804, "AUTO_CLAMPED", 1822.2222646077473, 157.32859907806804, "AUTO_CLAMPED"], [155.08037401086662, 566.6666666666667, "BEZIER", "AUTO", 2011.1110687255857, 157.32859907806804, "AUTO_CLAMPED", 2277.777862548828, 154.1546374915198, "AUTO_CLAMPED"], [108.19301732112919, 233.33333333333303, "BEZIER", "AUTO", 2355.555470784505, 135.62436159403188, "AUTO_CLAMPED", 2555.5554707845054, 65.08662112947903, "AUTO_CLAMPED"], [0.0, 366.66666666666697, "BEZIER", "EASE_IN_OUT", 2677.777862548828, 0.0, "AUTO_CLAMPED", 2922.222137451172, 0.0, "AUTO_CLAMPED"]]}}}, "Jam": {"Grip": {"location": {"x": [[0.0, 0.0, "BEZIER", "EASE_IN_OUT", 16.666666666666668, 0.0, "AUTO_CLAMPED"], [0.0, 50.0, "QUAD", "EASE_IN_OUT", 33.333333333333336, 0.0, "AUTO_CLAMPED"], [0.7684813737869263, 250.0, "BACK", "EASE_OUT", 1.7015800476074219], [-0.07987856864929199, 300.0, "SINE", "AUTO"], [-0.07659769058227539, 366.66666666666663, "BEZIER", "AUTO", 1044.444465637207, -0.07659769058227539, "AUTO_CLAMPED"], [-0.07659769058227539, 233.33333333333337, "QUAD", "EASE_OUT", 1122.2222646077473, -0.07659769058227539, "AUTO_CLAMPED"], [0.34417805075645447, 200.0, "QUAD", "EASE_IN"], [0.27417799830436707, 316.6666666666665, "BEZIER", "AUTO", 1733.3333333333335, 0.27417799830436707, "AUTO_CLAMPED"], [0.27417805790901184, 50.0, "QUAD", "EASE_IN", 1750.0, 0.27417805790901184, "AUTO_CLAMPED"], [-0.016215801239013672, 166.66666666666674, "BACK", "AUTO", 1.7015800476074219], [0.0, 266.66666666666674, "BEZIER", "EASE_IN_OUT", 2288.8888041178384, 0.0, "AUTO_CLAMPED"]], "z": [[-0.0, 0.0, "BEZIER", "EASE_IN_OUT", 16.666666666666668, -0.0, "AUTO_CLAMPED"], [-0.0, 50.0, "QUAD", "EASE_IN_OUT", 33.333333333333336, -0.0, "AUTO_CLAMPED"], [-0.172386035323143, 250.0, "BACK", "EASE_OUT", 1.7015800476074219], [-0.04781261831521988, 183.33333333333331, "BEZIER", "AUTO", 522.2222328186035, -0.04781261831521988, "AUTO_CLAMPED"], [-0.04781261831521988, 116.66666666666669, "SINE", "AUTO", 561.1111323038737, -0.04781261831521988, "AUTO_CLAMPED"], [-0.25952833890914917, 366.66666666666663, "BEZIER", "AUTO", 1044.444465637207, -0.25952833890914917, "AUTO_CLAMPED"], [-0.25952833890914917, 233.33333333333337, "QUAD", "EASE_OUT", 1122.2222646077473, -0.25952833890914917, "AUTO_CLAMPED"], [-1.6563783884048462, 200.0, "QUAD", "EASE_IN"], [-0.9063783884048462, 316.6666666666665, "BEZIER", "AUTO", 1733.3333333333335, -0.9063783884048462, "AUTO_CLAMPED"], [-0.9063783884048462, 50.0, "QUAD", "EASE_IN", 1750.0, -0.9063783884048462, "AUTO_CLAMPED"], [-0.19053393602371216, 166.66666666666674, "BACK", "AUTO", 1.7015800476074219], [-0.0, 266.66666666666674, "BEZIER", "EASE_IN_OUT", 2288.8888041178384, -0.0, "AUTO_CLAMPED"]], "y": [[0.0, 0.0, "BEZIER", "EASE_IN_OUT", 16.666666666666668, 0.0, "AUTO_CLAMPED"], [0.0, 50.0, "QUAD", "EASE_IN_OUT", 33.333333333333336, 0.0, "AUTO_CLAMPED"], [1.9825199842453003, 250.0, "BACK", "EASE_OUT", 1.7015800476074219], [0.699442982673645, 300.0, "SINE", "AUTO"], [0.6867120265960693, 366.66666666666663, "BEZIER", "AUTO", 1044.444465637207, 0.6867120265960693, "AUTO_CLAMPED"], [0.6867120265960693, 233.33333333333337, "QUAD", "EASE_OUT", 1122.2222646077473, 0.6867120265960693, "AUTO_CLAMPED"], [0.8148880004882812, 200.0, "QUAD", "EASE_IN"], [1.2448880672454834, 316.6666666666665, "BEZIER", "AUTO", 1733.3333333333335, 1.2448880672454834, "AUTO_CLAMPED"], [1.2448880672454834, 50.0, "QUAD", "EASE_IN", 1750.0, 1.2448880672454834, "AUTO_CLAMPED"], [0.44753724336624146, 166.66666666666674, "BACK", "AUTO", 1.7015800476074219], [0.0, 266.66666666666674, "BEZIER", "EASE_IN_OUT", 2288.8888041178384, 0.0, "AUTO_CLAMPED"]]}, "rotation_euler": {"x": [[0.0, 0.0, "BEZIER", "EASE_IN_OUT", 16.666666666666668, 0.0, "AUTO_CLAMPED"], [0.0, 50.0, "QUAD", "EASE_IN_OUT", 33.333333333333336, 0.0, "AUTO_CLAMPED"], [-2.9187993795349088, 250.0, "BACK", "EASE_OUT", 1.7015800476074219], [-0.4350010878597721, 183.33333333333331, "BEZIER", "AUTO", 522.2222328186035, -0.4350010878597721, "AUTO_CLAMPED"], [-0.4350010878597721, 116.66666666666669, "SINE", "AUTO", 561.1111323038737, -0.4350010878597721, "AUTO_CLAMPED"], [-2.977798553585479, 366.66666666666663, "BEZIER", "AUTO", 1044.444465637207, -2.977798553585479, "AUTO_CLAMPED"], [-2.977798553585479, 233.33333333333337, "QUAD", "EASE_OUT", 1122.2222646077473, -2.977798553585479, "AUTO_CLAMPED"], [-3.8259987654743424, 200.0, "QUAD", "EASE_IN"], [-2.426001230918489, 316.6666666666665, "BEZIER", "AUTO", 1733.3333333333335, -2.426001230918489, "AUTO_CLAMPED"], [-2.426001230918489, 50.0, "QUAD", "EASE_IN", 1750.0, -2.426001230918489, "AUTO_CLAMPED"], [-0.46099678784084064, 166.66666666666674, "BACK", "AUTO", 1.7015800476074219], [0.0, 266.66666666666674, "BEZIER", "EASE_IN_OUT", 2288.8888041178384, 0.0, "AUTO_CLAMPED"]], "z": [[0.0, 0.0, "BEZIER", "EASE_IN_OUT", 16.666666666666668, 0.0, "AUTO_CLAMPED"], [0.0, 50.0, "QUAD", "EASE_IN_OUT", 33.333333333333336, 0.0, "AUTO_CLAMPED"], [-9.06172296242993, 250.0, "BACK", "EASE_OUT", 1.7015800476074219], [0.7263285595589442, 300.0, "SINE", "AUTO"], [0.9408103199582433, 366.66666666666663, "BEZIER", "AUTO", 1044.444465637207, 0.9408103199582433, "AUTO_CLAMPED"], [0.9408103199582433, 233.33333333333337, "QUAD", "EASE_OUT", 1122.2222646077473, 0.9408103199582433, "AUTO_CLAMPED"], [-1.024439796486114, 200.0, "QUAD", "EASE_IN"], [-7.224439641736934, 316.6666666666665, "BEZIER", "AUTO", 1733.3333333333335, -7.224439641736934, "AUTO_CLAMPED"], [-7.224439641736934, 50.0, "QUAD", "EASE_IN", 1750.0, -7.224439641736934, "AUTO_CLAMPED"], [-0.6818431639686808, 166.66666666666674, "BACK", "AUTO", 1.7015800476074219], [0.0, 266.66666666666674, "BEZIER", "EASE_IN_OUT", 2288.8888041178384, 0.0, "AUTO_CLAMPED"]], "y": [[0.0, 0.0, "BEZIER", "EASE_IN_OUT", 16.666666666666668, 0.0, "AUTO_CLAMPED"], [0.0, 50.0, "QUAD", "EASE_IN_OUT", 33.333333333333336, 0.0, "AUTO_CLAMPED"], [-0.3186239491911578, 250.0, "BACK", "EASE_OUT", 1.7015800476074219], [-0.04786912399892983, 183.33333333333331, "BEZIER", "AUTO", 522.2222328186035, -0.04786912399892983, "AUTO_CLAMPED"], [-0.04786912399892983, 116.66666666666669, "SINE", "AUTO", 561.1111323038737, -0.04786912399892983, "AUTO_CLAMPED"], [-3.0794514052291326, 366.66666666666663, "BEZIER", "AUTO", 1044.444465637207, -3.0794514052291326, "AUTO_CLAMPED"], [-3.0794514052291326, 233.33333333333337, "QUAD", "EASE_OUT", 1122.2222646077473, -3.0794514052291326, "AUTO_CLAMPED"], [-6.585746518014926, 200.0, "QUAD", "EASE_IN"], [-3.3857467562467116, 316.6666666666665, "BEZIER", "AUTO", 1733.3333333333335, -3.3857467562467116, "AUTO_CLAMPED"], [-3.3857467562467116, 50.0, "QUAD", "EASE_IN", 1750.0, -3.3857467562467116, "AUTO_CLAMPED"], [-0.7094660497977991, 166.66666666666674, "BACK", "AUTO", 1.7015800476074219], [0.0, 266.66666666666674, "BEZIER", "EASE_IN_OUT", 2288.8888041178384, 0.0, "AUTO_CLAMPED"]]}}, "Magazine": {"location": {"x": [[2.125, 0.0, "BEZIER", "AUTO", 111.11110846201579, 2.125, "AUTO_CLAMPED"], [2.125, 333.3333333333333, "BEZIER", "EASE_OUT", 222.22223281860352, 2.125, "AUTO_CLAMPED", 400.0, 2.125, "AUTO_CLAMPED"], [3.215369939804077, 200.00000000000006, "BEZIER", "AUTO", 466.6666666666667, 3.0801353454589844, "AUTO_CLAMPED", 588.8888676961262, 3.3280653953552246, "AUTO_CLAMPED"], [3.3280653953552246, 166.66666666666663, "BEZIER", "EASE_IN_OUT", 655.555534362793, 3.3280653953552246, "ALIGNED", 811.1111323038737, 3.3280653953552246, "ALIGNED"], [2.663938045501709, 300.0, "CUBIC", "EASE_IN", 900.0, 2.8518593311309814, "AUTO_CLAMPED"], [2.5386571884155273, 200.0, "QUAD", "EASE_IN_OUT"], [3.517561435699463, 500.0, "QUAD", "AUTO"], [3.215369939804077, 116.66666666666674, "BEZIER", "EASE_IN", 1861.111068725586, 2.8700082302093506, "AUTO_CLAMPED"], [2.125, 133.33333333333326, "BEZIER", "AUTO", 1905.5555979410808, 2.125, "AUTO_CLAMPED", 1994.4444020589192, 2.125, "AUTO_CLAMPED"]], "z": [[-2.443810274144198e-07, 0.0, "BEZIER", "AUTO", 194.44444974263507, -2.443810274144198e-07, "AUTO_CLAMPED"], [-2.443810274144198e-07, 583.3333333333334, "BEZIER", "AUTO", 388.8888676961263, -2.443810274144198e-07, "AUTO_CLAMPED", 722.2222010294597, -2.443810274144198e-07, "AUTO_CLAMPED"], [4.639456748962402, 416.66666666666663, "CUBIC", "EASE_IN", 861.1111323038737, 4.639456748962402, "AUTO_CLAMPED"], [1.1628408432006836, 200.0, "QUAD", "EASE_IN_OUT"], [1.921958327293396, 200.0, "QUAD", "AUTO"], [-0.0, 300.0, "QUAD", "EASE_IN_OUT"], [-2.443810274144198e-07, 116.66666666666674, "BEZIER", "AUTO", 1861.111068725586, -2.443810274144198e-07, "AUTO_CLAMPED"], [-2.443810274144198e-07, 133.33333333333326, "BEZIER", "AUTO", 1905.5555979410808, -2.443810274144198e-07, "AUTO_CLAMPED", 1994.4444020589192, -2.443810274144198e-07, "AUTO_CLAMPED"]], "y": [[-1.5, 0.0, "BEZIER", "AUTO", 111.11110846201579, -1.5, "AUTO_CLAMPED"], [-1.5, 333.3333333333333, "BEZIER", "EASE_OUT", 222.22223281860352, -1.5, "AUTO_CLAMPED", 400.0, -1.5, "AUTO_CLAMPED"], [-5.614299774169922, 200.00000000000006, "BEZIER", "AUTO", 466.6666666666667, -5.13734769821167, "AUTO_CLAMPED", 588.8888676961262, -6.0117597579956055, "AUTO_CLAMPED"], [-6.0117597579956055, 166.66666666666663, "BEZIER", "EASE_IN_OUT", 655.555534362793, -6.0117597579956055, "ALIGNED", 811.1111323038737, -6.0117597579956055, "ALIGNED"], [-2.2079570293426514, 300.0, "CUBIC", "EASE_IN", 900.0, -2.2079570293426514, "AUTO_CLAMPED"], [-3.1993041038513184, 200.0, "QUAD", "EASE_IN_OUT"], [-6.543550491333008, 500.0, "QUAD", "AUTO"], [-5.614299774169922, 116.66666666666674, "BEZIER", "EASE_IN", 1861.111068725586, -4.5522990226745605, "AUTO_CLAMPED"], [-1.5, 133.33333333333326, "BEZIER", "AUTO", 1905.5555979410808, -1.5, "AUTO_CLAMPED", 1994.4444020589192, -1.5, "AUTO_CLAMPED"]]}, "rotation_euler": {"x": [[0.0, 0.0, "BEZIER", "AUTO", 177.77778307596842, 0.0, "AUTO_CLAMPED"], [0.0, 533.3333333333334, "BEZIER", "AUTO", 366.6665395100911, 0.0, "ALIGNED", 616.6666666666667, 0.0, "ALIGNED"], [7.889100717796508, 216.66666666666663, "BEZIER", "EASE_IN", 677.7777989705404, 7.889100717796508, "AUTO_CLAMPED", 833.3333333333334, 7.889100717796508, "AUTO_CLAMPED"], [7.889100717796508, 250.0, "CUBIC", "EASE_IN", 916.6666666666666, 7.889100717796508, "AUTO_CLAMPED"], [-9.461601510030203, 200.0, "QUAD", "EASE_IN_OUT"], [0.09899676183016481, 166.66666666666674, "QUAD", "AUTO"], [0.0, 333.33333333333326, "QUAD", "AUTO"], [0.0, 116.66666666666674, "BEZIER", "AUTO", 1861.111068725586, 0.0, "AUTO_CLAMPED"], [0.0, 133.33333333333326, "BEZIER", "AUTO", 1905.5555979410808, 0.0, "AUTO_CLAMPED", 1994.4444020589192, 0.0, "AUTO_CLAMPED"]], "z": [[0.0, 0.0, "BEZIER", "AUTO", 177.77778307596842, 0.0, "AUTO_CLAMPED"], [-0.0, 533.3333333333334, "BEZIER", "AUTO", 355.55553436279297, -0.0, "AUTO_CLAMPED", 588.8888676961262, -0.0, "AUTO_CLAMPED"], [-0.051977426088786305, 166.66666666666663, "BEZIER", "EASE_IN_OUT", 655.555534362793, -0.015593215153433329, "ALIGNED", 811.1111323038737, -0.1429379300817956, "ALIGNED"], [-3.0519773961795793, 300.0, "CUBIC", "EASE_IN", 900.0, -3.0519773961795793, "AUTO_CLAMPED"], [-2.346791954000674, 200.0, "QUAD", "EASE_IN_OUT"], [-3.453324221007995, 166.66666666666674, "QUAD", "AUTO"], [-0.0, 333.33333333333326, "BEZIER", "AUTO", 1783.3333333333333, -0.0, "AUTO_CLAMPED"], [0.0, 250.0, "BEZIER", "AUTO", 1866.6666666666667, 0.0, "AUTO_CLAMPED", 2033.3333333333333, 0.0, "AUTO_CLAMPED"]], "y": [[0.0, 0.0, "BEZIER", "AUTO", 177.77778307596842, 0.0, "AUTO_CLAMPED"], [0.0, 533.3333333333334, "BEZIER", "AUTO", 355.55553436279297, 0.0, "AUTO_CLAMPED", 588.8888676961262, 0.0, "AUTO_CLAMPED"], [-0.0825022485208741, 166.66666666666663, "BEZIER", "EASE_IN_OUT", 655.555534362793, -0.0825022485208741, "ALIGNED", 811.1111323038737, -0.0825022485208741, "ALIGNED"], [-0.0825022485208741, 300.0, "CUBIC", "EASE_IN", 900.0, -0.0825022485208741, "AUTO_CLAMPED"], [-1.7667953415716402, 200.0, "QUAD", "EASE_IN_OUT"], [-1.1941604991291164, 166.66666666666674, "QUAD", "AUTO"], [0.0, 333.33333333333326, "BEZIER", "AUTO", 1783.3333333333333, 0.0, "AUTO_CLAMPED"], [0.0, 250.0, "BEZIER", "AUTO", 1866.6666666666667, 0.0, "AUTO_CLAMPED", 2033.3333333333333, 0.0, "AUTO_CLAMPED"]]}}}, "Reload": {"Bullet": {"location": {"x": [[1.59375, 0.0, "BEZIER", "AUTO", 666.6666666666666, 1.59375, "AUTO_CLAMPED"], [1.59375, 2000.0, "BEZIER", "AUTO", 1333.3333333333333, 1.59375, "AUTO_CLAMPED", 2066.6666666666665, 1.59375, "AUTO_CLAMPED"], [0.90625, 200.0, "LINEAR", "AUTO", 2133.3333333333335, 0.90625, "AUTO_CLAMPED"], [0.90625, 133.33333333333348, "LINEAR", "AUTO"], [-0.5937501192092896, 99.99999999999955, "BEZIER", "AUTO", 2466.666666666667, -0.5937501192092896, "AUTO_CLAMPED"]], "y": [[0.5625, 0.0, "BEZIER", "AUTO", 666.6666666666666, 0.5625, "AUTO_CLAMPED"], [0.5625, 2000.0, "BEZIER", "AUTO", 1333.3333333333333, 0.5625, "AUTO_CLAMPED", 2066.6666666666665, 0.5625, "AUTO_CLAMPED"], [0.875, 200.0, "BEZIER", "AUTO", 2133.3333333333335, 0.875, "AUTO_CLAMPED", 2244.4445292154946, 0.875, "AUTO_CLAMPED"], [0.875, 133.33333333333348, "SINE", "EASE_OUT", 2288.8888041178384, 0.875, "AUTO_CLAMPED"], [0.9999978542327881, 33.33333333333303, "BEZIER", "AUTO", 2377.777862548828, 0.9999978542327881, "AUTO_CLAMPED"]]}, "rotation_euler": {"z": [[0.0, 0.0, "CONSTANT", "AUTO"], [-19.99999941818584, 2000.0, "BEZIER", "AUTO", 2066.6666666666665, -19.99999941818584, "AUTO_CLAMPED"], [-7.500000208706514, 200.0, "BEZIER", "AUTO", 2133.3333333333335, -7.500000208706514, "AUTO_CLAMPED", 2244.4445292154946, -7.500000208706514, "AUTO_CLAMPED"], [-7.500000208706514, 133.33333333333348, "SINE", "EASE_OUT", 2288.8888041178384, -7.500000208706514, "AUTO_CLAMPED"], [-0.0, 33.33333333333303, "BEZIER", "AUTO", 2377.777862548828, -0.0, "AUTO_CLAMPED"]]}}, "Grip": {"location": {"x": [[0.0, 0.0, "BEZIER", "EASE_IN_OUT", 5.555555721124013, 0.0, "AUTO_CLAMPED"], [0.0, 16.666666666666668, "QUAD", "EASE_IN_OUT", 11.11111044883728, 0.0, "AUTO_CLAMPED"], [-0.5098327398300171, 283.3333333333333, "BACK", "EASE_OUT", 1.7015800476074219], [0.23206636309623718, 233.33333333333337, "BEZIER", "EASE_IN_OUT", 733.3333333333333, 0.23206636309623718, "AUTO_CLAMPED"], [0.23206636309623718, 599.9999999999999, "BEZIER", "EASE_IN", 933.3333333333334, 0.23206636309623718, "AUTO_CLAMPED", 1266.6666666666665, 0.23206636309623718, "AUTO_CLAMPED"], [0.38155651092529297, 400.0, "BACK", "AUTO", 1483.3333333333335, 0.38155651092529297, "ALIGNED", 1.7015800476074219], [0.3984723687171936, 266.66666666666674, "LINEAR", "AUTO"], [0.3984723687171936, 166.66666666666652, "BEZIER", "AUTO", 2011.1111958821612, 0.3984723687171936, "ALIGNED"], [0.0, 633.3333333333335, "QUAD", "EASE_IN_OUT", 2388.888804117839, 0.0, "AUTO_CLAMPED"]], "z": [[-0.0, 0.0, "BEZIER", "EASE_IN_OUT", 5.555555721124013, -0.0, "AUTO_CLAMPED"], [-0.0, 16.666666666666668, "QUAD", "EASE_IN_OUT", 11.11111044883728, -0.0, "AUTO_CLAMPED"], [-1.590022325515747, 283.3333333333333, "BACK", "EASE_OUT", 1.7015800476074219], [-0.16680538654327393, 233.33333333333337, "BEZIER", "EASE_IN_OUT", 733.3333333333333, -0.16680538654327393, "AUTO_CLAMPED"], [-0.16680538654327393, 599.9999999999999, "BEZIER", "EASE_IN", 933.3333333333334, -0.16680538654327393, "AUTO_CLAMPED", 1266.6666666666665, -0.16680538654327393, "AUTO_CLAMPED"], [-0.13560596108436584, 400.0, "BACK", "AUTO", 1466.6666666666665, -0.13560596108436584, "ALIGNED", 1.7015800476074219], [-0.29175129532814026, 266.66666666666674, "LINEAR", "AUTO"], [-0.29175129532814026, 166.66666666666652, "BEZIER", "AUTO", 2011.1111958821612, -0.29175129532814026, "ALIGNED"], [-0.0, 633.3333333333335, "QUAD", "EASE_IN_OUT", 2388.888804117839, -0.0, "AUTO_CLAMPED"]], "y": [[0.0, 0.0, "BEZIER", "EASE_IN_OUT", 5.555555721124013, 0.0, "AUTO_CLAMPED"], [0.0, 16.666666666666668, "QUAD", "EASE_IN_OUT", 11.11111044883728, 0.0, "AUTO_CLAMPED"], [3.8397903442382812, 283.3333333333333, "BACK", "EASE_OUT", 1.7015800476074219], [0.3740246295928955, 533.3333333333334, "BEZIER", "EASE_IN_OUT", 933.3333333333334, 0.3740246295928955, "AUTO_CLAMPED"], [0.3740246295928955, 299.9999999999999, "BEZIER", "EASE_IN", 1033.3333333333333, 0.3740246295928955, "AUTO_CLAMPED", 1266.6666666666665, 0.3740246295928955, "AUTO_CLAMPED"], [0.5059270858764648, 400.0, "BACK", "AUTO", 1466.6666666666665, 0.5059270858764648, "ALIGNED", 3.9015798568725586], [1.2094907760620117, 266.66666666666674, "LINEAR", "AUTO"], [1.2094907760620117, 166.66666666666652, "BEZIER", "AUTO", 2011.1111958821612, 1.2094907760620117, "ALIGNED"], [0.0, 633.3333333333335, "QUAD", "EASE_IN_OUT", 2388.888804117839, 0.0, "AUTO_CLAMPED"]]}, "rotation_euler": {"x": [[0.0, 0.0, "BEZIER", "EASE_IN_OUT", 5.555555721124013, 0.0, "AUTO_CLAMPED"], [0.0, 16.666666666666668, "QUAD", "EASE_IN_OUT", 11.11111044883728, 0.0, "AUTO_CLAMPED"], [-16.158301462904227, 283.3333333333333, "BACK", "EASE_OUT", 1.7015800476074219], [-10.301796740211811, 233.33333333333337, "BEZIER", "EASE_IN_OUT", 733.3333333333333, -10.301796740211811, "AUTO_CLAMPED"], [-10.301796740211811, 599.9999999999999, "BEZIER", "EASE_IN", 933.3333333333334, -10.301796740211811, "AUTO_CLAMPED", 1266.6666666666665, -10.301796740211811, "AUTO_CLAMPED"], [-19.784100553616323, 400.0, "BACK", "AUTO", 1400.0, -19.784100553616323, "AUTO_CLAMPED", 1.7015800476074219], [-16.903297516434197, 266.66666666666674, "LINEAR", "AUTO"], [-16.903297516434197, 100.0, "BEZIER", "AUTO", 1944.4445292154949, -8.062240890614454, "ALIGNED"], [0.0, 766.6666666666665, "QUAD", "EASE_IN_OUT", 2411.1111958821616, 0.0, "AUTO_CLAMPED"]], "z": [[0.0, 0.0, "BEZIER", "EASE_IN_OUT", 5.555555721124013, 0.0, "AUTO_CLAMPED"], [0.0, 16.666666666666668, "QUAD", "EASE_IN_OUT", 11.11111044883728, 0.0, "AUTO_CLAMPED"], [-16.899083289716298, 283.3333333333333, "BACK", "EASE_OUT", 2.5], [-5.380695815862754, 533.3333333333334, "BEZIER", "EASE_IN_OUT", 1066.6666666666667, -5.380695815862754, "AUTO_CLAMPED"], [-11.906051935670543, 699.9999999999999, "BACK", "AUTO", 1300.0, -6.886808876911218, "AUTO_CLAMPED", 6.0], [-20.04334209111145, 266.66666666666674, "LINEAR", "AUTO"], [-20.04334209111145, 166.66666666666652, "BEZIER", "AUTO", 2177.777862548828, -30.043338385109788, "ALIGNED"], [0.0, 700.0, "QUAD", "EASE_IN_OUT", 2433.333333333333, 0.0, "AUTO_CLAMPED"]], "y": [[0.0, 0.0, "BEZIER", "EASE_IN_OUT", 5.555555721124013, 0.0, "AUTO_CLAMPED"], [0.0, 16.666666666666668, "QUAD", "EASE_IN_OUT", 11.11111044883728, 0.0, "AUTO_CLAMPED"], [-1.7823402117923546, 283.3333333333333, "BACK", "EASE_OUT", 1.7015800476074219], [6.773653132931616, 233.33333333333337, "BEZIER", "EASE_IN_OUT", 733.3333333333333, 6.773653132931616, "AUTO_CLAMPED"], [6.773653132931616, 599.9999999999999, "BEZIER", "EASE_IN", 933.3333333333334, 6.773653132931616, "AUTO_CLAMPED", 1266.6666666666665, 6.773653132931616, "AUTO_CLAMPED"], [18.416894757265702, 400.0, "BACK", "AUTO", 1400.0, 17.224420567809638, "AUTO_CLAMPED", 1.7015800476074219], [19.211877550236412, 266.66666666666674, "BEZIER", "AUTO", 1844.4445292154946, 19.211877550236412, "ALIGNED"], [19.211877550236412, 100.0, "BEZIER", "AUTO", 1866.6666666666667, 19.211877550236412, "ALIGNED", 1944.4445292154949, 19.211877550236412, "ALIGNED"], [0.0, 266.6666666666665, "QUAD", "EASE_IN_OUT", 2077.7777353922525, 0.0, "AUTO_CLAMPED"]]}}, "Hammer": {"rotation_euler": {"z": [[-0.0, 0.0, "BEZIER", "AUTO", 666.6666666666666, -0.0, "AUTO_CLAMPED"], [-0.0, 2000.0, "BEZIER", "AUTO", 1333.3333333333333, -0.0, "AUTO_CLAMPED", 2066.6666666666665, -0.0, "AUTO_CLAMPED"], [-45.00000125223908, 200.0, "BEZIER", "AUTO", 2133.3333333333335, -45.00000125223908, "AUTO_CLAMPED", 2244.4445292154946, -45.00000125223908, "AUTO_CLAMPED"], [-45.00000125223908, 133.33333333333348, "LINEAR", "AUTO", 2288.8888041178384, -45.00000125223908, "AUTO_CLAMPED"], [-0.0, 133.33333333333348, "BEZIER", "AUTO", 2511.111195882161, -0.0, "AUTO_CLAMPED"]]}, "location": {"x": [[3.125, 0.0, "BEZIER", "AUTO", 16.666666666666668, 3.125, "AUTO_CLAMPED"]], "z": [[1.862645149230957e-08, 0.0, "BEZIER", "AUTO", 16.666666666666668, 1.862645149230957e-08, "AUTO_CLAMPED"]], "y": [[0.125, 0.0, "BEZIER", "AUTO", 16.666666666666668, 0.125, "AUTO_CLAMPED"]]}}, "Magazine": {"location": {"x": [[2.125, 0.0, "LINEAR", "AUTO"], [2.125, 366.66666666666663, "LINEAR", "AUTO"], [3.215367555618286, 133.33333333333337, "LINEAR", "EASE_IN"], [6.216582298278809, 266.66666666666663, "CONSTANT", "AUTO"], [1.6932545900344849, 233.33333333333337, "BEZIER", "AUTO", 1133.3333333333333, 1.6932545900344849, "AUTO_CLAMPED"], [3.215367555618286, 400.0, "LINEAR", "EASE_IN", 1266.6666666666665, 3.215367555618286, "AUTO_CLAMPED"], [2.125, 166.66666666666674, "BEZIER", "AUTO", 1622.2222646077473, 2.125, "AUTO_CLAMPED"]], "z": [[-2.443810274144198e-07, 0.0, "LINEAR", "AUTO"], [-2.443810274144198e-07, 366.66666666666663, "LINEAR", "AUTO"], [-0.0, 133.33333333333337, "BEZIER", "EASE_IN", 522.2222010294596, -0.020347656682133675, "ALIGNED"], [-0.0, 266.66666666666663, "CONSTANT", "AUTO", 761.1110687255859, -7.450580596923828e-09, "ALIGNED"], [15.77025318145752, 233.33333333333337, "BEZIER", "AUTO", 1133.3333333333333, 15.77025318145752, "AUTO_CLAMPED"], [-0.0, 400.0, "BEZIER", "EASE_IN", 1266.6666666666665, 5.865144885319751e-07, "AUTO_CLAMPED", 1455.5555979410808, -2.443810274144198e-07, "AUTO_CLAMPED"], [-2.443810274144198e-07, 166.66666666666674, "BEZIER", "AUTO", 1511.111068725586, -2.443810274144198e-07, "AUTO_CLAMPED", 1622.2222646077473, -2.443810274144198e-07, "AUTO_CLAMPED"]], "y": [[-1.5, 0.0, "LINEAR", "AUTO"], [-1.5, 366.66666666666663, "LINEAR", "AUTO"], [-5.614295482635498, 133.33333333333337, "LINEAR", "EASE_IN"], [-16.93880844116211, 266.66666666666663, "CONSTANT", "AUTO"], [-21.048290252685547, 233.33333333333337, "BEZIER", "AUTO", 1133.3333333333333, -21.048290252685547, "AUTO_CLAMPED"], [-5.614295482635498, 400.0, "LINEAR", "EASE_IN", 1266.6666666666665, -11.369051933288574, "AUTO_CLAMPED"], [-1.5, 166.66666666666674, "BEZIER", "AUTO", 1622.2222646077473, -1.5, "AUTO_CLAMPED"]]}, "rotation_euler": {"x": [[0.0, 0.0, "LINEAR", "AUTO"], [0.0, 366.66666666666663, "LINEAR", "AUTO"], [0.0, 133.33333333333337, "BEZIER", "EASE_IN", 555.555534362793, 0.0, "ALIGNED"], [0.0, 266.66666666666663, "CONSTANT", "AUTO", 677.7777989705404, 0.0, "AUTO_CLAMPED"], [-15.976201789442515, 233.33333333333337, "BEZIER", "AUTO", 1133.3333333333333, -15.976201789442515, "AUTO_CLAMPED"], [0.0, 400.0, "BEZIER", "EASE_IN", 1266.6666666666665, 0.0, "AUTO_CLAMPED", 1455.5555979410808, 0.0, "AUTO_CLAMPED"], [0.0, 166.66666666666674, "BEZIER", "AUTO", 1511.111068725586, 0.0, "AUTO_CLAMPED", 1622.2222646077473, 0.0, "AUTO_CLAMPED"]], "z": [[0.0, 0.0, "LINEAR", "AUTO"], [0.0, 366.66666666666663, "LINEAR", "AUTO"], [0.0, 133.33333333333337, "BEZIER", "EASE_IN", 555.555534362793, 0.0, "ALIGNED"], [0.0, 266.66666666666663, "CONSTANT", "AUTO", 677.7777989705404, 0.0, "AUTO_CLAMPED"], [-7.264861555018716, 233.33333333333337, "BEZIER", "AUTO", 1133.3333333333333, -7.264861555018716, "AUTO_CLAMPED"], [0.0, 400.0, "BEZIER", "EASE_IN", 1266.6666666666665, 0.0, "AUTO_CLAMPED", 1455.5555979410808, 0.0, "AUTO_CLAMPED"], [-0.0, 166.66666666666674, "BEZIER", "AUTO", 1511.111068725586, -0.0, "AUTO_CLAMPED", 1622.2222646077473, -0.0, "AUTO_CLAMPED"]], "y": [[0.0, 0.0, "LINEAR", "AUTO"], [0.0, 366.66666666666663, "LINEAR", "AUTO"], [0.0, 133.33333333333337, "BEZIER", "EASE_IN", 555.555534362793, 0.0, "ALIGNED"], [0.0, 266.66666666666663, "CONSTANT", "AUTO", 677.7777989705404, 0.0, "AUTO_CLAMPED"], [-3.817224960598638, 233.33333333333337, "BEZIER", "AUTO", 1133.3333333333333, -3.817224960598638, "AUTO_CLAMPED"], [0.0, 400.0, "BEZIER", "EASE_IN", 1266.6666666666665, 0.0, "AUTO_CLAMPED", 1455.5555979410808, 0.0, "AUTO_CLAMPED"], [0.0, 166.66666666666674, "BEZIER", "AUTO", 1511.111068725586, 0.0, "AUTO_CLAMPED", 1622.2222646077473, 0.0, "AUTO_CLAMPED"]]}}, "Slide": {"location": {"x": [[-3.25, 0.0, "BEZIER", "AUTO", 666.6666666666666, -3.25, "AUTO_CLAMPED"], [-3.25, 2000.0, "BEZIER", "AUTO", 1766.6666666666665, -3.25, "ALIGNED", 2022.2221374511719, -3.25, "ALIGNED"], [-1.75, 200.0, "LINEAR", "AUTO", 2161.1111958821616, -1.75, "ALIGNED"], [-1.75, 133.33333333333348, "LINEAR", "AUTO"], [-3.25, 99.99999999999955, "BEZIER", "AUTO", 2433.333333333333, -3.25, "ALIGNED"]], "z": [[-0.0, 0.0, "BEZIER", "AUTO", 16.666666666666668, -0.0, "AUTO_CLAMPED"]], "y": [[0.75, 0.0, "BEZIER", "AUTO", 16.666666666666668, 0.75, "AUTO_CLAMPED"]]}}}}, "offset": {"Bullet": [1.59375, 0.5625, -2.443810274144198e-07], "Decal": [-2.3125, 0.6875, 0.3850004971027374], "DecalM": [0.0, 0.0, -10.609639167785645], "GripM": [0.0, 0.0, -10.609639167785645], "Hammer": [3.125, 0.125, 1.862645149230957e-08], "Magazine": [2.125, -1.5, -2.443810274144198e-07], "Slide": [-3.25, 0.75, -0.0], "SlideM": [0.0, 0.0, -10.609639167785645], "Text": [-6.25, 0.6875, 0.3850004971027374], "TextM": [0.0, 0.0, -10.609639167785645]}, "hierarchy": {"Bullet": "Magazine", "Decal": "Slide", "DecalM": "SlideM", "Hammer": "Grip", "Magazine": "Grip", "Slide": "Grip", "SlideM": "GripM", "Text": "Slide", "TextM": "SlideM"}} \ No newline at end of file diff --git a/src/main/resources/assets/hbm/sounds.json b/src/main/resources/assets/hbm/sounds.json index c2d0c65c9..5baf34c5b 100644 --- a/src/main/resources/assets/hbm/sounds.json +++ b/src/main/resources/assets/hbm/sounds.json @@ -236,6 +236,16 @@ "weapon.fire.vstar": {"category": "player", "sounds": ["weapon/fire/vstar"]}, "weapon.fire.loudestNoiseOnEarth": {"category": "player", "sounds": ["weapon/fire/loudestNoiseOnEarth"]}, "weapon.fire.disintegration": {"category": "player", "sounds": ["weapon/fire/disintegration"]}, + "weapon.fire.laser": {"category": "player", "sounds": ["weapon/fire/laser"]}, + "weapon.fire.laserGatling": {"category": "player", "sounds": ["weapon/fire/laserGatling"]}, + "weapon.fire.silenced": {"category": "player", "sounds": ["weapon/fire/silenced"]}, + "weapon.fire.assault": {"category": "player", "sounds": ["weapon/fire/assault"]}, + "weapon.fire.pistol": {"category": "player", "sounds": ["weapon/fire/pistol"]}, + "weapon.fire.rifle": {"category": "player", "sounds": ["weapon/fire/rifle"]}, + "weapon.fire.rifleHeavy": {"category": "player", "sounds": ["weapon/fire/rifleHeavy"]}, + "weapon.fire.shotgun": {"category": "player", "sounds": ["weapon/fire/shotgun"]}, + "weapon.fire.shotgunAlt": {"category": "player", "sounds": ["weapon/fire/shotgunAlt"]}, + "weapon.fire.shotgunAuto": {"category": "player", "sounds": ["weapon/fire/shotgunAuto"]}, "weapon.reload.boltClose": {"category": "player", "sounds": ["weapon/reload/boltClose"]}, "weapon.reload.boltOpen": {"category": "player", "sounds": ["weapon/reload/boltOpen"]}, diff --git a/src/main/resources/assets/hbm/sounds/weapon/fire/assault.ogg b/src/main/resources/assets/hbm/sounds/weapon/fire/assault.ogg new file mode 100644 index 0000000000000000000000000000000000000000..6a49dbc1d2e13fded612633727e3abcba7a0bd3f GIT binary patch literal 22085 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 Z64Xr!2^;_i2Dm7|VSo%700Q6u0}jj)&#eFe literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/sounds/weapon/fire/laser.ogg b/src/main/resources/assets/hbm/sounds/weapon/fire/laser.ogg new file mode 100644 index 0000000000000000000000000000000000000000..f6f869bba2df68151edba181bd373cdf80fe5774 GIT binary patch literal 29016 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 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/sounds/weapon/fire/laserGatling.ogg b/src/main/resources/assets/hbm/sounds/weapon/fire/laserGatling.ogg new file mode 100644 index 0000000000000000000000000000000000000000..e24acf08e30b6e1bf992997874f7c81ba44eb422 GIT binary patch literal 4672 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 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/sounds/weapon/fire/pistol.ogg b/src/main/resources/assets/hbm/sounds/weapon/fire/pistol.ogg new file mode 100644 index 0000000000000000000000000000000000000000..5670830e67099aed9cff550d6a8b8a168baa919c GIT binary patch literal 26597 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%0DYTioi=PF9*Kn>s)= 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 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/sounds/weapon/fire/rifle.ogg b/src/main/resources/assets/hbm/sounds/weapon/fire/rifle.ogg new file mode 100644 index 0000000000000000000000000000000000000000..eb4f2fa439421e32c8f517a1f72bdef9e28a9ab0 GIT binary patch literal 20956 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 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/sounds/weapon/fire/shotgun.ogg b/src/main/resources/assets/hbm/sounds/weapon/fire/shotgun.ogg new file mode 100644 index 0000000000000000000000000000000000000000..9c15eb5963605419c022f5c5583dcb346121e77a GIT binary patch literal 32430 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 JKT7ua{{VQvP!j+E literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/sounds/weapon/fire/shotgunAlt.ogg b/src/main/resources/assets/hbm/sounds/weapon/fire/shotgunAlt.ogg new file mode 100644 index 0000000000000000000000000000000000000000..422dae1e3045e8b36e76e05129329cb130ba31b3 GIT binary patch literal 30213 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 j3|2)Kg{|T+$nS6IO2+Yo>OLDBNw$pqk z0O8W)TCg565nYw8OFlSr%((GGAN5usOT=&f-WzSo6y;80Ub7?z0YUe`!0lI)=!ry$ z`t%Kmm3S3(ckmnH0TrTrI=oFuR34myTOkk zON|guJNU6?{{Rb=E)46gWP64xX!d6~?nN>-){Sivg%fQdJ**a9L+zrLzwxu+AS}xl zS>ZZ;ERAq~>@UvYzGYyC=g@C$D_m4XQpwuaoq&-BzMZYwEZJdPg~Ti4ZZNPp9FN0W zugPJrN5+DlrUBJNorF=i)VK=%be0@c3VI_JS&Izr+7lben368B4FBV?RNUd6)$$8| zc83<8s{U26W{|2o^5w5kYuWpE)J~k}lu~v$d7SiEQIEDiSj_~l#ykCaewE}(+PAHh z@tQC)=ijsUO)wH;vbEVYPxR5}FD2Y^^hWkfC{6Mi07^2Gb!={A41foUVnLKD7DS%C zAx29H+N);#pKd%OC$&C&_vFJuHNNTj?Q}!z$UxhmtHU;A7jmL)t+0Rterq6w_!pN} zGp4n{gfl$?Z{*USx`4r6GT&r7P#;*Z3;wd@_=n&HZvtrx{L{6#*XW7TY6K@FWRX#D z-jvrz_x4JIY4J#SNK;q;f%Y}h3=0!BEKEM={AER4fNkfwAAY<{*anve*2OFO+qhzL zut#W2PVogS5(3}S6v|#Q$x2jcrrA_i61w;trGam@6mB>|SIu(X*61) z!|pt$`PfAR=mF_n_8Yd|_nqs^*Irxn8Im;gQ^H{jXL86|H^*wvY(N-RwldSOpDV4B z@w!ncqU^PGiIq?DnS=RIIfLHN6Dp53pUocIB7HVWQ2u8?X;w?9;;k3+ zJtmb-OCxNe=l5MX?$E!@=zOMH?N8o$eq?t=0H9(&m`FvPKnmF6iJkV6$$$OPRM%q3wF=>LpQ@<10q%^ZLYuuA5N|U4bcx4H6S)jmI;zV+Eancw-)l2^ z@k6%WZr;cUuf8K~(%eeadelU};{JVg7YSjhZ`M&VvD7ho)!{2_S(I=SEg5c=q6zG_ z%2KJ?#5{iRXeC<3Soj9+pyWK2$-jS{W#GMfZP`A*ZZ<3gPL z?};eyn#N-4bvnV&WQRT1r@gcWMaB)=oZp^@y|1^J;u*Ke_)1bn zBtK^_`ifkt^W#gX`OnkS#%8c4S+Ph>f6_x@W}f6e;vnK65&0B4>M>P!d1A7w?lrB> z>d`$#U15_}U!EW|{O-~l8IwIQ{;sKq2Zm*LqQ&;*w$^u%a@3Ig)RCna>D$?x`xrkZ zKQtHo@JC7&4t(ZPhhcs$9M0Xu;-Q?Ew>;C)gh=>vM$iFrO?8Wb3KuwB=r)E?8Ju;q zF<;rEDu0VME}R|tIIMSB3L6m@E(cji0u(qiyiH~OZ9h0Y+4!{_kU zv*#m)<5fI_qla3DMcj)4TCD%=sVIK1yvd9Wz%mt(0jnNqr#iP@zp|Y%oR<4B%y#)^ zcxT3OwX)E(J7ZD3stokgFZqa?c5Ojh)BH~q{EdfAoQb9^W?nNA%4u(Z@gxj6qM*BX zkXQZQ`<043-1*j&d=<`tNIL} zV)rEdDt*Fr0Q-#eFBw{Ddwvl$_s_s8gIupd0-C*fIhOTo4I&Sgjf1R#v;$UkE_yB+kJ%)2Jr8d zi?d3^mU}>FKv#w~3N+IG)=US53b>2esD0~!9J9eyZGc%e%6s)LutZgdK1X`OHoUaq z_@tYWu)X}MHk%jYU|1Ru2!01>KJkEk%L&D_HqNYFG}VB`4~eLZBX8nWn=a5DH$pbn zX26s{pHeXTEB17K5=K&fq>&>b2bAo>jX&QW_08~**UZ~&;P{kP2CQ$xJF2v)pLXgw zvEa4RiS^1h(xZRfuS_067cR^uH;})R(Odsjq9;YoBeLppBqm@tN?ysAX>KX@YIt00 zLL&D|SK&GG>p!Lu6~YPg(p`Ssartu6iOT(q5pSquV1&0KSV9!=&k0r$ZNirx26!!k zoy71tQnly}2`S)MEtFT}C%ps!RJJwjWmSoL=@pDV)ZXYQ@xXgF;Hc4tkky@T!TfWh z%zhRRFg9^hW^B52@6@W`BWX>6spRc z=CG-%8l^3D@+M!Njo(JA2Hv$L&W*$Pgufigd92=-iSOqh+_*B_KG1JPm7)4)s|kJ@ z5D??-<+bX8NbF8i*8cqZa^-AbK&tbHvxn5gBn`Kq8knt5l||=JZ*5__qUIWGXxNm&)a`(Y zcB}g>ly~-Go~}nRxsgwR({Jtmd=y`*=i=aP<9(hM{ z3h2&LyRv!XmFFxYW`mpa)4igZ*Or5rcH_kc(CKRcmzM%zTa&& zXb^Kjw$=Coj-J?>y?ImXk%;4={km6Y ztJkUh9TQ^tW>=5!h(pfJHf1l1%xg70c=gD&m!qg5{3+@^S)_2z8qc->99x+H&HKO( z7uH;rJ}&!?B54L#VD=A^>9A;MAp?H*7y4g8^+L&@&^ zp}RdhMMv0E2#WE~cRXls8QNAkU}4j&X57MUZgt;d@ojuw*?1`OqT(cjcKPh*+K~<3 z?A0u0{dhug-2;vPy{so~*^YOdBsNoo%AUOHbgZk^#DhhzEqVswG+5>P9g%ZDzV8?Y!kj z291A1jg=+ND!gnq&E=yf+mZZ!7>Cf$rl>gMs=l;{`#a}SRmJK|j8U+I;gWZ-J~*ju zbamfj;ah#Fg{vr*cc;RkR}0-XKpgzIc$SH3cZpVQN%iqH z0Q1Aw5=lF{pV{aZY(GyvQ{Xd-k7Ft3i==!vRyTn^5q=MORdKN1bFm+8;on_4#eBQU z>-%fG(nUMJ`-Gz|#Jk#KeNKP(W%XQ=b?nahoSfl_T18_A67!9P3qENaUCjP}b@iQ5 zO>|Map($1nL{L9h zYUrUQks4Y^&s^T`erw&e?#!Q=U+1hjd-mSvInRDJ{->ZGYl=f_m`nRObD!rwF|wNWPdl)PKo3enscUFyEdTwi z>0f+wXYBB;l6U1kJJ%fTlu>;bQg#kbC`ggZZExI=3BJ0+r!n@6^YPE!;V(>zv;U^?e1*H{b_NGt{C`;2x!F6-ttMRLy) zH;vc+P;@X?^zmjW@;4_cj!F5&^$UbvR&Z#K??LUx7eCxJfiKxWJZsYD8R;&?NstM;1;t^bJ@ug925IlJ0~~_V1hG#aAg`T6^@% zzrS}TAD@K!3D#>!GaJi!F7p)z!<+~VH#p?38Wcr)=^ch7-;`LQ%gD1&KY#)23yTuG zT9_k@?}&xQuIYF{+AXbYdRwsb4CQo-+C%B`^#gDzlRujCP!HG;a(MIem5(Nfe$Djk zYwj(UOt11Dg{%jLPU%~^u+P{$lhKZ&MvRwFzHOB#DONu($63({caH>0DTKs)OVd^= z^;R^m8dMc4&`sA8G6%T?hOCX4}pXwQ)H(!e?D2c?y z>DhLpcc}YaEvLjyRQX{A{IHTDRx zk)T1^)LD2BA#qs~yURbHgJ!-A6|^(XEW&?+kJCvANCGzX#(168;4y{OE{arU(xt8P z*r=#oZcy0;Q^brJfVTrPh&`dXK`hEhbx1+}?n2jg#tAzl1fQXR^lzYH%u18IDm?1e z#E{xFWG*rnFAaarm(Y{_%bek|8!V8-QZ&yI!-vemQ(h*xPw=V;B-s|a!S`QYfau{! z(Z@2@1;41-Lw{bEs~RN@O`Y^>S5H7{{{95+eX`g=p0=$Sqmj{pNwrfq9*>!yA4~Z| zUER<&yqZqFl|)=_92oGSi@J)#4Nez=mA`uIxNL2ra=wMTlsO zl&z4TtG$?dA}MIg+&OC9S%)|nm|1Tn8<6xks({JgkT?8ljFHs5uU6Gg*q4HDxa{Mr z=p1npX>qx$(+&y-$a|_L7*+@sy>O=Sjf3j-Ny~pSqET|4^<ng?^4t5A}5V z;kVl;yno+J(JkSMA;%jq74^~J8Y^*a?7m1R$K+RdCz+>v3wA2U?A!&q`XN48X73%4 zOK`OII`zZV+pgt?Z(kVw;{kM;oQlP0h?4`f9iWyrMnnkK+i{^N>h%?aSMZJBg!n6h z=A_Ndy58yLFfNosg|sxBYDPsxGFTiST82bmw&AM@Q`D~Bo>?BT&)4h8q(08tCve&x z0RZ*CQ#gzaO2{ts8r6*7Owi=kz(T^Fu~dRhAxmJ=vK@^N#C*h2Q2cxZP*t9=XS*=f z5@Pyf&3Sb~)CwrAUWs*PW_BQC`w3!5C%_rzExTz6MjLuZzxNp^$u@IVL_#@UG`bFn z_=y(~fSq3u&$WDy*h)t6Jw_;>`rTs+qpo+WG2OkQO|{U9V`-Lm6$WHKU%VlG_q@=@ za5bUo*RL$vz_Xgdax}xB>Vco~y+w^#&-eJZmHwL!JG}Mwo`Vqb8N_zKfn1ZL$lx_$ zp?IY`hkpx$^7KG<^OB24VxMdW8P#3a!avUeT!~crtzSheAV^6%aWsa!8Q#`vx9$bK zR%!8XO)m;tJ7f_uNxu|^pMc}!&7(K!d*@NW>PLjq6%KWJc770?4-I=HD{`|G?4v)H zyuLQguR{la&!=Y<5qXOEVYQwoR_jP2gXLyGI-;IL-GC?OJ5h`bg%yZ4vSS5uCBgZa2Jn=qQ zIe-G_rv?nnn@d$8i^|_6#`Hh z15>RG>BVY_SlX94&)}vcp+C+^m4do*ir?mRDarX99nZM5NWws`*w?HT>o)K^&lrrt zYcp`Qp%Z+FU-uOVo(xaxsg1nJd(-nA`-j$(+v2!M%&?{6lTc7Hd5?fIp%)=U*qiSN zQ{dVmR>dqs<+Z7)?rCb@Swo1&a7WIU>H_7*Y@xxbv1(+^sttn4;BcGX zO)!zS+gZS`54;T;$GUr=7w#5JN+QGN7VH?2H+=d}P5Vqq<2`a-@%s>&PV3;l)oYEn z=I=T-INA%YMq7rIXg}~vePUjct+wzoL9AS-EBu>}bKF@4)WK>PI|% zIfoZ3b(dRVL79!ixL0E-gTYtQMGA0t5j_j(jZ!$dzzLBfie5Xcj$Hq$dRi6yb}bgG zqvvq(#EVeb)4VYEtY_|v2jlLGOX+L@PhMl%HTH^}VnpE2W@TiEoSeXo%Sn*es;jFa zrb0QR0BqzE$A8kx8B|?M8Yd{D()@QTb zWxjN;F9OkUtF^=aHKXB`V~K>O{uJ3q{UyFI!798m6f57HNZ)h@@aqp-wFe1Vu*#7U zYXei7PdC8p4u{(5`PXrq zj2}T?%{tNR!GU)b@z*Yj8%cil=uUO9I0n30`d)ctR;SoUCVxSseIKgB%{cpe-aese z4sxN?+ArYlYpP8T8s(=_ZvXVb&4UG7fj=$2{$zdMQeGZfvb)cSfs>9W42^Zx-Z*_v z2+m4Si4y}&K}4U3D#@P)`BogLo7!>WnTurolud$U9Faedf4{rjp8vFBlH`sl^<`#K zo8O$`-?lE#INinaX||7|}clgM#^$r4E&Kg7GNGN-e@0Qb6CBqu{?KiEW1r23LB65w8wl z#(|lc$Qsost>|H$P)A-5?asc?G52*gPwywkB^Nw_qg>?U#cN{MkLd^es$s)5s7G~T zIYk(z7204-g&Vx)ma2Kwn}qSgMCPA&Ho!p*1OSG$D|=6EPrq6p#fo$lk*Rh`ZPY9? z;{Hphu$3fMmB}qMX?P4HY>MZ5xyU8kkZx&d8r8hgZV7#C{&i26=VDg!_jMD|vRk7c zJo@7T7R|T5W%ap+blS_^j?MV?sqcR|9alI12eTW%>kEfKB&K9j4XFnRgsLphYe zOP`(TcElUr7s;%2dH}owBHA-kJ06jXnuX)4dQjYYL0C*(|Hey0y|D`CSN=i1%qR|duMuz>Q3^{KE7@GYxbh$NEF5y%4%WT%p=45@7}Igs9;pDPFGaEy0u#z3 zCNU8Q$v!}hLyi{={U{61o3K1?-fz6L%3SOt&$q6ToT1jhEmhf|Z;0C$`sS4?xVY_hPSI7U!54YaEQqq|?3<0sCv{o|qlGdD zrN++qz=>Fr>`l`YBZp%2WBLS|vp#h!mG~5<N`tkDc#9l#b?>Z3W&gUKosLlaV;gjWic-y<=6dV9bpc?demh<&Dg5Dx~VD%O`s~Ctosr zJT##M+wq0@0}>;Z)384lY`05CQMSPdbRzmkZG9WYM+R*DAdbF4jK^U3-$>qU?v4VT zLfqAx7lb6mXB@6SwxJfc6pezyouliP8@w4Q%O%YN$h#s$#TP$2Y)y8oDR7e{I)9F_ zv8ENSz(Wj2_bCg->5%(2f!4o`(I3;=a&+fek66agh|gbzZRgw;ts2I%ZgsuO)X9+v z!N^uYml(0z7fOo2^RV1Mj2VSxvI@P2@&jP=`I)PW%dEfhRby+9VNg zar#{yTjp%+z3(CrjhJ6whWihMC^hT^WA)E@>$a#pt@+uPr7~9iApEhJE85}L{*$cU zViU7D*OgOslp|RmLq%N0WeA%;+<7Mr4Z*MoGvx(_0sk43SFI=KD~ER$rZe8j?vpkI~bHQgMo%dL-U!_#|E znDapEOgtg{G>Kl=AKZ_O4lT)+~zTq5d;deaEw8}3-sK}W$i|vMw4#y9IN4fLS1LmpABpN4rPCo??=EK zv244AZ+KSDTz`A#yRIHPpt@QS5%3X4PkjDv%`S-xtu5Hm%2)xm$F_0hSyIJ5JT)R$8uQXf+& z0=(nnf1C=7FKeStd8g;`x>vG2E-z+ekj5S5dzRjf|Aq60p;w02jvtT4M_J!TJmsF7 z-QaA^k9Kp1&B$G?$1t;P+Uc{AZu31lENEG zwlAM{R(blL$IwBd)@RjdEX zwYI_u+1V0T!UUBP%aP0T3|H3+;|!JKokxjBqZqbVsN8;d{Wp!k3s&nCd^nvP5XI@OryJA_Gz;*FWs*k%by5QZ_jgJ#@!O~=B zTMRoFlY?T;*olF8X)l7yP~RjO&r#}w@9B)YPsH))jXlw2VF;f|4OEhu>4Lg6`nMRO z5a~jCM*P{k1`6U()YMIlK)o1W-760~t;3GmTpA_HmS*4;n-aF*(2>jSBNw6V413~yi1 zMmRSShB85}yG%ki&&nurX9S+qwr2w;u?Gn?5^xre*^?xn}i zm(1%VWVZ_B5#I$7-H7^K@pT^qYtJ|ZYc(BJsH=N0t4X!gdF)ej zRJ*MBkrokqVM9H8N9L{4C)i=C@}b}DgUy=s zs>=FI$rsw^Gef_`B;S(&9oH2OF!FtW>x1}?>%|3%Sm|TgW!<`ntKY+IZrw6e7CplU z##&Ro^PMuPDO-_go^^8d5!2I9o@Y$}DV*gGjCkocU9)wEMul+J+RK++Q3LPfoKuqj z6y!zx*@rYYqb~;4JmF3l*CnCgH3f9MpZdoKn&~m|PV54)l}j49o*NkLjwc;Jd3L)1 zrRsn^r6wWGc)WGuK(Cpi@W)4+IyfZ13=o70lTLFqWSzytMnurgvbkPQQ}KL%>|rch z?JfSDnSm*P6!W{8Kw#3aypi=&e-|k~o@`CD?Ga4i)@c~M5mor)huX4+BURVmhP^o1 ztZv@-AZc4Ps-bnH)LL#-`p=c4c17?|%Q40Y0Uxdq5AIZ+!M7#Amn3 zhaa_XC%RbfrG{M@9lej%620{Uf-2ZCHDTQ`$S#( zZwWu2dMPROu>!C}WmjhumvDDv6z}zXS3|C-*sw3a#=9b`1>Jt0=Tr|k+@U<@goo#L zRh+rF^9rGVW3Zr$SV#ZkHc5Qwb?EZ9_S>9ZM&NBqNCfl{nJKP<@<7w+v}G>oDCN

@fRU$|lAcT=uAH8+#{neD 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 Z0E7UB06JoI@t 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 D;ThTq literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/models/machines/ammo_press.png b/src/main/resources/assets/hbm/textures/models/machines/ammo_press.png new file mode 100644 index 0000000000000000000000000000000000000000..77c7930ae4d13c13a99a34fa43f67d3c9ce6e104 GIT binary patch literal 7414 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 BWM=>X delta 2942 zcmV-^3xV{~6_gi{Gk*(9NklPiP&-9mjvK2;?WP<%i?yDUIAXh8{}52cHbN zw72@yfUjn+Aqo+}5jhANi~~9Z#k4AQ$@NjlDUe%wD72S?Pd)^SFQsXTn_91`dA3)2 z5*W6JWS-}(W_Rb$Z)SeG`}=^9-%4+Hp1j}v{^mEondt#zOn;iD`Diri#cl@^o|~H+ zdF(a-04&6AKox14=HHB;!iAM(_-6bR{`|);SS$BojplTCw=HIEuvp+e>?#b zr; zivk9KXyQG;GJlA2-7>_3Bj&@5VE_PrQ1$~M;Dc-m)5GI%Eg}vzx6J`^)$1G}7hlEW zW$!BE#+Q%f0J(fl)AJWm ziA>doy0(aai?1$-w>GOh8jX4)Y{s~0b<*i~c6Lc-kAJDTtxQo=m8C zMHaC9y3JHNu0S|1hU?zh+3oF*Cs6f84eD+yZe*%XQ|F?X*Xe?20Sw1+FZ;<&^sC2XebwoEtaQLhBT z3Ymq2V|`w(RqiHaYL!FwC540PUUPpufh0+MHi=;x3F%1&006gdZTCLj*>-x$eXzMT zb4OFBOw%-vUHZu|MHXW8BTcXQ!RA))x4-+fm4A5Oedj&rkQQqUn_;k6FmWJ^{$bPl zhN1vvdU(v@WyoM0D!cTFUEKZMciuC0T@1Gsuhmd6%WLaiaPT6GFy?$dI_5bbjKiq9p#MD-d9JlM^nQe64;c#{C_1@m2NG)MZ z(0>wcjOrnkGsX;+o9wzOgkT2)b=QXlOq<%0MCD#PI_42P>Q z7z~u6701QzF*K=kTv@bja2Z!**KHy~utg@5@}%K#xXSJ;L8XSiRJfEx`|-|pKAj#~ zzgI56z@X`_3s5aqhCU~R8)CIb6F$7Pm49bh=6sIZx3*ElD_j@jTp^L&)>O3Yy7UOT zJgW_^qGje`r)>u_7ZSp~cxjErV#)q^f;OAUbPehNdyA*O$4wW%7!kks6g@0G! z{_`IXeV(2%WH1@t_*vBwT zht{FR#wKH~A8#V_c4yU{{HP80O0N?AM*XE3Hin1 zC{QQT(@B3;zpUzN_z0tI5kjmJFn@=~v|-^E&=DyBzz2G@zL{>!sTiw zH&lzsnJjf<+vn63ZBdwIj;kZ!VlBFRMm!+~sZV~LtsXDi<>VNmD1f#RI7KQVAGVpdL>hSEAzC810Z?JCPUs|?7*lyti|vfCDiX#~ed&vh?r zO{Ys9Dbke6sVdjSa9fkH+B8k`2M-=NT`x`394kMucxquLUSF=;={_!1LRU`d&KN2p z?v<+XTa#fO-7P_54SyGvx$UbjpM!t>=ke^j__$4X zvfHXeD~nfv?YcZWh#)>hSm(NR@3Fzx%0^Al_botMWRce_PeJEpuES;^pL2hmZw}G0C9I)QQ%&c$M>Ud0L-2O?lwe z36q*&MW0jUyzM%m

UoM{aAe#o=a9mfk zszeolyX*3N+<)(pm#$GgxI&4!O>0hJPq-+12*jA!VIo=|``d`AXtBq4JDpWlJ*;fSj2RM! ztej%z(Vh8YBU+VsZC$t1!d2lSW(-2DIn_kYuMDimTYpVZt?^XERvu8*jtKFPAa|W_3gCt43*7)ApjDmiS9>bPznhv^z2Yuc%gbi@poS-6Z5JbP>&4AI(z%Pd@i zgs7Zi%zydv-dDYAS1;$sN6%-OXLei$0K!*JF>b^Pmsz-;`S~y2H0l#JWz8uHV6GG8 zLX7M(3pWs_UU>}w0FM6s_5AU*?~gxxah!7H6qQ*}r;|P$WYgf{r4lZ)a075^?KK!& z_z3_2OnNUwI(HntJ5IfFs!Swe{Vq&lS7or}LVt|d&Ko0KX5kW}4V6>andh>HL0iOY z0}D3*M-RV-iS+NfIm%{7{OiWj3aQ*z(Z>;CK8)((_KgI81 zix9hg061<|TyRg-FSQkPtoyo^j@!kpJd24ZYSZpwwy#WFJ_YR??&BJQu`4-40~rV05l(i?gaK+Xg0PY)T z3*n3Nv}INb^~x!#6;lA=?}6e5VRxZexU;j{0|@sd-5*cT|F|xjabu46*|?f&l7X)^ zr!d;b&>-l>);=E&RQfo&8QL;I_^zCCZ68B})+DDWh*qXdAUc8w5$?LQkBLuE;WpjX oZJ;g$oA$LOmw-X&VIaZ(0iQWHyK_`bg8%>k07*qoM6N<$g3mC);{X5v diff --git a/src/main/resources/assets/hbm/textures/models/weapons/bio_revolver_atlas.png b/src/main/resources/assets/hbm/textures/models/weapons/bio_revolver_atlas.png new file mode 100644 index 0000000000000000000000000000000000000000..32a05672c5da59d7ee5adc12602f617a54d6ccfa GIT binary patch literal 2964 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.o1ePz0hl=?VN!@P(*^lR5x>`$hxE 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 @MVvQ|CRQOpFFn`XP5J;<6ov}`sG#iC4 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�Byk=2Rt4ZJ94nH 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 diff --git a/src/main/resources/assets/hbm/textures/models/weapons/g3.png b/src/main/resources/assets/hbm/textures/models/weapons/g3.png index 6c19d9949c1369df69ac6546b7d60ffd865529f5..7e1c486406cf498003e33c6c44926872cc093b6c 100644 GIT binary patch delta 11348 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 N6l7GTD Date: Mon, 9 Dec 2024 16:12:09 +0100 Subject: [PATCH 21/24] too late to turn tail, too good to fail --- .../hbm/entity/projectile/EntityBulletBaseMK4.java | 5 +++++ .../entity/projectile/EntityBulletBeamBase.java | 3 +++ .../vanillant/standard/EntityProcessorCross.java | 9 ++++++--- .../com/hbm/items/weapon/sedna/ItemGunBaseNT.java | 4 ++++ .../weapon/sedna/factory/GunFactoryClient.java | 3 +++ .../weapon/sedna/factory/GunStateDecider.java | 5 ++++- .../com/hbm/items/weapon/sedna/factory/Lego.java | 4 ++++ .../items/weapon/sedna/factory/XFactory12ga.java | 3 +++ .../items/weapon/sedna/factory/XFactory40mm.java | 2 ++ .../weapon/sedna/factory/XFactoryCatapult.java | 4 ++-- .../items/weapon/sedna/factory/XFactoryRocket.java | 2 ++ .../items/weapon/sedna/factory/XFactoryTurret.java | 14 ++++++++------ src/main/java/com/hbm/particle/ParticleAshes.java | 8 ++++---- .../java/com/hbm/render/util/RenderInfoSystem.java | 2 +- 14 files changed, 51 insertions(+), 17 deletions(-) diff --git a/src/main/java/com/hbm/entity/projectile/EntityBulletBaseMK4.java b/src/main/java/com/hbm/entity/projectile/EntityBulletBaseMK4.java index 3118e764c..0d9161b98 100644 --- a/src/main/java/com/hbm/entity/projectile/EntityBulletBaseMK4.java +++ b/src/main/java/com/hbm/entity/projectile/EntityBulletBaseMK4.java @@ -5,6 +5,8 @@ import com.hbm.util.BobMathUtil; import com.hbm.util.TrackerUtil; import com.hbm.util.Vec3NT; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.EntityTrackerEntry; @@ -29,6 +31,7 @@ public class EntityBulletBaseMK4 extends EntityThrowableInterp { super(world); this.renderDistanceWeight = 10.0D; this.setSize(0.5F, 0.5F); + this.isImmuneToFire = true; } public EntityBulletBaseMK4(EntityLivingBase entity, BulletConfig config, float baseDamage, float gunSpread, double sideOffset, double heightOffset, double frontOffset) { @@ -181,4 +184,6 @@ public class EntityBulletBaseMK4 extends EntityThrowableInterp { @Override public boolean doesPenetrate() { return this.config.doesPenetrate; } @Override public boolean isSpectral() { return this.config.isSpectral; } @Override public int selfDamageDelay() { return this.config.selfDamageDelay; } + + @Override @SideOnly(Side.CLIENT) public boolean canRenderOnFire() { return false; } } diff --git a/src/main/java/com/hbm/entity/projectile/EntityBulletBeamBase.java b/src/main/java/com/hbm/entity/projectile/EntityBulletBeamBase.java index 614d7be07..aaa65b397 100644 --- a/src/main/java/com/hbm/entity/projectile/EntityBulletBeamBase.java +++ b/src/main/java/com/hbm/entity/projectile/EntityBulletBeamBase.java @@ -33,6 +33,7 @@ public class EntityBulletBeamBase extends Entity implements IEntityAdditionalSpa this.ignoreFrustumCheck = true; this.renderDistanceWeight = 10.0D; this.setSize(0.5F, 0.5F); + this.isImmuneToFire = true; } public EntityLivingBase getThrower() { return this.thrower; } @@ -198,4 +199,6 @@ public class EntityBulletBeamBase extends Entity implements IEntityAdditionalSpa this.rotationYaw = buf.readFloat(); this.rotationPitch = buf.readFloat(); } + + @Override @SideOnly(Side.CLIENT) public boolean canRenderOnFire() { return false; } } diff --git a/src/main/java/com/hbm/explosion/vanillant/standard/EntityProcessorCross.java b/src/main/java/com/hbm/explosion/vanillant/standard/EntityProcessorCross.java index 88d55d49b..27bd3d7f4 100644 --- a/src/main/java/com/hbm/explosion/vanillant/standard/EntityProcessorCross.java +++ b/src/main/java/com/hbm/explosion/vanillant/standard/EntityProcessorCross.java @@ -4,6 +4,7 @@ import java.util.HashMap; import java.util.List; import java.util.Map.Entry; +import com.hbm.entity.projectile.EntityBulletBaseMK4; import com.hbm.explosion.vanillant.ExplosionVNT; import com.hbm.explosion.vanillant.interfaces.ICustomDamageHandler; import com.hbm.explosion.vanillant.interfaces.IEntityProcessor; @@ -96,9 +97,11 @@ public class EntityProcessorCross implements IEntityProcessor { if(!damageMap.containsKey(entity) || damageMap.get(entity) < dmg) damageMap.put(entity, dmg); double enchKnockback = EnchantmentProtection.func_92092_a(entity, knockback); - entity.motionX += deltaX * enchKnockback; - entity.motionY += deltaY * enchKnockback; - entity.motionZ += deltaZ * enchKnockback; + if(!(entity instanceof EntityBulletBaseMK4)) { + entity.motionX += deltaX * enchKnockback; + entity.motionY += deltaY * enchKnockback; + entity.motionZ += deltaZ * enchKnockback; + } if(entity instanceof EntityPlayer) { affectedPlayers.put((EntityPlayer) entity, Vec3.createVectorHelper(deltaX * knockback, deltaY * knockback, deltaZ * knockback)); diff --git a/src/main/java/com/hbm/items/weapon/sedna/ItemGunBaseNT.java b/src/main/java/com/hbm/items/weapon/sedna/ItemGunBaseNT.java index 2e5e4f924..7b1fdc58c 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/ItemGunBaseNT.java +++ b/src/main/java/com/hbm/items/weapon/sedna/ItemGunBaseNT.java @@ -66,6 +66,7 @@ public class ItemGunBaseNT extends Item implements IKeybindReceiver, IEquipRecei public static final String KEY_ANIMTIMER = "animtimer_"; public static final String KEY_LOCKONTARGET = "lockontarget"; public static final String KEY_LOCKEDON = "lockedon"; + public static final String KEY_CANCELRELOAD = "cancel"; public static ConcurrentHashMap loopedSounds = new ConcurrentHashMap(); @@ -285,6 +286,9 @@ public class ItemGunBaseNT extends Item implements IKeybindReceiver, IEquipRecei public static void setTertiary(ItemStack stack, int index, boolean value) { setValueBool(stack, KEY_TERTIARY + index, value); } public static boolean getReloadKey(ItemStack stack, int index) { return getValueBool(stack, KEY_RELOAD + index); } public static void setReloadKey(ItemStack stack, int index, boolean value) { setValueBool(stack, KEY_RELOAD + index, value); } + // RELOAD CANCEL // + public static boolean getReloadCancel(ItemStack stack) { return getValueBool(stack, KEY_CANCELRELOAD); } + public static void setReloadCancel(ItemStack stack, boolean value) { setValueBool(stack, KEY_CANCELRELOAD, value); } /// UTIL /// diff --git a/src/main/java/com/hbm/items/weapon/sedna/factory/GunFactoryClient.java b/src/main/java/com/hbm/items/weapon/sedna/factory/GunFactoryClient.java index 1632ab508..a6d1fd2fd 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/factory/GunFactoryClient.java +++ b/src/main/java/com/hbm/items/weapon/sedna/factory/GunFactoryClient.java @@ -16,6 +16,7 @@ import static com.hbm.items.weapon.sedna.factory.XFactoryBlackPowder.*; import static com.hbm.items.weapon.sedna.factory.XFactoryCatapult.*; import static com.hbm.items.weapon.sedna.factory.XFactoryEnergy.*; import static com.hbm.items.weapon.sedna.factory.XFactoryFolly.*; +import static com.hbm.items.weapon.sedna.factory.XFactoryTurret.*; import static com.hbm.items.weapon.sedna.factory.XFactoryRocket.*; import java.util.function.BiConsumer; @@ -170,6 +171,8 @@ public class GunFactoryClient { folly_sm.setRendererBeam(LegoClient.RENDER_FOLLY); folly_nuke.setRenderer(LegoClient.RENDER_BIG_NUKE); + setRendererBulk(LegoClient.RENDER_GRENADE, shell_normal, shell_explosive, shell_ap, shell_du, shell_w9); //TODO: change the sabots + //HUDS ((ItemGunBaseNT) ModItems.gun_debug) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO); ((ItemGunBaseNT) ModItems.gun_pepperbox) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO); diff --git a/src/main/java/com/hbm/items/weapon/sedna/factory/GunStateDecider.java b/src/main/java/com/hbm/items/weapon/sedna/factory/GunStateDecider.java index d0769f4a9..da9267e04 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/factory/GunStateDecider.java +++ b/src/main/java/com/hbm/items/weapon/sedna/factory/GunStateDecider.java @@ -63,9 +63,10 @@ public class GunStateDecider { IMagazine mag = rec.getMagazine(stack); mag.reloadAction(stack, ctx.inventory); + boolean cancel = ItemGunBaseNT.getReloadCancel(stack); //if after reloading the gun can still reload, assume a tube mag and resume reloading - if(mag.canReload(stack, ctx.inventory)) { + if(!cancel && mag.canReload(stack, ctx.inventory)) { ItemGunBaseNT.setState(stack, gunIndex, GunState.RELOADING); ItemGunBaseNT.setTimer(stack, gunIndex, rec.getReloadCycleDuration(stack)); ItemGunBaseNT.playAnimation(player, stack, AnimType.RELOAD_CYCLE, gunIndex); @@ -82,6 +83,8 @@ public class GunStateDecider { ItemGunBaseNT.setTimer(stack, gunIndex, duration); ItemGunBaseNT.playAnimation(player, stack, AnimType.RELOAD_END, gunIndex); } + + ItemGunBaseNT.setReloadCancel(stack, false); } mag.setAmountAfterReload(stack, mag.getAmount(stack, ctx.inventory)); diff --git a/src/main/java/com/hbm/items/weapon/sedna/factory/Lego.java b/src/main/java/com/hbm/items/weapon/sedna/factory/Lego.java index 1c2062b58..4760ceebc 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/factory/Lego.java +++ b/src/main/java/com/hbm/items/weapon/sedna/factory/Lego.java @@ -107,6 +107,10 @@ public class Lego { } } } + + if(state == GunState.RELOADING) { + ItemGunBaseNT.setReloadCancel(stack, true); + } } /** If IDLE, switch mode between 0 and 1. */ diff --git a/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory12ga.java b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory12ga.java index e3ee3d5c7..911400fe2 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory12ga.java +++ b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory12ga.java @@ -180,6 +180,9 @@ public class XFactory12ga { } } } + if(state == GunState.RELOADING) { + ItemGunBaseNT.setReloadCancel(stack, true); + } }; @SuppressWarnings("incomplete-switch") public static BiFunction LAMBDA_MARESLEG_ANIMS = (stack, type) -> { diff --git a/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory40mm.java b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory40mm.java index 502e11fb4..515a6a85b 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory40mm.java +++ b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory40mm.java @@ -74,6 +74,8 @@ public class XFactory40mm { if(mop.typeOfHit == mop.typeOfHit.ENTITY && mop.entityHit instanceof EntityLivingBase) { EntityLivingBase living = (EntityLivingBase) mop.entityHit; EntityDamageUtil.attackEntityFromNT(living, bullet.config.getDamage(bullet, bullet.getThrower(), DamageClass.EXPLOSIVE), bullet.damage * 3F, true, true, 0.5F, 3F, 0.15F); + } else if(mop.typeOfHit == mop.typeOfHit.ENTITY) { + mop.entityHit.attackEntityFrom(bullet.config.getDamage(bullet, bullet.getThrower(), DamageClass.EXPLOSIVE), bullet.damage * 3F); } }; public static BiConsumer LAMBDA_STANDARD_EXPLODE_DEMO = (bullet, mop) -> { diff --git a/src/main/java/com/hbm/items/weapon/sedna/factory/XFactoryCatapult.java b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactoryCatapult.java index 5eaada4fd..0317caee5 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/factory/XFactoryCatapult.java +++ b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactoryCatapult.java @@ -133,8 +133,8 @@ public class XFactoryCatapult { nuke_standard = new BulletConfig().setItem(EnumAmmo.NUKE_STANDARD).setLife(300).setVel(3F).setGrav(0.025F).setOnImpact(LAMBDA_NUKE_STANDARD); nuke_demo = new BulletConfig().setItem(EnumAmmo.NUKE_DEMO).setLife(300).setVel(3F).setGrav(0.025F).setOnImpact(LAMBDA_NUKE_DEMO); nuke_high = new BulletConfig().setItem(EnumAmmo.NUKE_HIGH).setLife(300).setVel(3F).setGrav(0.025F).setOnImpact(LAMBDA_NUKE_HIGH); - nuke_tots = new BulletConfig().setItem(EnumAmmo.NUKE_TOTS).setProjectiles(8).setLife(300).setVel(3F).setGrav(0.025F).setSpread(0.1F).setOnImpact(LAMBDA_NUKE_TINYTOT); - nuke_hive = new BulletConfig().setItem(EnumAmmo.NUKE_HIVE).setProjectiles(12).setLife(300).setVel(1F).setGrav(0.025F).setSpread(0.15F).setDamage(0.5F).setOnImpact(LAMBDA_NUKE_HIVE); + nuke_tots = new BulletConfig().setItem(EnumAmmo.NUKE_TOTS).setProjectiles(8).setLife(300).setVel(3F).setGrav(0.025F).setSpread(0.1F).setDamage(0.35F).setOnImpact(LAMBDA_NUKE_TINYTOT); + nuke_hive = new BulletConfig().setItem(EnumAmmo.NUKE_HIVE).setProjectiles(12).setLife(300).setVel(1F).setGrav(0.025F).setSpread(0.15F).setDamage(0.25F).setOnImpact(LAMBDA_NUKE_HIVE); ModItems.gun_fatman = new ItemGunBaseNT(WeaponQuality.A_SIDE, new GunConfig() .dura(300).draw(20).inspect(30).crosshair(Crosshair.L_CIRCUMFLEX).hideCrosshair(false) diff --git a/src/main/java/com/hbm/items/weapon/sedna/factory/XFactoryRocket.java b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactoryRocket.java index f0a9933c6..9ba444475 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/factory/XFactoryRocket.java +++ b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactoryRocket.java @@ -89,6 +89,8 @@ public class XFactoryRocket { if(mop.typeOfHit == mop.typeOfHit.ENTITY && mop.entityHit instanceof EntityLivingBase) { EntityLivingBase living = (EntityLivingBase) mop.entityHit; EntityDamageUtil.attackEntityFromNT(living, bullet.config.getDamage(bullet, bullet.getThrower(), DamageClass.EXPLOSIVE), bullet.damage * 3F, true, true, 0.5F, 5F, 0.2F); + } else if(mop.typeOfHit == mop.typeOfHit.ENTITY) { + mop.entityHit.attackEntityFrom(bullet.config.getDamage(bullet, bullet.getThrower(), DamageClass.EXPLOSIVE), bullet.damage * 3F); } }; public static BiConsumer LAMBDA_STANDARD_EXPLODE_DEMO = (bullet, mop) -> { diff --git a/src/main/java/com/hbm/items/weapon/sedna/factory/XFactoryTurret.java b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactoryTurret.java index c5a50ce06..0c5e332aa 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/factory/XFactoryTurret.java +++ b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactoryTurret.java @@ -12,6 +12,8 @@ import com.hbm.items.weapon.sedna.BulletConfig; import com.hbm.particle.SpentCasing; import com.hbm.particle.SpentCasing.CasingType; +import net.minecraft.item.ItemStack; + public class XFactoryTurret { public static BulletConfig dgk_normal; @@ -24,12 +26,12 @@ public class XFactoryTurret { public static BulletConfig shell_w9; public static void init() { - dgk_normal = new BulletConfig(); + dgk_normal = new BulletConfig().setItem(new ItemStack(ModItems.ammo_dgk)); - shell_normal = new BulletConfig().setItem(ModItems.ammo_shell.stackFromEnum(Ammo240Shell.STOCK)).setDamage(1F).setCasing(CASINNG240MM).setOnImpact((bullet, mop) -> { + shell_normal = new BulletConfig().setItem(ModItems.ammo_shell.stackFromEnum(Ammo240Shell.STOCK)).setDamage(1F).setCasing(CASINNG240MM.clone().register("240standard")).setOnImpact((bullet, mop) -> { Lego.standardExplode(bullet, mop, 10F); bullet.setDead(); }); - shell_explosive = new BulletConfig().setItem(ModItems.ammo_shell.stackFromEnum(Ammo240Shell.EXPLOSIVE)).setDamage(1.5F).setCasing(CASINNG240MM).setOnImpact((bullet, mop) -> { + shell_explosive = new BulletConfig().setItem(ModItems.ammo_shell.stackFromEnum(Ammo240Shell.EXPLOSIVE)).setDamage(1.5F).setCasing(CASINNG240MM.clone().register("240ext")).setOnImpact((bullet, mop) -> { ExplosionVNT vnt = new ExplosionVNT(bullet.worldObj, mop.hitVec.xCoord, mop.hitVec.yCoord, mop.hitVec.zCoord, 10F); vnt.setBlockAllocator(new BlockAllocatorStandard()); vnt.setBlockProcessor(new BlockProcessorStandard()); @@ -39,8 +41,8 @@ public class XFactoryTurret { vnt.explode(); bullet.setDead(); }); - shell_ap = new BulletConfig().setItem(ModItems.ammo_shell.stackFromEnum(Ammo240Shell.APFSDS_T)).setDamage(2F).setDoesPenetrate(true).setCasing(CASINNG240MM); - shell_du = new BulletConfig().setItem(ModItems.ammo_shell.stackFromEnum(Ammo240Shell.APFSDS_DU)).setDamage(2.5F).setDoesPenetrate(true).setDamageFalloutByPen(false).setCasing(CASINNG240MM); - shell_w9 = new BulletConfig().setItem(ModItems.ammo_shell.stackFromEnum(Ammo240Shell.W9)).setDamage(2.5F).setCasing(CASINNG240MM).setOnImpact(XFactoryCatapult.LAMBDA_NUKE_STANDARD); + shell_ap = new BulletConfig().setItem(ModItems.ammo_shell.stackFromEnum(Ammo240Shell.APFSDS_T)).setDamage(2F).setDoesPenetrate(true).setCasing(CASINNG240MM.clone().register("240w")); + shell_du = new BulletConfig().setItem(ModItems.ammo_shell.stackFromEnum(Ammo240Shell.APFSDS_DU)).setDamage(2.5F).setDoesPenetrate(true).setDamageFalloutByPen(false).setCasing(CASINNG240MM.clone().register("240u")); + shell_w9 = new BulletConfig().setItem(ModItems.ammo_shell.stackFromEnum(Ammo240Shell.W9)).setDamage(2.5F).setCasing(CASINNG240MM.clone().register("240n")).setOnImpact(XFactoryCatapult.LAMBDA_NUKE_STANDARD); } } diff --git a/src/main/java/com/hbm/particle/ParticleAshes.java b/src/main/java/com/hbm/particle/ParticleAshes.java index 5b869ed7e..4b76c52ac 100644 --- a/src/main/java/com/hbm/particle/ParticleAshes.java +++ b/src/main/java/com/hbm/particle/ParticleAshes.java @@ -54,7 +54,7 @@ public class ParticleAshes extends EntityFXRotating { @Override public void renderParticle(Tessellator tess, float interp, float sX, float sY, float sZ, float dX, float dZ) { - + float timeLeft = this.particleMaxAge - (this.particleAge + interp); if(timeLeft < 40) { @@ -74,11 +74,11 @@ public class ParticleAshes extends EntityFXRotating { Vec3NT vec = new Vec3NT(particleScale, 0, particleScale).rotateAroundYDeg(this.rotationPitch); tess.addVertexWithUV(pX + vec.xCoord, pY + 0.05, pZ + vec.zCoord, particleIcon.getMaxU(), particleIcon.getMaxV()); - vec.rotateAroundYDeg(-90); + vec.rotateAroundYDeg(90); tess.addVertexWithUV(pX + vec.xCoord, pY + 0.05, pZ + vec.zCoord, particleIcon.getMaxU(), particleIcon.getMinV()); - vec.rotateAroundYDeg(-90); + vec.rotateAroundYDeg(90); tess.addVertexWithUV(pX + vec.xCoord, pY + 0.05, pZ + vec.zCoord, particleIcon.getMinU(), particleIcon.getMinV()); - vec.rotateAroundYDeg(-90); + vec.rotateAroundYDeg(90); tess.addVertexWithUV(pX + vec.xCoord, pY + 0.05, pZ + vec.zCoord, particleIcon.getMinU(), particleIcon.getMaxV()); } else { renderParticleRotated(tess, interp, sX, sY, sZ, dX, dZ, this.particleScale); diff --git a/src/main/java/com/hbm/render/util/RenderInfoSystem.java b/src/main/java/com/hbm/render/util/RenderInfoSystem.java index 7f7edde9f..367d01f10 100644 --- a/src/main/java/com/hbm/render/util/RenderInfoSystem.java +++ b/src/main/java/com/hbm/render/util/RenderInfoSystem.java @@ -50,7 +50,7 @@ public class RenderInfoSystem { if(event.type != ElementType.CROSSHAIRS) return; - this.messages.put(-666, new InfoEntry("Super Cancer World preview special edition director's cut and Knuckles", 666_666)); + this.messages.put(-666, new InfoEntry("Your arteries are bad cable management, rip them out deluxe edition", 666_666)); if(this.messages.isEmpty()) return; From fbe97e8d79c0915b280c245a6e01143ce1f4e409 Mon Sep 17 00:00:00 2001 From: Boblet Date: Wed, 11 Dec 2024 16:06:51 +0100 Subject: [PATCH 22/24] people turn off PVP? --- src/main/java/com/hbm/util/EntityDamageUtil.java | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/main/java/com/hbm/util/EntityDamageUtil.java b/src/main/java/com/hbm/util/EntityDamageUtil.java index 54d72e20e..83caeb807 100644 --- a/src/main/java/com/hbm/util/EntityDamageUtil.java +++ b/src/main/java/com/hbm/util/EntityDamageUtil.java @@ -10,6 +10,7 @@ import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.SharedMonsterAttributes; import net.minecraft.entity.passive.EntityTameable; import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.potion.Potion; import net.minecraft.util.AxisAlignedBB; import net.minecraft.util.DamageSource; @@ -38,6 +39,11 @@ public class EntityDamageUtil { } public static boolean attackEntityFromNT(EntityLivingBase living, DamageSource source, float amount, boolean ignoreIFrame, boolean allowSpecialCancel, double knockbackMultiplier, float pierceDT, float pierce) { + if(living instanceof EntityPlayerMP && source.getEntity() instanceof EntityPlayer) { + EntityPlayerMP playerMP = (EntityPlayerMP) living; + EntityPlayer attacker = (EntityPlayer) source.getEntity(); + if(!playerMP.canAttackPlayer(attacker)) return false; //handles wack-ass no PVP rule as well as scoreboard friendly fire + } DamageResistanceHandler.setup(pierceDT, pierce); boolean ret = attackEntityFromNTInternal(living, source, amount, ignoreIFrame, allowSpecialCancel, knockbackMultiplier); //boolean ret = living.attackEntityFrom(source, amount); From bbce45170e37199882707afcb0a5ec139f010c0b Mon Sep 17 00:00:00 2001 From: Boblet Date: Thu, 12 Dec 2024 16:37:05 +0100 Subject: [PATCH 23/24] why is it called land-mine when it doesn't even belong to me --- changelog | 1 + .../java/com/hbm/blocks/bomb/Landmine.java | 13 +- .../weapon/sedna/factory/XFactory357.java | 2 +- .../java/com/hbm/main/ResourceManager.java | 9 +- .../hbm/render/item/ItemRenderLibrary.java | 13 +- .../hbm/render/tileentity/RenderLandmine.java | 13 +- .../java/com/hbm/world/dungeon/Radio01.java | 2 +- .../assets/hbm/models/bombs/ap_mine.obj | 749 ++++++++++++++++++ .../resources/assets/hbm/models/mine_ap.obj | 209 ----- .../textures/models/bombs/mine_ap_base.png | Bin 0 -> 348 bytes .../textures/models/bombs/mine_ap_desert.png | Bin 0 -> 373 bytes .../textures/models/bombs/mine_ap_grass.png | Bin 0 -> 353 bytes .../textures/models/bombs/mine_ap_snow.png | Bin 0 -> 348 bytes .../textures/models/bombs/mine_ap_stone.png | Bin 0 -> 341 bytes 14 files changed, 779 insertions(+), 232 deletions(-) create mode 100644 src/main/resources/assets/hbm/models/bombs/ap_mine.obj delete mode 100644 src/main/resources/assets/hbm/models/mine_ap.obj create mode 100644 src/main/resources/assets/hbm/textures/models/bombs/mine_ap_base.png create mode 100644 src/main/resources/assets/hbm/textures/models/bombs/mine_ap_desert.png create mode 100644 src/main/resources/assets/hbm/textures/models/bombs/mine_ap_grass.png create mode 100644 src/main/resources/assets/hbm/textures/models/bombs/mine_ap_snow.png create mode 100644 src/main/resources/assets/hbm/textures/models/bombs/mine_ap_stone.png diff --git a/changelog b/changelog index cec7aa2fa..ca4dc65aa 100644 --- a/changelog +++ b/changelog @@ -60,6 +60,7 @@ * Unsats and aromatics can now be filled into gas canisters * Basalt asbestos ore no longer creates asbestos particles every block update, meaning volcanoes no longer cause massive delays with chunk rendering due to constant block changes * Rockets shot by the rocket turret are no longer subject to gravity and lock onto the intended target +* Updated the anti-personell mine's model, it also now has 4 different textures which are automatically applied depending on whether the mine is placed underground or what biome it is in ## Fixed * The conveyor grabber should no longer skip over items when used in long lines diff --git a/src/main/java/com/hbm/blocks/bomb/Landmine.java b/src/main/java/com/hbm/blocks/bomb/Landmine.java index 966cc470f..e9dff492a 100644 --- a/src/main/java/com/hbm/blocks/bomb/Landmine.java +++ b/src/main/java/com/hbm/blocks/bomb/Landmine.java @@ -70,14 +70,10 @@ public class Landmine extends BlockContainer implements IBomb { @Override public void setBlockBoundsBasedOnState(IBlockAccess world, int x, int y, int z) { float f = 0.0625F; - if(this == ModBlocks.mine_ap) - this.setBlockBounds(6 * f, 0.0F, 6 * f, 10 * f, 2 * f, 10 * f); - if(this == ModBlocks.mine_he) - this.setBlockBounds(4 * f, 0.0F, 4 * f, 12 * f, 2 * f, 12 * f); - if(this == ModBlocks.mine_shrap) - this.setBlockBounds(4 * f, 0.0F, 4 * f, 12 * f, 2 * f, 12 * f); - if(this == ModBlocks.mine_fat) - this.setBlockBounds(5 * f, 0.0F, 4 * f, 11 * f, 6 * f, 12 * f); + if(this == ModBlocks.mine_ap) this.setBlockBounds(5 * f, 0.0F, 5 * f, 11 * f, 1 * f, 11 * f); + if(this == ModBlocks.mine_he) this.setBlockBounds(4 * f, 0.0F, 4 * f, 12 * f, 2 * f, 12 * f); + if(this == ModBlocks.mine_shrap) this.setBlockBounds(4 * f, 0.0F, 4 * f, 12 * f, 2 * f, 12 * f); + if(this == ModBlocks.mine_fat) this.setBlockBounds(5 * f, 0.0F, 4 * f, 11 * f, 6 * f, 12 * f); } @Override @@ -182,5 +178,4 @@ public class Landmine extends BlockContainer implements IBomb { return BombReturnCode.DETONATED; } - } diff --git a/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory357.java b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory357.java index d5468521b..eab5ab175 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory357.java +++ b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory357.java @@ -45,7 +45,7 @@ public class XFactory357 { .setupStandardConfiguration() .anim(LAMBDA_ATLAS_ANIMS).orchestra(Orchestras.ORCHESTRA_ATLAS) ).setUnlocalizedName("gun_light_revolver"); - ModItems.gun_light_revolver_atlas = new ItemGunBaseNT(WeaponQuality.A_SIDE, new GunConfig() + ModItems.gun_light_revolver_atlas = new ItemGunBaseNT(WeaponQuality.B_SIDE, new GunConfig() .dura(300).draw(4).inspect(23).crosshair(Crosshair.CIRCLE).smoke(Lego.LAMBDA_STANDARD_SMOKE) .rec(new Receiver(0) .dmg(12.5F).delay(16).reload(55).jam(45).sound("hbm:weapon.fire.pistol", 1.0F, 1.0F) diff --git a/src/main/java/com/hbm/main/ResourceManager.java b/src/main/java/com/hbm/main/ResourceManager.java index d203ebb00..72e8b7455 100644 --- a/src/main/java/com/hbm/main/ResourceManager.java +++ b/src/main/java/com/hbm/main/ResourceManager.java @@ -59,9 +59,9 @@ public class ResourceManager { public static final IModelCustom combination_oven = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/machines/combination_oven.obj")); //Landmines - public static final IModelCustom mine_ap = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/mine_ap.obj")); + public static final IModelCustom mine_ap = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/bombs/ap_mine.obj")).asVBO(); public static final IModelCustom mine_he = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/mine_he.obj")); - public static final IModelCustom mine_marelet = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/bombs/marelet.obj")); + public static final IModelCustom mine_marelet = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/bombs/marelet.obj")).asVBO(); public static final IModelCustom mine_fat = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/mine_fat.obj")); //Oil Pumps @@ -429,7 +429,10 @@ public class ResourceManager { public static final ResourceLocation brandon_explosive = new ResourceLocation(RefStrings.MODID, "textures/models/turrets/brandon_drum.png"); //Landmines - public static final ResourceLocation mine_ap_tex = new ResourceLocation(RefStrings.MODID, "textures/models/mine_ap.png"); + public static final ResourceLocation mine_ap_grass_tex = new ResourceLocation(RefStrings.MODID, "textures/models/bombs/mine_ap_grass.png"); + public static final ResourceLocation mine_ap_desert_tex = new ResourceLocation(RefStrings.MODID, "textures/models/bombs/mine_ap_desert.png"); + public static final ResourceLocation mine_ap_snow_tex = new ResourceLocation(RefStrings.MODID, "textures/models/bombs/mine_ap_snow.png"); + public static final ResourceLocation mine_ap_stone_tex = new ResourceLocation(RefStrings.MODID, "textures/models/bombs/mine_ap_stone.png"); //public static final ResourceLocation mine_he_tex = new ResourceLocation(RefStrings.MODID, "textures/models/mine_he.png"); public static final ResourceLocation mine_marelet_tex = new ResourceLocation(RefStrings.MODID, "textures/models/bombs/mine_marelet.png"); public static final ResourceLocation mine_shrap_tex = new ResourceLocation(RefStrings.MODID, "textures/models/mine_shrap.png"); diff --git a/src/main/java/com/hbm/render/item/ItemRenderLibrary.java b/src/main/java/com/hbm/render/item/ItemRenderLibrary.java index bcee704d8..2f0dc2eba 100644 --- a/src/main/java/com/hbm/render/item/ItemRenderLibrary.java +++ b/src/main/java/com/hbm/render/item/ItemRenderLibrary.java @@ -3,6 +3,7 @@ package com.hbm.render.item; import java.util.HashMap; import org.lwjgl.opengl.GL11; +import org.lwjgl.opengl.GL12; import com.hbm.blocks.ModBlocks; import com.hbm.blocks.generic.BlockBobble.BobbleType; @@ -481,12 +482,12 @@ public class ItemRenderLibrary { GL11.glScaled(8, 8, 8); } public void renderCommon() { - GL11.glScaled(6, 6, 6); - GL11.glRotatef(22.5F, 0F, 1F, 0F); - GL11.glDisable(GL11.GL_CULL_FACE); - bindTexture(ResourceManager.mine_ap_tex); - ResourceManager.mine_ap.renderAll(); - GL11.glEnable(GL11.GL_CULL_FACE); + GL11.glScaled(1.25, 1.25, 1.25); + GL11.glDisable(GL11.GL_CULL_FACE); + GL11.glShadeModel(GL11.GL_SMOOTH); + bindTexture(ResourceManager.mine_ap_grass_tex); ResourceManager.mine_ap.renderAll(); + GL11.glShadeModel(GL11.GL_FLAT); + GL11.glEnable(GL11.GL_CULL_FACE); }}); renderers.put(Item.getItemFromBlock(ModBlocks.mine_he), new ItemRenderBase() { diff --git a/src/main/java/com/hbm/render/tileentity/RenderLandmine.java b/src/main/java/com/hbm/render/tileentity/RenderLandmine.java index 33314bb68..1ff79867b 100644 --- a/src/main/java/com/hbm/render/tileentity/RenderLandmine.java +++ b/src/main/java/com/hbm/render/tileentity/RenderLandmine.java @@ -1,6 +1,7 @@ package com.hbm.render.tileentity; import org.lwjgl.opengl.GL11; +import org.lwjgl.opengl.GL12; import com.hbm.blocks.ModBlocks; import com.hbm.main.ResourceManager; @@ -8,6 +9,7 @@ import com.hbm.main.ResourceManager; import net.minecraft.block.Block; import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; import net.minecraft.tileentity.TileEntity; +import net.minecraft.world.biome.BiomeGenBase; public class RenderLandmine extends TileEntitySpecialRenderer { @@ -23,9 +25,14 @@ public class RenderLandmine extends TileEntitySpecialRenderer { Block block = tileEntity.getWorldObj().getBlock(tileEntity.xCoord, tileEntity.yCoord, tileEntity.zCoord); if(block == ModBlocks.mine_ap) { - GL11.glTranslated(0, -0.075, 0); - GL11.glScaled(1.5D, 1.5D, 1.5D); - bindTexture(ResourceManager.mine_ap_tex); + GL11.glEnable(GL12.GL_RESCALE_NORMAL); + GL11.glScaled(0.375D, 0.375D, 0.375D); + GL11.glTranslated(0, -0.0625 * 3.5, 0); + BiomeGenBase biome = tileEntity.getWorldObj().getBiomeGenForCoords(tileEntity.xCoord, tileEntity.zCoord); + if(tileEntity.getWorldObj().getHeightValue(tileEntity.xCoord, tileEntity.zCoord) > tileEntity.yCoord + 2) bindTexture(ResourceManager.mine_ap_stone_tex); + else if(biome.getEnableSnow()) bindTexture(ResourceManager.mine_ap_snow_tex); + else if(biome.temperature >= 1.5F && biome.rainfall <= 0.1F) bindTexture(ResourceManager.mine_ap_desert_tex); + else bindTexture(ResourceManager.mine_ap_grass_tex); ResourceManager.mine_ap.renderAll(); } if(block == ModBlocks.mine_he) { diff --git a/src/main/java/com/hbm/world/dungeon/Radio01.java b/src/main/java/com/hbm/world/dungeon/Radio01.java index 57111ce3c..36aa3d7c9 100644 --- a/src/main/java/com/hbm/world/dungeon/Radio01.java +++ b/src/main/java/com/hbm/world/dungeon/Radio01.java @@ -652,7 +652,7 @@ public class Radio01 extends WorldGenerator world.setBlock(x + 6, y + 0, z + 24, ModBlocks.deco_steel, 0, 3); world.setBlock(x + 7, y + 0, z + 24, Blocks.chest, 2, 3); world.setBlockMetadataWithNotify(x + 7, y + 0, z + 24, 5, 3); - WeightedRandomChestContent.generateChestContents(rand, ItemPool.getPool(ItemPoolsLegacy.POOL_ANTENNA), (TileEntityChest)world.getTileEntity(x + 7, y + 0, z + 24), 8); + if(world.getTileEntity(x + 7, y + 0, z + 24) instanceof TileEntityChest) WeightedRandomChestContent.generateChestContents(rand, ItemPool.getPool(ItemPoolsLegacy.POOL_ANTENNA), (TileEntityChest) world.getTileEntity(x + 7, y + 0, z + 24), 8); world.setBlock(x + 8, y + 0, z + 24, ModBlocks.deco_steel, 0, 3); world.setBlock(x + 9, y + 0, z + 24, ModBlocks.deco_steel, 0, 3); world.setBlock(x + 10, y + 0, z + 24, Library.getRandomConcrete(), 0, 3); diff --git a/src/main/resources/assets/hbm/models/bombs/ap_mine.obj b/src/main/resources/assets/hbm/models/bombs/ap_mine.obj new file mode 100644 index 000000000..b9762718c --- /dev/null +++ b/src/main/resources/assets/hbm/models/bombs/ap_mine.obj @@ -0,0 +1,749 @@ +# Blender v2.79 (sub 0) OBJ File: 'ap_mine.blend' +# www.blender.org +o Circle +v 0.000000 0.000000 -0.500000 +v -0.250000 0.000000 -0.433013 +v -0.433013 0.000000 -0.250000 +v -0.500000 0.000000 0.000000 +v -0.433013 0.000000 0.250000 +v -0.250000 0.000000 0.433013 +v -0.000000 0.000000 0.500000 +v 0.250000 0.000000 0.433013 +v 0.433013 0.000000 0.250000 +v 0.500000 0.000000 0.000000 +v 0.433013 0.000000 -0.250000 +v 0.250000 0.000000 -0.433013 +v -0.250000 0.250000 -0.433013 +v 0.000000 0.250000 -0.500000 +v -0.433013 0.250000 -0.250000 +v -0.500000 0.250000 0.000000 +v -0.433013 0.250000 0.250000 +v -0.250000 0.250000 0.433013 +v -0.000000 0.250000 0.500000 +v 0.250000 0.250000 0.433013 +v 0.433013 0.250000 0.250000 +v 0.500000 0.250000 0.000000 +v 0.433013 0.250000 -0.250000 +v 0.250000 0.250000 -0.433013 +v 0.000000 0.250000 -0.312500 +v -0.156250 0.250000 -0.270633 +v -0.270633 0.250000 -0.156250 +v -0.312500 0.250000 0.000000 +v -0.270633 0.250000 0.156250 +v -0.156250 0.250000 0.270633 +v -0.000000 0.250000 0.312500 +v 0.156250 0.250000 0.270633 +v 0.270633 0.250000 0.156250 +v 0.312500 0.250000 0.000000 +v 0.270633 0.250000 -0.156250 +v 0.156250 0.250000 -0.270633 +v 0.000000 0.375000 -0.250000 +v -0.125000 0.375000 -0.216506 +v -0.216506 0.375000 -0.125000 +v -0.250000 0.375000 0.000000 +v -0.216506 0.375000 0.125000 +v -0.125000 0.375000 0.216506 +v -0.000000 0.375000 0.250000 +v 0.125000 0.375000 0.216506 +v 0.216506 0.375000 0.125000 +v 0.250000 0.375000 0.000000 +v 0.216506 0.375000 -0.125000 +v 0.125000 0.375000 -0.216506 +v 0.031250 -0.062500 -0.250000 +v 0.031250 -0.062500 -0.562500 +v -0.031250 -0.062500 -0.250000 +v -0.031250 -0.062500 -0.562500 +v 0.031250 0.312500 -0.250000 +v 0.031250 0.312500 -0.562500 +v -0.031250 0.312500 -0.250000 +v -0.031250 0.312500 -0.562500 +v 0.250000 -0.062500 0.031250 +v 0.562500 -0.062500 0.031250 +v 0.250000 -0.062500 -0.031250 +v 0.562500 -0.062500 -0.031250 +v 0.250000 0.312500 0.031250 +v 0.562500 0.312500 0.031250 +v 0.250000 0.312500 -0.031250 +v 0.562500 0.312500 -0.031250 +v -0.562500 0.312500 0.031250 +v -0.250000 0.312500 0.031250 +v -0.562500 0.312500 -0.031250 +v -0.250000 0.312500 -0.031250 +v -0.562500 -0.062500 0.031250 +v -0.250000 -0.062500 0.031250 +v -0.562500 -0.062500 -0.031250 +v -0.250000 -0.062500 -0.031250 +v 0.031250 0.312500 0.562500 +v 0.031250 0.312500 0.250000 +v -0.031250 0.312500 0.562500 +v -0.031250 0.312500 0.250000 +v 0.031250 -0.062500 0.562500 +v 0.031250 -0.062500 0.250000 +v -0.031250 -0.062500 0.562500 +v -0.031250 -0.062500 0.250000 +v 0.187500 0.000000 -0.324759 +v 0.324760 0.000000 -0.187500 +v 0.375000 0.000000 0.000000 +v 0.324759 0.000000 0.187500 +v 0.187500 0.000000 0.324760 +v -0.000000 0.000000 0.375000 +v -0.187500 0.000000 0.324760 +v -0.324760 0.000000 0.187500 +v -0.375000 0.000000 0.000000 +v -0.324760 0.000000 -0.187500 +v -0.187500 0.000000 -0.324759 +v 0.000000 0.000000 -0.375000 +v 0.187500 -0.125000 -0.324759 +v 0.324760 -0.125000 -0.187500 +v 0.375000 -0.125000 0.000000 +v 0.324759 -0.125000 0.187500 +v 0.187500 -0.125000 0.324760 +v -0.000000 -0.125000 0.375000 +v -0.187500 -0.125000 0.324760 +v -0.324760 -0.125000 0.187500 +v -0.375000 -0.125000 0.000000 +v -0.324760 -0.125000 -0.187500 +v -0.187500 -0.125000 -0.324759 +v 0.000000 -0.125000 -0.375000 +v -0.097937 -0.062500 -0.232131 +v -0.254187 -0.062500 -0.502764 +v -0.152063 -0.062500 -0.200881 +v -0.308313 -0.062500 -0.471514 +v -0.097937 0.312500 -0.232131 +v -0.254187 0.312500 -0.502764 +v -0.152063 0.312500 -0.200881 +v -0.308313 0.312500 -0.471514 +v 0.232131 -0.062500 -0.097937 +v 0.502764 -0.062500 -0.254187 +v 0.200881 -0.062500 -0.152063 +v 0.471514 -0.062500 -0.308313 +v 0.232131 0.312500 -0.097937 +v 0.502764 0.312500 -0.254187 +v 0.200881 0.312500 -0.152063 +v 0.471514 0.312500 -0.308313 +v -0.471514 0.312500 0.308313 +v -0.200881 0.312500 0.152063 +v -0.502764 0.312500 0.254187 +v -0.232131 0.312500 0.097937 +v -0.471514 -0.062500 0.308313 +v -0.200881 -0.062500 0.152063 +v -0.502764 -0.062500 0.254187 +v -0.232131 -0.062500 0.097937 +v 0.308313 0.312500 0.471514 +v 0.152063 0.312500 0.200881 +v 0.254187 0.312500 0.502764 +v 0.097937 0.312500 0.232131 +v 0.308313 -0.062500 0.471514 +v 0.152063 -0.062500 0.200881 +v 0.254187 -0.062500 0.502764 +v 0.097937 -0.062500 0.232131 +v -0.200881 -0.062500 -0.152063 +v -0.471514 -0.062500 -0.308313 +v -0.232131 -0.062500 -0.097937 +v -0.502764 -0.062500 -0.254187 +v -0.200881 0.312500 -0.152063 +v -0.471514 0.312500 -0.308313 +v -0.232131 0.312500 -0.097937 +v -0.502764 0.312500 -0.254187 +v 0.152063 -0.062500 -0.200881 +v 0.308313 -0.062500 -0.471514 +v 0.097937 -0.062500 -0.232131 +v 0.254187 -0.062500 -0.502764 +v 0.152063 0.312500 -0.200881 +v 0.308313 0.312500 -0.471514 +v 0.097937 0.312500 -0.232131 +v 0.254187 0.312500 -0.502764 +v -0.254187 0.312500 0.502764 +v -0.097937 0.312500 0.232131 +v -0.308313 0.312500 0.471514 +v -0.152063 0.312500 0.200881 +v -0.254187 -0.062500 0.502764 +v -0.097937 -0.062500 0.232131 +v -0.308313 -0.062500 0.471514 +v -0.152063 -0.062500 0.200881 +v 0.502764 0.312500 0.254187 +v 0.232131 0.312500 0.097937 +v 0.471514 0.312500 0.308313 +v 0.200881 0.312500 0.152063 +v 0.502764 -0.062500 0.254187 +v 0.232131 -0.062500 0.097937 +v 0.471514 -0.062500 0.308313 +v 0.200881 -0.062500 0.152063 +vt 0.166667 0.080000 +vt 0.250000 0.160000 +vt 0.166667 0.160000 +vt 0.291806 0.541901 +vt 0.374860 0.541901 +vt 0.416387 0.680000 +vt 0.500000 0.320000 +vt 0.562500 0.440000 +vt 0.520833 0.440000 +vt 0.583333 0.320000 +vt 0.645833 0.440000 +vt 0.604167 0.440000 +vt 0.750000 0.320000 +vt 0.687500 0.440000 +vt 0.666667 0.320000 +vt 0.812500 0.440000 +vt 0.770833 0.440000 +vt 0.916667 0.320000 +vt 0.854167 0.440000 +vt 0.833333 0.320000 +vt 1.000000 0.320000 +vt 0.937500 0.440000 +vt 0.083333 0.320000 +vt 0.020833 0.440000 +vt -0.000000 0.320000 +vt 0.166667 0.320000 +vt 0.104167 0.440000 +vt 0.250000 0.320000 +vt 0.187500 0.440000 +vt 0.333333 0.320000 +vt 0.270833 0.440000 +vt 0.395833 0.440000 +vt 0.354167 0.440000 +vt 0.416667 0.320000 +vt 0.479167 0.440000 +vt 0.437500 0.440000 +vt 0.416667 0.520000 +vt 0.520833 0.560000 +vt 0.416667 0.560000 +vt 0.520833 0.800000 +vt 0.416667 0.840000 +vt 0.416667 0.800000 +vt 0.541667 0.560000 +vt 0.645833 0.560000 +vt 0.541667 0.800000 +vt 0.645833 0.560000 +vt 0.541667 0.800000 +vt 0.541667 0.560000 +vt 0.520833 0.560000 +vt 0.416667 0.800000 +vt 0.416667 0.560000 +vt 0.520833 0.800000 +vt 0.416667 0.520000 +vt 0.416667 0.840000 +vt 0.520833 0.560000 +vt 0.416667 0.800000 +vt 0.416667 0.560000 +vt 0.520833 0.520000 +vt 0.541667 0.560000 +vt 0.520833 0.800000 +vt 0.520833 0.560000 +vt 0.416667 0.800000 +vt 0.416667 0.560000 +vt 0.416667 0.840000 +vt 0.645833 0.560000 +vt 0.541667 0.800000 +vt 0.520833 0.520000 +vt 0.541667 0.560000 +vt 0.520833 0.800000 +vt 0.416667 0.840000 +vt 0.645833 0.560000 +vt 0.541667 0.800000 +vt 0.000000 0.080000 +vt 0.083333 0.160000 +vt -0.000000 0.160000 +vt 0.083333 0.080000 +vt 0.916667 0.080000 +vt 1.000000 0.160000 +vt 0.916667 0.160000 +vt 0.833333 0.080000 +vt 0.833333 0.160000 +vt 0.750000 0.160000 +vt 0.812500 0.080000 +vt 0.666667 0.080000 +vt 0.666667 0.160000 +vt 0.583333 0.160000 +vt 0.645833 0.080000 +vt 0.500000 0.160000 +vt 0.562500 0.080000 +vt 0.416667 0.160000 +vt 0.479167 0.080000 +vt 0.333333 0.160000 +vt 0.395833 0.080000 +vt 0.250000 0.080000 +vt 0.187513 0.552110 +vt 0.187513 0.967890 +vt -0.000027 0.760000 +vt 0.416667 0.560000 +vt 0.520833 0.520000 +vt 0.520833 0.560000 +vt 0.416667 0.800000 +vt 0.520833 0.840000 +vt 0.416667 0.840000 +vt 0.541667 0.560000 +vt 0.520833 0.800000 +vt 0.645833 0.560000 +vt 0.541667 0.800000 +vt 0.645833 0.560000 +vt 0.541667 0.800000 +vt 0.541667 0.560000 +vt 0.520833 0.560000 +vt 0.416667 0.800000 +vt 0.416667 0.560000 +vt 0.520833 0.800000 +vt 0.416667 0.520000 +vt 0.416667 0.840000 +vt 0.520833 0.560000 +vt 0.416667 0.800000 +vt 0.416667 0.560000 +vt 0.520833 0.520000 +vt 0.541667 0.560000 +vt 0.520833 0.800000 +vt 0.520833 0.560000 +vt 0.416667 0.800000 +vt 0.416667 0.560000 +vt 0.520833 0.840000 +vt 0.416667 0.840000 +vt 0.645833 0.560000 +vt 0.541667 0.800000 +vt 0.416667 0.520000 +vt 0.541667 0.560000 +vt 0.520833 0.800000 +vt 0.416667 0.840000 +vt 0.645833 0.560000 +vt 0.541667 0.800000 +vt 0.416667 0.560000 +vt 0.520833 0.520000 +vt 0.520833 0.560000 +vt 0.416667 0.800000 +vt 0.520833 0.840000 +vt 0.416667 0.840000 +vt 0.541667 0.560000 +vt 0.520833 0.800000 +vt 0.645833 0.560000 +vt 0.541667 0.800000 +vt 0.645833 0.560000 +vt 0.541667 0.800000 +vt 0.541667 0.560000 +vt 0.520833 0.560000 +vt 0.416667 0.800000 +vt 0.416667 0.560000 +vt 0.520833 0.800000 +vt 0.416667 0.520000 +vt 0.416667 0.840000 +vt 0.520833 0.560000 +vt 0.416667 0.800000 +vt 0.416667 0.560000 +vt 0.520833 0.520000 +vt 0.541667 0.560000 +vt 0.520833 0.800000 +vt 0.520833 0.560000 +vt 0.416667 0.800000 +vt 0.416667 0.560000 +vt 0.520833 0.840000 +vt 0.416667 0.840000 +vt 0.645833 0.560000 +vt 0.541667 0.800000 +vt 0.520833 0.520000 +vt 0.541667 0.560000 +vt 0.520833 0.800000 +vt 0.416667 0.840000 +vt 0.645833 0.560000 +vt 0.541667 0.800000 +vt 0.229167 0.080000 +vt 0.405260 0.759732 +vt 0.374860 0.818099 +vt 0.333333 0.839464 +vt 0.291806 0.818099 +vt 0.261407 0.759732 +vt 0.250279 0.680000 +vt 0.261407 0.600268 +vt 0.333333 0.520537 +vt 0.405260 0.600268 +vt 0.729167 0.440000 +vt 0.895833 0.440000 +vt 0.979167 0.440000 +vt 0.062500 0.440000 +vt 0.145833 0.440000 +vt 0.229167 0.440000 +vt 0.312500 0.440000 +vt 0.520833 0.520000 +vt 0.520833 0.840000 +vt 0.645833 0.800000 +vt 0.645833 0.800000 +vt 0.520833 0.520000 +vt 0.520833 0.840000 +vt 0.416667 0.520000 +vt 0.520833 0.840000 +vt 0.645833 0.800000 +vt 0.416667 0.520000 +vt 0.520833 0.840000 +vt 0.645833 0.800000 +vt 0.062500 0.080000 +vt 0.145833 0.080000 +vt 0.979167 0.080000 +vt 0.895833 0.080000 +vt 0.750000 0.080000 +vt 0.729167 0.080000 +vt 0.583333 0.080000 +vt 0.500000 0.080000 +vt 0.416667 0.080000 +vt 0.333333 0.080000 +vt 0.312500 0.080000 +vt 0.016724 0.639974 +vt 0.062487 0.552109 +vt 0.125000 0.519949 +vt 0.233276 0.639974 +vt 0.250027 0.760000 +vt 0.233276 0.880025 +vt 0.125000 1.000051 +vt 0.062487 0.967890 +vt 0.016724 0.880025 +vt 0.416667 0.520000 +vt 0.645833 0.800000 +vt 0.645833 0.800000 +vt 0.520833 0.520000 +vt 0.520833 0.840000 +vt 0.416667 0.520000 +vt 0.645833 0.800000 +vt 0.520833 0.520000 +vt 0.520833 0.840000 +vt 0.645833 0.800000 +vt 0.416667 0.520000 +vt 0.645833 0.800000 +vt 0.645833 0.800000 +vt 0.520833 0.520000 +vt 0.520833 0.840000 +vt 0.416667 0.520000 +vt 0.645833 0.800000 +vt 0.416667 0.520000 +vt 0.520833 0.840000 +vt 0.645833 0.800000 +vt 0.479167 0.520000 +vt 0.437500 0.520000 +vt 0.520833 0.520000 +vt 0.604167 0.520000 +vt 0.687500 0.520000 +vt 0.770833 0.520000 +vt 0.854167 0.520000 +vt 0.937500 0.520000 +vt 0.020833 0.520000 +vt 0.104167 0.520000 +vt 0.187500 0.520000 +vt 0.270833 0.520000 +vt 0.354167 0.520000 +vt 0.062500 -0.000000 +vt 0.645833 -0.000000 +vt 0.895833 -0.000000 +vt 0.562500 -0.000000 +vt 0.979167 -0.000000 +vt 0.479167 -0.000000 +vt 0.395833 -0.000000 +vt 0.312500 -0.000000 +vt 0.229167 -0.000000 +vt 0.812500 -0.000000 +vt 0.729167 -0.000000 +vt 0.145833 -0.000000 +vt 0.562500 0.520000 +vt 0.645833 0.520000 +vt 0.729167 0.520000 +vt 0.812500 0.520000 +vt 0.895833 0.520000 +vt 0.979167 0.520000 +vt 0.062500 0.520000 +vt 0.145833 0.520000 +vt 0.229167 0.520000 +vt 0.312500 0.520000 +vt 0.395833 0.520000 +vt 0.000000 -0.000000 +vt 0.583333 -0.000000 +vt 0.833333 -0.000000 +vt 0.500000 -0.000000 +vt 0.916667 -0.000000 +vt 0.416667 -0.000000 +vt 0.333333 -0.000000 +vt 0.250000 -0.000000 +vt 0.166667 -0.000000 +vt 0.750000 -0.000000 +vt 0.666667 -0.000000 +vt 0.083333 -0.000000 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 1.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +vn -1.0000 0.0000 0.0000 +vn 1.0000 0.0000 -0.0000 +vn 0.0000 0.0000 1.0000 +vn -0.5000 0.0000 -0.8660 +vn -0.8660 0.0000 0.5000 +vn 0.8660 0.0000 -0.5000 +vn 0.5000 0.0000 0.8660 +vn -0.8660 0.0000 -0.5000 +vn -0.5000 0.0000 0.8660 +vn 0.5000 0.0000 -0.8660 +vn 0.8660 0.0000 0.5000 +vn 0.7746 0.4472 0.4472 +vn 0.8944 0.4472 0.0000 +vn 0.7746 0.4472 -0.4472 +vn 0.4472 0.4472 -0.7746 +vn 0.0000 0.4472 -0.8944 +vn -0.4472 0.4472 -0.7746 +vn -0.7746 0.4472 -0.4472 +vn -0.8944 0.4472 0.0000 +vn -0.7746 0.4472 0.4472 +vn -0.4472 0.4472 0.7746 +vn -0.0000 0.4472 0.8944 +vn 0.4472 0.4472 0.7746 +s off +f 87/1/1 7/2/1 6/3/1 +f 45/4/2 47/5/2 37/6/2 +f 22/7/2 35/8/2 34/9/2 +f 23/10/2 36/11/2 35/12/2 +f 14/13/2 36/14/2 24/15/2 +f 14/13/2 26/16/2 25/17/2 +f 15/18/2 26/19/2 13/20/2 +f 16/21/2 27/22/2 15/18/2 +f 17/23/2 28/24/2 16/25/2 +f 18/26/2 29/27/2 17/23/2 +f 19/28/2 30/29/2 18/26/2 +f 20/30/2 31/31/2 19/28/2 +f 20/30/2 33/32/2 32/33/2 +f 21/34/2 34/35/2 33/36/2 +f 51/37/1 50/38/1 49/39/1 +f 54/40/2 55/41/2 53/42/2 +f 52/43/3 54/40/3 50/38/3 +f 51/44/4 56/45/4 52/43/4 +f 50/38/5 53/42/5 49/39/5 +f 59/46/3 64/47/3 60/48/3 +f 58/49/6 61/50/6 57/51/6 +f 60/48/5 62/52/5 58/49/5 +f 59/53/1 58/49/1 57/51/1 +f 62/52/2 63/54/2 61/50/2 +f 71/55/3 68/56/3 72/57/3 +f 72/57/1 69/58/1 71/55/1 +f 69/59/4 67/60/4 71/55/4 +f 79/61/4 76/62/4 80/63/4 +f 67/60/2 66/64/2 68/56/2 +f 70/65/6 65/66/6 69/59/6 +f 80/63/1 77/67/1 79/61/1 +f 77/68/6 75/69/6 79/61/6 +f 75/69/2 74/70/2 76/62/2 +f 78/71/5 73/72/5 77/68/5 +f 89/73/1 5/74/1 4/75/1 +f 88/76/1 6/3/1 5/74/1 +f 90/77/1 4/78/1 3/79/1 +f 91/80/1 3/79/1 2/81/1 +f 1/82/1 91/83/1 2/81/1 +f 81/84/1 1/82/1 12/85/1 +f 11/86/1 81/87/1 12/85/1 +f 10/88/1 82/89/1 11/86/1 +f 9/90/1 83/91/1 10/88/1 +f 8/92/1 84/93/1 9/90/1 +f 86/94/1 8/92/1 7/2/1 +f 96/95/1 100/96/1 104/97/1 +f 105/98/1 108/99/1 106/100/1 +f 109/101/2 112/102/2 111/103/2 +f 108/104/7 110/105/7 106/100/7 +f 107/106/8 112/107/8 108/104/8 +f 106/100/9 109/101/9 105/98/9 +f 115/108/7 120/109/7 116/110/7 +f 114/111/10 117/112/10 113/113/10 +f 116/110/9 118/114/9 114/111/9 +f 115/115/1 114/111/1 113/113/1 +f 118/114/2 119/116/2 117/112/2 +f 127/117/7 124/118/7 128/119/7 +f 128/119/1 125/120/1 127/117/1 +f 125/121/8 123/122/8 127/117/8 +f 135/123/8 132/124/8 136/125/8 +f 124/118/2 121/126/2 122/127/2 +f 126/128/10 121/129/10 125/121/10 +f 134/130/1 135/123/1 136/125/1 +f 133/131/10 131/132/10 135/123/10 +f 131/132/2 130/133/2 132/124/2 +f 134/134/9 129/135/9 133/131/9 +f 137/136/1 140/137/1 138/138/1 +f 141/139/2 144/140/2 143/141/2 +f 140/142/11 142/143/11 138/138/11 +f 139/144/12 144/145/12 140/142/12 +f 138/138/13 141/139/13 137/136/13 +f 147/146/11 152/147/11 148/148/11 +f 146/149/14 149/150/14 145/151/14 +f 148/148/13 150/152/13 146/149/13 +f 147/153/1 146/149/1 145/151/1 +f 150/152/2 151/154/2 149/150/2 +f 159/155/11 156/156/11 160/157/11 +f 160/157/1 157/158/1 159/155/1 +f 157/159/12 155/160/12 159/155/12 +f 167/161/12 164/162/12 168/163/12 +f 156/156/2 153/164/2 154/165/2 +f 158/166/14 153/167/14 157/159/14 +f 168/163/1 165/168/1 167/161/1 +f 165/169/14 163/170/14 167/161/14 +f 163/170/2 162/171/2 164/162/2 +f 166/172/13 161/173/13 165/169/13 +f 87/1/1 86/174/1 7/2/1 +f 37/6/2 38/175/2 39/176/2 +f 39/176/2 40/177/2 41/178/2 +f 41/178/2 42/179/2 43/180/2 +f 43/180/2 44/181/2 45/4/2 +f 45/4/2 46/182/2 47/5/2 +f 47/5/2 48/183/2 37/6/2 +f 37/6/2 39/176/2 41/178/2 +f 41/178/2 43/180/2 37/6/2 +f 43/180/2 45/4/2 37/6/2 +f 22/7/2 23/10/2 35/8/2 +f 23/10/2 24/15/2 36/11/2 +f 14/13/2 25/184/2 36/14/2 +f 14/13/2 13/20/2 26/16/2 +f 15/18/2 27/185/2 26/19/2 +f 16/21/2 28/186/2 27/22/2 +f 17/23/2 29/187/2 28/24/2 +f 18/26/2 30/188/2 29/27/2 +f 19/28/2 31/189/2 30/29/2 +f 20/30/2 32/190/2 31/31/2 +f 20/30/2 21/34/2 33/32/2 +f 21/34/2 22/7/2 34/35/2 +f 51/37/1 52/191/1 50/38/1 +f 54/40/2 56/192/2 55/41/2 +f 52/43/3 56/45/3 54/40/3 +f 51/44/4 55/193/4 56/45/4 +f 50/38/5 54/40/5 53/42/5 +f 59/46/3 63/194/3 64/47/3 +f 58/49/6 62/52/6 61/50/6 +f 60/48/5 64/47/5 62/52/5 +f 59/53/1 60/195/1 58/49/1 +f 62/52/2 64/196/2 63/54/2 +f 71/55/3 67/60/3 68/56/3 +f 72/57/1 70/197/1 69/58/1 +f 69/59/4 65/66/4 67/60/4 +f 79/61/4 75/69/4 76/62/4 +f 67/60/2 65/198/2 66/64/2 +f 70/65/6 66/199/6 65/66/6 +f 80/63/1 78/200/1 77/67/1 +f 77/68/6 73/72/6 75/69/6 +f 75/69/2 73/201/2 74/70/2 +f 78/71/5 74/202/5 73/72/5 +f 89/73/1 88/203/1 5/74/1 +f 88/76/1 87/204/1 6/3/1 +f 90/77/1 89/205/1 4/78/1 +f 91/80/1 90/206/1 3/79/1 +f 1/82/1 92/207/1 91/83/1 +f 81/84/1 92/208/1 1/82/1 +f 11/86/1 82/209/1 81/87/1 +f 10/88/1 83/210/1 82/89/1 +f 9/90/1 84/211/1 83/91/1 +f 8/92/1 85/212/1 84/93/1 +f 86/94/1 85/213/1 8/92/1 +f 104/97/1 93/214/1 94/215/1 +f 94/215/1 95/216/1 96/95/1 +f 96/95/1 97/217/1 100/96/1 +f 97/217/1 98/218/1 100/96/1 +f 98/218/1 99/219/1 100/96/1 +f 100/96/1 101/220/1 102/221/1 +f 102/221/1 103/222/1 104/97/1 +f 104/97/1 94/215/1 96/95/1 +f 100/96/1 102/221/1 104/97/1 +f 105/98/1 107/223/1 108/99/1 +f 109/101/2 110/105/2 112/102/2 +f 108/104/7 112/107/7 110/105/7 +f 107/106/8 111/224/8 112/107/8 +f 106/100/9 110/105/9 109/101/9 +f 115/108/7 119/225/7 120/109/7 +f 114/111/10 118/114/10 117/112/10 +f 116/110/9 120/109/9 118/114/9 +f 115/115/1 116/226/1 114/111/1 +f 118/114/2 120/227/2 119/116/2 +f 127/117/7 123/122/7 124/118/7 +f 128/119/1 126/228/1 125/120/1 +f 125/121/8 121/129/8 123/122/8 +f 135/123/8 131/132/8 132/124/8 +f 124/118/2 123/122/2 121/126/2 +f 126/128/10 122/229/10 121/129/10 +f 134/130/1 133/230/1 135/123/1 +f 133/131/10 129/135/10 131/132/10 +f 131/132/2 129/231/2 130/133/2 +f 134/134/9 130/232/9 129/135/9 +f 137/136/1 139/233/1 140/137/1 +f 141/139/2 142/143/2 144/140/2 +f 140/142/11 144/145/11 142/143/11 +f 139/144/12 143/234/12 144/145/12 +f 138/138/13 142/143/13 141/139/13 +f 147/146/11 151/235/11 152/147/11 +f 146/149/14 150/152/14 149/150/14 +f 148/148/13 152/147/13 150/152/13 +f 147/153/1 148/236/1 146/149/1 +f 150/152/2 152/237/2 151/154/2 +f 159/155/11 155/160/11 156/156/11 +f 160/157/1 158/238/1 157/158/1 +f 157/159/12 153/167/12 155/160/12 +f 167/161/12 163/170/12 164/162/12 +f 156/156/2 155/160/2 153/164/2 +f 158/166/14 154/239/14 153/167/14 +f 168/163/1 166/240/1 165/168/1 +f 165/169/14 161/173/14 163/170/14 +f 163/170/2 161/241/2 162/171/2 +f 166/172/13 162/242/13 161/173/13 +s 1 +f 9/90/14 20/30/10 8/92/10 +f 6/3/12 17/23/8 5/74/8 +f 1/82/3 24/15/13 12/85/13 +f 3/79/11 13/20/7 2/81/7 +f 10/88/5 21/34/14 9/90/14 +f 7/2/6 18/26/12 6/3/12 +f 4/78/4 15/18/11 3/79/11 +f 11/86/9 22/7/5 10/88/5 +f 8/92/10 19/28/6 7/2/6 +f 5/74/8 16/25/4 4/75/4 +f 12/85/13 23/10/9 11/86/9 +f 2/81/7 14/13/3 1/82/3 +f 33/36/15 46/243/16 45/244/15 +f 35/8/17 46/245/16 34/9/16 +f 36/11/18 47/246/17 35/12/17 +f 25/184/19 48/247/18 36/14/18 +f 26/16/20 37/248/19 25/17/19 +f 27/185/21 38/249/20 26/19/20 +f 28/186/22 39/250/21 27/22/21 +f 29/187/23 40/251/22 28/24/22 +f 30/188/24 41/252/23 29/27/23 +f 31/189/25 42/253/24 30/29/24 +f 32/190/26 43/254/25 31/31/25 +f 33/32/15 44/255/26 32/33/26 +f 89/73/4 100/256/8 88/203/8 +f 82/209/9 93/257/13 81/87/13 +f 91/80/7 102/258/11 90/206/11 +f 83/210/5 94/259/9 82/89/9 +f 90/77/11 101/260/4 89/205/4 +f 84/211/14 95/261/5 83/91/5 +f 85/212/10 96/262/14 84/93/14 +f 86/94/6 97/263/10 85/213/10 +f 87/1/12 98/264/6 86/174/6 +f 92/207/3 103/265/7 91/83/7 +f 81/84/13 104/266/3 92/208/3 +f 88/76/8 99/267/12 87/204/12 +f 9/90/14 21/34/14 20/30/10 +f 6/3/12 18/26/12 17/23/8 +f 1/82/3 14/13/3 24/15/13 +f 3/79/11 15/18/11 13/20/7 +f 10/88/5 22/7/5 21/34/14 +f 7/2/6 19/28/6 18/26/12 +f 4/78/4 16/21/4 15/18/11 +f 11/86/9 23/10/9 22/7/5 +f 8/92/10 20/30/10 19/28/6 +f 5/74/8 17/23/8 16/25/4 +f 12/85/13 24/15/13 23/10/9 +f 2/81/7 13/20/7 14/13/3 +f 33/36/15 34/35/16 46/243/16 +f 35/8/17 47/268/17 46/245/16 +f 36/11/18 48/269/18 47/246/17 +f 25/184/19 37/270/19 48/247/18 +f 26/16/20 38/271/20 37/248/19 +f 27/185/21 39/272/21 38/249/20 +f 28/186/22 40/273/22 39/250/21 +f 29/187/23 41/274/23 40/251/22 +f 30/188/24 42/275/24 41/252/23 +f 31/189/25 43/276/25 42/253/24 +f 32/190/26 44/277/26 43/254/25 +f 33/32/15 45/278/15 44/255/26 +f 89/73/4 101/279/4 100/256/8 +f 82/209/9 94/280/9 93/257/13 +f 91/80/7 103/281/7 102/258/11 +f 83/210/5 95/282/5 94/259/9 +f 90/77/11 102/283/11 101/260/4 +f 84/211/14 96/284/14 95/261/5 +f 85/212/10 97/285/10 96/262/14 +f 86/94/6 98/286/6 97/263/10 +f 87/1/12 99/287/12 98/264/6 +f 92/207/3 104/288/3 103/265/7 +f 81/84/13 93/289/13 104/266/3 +f 88/76/8 100/290/8 99/267/12 diff --git a/src/main/resources/assets/hbm/models/mine_ap.obj b/src/main/resources/assets/hbm/models/mine_ap.obj deleted file mode 100644 index 00709083c..000000000 --- a/src/main/resources/assets/hbm/models/mine_ap.obj +++ /dev/null @@ -1,209 +0,0 @@ -# Blender v2.76 (sub 0) OBJ File: 'mine_ap.blend' -# www.blender.org -o Sphere -v -0.023918 0.081742 0.000000 -v -0.044194 0.068194 0.000000 -v -0.057743 0.047918 0.000000 -v -0.062500 0.024000 0.000000 -v -0.057743 0.000082 0.000000 -v -0.016913 0.081742 -0.016912 -v -0.031250 0.068194 -0.031250 -v -0.040830 0.047918 -0.040830 -v -0.044194 0.024000 -0.044194 -v -0.040830 0.000082 -0.040830 -v -0.000000 0.081742 -0.023918 -v -0.000000 0.068194 -0.044194 -v -0.000000 0.047918 -0.057742 -v -0.000000 0.024000 -0.062500 -v -0.000000 0.000082 -0.057742 -v -0.000000 0.086500 0.000000 -v 0.016912 0.081742 -0.016912 -v 0.031250 0.068194 -0.031250 -v 0.040830 0.047918 -0.040830 -v 0.044194 0.024000 -0.044194 -v 0.040830 0.000082 -0.040830 -v 0.023918 0.081742 0.000000 -v 0.044194 0.068194 0.000000 -v 0.057742 0.047918 0.000000 -v 0.062500 0.024000 0.000000 -v 0.057742 0.000082 0.000000 -v 0.016912 0.081742 0.016912 -v 0.031250 0.068194 0.031250 -v 0.040830 0.047918 0.040830 -v 0.044194 0.024000 0.044194 -v 0.040830 0.000082 0.040830 -v -0.000000 0.081742 0.023918 -v -0.000000 0.068194 0.044194 -v -0.000000 0.047918 0.057742 -v -0.000000 0.024000 0.062500 -v -0.000000 0.000082 0.057742 -v -0.016913 0.081742 0.016912 -v -0.031250 0.068194 0.031250 -v -0.040830 0.047918 0.040830 -v -0.044194 0.024000 0.044194 -v -0.040830 0.000082 0.040830 -v -0.061524 0.148194 -0.061523 -v 0.061523 0.148194 -0.061523 -v 0.061523 0.148194 0.061523 -v -0.061524 0.148194 0.061523 -v -0.005980 0.081742 0.000000 -v -0.000000 0.081742 -0.005979 -v -0.000000 0.111500 0.000000 -v 0.005979 0.081742 0.000000 -v -0.000000 0.081742 0.005979 -v -0.000000 0.086500 0.000000 -vt 0.713388 0.422365 -vt 0.372492 0.422365 -vt 0.358449 0.234785 -vt 0.613541 0.784500 -vt 0.472338 0.784500 -vt 0.412485 0.606170 -vt 0.727431 0.234785 -vt 0.372492 0.047204 -vt 0.673395 0.606170 -vt 0.713387 0.047204 -vt 0.542940 0.958853 -vt 0.074879 0.038923 -vt 0.262088 0.020580 -vt 0.262088 0.720477 -vt 0.839131 0.569078 -vt 0.877120 0.614143 -vt 0.839131 0.803203 -vt 0.837838 0.803203 -vt 0.799848 0.614143 -vt 0.837838 0.569078 -vt 0.878413 0.569078 -vt 0.916403 0.614143 -vt 0.878413 0.803204 -vt 0.917696 0.614143 -vt 0.955685 0.569078 -vt 0.955685 0.803203 -vn -0.908700 0.180700 -0.376400 -vn -0.541400 0.810300 -0.224300 -vn -0.908700 -0.180700 -0.376400 -vn -0.786200 0.525300 -0.325600 -vn -0.376400 0.180700 -0.908700 -vn -0.224300 0.810300 -0.541400 -vn -0.376400 -0.180700 -0.908700 -vn -0.325600 0.525300 -0.786200 -vn 0.376400 -0.180700 -0.908700 -vn 0.325600 0.525300 -0.786200 -vn 0.376400 0.180700 -0.908700 -vn 0.224300 0.810300 -0.541400 -vn 0.786200 0.525300 -0.325600 -vn 0.908700 0.180700 -0.376400 -vn 0.541400 0.810300 -0.224300 -vn 0.908700 -0.180700 -0.376400 -vn 0.908700 0.180700 0.376400 -vn 0.541400 0.810300 0.224300 -vn 0.908700 -0.180700 0.376400 -vn 0.786200 0.525300 0.325600 -vn 0.224300 0.810300 0.541400 -vn 0.376400 -0.180700 0.908700 -vn 0.325600 0.525300 0.786200 -vn 0.376400 0.180700 0.908700 -vn -0.376400 -0.180700 0.908700 -vn -0.325600 0.525300 0.786200 -vn -0.376400 0.180700 0.908700 -vn -0.224300 0.810300 0.541400 -vn -0.194500 0.977600 -0.080500 -vn -0.080500 0.977600 -0.194500 -vn 0.080500 0.977600 -0.194500 -vn 0.194500 0.977600 -0.080500 -vn 0.194500 0.977600 0.080500 -vn 0.080500 0.977600 0.194500 -vn -0.080500 0.977600 0.194500 -vn -0.194500 0.977600 0.080500 -vn -0.908700 0.180700 0.376400 -vn -0.541400 0.810300 0.224300 -vn -0.908700 -0.180700 0.376400 -vn -0.786200 0.525300 0.325600 -vn -0.707100 0.000000 0.707100 -vn 0.707100 0.000000 0.707100 -vn 0.707100 0.000000 -0.707100 -vn -0.707100 0.000000 -0.707100 -vn -1.000000 0.000000 -0.000000 -vn 0.000000 0.000000 1.000000 -vn 1.000000 0.000000 -0.000000 -vn 0.000000 0.000000 -1.000000 -s off -f 3/1/1 8/2/1 9/3/1 -f 1/4/2 6/5/2 7/6/2 -f 4/7/3 9/3/3 10/8/3 -f 2/9/4 7/6/4 8/2/4 -f 8/1/5 13/2/5 14/3/5 -f 6/4/6 11/5/6 12/6/6 -f 9/7/7 14/3/7 15/8/7 -f 7/9/8 12/6/8 13/2/8 -f 14/7/9 20/3/9 21/8/9 -f 12/9/10 18/6/10 19/2/10 -f 13/1/11 19/2/11 20/3/11 -f 11/4/12 17/5/12 18/6/12 -f 18/9/13 23/6/13 24/2/13 -f 19/1/14 24/2/14 25/3/14 -f 17/4/15 22/5/15 23/6/15 -f 20/7/16 25/3/16 26/8/16 -f 25/7/17 24/1/17 29/2/17 -f 23/9/18 22/4/18 27/5/18 -f 25/7/19 30/3/19 31/8/19 -f 23/9/20 28/6/20 29/2/20 -f 28/9/21 27/4/21 32/5/21 -f 31/10/22 30/7/22 35/3/22 -f 29/1/23 28/9/23 33/6/23 -f 29/1/24 34/2/24 35/3/24 -f 35/7/25 40/3/25 41/8/25 -f 33/9/26 38/6/26 39/2/26 -f 35/7/27 34/1/27 39/2/27 -f 32/4/28 37/5/28 38/6/28 -f 1/4/29 16/11/29 6/5/29 -f 6/4/30 16/11/30 11/5/30 -f 11/4/31 16/11/31 17/5/31 -f 17/4/32 16/11/32 22/5/32 -f 22/4/33 16/11/33 27/5/33 -f 27/4/34 16/11/34 32/5/34 -f 32/4/35 16/11/35 37/5/35 -f 37/4/36 16/11/36 1/5/36 -f 39/1/37 3/2/37 4/3/37 -f 37/4/38 1/5/38 2/6/38 -f 40/7/39 4/3/39 5/8/39 -f 39/1/40 38/9/40 2/6/40 -f 27/12/41 28/13/41 44/14/41 -f 17/12/42 18/13/42 43/14/42 -f 6/12/43 7/13/43 42/14/43 -f 37/12/44 38/13/44 45/14/44 -f 47/15/45 51/16/45 48/17/45 -f 48/18/46 51/19/46 49/20/46 -f 50/21/47 51/22/47 48/23/47 -f 51/24/48 46/25/48 48/26/48 -f 4/7/1 3/1/1 9/3/1 -f 2/9/2 1/4/2 7/6/2 -f 5/10/3 4/7/3 10/8/3 -f 3/1/4 2/9/4 8/2/4 -f 9/7/5 8/1/5 14/3/5 -f 7/9/6 6/4/6 12/6/6 -f 10/10/7 9/7/7 15/8/7 -f 8/1/8 7/9/8 13/2/8 -f 15/10/9 14/7/9 21/8/9 -f 13/1/10 12/9/10 19/2/10 -f 14/7/11 13/1/11 20/3/11 -f 12/9/12 11/4/12 18/6/12 -f 19/1/13 18/9/13 24/2/13 -f 20/7/14 19/1/14 25/3/14 -f 18/9/15 17/4/15 23/6/15 -f 21/10/16 20/7/16 26/8/16 -f 30/3/17 25/7/17 29/2/17 -f 28/6/18 23/9/18 27/5/18 -f 26/10/19 25/7/19 31/8/19 -f 24/1/20 23/9/20 29/2/20 -f 33/6/21 28/9/21 32/5/21 -f 36/8/22 31/10/22 35/3/22 -f 34/2/23 29/1/23 33/6/23 -f 30/7/24 29/1/24 35/3/24 -f 36/10/25 35/7/25 41/8/25 -f 34/1/26 33/9/26 39/2/26 -f 40/3/27 35/7/27 39/2/27 -f 33/9/28 32/4/28 38/6/28 -f 40/7/37 39/1/37 4/3/37 -f 38/9/38 37/4/38 2/6/38 -f 41/10/39 40/7/39 5/8/39 -f 3/2/40 39/1/40 2/6/40 diff --git a/src/main/resources/assets/hbm/textures/models/bombs/mine_ap_base.png b/src/main/resources/assets/hbm/textures/models/bombs/mine_ap_base.png new file mode 100644 index 0000000000000000000000000000000000000000..0d406ff1269bd6c7951a26e5353e92fc1848a736 GIT binary patch literal 348 zcmV-i0i*tjP)X1^@s6ccHC$00004b3#c}2nYxW zdBK#~Fb?S;AQF(<1~2hRnkoLXxD zfDpp^KP)X1^@s6ccHC$00004b3#c}2nYxW zdfvx z7F0JVr33&l#u{H-Z4v?`!_3NnQUI@sSM9byrbb(VHo7#kUEgbC&uR@r5kNKjDpE>q z75Y}_6o=ZNZ3Jdqfi66MQL?l2+UT>Pp&|grSYs8c8E(^x=Lf}jmR@S#QvEjgtv33~ zbl2K$drp^il`g+2S`B>CHq|w6;(M2mMBF#fA=@YbfODR6&T|)S3e+>{l1*;sgVAa9 z+n~0)!r0IuI>VUI`u6S?)b`dsHh&FFjr)f==S93fW`!YyAnKLT1)DZqPF%4csvg*i T87Ghm00000NkvXXu0mjfKs}y1 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/models/bombs/mine_ap_grass.png b/src/main/resources/assets/hbm/textures/models/bombs/mine_ap_grass.png new file mode 100644 index 0000000000000000000000000000000000000000..293089481d3003d4101c5d7f00439aee5917a99c GIT binary patch literal 353 zcmV-n0iOPeP)X1^@s6ccHC$00004b3#c}2nYxW zdw^xgCM@`kJ~i1YbQZX({ONrF@^vD*4vts5}>F6HmehInZqZuR3G*QRt>go z3jhFw5bcYHUAm}?3>@edE^Ct`sZnOYgso=g%ll|7WVTSZAUXOnsw}87q;f!q567G{ zV1txH-QM&zAM_3oLbO?sqi?E}qI!)#uH(5xyAOV=jdqc?bsy7ns;GX1^@s6ccHC$00004b3#c}2nYxW zdU8r92~(@bl>zcoX5TK3NENk+|rc> z6;LW@Y5I1sC5**;1BLIN1swK@*pm_#Kk|38kd~!PK!@j_}K_LVH01!fq zFJ3R_!=kP-643wn)V2vZ8f^w_EY-~I{+Nx0%+?@a8hsTZgfX1^@s6ccHC$00004b3#c}2nYxW zdfrF9E;9C2*%ip-nPwYOTp;? zrPP@PGy1+-;hdl2>$+a%((Nhutu}f@I@Eo9&)K4`6SBu*t${mjQ~&2I)H1&yxDNh|sZL(tJ&RC<6u00000NkvXXu0mjf+@6*T literal 0 HcmV?d00001 From c8fe1f342363b16a79f9e4e95a616db534dfa591 Mon Sep 17 00:00:00 2001 From: Bob Date: Thu, 12 Dec 2024 21:44:32 +0100 Subject: [PATCH 24/24] my bals --- src/main/java/com/hbm/blocks/ModBlocks.java | 2 +- .../java/com/hbm/blocks/bomb/Landmine.java | 24 +- .../java/com/hbm/crafting/WeaponRecipes.java | 4 +- .../hbm/inventory/recipes/PressRecipes.java | 26 -- .../inventory/recipes/anvil/AnvilRecipes.java | 8 +- .../weapon/sedna/factory/XFactory9mm.java | 2 +- src/main/java/com/hbm/main/ClientProxy.java | 1 + .../java/com/hbm/main/CraftingManager.java | 10 - .../java/com/hbm/main/ResourceManager.java | 3 +- .../hbm/render/item/ItemRenderLibrary.java | 12 +- .../item/weapon/ItemRenderWeaponAR15.java | 123 ------ .../item/weapon/ItemRenderWeaponFFBolt.java | 146 ------- .../item/weapon/ItemRenderWeaponFFColt.java | 124 ------ .../item/weapon/ItemRenderWeaponFFCursed.java | 114 ------ .../item/weapon/ItemRenderWeaponFFMG42.java | 112 ------ .../weapon/ItemRenderWeaponFFMaresLeg.java | 131 ------ .../weapon/ItemRenderWeaponFFNightmare.java | 97 ----- .../item/weapon/ItemRenderWeaponKS23.java | 149 ------- .../item/weapon/ItemRenderWeaponNovac.java | 130 ------ .../item/weapon/ItemRenderWeaponObj.java | 227 ----------- .../weapon/ItemRenderWeaponRemington.java | 108 ----- .../item/weapon/ItemRenderWeaponSauer.java | 138 ------- .../item/weapon/ItemRenderWeaponShotty.java | 113 ------ .../item/weapon/ItemRenderWeaponThompson.java | 91 ----- .../hbm/render/tileentity/RenderLandmine.java | 9 +- .../resources/assets/hbm/models/mine_he.obj | 376 ------------------ .../textures/models/bombs/mine_ap_base.png | Bin 348 -> 0 bytes .../textures/models/bombs/mine_shrapnel.png | Bin 0 -> 352 bytes .../assets/hbm/textures/models/mine_ap.png | Bin 696 -> 0 bytes .../assets/hbm/textures/models/mine_shrap.png | Bin 842 -> 0 bytes 30 files changed, 32 insertions(+), 2248 deletions(-) delete mode 100644 src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponAR15.java delete mode 100644 src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponFFBolt.java delete mode 100644 src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponFFColt.java delete mode 100644 src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponFFCursed.java delete mode 100644 src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponFFMG42.java delete mode 100644 src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponFFMaresLeg.java delete mode 100644 src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponFFNightmare.java delete mode 100644 src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponKS23.java delete mode 100644 src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponNovac.java delete mode 100644 src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponObj.java delete mode 100644 src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponRemington.java delete mode 100644 src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponSauer.java delete mode 100644 src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponShotty.java delete mode 100644 src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponThompson.java delete mode 100644 src/main/resources/assets/hbm/models/mine_he.obj delete mode 100644 src/main/resources/assets/hbm/textures/models/bombs/mine_ap_base.png create mode 100644 src/main/resources/assets/hbm/textures/models/bombs/mine_shrapnel.png delete mode 100644 src/main/resources/assets/hbm/textures/models/mine_ap.png delete mode 100644 src/main/resources/assets/hbm/textures/models/mine_shrap.png diff --git a/src/main/java/com/hbm/blocks/ModBlocks.java b/src/main/java/com/hbm/blocks/ModBlocks.java index 7c6d4c0d8..485c9a0ae 100644 --- a/src/main/java/com/hbm/blocks/ModBlocks.java +++ b/src/main/java/com/hbm/blocks/ModBlocks.java @@ -2851,8 +2851,8 @@ public class ModBlocks { //Mines GameRegistry.registerBlock(mine_ap, mine_ap.getUnlocalizedName()); - GameRegistry.registerBlock(mine_he, mine_he.getUnlocalizedName()); GameRegistry.registerBlock(mine_shrap, mine_shrap.getUnlocalizedName()); + GameRegistry.registerBlock(mine_he, mine_he.getUnlocalizedName()); GameRegistry.registerBlock(mine_fat, mine_fat.getUnlocalizedName()); //Block Bombs diff --git a/src/main/java/com/hbm/blocks/bomb/Landmine.java b/src/main/java/com/hbm/blocks/bomb/Landmine.java index e9dff492a..03a505e55 100644 --- a/src/main/java/com/hbm/blocks/bomb/Landmine.java +++ b/src/main/java/com/hbm/blocks/bomb/Landmine.java @@ -37,7 +37,6 @@ public class Landmine extends BlockContainer implements IBomb { public Landmine(Material mat, double range, double height) { super(mat); - this.range = range; this.height = height; } @@ -47,20 +46,9 @@ public class Landmine extends BlockContainer implements IBomb { return new TileEntityLandmine(); } - @Override - public int getRenderType() { - return -1; - } - - @Override - public boolean isOpaqueCube() { - return false; - } - - @Override - public boolean renderAsNormalBlock() { - return false; - } + @Override public int getRenderType() { return -1; } + @Override public boolean isOpaqueCube() { return false; } + @Override public boolean renderAsNormalBlock() { return false; } @Override public Item getItemDropped(int i, Random rand, int j) { @@ -72,7 +60,7 @@ public class Landmine extends BlockContainer implements IBomb { float f = 0.0625F; if(this == ModBlocks.mine_ap) this.setBlockBounds(5 * f, 0.0F, 5 * f, 11 * f, 1 * f, 11 * f); if(this == ModBlocks.mine_he) this.setBlockBounds(4 * f, 0.0F, 4 * f, 12 * f, 2 * f, 12 * f); - if(this == ModBlocks.mine_shrap) this.setBlockBounds(4 * f, 0.0F, 4 * f, 12 * f, 2 * f, 12 * f); + if(this == ModBlocks.mine_shrap) this.setBlockBounds(5 * f, 0.0F, 5 * f, 11 * f, 1 * f, 11 * f); if(this == ModBlocks.mine_fat) this.setBlockBounds(5 * f, 0.0F, 4 * f, 11 * f, 6 * f, 12 * f); } @@ -150,7 +138,7 @@ public class Landmine extends BlockContainer implements IBomb { if(this == ModBlocks.mine_ap) { ExplosionVNT vnt = new ExplosionVNT(world, x + 0.5, y + 0.5, z + 0.5, 3F); - vnt.setEntityProcessor(new EntityProcessorCrossSmooth(0.5, 10F)); + vnt.setEntityProcessor(new EntityProcessorCrossSmooth(0.5, 10F).setupPiercing(5F, 0.2F)); vnt.setPlayerProcessor(new PlayerProcessorStandard()); vnt.setSFX(new ExplosionEffectWeapon(5, 1F, 0.5F)); vnt.explode(); @@ -158,7 +146,7 @@ public class Landmine extends BlockContainer implements IBomb { ExplosionVNT vnt = new ExplosionVNT(world, x + 0.5, y + 0.5, z + 0.5, 4F); vnt.setBlockAllocator(new BlockAllocatorStandard()); vnt.setBlockProcessor(new BlockProcessorStandard()); - vnt.setEntityProcessor(new EntityProcessorCrossSmooth(1, 35)); + vnt.setEntityProcessor(new EntityProcessorCrossSmooth(1, 35).setupPiercing(15F, 0.2F)); vnt.setPlayerProcessor(new PlayerProcessorStandard()); vnt.setSFX(new ExplosionEffectWeapon(15, 3.5F, 1.25F)); vnt.explode(); diff --git a/src/main/java/com/hbm/crafting/WeaponRecipes.java b/src/main/java/com/hbm/crafting/WeaponRecipes.java index 25767f63e..5acaa73d4 100644 --- a/src/main/java/com/hbm/crafting/WeaponRecipes.java +++ b/src/main/java/com/hbm/crafting/WeaponRecipes.java @@ -312,9 +312,9 @@ public class WeaponRecipes { CraftingManager.addRecipeAuto(new ItemStack(ModItems.grenade_if_null, 1), new Object[] { "BAB", "AGA", "BAB", 'G', ModItems.grenade_if_generic, 'A', ModItems.undefined, 'B', BIGMT.ingot() }); //Mines - CraftingManager.addRecipeAuto(new ItemStack(ModBlocks.mine_ap, 4), new Object[] { "C", "P", "T", 'C', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.BASIC), 'P', IRON.plate(), 'T', ANY_PLASTICEXPLOSIVE.ingot() }); + CraftingManager.addRecipeAuto(new ItemStack(ModBlocks.mine_ap, 4), new Object[] { "I", "C", "S", 'I', ModItems.plate_polymer, 'C', ANY_SMOKELESS.dust(), 'S', STEEL.ingot() }); + CraftingManager.addRecipeAuto(new ItemStack(ModBlocks.mine_shrap, 1), new Object[] { "L", "M", 'M', ModBlocks.mine_ap, 'L', ModItems.pellet_buckshot }); CraftingManager.addRecipeAuto(new ItemStack(ModBlocks.mine_he, 1), new Object[] { " C ", "PTP", 'C', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.BASIC), 'P', STEEL.plate(), 'T', ANY_HIGHEXPLOSIVE.ingot() }); - CraftingManager.addRecipeAuto(new ItemStack(ModBlocks.mine_shrap, 2), new Object[] { "LLL", " C ", "PTP", 'C', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.BASIC), 'P', STEEL.plate(), 'T', ModBlocks.det_cord, 'L', ModItems.pellet_buckshot }); CraftingManager.addRecipeAuto(new ItemStack(ModBlocks.mine_fat, 1), new Object[] { "CDN", 'C', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.ANALOG), 'D', ModItems.ducttape, 'N', ModItems.ammo_nuke }); //Nuke parts diff --git a/src/main/java/com/hbm/inventory/recipes/PressRecipes.java b/src/main/java/com/hbm/inventory/recipes/PressRecipes.java index d9ccaf232..dcfa350d2 100644 --- a/src/main/java/com/hbm/inventory/recipes/PressRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/PressRecipes.java @@ -20,9 +20,6 @@ import com.hbm.inventory.recipes.loader.SerializableRecipe; import com.hbm.items.ItemEnums.EnumBriquetteType; import com.hbm.items.ItemEnums.EnumCasingType; import com.hbm.items.ItemEnums.EnumPages; -import com.hbm.items.ItemAmmoEnums.Ammo357Magnum; -import com.hbm.items.ItemAmmoEnums.Ammo556mm; -import com.hbm.items.ItemAmmoEnums.AmmoLunaticSniper; import com.hbm.items.ModItems; import com.hbm.items.machine.ItemStamp; import com.hbm.items.machine.ItemCircuit.EnumCircuitType; @@ -102,29 +99,6 @@ public class PressRecipes extends SerializableRecipe { makeRecipe(StampType.CIRCUIT, new OreDictStack(SI.billet()), DictFrame.fromOne(ModItems.circuit, EnumCircuitType.SILICON)); - makeRecipe(StampType.C357, new ComparableStack(ModItems.assembly_iron), ModItems.ammo_357.stackFromEnum(24, Ammo357Magnum.IRON)); - makeRecipe(StampType.C357, new ComparableStack(ModItems.assembly_steel), ModItems.ammo_357.stackFromEnum(24, Ammo357Magnum.LEAD)); - makeRecipe(StampType.C357, new ComparableStack(ModItems.assembly_lead), ModItems.ammo_357.stackFromEnum(24, Ammo357Magnum.NUCLEAR)); - makeRecipe(StampType.C357, new ComparableStack(ModItems.assembly_gold), ModItems.ammo_357.stackFromEnum(24, Ammo357Magnum.GOLD)); - makeRecipe(StampType.C357, new ComparableStack(ModItems.assembly_schrabidium), ModItems.ammo_357.stackFromEnum(6, Ammo357Magnum.SCHRABIDIUM)); - makeRecipe(StampType.C357, new ComparableStack(ModItems.assembly_nightmare), ModItems.ammo_357.stackFromEnum(24, Ammo357Magnum.NIGHTMARE1)); - makeRecipe(StampType.C357, new ComparableStack(ModItems.assembly_desh), ModItems.ammo_357.stackFromEnum(24, Ammo357Magnum.DESH)); - makeRecipe(StampType.C357, new OreDictStack(STEEL.ingot()), ModItems.ammo_357.stackFromEnum(24, Ammo357Magnum.STEEL)); - - makeRecipe(StampType.C44, new ComparableStack(ModItems.assembly_nopip), new ItemStack(ModItems.ammo_44, 24)); - makeRecipe(StampType.C44, new ComparableStack(ModItems.assembly_45), new ItemStack(ModItems.ammo_45, 32)); - - makeRecipe(StampType.C9, new ComparableStack(ModItems.assembly_smg), new ItemStack(ModItems.ammo_9mm, 32)); - makeRecipe(StampType.C9, new ComparableStack(ModItems.assembly_uzi), new ItemStack(ModItems.ammo_22lr, 32)); - makeRecipe(StampType.C9, new OreDictStack(GOLD.ingot()), ModItems.ammo_556.stackFromEnum(32, Ammo556mm.GOLD)); - makeRecipe(StampType.C9, new ComparableStack(ModItems.assembly_lacunae), new ItemStack(ModItems.ammo_5mm, 64)); - makeRecipe(StampType.C9, new ComparableStack(ModItems.assembly_556), new ItemStack(ModItems.ammo_556, 32)); - - makeRecipe(StampType.C50, new ComparableStack(ModItems.assembly_calamity), new ItemStack(ModItems.ammo_50bmg, 12)); - makeRecipe(StampType.C50, new ComparableStack(ModItems.assembly_actionexpress), new ItemStack(ModItems.ammo_50ae, 12)); - makeRecipe(StampType.C50, new ComparableStack(ModItems.assembly_luna), ModItems.ammo_luna_sniper.stackFromEnum(4, AmmoLunaticSniper.SABOT)); - makeRecipe(StampType.C50, new ComparableStack(ModItems.assembly_762), new ItemStack(ModItems.ammo_762, 32)); - makeRecipe(StampType.PRINTING1, new ComparableStack(Items.paper), DictFrame.fromOne(ModItems.page_of_, EnumPages.PAGE1)); makeRecipe(StampType.PRINTING2, new ComparableStack(Items.paper), DictFrame.fromOne(ModItems.page_of_, EnumPages.PAGE2)); makeRecipe(StampType.PRINTING3, new ComparableStack(Items.paper), DictFrame.fromOne(ModItems.page_of_, EnumPages.PAGE3)); diff --git a/src/main/java/com/hbm/inventory/recipes/anvil/AnvilRecipes.java b/src/main/java/com/hbm/inventory/recipes/anvil/AnvilRecipes.java index 3bffaac96..3134e4d8c 100644 --- a/src/main/java/com/hbm/inventory/recipes/anvil/AnvilRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/anvil/AnvilRecipes.java @@ -81,10 +81,11 @@ public class AnvilRecipes { smithingRecipes.add(new AnvilSmithingHotRecipe(3, new ItemStack(ModItems.cobalt_decorated_shovel, 1), new ComparableStack(ModItems.cobalt_shovel), new ComparableStack(ModItems.ingot_meteorite))); smithingRecipes.add(new AnvilSmithingHotRecipe(3, new ItemStack(ModItems.cobalt_decorated_hoe, 1), new ComparableStack(ModItems.cobalt_hoe), new ComparableStack(ModItems.ingot_meteorite))); - smithingRecipes.add(new AnvilSmithingRecipe(1, new ItemStack(ModItems.gun_ar15, 1), new ComparableStack(ModItems.gun_thompson), new ComparableStack(ModItems.pipe_lead))); smithingRecipes.add(new AnvilSmithingRecipe(1916169, new ItemStack(ModItems.wings_murk, 1), new ComparableStack(ModItems.wings_limp), new ComparableStack(ModItems.particle_tachyon))); smithingRecipes.add(new AnvilSmithingRecipe(4, new ItemStack(ModItems.flask_infusion, 1, EnumInfusion.SHIELD.ordinal()), new ComparableStack(ModItems.gem_alexandrite), new ComparableStack(ModItems.bottle_nuka))); + smithingRecipes.add(new AnvilSmithingRecipe(1, new ItemStack(ModItems.ingot_gunmetal, 1), new OreDictStack(CU.ingot()), new OreDictStack(AL.ingot()))); + smithingRecipes.add(new AnvilSmithingMold(0, new OreDictStack(GOLD.nugget()), new OreDictStack("nugget"))); smithingRecipes.add(new AnvilSmithingMold(1, new OreDictStack(U.billet()), new OreDictStack("billet"))); smithingRecipes.add(new AnvilSmithingMold(2, new OreDictStack(IRON.ingot()), new OreDictStack("ingot"))); @@ -572,6 +573,11 @@ public class AnvilRecipes { public static void registerConstructionAmmo() { + constructionRecipes.add(new AnvilConstructionRecipe(new AStack[]{new ComparableStack(ModItems.stamp_iron_flat), new OreDictStack(GUNMETAL.ingot(), 2)}, new AnvilOutput(new ItemStack(ModItems.stamp_9))).setTier(2)); + constructionRecipes.add(new AnvilConstructionRecipe(new AStack[]{new ComparableStack(ModItems.stamp_iron_flat), new OreDictStack(GUNMETAL.ingot(), 2)}, new AnvilOutput(new ItemStack(ModItems.stamp_50))).setTier(2)); + constructionRecipes.add(new AnvilConstructionRecipe(new AStack[]{new ComparableStack(ModItems.stamp_desh_flat), new OreDictStack(WEAPONSTEEL.ingot(), 4)}, new AnvilOutput(new ItemStack(ModItems.stamp_desh_9))).setTier(4)); + constructionRecipes.add(new AnvilConstructionRecipe(new AStack[]{new ComparableStack(ModItems.stamp_desh_flat), new OreDictStack(WEAPONSTEEL.ingot(), 4)}, new AnvilOutput(new ItemStack(ModItems.stamp_desh_50))).setTier(4)); + constructionRecipes.add(new AnvilConstructionRecipe(new AStack[]{new ComparableStack(ModItems.mold_base), new OreDictStack(STEEL.ingot(), 4)}, new AnvilOutput(new ItemStack(ModItems.mold, 1, 22))).setTier(2)); constructionRecipes.add(new AnvilConstructionRecipe(new AStack[]{new ComparableStack(ModItems.mold_base), new OreDictStack(STEEL.ingot(), 4)}, new AnvilOutput(new ItemStack(ModItems.mold, 1, 23))).setTier(2)); constructionRecipes.add(new AnvilConstructionRecipe(new AStack[]{new ComparableStack(ModItems.mold_base), new OreDictStack(STEEL.ingot(), 4)}, new AnvilOutput(new ItemStack(ModItems.mold, 1, 24))).setTier(2)); diff --git a/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory9mm.java b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory9mm.java index 2367c292e..8b4110ec0 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory9mm.java +++ b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory9mm.java @@ -57,7 +57,7 @@ public class XFactory9mm { ModItems.gun_lag = new ItemGunBaseNT(WeaponQuality.A_SIDE, new GunConfig() .dura(1_700).draw(7).inspect(31).crosshair(Crosshair.CIRCLE).smoke(LAMBDA_SMOKE) .rec(new Receiver(0) - .dmg(25F).delay(20).dry(4).spread(0.005F).reload(53).jam(44).sound("hbm:weapon.fire.blackPowder", 1.0F, 1.0F) + .dmg(25F).delay(4).dry(4).spread(0.005F).reload(53).jam(44).sound("hbm:weapon.fire.blackPowder", 1.0F, 1.0F) .mag(new MagazineFullReload(0, 17).addConfigs(p9_sp, p9_fmj, p9_jhp, p9_ap)) .offset(1, -0.0625 * 2.5, -0.25D) .setupStandardFire().recoil(Lego.LAMBDA_STANDARD_RECOIL)) diff --git a/src/main/java/com/hbm/main/ClientProxy.java b/src/main/java/com/hbm/main/ClientProxy.java index 2147cbd4e..aab1dbfc6 100644 --- a/src/main/java/com/hbm/main/ClientProxy.java +++ b/src/main/java/com/hbm/main/ClientProxy.java @@ -536,6 +536,7 @@ public class ClientProxy extends ServerProxy { MinecraftForgeClient.registerItemRenderer(ModItems.gun_b92, new ItemRenderGunAnim()); MinecraftForgeClient.registerItemRenderer(ModItems.gun_fireext, new ItemRenderFireExt()); MinecraftForgeClient.registerItemRenderer(ModItems.gun_cryocannon, new ItemRenderWeaponCryoCannon()); + MinecraftForgeClient.registerItemRenderer(ModItems.detonator_laser, new ItemRenderDetonatorLaser()); //multitool MinecraftForgeClient.registerItemRenderer(ModItems.multitool_dig, new ItemRenderMultitool()); MinecraftForgeClient.registerItemRenderer(ModItems.multitool_silk, new ItemRenderMultitool()); diff --git a/src/main/java/com/hbm/main/CraftingManager.java b/src/main/java/com/hbm/main/CraftingManager.java index 9bb41a4a8..01f91ca5a 100644 --- a/src/main/java/com/hbm/main/CraftingManager.java +++ b/src/main/java/com/hbm/main/CraftingManager.java @@ -485,16 +485,6 @@ public class CraftingManager { public static void reg2() { - addRecipeAuto(new ItemStack(ModItems.stamp_357, 1), new Object[] { "RSR", "III", " C ", 'R', REDSTONE.dust(), 'S', ModItems.stamp_iron_flat, 'I', ModItems.plate_polymer, 'C', ModItems.casing_357 }); - addRecipeAuto(new ItemStack(ModItems.stamp_44, 1), new Object[] { "RSR", "III", " C ", 'R', REDSTONE.dust(), 'S', ModItems.stamp_iron_flat, 'I', ModItems.plate_polymer, 'C', ModItems.casing_44 }); - addRecipeAuto(new ItemStack(ModItems.stamp_9, 1), new Object[] { "RSR", "III", " C ", 'R', REDSTONE.dust(), 'S', ModItems.stamp_iron_flat, 'I', ModItems.plate_polymer, 'C', ModItems.casing_9 }); - addRecipeAuto(new ItemStack(ModItems.stamp_50, 1), new Object[] { "RSR", "III", " C ", 'R', REDSTONE.dust(), 'S', ModItems.stamp_iron_flat, 'I', ModItems.plate_polymer, 'C', ModItems.casing_50 }); - - addRecipeAuto(new ItemStack(ModItems.stamp_desh_357, 1), new Object[] { "RSR", "III", " C ", 'R', ModItems.ingot_dura_steel, 'S', ModItems.stamp_desh_flat, 'I', ModItems.ingot_saturnite, 'C', ModItems.casing_357 }); - addRecipeAuto(new ItemStack(ModItems.stamp_desh_44, 1), new Object[] { "RSR", "III", " C ", 'R', ModItems.ingot_dura_steel, 'S', ModItems.stamp_desh_flat, 'I', ModItems.ingot_saturnite, 'C', ModItems.casing_44 }); - addRecipeAuto(new ItemStack(ModItems.stamp_desh_9, 1), new Object[] { "RSR", "III", " C ", 'R', ModItems.ingot_dura_steel, 'S', ModItems.stamp_desh_flat, 'I', ModItems.ingot_saturnite, 'C', ModItems.casing_9 }); - addRecipeAuto(new ItemStack(ModItems.stamp_desh_50, 1), new Object[] { "RSR", "III", " C ", 'R', ModItems.ingot_dura_steel, 'S', ModItems.stamp_desh_flat, 'I', ModItems.ingot_saturnite, 'C', ModItems.casing_50 }); - addRecipeAuto(new ItemStack(ModBlocks.sat_dock, 1), new Object[] { "SSS", "PCP", 'S', STEEL.ingot(), 'P', ANY_PLASTIC.ingot(), 'C', ModBlocks.crate_iron }); addRecipeAuto(new ItemStack(ModBlocks.book_guide, 1), new Object[] { "IBI", "LBL", "IBI", 'B', Items.book, 'I', KEY_BLACK, 'L', KEY_BLUE }); diff --git a/src/main/java/com/hbm/main/ResourceManager.java b/src/main/java/com/hbm/main/ResourceManager.java index 72e8b7455..17af73b0a 100644 --- a/src/main/java/com/hbm/main/ResourceManager.java +++ b/src/main/java/com/hbm/main/ResourceManager.java @@ -60,7 +60,6 @@ public class ResourceManager { //Landmines public static final IModelCustom mine_ap = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/bombs/ap_mine.obj")).asVBO(); - public static final IModelCustom mine_he = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/mine_he.obj")); public static final IModelCustom mine_marelet = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/bombs/marelet.obj")).asVBO(); public static final IModelCustom mine_fat = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/mine_fat.obj")); @@ -435,7 +434,7 @@ public class ResourceManager { public static final ResourceLocation mine_ap_stone_tex = new ResourceLocation(RefStrings.MODID, "textures/models/bombs/mine_ap_stone.png"); //public static final ResourceLocation mine_he_tex = new ResourceLocation(RefStrings.MODID, "textures/models/mine_he.png"); public static final ResourceLocation mine_marelet_tex = new ResourceLocation(RefStrings.MODID, "textures/models/bombs/mine_marelet.png"); - public static final ResourceLocation mine_shrap_tex = new ResourceLocation(RefStrings.MODID, "textures/models/mine_shrap.png"); + public static final ResourceLocation mine_shrap_tex = new ResourceLocation(RefStrings.MODID, "textures/models/bombs/mine_shrapnel.png"); public static final ResourceLocation mine_fat_tex = new ResourceLocation(RefStrings.MODID, "textures/models/mine_fat.png"); //Heaters diff --git a/src/main/java/com/hbm/render/item/ItemRenderLibrary.java b/src/main/java/com/hbm/render/item/ItemRenderLibrary.java index 2f0dc2eba..5923c0337 100644 --- a/src/main/java/com/hbm/render/item/ItemRenderLibrary.java +++ b/src/main/java/com/hbm/render/item/ItemRenderLibrary.java @@ -3,7 +3,6 @@ package com.hbm.render.item; import java.util.HashMap; import org.lwjgl.opengl.GL11; -import org.lwjgl.opengl.GL12; import com.hbm.blocks.ModBlocks; import com.hbm.blocks.generic.BlockBobble.BobbleType; @@ -511,12 +510,15 @@ public class ItemRenderLibrary { renderers.put(Item.getItemFromBlock(ModBlocks.mine_shrap), new ItemRenderBase() { public void renderInventory() { - GL11.glScaled(6, 6, 6); + GL11.glScaled(8, 8, 8); } public void renderCommon() { - GL11.glScaled(4, 4, 4); - bindTexture(ResourceManager.mine_shrap_tex); - ResourceManager.mine_he.renderAll(); + GL11.glScaled(1.25, 1.25, 1.25); + GL11.glDisable(GL11.GL_CULL_FACE); + GL11.glShadeModel(GL11.GL_SMOOTH); + bindTexture(ResourceManager.mine_shrap_tex); ResourceManager.mine_ap.renderAll(); + GL11.glShadeModel(GL11.GL_FLAT); + GL11.glEnable(GL11.GL_CULL_FACE); }}); renderers.put(Item.getItemFromBlock(ModBlocks.mine_fat), new ItemRenderBase() { diff --git a/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponAR15.java b/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponAR15.java deleted file mode 100644 index 27e348b32..000000000 --- a/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponAR15.java +++ /dev/null @@ -1,123 +0,0 @@ -package com.hbm.render.item.weapon; - -import com.hbm.render.anim.HbmAnimations; -import net.minecraftforge.client.model.IModelCustom; -import org.lwjgl.opengl.GL11; - -import com.hbm.main.ResourceManager; - -import net.minecraft.client.Minecraft; -import net.minecraft.item.ItemStack; -import net.minecraftforge.client.IItemRenderer; - -public class ItemRenderWeaponAR15 implements IItemRenderer { - - public ItemRenderWeaponAR15() { } - - @Override - public boolean handleRenderType(ItemStack item, ItemRenderType type) { - switch(type) { - case EQUIPPED: - case EQUIPPED_FIRST_PERSON: - case ENTITY: - case INVENTORY: - return true; - default: return false; - } - } - - @Override - public boolean shouldUseRenderHelper(ItemRenderType type, ItemStack item, ItemRendererHelper helper) { - - return type == ItemRenderType.ENTITY && (helper == ItemRendererHelper.ENTITY_ROTATION || helper == ItemRendererHelper.ENTITY_BOBBING); - } - - @Override - public void renderItem(ItemRenderType type, ItemStack item, Object... data) { - - GL11.glPushMatrix(); - - GL11.glEnable(GL11.GL_CULL_FACE); - GL11.glShadeModel(GL11.GL_SMOOTH); - - Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.ar15_tex); - - IModelCustom model = ResourceManager.ar15; - - switch (type) { - - case EQUIPPED_FIRST_PERSON: - - double s0 = 0.25D; - GL11.glRotated(25, 0, 0, 1); - GL11.glTranslated(1.25, 0, -0.25); - GL11.glRotated(-100, 0, 1, 0); - GL11.glScaled(s0, s0, s0); - - double[] recoil = HbmAnimations.getRelevantTransformation("RECOIL"); - GL11.glRotated(recoil[0] * 2.5, 1, 0, 0); - GL11.glTranslated(0, 0, recoil[0]); - - - double[] tilt = HbmAnimations.getRelevantTransformation("TILT"); - GL11.glTranslated(0, tilt[0], 3); - GL11.glRotated(tilt[0] * -35, 0, 0, 1); - GL11.glTranslated(0, 0, -3); - - model.renderPart("main"); - - double[] mag = HbmAnimations.getRelevantTransformation("MAG"); - GL11.glPushMatrix(); - GL11.glTranslated(0, 0, 5); - GL11.glRotated(mag[0] * 60 * (mag[2] == 1 ? 2.5 : 1), -1, 0, 0); - GL11.glTranslated(0, 0, -5); - model.renderPart("mag"); - GL11.glPopMatrix(); - - break; - - case EQUIPPED: - - double scale = 0.25D; - GL11.glScaled(scale, scale, scale); - GL11.glRotatef(15F, 0.0F, 0.0F, 1.0F); - GL11.glRotatef(-170, 0.0F, 1.0F, 0.0F); - GL11.glRotatef(-15F, 1.0F, 0.0F, 0.0F); - GL11.glTranslatef(-2F, -0.9F, -0.75F); - - break; - - case ENTITY: - - double s1 = 0.2D; - GL11.glScaled(s1, s1, s1); - GL11.glTranslated(0, 1, 0); - GL11.glRotatef(90, 0, 1, 0); - - break; - - case INVENTORY: - - GL11.glEnable(GL11.GL_LIGHTING); - - double s = 1.45D; - - GL11.glTranslated(6, 9, 0); - GL11.glRotated(90, 0, 1, 0); - GL11.glRotated(135, 1, 0, 0); - GL11.glScaled(s, s, -s); - - break; - - default: - break; - } - - if (type != ItemRenderType.EQUIPPED_FIRST_PERSON) { - model.renderAll(); - } - - GL11.glShadeModel(GL11.GL_FLAT); - GL11.glPopMatrix(); - } -} diff --git a/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponFFBolt.java b/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponFFBolt.java deleted file mode 100644 index d1c7b88aa..000000000 --- a/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponFFBolt.java +++ /dev/null @@ -1,146 +0,0 @@ -package com.hbm.render.item.weapon; - -import org.lwjgl.opengl.GL11; - -import com.hbm.items.ModItems; -import com.hbm.render.anim.HbmAnimations; - -import net.minecraft.client.Minecraft; -import net.minecraft.item.ItemStack; -import net.minecraft.util.ResourceLocation; -import net.minecraftforge.client.IItemRenderer; -import net.minecraftforge.client.model.IModelCustom; - -public class ItemRenderWeaponFFBolt implements IItemRenderer { - - ResourceLocation texture; - IModelCustom model; - - public ItemRenderWeaponFFBolt(IModelCustom model, ResourceLocation texture) { - this.model = model; - this.texture = texture; - } - - @Override - public boolean handleRenderType(ItemStack item, ItemRenderType type) { - switch(type) { - case EQUIPPED: - case EQUIPPED_FIRST_PERSON: - case ENTITY: - case INVENTORY: - return true; - default: return false; - } - } - - @Override - public boolean shouldUseRenderHelper(ItemRenderType type, ItemStack item, ItemRendererHelper helper) { - - return type == ItemRenderType.ENTITY && (helper == ItemRendererHelper.ENTITY_ROTATION || helper == ItemRendererHelper.ENTITY_BOBBING); - } - - @Override - public void renderItem(ItemRenderType type, ItemStack item, Object... data) { - - GL11.glPushMatrix(); - - GL11.glEnable(GL11.GL_CULL_FACE); - GL11.glShadeModel(GL11.GL_SMOOTH); - boolean renderBolt = true; - Minecraft.getMinecraft().renderEngine.bindTexture(texture); - - switch(type) { - - case EQUIPPED_FIRST_PERSON: - - if(item.getItem() == ModItems.gun_bolt_action_saturnite && Minecraft.getMinecraft().thePlayer.isSneaking()) { - GL11.glPopMatrix(); - return; - } - - double s0 = 0.5D; - GL11.glTranslated(0.5, 0.25, -0.2); - GL11.glScaled(s0, s0, s0); - GL11.glRotated(15, 0, 0, 1); - GL11.glRotated(20, 0, -1, 0); - - double[] recoil = HbmAnimations.getRelevantTransformation("RECOIL"); - GL11.glTranslated(recoil[0] * -0.5, 0, 0); - - double[] pull = HbmAnimations.getRelevantTransformation("LEVER_PULL"); - double[] rotate = HbmAnimations.getRelevantTransformation("LEVER_ROTATE"); - - GL11.glPushMatrix(); - GL11.glTranslated(pull[0], 0, 0); - double heightOffset = 0.52D; - GL11.glTranslated(0, heightOffset, 0); - GL11.glRotated(rotate[0] * 35, -1, 0, 0); - GL11.glTranslated(0, -heightOffset, 0); - model.renderPart("Bolt"); - GL11.glPopMatrix(); - - renderBolt = false; - - /*if(item.getItem() == ModItems.gun_bolt_action_saturnite) { - GL11.glPushMatrix(); - GL11.glDisable(GL11.GL_TEXTURE_2D); - GL11.glDisable(GL11.GL_LIGHTING); - - Tessellator tessellator = Tessellator.instance; - int color = 0x00FF00; - - tessellator.startDrawing(3); - tessellator.setColorOpaque_I(color); - tessellator.addVertex(5, 0, 0); - tessellator.addVertex(150, 0, 0); - tessellator.draw(); - - GL11.glEnable(GL11.GL_LIGHTING); - GL11.glEnable(GL11.GL_TEXTURE_2D); - GL11.glPopMatrix(); - }*/ - - break; - - case EQUIPPED: - - double scale = 0.25D; - GL11.glRotated(-75, 0, 1, 0); - GL11.glRotated(-10, 0, 0, 1); - GL11.glRotated(10, 1, 0, 0); - GL11.glTranslated(0.3, 0.15, -0.5); - GL11.glScaled(scale, scale, scale); - - break; - - case ENTITY: - - double s1 = 0.25D; - GL11.glScaled(s1, s1, s1); - GL11.glRotated(90, 0, 1, 0); - - break; - - case INVENTORY: - - GL11.glEnable(GL11.GL_LIGHTING); - - double s = 1.5D; - GL11.glTranslated(10, 11, 0); - GL11.glRotated(-135, 0, 0, 1); - GL11.glScaled(s, s, -s); - - break; - - default: break; - } - - model.renderPart("Gun"); - if(renderBolt) - model.renderPart("Bolt"); - - GL11.glShadeModel(GL11.GL_FLAT); - - GL11.glPopMatrix(); - } -} diff --git a/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponFFColt.java b/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponFFColt.java deleted file mode 100644 index 9e02394a5..000000000 --- a/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponFFColt.java +++ /dev/null @@ -1,124 +0,0 @@ -package com.hbm.render.item.weapon; - -import org.lwjgl.opengl.GL11; - -import com.hbm.main.ResourceManager; -import com.hbm.render.anim.HbmAnimations; - -import net.minecraft.client.Minecraft; -import net.minecraft.item.ItemStack; -import net.minecraft.util.ResourceLocation; -import net.minecraftforge.client.IItemRenderer; - -public class ItemRenderWeaponFFColt implements IItemRenderer { - - ResourceLocation main; - ResourceLocation hammer; - ResourceLocation grip; - - public ItemRenderWeaponFFColt(ResourceLocation main, ResourceLocation hammer, ResourceLocation grip) { - this.main = main; - this.hammer = hammer; - this.grip = grip; - } - - @Override - public boolean handleRenderType(ItemStack item, ItemRenderType type) { - switch(type) { - case EQUIPPED: - case EQUIPPED_FIRST_PERSON: - case ENTITY: - case INVENTORY: - return true; - default: return false; - } - } - - @Override - public boolean shouldUseRenderHelper(ItemRenderType type, ItemStack item, ItemRendererHelper helper) { - - return type == ItemRenderType.ENTITY && (helper == ItemRendererHelper.ENTITY_ROTATION || helper == ItemRendererHelper.ENTITY_BOBBING); - } - - @Override - public void renderItem(ItemRenderType type, ItemStack item, Object... data) { - - GL11.glPushMatrix(); - - GL11.glEnable(GL11.GL_CULL_FACE); - - switch(type) { - - case EQUIPPED_FIRST_PERSON: - - double s0 = 1.5D; - GL11.glTranslated(0.75, 0.5, 0); - GL11.glScaled(s0, s0, s0); - GL11.glRotated(100, 0, -1, 0); - GL11.glRotated(25, 1, 0, 0); - - HbmAnimations.applyRelevantTransformation("Body"); - Minecraft.getMinecraft().renderEngine.bindTexture(main); - ResourceManager.ff_python.renderPart("Body"); - - GL11.glPushMatrix(); - HbmAnimations.applyRelevantTransformation("Cylinder"); - ResourceManager.ff_python.renderPart("Cylinder"); - GL11.glPopMatrix(); - - Minecraft.getMinecraft().renderEngine.bindTexture(grip); - ResourceManager.ff_python.renderPart("Grip"); - - HbmAnimations.applyRelevantTransformation("Hammer"); - Minecraft.getMinecraft().renderEngine.bindTexture(hammer); - ResourceManager.ff_python.renderPart("Hammer"); - - GL11.glPopMatrix(); - - return; - - case EQUIPPED: - - double scale = 1.5D; - GL11.glRotated(195, 0, 1, 0); - GL11.glRotated(-10, 0, 0, 1); - GL11.glRotated(-10, 1, 0, 0); - GL11.glTranslated(-0.5, 0.1, -0.25); - GL11.glScaled(scale, scale, scale); - - break; - - case ENTITY: - - double s1 = 1D; - GL11.glScaled(s1, s1, s1); - GL11.glRotated(90, 0, 1, 0); - - break; - - case INVENTORY: - - GL11.glEnable(GL11.GL_LIGHTING); - - double s = 17D; - GL11.glTranslated(8, 8, 0); - GL11.glRotated(-135, 0, 0, 1); - GL11.glRotated(90, 0, 1, 0); - GL11.glScaled(s, s, -s); - - break; - - default: break; - } - - Minecraft.getMinecraft().renderEngine.bindTexture(main); - ResourceManager.ff_python.renderPart("Body"); - ResourceManager.ff_python.renderPart("Cylinder"); - Minecraft.getMinecraft().renderEngine.bindTexture(grip); - ResourceManager.ff_python.renderPart("Grip"); - Minecraft.getMinecraft().renderEngine.bindTexture(hammer); - ResourceManager.ff_python.renderPart("Hammer"); - - GL11.glPopMatrix(); - } -} diff --git a/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponFFCursed.java b/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponFFCursed.java deleted file mode 100644 index a53e3147b..000000000 --- a/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponFFCursed.java +++ /dev/null @@ -1,114 +0,0 @@ -package com.hbm.render.item.weapon; - -import org.lwjgl.opengl.GL11; - -import com.hbm.main.ResourceManager; -import com.hbm.render.anim.HbmAnimations; - -import net.minecraft.client.Minecraft; -import net.minecraft.item.ItemStack; -import net.minecraftforge.client.IItemRenderer; - -public class ItemRenderWeaponFFCursed implements IItemRenderer { - - @Override - public boolean handleRenderType(ItemStack item, ItemRenderType type) { - switch(type) { - case EQUIPPED: - case EQUIPPED_FIRST_PERSON: - case ENTITY: - case INVENTORY: - return true; - default: return false; - } - } - - @Override - public boolean shouldUseRenderHelper(ItemRenderType type, ItemStack item, ItemRendererHelper helper) { - - return type == ItemRenderType.ENTITY && (helper == ItemRendererHelper.ENTITY_ROTATION || helper == ItemRendererHelper.ENTITY_BOBBING); - } - - @Override - public void renderItem(ItemRenderType type, ItemStack item, Object... data) { - - GL11.glPushMatrix(); - - GL11.glEnable(GL11.GL_CULL_FACE); - - switch(type) { - - case EQUIPPED_FIRST_PERSON: - - double s0 = 1.5D; - GL11.glTranslated(0.75, 0.5, 0); - GL11.glScaled(s0, s0, s0); - GL11.glRotated(100, 0, -1, 0); - GL11.glRotated(20, 1, 0, 0); - - GL11.glShadeModel(GL11.GL_SMOOTH); - - HbmAnimations.applyRelevantTransformation("Body"); - Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.ff_cursed); - ResourceManager.cursed_revolver.renderPart("Body"); - ResourceManager.cursed_revolver.renderPart("Barrel"); - ResourceManager.cursed_revolver.renderPart("Grip"); - - GL11.glPushMatrix(); - HbmAnimations.applyRelevantTransformation("Slide"); - ResourceManager.cursed_revolver.renderPart("Slide"); - GL11.glPopMatrix(); - - GL11.glPushMatrix(); - HbmAnimations.applyRelevantTransformation("Magazine"); - ResourceManager.cursed_revolver.renderPart("Magazine"); - GL11.glPopMatrix(); - - GL11.glShadeModel(GL11.GL_FLAT); - - GL11.glPopMatrix(); - - return; - - case EQUIPPED: - - double scale = 1.5D; - GL11.glRotated(195, 0, 1, 0); - GL11.glRotated(-10, 0, 0, 1); - GL11.glRotated(-10, 1, 0, 0); - GL11.glTranslated(-0.5, 0.1, -0.25); - GL11.glScaled(scale, scale, scale); - - break; - - case ENTITY: - - double s1 = 1D; - GL11.glScaled(s1, s1, s1); - GL11.glRotated(90, 0, 1, 0); - - break; - - case INVENTORY: - - GL11.glEnable(GL11.GL_LIGHTING); - - double s = 17D; - GL11.glTranslated(10, 11.5, 0); - GL11.glRotated(-135, 0, 0, 1); - GL11.glRotated(90, 0, 1, 0); - GL11.glScaled(s, s, -s); - - break; - - default: break; - } - - GL11.glShadeModel(GL11.GL_SMOOTH); - Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.ff_cursed); - ResourceManager.cursed_revolver.renderAll(); - GL11.glShadeModel(GL11.GL_FLAT); - - GL11.glPopMatrix(); - } -} diff --git a/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponFFMG42.java b/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponFFMG42.java deleted file mode 100644 index 880faa2b5..000000000 --- a/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponFFMG42.java +++ /dev/null @@ -1,112 +0,0 @@ -package com.hbm.render.item.weapon; - -import org.lwjgl.opengl.GL11; - -import com.hbm.main.ResourceManager; -import com.hbm.render.anim.HbmAnimations; - -import net.minecraft.client.Minecraft; -import net.minecraft.item.ItemStack; -import net.minecraftforge.client.IItemRenderer; - -public class ItemRenderWeaponFFMG42 implements IItemRenderer { - - public ItemRenderWeaponFFMG42() { } - - @Override - public boolean handleRenderType(ItemStack item, ItemRenderType type) { - switch(type) { - case EQUIPPED: - case EQUIPPED_FIRST_PERSON: - case ENTITY: - case INVENTORY: - return true; - default: return false; - } - } - - @Override - public boolean shouldUseRenderHelper(ItemRenderType type, ItemStack item, ItemRendererHelper helper) { - - return type == ItemRenderType.ENTITY && (helper == ItemRendererHelper.ENTITY_ROTATION || helper == ItemRendererHelper.ENTITY_BOBBING); - } - - @Override - public void renderItem(ItemRenderType type, ItemStack item, Object... data) { - - GL11.glPushMatrix(); - - GL11.glEnable(GL11.GL_CULL_FACE); - GL11.glShadeModel(GL11.GL_SMOOTH); - - Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.mg42_tex); - boolean renderMag = true; - - switch(type) { - - case EQUIPPED_FIRST_PERSON: - - double s0 = 0.65D; - GL11.glRotated(170, 0, 1, 0); - GL11.glRotated(-25, 0, 0, 1); - GL11.glTranslated(-0.125, 0, 0); - GL11.glScaled(s0, s0, s0); - - double[] recoil = HbmAnimations.getRelevantTransformation("RECOIL"); - GL11.glTranslated(recoil[0] * 0.25, 0, 0); - - double[] reload = HbmAnimations.getRelevantTransformation("MAG"); - GL11.glRotated(reload[1] * 15, 1, 0, 0); - - GL11.glPushMatrix(); - - GL11.glRotated(reload[1] * -45, 1, 0, 0); - GL11.glTranslated(0, reload[1] * 0.25, -reload[1]); - ResourceManager.mg42.renderPart("Mag"); - GL11.glPopMatrix(); - - renderMag = false; - - break; - - case EQUIPPED: - - double scale = 0.35D; - GL11.glScaled(scale, scale, scale); - GL11.glRotated(100, 0, 1, 0); - GL11.glRotated(-10, 1, 0, 0); - GL11.glRotated(10, 0, 0, 1); - GL11.glTranslated(-0.5, 0.75, 1.25); - - break; - - case ENTITY: - - double s1 = 0.3D; - GL11.glScaled(s1, s1, s1); - - break; - - case INVENTORY: - - GL11.glEnable(GL11.GL_LIGHTING); - - double s = 1.75D; - GL11.glTranslated(10, 9.5, 0); - GL11.glRotated(180, 1, 0, 0); - GL11.glRotated(-45, 0, 0, 1); - GL11.glScaled(s, s, -s); - - break; - - default: break; - } - - ResourceManager.mg42.renderPart("Gun"); - if(renderMag) ResourceManager.mg42.renderPart("Mag"); - - GL11.glShadeModel(GL11.GL_FLAT); - - GL11.glPopMatrix(); - } -} diff --git a/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponFFMaresLeg.java b/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponFFMaresLeg.java deleted file mode 100644 index f63f1d68e..000000000 --- a/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponFFMaresLeg.java +++ /dev/null @@ -1,131 +0,0 @@ -package com.hbm.render.item.weapon; - -import org.lwjgl.opengl.GL11; - -import com.hbm.main.ResourceManager; -import com.hbm.render.anim.HbmAnimations; - -import net.minecraft.client.Minecraft; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.ItemStack; -import net.minecraft.util.ResourceLocation; -import net.minecraftforge.client.IItemRenderer; - -public class ItemRenderWeaponFFMaresLeg implements IItemRenderer { - - ResourceLocation main; - ResourceLocation grip; - - public ItemRenderWeaponFFMaresLeg(ResourceLocation main, ResourceLocation grip) { - this.main = main; - this.grip = grip; - } - - @Override - public boolean handleRenderType(ItemStack item, ItemRenderType type) { - switch(type) { - case EQUIPPED: - case EQUIPPED_FIRST_PERSON: - case ENTITY: - case INVENTORY: - return true; - default: return false; - } - } - - @Override - public boolean shouldUseRenderHelper(ItemRenderType type, ItemStack item, ItemRendererHelper helper) { - - return type == ItemRenderType.ENTITY && (helper == ItemRendererHelper.ENTITY_ROTATION || helper == ItemRendererHelper.ENTITY_BOBBING); - } - - @Override - public void renderItem(ItemRenderType type, ItemStack item, Object... data) { - - GL11.glPushMatrix(); - - GL11.glEnable(GL11.GL_CULL_FACE); - - EntityPlayer player = Minecraft.getMinecraft().thePlayer; - - double lever = 0; - - switch(type) { - - case EQUIPPED_FIRST_PERSON: - - double s0 = 1.25D; - GL11.glTranslated(0.75, 0.5, 0); - GL11.glScaled(s0, s0, s0); - - if(!player.isSneaking()) { - GL11.glRotated(100, 0, -1, 0); - GL11.glRotated(-5, 0, 1, 0); - GL11.glRotated(20, 1, 0, 0); - } else { - GL11.glRotated(97.5, 0, -1, 0); - GL11.glTranslated(-0.71, 0.375, 0); - GL11.glRotated(25, 1, 0, 0); - GL11.glRotated(1, 0, 1, 0); - GL11.glRotated(-3, 0, 0, 1); - GL11.glRotated(0.2, 0, 1, 0); - GL11.glTranslated(-0.006, -0.005, 0.4); - } - - double[] recoil = HbmAnimations.getRelevantTransformation("LEVER_RECOIL"); - GL11.glTranslated(0, 0, recoil[0] * 0.5); - - double[] rotation = HbmAnimations.getRelevantTransformation("LEVER_ROTATE"); - lever = rotation[2]; - GL11.glTranslated(0, 0, 0.5); - GL11.glRotated(Math.min(lever, 30), 1, 0, 0); - GL11.glTranslated(0, 0, -0.5); - - break; - - case EQUIPPED: - - double scale = 1.25D; - GL11.glRotated(195, 0, 1, 0); - GL11.glRotated(-10, 0, 0, 1); - GL11.glRotated(-10, 1, 0, 0); - GL11.glTranslated(-0.45, 0.1, -0.5); - GL11.glScaled(scale, scale, scale); - - break; - - case ENTITY: - - double s1 = 1D; - GL11.glScaled(s1, s1, s1); - GL11.glRotated(90, 0, 1, 0); - - break; - - case INVENTORY: - - GL11.glEnable(GL11.GL_LIGHTING); - - double s = 9D; - GL11.glTranslated(8, 9, 0); - GL11.glRotated(-135, 0, 0, 1); - GL11.glRotated(90, 0, 1, 0); - GL11.glScaled(s, s, -s); - - break; - - default: break; - } - - Minecraft.getMinecraft().renderEngine.bindTexture(grip); - ResourceManager.ff_maresleg.renderPart("Grip"); - Minecraft.getMinecraft().renderEngine.bindTexture(main); - ResourceManager.ff_maresleg.renderPart("Gun"); - GL11.glTranslated(0, 0.1, 0.25); - GL11.glRotated(lever * 1.5, 1, 0, 0); - GL11.glTranslated(0, -0.1, -0.25); - ResourceManager.ff_maresleg.renderPart("Lever"); - - GL11.glPopMatrix(); - } -} diff --git a/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponFFNightmare.java b/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponFFNightmare.java deleted file mode 100644 index 6a7b3f37c..000000000 --- a/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponFFNightmare.java +++ /dev/null @@ -1,97 +0,0 @@ -package com.hbm.render.item.weapon; - -import org.lwjgl.opengl.GL11; - -import com.hbm.items.weapon.ItemGunBase; -import com.hbm.main.ResourceManager; - -import net.minecraft.client.Minecraft; -import net.minecraft.item.ItemStack; -import net.minecraftforge.client.IItemRenderer; - -public class ItemRenderWeaponFFNightmare implements IItemRenderer { - - @Override - public boolean handleRenderType(ItemStack item, ItemRenderType type) { - switch(type) { - case EQUIPPED: - case EQUIPPED_FIRST_PERSON: - case ENTITY: - case INVENTORY: - return true; - default: return false; - } - } - - @Override - public boolean shouldUseRenderHelper(ItemRenderType type, ItemStack item, ItemRendererHelper helper) { - - return type == ItemRenderType.ENTITY && (helper == ItemRendererHelper.ENTITY_ROTATION || helper == ItemRendererHelper.ENTITY_BOBBING); - } - - @Override - public void renderItem(ItemRenderType type, ItemStack item, Object... data) { - - GL11.glPushMatrix(); - - GL11.glEnable(GL11.GL_CULL_FACE); - - switch(type) { - - case EQUIPPED_FIRST_PERSON: - - double s0 = 0.2D; - GL11.glTranslated(0.75, 0.55, 0); - GL11.glScaled(s0, s0, s0); - GL11.glRotated(100, 0, -1, 0); - GL11.glRotated(25, 1, 0, 0); - - break; - - case EQUIPPED: - - double scale = 0.2D; - GL11.glRotated(195, 0, 1, 0); - GL11.glRotated(-10, 0, 0, 1); - GL11.glRotated(-10, 1, 0, 0); - GL11.glTranslated(-0.5, 0.3, -0.25); - GL11.glScaled(scale, scale, scale); - - break; - - case ENTITY: - - double s1 = 0.15D; - GL11.glScaled(s1, s1, s1); - GL11.glRotated(90, 0, 1, 0); - - break; - - case INVENTORY: - - GL11.glEnable(GL11.GL_LIGHTING); - - double s = 1.75D; - GL11.glTranslated(10, 9, 0); - GL11.glRotated(-135, 0, 0, 1); - GL11.glRotated(90, 0, 1, 0); - GL11.glScaled(s, s, -s); - - break; - - default: break; - } - - GL11.glShadeModel(GL11.GL_SMOOTH); - Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.ff_nightmare_orig_tex); - ResourceManager.ff_nightmare.renderPart("Gun"); - - int ammo = ItemGunBase.getMag(item); - for(int i = 0; i < ammo; i++) { - ResourceManager.ff_nightmare.renderPart("Bullet" + (i + 1)); - } - GL11.glShadeModel(GL11.GL_FLAT); - - GL11.glPopMatrix(); - } -} diff --git a/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponKS23.java b/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponKS23.java deleted file mode 100644 index 4160ee3f9..000000000 --- a/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponKS23.java +++ /dev/null @@ -1,149 +0,0 @@ -package com.hbm.render.item.weapon; - -import java.awt.Color; - -import org.lwjgl.opengl.GL11; - -import com.hbm.handler.BulletConfigSyncingUtil; -import com.hbm.handler.BulletConfiguration; -import com.hbm.items.weapon.ItemGunBase; -import com.hbm.main.ResourceManager; -import com.hbm.render.anim.HbmAnimations; - -import net.minecraft.client.Minecraft; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.ItemStack; -import net.minecraftforge.client.IItemRenderer; - -public class ItemRenderWeaponKS23 implements IItemRenderer { - - public ItemRenderWeaponKS23() { } - - @Override - public boolean handleRenderType(ItemStack item, ItemRenderType type) { - switch(type) { - case EQUIPPED: - case EQUIPPED_FIRST_PERSON: - case ENTITY: - case INVENTORY: - return true; - default: return false; - } - } - - @Override - public boolean shouldUseRenderHelper(ItemRenderType type, ItemStack item, ItemRendererHelper helper) { - - return type == ItemRenderType.ENTITY && (helper == ItemRendererHelper.ENTITY_ROTATION || helper == ItemRendererHelper.ENTITY_BOBBING); - } - - @Override - public void renderItem(ItemRenderType type, ItemStack item, Object... data) { - - GL11.glPushMatrix(); - GL11.glDisable(GL11.GL_CULL_FACE); - - EntityPlayer player = Minecraft.getMinecraft().thePlayer; - - Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.ks23_tex); - - switch(type) { - - case EQUIPPED_FIRST_PERSON: - - GL11.glTranslatef(1.0F, 0.5F, -0.25F); - GL11.glRotatef(25F, 0.0F, 0.0F, 1.0F); - GL11.glRotatef(-100, 0.0F, 1.0F, 0.0F); - GL11.glScaled(0.75, 0.75, 0.75); - - if(player.isSneaking()) { - GL11.glRotatef(4.5F, 0.0F, 1.0F, 0.0F); - GL11.glRotatef(-2F, 0.0F, 0.0F, 1.0F); - GL11.glTranslatef(-0.9F, 0.2F, 0.325F); - } - - HbmAnimations.applyRelevantTransformation("Body"); - - GL11.glShadeModel(GL11.GL_SMOOTH); - - ResourceManager.ks23.renderPart("Body"); - ResourceManager.ks23.renderPart("Trigger"); - - GL11.glPushMatrix(); - HbmAnimations.applyRelevantTransformation("Bolt"); - ResourceManager.ks23.renderPart("Bolt"); - GL11.glPopMatrix(); - - GL11.glPushMatrix(); - HbmAnimations.applyRelevantTransformation("Guard"); - ResourceManager.ks23.renderPart("Guard"); - GL11.glPopMatrix(); - - - GL11.glPushMatrix(); - Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.casings_tex); - - HbmAnimations.applyRelevantTransformation("Shell"); - - ItemGunBase gun = (ItemGunBase)item.getItem(); - BulletConfiguration bullet = BulletConfigSyncingUtil.pullConfig(gun.mainConfig.config.get(ItemGunBase.getMagType(item))); - int[] colors = bullet.spentCasing.getColors(); - - Color shellColor = new Color(colors[1]); - GL11.glColor3f(shellColor.getRed() / 255F, shellColor.getGreen() / 255F, shellColor.getBlue() / 255F); - ResourceManager.ks23.renderPart("Shell"); - - Color shellForeColor = new Color(colors[0]); - GL11.glColor3f(shellForeColor.getRed() / 255F, shellForeColor.getGreen() / 255F, shellForeColor.getBlue() / 255F); - ResourceManager.ks23.renderPart("ShellFore"); - - GL11.glColor3f(1F, 1F, 1F); - GL11.glPopMatrix(); - - - GL11.glShadeModel(GL11.GL_FLAT); - - GL11.glEnable(GL11.GL_CULL_FACE); - GL11.glPopMatrix(); - - return; - - case EQUIPPED: - - GL11.glRotatef(20F, 1.0F, 0.0F, 1.0F); - GL11.glRotatef(-170F, 0.0F, 1.0F, 0.0F); - GL11.glTranslatef(-0.5F, 0.0F, -0.9F); - GL11.glScaled(0.5, 0.5, 0.5); - - break; - - case ENTITY: - - GL11.glTranslatef(0.3F, 0.2F, 0.0F); - GL11.glScaled(0.5, 0.5, 0.5); - - break; - - case INVENTORY: - - GL11.glEnable(GL11.GL_LIGHTING); - - GL11.glTranslatef(7F, 8F, 0.0F); - GL11.glScaled(4, 4, -4); - GL11.glRotatef(-90, 0, 1, 0); - GL11.glRotatef(-135F, 1.0F, 0.0F, 0.0F); - - break; - - default: break; - } - - GL11.glShadeModel(GL11.GL_SMOOTH); - ResourceManager.ks23.renderAll(); - GL11.glShadeModel(GL11.GL_FLAT); - - GL11.glEnable(GL11.GL_CULL_FACE); - GL11.glPopMatrix(); - } - -} diff --git a/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponNovac.java b/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponNovac.java deleted file mode 100644 index 9d744207c..000000000 --- a/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponNovac.java +++ /dev/null @@ -1,130 +0,0 @@ -package com.hbm.render.item.weapon; - -import org.lwjgl.opengl.GL11; - -import com.hbm.items.ModItems; -import com.hbm.main.MainRegistry; -import com.hbm.main.ResourceManager; -import com.hbm.render.anim.HbmAnimations; - -import net.minecraft.client.Minecraft; -import net.minecraft.item.ItemStack; -import net.minecraftforge.client.IItemRenderer; - -public class ItemRenderWeaponNovac implements IItemRenderer { - - public ItemRenderWeaponNovac() { } - - @Override - public boolean handleRenderType(ItemStack item, ItemRenderType type) { - switch(type) { - case EQUIPPED: - case EQUIPPED_FIRST_PERSON: - case ENTITY: - case INVENTORY: - return true; - default: return false; - } - } - - @Override - public boolean shouldUseRenderHelper(ItemRenderType type, ItemStack item, ItemRendererHelper helper) { - - return type == ItemRenderType.ENTITY && (helper == ItemRendererHelper.ENTITY_ROTATION || helper == ItemRendererHelper.ENTITY_BOBBING); - } - - @Override - public void renderItem(ItemRenderType type, ItemStack item, Object... data) { - - //prevent rendering when using scope - if(item.getItem() == ModItems.gun_revolver_pip && type == ItemRenderType.EQUIPPED_FIRST_PERSON && MainRegistry.proxy.me().isSneaking()) return; - - GL11.glPushMatrix(); - - GL11.glEnable(GL11.GL_CULL_FACE); - - if(item.getItem() == ModItems.gun_revolver_nopip) Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.novac_tex); - if(item.getItem() == ModItems.gun_revolver_blackjack) Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.blackjack_tex); - if(item.getItem() == ModItems.gun_revolver_silver) Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.lent_gun_tex); - if(item.getItem() == ModItems.gun_revolver_red) Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.red_key_tex); - - switch(type) { - - case EQUIPPED_FIRST_PERSON: - - double s0 = 0.4D; - GL11.glRotated(25, 0, 0, 1); - GL11.glRotated(80, 0, 1, 0); - GL11.glRotatef(180, 0.0F, 1.0F, 0.0F); - GL11.glTranslatef(-0.0F, 0.0F, -1.25F); - GL11.glScaled(s0, s0, s0); - - GL11.glShadeModel(GL11.GL_SMOOTH); - - HbmAnimations.applyRelevantTransformation("Body"); - ResourceManager.novac.renderPart("Body"); - - GL11.glPushMatrix(); - HbmAnimations.applyRelevantTransformation("Cylinder"); - ResourceManager.novac.renderPart("Cylinder"); - GL11.glPopMatrix(); - - GL11.glPushMatrix(); - HbmAnimations.applyRelevantTransformation("Hammer"); - ResourceManager.novac.renderPart("Hammer"); - GL11.glPopMatrix(); - - GL11.glPushMatrix(); - HbmAnimations.applyRelevantTransformation("Trigger"); - ResourceManager.novac.renderPart("Trigger"); - GL11.glPopMatrix(); - - GL11.glShadeModel(GL11.GL_FLAT); - - GL11.glPopMatrix(); - - return; - - case EQUIPPED: - - double scale = 0.35D; - GL11.glScaled(scale, scale, scale); - GL11.glRotatef(20F, 0.0F, 0.0F, 1.0F); - GL11.glRotatef(-5, 0.0F, 0.0F, 1.0F); - GL11.glRotatef(10, 0.0F, 1.0F, 0.0F); - GL11.glRotatef(15F, 1.0F, 0.0F, 0.0F); - GL11.glRotatef(180, 0.0F, 1.0F, 0.0F); - GL11.glTranslatef(-1.25F, 0.25F, -1F); - - break; - - case ENTITY: - - double s1 = 0.3D; - GL11.glScaled(s1, s1, s1); - - break; - - case INVENTORY: - - GL11.glEnable(GL11.GL_LIGHTING); - - double s = 3D; - GL11.glTranslated(7, 8, 0); - GL11.glRotated(90, 0, 1, 0); - GL11.glRotated(135, 1, 0, 0); - GL11.glScaled(s, s, -s); - - break; - - default: break; - } - - GL11.glShadeModel(GL11.GL_SMOOTH); - ResourceManager.novac.renderAllExcept("Scope"); - - GL11.glShadeModel(GL11.GL_FLAT); - - GL11.glPopMatrix(); - } -} diff --git a/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponObj.java b/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponObj.java deleted file mode 100644 index 938d55aa9..000000000 --- a/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponObj.java +++ /dev/null @@ -1,227 +0,0 @@ -package com.hbm.render.item.weapon; - -import org.lwjgl.opengl.GL11; - -import com.hbm.items.ModItems; -import com.hbm.main.ResourceManager; -import com.hbm.render.anim.HbmAnimations; - -import net.minecraft.client.Minecraft; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.ItemStack; -import net.minecraftforge.client.IItemRenderer; - -public class ItemRenderWeaponObj implements IItemRenderer { - - public ItemRenderWeaponObj() { } - - @Override - public boolean handleRenderType(ItemStack item, ItemRenderType type) { - switch(type) { - case EQUIPPED: - case EQUIPPED_FIRST_PERSON: - case ENTITY: - return true; - case INVENTORY: - return item.getItem() == ModItems.gun_hk69 - || item.getItem() == ModItems.gun_deagle - || item.getItem() == ModItems.gun_flechette; - default: return false; - } - } - - @Override - public boolean shouldUseRenderHelper(ItemRenderType type, ItemStack item, ItemRendererHelper helper) { - - return type == ItemRenderType.ENTITY && (helper == ItemRendererHelper.ENTITY_ROTATION || helper == ItemRendererHelper.ENTITY_BOBBING); - } - - @Override - public void renderItem(ItemRenderType type, ItemStack item, Object... data) { - - GL11.glPushMatrix(); - GL11.glDisable(GL11.GL_CULL_FACE); - - EntityPlayer player = Minecraft.getMinecraft().thePlayer; - - if(item.getItem() == ModItems.gun_hk69) - Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.hk69_tex); - - if(item.getItem() == ModItems.gun_deagle) - Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.universal_bright); - - switch(type) { - - case EQUIPPED_FIRST_PERSON: - - - if(item.getItem() == ModItems.gun_hk69) { - GL11.glTranslatef(1.0F, 0.5F, 0.0F); - GL11.glRotatef(90F, 0.0F, 1.0F, 0.0F); - GL11.glRotatef(-25F, 1.0F, 0.0F, 0.0F); - GL11.glRotatef(-10F, 0.0F, 1.0F, 0.0F); - GL11.glScaled(0.75, 0.75, 0.75); - - if(player.isSneaking()) { - GL11.glTranslatef(1.16F, 0.35F, -0.8F); - GL11.glRotatef(5.5F, 0.0F, 1.0F, 0.0F); - GL11.glRotatef(4F, 1.0F, 0.0F, 0.0F); - } - } - - if(item.getItem() == ModItems.gun_deagle) { - GL11.glRotatef(90F, 0.0F, 1.0F, 0.0F); - GL11.glRotatef(25F, -1.0F, 0.0F, 0.0F); - GL11.glTranslatef(0.2F, 0.2F, 0.8F); - GL11.glScaled(0.2, 0.2, 0.2); - - if(player.isSneaking()) { - GL11.glTranslatef(3.7F, 1.7F, 0F); - GL11.glRotatef(-5F, 0.0F, 1.0F, 0.0F); - } - } - - if(item.getItem() == ModItems.gun_flechette) { - - GL11.glRotatef(25F, 0.0F, 0.0F, 1.0F); - GL11.glTranslatef(1.0F, -1.0F, -0.0F); - GL11.glRotatef(170F, 0.0F, 1.0F, 0.0F); - GL11.glScaled(0.25, 0.25, 0.25); - - if(player.isSneaking()) { - GL11.glRotatef(5F, 0.0F, 1.0F, 0.0F); - GL11.glRotatef(-2F, 0.0F, 0.0F, 1.0F); - GL11.glTranslatef(-2.0F, 1.2F, 3.7F); - } - - double[] recoil = HbmAnimations.getRelevantTransformation("RECOIL"); - GL11.glTranslated(recoil[0], recoil[1], recoil[2]); - } - - break; - - case EQUIPPED: - - if(item.getItem() == ModItems.gun_hk69) { - GL11.glRotatef(20F, 1.0F, 0.0F, 1.0F); - GL11.glRotatef(10F, 0.0F, 1.0F, 0.0F); - GL11.glTranslatef(0.4F, 0.0F, 0.55F); - GL11.glScaled(0.75, 0.75, 0.75); - } - - if(item.getItem() == ModItems.gun_deagle) { - GL11.glRotatef(90F, 0.0F, 1.0F, 0.0F); - GL11.glRotatef(35F, -1.0F, 0.0F, 0.0F); - GL11.glTranslatef(0.0F, -0.1F, 0.8F); - GL11.glScaled(0.15, 0.15, 0.15); - } - - if(item.getItem() == ModItems.gun_flechette) { - GL11.glRotatef(35F, 0.0F, 0.0F, 1.0F); - GL11.glRotatef(180F, 0.0F, 1.0F, 0.0F); - GL11.glTranslatef(-1.4F, -0.55F, 0.0F); - GL11.glScaled(0.125, 0.125, 0.125); - } - - break; - - case ENTITY: - - if(item.getItem() == ModItems.gun_hk69) { - GL11.glTranslatef(0.0F, 0.2F, 0.0F); - GL11.glRotatef(-90F, 0.0F, 1.0F, 0.0F); - GL11.glScaled(0.75, 0.75, 0.75); - } - - if(item.getItem() == ModItems.gun_deagle) { - GL11.glTranslatef(0.0F, 0.2F, 0.0F); - GL11.glRotatef(-90F, 0.0F, 1.0F, 0.0F); - GL11.glScaled(0.25, 0.25, 0.25); - } - - if(item.getItem() == ModItems.gun_flechette) { - GL11.glTranslatef(-0.25F, 0.0F, 0.0F); - GL11.glScaled(0.125, 0.125, 0.125); - } - - break; - - case INVENTORY: - - GL11.glEnable(GL11.GL_LIGHTING); - - if(item.getItem() == ModItems.gun_hk69) { - GL11.glScaled(7.5, 7.5, -7.5); - GL11.glTranslatef(0.85F, 1.2F, 0.0F); - GL11.glRotatef(180F, 1.0F, 0.0F, 0.0F); - GL11.glRotatef(-90F, 0.0F, 1.0F, 0.0F); - GL11.glRotatef(-45F, 1.0F, 0.0F, 0.0F); - } - - if(item.getItem() == ModItems.gun_deagle) { - GL11.glScaled(2.5, 2.5, -2.5); - GL11.glTranslatef(3.5F, 3F, 0.0F); - GL11.glRotatef(180F, 1.0F, 0.0F, 0.0F); - GL11.glRotatef(-90F, 0.0F, 1.0F, 0.0F); - GL11.glRotatef(-45F, 1.0F, 0.0F, 0.0F); - } - - if(item.getItem() == ModItems.gun_flechette) { - GL11.glScaled(1.2, 1.2, -1.2); - GL11.glTranslatef(2.5F, 8.0F, 0.0F); - GL11.glRotatef(180F, 1.0F, 0.0F, 0.0F); - GL11.glRotatef(-45F, 0.0F, 0.0F, 1.0F); - } - - break; - - default: break; - } - - if(item.getItem() == ModItems.gun_hk69) { - GL11.glShadeModel(GL11.GL_SMOOTH); - ResourceManager.hk69.renderAll(); - GL11.glShadeModel(GL11.GL_FLAT); - } - - if(item.getItem() == ModItems.gun_deagle) { - GL11.glShadeModel(GL11.GL_SMOOTH); - ResourceManager.deagle.renderAll(); - GL11.glShadeModel(GL11.GL_FLAT); - } - - if(item.getItem() == ModItems.gun_flechette) { - renderFlechette(); - } - - GL11.glEnable(GL11.GL_CULL_FACE); - GL11.glPopMatrix(); - } - - public void renderFlechette() { - GL11.glShadeModel(GL11.GL_SMOOTH); - Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.flechette_body); - ResourceManager.flechette.renderPart("body"); - Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.flechette_chamber); - ResourceManager.flechette.renderPart("chamber"); - Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.flechette_barrel); - ResourceManager.flechette.renderPart("barrel"); - Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.flechette_gren_tube); - ResourceManager.flechette.renderPart("gren_tube"); - Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.flechette_grenades); - ResourceManager.flechette.renderPart("grenades"); - Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.flechette_pivot); - ResourceManager.flechette.renderPart("pivot"); - Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.flechette_top); - ResourceManager.flechette.renderPart("top"); - Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.flechette_drum); - ResourceManager.flechette.renderPart("drum"); - Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.flechette_base); - ResourceManager.flechette.renderPart("base"); - Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.flechette_trigger); - ResourceManager.flechette.renderPart("trigger"); - Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.flechette_stock); - ResourceManager.flechette.renderPart("stock"); - GL11.glShadeModel(GL11.GL_FLAT); - } -} diff --git a/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponRemington.java b/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponRemington.java deleted file mode 100644 index e49b57531..000000000 --- a/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponRemington.java +++ /dev/null @@ -1,108 +0,0 @@ -package com.hbm.render.item.weapon; - -import org.lwjgl.opengl.GL11; - -import com.hbm.main.ResourceManager; -import com.hbm.render.anim.HbmAnimations; - -import net.minecraft.client.Minecraft; -import net.minecraft.item.ItemStack; -import net.minecraftforge.client.IItemRenderer; - -public class ItemRenderWeaponRemington implements IItemRenderer { - - @Override - public boolean handleRenderType(ItemStack item, ItemRenderType type) { - switch(type) { - case EQUIPPED: - case EQUIPPED_FIRST_PERSON: - case ENTITY: - case INVENTORY: - return true; - default: return false; - } - } - - @Override - public boolean shouldUseRenderHelper(ItemRenderType type, ItemStack item, ItemRendererHelper helper) { - - return type == ItemRenderType.ENTITY && (helper == ItemRendererHelper.ENTITY_ROTATION || helper == ItemRendererHelper.ENTITY_BOBBING); - } - - @Override - public void renderItem(ItemRenderType type, ItemStack item, Object... data) { - - GL11.glPushMatrix(); - GL11.glEnable(GL11.GL_CULL_FACE); - GL11.glShadeModel(GL11.GL_SMOOTH); - - Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.remington_tex); - - switch(type) { - - case EQUIPPED_FIRST_PERSON: - - double[] recoilT = HbmAnimations.getRelevantTransformation("RECOIL_TRANSLATE"); - double[] pump = HbmAnimations.getRelevantTransformation("PUMP"); - - double s0 = 0.35D; - GL11.glRotated(25, 0, 0, 1); - GL11.glRotated(-10, 0, 1, 0); - GL11.glTranslated(1.25, -1.25, -0.25); - GL11.glScaled(s0, s0, s0); - - GL11.glTranslated(recoilT[2], 0, 0); - - ResourceManager.remington.renderPart("Gun"); - - GL11.glTranslated(pump[2] * 0.5, 0, 0); - - ResourceManager.remington.renderPart("Pump"); - - break; - - case EQUIPPED: - - double scale = 0.25D; - GL11.glScaled(scale, scale, scale); - GL11.glRotatef(20F, 0.0F, 0.0F, 1.0F); - GL11.glRotatef(-80, 0.0F, 1.0F, 0.0F); - GL11.glRotatef(-15F, 0.0F, 0.0F, 1.0F); - GL11.glTranslatef(2.5F, -3.5F, -2F); - - ResourceManager.remington.renderAll(); - - break; - - case ENTITY: - - double s1 = 0.25D; - GL11.glScaled(s1, s1, s1); - GL11.glTranslated(0, -3, 0); - - ResourceManager.remington.renderAll(); - - break; - - case INVENTORY: - - GL11.glEnable(GL11.GL_LIGHTING); - - double s = 1.25D; - GL11.glTranslated(4, 11, 0); - GL11.glRotated(-135, 0, 0, 1); - GL11.glScaled(s, s, -s); - - ResourceManager.remington.renderAll(); - - break; - - default: break; - } - - GL11.glShadeModel(GL11.GL_SMOOTH); - GL11.glShadeModel(GL11.GL_FLAT); - - GL11.glPopMatrix(); - } -} diff --git a/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponSauer.java b/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponSauer.java deleted file mode 100644 index 9d4d204de..000000000 --- a/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponSauer.java +++ /dev/null @@ -1,138 +0,0 @@ -package com.hbm.render.item.weapon; - -import org.lwjgl.opengl.GL11; - -import com.hbm.main.ResourceManager; -import com.hbm.render.anim.HbmAnimations; - -import net.minecraft.client.Minecraft; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.ItemStack; -import net.minecraftforge.client.IItemRenderer; - -public class ItemRenderWeaponSauer implements IItemRenderer { - - public ItemRenderWeaponSauer() { } - - @Override - public boolean handleRenderType(ItemStack item, ItemRenderType type) { - switch(type) { - case EQUIPPED: - case EQUIPPED_FIRST_PERSON: - case ENTITY: - case INVENTORY: - return true; - default: return false; - } - } - - @Override - public boolean shouldUseRenderHelper(ItemRenderType type, ItemStack item, ItemRendererHelper helper) { - - return type == ItemRenderType.ENTITY && (helper == ItemRendererHelper.ENTITY_ROTATION || helper == ItemRendererHelper.ENTITY_BOBBING); - } - - @Override - public void renderItem(ItemRenderType type, ItemStack item, Object... data) { - - GL11.glPushMatrix(); - GL11.glEnable(GL11.GL_CULL_FACE); - GL11.glShadeModel(GL11.GL_SMOOTH); - - Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.sauergun_tex); - - EntityPlayer player = Minecraft.getMinecraft().thePlayer; - - switch(type) { - - case EQUIPPED_FIRST_PERSON: - - double[] recoil = HbmAnimations.getRelevantTransformation("SAUER_RECOIL"); - double[] tilt = HbmAnimations.getRelevantTransformation("SAUER_TILT"); - double[] cock = HbmAnimations.getRelevantTransformation("SAUER_COCK"); - double[] eject = HbmAnimations.getRelevantTransformation("SAUER_SHELL_EJECT"); - - double s0 = 0.5D; - GL11.glScaled(s0, s0, s0); - - GL11.glTranslatef(0.0F, -0.5F, 0.0F); - GL11.glRotatef(-100F, 0.0F, 1.0F, 0.0F); - GL11.glRotatef(20F, 1.0F, 0.0F, 0.0F); - - if(recoil != null) - GL11.glTranslated(0, 0, recoil[0]); - - if(player.isSneaking()) { - GL11.glRotatef(-3F, 0.0F, 0.0F, 1.0F); - GL11.glRotatef(2F, 0.0F, 1.0F, 0.0F); - GL11.glRotatef(3F, 1.0F, 0.0F, 0.0F); - GL11.glTranslatef(-2.0F, 0.5F, 0.3F); - } - - if(tilt != null) { - GL11.glTranslated(0, -5, 0); - GL11.glRotated(tilt[2] * -0.5, 1, 0, 0); - GL11.glTranslated(0, 5, 0); - GL11.glRotated(tilt[0], 0, 0, 1); - - GL11.glTranslated(0, 0, cock[0] * 2); - ResourceManager.sauergun.renderPart("Lever"); - GL11.glTranslated(0, 0, -cock[0] * 2); - - GL11.glTranslated(eject[2] * 10, -eject[2], 0); - GL11.glRotated(eject[2] * 90, -1, 0, 0); - ResourceManager.sauergun.renderPart("Shell"); - GL11.glRotated(eject[2] * 90, 1, 0, 0); - GL11.glTranslated(-eject[2] * 10, eject[2], 0); - - } else { - - ResourceManager.sauergun.renderPart("Lever"); - } - - break; - - case EQUIPPED: - - double scale = 0.5D; - GL11.glScaled(scale, scale, scale); - GL11.glRotatef(20F, 0.0F, 0.0F, 1.0F); - GL11.glRotatef(-170, 0.0F, 1.0F, 0.0F); - GL11.glRotatef(-15F, 1.0F, 0.0F, 0.0F); - GL11.glTranslatef(-1F, -0.3F, 0.0F); - ResourceManager.sauergun.renderPart("Lever"); - break; - - case ENTITY: - - double s1 = 0.25D; - GL11.glRotatef(90F, 0.0F, 1.0F, 0.0F); - GL11.glTranslatef(0.0F, 0.0F, 0.5F); - GL11.glScaled(s1, s1, s1); - ResourceManager.sauergun.renderPart("Lever"); - break; - - case INVENTORY: - - GL11.glEnable(GL11.GL_LIGHTING); - - double s = 2.25D; - GL11.glScaled(s, s, -s); - GL11.glTranslatef(4.0F, 4.5F, 0.0F); - GL11.glRotatef(180F, 1.0F, 0.0F, 0.0F); - GL11.glRotatef(90F, 0.0F, 1.0F, 0.0F); - GL11.glRotatef(45F, 1.0F, 0.0F, 0.0F); - ResourceManager.sauergun.renderPart("Lever"); - - break; - - default: break; - } - - ResourceManager.sauergun.renderPart("Gun"); - - GL11.glShadeModel(GL11.GL_FLAT); - - GL11.glPopMatrix(); - } -} diff --git a/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponShotty.java b/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponShotty.java deleted file mode 100644 index bcf4670e2..000000000 --- a/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponShotty.java +++ /dev/null @@ -1,113 +0,0 @@ -package com.hbm.render.item.weapon; - -import org.lwjgl.opengl.GL11; - -import com.hbm.config.WeaponConfig; -import com.hbm.items.weapon.ItemGunBase; -import com.hbm.main.ResourceManager; -import com.hbm.render.anim.HbmAnimations; -import com.hbm.render.anim.HbmAnimations.Animation; - -import net.minecraft.client.Minecraft; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.ItemStack; -import net.minecraftforge.client.IItemRenderer; - -public class ItemRenderWeaponShotty implements IItemRenderer { - - public ItemRenderWeaponShotty() { } - - @Override - public boolean handleRenderType(ItemStack item, ItemRenderType type) { - switch(type) { - case EQUIPPED: - case EQUIPPED_FIRST_PERSON: - case ENTITY: - return true; - case INVENTORY: - return false; - default: return false; - } - } - - @Override - public boolean shouldUseRenderHelper(ItemRenderType type, ItemStack item, ItemRendererHelper helper) { - - return type == ItemRenderType.ENTITY && (helper == ItemRendererHelper.ENTITY_ROTATION || helper == ItemRendererHelper.ENTITY_BOBBING); - } - - @Override - public void renderItem(ItemRenderType type, ItemStack item, Object... data) { - - GL11.glPushMatrix(); - GL11.glDisable(GL11.GL_CULL_FACE); - GL11.glShadeModel(GL11.GL_SMOOTH); - - Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.shotty_tex); - - EntityPlayer player = Minecraft.getMinecraft().thePlayer; - - switch(type) { - - case EQUIPPED_FIRST_PERSON: - - String animSuffix = WeaponConfig.linearAnimations ? "Lame" : ""; - - GL11.glScalef(0.5F, 0.5F, 0.5F); - GL11.glRotatef(20F, 0.0F, 0.0F, 1.0F); - GL11.glRotatef(-95F, 0.0F, 1.0F, 0.0F); - GL11.glTranslatef(-2.0F, 0.25F, -2.5F); - - HbmAnimations.applyRelevantTransformation("Body" + animSuffix); - ResourceManager.shotty.renderPart("Body"); - - HbmAnimations.applyRelevantTransformation("Barrel" + animSuffix); - ResourceManager.shotty.renderPart("Barrel"); - - // If we've run out of ammo, stop drawing the shells after ejection has completed - Animation anim = HbmAnimations.getRelevantAnim(); - int millis = anim != null ? (int)(System.currentTimeMillis() - anim.startMillis) : 0; - - if(ItemGunBase.getBeltSize(player, ItemGunBase.getBeltType(player, item, true)) > 0 || millis < 1000) { - GL11.glPushMatrix(); - HbmAnimations.applyRelevantTransformation("ShellL" + animSuffix); - ResourceManager.shotty.renderPart("ShellL"); - GL11.glPopMatrix(); - - GL11.glPushMatrix(); - HbmAnimations.applyRelevantTransformation("ShellR" + animSuffix); - ResourceManager.shotty.renderPart("ShellR"); - GL11.glPopMatrix(); - } - - break; - - case EQUIPPED: - - GL11.glRotatef(-170F, 0.0F, 1.0F, 0.0F); - GL11.glRotatef(-10F, 0.0F, 0.0F, 1.0F); - GL11.glRotatef(-10F, 1.0F, 0.0F, 0.0F); - GL11.glRotatef(5F, 0.0F, 1.0F, 0.0F); - GL11.glTranslatef(-0.4F, 0.0F, -0.5F); - GL11.glScaled(0.35, 0.35, 0.35); - ResourceManager.shotty.renderPart("Body"); - ResourceManager.shotty.renderPart("Barrel"); - - break; - - case ENTITY: - - GL11.glScaled(0.5, 0.5, 0.5); - GL11.glTranslatef(0.0F, 0.2F, 0.0F); - ResourceManager.shotty.renderPart("Body"); - ResourceManager.shotty.renderPart("Barrel"); - break; - - default: break; - } - - GL11.glShadeModel(GL11.GL_FLAT); - - GL11.glPopMatrix(); - } -} diff --git a/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponThompson.java b/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponThompson.java deleted file mode 100644 index f8bd5c12c..000000000 --- a/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponThompson.java +++ /dev/null @@ -1,91 +0,0 @@ -package com.hbm.render.item.weapon; - -import org.lwjgl.opengl.GL11; - -import com.hbm.main.ResourceManager; - -import net.minecraft.client.Minecraft; -import net.minecraft.item.ItemStack; -import net.minecraftforge.client.IItemRenderer; - -public class ItemRenderWeaponThompson implements IItemRenderer { - - public ItemRenderWeaponThompson() { } - - @Override - public boolean handleRenderType(ItemStack item, ItemRenderType type) { - switch(type) { - case EQUIPPED: - case EQUIPPED_FIRST_PERSON: - case ENTITY: - case INVENTORY: - return true; - default: return false; - } - } - - @Override - public boolean shouldUseRenderHelper(ItemRenderType type, ItemStack item, ItemRendererHelper helper) { - - return type == ItemRenderType.ENTITY && (helper == ItemRendererHelper.ENTITY_ROTATION || helper == ItemRendererHelper.ENTITY_BOBBING); - } - - @Override - public void renderItem(ItemRenderType type, ItemStack item, Object... data) { - - GL11.glPushMatrix(); - - GL11.glEnable(GL11.GL_CULL_FACE); - - Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.thompson_tex); - - switch(type) { - - case EQUIPPED_FIRST_PERSON: - - double s0 = 0.25D; - GL11.glRotated(25, 0, 0, 1); - GL11.glTranslated(0.5, -0.5, -0.5); - GL11.glRotated(-100, 0, 1, 0); - GL11.glScaled(s0, s0, s0); - - break; - - case EQUIPPED: - - double scale = 0.25D; - GL11.glScaled(scale, scale, scale); - GL11.glRotatef(20F, 0.0F, 0.0F, 1.0F); - GL11.glRotatef(-170, 0.0F, 1.0F, 0.0F); - GL11.glRotatef(-15F, 1.0F, 0.0F, 0.0F); - GL11.glTranslatef(-2F, -3F, -0.5F); - - break; - - case ENTITY: - - double s1 = 0.2D; - GL11.glScaled(s1, s1, s1); - - break; - - case INVENTORY: - - GL11.glEnable(GL11.GL_LIGHTING); - - double s = 1.75D; - GL11.glTranslated(4, 11, 0); - GL11.glRotated(90, 0, 1, 0); - GL11.glRotated(135, 1, 0, 0); - GL11.glScaled(s, s, -s); - - break; - - default: break; - } - - ResourceManager.thompson.renderAll(); - - GL11.glPopMatrix(); - } -} diff --git a/src/main/java/com/hbm/render/tileentity/RenderLandmine.java b/src/main/java/com/hbm/render/tileentity/RenderLandmine.java index 1ff79867b..4e8ee9def 100644 --- a/src/main/java/com/hbm/render/tileentity/RenderLandmine.java +++ b/src/main/java/com/hbm/render/tileentity/RenderLandmine.java @@ -19,20 +19,20 @@ public class RenderLandmine extends TileEntitySpecialRenderer { GL11.glTranslated(x + 0.5D, y, z + 0.5D); GL11.glEnable(GL11.GL_LIGHTING); GL11.glDisable(GL11.GL_CULL_FACE); + GL11.glEnable(GL12.GL_RESCALE_NORMAL); GL11.glRotatef(180, 0F, 1F, 0F); Block block = tileEntity.getWorldObj().getBlock(tileEntity.xCoord, tileEntity.yCoord, tileEntity.zCoord); if(block == ModBlocks.mine_ap) { - GL11.glEnable(GL12.GL_RESCALE_NORMAL); GL11.glScaled(0.375D, 0.375D, 0.375D); GL11.glTranslated(0, -0.0625 * 3.5, 0); BiomeGenBase biome = tileEntity.getWorldObj().getBiomeGenForCoords(tileEntity.xCoord, tileEntity.zCoord); if(tileEntity.getWorldObj().getHeightValue(tileEntity.xCoord, tileEntity.zCoord) > tileEntity.yCoord + 2) bindTexture(ResourceManager.mine_ap_stone_tex); else if(biome.getEnableSnow()) bindTexture(ResourceManager.mine_ap_snow_tex); else if(biome.temperature >= 1.5F && biome.rainfall <= 0.1F) bindTexture(ResourceManager.mine_ap_desert_tex); - else bindTexture(ResourceManager.mine_ap_grass_tex); + else bindTexture(ResourceManager.mine_ap_grass_tex); ResourceManager.mine_ap.renderAll(); } if(block == ModBlocks.mine_he) { @@ -43,8 +43,11 @@ public class RenderLandmine extends TileEntitySpecialRenderer { GL11.glShadeModel(GL11.GL_FLAT); } if(block == ModBlocks.mine_shrap) { + GL11.glEnable(GL12.GL_RESCALE_NORMAL); + GL11.glScaled(0.375D, 0.375D, 0.375D); + GL11.glTranslated(0, -0.0625 * 3.5, 0); bindTexture(ResourceManager.mine_shrap_tex); - ResourceManager.mine_he.renderAll(); + ResourceManager.mine_ap.renderAll(); } if(block == ModBlocks.mine_fat) { GL11.glScaled(0.25D, 0.25D, 0.25D); diff --git a/src/main/resources/assets/hbm/models/mine_he.obj b/src/main/resources/assets/hbm/models/mine_he.obj deleted file mode 100644 index d26f0d488..000000000 --- a/src/main/resources/assets/hbm/models/mine_he.obj +++ /dev/null @@ -1,376 +0,0 @@ -# Blender v2.76 (sub 0) OBJ File: 'mine_he.blend' -# www.blender.org -o Cylinder -v 0.000000 0.000000 -0.250000 -v 0.000000 0.125000 -0.250000 -v 0.125000 0.000000 -0.216506 -v 0.125000 0.125000 -0.216506 -v 0.216506 0.000000 -0.125000 -v 0.216506 0.125000 -0.125000 -v 0.250000 0.000000 0.000000 -v 0.250000 0.125000 0.000000 -v 0.216506 0.000000 0.125000 -v 0.216506 0.125000 0.125000 -v 0.125000 0.000000 0.216506 -v 0.125000 0.125000 0.216506 -v 0.000000 0.000000 0.250000 -v 0.000000 0.125000 0.250000 -v -0.125000 0.000000 0.216506 -v -0.125000 0.125000 0.216506 -v -0.216506 0.000000 0.125000 -v -0.216506 0.125000 0.125000 -v -0.250000 0.000000 0.000000 -v -0.250000 0.125000 0.000000 -v -0.216506 0.000000 -0.125000 -v -0.216506 0.125000 -0.125000 -v -0.125000 0.000000 -0.216506 -v -0.125000 0.125000 -0.216506 -v 0.100000 0.125000 -0.173205 -v -0.000000 0.125000 -0.200000 -v 0.173205 0.125000 -0.100000 -v 0.200000 0.125000 0.000000 -v 0.173205 0.125000 0.100000 -v 0.100000 0.125000 0.173205 -v 0.000000 0.125000 0.200000 -v -0.100000 0.125000 0.173205 -v -0.173205 0.125000 0.100000 -v -0.200000 0.125000 0.000000 -v -0.173205 0.125000 -0.100000 -v -0.100000 0.125000 -0.173205 -v 0.100000 0.110000 -0.173205 -v -0.000000 0.110000 -0.200000 -v 0.173205 0.110000 -0.100000 -v 0.200000 0.110000 0.000000 -v 0.173205 0.110000 0.100000 -v 0.100000 0.110000 0.173205 -v 0.000000 0.110000 0.200000 -v -0.100000 0.110000 0.173205 -v -0.173205 0.110000 0.100000 -v -0.200000 0.110000 0.000000 -v -0.173205 0.110000 -0.100000 -v -0.100000 0.110000 -0.173205 -v 0.070000 0.110000 -0.121244 -v -0.000000 0.110000 -0.140000 -v 0.121244 0.110000 -0.070000 -v 0.140000 0.110000 0.000000 -v 0.121244 0.110000 0.070000 -v 0.070000 0.110000 0.121244 -v 0.000000 0.110000 0.140000 -v -0.070000 0.110000 0.121244 -v -0.121244 0.110000 0.070000 -v -0.140000 0.110000 0.000000 -v -0.121244 0.110000 -0.070000 -v -0.070000 0.110000 -0.121244 -v 0.070000 0.125000 -0.121244 -v -0.000000 0.125000 -0.140000 -v 0.121244 0.125000 -0.070000 -v 0.140000 0.125000 0.000000 -v 0.121244 0.125000 0.070000 -v 0.070000 0.125000 0.121244 -v 0.000000 0.125000 0.140000 -v -0.070000 0.125000 0.121244 -v -0.121244 0.125000 0.070000 -v -0.140000 0.125000 0.000000 -v -0.121244 0.125000 -0.070000 -v -0.070000 0.125000 -0.121244 -v 0.035000 0.125000 -0.060622 -v -0.000000 0.125000 -0.070000 -v 0.060622 0.125000 -0.035000 -v 0.070000 0.125000 0.000000 -v 0.060622 0.125000 0.035000 -v 0.035000 0.125000 0.060622 -v 0.000000 0.125000 0.070000 -v -0.035000 0.125000 0.060622 -v -0.060622 0.125000 0.035000 -v -0.070000 0.125000 0.000000 -v -0.060622 0.125000 -0.035000 -v -0.035000 0.125000 -0.060622 -v 0.021000 0.150000 -0.036373 -v -0.000000 0.150000 -0.042000 -v 0.036373 0.150000 -0.021000 -v 0.042000 0.150000 0.000000 -v 0.036373 0.150000 0.021000 -v 0.021000 0.150000 0.036373 -v 0.000000 0.150000 0.042000 -v -0.021000 0.150000 0.036373 -v -0.036373 0.150000 0.021000 -v -0.042000 0.150000 0.000000 -v -0.036373 0.150000 -0.021000 -v -0.021000 0.150000 -0.036373 -vt 0.960752 0.210383 -vt 0.779713 0.210383 -vt 0.779713 0.035513 -vt 0.942646 0.277949 -vt 0.694075 0.517821 -vt 0.018428 0.336781 -vt 0.265732 0.089478 -vt 0.942648 0.298932 -vt 0.797817 0.298932 -vt 0.797814 0.277947 -vt 0.920923 0.380009 -vt 0.819542 0.380009 -vt 0.920923 0.400994 -vt 0.819542 0.400994 -vt 0.895578 0.495584 -vt 0.844887 0.495584 -vt 0.762072 0.729031 -vt 0.791336 0.772633 -vt 0.769830 0.794139 -vt 0.761958 0.823517 -vt 0.879471 0.823517 -vt 0.850093 0.874402 -vt 0.915201 0.764875 -vt 0.871599 0.794139 -vt 0.850093 0.772633 -vt 0.879357 0.918004 -vt 0.871599 0.852895 -vt 0.709566 0.819974 -vt 0.722685 0.771011 -vt 0.873221 0.725488 -vt 0.820715 0.764761 -vt 0.931864 0.827060 -vt 0.918744 0.876024 -vt 0.709566 0.827060 -vt 0.769830 0.852895 -vt 0.768208 0.921547 -vt 0.791336 0.874402 -vt 0.820715 0.882274 -vt 0.817172 0.712368 -vt 0.918744 0.771011 -vt 0.931864 0.819974 -vt 0.762072 0.918004 -vt 0.726228 0.882160 -vt 0.824257 0.934666 -vt 0.960752 0.035512 -vt 0.446771 0.089478 -vt 0.603555 0.179997 -vt 0.694075 0.336782 -vt 0.603555 0.674605 -vt 0.446771 0.765124 -vt 0.265732 0.765124 -vt 0.108948 0.674605 -vt 0.018428 0.517820 -vt 0.108948 0.179997 -vt 0.726228 0.764875 -vt 0.879357 0.729031 -vt 0.915201 0.882160 -vt 0.824257 0.712368 -vt 0.722685 0.876024 -vt 0.817172 0.934666 -vt 0.768208 0.725488 -vt 0.873221 0.921547 -vn 0.258800 0.000000 -0.965900 -vn 0.707100 0.000000 -0.707100 -vn 0.965900 0.000000 -0.258800 -vn 0.965900 0.000000 0.258800 -vn 0.707100 0.000000 0.707100 -vn 0.258800 0.000000 0.965900 -vn -0.258800 0.000000 0.965900 -vn -0.707100 0.000000 0.707100 -vn -0.965900 0.000000 0.258800 -vn -0.965900 0.000000 -0.258800 -vn 0.000000 1.000000 0.000000 -vn -0.258800 0.000000 -0.965900 -vn -0.707100 0.000000 -0.707100 -vn 0.000000 -1.000000 0.000000 -vn -0.655700 0.734300 0.175700 -vn 0.175700 0.734300 0.655700 -vn 0.655700 0.734300 -0.175700 -vn -0.655700 0.734300 -0.175700 -vn -0.175700 0.734300 0.655700 -vn 0.655700 0.734300 0.175700 -vn -0.480000 0.734300 -0.480000 -vn 0.175700 0.734300 -0.655700 -vn -0.480000 0.734300 0.480000 -vn 0.480000 0.734300 0.480000 -vn -0.175700 0.734300 -0.655700 -vn 0.480000 0.734300 -0.480000 -s off -f 2/1/1 4/2/1 3/3/1 -f 4/1/2 6/2/2 5/3/2 -f 6/1/3 8/2/3 7/3/3 -f 8/1/4 10/2/4 9/3/4 -f 10/1/5 12/2/5 11/3/5 -f 12/1/6 14/2/6 13/3/6 -f 14/1/7 16/2/7 15/3/7 -f 16/1/8 18/2/8 17/3/8 -f 18/1/9 20/2/9 19/3/9 -f 20/1/10 22/2/10 21/3/10 -f 10/2/11 8/1/11 28/4/11 -f 24/1/12 2/2/12 1/3/12 -f 22/1/13 24/2/13 23/3/13 -f 7/5/14 19/6/14 23/7/14 -f 27/4/9 39/8/9 40/9/9 -f 24/1/11 36/4/11 26/10/11 -f 2/1/11 26/4/11 25/10/11 -f 8/2/11 6/1/11 27/4/11 -f 22/1/11 35/4/11 36/10/11 -f 4/1/11 25/4/11 27/10/11 -f 20/1/11 34/4/11 35/10/11 -f 18/1/11 33/4/11 34/10/11 -f 16/1/11 32/4/11 33/10/11 -f 14/1/11 31/4/11 32/10/11 -f 14/2/11 12/1/11 30/4/11 -f 12/2/11 10/1/11 29/4/11 -f 39/8/11 51/11/11 52/12/11 -f 34/4/4 46/8/4 47/9/4 -f 31/4/1 43/8/1 44/9/1 -f 28/4/10 40/8/10 41/9/10 -f 35/4/5 47/8/5 48/9/5 -f 26/4/7 38/8/7 37/9/7 -f 32/4/2 44/8/2 45/9/2 -f 29/4/13 41/8/13 42/9/13 -f 36/4/6 48/8/6 38/9/6 -f 25/4/8 37/8/8 39/9/8 -f 33/4/3 45/8/3 46/9/3 -f 30/4/12 42/8/12 43/9/12 -f 54/11/6 66/13/6 67/14/6 -f 46/8/11 58/11/11 59/12/11 -f 43/8/11 55/11/11 56/12/11 -f 40/8/11 52/11/11 53/12/11 -f 47/8/11 59/11/11 60/12/11 -f 37/9/11 38/8/11 50/11/11 -f 44/8/11 56/11/11 57/12/11 -f 42/9/11 41/8/11 53/11/11 -f 38/9/11 48/8/11 60/11/11 -f 37/8/11 49/11/11 51/12/11 -f 45/8/11 57/11/11 58/12/11 -f 42/8/11 54/11/11 55/12/11 -f 66/13/11 78/15/11 79/16/11 -f 51/11/3 63/13/3 64/14/3 -f 58/11/10 70/13/10 71/14/10 -f 55/11/7 67/13/7 68/14/7 -f 52/11/4 64/13/4 65/14/4 -f 59/11/13 71/13/13 72/14/13 -f 50/11/1 62/13/1 61/14/1 -f 56/11/8 68/13/8 69/14/8 -f 53/11/5 65/13/5 66/14/5 -f 60/11/12 72/13/12 62/14/12 -f 49/11/2 61/13/2 63/14/2 -f 57/11/9 69/13/9 70/14/9 -f 81/17/15 93/18/15 94/19/15 -f 63/13/11 75/15/11 76/16/11 -f 70/13/11 82/15/11 83/16/11 -f 67/13/11 79/15/11 80/16/11 -f 64/13/11 76/15/11 77/16/11 -f 71/13/11 83/15/11 84/16/11 -f 62/13/11 74/15/11 73/16/11 -f 68/13/11 80/15/11 81/16/11 -f 66/14/11 65/13/11 77/15/11 -f 62/14/11 72/13/11 84/15/11 -f 61/13/11 73/15/11 75/16/11 -f 69/13/11 81/15/11 82/16/11 -f 95/20/11 89/21/11 87/22/11 -f 78/23/16 90/24/16 91/25/16 -f 75/26/17 87/22/17 88/27/17 -f 83/28/18 82/29/18 94/19/18 -f 79/30/19 91/25/19 92/31/19 -f 77/32/20 76/33/20 88/27/20 -f 83/34/21 95/20/21 96/35/21 -f 74/36/22 86/37/22 85/38/22 -f 80/39/23 92/31/23 93/18/23 -f 78/40/24 77/41/24 89/21/24 -f 74/42/25 84/43/25 96/35/25 -f 73/44/26 85/38/26 87/22/26 -f 1/45/1 2/1/1 3/3/1 -f 3/45/2 4/1/2 5/3/2 -f 5/45/3 6/1/3 7/3/3 -f 7/45/4 8/1/4 9/3/4 -f 9/45/5 10/1/5 11/3/5 -f 11/45/6 12/1/6 13/3/6 -f 13/45/7 14/1/7 15/3/7 -f 15/45/8 16/1/8 17/3/8 -f 17/45/9 18/1/9 19/3/9 -f 19/45/10 20/1/10 21/3/10 -f 29/10/11 10/2/11 28/4/11 -f 23/45/12 24/1/12 1/3/12 -f 21/45/13 22/1/13 23/3/13 -f 23/7/14 1/46/14 3/47/14 -f 3/47/14 5/48/14 7/5/14 -f 7/5/14 9/49/14 11/50/14 -f 11/50/14 13/51/14 15/52/14 -f 15/52/14 17/53/14 19/6/14 -f 19/6/14 21/54/14 23/7/14 -f 23/7/14 3/47/14 7/5/14 -f 7/5/14 11/50/14 15/52/14 -f 15/52/14 19/6/14 7/5/14 -f 28/10/9 27/4/9 40/9/9 -f 2/2/11 24/1/11 26/10/11 -f 4/2/11 2/1/11 25/10/11 -f 28/10/11 8/2/11 27/4/11 -f 24/2/11 22/1/11 36/10/11 -f 6/2/11 4/1/11 27/10/11 -f 22/2/11 20/1/11 35/10/11 -f 20/2/11 18/1/11 34/10/11 -f 18/2/11 16/1/11 33/10/11 -f 16/2/11 14/1/11 32/10/11 -f 31/10/11 14/2/11 30/4/11 -f 30/10/11 12/2/11 29/4/11 -f 40/9/11 39/8/11 52/12/11 -f 35/10/4 34/4/4 47/9/4 -f 32/10/1 31/4/1 44/9/1 -f 29/10/10 28/4/10 41/9/10 -f 36/10/5 35/4/5 48/9/5 -f 25/10/7 26/4/7 37/9/7 -f 33/10/2 32/4/2 45/9/2 -f 30/10/13 29/4/13 42/9/13 -f 26/10/6 36/4/6 38/9/6 -f 27/10/8 25/4/8 39/9/8 -f 34/10/3 33/4/3 46/9/3 -f 31/10/12 30/4/12 43/9/12 -f 55/12/6 54/11/6 67/14/6 -f 47/9/11 46/8/11 59/12/11 -f 44/9/11 43/8/11 56/12/11 -f 41/9/11 40/8/11 53/12/11 -f 48/9/11 47/8/11 60/12/11 -f 49/12/11 37/9/11 50/11/11 -f 45/9/11 44/8/11 57/12/11 -f 54/12/11 42/9/11 53/11/11 -f 50/12/11 38/9/11 60/11/11 -f 39/9/11 37/8/11 51/12/11 -f 46/9/11 45/8/11 58/12/11 -f 43/9/11 42/8/11 55/12/11 -f 67/14/11 66/13/11 79/16/11 -f 52/12/3 51/11/3 64/14/3 -f 59/12/10 58/11/10 71/14/10 -f 56/12/7 55/11/7 68/14/7 -f 53/12/4 52/11/4 65/14/4 -f 60/12/13 59/11/13 72/14/13 -f 49/12/1 50/11/1 61/14/1 -f 57/12/8 56/11/8 69/14/8 -f 54/12/5 53/11/5 66/14/5 -f 50/12/12 60/11/12 62/14/12 -f 51/12/2 49/11/2 63/14/2 -f 58/12/9 57/11/9 70/14/9 -f 82/55/15 81/17/15 94/19/15 -f 64/14/11 63/13/11 76/16/11 -f 71/14/11 70/13/11 83/16/11 -f 68/14/11 67/13/11 80/16/11 -f 65/14/11 64/13/11 77/16/11 -f 72/14/11 71/13/11 84/16/11 -f 61/14/11 62/13/11 73/16/11 -f 69/14/11 68/13/11 81/16/11 -f 78/16/11 66/14/11 77/15/11 -f 74/16/11 62/14/11 84/15/11 -f 63/14/11 61/13/11 75/16/11 -f 70/14/11 69/13/11 82/16/11 -f 87/22/11 85/38/11 95/20/11 -f 86/37/11 96/35/11 95/20/11 -f 95/20/11 94/19/11 93/18/11 -f 93/18/11 92/31/11 95/20/11 -f 91/25/11 90/24/11 89/21/11 -f 89/21/11 88/27/11 87/22/11 -f 85/38/11 86/37/11 95/20/11 -f 95/20/11 92/31/11 91/25/11 -f 91/25/11 89/21/11 95/20/11 -f 79/56/16 78/23/16 91/25/16 -f 76/57/17 75/26/17 88/27/17 -f 95/20/18 83/28/18 94/19/18 -f 80/58/19 79/30/19 92/31/19 -f 89/21/20 77/32/20 88/27/20 -f 84/59/21 83/34/21 96/35/21 -f 73/60/22 74/36/22 85/38/22 -f 81/61/23 80/39/23 93/18/23 -f 90/24/24 78/40/24 89/21/24 -f 86/37/25 74/42/25 96/35/25 -f 75/62/26 73/44/26 87/22/26 diff --git a/src/main/resources/assets/hbm/textures/models/bombs/mine_ap_base.png b/src/main/resources/assets/hbm/textures/models/bombs/mine_ap_base.png deleted file mode 100644 index 0d406ff1269bd6c7951a26e5353e92fc1848a736..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 348 zcmV-i0i*tjP)X1^@s6ccHC$00004b3#c}2nYxW zdBK#~Fb?S;AQF(<1~2hRnkoLXxD zfDpp^X1^@s6ccHC$00004b3#c}2nYxW zd7b&> z2`Dr7Wy|8v?qe4qpQagMK$Ro}0E7@DV+@>g6h%Qy-eHs1T_3guQ7O>1EdU^jv~MWpT;1lX%d-n;o yy|w%1Ujug&{$VckB3@kTt0W1|rhAu@Q0y;7Px#1ZP1_K>z@;j|==^1poj532;bRa{vGf5&!@T5&_cPe*6Fc02y>eSaefwW^{L9 za%BK;VQFr3E^cLXAT%y8E;2FkAZe8V00JmUL_t(oN5z*>j>0eyLpd2x4hEEqXXQ!{ z88d;YgtQ-3NPv#Vv7PoX#yI@v)h>QMpNFo~>9mdc`Et2D*Z57Rv0VVXI3Si~8M>JJ z`p*HVO9~#3$G4&??tp#@K;6SYGBI0U*LB?Q_rZ9(-M0DT@fdt=ZviwjQk0H;WE-+@ z0@8dp0N-m^Neuu_-Eyg80QmYY08YJ%YR>55a|WO~N491c0IcVGE&vEJw}~RT6|Rd7 zfEJu0{lV$dZ<6Mj7I1<-m}hdqKD3 zn++>}0zls(!pd?UNXdxi-{N?>1uhh4fFe?P6~U>E767+lYC&@VxDdVb*%94lz=NR@ zPP(8vemx0E$Xx)uaDpHQW*SJ^VM^=mEpXpwV(BIXjNd#(CtU!t`&9IjgtOpC4a`EQ zvSyos^l6?2pMoe4A@V~1X#?KB#-3^`Cy?H%XKN_z`tA;fy60q?SM2&}Xj z&@ns%k^m~@&m7VMP`y037V<1etL2M|zag~&d<&xL>1Xy(LL|2jBLtY|L2AHHxjg++ efIO~$W8e>!17dEXPZj0>0000-V@`78uqju3wZNxTp3gsD%p%S*MD5VTEvnHk#w z_|KP}Vs(sw8Go;i+!3w8YsH8F+zkNylmN_tF{W{IM*y%|F#x!I@;(Iti-_P2f0^x^ zh1q!s1h&k2-+Zr##P%*^?I{7wOiP&o0r==a*4EqY77>9l1~ybsO2HTd0wf{=?vCC& z+}F6>9b+@f`}_TFnxUB?B4FE|hyX+bPQx_j?s&akU{DbOGn}wR$x!GQJ4gjy$3#~Pn8Cq*7rR)~cQ7Ppx2qMKjF$VftY9BoiNuodsXfQh@q?$RO zk1exxQ7`KfntU}2H<n2#z2+2EKJ%^JI)8Cl-Yo2q{}cNoLMXGKIvdH zQ|c7i-un(cK+2HN9`Tt~o{%T5^Ju`N9EXy(z1Axj*l<)k}(o)ANPBt-J!$26A z_8KBtdBZ4mqs|6(tjKV!YCyYZ)`eCD05}^D4Ur0MHZ+ihO3oE-g;%>}?;WbQNdcp$ z0CSJenXsgorA|rO(X)k8ptFVVolr7*8s`S`t396Yj}YR%*4mCvMR<3J(e9+3O|N|F z$(bK@(xZxC#q3IzMiefEir+*>%TxtNw5W1LL-muzTyvC~sR~jBrN+oPZSY*6fwQ{u z`2yHFp?10V`@MtF%<%K`GdrcyP-~q5sYWPX4VKC1G@S_OnUAAcCmgeAt<6cO!-dau z;<4Pc8uGxJ8c=9;@MOg++{~H*9yKcV1f?X8