From f5f5f18f1ce73a950565bdaf9d7815f07ebd896e Mon Sep 17 00:00:00 2001 From: Bob Date: Tue, 7 Sep 2021 19:33:11 +0200 Subject: [PATCH] some more gas mask shenanigans --- .../com/hbm/items/armor/ArmorGasMask.java | 13 ++ .../java/com/hbm/items/tool/ItemFilter.java | 9 +- .../java/com/hbm/render/model/ModelM65.java | 166 +++++++++--------- src/main/java/com/hbm/util/ArmorUtil.java | 1 + 4 files changed, 105 insertions(+), 84 deletions(-) diff --git a/src/main/java/com/hbm/items/armor/ArmorGasMask.java b/src/main/java/com/hbm/items/armor/ArmorGasMask.java index 963836e8c..aa4d00fa8 100644 --- a/src/main/java/com/hbm/items/armor/ArmorGasMask.java +++ b/src/main/java/com/hbm/items/armor/ArmorGasMask.java @@ -11,6 +11,7 @@ import com.hbm.lib.RefStrings; import com.hbm.render.model.ModelGasMask; import com.hbm.render.model.ModelM65; import com.hbm.util.ArmorUtil; +import com.hbm.util.I18nUtil; import com.hbm.util.ArmorRegistry.HazardClass; import api.hbm.item.IGasMask; @@ -26,6 +27,7 @@ import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemArmor; import net.minecraft.item.ItemStack; +import net.minecraft.util.EnumChatFormatting; import net.minecraft.util.ResourceLocation; public class ArmorGasMask extends ItemArmor implements IGasMask { @@ -164,7 +166,18 @@ public class ArmorGasMask extends ItemArmor implements IGasMask { @SideOnly(Side.CLIENT) public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean ext) { + ArmorUtil.addGasMaskTooltip(stack, player, list, ext); + + List haz = getBlacklist(stack, player); + + if(!haz.isEmpty()) { + list.add(EnumChatFormatting.RED + "Will never protect against:"); + + for(HazardClass clazz : haz) { + list.add(EnumChatFormatting.DARK_RED + " -" + I18nUtil.resolveKey(clazz.lang)); + } + } } @Override diff --git a/src/main/java/com/hbm/items/tool/ItemFilter.java b/src/main/java/com/hbm/items/tool/ItemFilter.java index 21564b880..3abd3a1eb 100644 --- a/src/main/java/com/hbm/items/tool/ItemFilter.java +++ b/src/main/java/com/hbm/items/tool/ItemFilter.java @@ -26,7 +26,14 @@ public class ItemFilter extends Item { return stack; ItemStack copy = stack.copy(); - stack = ArmorUtil.getGasMaskFilter(helmet); + ItemStack current = ArmorUtil.getGasMaskFilter(helmet); + + if(current != null) { + stack = current; + } else { + stack.stackSize = 0; + } + ArmorUtil.installGasMaskFilter(helmet, copy); world.playSoundAtEntity(player, "hbm:item.gasmaskScrew", 1.0F, 1.0F); diff --git a/src/main/java/com/hbm/render/model/ModelM65.java b/src/main/java/com/hbm/render/model/ModelM65.java index f2cca6fc8..db162c292 100644 --- a/src/main/java/com/hbm/render/model/ModelM65.java +++ b/src/main/java/com/hbm/render/model/ModelM65.java @@ -8,7 +8,7 @@ package com.hbm.render.model; import org.lwjgl.opengl.GL11; -import com.hbm.entity.mob.EntityRADBeast; +import com.hbm.util.ArmorUtil; import net.minecraft.client.model.ModelBiped; import net.minecraft.client.model.ModelRenderer; @@ -18,16 +18,7 @@ import net.minecraft.entity.player.EntityPlayer; public class ModelM65 extends ModelBiped { // fields public ModelRenderer mask; - public ModelRenderer Shape1; - public ModelRenderer Shape2; - public ModelRenderer Shape3; - public ModelRenderer Shape4; - public ModelRenderer Shape5; - public ModelRenderer Shape6; - public ModelRenderer Shape7; - public ModelRenderer Shape8; - public ModelRenderer Shape9; - public ModelRenderer Shape10; + public ModelRenderer filter; public ModelM65() { textureWidth = 32; @@ -36,76 +27,77 @@ public class ModelM65 extends ModelBiped { float yOffset = 0.5F; mask = new ModelRenderer(this, 0, 0); - Shape1 = new ModelRenderer(this, 0, 0); - Shape1.addBox(0F, 0F, 0F, 8, 8, 8); - Shape1.setRotationPoint(-4F, -8F + yOffset, -4F); - Shape1.setTextureSize(32, 32); - Shape1.mirror = true; - setRotation(Shape1, 0F, 0F, 0F); - convertToChild(mask, Shape1); - Shape2 = new ModelRenderer(this, 0, 16); - Shape2.addBox(0F, 0F, 0F, 3, 3, 1); - Shape2.setRotationPoint(-1.5F, -3.5F + yOffset, -5F); - Shape2.setTextureSize(32, 32); - Shape2.mirror = true; - setRotation(Shape2, 0F, 0F, 0F); - convertToChild(mask, Shape2); - Shape3 = new ModelRenderer(this, 0, 20); - Shape3.addBox(0F, -2F, 0F, 2, 2, 1); - Shape3.setRotationPoint(-1F, -3.5F + yOffset, -5F); - Shape3.setTextureSize(32, 32); - Shape3.mirror = true; - setRotation(Shape3, -0.4799655F, 0F, 0F); - convertToChild(mask, Shape3); - Shape4 = new ModelRenderer(this, 8, 16); - Shape4.addBox(0F, 0F, -2F, 3, 2, 2); - Shape4.setRotationPoint(-1.5F, -2F + yOffset, -4F); - Shape4.setTextureSize(32, 32); - Shape4.mirror = true; - setRotation(Shape4, 0.6108652F, 0F, 0F); - convertToChild(mask, Shape4); - Shape5 = new ModelRenderer(this, 0, 23); - Shape5.addBox(0F, 0F, 0F, 3, 3, 0); - Shape5.setRotationPoint(-3.5F, -6F + yOffset, -4.2F); - Shape5.setTextureSize(32, 32); - Shape5.mirror = true; - setRotation(Shape5, 0F, 0F, 0F); - convertToChild(mask, Shape5); - Shape6 = new ModelRenderer(this, 0, 26); - Shape6.addBox(0F, 0F, 0F, 3, 3, 0); - Shape6.setRotationPoint(0.5F, -6F + yOffset, -4.2F); - Shape6.setTextureSize(32, 32); - Shape6.mirror = true; - setRotation(Shape6, 0F, 0F, 0F); - convertToChild(mask, Shape6); - Shape7 = new ModelRenderer(this, 6, 20); - Shape7.addBox(0F, 0F, 0F, 2, 2, 1); - Shape7.setRotationPoint(-1F, -3.2F + yOffset, -6F); - Shape7.setTextureSize(32, 32); - Shape7.mirror = true; - setRotation(Shape7, 0F, 0F, 0F); - convertToChild(mask, Shape7); - Shape8 = new ModelRenderer(this, 6, 23); - Shape8.addBox(0F, 0F, -3F, 2, 2, 1); - Shape8.setRotationPoint(-1F, -2F + yOffset, -4F); - Shape8.setTextureSize(32, 32); - Shape8.mirror = true; - setRotation(Shape8, 0.6108652F, 0F, 0F); - convertToChild(mask, Shape8); - Shape9 = new ModelRenderer(this, 18, 21); - Shape9.addBox(0F, -1F, -5F, 3, 4, 2); - Shape9.setRotationPoint(-1.5F, -2F + yOffset, -4F); - Shape9.setTextureSize(32, 32); - Shape9.mirror = true; - setRotation(Shape9, 0.6108652F, 0F, 0F); - convertToChild(mask, Shape9); - Shape10 = new ModelRenderer(this, 18, 16); - Shape10.addBox(0F, -0.5F, -5F, 4, 3, 2); - Shape10.setRotationPoint(-2F, -2F + yOffset, -4F); - Shape10.setTextureSize(32, 32); - Shape10.mirror = true; - setRotation(Shape10, 0.6108652F, 0F, 0F); - convertToChild(mask, Shape10); + filter = new ModelRenderer(this, 0, 0); + ModelRenderer maskHead = new ModelRenderer(this, 0, 0); + maskHead.addBox(0F, 0F, 0F, 8, 8, 8); + maskHead.setRotationPoint(-4F, -8F + yOffset, -4F); + maskHead.setTextureSize(32, 32); + maskHead.mirror = true; + setRotation(maskHead, 0F, 0F, 0F); + convertToChild(mask, maskHead); + ModelRenderer nose = new ModelRenderer(this, 0, 16); + nose.addBox(0F, 0F, 0F, 3, 3, 1); + nose.setRotationPoint(-1.5F, -3.5F + yOffset, -5F); + nose.setTextureSize(32, 32); + nose.mirror = true; + setRotation(nose, 0F, 0F, 0F); + convertToChild(mask, nose); + ModelRenderer outlet = new ModelRenderer(this, 0, 20); + outlet.addBox(0F, -2F, 0F, 2, 2, 1); + outlet.setRotationPoint(-1F, -3.5F + yOffset, -5F); + outlet.setTextureSize(32, 32); + outlet.mirror = true; + setRotation(outlet, -0.4799655F, 0F, 0F); + convertToChild(mask, outlet); + ModelRenderer noseSlope = new ModelRenderer(this, 8, 16); + noseSlope.addBox(0F, 0F, -2F, 3, 2, 2); + noseSlope.setRotationPoint(-1.5F, -2F + yOffset, -4F); + noseSlope.setTextureSize(32, 32); + noseSlope.mirror = true; + setRotation(noseSlope, 0.6108652F, 0F, 0F); + convertToChild(mask, noseSlope); + ModelRenderer eye1 = new ModelRenderer(this, 0, 23); + eye1.addBox(0F, 0F, 0F, 3, 3, 0); + eye1.setRotationPoint(-3.5F, -6F + yOffset, -4.2F); + eye1.setTextureSize(32, 32); + eye1.mirror = true; + setRotation(eye1, 0F, 0F, 0F); + convertToChild(mask, eye1); + ModelRenderer eye2 = new ModelRenderer(this, 0, 26); + eye2.addBox(0F, 0F, 0F, 3, 3, 0); + eye2.setRotationPoint(0.5F, -6F + yOffset, -4.2F); + eye2.setTextureSize(32, 32); + eye2.mirror = true; + setRotation(eye2, 0F, 0F, 0F); + convertToChild(mask, eye2); + ModelRenderer iForgot = new ModelRenderer(this, 6, 20); + iForgot.addBox(0F, 0F, 0F, 2, 2, 1); + iForgot.setRotationPoint(-1F, -3.2F + yOffset, -6F); + iForgot.setTextureSize(32, 32); + iForgot.mirror = true; + setRotation(iForgot, 0F, 0F, 0F); + convertToChild(mask, iForgot); + ModelRenderer filterConnector = new ModelRenderer(this, 6, 23); + filterConnector.addBox(0F, 0F, -3F, 2, 2, 1); + filterConnector.setRotationPoint(-1F, -2F + yOffset, -4F); + filterConnector.setTextureSize(32, 32); + filterConnector.mirror = true; + setRotation(filterConnector, 0.6108652F, 0F, 0F); + convertToChild(filter, filterConnector); + ModelRenderer filter1 = new ModelRenderer(this, 18, 21); + filter1.addBox(0F, -1F, -5F, 3, 4, 2); + filter1.setRotationPoint(-1.5F, -2F + yOffset, -4F); + filter1.setTextureSize(32, 32); + filter1.mirror = true; + setRotation(filter1, 0.6108652F, 0F, 0F); + convertToChild(filter, filter1); + ModelRenderer filter2 = new ModelRenderer(this, 18, 16); + filter2.addBox(0F, -0.5F, -5F, 4, 3, 2); + filter2.setRotationPoint(-2F, -2F + yOffset, -4F); + filter2.setTextureSize(32, 32); + filter2.mirror = true; + setRotation(filter2, 0.6108652F, 0F, 0F); + convertToChild(filter, filter2); } @Override @@ -124,17 +116,25 @@ public class ModelM65 extends ModelBiped { this.mask.rotationPointY = this.bipedHead.rotationPointY; this.mask.rotateAngleY = this.bipedHead.rotateAngleY; this.mask.rotateAngleX = this.bipedHead.rotateAngleX; + this.filter.rotationPointX = this.bipedHead.rotationPointX; + this.filter.rotationPointY = this.bipedHead.rotationPointY; + this.filter.rotateAngleY = this.bipedHead.rotateAngleY; + this.filter.rotateAngleX = this.bipedHead.rotateAngleX; } @Override - public void render(Entity par1Entity, float par2, float par3, float par4, float par5, float par6, float par7) { - setRotationAngles(par2, par3, par4, par5, par6, par7, par1Entity); + public void render(Entity entity, float par2, float par3, float par4, float par5, float par6, float par7) { + setRotationAngles(par2, par3, par4, par5, par6, par7, entity); GL11.glPushMatrix(); double d = 1D / 16D * 18D; //GL11.glTranslated(0, 1/16D, 0); GL11.glScaled(d, d, d); GL11.glScaled(1.01D, 1.01D, 1.01D); this.mask.render(par7); + + if(!(entity instanceof EntityPlayer) || ArmorUtil.getGasMaskFilter(((EntityPlayer)entity).getCurrentArmor(3)) != null) + this.filter.render(par7); + GL11.glPopMatrix(); } diff --git a/src/main/java/com/hbm/util/ArmorUtil.java b/src/main/java/com/hbm/util/ArmorUtil.java index 28ef42f75..2187005da 100644 --- a/src/main/java/com/hbm/util/ArmorUtil.java +++ b/src/main/java/com/hbm/util/ArmorUtil.java @@ -421,6 +421,7 @@ public class ArmorUtil { list.add(EnumChatFormatting.GOLD + "Installed filter:"); List lore = new ArrayList(); + list.add(" " + filter.getDisplayName()); filter.getItem().addInformation(filter, player, lore, ext); ForgeEventFactory.onItemTooltip(filter, player, lore, ext); lore.forEach(x -> list.add(EnumChatFormatting.YELLOW + " " + x));