diff --git a/src/main/java/com/hbm/blocks/ModBlocks.java b/src/main/java/com/hbm/blocks/ModBlocks.java index a50fafffc..214fd06f4 100644 --- a/src/main/java/com/hbm/blocks/ModBlocks.java +++ b/src/main/java/com/hbm/blocks/ModBlocks.java @@ -778,6 +778,8 @@ public class ModBlocks { public static Block crane_router; public static Block crane_boxer; public static Block crane_unboxer; + + public static Block fan; public static Block chain; @@ -1900,6 +1902,7 @@ public class ModBlocks { crane_router = new CraneRouter().setBlockName("crane_router").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab); crane_boxer = new CraneBoxer().setBlockName("crane_boxer").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab); crane_unboxer = new CraneUnboxer().setBlockName("crane_unboxer").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab); + fan = new MachineFan().setBlockName("fan").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); chain = new BlockChain(Material.iron).setBlockName("dungeon_chain").setHardness(0.25F).setResistance(2.0F).setCreativeTab(MainRegistry.blockTab).setBlockTextureName(RefStrings.MODID + ":chain"); @@ -3094,11 +3097,11 @@ public class ModBlocks { GameRegistry.registerBlock(crane_boxer, crane_boxer.getUnlocalizedName()); GameRegistry.registerBlock(crane_unboxer, crane_unboxer.getUnlocalizedName()); GameRegistry.registerBlock(conveyor, conveyor.getUnlocalizedName()); - //GameRegistry.registerBlock(conveyor_classic, conveyor_classic.getUnlocalizedName()); GameRegistry.registerBlock(conveyor_double, conveyor_double.getUnlocalizedName()); GameRegistry.registerBlock(conveyor_triple, conveyor_triple.getUnlocalizedName()); GameRegistry.registerBlock(conveyor_chute, conveyor_chute.getUnlocalizedName()); GameRegistry.registerBlock(conveyor_lift, conveyor_lift.getUnlocalizedName()); + GameRegistry.registerBlock(fan, fan.getUnlocalizedName()); GameRegistry.registerBlock(chain, chain.getUnlocalizedName()); GameRegistry.registerBlock(ladder_sturdy, ladder_sturdy.getUnlocalizedName()); diff --git a/src/main/java/com/hbm/blocks/machine/MachineFan.java b/src/main/java/com/hbm/blocks/machine/MachineFan.java new file mode 100644 index 000000000..4e3356f12 --- /dev/null +++ b/src/main/java/com/hbm/blocks/machine/MachineFan.java @@ -0,0 +1,117 @@ +package com.hbm.blocks.machine; + +import java.util.List; + +import com.hbm.main.MainRegistry; + +import cpw.mods.fml.common.registry.EntityRegistry; +import cpw.mods.fml.common.registry.EntityRegistry.EntityRegistration; +import net.minecraft.block.BlockContainer; +import net.minecraft.block.BlockPistonBase; +import net.minecraft.block.material.Material; +import net.minecraft.entity.Entity; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.entity.item.EntityItem; +import net.minecraft.item.ItemStack; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.AxisAlignedBB; +import net.minecraft.world.IBlockAccess; +import net.minecraft.world.World; +import net.minecraftforge.common.util.ForgeDirection; + +public class MachineFan extends BlockContainer { + + public MachineFan() { + super(Material.iron); + } + + @Override + public TileEntity createNewTileEntity(World world, int meta) { + return new TileEntityFan(); + } + + @Override + public void onBlockPlacedBy(World world, int x, int y, int z, EntityLivingBase player, ItemStack stack) { + int l = BlockPistonBase.determineOrientation(world, x, y, z, player); + world.setBlockMetadataWithNotify(x, y, z, l, 2); + } + + @Override + public int getRenderType(){ + return -1; + } + + @Override + public boolean isOpaqueCube() { + return false; + } + + @Override + public boolean renderAsNormalBlock() { + return false; + } + + @Override + public boolean isSideSolid(IBlockAccess world, int x, int y, int z, ForgeDirection side) { + int meta = world.getBlockMetadata(x, y, z); + + if(side == ForgeDirection.UP || side == ForgeDirection.DOWN) return meta != 0 && meta != 1; + if(side == ForgeDirection.NORTH || side == ForgeDirection.SOUTH) return meta != 2 && meta != 3; + if(side == ForgeDirection.EAST || side == ForgeDirection.WEST) return meta != 4 && meta != 5; + + return false; + } + + public static class TileEntityFan extends TileEntity { + + public float spin; + public float prevSpin; + + @Override + public void updateEntity() { + + this.prevSpin = this.spin; + + if(worldObj.isBlockIndirectlyGettingPowered(xCoord, yCoord, zCoord)) { + ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata()); + + int range = 10; + int effRange = 0; + double push = 0.1; + + for(int i = 1; i <= range; i++) { + if(worldObj.getBlock(xCoord + dir.offsetX * i, yCoord + dir.offsetY * i, zCoord + dir.offsetZ * i).isNormalCube()) { + break; + } + + effRange = i; + } + + int x = dir.offsetX * effRange; + int y = dir.offsetY * effRange; + int z = dir.offsetZ * effRange; + + List affected = worldObj.getEntitiesWithinAABB(Entity.class, AxisAlignedBB.getBoundingBox(xCoord + 0.5 + Math.min(x, 0), yCoord + 0.5 + Math.min(y, 0), zCoord + 0.5 + Math.min(z, 0), xCoord + 0.5 + Math.max(x, 0), yCoord + 0.5 + Math.max(y, 0), zCoord + 0.5 + Math.max(z, 0)).expand(0.5, 0.5, 0.5)); + + for(Entity e : affected) { + + e.motionX += dir.offsetX * push; + e.motionY += dir.offsetY * push; + e.motionZ += dir.offsetZ * push; + } + + if(worldObj.isRemote && worldObj.rand.nextInt(30) == 0) { + double speed = 0.2; + worldObj.spawnParticle("cloud", xCoord + 0.5 + dir.offsetX * 0.5, yCoord + 0.5 + dir.offsetY * 0.5, zCoord + 0.5 + dir.offsetZ * 0.5, dir.offsetX * speed, dir.offsetY * speed, dir.offsetZ * speed); + } + + this.spin += 30; + } + + if(this.spin >= 360) { + this.prevSpin -= 360; + this.spin -= 360; + } + } + } +} diff --git a/src/main/java/com/hbm/entity/particle/EntityOilSpillFX.java b/src/main/java/com/hbm/entity/particle/EntityOilSpillFX.java index 249e16e14..4f932ece6 100644 --- a/src/main/java/com/hbm/entity/particle/EntityOilSpillFX.java +++ b/src/main/java/com/hbm/entity/particle/EntityOilSpillFX.java @@ -1,74 +1,74 @@ package com.hbm.entity.particle; +import net.minecraft.nbt.NBTTagCompound; import net.minecraft.world.World; -public class EntityOilSpillFX extends EntityModFX -{ - float smokeParticleScale; - public int particleAge; - public int maxAge; - public EntityOilSpillFX(World world) { - super(world, 0, 0, 0); - } +public class EntityOilSpillFX extends EntityModFX { + float smokeParticleScale; + public int particleAge; + public int maxAge; - public EntityOilSpillFX(World p_i1225_1_, double p_i1225_2_, double p_i1225_4_, double p_i1225_6_, double p_i1225_8_, double p_i1225_10_, double p_i1225_12_) - { - this(p_i1225_1_, p_i1225_2_, p_i1225_4_, p_i1225_6_, p_i1225_8_, p_i1225_10_, p_i1225_12_, 1.0F); - } + public EntityOilSpillFX(World world) { + super(world, 0, 0, 0); + } - public EntityOilSpillFX(World p_i1226_1_, double p_i1226_2_, double p_i1226_4_, double p_i1226_6_, double p_i1226_8_, double p_i1226_10_, double p_i1226_12_, float p_i1226_14_) - { - super(p_i1226_1_, p_i1226_2_, p_i1226_4_, p_i1226_6_, 0.0D, 0.0D, 0.0D); - this.motionX *= 0.10000000149011612D; - this.motionY *= 0.10000000149011612D; - this.motionZ *= 0.10000000149011612D; - this.motionX += p_i1226_8_; - this.motionY += p_i1226_10_; - this.motionZ += p_i1226_12_; - this.particleRed = this.particleGreen = this.particleBlue = (float)(Math.random() * 0.30000001192092896D); - this.particleScale *= 0.75F; - this.particleScale *= p_i1226_14_; - this.smokeParticleScale = this.particleScale; - //this.particleMaxAge = (int)(8.0D / (Math.random() * 0.8D + 0.2D)); - //this.particleMaxAge = (int)((float)this.particleMaxAge * p_i1226_14_); - this.noClip = false; - } + public EntityOilSpillFX(World p_i1225_1_, double p_i1225_2_, double p_i1225_4_, double p_i1225_6_, double p_i1225_8_, double p_i1225_10_, double p_i1225_12_) { + this(p_i1225_1_, p_i1225_2_, p_i1225_4_, p_i1225_6_, p_i1225_8_, p_i1225_10_, p_i1225_12_, 1.0F); + } - /** - * Called to update the entity's position/logic. - */ - - @Override - public void onUpdate() - { - this.prevPosX = this.posX; - this.prevPosY = this.posY; - this.prevPosZ = this.posZ; - - if(maxAge < 15) - { - maxAge = rand.nextInt(4) + 15; - } + public EntityOilSpillFX(World p_i1226_1_, double p_i1226_2_, double p_i1226_4_, double p_i1226_6_, double p_i1226_8_, double p_i1226_10_, double p_i1226_12_, float p_i1226_14_) { + super(p_i1226_1_, p_i1226_2_, p_i1226_4_, p_i1226_6_, 0.0D, 0.0D, 0.0D); + this.motionX *= 0.10000000149011612D; + this.motionY *= 0.10000000149011612D; + this.motionZ *= 0.10000000149011612D; + this.motionX += p_i1226_8_; + this.motionY += p_i1226_10_; + this.motionZ += p_i1226_12_; + this.particleRed = this.particleGreen = this.particleBlue = (float) (Math.random() * 0.30000001192092896D); + this.particleScale *= 0.75F; + this.particleScale *= p_i1226_14_; + this.smokeParticleScale = this.particleScale; + this.noClip = false; + } - this.particleAge++; - - if (this.particleAge >= maxAge) - { - this.setDead(); - } + @Override + public void onUpdate() { + this.prevPosX = this.posX; + this.prevPosY = this.posY; + this.prevPosZ = this.posZ; - this.motionX *= 0.7599999785423279D; - this.motionY *= 0.7599999785423279D; - this.motionZ *= 0.7599999785423279D; + if(maxAge < 15) { + maxAge = rand.nextInt(4) + 15; + } - if (this.onGround) - { - this.motionX *= 0.699999988079071D; - this.motionZ *= 0.699999988079071D; - } + this.particleAge++; - this.posX += this.motionX; - this.posY += this.motionY; - this.posZ += this.motionZ; - } + if(this.particleAge >= maxAge) { + this.setDead(); + } + + this.motionX *= 0.7599999785423279D; + this.motionY *= 0.7599999785423279D; + this.motionZ *= 0.7599999785423279D; + + if(this.onGround) { + this.motionX *= 0.699999988079071D; + this.motionZ *= 0.699999988079071D; + } + + this.posX += this.motionX; + this.posY += this.motionY; + this.posZ += this.motionZ; + } + + @Override + public boolean writeToNBTOptional(NBTTagCompound nbt) { + return false; + } + + @Override + public void readEntityFromNBT(NBTTagCompound nbt) { + super.readEntityFromNBT(nbt); + this.setDead(); + } } diff --git a/src/main/java/com/hbm/entity/particle/EntityOrangeFX.java b/src/main/java/com/hbm/entity/particle/EntityOrangeFX.java index 60919e652..8ca6eee37 100644 --- a/src/main/java/com/hbm/entity/particle/EntityOrangeFX.java +++ b/src/main/java/com/hbm/entity/particle/EntityOrangeFX.java @@ -88,10 +88,12 @@ public class EntityOrangeFX extends EntityModFX { } } + @Override public boolean writeToNBTOptional(NBTTagCompound nbt) { return false; } + @Override public void readEntityFromNBT(NBTTagCompound nbt) { super.readEntityFromNBT(nbt); this.setDead(); diff --git a/src/main/java/com/hbm/handler/guncfg/Gun50BMGFactory.java b/src/main/java/com/hbm/handler/guncfg/Gun50BMGFactory.java index 50544d38f..c7d290c35 100644 --- a/src/main/java/com/hbm/handler/guncfg/Gun50BMGFactory.java +++ b/src/main/java/com/hbm/handler/guncfg/Gun50BMGFactory.java @@ -58,15 +58,14 @@ public class Gun50BMGFactory { bullet.spread = 0.0F; bullet.dmgMax = 500F; bullet.dmgMin = 450F; - bullet.headshotMult = 2.5f; + bullet.headshotMult = 2.5F; bullet.wear = 2000; - bullet.velocity = 100; + bullet.velocity = 10F; bullet.doesPenetrate = true; bullet.leadChance = 20; - bullet.incendiary = 10; - bullet.blockDamage = true; - bullet.bImpact = (projectile, x, y, z) -> projectile.worldObj.newExplosion(projectile, x, y, z, 5.0F, true, false); + bullet.blockDamage = false; + bullet.bImpact = (projectile, x, y, z) -> projectile.worldObj.newExplosion(projectile, x, y, z, 2.0F, false, false); bullet.spentCasing = CASINGLUNA.clone().register("LunaStock"); @@ -80,6 +79,7 @@ public class Gun50BMGFactory { bullet.ammo.meta = 1; bullet.incendiary = 10; + bullet.bImpact = (projectile, x, y, z) -> projectile.worldObj.newExplosion(projectile, x, y, z, 5.0F, true, false); bullet.spentCasing = CASINGLUNA.clone().register("LunaInc"); @@ -93,6 +93,7 @@ public class Gun50BMGFactory { bullet.ammo.meta = 2; bullet.explosive = 25; + bullet.destroysBlocks = true; bullet.bImpact = (projectile, x, y, z) -> projectile.worldObj.newExplosion(projectile, x, y, z, 25.0F, true, false); bullet.spentCasing = CASINGLUNA.clone().register("LunaExp"); @@ -184,7 +185,7 @@ public class Gun50BMGFactory { config.reloadDuration = 15; config.firingMode = GunConfiguration.FIRE_MANUAL; config.roundsPerCycle = 1; - config.firingSound = "hbm:weapon.heavyShootPB3"; + config.firingSound = "hbm:weapon.hicalShot"; config.firingPitch = 0.75F; config.ammoCap = 4; config.reloadType = GunConfiguration.RELOAD_SINGLE; 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 a3704fdeb..4becbaf45 100644 --- a/src/main/java/com/hbm/inventory/recipes/anvil/AnvilRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/anvil/AnvilRecipes.java @@ -243,7 +243,7 @@ public class AnvilRecipes { new ComparableStack(ModItems.pipes_steel, 1), new OreDictStack(TI.ingot(), 12), new OreDictStack(CU.ingot(), 8) - }, new AnvilOutput(new ItemStack(ModBlocks.heater_oilburner))).setTier(3)); + }, new AnvilOutput(new ItemStack(ModBlocks.heater_oilburner))).setTier(2)); constructionRecipes.add(new AnvilConstructionRecipe( new AStack[] { diff --git a/src/main/java/com/hbm/items/armor/ArmorNo9.java b/src/main/java/com/hbm/items/armor/ArmorNo9.java index 754cf6dec..8e58f6552 100644 --- a/src/main/java/com/hbm/items/armor/ArmorNo9.java +++ b/src/main/java/com/hbm/items/armor/ArmorNo9.java @@ -7,6 +7,7 @@ import java.util.List; import java.util.Map.Entry; import java.util.Set; +import com.hbm.extprop.HbmLivingProps; import com.hbm.extprop.HbmPlayerProps; import com.hbm.lib.Library; import com.hbm.render.model.ModelNo9; @@ -19,6 +20,7 @@ import net.minecraft.client.model.ModelBiped; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.EnumChatFormatting; import net.minecraft.util.MovingObjectPosition; import net.minecraft.util.Vec3; @@ -34,11 +36,13 @@ public class ArmorNo9 extends ArmorModel implements IAttackHandler, IDamageHandl public ArmorNo9(ArmorMaterial armorMaterial, int armorType) { super(armorMaterial, armorType); + this.setMaxDamage(0); } @Override public void addInformation(ItemStack itemstack, EntityPlayer player, List list, boolean bool) { list.add(EnumChatFormatting.BLUE + "+0.5 DT"); + list.add(EnumChatFormatting.YELLOW + "Lets you breathe coal, neat!"); } @Override @@ -78,13 +82,35 @@ public class ArmorNo9 extends ArmorModel implements IAttackHandler, IDamageHandl @Override public void onArmorTick(World world, EntityPlayer player, ItemStack armor) { - if(world.isRemote && HbmPlayerProps.getData(player).enableHUD) { + if(!world.isRemote) { + if(!armor.hasTagCompound()) { + armor.stackTagCompound = new NBTTagCompound(); + } + + boolean turnOn = HbmPlayerProps.getData(player).enableHUD; + boolean wasOn = armor.getTagCompound().getBoolean("isOn"); + if(turnOn && !wasOn) world.playSoundAtEntity(player, "fire.ignite", 1F, 1.5F); + if(!turnOn && wasOn) world.playSoundAtEntity(player, "random.fizz", 0.5F, 2F); + armor.getTagCompound().setBoolean("isOn", turnOn); // a crude way of syncing the "enableHUD" prop to other players is just by piggybacking off the NBT sync + + if(HbmLivingProps.getBlackLung(player) > HbmLivingProps.maxBlacklung * 0.9) { + HbmLivingProps.setBlackLung(player, (int) (HbmLivingProps.maxBlacklung * 0.9)); + } + + if(HbmLivingProps.getBlackLung(player) >= HbmLivingProps.maxBlacklung * 0.25) { + HbmLivingProps.setBlackLung(player, HbmLivingProps.getBlackLung(player) - 1); + } + } + + if(world.isRemote && world.getTotalWorldTime() % 2 == 0 && armor.hasTagCompound() && armor.getTagCompound().getBoolean("isOn")) { + + //originally it would have just been a bright aura like a torch, but that's boring /*int x = (int) Math.floor(player.posX); int y = (int) Math.floor(player.posY + player.eyeHeight); int z = (int) Math.floor(player.posZ);*/ - if(world.getTotalWorldTime() % 2 == 0) checkLights(world, false); + checkLights(world, false); float range = 50F; MovingObjectPosition mop = Library.rayTrace(player, range, 0F, false, true, false); @@ -145,7 +171,7 @@ public class ArmorNo9 extends ArmorModel implements IAttackHandler, IDamageHandl if(world == null || !world.isRemote) return; Long last = lastChecks.get(world); - if(last != null && last < world.getTotalWorldTime() + 10) { + if(last != null && last < world.getTotalWorldTime() + 15) { checkLights(world, false); } } diff --git a/src/main/java/com/hbm/items/special/ItemCigarette.java b/src/main/java/com/hbm/items/special/ItemCigarette.java index 458f9dc24..092885af4 100644 --- a/src/main/java/com/hbm/items/special/ItemCigarette.java +++ b/src/main/java/com/hbm/items/special/ItemCigarette.java @@ -4,6 +4,7 @@ import java.util.List; import com.hbm.extprop.HbmLivingProps; import com.hbm.items.ModItems; +import com.hbm.main.MainRegistry; import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.PacketDispatcher; @@ -48,6 +49,11 @@ public class ItemCigarette extends Item { HbmLivingProps.incrementBlackLung(player, 2000); HbmLivingProps.incrementAsbestos(player, 2000); HbmLivingProps.incrementRadiation(player, 100F); + + ItemStack helmet = player.getEquipmentInSlot(4); + if(helmet != null && helmet.getItem() == ModItems.no9) { + player.triggerAchievement(MainRegistry.achNo9); + } } if(this == ModItems.crackpipe) { diff --git a/src/main/java/com/hbm/main/ClientProxy.java b/src/main/java/com/hbm/main/ClientProxy.java index 92bc0c422..4e375b168 100644 --- a/src/main/java/com/hbm/main/ClientProxy.java +++ b/src/main/java/com/hbm/main/ClientProxy.java @@ -47,6 +47,7 @@ import com.hbm.blocks.generic.BlockBobble.TileEntityBobble; import com.hbm.blocks.generic.BlockEmitter.TileEntityEmitter; import com.hbm.blocks.generic.BlockLoot.TileEntityLoot; import com.hbm.blocks.generic.BlockSnowglobe.TileEntitySnowglobe; +import com.hbm.blocks.machine.MachineFan.TileEntityFan; import com.hbm.entity.cart.*; import com.hbm.entity.effect.*; import com.hbm.entity.grenade.*; @@ -267,6 +268,7 @@ public class ClientProxy extends ServerProxy { ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineAutosaw.class, new RenderAutosaw()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineVacuumDistill.class, new RenderVacuumDistill()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineCatalyticReformer.class, new RenderCatalyticReformer()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityFan.class, new RenderFan()); //Foundry ClientRegistry.bindTileEntitySpecialRenderer(TileEntityFoundryBasin.class, new RenderFoundry()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityFoundryMold.class, new RenderFoundry()); diff --git a/src/main/java/com/hbm/main/CraftingManager.java b/src/main/java/com/hbm/main/CraftingManager.java index 547061e43..b01dd9c46 100644 --- a/src/main/java/com/hbm/main/CraftingManager.java +++ b/src/main/java/com/hbm/main/CraftingManager.java @@ -307,6 +307,7 @@ public class CraftingManager { addRecipeAuto(new ItemStack(ModBlocks.fraction_spacer), new Object[] { "BHB", 'H', ModItems.hull_big_steel, 'B', Blocks.iron_bars }); addRecipeAuto(new ItemStack(ModBlocks.furnace_iron), new Object[] { "III", "IFI", "BBB", 'I', IRON.ingot(), 'F', Blocks.furnace, 'B', Blocks.stonebrick }); addRecipeAuto(new ItemStack(ModBlocks.machine_mixer), new Object[] { "PIP", "GCG", "PMP", 'P', STEEL.plate(), 'I', DURA.ingot(), 'G', KEY_ANYPANE, 'C', ModItems.circuit_copper, 'M', ModItems.motor }); + addRecipeAuto(new ItemStack(ModBlocks.fan), new Object[] { "BPB", "PRP", "BPB", 'B', ModItems.bolt_tungsten, 'P', IRON.plate(), 'R', REDSTONE.dust() }); addRecipeAuto(new ItemStack(ModBlocks.muffler, 1), new Object[] { "III", "IWI", "III", 'I', ModItems.plate_polymer, 'W', Blocks.wool }); diff --git a/src/main/java/com/hbm/main/MainRegistry.java b/src/main/java/com/hbm/main/MainRegistry.java index ee20261f4..17d3dae1f 100644 --- a/src/main/java/com/hbm/main/MainRegistry.java +++ b/src/main/java/com/hbm/main/MainRegistry.java @@ -183,6 +183,7 @@ public class MainRegistry { public static Achievement achSlimeball; public static Achievement achSulfuric; public static Achievement achWitchtaunter; + public static Achievement achNo9; public static Achievement achInferno; public static Achievement bobHidden; public static Achievement horizonsStart; @@ -329,11 +330,13 @@ public class MainRegistry { ChestGenHooks.addItem(ChestGenHooks.VILLAGE_BLACKSMITH, new WeightedRandomChestContent(new ItemStack(ModItems.bathwater), 1, 1, 1)); ChestGenHooks.addItem(ChestGenHooks.MINESHAFT_CORRIDOR, new WeightedRandomChestContent(new ItemStack(ModItems.bathwater), 1, 1, 1)); ChestGenHooks.addItem(ChestGenHooks.MINESHAFT_CORRIDOR, new WeightedRandomChestContent(new ItemStack(ModItems.serum), 1, 1, 5)); + ChestGenHooks.addItem(ChestGenHooks.MINESHAFT_CORRIDOR, new WeightedRandomChestContent(new ItemStack(ModItems.no9), 1, 1, 5)); ChestGenHooks.addItem(ChestGenHooks.DUNGEON_CHEST, new WeightedRandomChestContent(new ItemStack(ModItems.heart_piece), 1, 1, 1)); ChestGenHooks.addItem(ChestGenHooks.PYRAMID_DESERT_CHEST, new WeightedRandomChestContent(new ItemStack(ModItems.heart_piece), 1, 1, 1)); ChestGenHooks.addItem(ChestGenHooks.PYRAMID_JUNGLE_CHEST, new WeightedRandomChestContent(new ItemStack(ModItems.heart_piece), 1, 1, 1)); ChestGenHooks.addItem(ChestGenHooks.DUNGEON_CHEST, new WeightedRandomChestContent(new ItemStack(ModItems.scrumpy), 1, 1, 1)); ChestGenHooks.addItem(ChestGenHooks.PYRAMID_DESERT_CHEST, new WeightedRandomChestContent(new ItemStack(ModItems.scrumpy), 1, 1, 1)); + ChestGenHooks.addItem(ChestGenHooks.BONUS_CHEST, new WeightedRandomChestContent(new ItemStack(ModItems.no9), 1, 1, 7)); EntityMappings.writeMappings(); @@ -647,6 +650,7 @@ public class MainRegistry { achOmega12 = new Achievement("achievement.omega12", "omega12", 17, -1, ModItems.particle_digamma, null).initIndependentStat().setSpecial().registerStat(); achWitchtaunter = new Achievement("achievement.witchtaunter", "witchtaunter", -8, 7, ModItems.ammo_4gauge.stackFromEnum(Ammo4Gauge.VAMPIRE), null).initIndependentStat().setSpecial().registerStat(); + achNo9 = new Achievement("achievement.no9", "no9", -8, 12, ModItems.no9, null).initIndependentStat().registerStat(); achSlimeball = new Achievement("achievement.slimeball", "slimeball", -10, 6, Items.slime_ball, null).initIndependentStat().registerStat(); achSulfuric = new Achievement("achievement.sulfuric", "sulfuric", -10, 8, ModItems.bucket_sulfuric_acid, achSlimeball).initIndependentStat().setSpecial().registerStat(); achInferno = new Achievement("achievement.inferno", "inferno", -8, 10, ModItems.canister_napalm, null).initIndependentStat().setSpecial().registerStat(); @@ -726,6 +730,7 @@ public class MainRegistry { achRadPoison, achRadDeath, achWitchtaunter, + achNo9, achInferno, achSlimeball, achSulfuric, diff --git a/src/main/java/com/hbm/main/ModEventHandler.java b/src/main/java/com/hbm/main/ModEventHandler.java index 1099109ea..e352f2a77 100644 --- a/src/main/java/com/hbm/main/ModEventHandler.java +++ b/src/main/java/com/hbm/main/ModEventHandler.java @@ -42,7 +42,6 @@ import com.hbm.handler.SiegeOrchestrator; import com.hbm.items.IEquipReceiver; import com.hbm.items.ModItems; import com.hbm.items.armor.ArmorFSB; -import com.hbm.items.armor.ArmorNo9; import com.hbm.items.armor.IAttackHandler; import com.hbm.items.armor.IDamageHandler; import com.hbm.items.armor.ItemArmorMod; diff --git a/src/main/java/com/hbm/main/ResourceManager.java b/src/main/java/com/hbm/main/ResourceManager.java index 4bd61ea87..2acd7e2fd 100644 --- a/src/main/java/com/hbm/main/ResourceManager.java +++ b/src/main/java/com/hbm/main/ResourceManager.java @@ -187,6 +187,9 @@ public class ResourceManager { public static final IModelCustom dfc_receiver = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/core_receiver.obj")); public static final IModelCustom dfc_injector = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/core_injector.obj")); + //Fan + public static final IModelCustom fan = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/machines/fan.obj")); + //Sphere public static final IModelCustom sphere_ruv = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/sphere_ruv.obj")); public static final IModelCustom sphere_iuv = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/sphere_iuv.obj")); @@ -529,6 +532,9 @@ public class ResourceManager { public static final ResourceLocation dfc_injector_tex = new ResourceLocation(RefStrings.MODID, "textures/models/core_injector.png"); public static final ResourceLocation dfc_stabilizer_tex = new ResourceLocation(RefStrings.MODID, "textures/models/core_stabilizer.png"); + //Fan + public static final ResourceLocation fan_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/fan.png"); + //Radgen public static final ResourceLocation radgen_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/radgen.png"); diff --git a/src/main/java/com/hbm/render/model/ModelNo9.java b/src/main/java/com/hbm/render/model/ModelNo9.java index 16319f5b6..c94970207 100644 --- a/src/main/java/com/hbm/render/model/ModelNo9.java +++ b/src/main/java/com/hbm/render/model/ModelNo9.java @@ -8,6 +8,8 @@ import com.hbm.render.loader.ModelRendererObj; import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.OpenGlHelper; import net.minecraft.entity.Entity; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; public class ModelNo9 extends ModelArmorBase { @@ -44,18 +46,25 @@ public class ModelNo9 extends ModelArmorBase { head.render(par7); Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.no9_insignia); insig.render(par7); - - GL11.glColor3f(1F, 1F, 0.8F); - GL11.glDisable(GL11.GL_TEXTURE_2D); - GL11.glPushAttrib(GL11.GL_LIGHTING_BIT); - GL11.glDisable(GL11.GL_LIGHTING); - OpenGlHelper.setLightmapTextureCoords(OpenGlHelper.lightmapTexUnit, 240F, 240F); - lamp.render(par7); - GL11.glEnable(GL11.GL_LIGHTING); - GL11.glPopAttrib(); - GL11.glEnable(GL11.GL_TEXTURE_2D); - GL11.glColor3f(1F, 1F, 1F); - GL11.glShadeModel(GL11.GL_FLAT); + + if(par1Entity instanceof EntityPlayer) { + EntityPlayer player = (EntityPlayer) par1Entity; + ItemStack helmet = player.getEquipmentInSlot(4); + + if(helmet != null && helmet.hasTagCompound() && helmet.getTagCompound().getBoolean("isOn")) { + GL11.glColor3f(1F, 1F, 0.8F); + GL11.glDisable(GL11.GL_TEXTURE_2D); + GL11.glPushAttrib(GL11.GL_LIGHTING_BIT); + GL11.glDisable(GL11.GL_LIGHTING); + OpenGlHelper.setLightmapTextureCoords(OpenGlHelper.lightmapTexUnit, 240F, 240F); + lamp.render(par7); + GL11.glEnable(GL11.GL_LIGHTING); + GL11.glPopAttrib(); + GL11.glEnable(GL11.GL_TEXTURE_2D); + GL11.glColor3f(1F, 1F, 1F); + GL11.glShadeModel(GL11.GL_FLAT); + } + } } GL11.glPopMatrix(); diff --git a/src/main/java/com/hbm/render/tileentity/RenderFan.java b/src/main/java/com/hbm/render/tileentity/RenderFan.java new file mode 100644 index 000000000..a58ab00d2 --- /dev/null +++ b/src/main/java/com/hbm/render/tileentity/RenderFan.java @@ -0,0 +1,67 @@ +package com.hbm.render.tileentity; + +import org.lwjgl.opengl.GL11; + +import com.hbm.blocks.ModBlocks; +import com.hbm.blocks.machine.MachineFan.TileEntityFan; +import com.hbm.main.ResourceManager; +import com.hbm.render.item.ItemRenderBase; + +import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; +import net.minecraft.item.Item; +import net.minecraft.tileentity.TileEntity; +import net.minecraftforge.client.IItemRenderer; + +public class RenderFan extends TileEntitySpecialRenderer implements IItemRendererProvider { + + @Override + public void renderTileEntityAt(TileEntity tile, double x, double y, double z, float interp) { + GL11.glPushMatrix(); + GL11.glTranslated(x + 0.5, y, z + 0.5); + GL11.glEnable(GL11.GL_LIGHTING); + GL11.glEnable(GL11.GL_CULL_FACE); + + GL11.glTranslated(0D, 0.5, 0D); + + switch(tile.getBlockMetadata()) { + case 0: GL11.glRotatef(180, 1F, 0F, 0F); break; + case 1: break; + case 2: GL11.glRotatef(-90, 1F, 0F, 0F); break; + case 4: GL11.glRotatef(90, 0F, 0F, 1F); break; + case 3: GL11.glRotatef(90, 1F, 0F, 0F); break; + case 5: GL11.glRotatef(-90, 0F, 0F, 1F); break; + } + + GL11.glTranslated(0D, -0.5, 0D); + + bindTexture(ResourceManager.fan_tex); + ResourceManager.fan.renderPart("Frame"); + + TileEntityFan fan = (TileEntityFan) tile; + float rot = fan.prevSpin + (fan.spin - fan.prevSpin) * interp; + GL11.glRotated(-rot, 0, 1, 0); + ResourceManager.fan.renderPart("Blades"); + + GL11.glPopMatrix(); + } + + @Override + public Item getItemForRenderer() { + return Item.getItemFromBlock(ModBlocks.fan); + } + + @Override + public IItemRenderer getRenderer() { + return new ItemRenderBase() { + public void renderInventory() { + GL11.glTranslated(0, -2.5, 0); + double scale = 5; + GL11.glScaled(scale, scale, scale); + } + public void renderCommon() { + GL11.glScaled(2, 2, 2); + bindTexture(ResourceManager.fan_tex); + ResourceManager.fan.renderAll(); + }}; + } +} diff --git a/src/main/java/com/hbm/tileentity/TileMappings.java b/src/main/java/com/hbm/tileentity/TileMappings.java index b0ad6893a..19088d153 100644 --- a/src/main/java/com/hbm/tileentity/TileMappings.java +++ b/src/main/java/com/hbm/tileentity/TileMappings.java @@ -11,6 +11,7 @@ import com.hbm.blocks.generic.BlockEmitter.TileEntityEmitter; import com.hbm.blocks.generic.BlockLoot.TileEntityLoot; import com.hbm.blocks.generic.BlockMotherOfAllOres.TileEntityRandomOre; import com.hbm.blocks.generic.BlockSnowglobe.TileEntitySnowglobe; +import com.hbm.blocks.machine.MachineFan.TileEntityFan; import com.hbm.blocks.network.BlockCablePaintable.TileEntityCablePaintable; import com.hbm.blocks.network.CableDiode.TileEntityDiode; import com.hbm.blocks.network.FluidDuctGauge.TileEntityPipeGauge; @@ -349,6 +350,7 @@ public class TileMappings { put(TileEntityCraneBoxer.class, "tileentity_boxer"); put(TileEntityCraneUnboxer.class, "tileentity_unboxer"); put(TileEntityCraneRouter.class, "tileentity_router"); + put(TileEntityFan.class, "tileentity_fan"); put(TileEntityRadioTorchSender.class, "tileentity_rtty_sender"); put(TileEntityRadioTorchReceiver.class, "tileentity_rtty_rec"); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityHeaterOilburner.java b/src/main/java/com/hbm/tileentity/machine/TileEntityHeaterOilburner.java index 76e9858ad..535d5939b 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityHeaterOilburner.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityHeaterOilburner.java @@ -104,6 +104,7 @@ public class TileEntityHeaterOilburner extends TileEntityMachineBase implements tank.readFromNBT(nbt, "tank"); isOn = nbt.getBoolean("isOn"); heatEnergy = nbt.getInteger("heatEnergy"); + setting = nbt.getByte("setting"); } @Override @@ -112,6 +113,7 @@ public class TileEntityHeaterOilburner extends TileEntityMachineBase implements tank.writeToNBT(nbt, "tank"); nbt.setBoolean("isOn", isOn); nbt.setInteger("heatEnergy", heatEnergy); + nbt.setByte("setting", (byte) this.setting); } public void toggleSetting() { diff --git a/src/main/resources/assets/hbm/lang/de_DE.lang b/src/main/resources/assets/hbm/lang/de_DE.lang index cbcdf1528..bc6b2877e 100644 --- a/src/main/resources/assets/hbm/lang/de_DE.lang +++ b/src/main/resources/assets/hbm/lang/de_DE.lang @@ -48,6 +48,8 @@ achievement.meltdown.desc=Du bist so weit gekommen, und jetzt verpfuscht du es? achievement.meltdown=Rapide Ungeplante Demontage achievement.metalworks.desc=Bobmazon Level 1 (Hochofen) achievement.metalworks=Metallurgie +achievement.no9.desc="Ich hoffe, dass das Blei das wir fördern in deiner Farbe verwendet wird" +achievement.no9=Old Number Nine achievement.nuclear.desc=Bobmazon Level 5 (Urankernbrennstoff) achievement.nuclear=Atomwissenschaft achievement.oil.desc=Bobmazon Level 4 (Elektrischer Ölwärmer) @@ -1850,6 +1852,7 @@ item.gun_lever_action_ammo.name=12x74 Schrotmunition (LEGACY) item.gun_lever_action_dark.name=Mare's Leg (Dunkel) item.gun_lever_action_sonata.name=Verkehrter Mare's Leg item.gun_lever_action_sonata_2.name=§cSonatas Mikrophon§r +item.gun_lunatic_marksman.name=Lunatic-Scharfschützengewehr item.gun_m2.name=üsMG item.gun_minigun.name=CZ53 Persönliche Minigun item.gun_mirv.name=M42 Nukleares Katapult "Experimentelles MIRV" @@ -2355,6 +2358,7 @@ item.n2_charge.name=Große Sprengladung item.neutrino_lens.name=Neutrinolinse item.neutron_reflector.name=Neutronenreflektor item.niter.name=Salpeter +item.no9.name=Bergbauhelm item.nossy_hat.name=Fabulöser Hut item.nothing.name=Leer item.nuclear_waste.name=Atommüll @@ -3670,6 +3674,7 @@ tile.factory_titanium_core.name=Einfache Fabrikkernkomponente tile.factory_titanium_furnace.name=Einfache Fabrikzugriffsluke tile.factory_titanium_hull.name=Fabrikblock tile.fallout.name=Fallout +tile.fan.name=Ventilator tile.fence_metal.name=Maschendrahtzaun tile.field_disturber.name=Hochenergiefeld-Jammer tile.fire_digamma.name=Verweilendes Digamma diff --git a/src/main/resources/assets/hbm/lang/en_US.lang b/src/main/resources/assets/hbm/lang/en_US.lang index ef70a38b3..47acb3efb 100644 --- a/src/main/resources/assets/hbm/lang/en_US.lang +++ b/src/main/resources/assets/hbm/lang/en_US.lang @@ -72,6 +72,8 @@ achievement.manhattan.desc=8:15; August 6th, 1945 achievement.manhattan=The Manhattan Project achievement.meltdown.desc=You got this far, how could you mess this up? achievement.meltdown=Rapid Unscheduled Disassembly +achievement.no9.desc="I hope the lead I'm mining will be used in your paint" +achievement.no9=Old Number Nine achievement.omega12.desc=Solve the problem of continued life on this wretched planet. achievement.omega12=Omega-12 Particle Accelerator achievement.polymer.desc=Delicious, delicious microplastics. @@ -2489,6 +2491,7 @@ item.gun_lever_action_ammo.name=12x74 Buckshot (LEGACY) item.gun_lever_action_dark.name=Mare's Leg (Dark) item.gun_lever_action_sonata.name=Flipped Mare's Leg item.gun_lever_action_sonata_2.name=§cSonata's Microphone§r +item.gun_lunatic_marksman.name=Lunatic Sniper Rifle item.gun_m2.name=Ma Deuce item.gun_minigun.name=CZ53 Personal Minigun item.gun_mirv.name=M42 Nuclear Catapult "Experimental MIRV" @@ -3023,6 +3026,7 @@ item.n2_charge.name=Large Explosive Charge item.neutrino_lens.name=Neutrino Lens item.neutron_reflector.name=Neutron Reflector item.niter.name=Niter +item.no9.name=Mining Helmet item.nossy_hat.name=Fabulous Hat item.nothing.name=Nothing item.nuclear_waste.name=Nuclear Waste @@ -4480,6 +4484,7 @@ tile.factory_titanium_core.name=Basic Factory Core Component tile.factory_titanium_furnace.name=Basic Factory Access Hatch tile.factory_titanium_hull.name=Factory Block tile.fallout.name=Fallout +tile.fan.name=Fan tile.fence_metal.name=Chainlink Fence tile.field_disturber.name=High Energy Field Jammer tile.filing_cabinet.green.name=Dusty Filing Cabinet diff --git a/src/main/resources/assets/hbm/models/machines/fan.obj b/src/main/resources/assets/hbm/models/machines/fan.obj new file mode 100644 index 000000000..90881dc74 --- /dev/null +++ b/src/main/resources/assets/hbm/models/machines/fan.obj @@ -0,0 +1,698 @@ +# Blender v2.79 (sub 0) OBJ File: 'fan.blend' +# www.blender.org +o Blades +v -0.081190 0.703125 0.312500 +v 0.081190 0.796875 0.312500 +v -0.027063 0.734375 0.000000 +v 0.027063 0.765625 0.000000 +v 0.081190 0.703125 -0.312500 +v -0.081190 0.796875 -0.312500 +v 0.027063 0.734375 0.000000 +v -0.027063 0.765625 0.000000 +v 0.312500 0.703125 0.081190 +v 0.312500 0.796875 -0.081190 +v 0.000000 0.734375 0.027063 +v 0.000000 0.765625 -0.027063 +v -0.312500 0.703125 -0.081190 +v -0.312500 0.796875 0.081190 +v -0.000000 0.734375 -0.027063 +v 0.000000 0.765625 0.027063 +v 0.019137 0.265625 0.019137 +v -0.019137 0.234375 -0.019137 +v -0.163561 0.296875 0.278381 +v -0.278381 0.203125 0.163561 +v -0.019137 0.265625 -0.019137 +v 0.019137 0.234375 0.019137 +v 0.163561 0.296875 -0.278381 +v 0.278381 0.203125 -0.163561 +v -0.019137 0.265625 0.019137 +v 0.019137 0.234375 -0.019137 +v -0.278381 0.296875 -0.163561 +v -0.163561 0.203125 -0.278381 +v 0.019137 0.265625 -0.019137 +v -0.019137 0.234375 0.019137 +v 0.278381 0.296875 0.163561 +v 0.163561 0.203125 0.278381 +v -0.081190 0.703125 0.312500 +v 0.081190 0.796875 0.312500 +v -0.027063 0.734375 0.000000 +v 0.027063 0.765625 0.000000 +v 0.081190 0.703125 -0.312500 +v -0.081190 0.796875 -0.312500 +v 0.027063 0.734375 0.000000 +v -0.027063 0.765625 0.000000 +v 0.312500 0.703125 0.081190 +v 0.312500 0.796875 -0.081190 +v 0.000000 0.734375 0.027063 +v 0.000000 0.765625 -0.027063 +v -0.312500 0.703125 -0.081190 +v -0.312500 0.796875 0.081190 +v -0.000000 0.734375 -0.027063 +v 0.000000 0.765625 0.027063 +v 0.019137 0.265625 0.019137 +v -0.019137 0.234375 -0.019137 +v -0.163561 0.296875 0.278381 +v -0.278381 0.203125 0.163561 +v -0.019137 0.265625 -0.019137 +v 0.019137 0.234375 0.019137 +v 0.163561 0.296875 -0.278381 +v 0.278381 0.203125 -0.163561 +v -0.019137 0.265625 0.019137 +v 0.019137 0.234375 -0.019137 +v -0.278381 0.296875 -0.163561 +v -0.163561 0.203125 -0.278381 +v 0.019137 0.265625 -0.019137 +v -0.019137 0.234375 0.019137 +v 0.278381 0.296875 0.163561 +v 0.163561 0.203125 0.278381 +vt 0.571429 0.854167 +vt 0.642857 0.750000 +vt 0.678571 0.854167 +vt 0.571429 0.854167 +vt 0.642857 0.750000 +vt 0.678571 0.854167 +vt 0.571429 0.854167 +vt 0.642857 0.750000 +vt 0.678571 0.854167 +vt 0.571429 0.854167 +vt 0.642857 0.750000 +vt 0.678571 0.854167 +vt 0.571429 0.854167 +vt 0.642857 0.750000 +vt 0.678571 0.854167 +vt 0.678571 0.854167 +vt 0.607143 0.750000 +vt 0.642857 0.750000 +vt 0.571429 0.854167 +vt 0.642857 0.750000 +vt 0.678571 0.854167 +vt 0.571429 0.854167 +vt 0.642857 0.750000 +vt 0.678571 0.854167 +vt 0.642857 0.750000 +vt 0.571429 0.854167 +vt 0.678571 0.854167 +vt 0.642857 0.750000 +vt 0.571429 0.854167 +vt 0.678571 0.854167 +vt 0.642857 0.750000 +vt 0.571429 0.854167 +vt 0.678571 0.854167 +vt 0.642857 0.750000 +vt 0.571429 0.854167 +vt 0.678571 0.854167 +vt 0.678571 0.854167 +vt 0.607143 0.750000 +vt 0.571429 0.854167 +vt 0.678571 0.854167 +vt 0.607143 0.750000 +vt 0.571429 0.854167 +vt 0.678571 0.854167 +vt 0.607143 0.750000 +vt 0.571429 0.854167 +vt 0.642857 0.750000 +vt 0.571429 0.854167 +vt 0.678571 0.854167 +vt 0.607143 0.750000 +vt 0.607143 0.750000 +vt 0.607143 0.750000 +vt 0.607143 0.750000 +vt 0.607143 0.750000 +vt 0.571429 0.854167 +vt 0.607143 0.750000 +vt 0.607143 0.750000 +vt 0.607143 0.750000 +vt 0.607143 0.750000 +vt 0.607143 0.750000 +vt 0.607143 0.750000 +vt 0.642857 0.750000 +vt 0.642857 0.750000 +vt 0.642857 0.750000 +vt 0.607143 0.750000 +vn -0.5000 0.8660 0.0000 +vn 0.5000 0.8660 0.0000 +vn 0.0000 0.8660 0.5000 +vn -0.0000 0.8660 -0.5000 +vn -0.3536 0.8660 -0.3536 +vn 0.3536 0.8660 0.3536 +vn 0.3536 0.8660 -0.3536 +vn -0.3536 0.8660 0.3536 +vn 0.5000 -0.8660 0.0000 +vn -0.5000 -0.8660 -0.0000 +vn -0.0000 -0.8660 -0.5000 +vn 0.0000 -0.8660 0.5000 +vn 0.3536 -0.8660 0.3536 +vn -0.3536 -0.8660 -0.3536 +vn -0.3536 -0.8660 0.3536 +vn 0.3536 -0.8660 -0.3536 +s off +f 2/1/1 3/2/1 1/3/1 +f 6/4/2 7/5/2 5/6/2 +f 10/7/3 11/8/3 9/9/3 +f 14/10/4 15/11/4 13/12/4 +f 19/13/5 18/14/5 20/15/5 +f 24/16/6 21/17/6 22/18/6 +f 27/19/7 26/20/7 28/21/7 +f 31/22/8 30/23/8 32/24/8 +f 35/25/9 34/26/9 33/27/9 +f 39/28/10 38/29/10 37/30/10 +f 43/31/11 42/32/11 41/33/11 +f 47/34/12 46/35/12 45/36/12 +f 52/37/13 49/38/13 51/39/13 +f 56/40/14 53/41/14 55/42/14 +f 60/43/15 57/44/15 59/45/15 +f 62/46/16 63/47/16 64/48/16 +f 2/1/1 4/49/1 3/2/1 +f 6/4/2 8/50/2 7/5/2 +f 10/7/3 12/51/3 11/8/3 +f 14/10/4 16/52/4 15/11/4 +f 19/13/5 17/53/5 18/14/5 +f 24/16/6 23/54/6 21/17/6 +f 27/19/7 25/55/7 26/20/7 +f 31/22/8 29/56/8 30/23/8 +f 35/25/9 36/57/9 34/26/9 +f 39/28/10 40/58/10 38/29/10 +f 43/31/11 44/59/11 42/32/11 +f 47/34/12 48/60/12 46/35/12 +f 52/37/13 50/61/13 49/38/13 +f 56/40/14 54/62/14 53/41/14 +f 60/43/15 58/63/15 57/44/15 +f 62/46/16 61/64/16 63/47/16 +o Frame +v -0.500000 0.000000 0.500000 +v -0.500000 1.000000 0.500000 +v -0.500000 0.000000 -0.500000 +v -0.500000 1.000000 -0.500000 +v 0.500000 0.000000 0.500000 +v 0.500000 1.000000 0.500000 +v 0.500000 0.000000 -0.500000 +v 0.500000 1.000000 -0.500000 +v -0.375000 0.000000 0.375000 +v -0.375000 0.000000 -0.375000 +v 0.375000 0.000000 0.375000 +v 0.375000 0.000000 -0.375000 +v -0.375000 1.000000 0.375000 +v -0.375000 1.000000 -0.375000 +v 0.375000 1.000000 0.375000 +v 0.375000 1.000000 -0.375000 +v -0.062500 0.000000 0.062500 +v -0.062500 1.000000 0.062500 +v -0.062500 0.000000 -0.062500 +v -0.062500 1.000000 -0.062500 +v 0.062500 0.000000 0.062500 +v 0.062500 1.000000 0.062500 +v 0.062500 0.000000 -0.062500 +v 0.062500 1.000000 -0.062500 +v 0.375000 0.937500 0.375000 +v 0.062500 0.937500 0.062500 +v 0.375000 0.937500 0.312500 +v 0.062500 0.937500 0.000000 +v 0.312500 0.937500 0.375000 +v 0.000000 0.937500 0.062500 +v 0.375000 0.937500 -0.375000 +v 0.062500 0.937500 -0.062500 +v 0.312500 0.937500 -0.375000 +v 0.000000 0.937500 -0.062500 +v 0.375000 0.937500 -0.312500 +v 0.062500 0.937500 0.000000 +v -0.375000 0.937500 -0.375000 +v -0.062500 0.937500 -0.062500 +v -0.375000 0.937500 -0.312500 +v -0.062500 0.937500 0.000000 +v -0.312500 0.937500 -0.375000 +v -0.000000 0.937500 -0.062500 +v -0.375000 0.937500 0.375000 +v -0.062500 0.937500 0.062500 +v -0.312500 0.937500 0.375000 +v 0.000000 0.937500 0.062500 +v -0.375000 0.937500 0.312500 +v -0.062500 0.937500 0.000000 +v -0.062500 0.500000 0.000000 +v -0.375000 0.500000 0.312500 +v 0.000000 0.500000 0.062500 +v -0.312500 0.500000 0.375000 +v -0.062500 0.500000 0.062500 +v -0.375000 0.500000 0.375000 +v -0.000000 0.500000 -0.062500 +v -0.312500 0.500000 -0.375000 +v -0.062500 0.500000 0.000000 +v -0.375000 0.500000 -0.312500 +v -0.062500 0.500000 -0.062500 +v -0.375000 0.500000 -0.375000 +v 0.062500 0.500000 0.000000 +v 0.375000 0.500000 -0.312500 +v 0.000000 0.500000 -0.062500 +v 0.312500 0.500000 -0.375000 +v 0.062500 0.500000 -0.062500 +v 0.375000 0.500000 -0.375000 +v 0.000000 0.500000 0.062500 +v 0.312500 0.500000 0.375000 +v 0.062500 0.500000 0.000000 +v 0.375000 0.500000 0.312500 +v 0.062500 0.500000 0.062500 +v 0.375000 0.500000 0.375000 +v -0.312500 0.500000 -0.375000 +v -0.000000 0.500000 -0.062500 +v -0.375000 0.500000 0.375000 +v -0.062500 0.500000 0.062500 +v -0.312500 0.500000 0.375000 +v 0.000000 0.500000 0.062500 +v -0.375000 0.500000 0.312500 +v -0.062500 0.500000 0.000000 +v -0.062500 0.937500 0.000000 +v -0.375000 0.937500 0.312500 +v 0.000000 0.937500 0.062500 +v -0.312500 0.937500 0.375000 +v -0.062500 0.937500 0.062500 +v -0.375000 0.937500 0.375000 +v -0.000000 0.937500 -0.062500 +v -0.312500 0.937500 -0.375000 +v -0.062500 0.937500 0.000000 +v -0.375000 0.937500 -0.312500 +v -0.062500 0.937500 -0.062500 +v -0.375000 0.937500 -0.375000 +v 0.062500 0.937500 0.000000 +v 0.375000 0.937500 -0.312500 +v 0.000000 0.937500 -0.062500 +v 0.312500 0.937500 -0.375000 +v 0.062500 0.937500 -0.062500 +v 0.375000 0.937500 -0.375000 +v 0.000000 0.937500 0.062500 +v 0.312500 0.937500 0.375000 +v 0.062500 0.937500 0.000000 +v 0.375000 0.937500 0.312500 +v 0.062500 0.937500 0.062500 +v 0.375000 0.937500 0.375000 +v -0.062500 0.062500 0.000000 +v -0.375000 0.062500 0.312500 +v 0.000000 0.062500 0.062500 +v -0.312500 0.062500 0.375000 +v -0.062500 0.062500 0.062500 +v -0.375000 0.062500 0.375000 +v -0.000000 0.062500 -0.062500 +v -0.312500 0.062500 -0.375000 +v -0.062500 0.062500 0.000000 +v -0.375000 0.062500 -0.312500 +v -0.062500 0.062500 -0.062500 +v -0.375000 0.062500 -0.375000 +v 0.062500 0.062500 0.000000 +v 0.375000 0.062500 -0.312500 +v 0.000000 0.062500 -0.062500 +v 0.312500 0.062500 -0.375000 +v 0.062500 0.062500 -0.062500 +v 0.375000 0.062500 -0.375000 +v 0.000000 0.062500 0.062500 +v 0.312500 0.062500 0.375000 +v 0.062500 0.062500 0.000000 +v 0.375000 0.062500 0.312500 +v 0.062500 0.062500 0.062500 +v 0.375000 0.062500 0.375000 +v -0.062500 0.500000 0.000000 +v -0.375000 0.500000 -0.312500 +v -0.062500 0.500000 -0.062500 +v -0.375000 0.500000 -0.375000 +v 0.062500 0.500000 0.000000 +v 0.375000 0.500000 -0.312500 +v 0.000000 0.500000 -0.062500 +v 0.312500 0.500000 -0.375000 +v 0.062500 0.500000 -0.062500 +v 0.375000 0.500000 -0.375000 +v 0.000000 0.500000 0.062500 +v 0.312500 0.500000 0.375000 +v 0.062500 0.500000 0.000000 +v 0.375000 0.500000 0.312500 +v 0.062500 0.500000 0.062500 +v 0.375000 0.500000 0.375000 +v -0.062500 0.062500 0.000000 +v -0.375000 0.062500 0.312500 +v 0.000000 0.062500 0.062500 +v -0.312500 0.062500 0.375000 +v -0.062500 0.062500 0.062500 +v -0.375000 0.062500 0.375000 +v -0.000000 0.062500 -0.062500 +v -0.312500 0.062500 -0.375000 +v -0.062500 0.062500 0.000000 +v -0.375000 0.062500 -0.312500 +v -0.062500 0.062500 -0.062500 +v -0.375000 0.062500 -0.375000 +v 0.062500 0.062500 0.000000 +v 0.375000 0.062500 -0.312500 +v 0.000000 0.062500 -0.062500 +v 0.312500 0.062500 -0.375000 +v 0.062500 0.062500 -0.062500 +v 0.375000 0.062500 -0.375000 +v 0.000000 0.062500 0.062500 +v 0.312500 0.062500 0.375000 +v 0.062500 0.062500 0.000000 +v 0.375000 0.062500 0.312500 +v 0.062500 0.062500 0.062500 +v 0.375000 0.062500 0.375000 +vt 0.571429 0.666667 +vt 0.000000 0.333333 +vt 0.571429 0.333333 +vt 0.571429 0.666667 +vt -0.000000 0.333333 +vt 0.571429 0.333333 +vt 0.571429 0.666667 +vt 0.000000 0.333333 +vt 0.571429 0.333333 +vt 0.571429 0.666667 +vt 0.000000 0.333333 +vt 0.571429 0.333333 +vt 0.500000 0.041667 +vt 0.571429 -0.000000 +vt 0.000000 -0.000000 +vt 0.071429 0.291667 +vt 0.071429 0.041667 +vt 0.500000 0.291667 +vt 0.071429 0.708333 +vt 0.000000 0.666667 +vt 0.000000 1.000000 +vt 0.500000 0.958333 +vt 0.571429 1.000000 +vt 0.071429 0.958333 +vt 0.500000 0.708333 +vt 1.000000 0.333333 +vt 0.571429 0.000000 +vt 1.000000 0.000000 +vt 1.000000 0.333333 +vt 0.571429 0.000000 +vt 1.000000 0.000000 +vt 1.000000 0.333333 +vt 0.571429 0.000000 +vt 1.000000 0.000000 +vt 1.000000 0.333333 +vt 0.571429 0.000000 +vt 1.000000 0.000000 +vt 0.857143 0.708333 +vt 0.785714 0.375000 +vt 0.857143 0.375000 +vt 0.785714 0.708333 +vt 0.714286 0.375000 +vt 0.714286 0.708333 +vt 0.642857 0.375000 +vt 0.642857 0.708333 +vt 0.571429 0.375000 +vt 0.642857 0.333333 +vt 0.714286 0.333333 +vt 0.714286 0.750000 +vt 0.250000 0.145833 +vt 0.071429 0.062500 +vt 0.107143 0.041667 +vt 0.321429 0.145833 +vt 0.464286 0.041667 +vt 0.500000 0.062500 +vt 0.321429 0.187500 +vt 0.500000 0.270833 +vt 0.464286 0.291667 +vt 0.250000 0.187500 +vt 0.107143 0.291667 +vt 0.071429 0.270833 +vt 0.250000 0.187500 +vt 0.107143 0.291667 +vt 0.071429 0.270833 +vt 0.321429 0.187500 +vt 0.500000 0.270833 +vt 0.464286 0.291667 +vt 0.321429 0.145833 +vt 0.464286 0.041667 +vt 0.500000 0.062500 +vt 0.250000 0.145833 +vt 0.071429 0.062500 +vt 0.107143 0.041667 +vt 0.107143 0.041667 +vt 0.071429 0.062500 +vt 0.250000 0.145833 +vt 0.500000 0.062500 +vt 0.464286 0.041667 +vt 0.321429 0.145833 +vt 0.464286 0.291667 +vt 0.500000 0.270833 +vt 0.321429 0.187500 +vt 0.071429 0.270833 +vt 0.107143 0.291667 +vt 0.250000 0.187500 +vt 0.071429 0.270833 +vt 0.107143 0.291667 +vt 0.250000 0.187500 +vt 0.464286 0.291667 +vt 0.500000 0.270833 +vt 0.321429 0.187500 +vt 0.500000 0.062500 +vt 0.464286 0.041667 +vt 0.321429 0.145833 +vt 0.107143 0.041667 +vt 0.071429 0.062500 +vt 0.250000 0.145833 +vt 0.250000 0.187500 +vt 0.107143 0.291667 +vt 0.071429 0.270833 +vt 0.321429 0.187500 +vt 0.500000 0.270833 +vt 0.464286 0.291667 +vt 0.321429 0.145833 +vt 0.464286 0.041667 +vt 0.500000 0.062500 +vt 0.250000 0.145833 +vt 0.071429 0.062500 +vt 0.107143 0.041667 +vt 0.071429 0.270833 +vt 0.107143 0.291667 +vt 0.250000 0.187500 +vt 0.464286 0.291667 +vt 0.500000 0.270833 +vt 0.321429 0.187500 +vt 0.500000 0.062500 +vt 0.464286 0.041667 +vt 0.321429 0.145833 +vt 0.107143 0.041667 +vt 0.071429 0.062500 +vt 0.250000 0.145833 +vt 0.000000 0.666667 +vt -0.000000 0.666667 +vt 0.000000 0.666667 +vt 0.571429 0.333333 +vt 0.571429 0.333333 +vt 0.571429 0.333333 +vt 0.571429 0.333333 +vt 0.571429 0.708333 +vt 0.642857 0.750000 +vt 0.285714 0.145833 +vt 0.250000 0.166667 +vt 0.071429 0.041667 +vt 0.321429 0.166667 +vt 0.285714 0.145833 +vt 0.500000 0.041667 +vt 0.285714 0.187500 +vt 0.321429 0.166667 +vt 0.500000 0.291667 +vt 0.250000 0.166667 +vt 0.285714 0.187500 +vt 0.071429 0.291667 +vt 0.250000 0.166667 +vt 0.285714 0.187500 +vt 0.071429 0.291667 +vt 0.285714 0.187500 +vt 0.321429 0.166667 +vt 0.500000 0.291667 +vt 0.321429 0.166667 +vt 0.285714 0.145833 +vt 0.500000 0.041667 +vt 0.285714 0.145833 +vt 0.250000 0.166667 +vt 0.071429 0.041667 +vt 0.285714 0.145833 +vt 0.071429 0.041667 +vt 0.250000 0.166667 +vt 0.321429 0.166667 +vt 0.500000 0.041667 +vt 0.285714 0.145833 +vt 0.285714 0.187500 +vt 0.500000 0.291667 +vt 0.321429 0.166667 +vt 0.250000 0.166667 +vt 0.071429 0.291667 +vt 0.285714 0.187500 +vt 0.250000 0.166667 +vt 0.071429 0.291667 +vt 0.285714 0.187500 +vt 0.285714 0.187500 +vt 0.500000 0.291667 +vt 0.321429 0.166667 +vt 0.321429 0.166667 +vt 0.500000 0.041667 +vt 0.285714 0.145833 +vt 0.285714 0.145833 +vt 0.071429 0.041667 +vt 0.250000 0.166667 +vt 0.250000 0.166667 +vt 0.285714 0.187500 +vt 0.071429 0.291667 +vt 0.285714 0.187500 +vt 0.321429 0.166667 +vt 0.500000 0.291667 +vt 0.321429 0.166667 +vt 0.285714 0.145833 +vt 0.500000 0.041667 +vt 0.285714 0.145833 +vt 0.250000 0.166667 +vt 0.071429 0.041667 +vt 0.250000 0.166667 +vt 0.071429 0.291667 +vt 0.285714 0.187500 +vt 0.285714 0.187500 +vt 0.500000 0.291667 +vt 0.321429 0.166667 +vt 0.321429 0.166667 +vt 0.500000 0.041667 +vt 0.285714 0.145833 +vt 0.285714 0.145833 +vt 0.071429 0.041667 +vt 0.250000 0.166667 +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 66/65/17 67/66/17 65/67/17 +f 68/68/18 71/69/18 67/70/18 +f 72/71/19 69/72/19 71/73/19 +f 70/74/20 65/75/20 69/76/20 +f 71/73/21 74/77/21 67/78/21 +f 65/79/21 75/80/21 69/72/21 +f 67/78/21 73/81/21 65/79/21 +f 69/72/21 76/82/21 71/73/21 +f 72/71/22 79/83/22 70/84/22 +f 66/85/22 78/86/22 68/87/22 +f 70/84/22 77/88/22 66/85/22 +f 68/87/22 80/89/22 72/71/22 +f 78/90/19 73/91/19 74/92/19 +f 80/93/20 74/94/20 76/95/20 +f 79/96/17 76/97/17 75/98/17 +f 77/99/18 75/100/18 73/101/18 +f 82/102/17 83/103/17 81/104/17 +f 84/105/18 87/106/18 83/103/18 +f 88/107/19 85/108/19 87/106/19 +f 86/109/20 81/110/20 85/108/20 +f 87/106/21 81/111/21 83/112/21 +f 84/113/22 86/109/22 88/107/22 +f 90/114/22 93/115/22 91/116/22 +f 96/117/22 99/118/22 97/119/22 +f 102/120/22 105/121/22 103/122/22 +f 108/123/22 111/124/22 109/125/22 +f 117/126/22 114/127/22 116/128/22 +f 123/129/22 120/130/22 122/131/22 +f 129/132/22 126/133/22 128/134/22 +f 135/135/22 132/136/22 134/137/22 +f 206/138/21 204/139/21 207/140/21 +f 200/141/21 198/142/21 201/143/21 +f 194/144/21 137/145/21 195/146/21 +f 141/147/21 143/148/21 140/149/21 +f 148/150/21 146/151/21 149/152/21 +f 154/153/21 152/154/21 155/155/21 +f 160/156/21 158/157/21 161/158/21 +f 166/159/21 164/160/21 167/161/21 +f 173/162/22 170/163/22 172/164/22 +f 179/165/22 176/166/22 178/167/22 +f 185/168/22 182/169/22 184/170/22 +f 191/171/22 188/172/22 190/173/22 +f 212/174/21 210/175/21 213/176/21 +f 218/177/21 216/178/21 219/179/21 +f 224/180/21 222/181/21 225/182/21 +f 230/183/21 228/184/21 231/185/21 +f 66/65/17 68/186/17 67/66/17 +f 68/68/18 72/187/18 71/69/18 +f 72/71/19 70/84/19 69/72/19 +f 70/74/20 66/188/20 65/75/20 +f 71/73/21 76/82/21 74/77/21 +f 65/79/21 73/81/21 75/80/21 +f 67/78/21 74/77/21 73/81/21 +f 69/72/21 75/80/21 76/82/21 +f 72/71/22 80/89/22 79/83/22 +f 66/85/22 77/88/22 78/86/22 +f 70/84/22 79/83/22 77/88/22 +f 68/87/22 78/86/22 80/89/22 +f 78/90/19 77/189/19 73/91/19 +f 80/93/20 78/190/20 74/94/20 +f 79/96/17 80/191/17 76/97/17 +f 77/99/18 79/192/18 75/100/18 +f 82/102/17 84/105/17 83/103/17 +f 84/105/18 88/107/18 87/106/18 +f 88/107/19 86/109/19 85/108/19 +f 86/109/20 82/193/20 81/110/20 +f 87/106/21 85/108/21 81/111/21 +f 84/113/22 82/194/22 86/109/22 +f 91/116/22 92/195/22 90/114/22 +f 90/114/22 94/196/22 93/115/22 +f 93/115/22 89/197/22 91/116/22 +f 97/119/22 98/198/22 96/117/22 +f 96/117/22 100/199/22 99/118/22 +f 99/118/22 95/200/22 97/119/22 +f 103/122/22 104/201/22 102/120/22 +f 102/120/22 106/202/22 105/121/22 +f 105/121/22 101/203/22 103/122/22 +f 109/125/22 110/204/22 108/123/22 +f 108/123/22 112/205/22 111/124/22 +f 111/124/22 107/206/22 109/125/22 +f 116/128/22 115/207/22 117/126/22 +f 117/126/22 113/208/22 114/127/22 +f 114/127/22 118/209/22 116/128/22 +f 122/131/22 121/210/22 123/129/22 +f 123/129/22 119/211/22 120/130/22 +f 120/130/22 124/212/22 122/131/22 +f 128/134/22 127/213/22 129/132/22 +f 129/132/22 125/214/22 126/133/22 +f 126/133/22 130/215/22 128/134/22 +f 134/137/22 133/216/22 135/135/22 +f 135/135/22 131/217/22 132/136/22 +f 132/136/22 136/218/22 134/137/22 +f 207/140/21 205/219/21 206/138/21 +f 206/138/21 208/220/21 204/139/21 +f 204/139/21 203/221/21 207/140/21 +f 201/143/21 199/222/21 200/141/21 +f 200/141/21 202/223/21 198/142/21 +f 198/142/21 197/224/21 201/143/21 +f 195/146/21 193/225/21 194/144/21 +f 194/144/21 196/226/21 137/145/21 +f 137/145/21 138/227/21 195/146/21 +f 140/149/21 142/228/21 141/147/21 +f 141/147/21 139/229/21 143/148/21 +f 143/148/21 144/230/21 140/149/21 +f 149/152/21 147/231/21 148/150/21 +f 148/150/21 150/232/21 146/151/21 +f 146/151/21 145/233/21 149/152/21 +f 155/155/21 153/234/21 154/153/21 +f 154/153/21 156/235/21 152/154/21 +f 152/154/21 151/236/21 155/155/21 +f 161/158/21 159/237/21 160/156/21 +f 160/156/21 162/238/21 158/157/21 +f 158/157/21 157/239/21 161/158/21 +f 167/161/21 165/240/21 166/159/21 +f 166/159/21 168/241/21 164/160/21 +f 164/160/21 163/242/21 167/161/21 +f 172/164/22 171/243/22 173/162/22 +f 173/162/22 169/244/22 170/163/22 +f 170/163/22 174/245/22 172/164/22 +f 178/167/22 177/246/22 179/165/22 +f 179/165/22 175/247/22 176/166/22 +f 176/166/22 180/248/22 178/167/22 +f 184/170/22 183/249/22 185/168/22 +f 185/168/22 181/250/22 182/169/22 +f 182/169/22 186/251/22 184/170/22 +f 190/173/22 189/252/22 191/171/22 +f 191/171/22 187/253/22 188/172/22 +f 188/172/22 192/254/22 190/173/22 +f 213/176/21 211/255/21 212/174/21 +f 212/174/21 214/256/21 210/175/21 +f 210/175/21 209/257/21 213/176/21 +f 219/179/21 217/258/21 218/177/21 +f 218/177/21 220/259/21 216/178/21 +f 216/178/21 215/260/21 219/179/21 +f 225/182/21 223/261/21 224/180/21 +f 224/180/21 226/262/21 222/181/21 +f 222/181/21 221/263/21 225/182/21 +f 231/185/21 229/264/21 230/183/21 +f 230/183/21 232/265/21 228/184/21 +f 228/184/21 227/266/21 231/185/21 diff --git a/src/main/resources/assets/hbm/sounds.json b/src/main/resources/assets/hbm/sounds.json index 986c8077d..6458aa7fc 100644 --- a/src/main/resources/assets/hbm/sounds.json +++ b/src/main/resources/assets/hbm/sounds.json @@ -171,6 +171,7 @@ "weapon.robin_explosion": {"category": "player", "sounds": [{"name": "weapon/robin_explosion", "stream": false}]}, "weapon.shotgunPump": {"category": "player", "sounds": [{"name": "weapon/shotgunShootPump", "stream": false}]}, "weapon.explosionMedium": {"category": "player", "sounds": [{"name": "weapon/explosion_medium", "stream": false}]}, + "weapon.hicalShot": {"category": "player", "sounds": [{"name": "weapon/hicalShot", "stream": false}]}, "weapon.dFlash": {"category": "player", "sounds": [{"name": "weapon/dFlash", "stream": false}]}, diff --git a/src/main/resources/assets/hbm/sounds/weapon/hicalShot.ogg b/src/main/resources/assets/hbm/sounds/weapon/hicalShot.ogg new file mode 100644 index 000000000..3ddaf7410 Binary files /dev/null and b/src/main/resources/assets/hbm/sounds/weapon/hicalShot.ogg differ diff --git a/src/main/resources/assets/hbm/textures/armor/no9.png b/src/main/resources/assets/hbm/textures/armor/no9.png index e2254aaa0..a72d1dc15 100644 Binary files a/src/main/resources/assets/hbm/textures/armor/no9.png and b/src/main/resources/assets/hbm/textures/armor/no9.png differ diff --git a/src/main/resources/assets/hbm/textures/items/no9.png b/src/main/resources/assets/hbm/textures/items/no9.png new file mode 100644 index 000000000..2e0992b61 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/no9.png differ diff --git a/src/main/resources/assets/hbm/textures/models/capes/CapePheo.png b/src/main/resources/assets/hbm/textures/models/capes/CapePheo.png index 97b7a7538..25842e022 100644 Binary files a/src/main/resources/assets/hbm/textures/models/capes/CapePheo.png and b/src/main/resources/assets/hbm/textures/models/capes/CapePheo.png differ diff --git a/src/main/resources/assets/hbm/textures/models/machines/fan.png b/src/main/resources/assets/hbm/textures/models/machines/fan.png new file mode 100644 index 000000000..003223c2f Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/machines/fan.png differ