From 7a34d437f0530a44314e3c3ec1030bb290d5f03a Mon Sep 17 00:00:00 2001 From: Bob Date: Mon, 28 Feb 2022 21:10:40 +0100 Subject: [PATCH] the bear and the bull and the bear and the bull and the bear and the bul --- .../com/hbm/handler/BobmazonOfferFactory.java | 15 +++ .../hbm/items/tool/ItemLaserDetonator.java | 9 +- src/main/java/com/hbm/lib/Library.java | 2 +- src/main/java/com/hbm/main/ClientProxy.java | 1 + .../java/com/hbm/main/ModEventHandler.java | 9 +- .../com/hbm/main/ModEventHandlerClient.java | 4 +- .../java/com/hbm/main/ResourceManager.java | 3 + .../render/item/ItemRenderDetonatorLaser.java | 100 ++++++++++++++++++ .../com/hbm/render/model/ModelArmorWings.java | 4 +- .../render/util/RenderAccessoryUtility.java | 12 +-- .../models/weapons/detonator_laser.png | Bin 1881 -> 2431 bytes 11 files changed, 145 insertions(+), 14 deletions(-) create mode 100644 src/main/java/com/hbm/render/item/ItemRenderDetonatorLaser.java diff --git a/src/main/java/com/hbm/handler/BobmazonOfferFactory.java b/src/main/java/com/hbm/handler/BobmazonOfferFactory.java index 539594390..3d20d2482 100644 --- a/src/main/java/com/hbm/handler/BobmazonOfferFactory.java +++ b/src/main/java/com/hbm/handler/BobmazonOfferFactory.java @@ -274,6 +274,21 @@ public class BobmazonOfferFactory { new ItemStack(ModItems.pipe_lead).setStackDisplayName("Get Nutted, Dumbass"), new ItemStack(ModItems.gem_alexandrite) ).setStackDisplayName("The Nut Bucket"), Requirement.HIDDEN, 64)); + + special.add(new Offer(ItemKitNBT.create( + new ItemStack(ModItems.rpa_helmet), + new ItemStack(ModItems.rpa_plate), + new ItemStack(ModItems.rpa_legs), + new ItemStack(ModItems.rpa_boots), + new ItemStack(ModItems.gun_lacunae), + new ItemStack(ModItems.ammo_5mm_star, 64), + new ItemStack(ModItems.ammo_5mm_star, 64), + new ItemStack(ModItems.ammo_5mm_star, 64), + new ItemStack(ModItems.ammo_5mm_star, 64), + new ItemStack(ModItems.ammo_5mm_star, 64), + new ItemStack(ModItems.ammo_5mm_star, 64), + new ItemStack(ModItems.ammo_5mm_star, 64) + ).setStackDisplayName("Frenchman's Reward"), Requirement.HIDDEN, 32)); } public static List getOffers(ItemStack stack) { diff --git a/src/main/java/com/hbm/items/tool/ItemLaserDetonator.java b/src/main/java/com/hbm/items/tool/ItemLaserDetonator.java index 7f8f244eb..6a8fe97e1 100644 --- a/src/main/java/com/hbm/items/tool/ItemLaserDetonator.java +++ b/src/main/java/com/hbm/items/tool/ItemLaserDetonator.java @@ -7,8 +7,10 @@ import org.apache.logging.log4j.Level; import com.hbm.config.GeneralConfig; import com.hbm.interfaces.IBomb; import com.hbm.interfaces.IBomb.BombReturnCode; +import com.hbm.interfaces.IHoldableWeapon; import com.hbm.lib.Library; import com.hbm.main.MainRegistry; +import com.hbm.render.util.RenderScreenOverlay.Crosshair; import com.hbm.util.ChatBuilder; import net.minecraft.entity.player.EntityPlayer; @@ -19,7 +21,7 @@ import net.minecraft.util.MovingObjectPosition; import net.minecraft.util.Vec3; import net.minecraft.world.World; -public class ItemLaserDetonator extends Item { +public class ItemLaserDetonator extends Item implements IHoldableWeapon { @Override public void addInformation(ItemStack itemstack, EntityPlayer player, List list, boolean bool) { @@ -70,4 +72,9 @@ public class ItemLaserDetonator extends Item { return stack; } + + @Override + public Crosshair getCrosshair() { + return Crosshair.L_ARROWS; + } } diff --git a/src/main/java/com/hbm/lib/Library.java b/src/main/java/com/hbm/lib/Library.java index a6733bb29..a1791721e 100644 --- a/src/main/java/com/hbm/lib/Library.java +++ b/src/main/java/com/hbm/lib/Library.java @@ -60,7 +60,6 @@ public class Library { public static String Hoboy03new = "d7f29d9c-5103-4f6f-88e1-2632ff95973f"; public static String Dragon59MC = "dc23a304-0f84-4e2d-b47d-84c8d3bfbcdb"; public static String Steelcourage = "ac49720b-4a9a-4459-a26f-bee92160287a"; - public static String GOD___TM = "57146e3f-16b5-4e9f-b0b8-139bec2ca2cb"; public static String ZippySqrl = "03c20435-a229-489a-a1a1-671b803f7017"; public static String Schrabby = "3a4a1944-5154-4e67-b80a-b6561e8630b7"; public static String SweatySwiggs = "5544aa30-b305-4362-b2c1-67349bb499d5"; @@ -74,6 +73,7 @@ public class Library { public static String Tankish = "609268ad-5b34-49c2-abba-a9d83229af03"; public static String SolsticeUnlimitd = "f5574fd2-ec28-4927-9d11-3c0c731771f4"; public static String FrizzleFrazzle = "fc4cc2ee-12e8-4097-b26a-1c6cb1b96531"; + public static String the_NCR = "28ae585f-4431-4491-9ce8-3def6126e3c6"; public static Set contributors = Sets.newHashSet(new String[] { "06ab7c03-55ce-43f8-9d3c-2850e3c652de", //mustang_rudolf diff --git a/src/main/java/com/hbm/main/ClientProxy.java b/src/main/java/com/hbm/main/ClientProxy.java index 45aae560c..d7dd5518f 100644 --- a/src/main/java/com/hbm/main/ClientProxy.java +++ b/src/main/java/com/hbm/main/ClientProxy.java @@ -415,6 +415,7 @@ public class ClientProxy extends ServerProxy { 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()); //multitool MinecraftForgeClient.registerItemRenderer(ModItems.multitool_dig, new ItemRenderMultitool()); MinecraftForgeClient.registerItemRenderer(ModItems.multitool_silk, new ItemRenderMultitool()); diff --git a/src/main/java/com/hbm/main/ModEventHandler.java b/src/main/java/com/hbm/main/ModEventHandler.java index cb0112dc3..04f216920 100644 --- a/src/main/java/com/hbm/main/ModEventHandler.java +++ b/src/main/java/com/hbm/main/ModEventHandler.java @@ -1004,9 +1004,10 @@ public class ModEventHandler { if(player.getCurrentArmor(2) == null && !player.onGround) { boolean isBob = player.getUniqueID().toString().equals(Library.HbMinecraft) || player.getDisplayName().equals("HbMinecraft"); - boolean isSol = player.getUniqueID().toString().equals(Library.SolsticeUnlimitd) || player.getDisplayName().equals("SolsticeUnlimitd"); + boolean isOther = player.getUniqueID().toString().equals(Library.SolsticeUnlimitd) || player.getDisplayName().equals("SolsticeUnlimitd") || + player.getUniqueID().toString().equals(Library.the_NCR) || player.getDisplayName().equals("the_NCR"); - if(isBob || isSol) { + if(isBob || isOther) { ArmorUtil.resetFlightTime(player); @@ -1029,7 +1030,7 @@ public class ModEventHandler { else player.motionY = cap + 0.15D; - if(isSol) { + if(isOther) { if(player.getFoodStats().getSaturationLevel() > 0F) player.addExhaustion(4F); //burn up saturation so that super-saturating foods have no effect else @@ -1045,7 +1046,7 @@ public class ModEventHandler { else if(player.motionY < 0) player.motionY = 0; - if(isSol && !player.onGround) { + if(isOther && !player.onGround) { if(player.getFoodStats().getSaturationLevel() > 0F) player.addExhaustion(4F); else diff --git a/src/main/java/com/hbm/main/ModEventHandlerClient.java b/src/main/java/com/hbm/main/ModEventHandlerClient.java index 95068fd96..a61f82536 100644 --- a/src/main/java/com/hbm/main/ModEventHandlerClient.java +++ b/src/main/java/com/hbm/main/ModEventHandlerClient.java @@ -335,7 +335,9 @@ public class ModEventHandlerClient { if(player.getUniqueID().toString().equals(Library.SolsticeUnlimitd) || player.getDisplayName().equals("SolsticeUnlimitd")) RenderAccessoryUtility.renderSol(event); if(player.getUniqueID().toString().equals(Library.HbMinecraft) || player.getDisplayName().equals("HbMinecraft")) - RenderAccessoryUtility.renderWings(event); + RenderAccessoryUtility.renderWings(event, 2); + if(player.getUniqueID().toString().equals(Library.the_NCR) || player.getDisplayName().equals("the_NCR")) + RenderAccessoryUtility.renderWings(event, 3); } } diff --git a/src/main/java/com/hbm/main/ResourceManager.java b/src/main/java/com/hbm/main/ResourceManager.java index cd3adf9cf..705fd69ce 100644 --- a/src/main/java/com/hbm/main/ResourceManager.java +++ b/src/main/java/com/hbm/main/ResourceManager.java @@ -624,6 +624,7 @@ public class ResourceManager { public static final IModelCustom mg42 = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/weapons/mg42.obj")); public static final IModelCustom rem700 = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/weapons/rem700.obj")); public static final IModelCustom cursed_revolver = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/weapons/cursed.obj")); + public static final IModelCustom detonator_laser = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/weapons/detonator_laser.obj")); public static final IModelCustom lance = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/weapons/lance.obj")); @@ -692,6 +693,7 @@ public class ResourceManager { public static final ResourceLocation sky_stinger_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/sky_stinger.png"); public static final ResourceLocation mg42_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/ff/mg42.png"); public static final ResourceLocation rem700_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/ff/rem700.png"); + public static final ResourceLocation detonator_laser_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/detonator_laser.png"); public static final ResourceLocation lance_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/lance.png"); @@ -756,6 +758,7 @@ public class ResourceManager { public static final ResourceLocation wings_murk = new ResourceLocation(RefStrings.MODID, "textures/armor/wings_murk.png"); public static final ResourceLocation wings_bob = new ResourceLocation(RefStrings.MODID, "textures/armor/wings_bob.png"); + public static final ResourceLocation wings_black = new ResourceLocation(RefStrings.MODID, "textures/armor/wings_black.png"); public static final ResourceLocation wings_solstice = new ResourceLocation(RefStrings.MODID, "textures/armor/wings_solstice.png"); public static final ResourceLocation hat = new ResourceLocation(RefStrings.MODID, "textures/armor/hat.png"); diff --git a/src/main/java/com/hbm/render/item/ItemRenderDetonatorLaser.java b/src/main/java/com/hbm/render/item/ItemRenderDetonatorLaser.java new file mode 100644 index 000000000..f7e2f7e35 --- /dev/null +++ b/src/main/java/com/hbm/render/item/ItemRenderDetonatorLaser.java @@ -0,0 +1,100 @@ +package com.hbm.render.item; + +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; +import net.minecraftforge.client.IItemRenderer.ItemRenderType; +import net.minecraftforge.client.IItemRenderer.ItemRendererHelper; + +public class ItemRenderDetonatorLaser 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.detonator_laser_tex); + + switch(type) { + + case EQUIPPED_FIRST_PERSON: + + double s0 = 0.25D; + GL11.glScaled(s0, s0, s0); + + GL11.glRotatef(80F, 0.0F, 1.0F, 0.0F); + GL11.glRotatef(-20F, 1.0F, 0.0F, 0.0F); + GL11.glTranslatef(1.0F, 0.5F, 3.0F); + + break; + + case EQUIPPED: + + double scale = 0.125D; + GL11.glScaled(-scale, -scale, -scale); + GL11.glRotatef(85F, 0.0F, 1.0F, 0.0F); + GL11.glRotatef(145F, 1.0F, 0.0F, 0.0F); + GL11.glTranslatef(-0.5F, -1.0F, 6.5F); + break; + + case ENTITY: + + double s1 = 0.25D; + GL11.glRotatef(-90F, 0.0F, 1.0F, 0.0F); + GL11.glScaled(s1, s1, s1); + break; + + case INVENTORY: + + GL11.glEnable(GL11.GL_LIGHTING); + + double s = 3.5D; + GL11.glScaled(s, s, -s); + GL11.glTranslatef(1.5F, 2.75F, 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; + } + + ResourceManager.detonator_laser.renderPart("Main"); + GL11.glDisable(GL11.GL_TEXTURE_2D); + GL11.glColor3f(1F, 0F, 0F); + ResourceManager.detonator_laser.renderPart("Lights"); + GL11.glColor3f(1F, 1F, 1F); + GL11.glEnable(GL11.GL_TEXTURE_2D); + + GL11.glShadeModel(GL11.GL_FLAT); + + GL11.glPopMatrix(); + } +} diff --git a/src/main/java/com/hbm/render/model/ModelArmorWings.java b/src/main/java/com/hbm/render/model/ModelArmorWings.java index f5524256c..280da5bdc 100644 --- a/src/main/java/com/hbm/render/model/ModelArmorWings.java +++ b/src/main/java/com/hbm/render/model/ModelArmorWings.java @@ -160,9 +160,11 @@ public class ModelArmorWings extends ModelArmorBase { } protected ResourceLocation getTexture() { - + if(this.type == 2) return ResourceManager.wings_bob; + if(this.type == 3) + return ResourceManager.wings_black; return ResourceManager.wings_murk; } diff --git a/src/main/java/com/hbm/render/util/RenderAccessoryUtility.java b/src/main/java/com/hbm/render/util/RenderAccessoryUtility.java index a001801af..7103eebad 100644 --- a/src/main/java/com/hbm/render/util/RenderAccessoryUtility.java +++ b/src/main/java/com/hbm/render/util/RenderAccessoryUtility.java @@ -143,17 +143,17 @@ public class RenderAccessoryUtility { solModel.render(event.entityPlayer, 0.0F, 0.0F, yawWrapped, yaw, pitch, 0.0625F); } - private static ModelBiped wingModel; - public static void renderWings(RenderPlayerEvent.SetArmorModel event) { + private static ModelBiped[] wingModels = new ModelBiped[10]; + public static void renderWings(RenderPlayerEvent.SetArmorModel event, int mode) { - if(wingModel == null) - wingModel = new ModelArmorWings(2); + if(wingModels[mode] == null) + wingModels[mode] = new ModelArmorWings(mode); RenderPlayer renderer = event.renderer; ModelBiped model = renderer.modelArmor; EntityPlayer player = event.entityPlayer; - wingModel.isSneak = model.isSneak; + wingModels[mode].isSneak = model.isSneak; float interp = event.partialRenderTick; float yawHead = player.prevRotationYawHead + (player.rotationYawHead - player.prevRotationYawHead) * interp; @@ -162,6 +162,6 @@ public class RenderAccessoryUtility { float yawWrapped = MathHelper.wrapAngleTo180_float(yawHead - yawOffset); float pitch = player.rotationPitch; - wingModel.render(event.entityPlayer, 0.0F, 0.0F, yawWrapped, yaw, pitch, 0.0625F); + wingModels[mode].render(event.entityPlayer, 0.0F, 0.0F, yawWrapped, yaw, pitch, 0.0625F); } } diff --git a/src/main/resources/assets/hbm/textures/models/weapons/detonator_laser.png b/src/main/resources/assets/hbm/textures/models/weapons/detonator_laser.png index 03202008a2469314d95c2b059bb2dda7e7e919f1..e77117fd4a3824ad24673079a80ca2c9a2da96ac 100644 GIT binary patch delta 2405 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 XTCrGQ<4r2-00000NkvXXu0mjfRH&R6 delta 1851 zcmV-B2gLaQ64?%rGk*sVNklzi#9<5XL_SegHQ~k;=tk3(Kx;&irSalwa?)*F?!)Uz4X(F*c44njcg$3q4zM%v&Z%!oEBEyYx#grO>57t=j z5L4E~oF=AF6~0vpm9U1yT9D@-0W%#q=46tk(Xc*7vXbYOu+Qoj8PtO8Hg*K;B(Dba z#R-7@u$g8YsDDF%CgB4!Zf4^-sr0jSv~zh){n^fSBhxyQ6Q>@&UBhw zPKe4eW?OBU{+OKSq~iC=b{zneLy*6<{zObuCMQne7|zRLbhW!;FPaRK9oCug!{TI; zWpcy%kX)(vkYGpc*ff{6=4O+{Sz<@-wa&U}~eq_NnXjW}Ji z^XzkJcK!z754(+z08nmkV%+yJ@c95h-W@+<7duj8vB?u6CRq-iv#yp$=UtZbI(;+Y z<(=K0cMVa)ewgtRU#8J8TgX?G%zW|ANPoYf=sDF(9)pEeMTYjLW5c>X0$bcx#Zk;T zAo|%aE`KhPc_sjOetsS#hxOn&U1b<`)Rp48hFS0avP@?g<@SD|{2QWTyTA57|47CE zSSdLhf9r{rU=;!L&gR(f8a4xgBu;bBhG@HFR%@~$TJ<=jdoO&<0 zyd$7@3$}ub!6t?Fn3oi5DYsMOL3t6LNtP(jxqlT9wo=-V5?WV@gaib#OdZY2iR?3Q zDPe67C`c(>{fKi2y&T4*MU>}UWbXges?UNELO_UjL1vbK+`Lw9&y12N&*@5y($}Ms z0c-*kLO`kfI+0!cHc@7og5;Xsv5|hvSr(i2imrcE_qw{^Gd+`J@TDYjT$e=N;;KYS z0e__wIXox(({veJoF>$hZCgJnOpN~dcgWt;BgtVs^t6tlY%<-Fl;@l~dha^ftfZfR z@AbI~;@oUD3IJYTUjYC_)VsIo(!)u>x!%d7N2TYiT*svPLZ&MPRn>;ix;%zlOJw!; zP40Kucv!D0p*7ot&_`S-fn<;H*1|kHJAVth@AdT+M5LxB&`NQ-JX`4Q4|_;|LWQaC z(V^IsNOHCg;5gGg6s@%z}!&T@bMwP!{Hdrl@9{rk0Te_=;1ADJl~Tlta#8x7AIgrY+|GV|7t{Fw6hwBr4{08${>G}qwe;~ZU&d9-Kl>e`l!o+F zxrPv*kf~+lI>$W-5AZ)Pm19n(mQQG5#iW6)*?Z18<0};HG4XOxX_1qvvROTxH{~GKiazMgKCD0OZ;5^BfzF(wH%I?5 z#+gnTd_rVG|Mg>=e(kOwraewtNlR;r5Tf$^AC-`j_ObtnTPKE)@36VHnERRi*(ma%B>lLq=?sE8*Pb1kWVgRt`WCDmu zog01Phv_wU)Xo85Wjj1Eild3hnuNx&tkvDK}!=VX$l=s8O}IroyHcZu#n$N8M*afFUEIinURD&9Jr1Y)F(7SiWp zj5D256lW