From 1538932316b2e14c2d3ce16e3947bd2b17e94718 Mon Sep 17 00:00:00 2001 From: Bob Date: Wed, 19 Mar 2025 22:13:42 +0100 Subject: [PATCH] guns are great, but why not make them better? --- .../container/ContainerWeaponTable.java | 61 ++++++++++++-- .../com/hbm/inventory/gui/GUIWeaponTable.java | 79 +++++++++++++++++- .../com/hbm/items/weapon/sedna/GunConfig.java | 46 +++++----- .../hbm/items/weapon/sedna/ItemGunBaseNT.java | 10 +-- .../com/hbm/items/weapon/sedna/Receiver.java | 59 ++++++------- .../weapon/sedna/mods/WeaponModManager.java | 22 ++--- .../sedna/mods/WeaponModTestDamage.java | 2 +- .../sedna/mods/WeaponModTestFirerate.java | 2 +- .../weapon/sedna/mods/WeaponModTestMulti.java | 2 +- .../weapon/sedna/ItemRenderAberrator.java | 8 ++ .../item/weapon/sedna/ItemRenderAm180.java | 8 ++ .../item/weapon/sedna/ItemRenderAtlas.java | 8 ++ .../item/weapon/sedna/ItemRenderBolter.java | 8 ++ .../item/weapon/sedna/ItemRenderCarbine.java | 7 ++ .../weapon/sedna/ItemRenderChemthrower.java | 8 ++ .../item/weapon/sedna/ItemRenderCoilgun.java | 8 ++ .../weapon/sedna/ItemRenderCongoLake.java | 8 ++ .../item/weapon/sedna/ItemRenderDANI.java | 18 ++++ .../item/weapon/sedna/ItemRenderDebug.java | 7 ++ .../weapon/sedna/ItemRenderDoubleBarrel.java | 7 ++ .../item/weapon/sedna/ItemRenderEOTT.java | 13 +++ .../item/weapon/sedna/ItemRenderFatMan.java | 7 ++ .../item/weapon/sedna/ItemRenderFlamer.java | 8 ++ .../item/weapon/sedna/ItemRenderFlaregun.java | 7 ++ .../item/weapon/sedna/ItemRenderFolly.java | 8 ++ .../item/weapon/sedna/ItemRenderG3.java | 8 ++ .../weapon/sedna/ItemRenderGreasegun.java | 8 ++ .../item/weapon/sedna/ItemRenderHangman.java | 7 ++ .../weapon/sedna/ItemRenderHeavyRevolver.java | 8 ++ .../item/weapon/sedna/ItemRenderHenry.java | 7 ++ .../item/weapon/sedna/ItemRenderLAG.java | 8 ++ .../item/weapon/sedna/ItemRenderLasrifle.java | 8 ++ .../weapon/sedna/ItemRenderLiberator.java | 7 ++ .../item/weapon/sedna/ItemRenderM2.java | 8 ++ .../item/weapon/sedna/ItemRenderMAS36.java | 22 +++++ .../item/weapon/sedna/ItemRenderMaresleg.java | 7 ++ .../sedna/ItemRenderMareslegAkimbo.java | 13 +++ .../item/weapon/sedna/ItemRenderMinigun.java | 7 ++ .../sedna/ItemRenderMissileLauncher.java | 8 ++ .../weapon/sedna/ItemRenderPanzerschreck.java | 7 ++ .../weapon/sedna/ItemRenderPepperbox.java | 7 ++ .../item/weapon/sedna/ItemRenderQuadro.java | 8 ++ .../item/weapon/sedna/ItemRenderSPAS12.java | 8 ++ .../item/weapon/sedna/ItemRenderSTG77.java | 7 ++ .../item/weapon/sedna/ItemRenderShredder.java | 8 ++ .../item/weapon/sedna/ItemRenderStinger.java | 8 ++ .../item/weapon/sedna/ItemRenderTau.java | 7 ++ .../weapon/sedna/ItemRenderTeslaCannon.java | 8 ++ .../item/weapon/sedna/ItemRenderUzi.java | 8 ++ .../weapon/sedna/ItemRenderUziAkimbo.java | 22 +++++ .../weapon/sedna/ItemRenderWeaponBase.java | 10 +++ .../gui/machine/gui_weapon_modifier.png | Bin 7075 -> 1761 bytes 52 files changed, 574 insertions(+), 81 deletions(-) diff --git a/src/main/java/com/hbm/inventory/container/ContainerWeaponTable.java b/src/main/java/com/hbm/inventory/container/ContainerWeaponTable.java index 34c007c88..4196b792c 100644 --- a/src/main/java/com/hbm/inventory/container/ContainerWeaponTable.java +++ b/src/main/java/com/hbm/inventory/container/ContainerWeaponTable.java @@ -16,6 +16,7 @@ public class ContainerWeaponTable extends Container { public InventoryBasic mods = new InventoryBasic("Mods", false, 7); public IInventory gun = new InventoryCraftResult(); + public int index = 0; public ContainerWeaponTable(InventoryPlayer inventory) { @@ -31,8 +32,10 @@ public class ContainerWeaponTable extends Container { @Override public void putStack(ItemStack stack) { + ContainerWeaponTable.this.index = 0; + if(stack != null) { - ItemStack[] mods = WeaponModManager.getUpgradeItems(stack); + ItemStack[] mods = WeaponModManager.getUpgradeItems(stack, index); if(mods != null) for(int i = 0; i < Math.min(mods.length, 7); i++) { ContainerWeaponTable.this.mods.setInventorySlotContents(i, mods[i]); @@ -47,7 +50,7 @@ public class ContainerWeaponTable extends Container { super.onPickupFromSlot(player, stack); WeaponModManager.install( - stack, + stack, index, mods.getStackInSlot(0), mods.getStackInSlot(1), mods.getStackInSlot(2), @@ -58,8 +61,10 @@ public class ContainerWeaponTable extends Container { for(int i = 0; i < 7; i++) { ItemStack mod = ContainerWeaponTable.this.mods.getStackInSlot(i); - if(WeaponModManager.isApplicable(stack, mod, false)) ContainerWeaponTable.this.mods.setInventorySlotContents(i, null); + if(WeaponModManager.isApplicable(stack, mod, index, false)) ContainerWeaponTable.this.mods.setInventorySlotContents(i, null); } + + ContainerWeaponTable.this.index = 0; } }); @@ -75,6 +80,48 @@ public class ContainerWeaponTable extends Container { this.onCraftMatrixChanged(this.mods); } + + @Override + public ItemStack slotClick(int index, int button, int mode, EntityPlayer player) { + + if(mode == 999_999) { + ItemStack stack = gun.getStackInSlot(0); + if(stack != null && stack.getItem() instanceof ItemGunBaseNT) { + int configs = ((ItemGunBaseNT) stack.getItem()).getConfigCount(); + if(configs < button) return null; + + WeaponModManager.install( + stack, this.index, + mods.getStackInSlot(0), + mods.getStackInSlot(1), + mods.getStackInSlot(2), + mods.getStackInSlot(3), + mods.getStackInSlot(4), + mods.getStackInSlot(5), + mods.getStackInSlot(6)); + + for(int i = 0; i < 7; i++) { + ItemStack mod = ContainerWeaponTable.this.mods.getStackInSlot(i); + if(WeaponModManager.isApplicable(stack, mod, this.index, false)) ContainerWeaponTable.this.mods.setInventorySlotContents(i, null); + } + + this.index = button; + + if(stack != null) { + ItemStack[] mods = WeaponModManager.getUpgradeItems(stack, this.index); + + if(mods != null) for(int i = 0; i < Math.min(mods.length, 7); i++) { + ContainerWeaponTable.this.mods.setInventorySlotContents(i, mods[i]); + } + } + + this.detectAndSendChanges(); + } + return null; + } + + return super.slotClick(index, button, mode, player); + } @Override public void onContainerClosed(EntityPlayer player) { @@ -92,7 +139,7 @@ public class ContainerWeaponTable extends Container { ItemStack itemstack = this.gun.getStackInSlotOnClosing(0); if(itemstack != null) { - WeaponModManager.uninstall(itemstack); + WeaponModManager.uninstall(itemstack, index); player.dropPlayerItemWithRandomChoice(itemstack, false); } } @@ -116,7 +163,7 @@ public class ContainerWeaponTable extends Container { @Override public boolean isItemValid(ItemStack stack) { - return gun.getStackInSlot(0) != null && WeaponModManager.isApplicable(gun.getStackInSlot(0), stack, true); + return gun.getStackInSlot(0) != null && WeaponModManager.isApplicable(gun.getStackInSlot(0), stack, index, true); } @Override @@ -133,9 +180,9 @@ public class ContainerWeaponTable extends Container { public void refreshInstalledMods() { if(gun.getStackInSlot(0) == null) return; - WeaponModManager.uninstall(gun.getStackInSlot(0)); + WeaponModManager.uninstall(gun.getStackInSlot(0), index); WeaponModManager.install( - gun.getStackInSlot(0), + gun.getStackInSlot(0), index, mods.getStackInSlot(0), mods.getStackInSlot(1), mods.getStackInSlot(2), diff --git a/src/main/java/com/hbm/inventory/gui/GUIWeaponTable.java b/src/main/java/com/hbm/inventory/gui/GUIWeaponTable.java index 939b03dd8..c81cc062f 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIWeaponTable.java +++ b/src/main/java/com/hbm/inventory/gui/GUIWeaponTable.java @@ -1,19 +1,30 @@ package com.hbm.inventory.gui; +import org.lwjgl.input.Mouse; import org.lwjgl.opengl.GL11; +import org.lwjgl.opengl.GL12; import com.hbm.inventory.container.ContainerWeaponTable; +import com.hbm.items.weapon.sedna.ItemGunBaseNT; import com.hbm.lib.RefStrings; +import com.hbm.render.item.weapon.sedna.ItemRenderWeaponBase; +import net.minecraft.client.renderer.RenderHelper; import net.minecraft.client.resources.I18n; import net.minecraft.entity.player.InventoryPlayer; +import net.minecraft.item.ItemStack; import net.minecraft.util.ResourceLocation; +import net.minecraftforge.client.IItemRenderer; +import net.minecraftforge.client.MinecraftForgeClient; public class GUIWeaponTable extends GuiInfoContainer { public static ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/machine/gui_weapon_modifier.png"); public int left; public int top; + + public double yaw = 20; + public double pitch = -10; public GUIWeaponTable(InventoryPlayer player) { super(new ContainerWeaponTable(player)); @@ -24,13 +35,45 @@ public class GUIWeaponTable extends GuiInfoContainer { guiLeft = (this.width - this.xSize) / 2; guiTop = (this.height - this.ySize) / 2; } + + @Override + public void drawScreen(int x, int y, float interp) { + super.drawScreen(x, y, interp); + + if(guiLeft + 8 <= x && guiLeft + 8 + 160 > x && guiTop + 18 < y && guiTop + 18 + 79 >= y) { + if(Mouse.isButtonDown(0)) { + double distX = (guiLeft + 8 + 80) - x; + double distY = (guiTop + 18 + 39.5) - y; + yaw = distX / 80D * -180D; + pitch = distY / 39.5D * 90D; + } + } + } + + @Override + protected void mouseClicked(int x, int y, int key) { + super.mouseClicked(x, y, key); + + if(guiLeft + 26 <= x && guiLeft + 26 + 7 > x && guiTop + 111 < y && guiTop + 111 + 10 >= y) { + ContainerWeaponTable container = (ContainerWeaponTable) this.inventorySlots; + ItemStack gun = container.gun.getStackInSlot(0); + if(gun != null && gun.getItem() instanceof ItemGunBaseNT) { + int configs = ((ItemGunBaseNT) gun.getItem()).getConfigCount(); + if(configs > 1) { + container.index++; + container.index %= configs; + this.handleMouseClick(null, 0, container.index, 999_999); + } + } + } + } @Override protected void drawGuiContainerForegroundLayer(int mX, int mY) { - String name = I18n.format("container.armorTable"); - this.fontRendererObj.drawString(name, (this.xSize - 22) / 2 - this.fontRendererObj.getStringWidth(name) / 2 + 22, 6, 4210752); - this.fontRendererObj.drawString(I18n.format("container.inventory"), 8 + 22, this.ySize - 96 + 2, 4210752); + String name = I18n.format("container.weaponsTable"); + this.fontRendererObj.drawString(name, (this.xSize) / 2 - this.fontRendererObj.getStringWidth(name) / 2, 6, 0xffffff); + this.fontRendererObj.drawString(I18n.format("container.inventory"), 8, this.ySize - 96 + 2, 4210752); } @Override @@ -38,5 +81,35 @@ public class GUIWeaponTable extends GuiInfoContainer { GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); this.mc.getTextureManager().bindTexture(texture); drawTexturedModalRect(guiLeft, guiTop, 0, 0, xSize, ySize); + + ContainerWeaponTable container = (ContainerWeaponTable) this.inventorySlots; + ItemStack gun = container.gun.getStackInSlot(0); + + if(gun != null && gun.getItem() instanceof ItemGunBaseNT) { + drawTexturedModalRect(guiLeft + 35, guiTop + 112, 176 + 6 * container.index, 0, 6, 8); + + GL11.glPushMatrix(); + GL11.glTranslated(guiLeft + 88, guiTop + 57, 100); + + IItemRenderer customRenderer = MinecraftForgeClient.getItemRenderer(gun, IItemRenderer.ItemRenderType.INVENTORY); + + if(customRenderer instanceof ItemRenderWeaponBase) { + ItemRenderWeaponBase renderGun = (ItemRenderWeaponBase) customRenderer; + + GL11.glPushMatrix(); + GL11.glRotated(180, 1, 0, 0); + RenderHelper.enableStandardItemLighting(); + GL11.glPopMatrix(); + + GL11.glRotated(yaw, 0, 1, 0); + GL11.glRotated(pitch, 1, 0, 0); + + GL11.glEnable(GL12.GL_RESCALE_NORMAL); + renderGun.setupModTable(gun); + renderGun.renderModTable(gun, container.index); + GL11.glEnable(GL12.GL_RESCALE_NORMAL); + } + GL11.glPopMatrix(); + } } } diff --git a/src/main/java/com/hbm/items/weapon/sedna/GunConfig.java b/src/main/java/com/hbm/items/weapon/sedna/GunConfig.java index 613c4bc09..24b9a4bad 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/GunConfig.java +++ b/src/main/java/com/hbm/items/weapon/sedna/GunConfig.java @@ -85,36 +85,36 @@ public class GunConfig { /* GETTERS */ - public Receiver[] getReceivers(ItemStack stack) { return WeaponModManager.eval(receivers_DNA, stack, O_RECEIVERS, this); } - public float getDurability(ItemStack stack) { return WeaponModManager.eval(durability_DNA, stack, F_DURABILITY, this); } - public int getDrawDuration(ItemStack stack) { return WeaponModManager.eval(drawDuration_DNA, stack, I_DRAWDURATION, this); } - public int getInspectDuration(ItemStack stack) { return WeaponModManager.eval(inspectDuration_DNA, stack, I_INSPECTDURATION, this); } - public boolean getInspectCancel(ItemStack stack) { return WeaponModManager.eval(inspectCancel_DNA, stack, I_INSPECTCANCEL, this); } - public Crosshair getCrosshair(ItemStack stack) { return WeaponModManager.eval(crosshair_DNA, stack, O_CROSSHAIR, this); } - public boolean getHideCrosshair(ItemStack stack) { return WeaponModManager.eval(hideCrosshair_DNA, stack, B_HIDECROSSHAIR, this); } - public boolean getReloadAnimSequential(ItemStack stack) { return WeaponModManager.eval(reloadAnimationsSequential_DNA, stack, B_RELOADANIMATIONSEQUENTIAL, this); } - public ResourceLocation getScopeTexture(ItemStack stack) { return WeaponModManager.eval(scopeTexture_DNA, stack, O_SCOPETEXTURE, this); } - public BiConsumer getSmokeHandler(ItemStack stack) { return WeaponModManager.eval(smokeHandler_DNA, stack, CON_SMOKE, this); } - public BiConsumer getOrchestra(ItemStack stack) { return WeaponModManager.eval(this.orchestra_DNA, stack, CON_ORCHESTRA, this); } + public Receiver[] getReceivers(ItemStack stack) { return WeaponModManager.eval(receivers_DNA, stack, O_RECEIVERS, this, this.index); } + public float getDurability(ItemStack stack) { return WeaponModManager.eval(durability_DNA, stack, F_DURABILITY, this, this.index); } + public int getDrawDuration(ItemStack stack) { return WeaponModManager.eval(drawDuration_DNA, stack, I_DRAWDURATION, this, this.index); } + public int getInspectDuration(ItemStack stack) { return WeaponModManager.eval(inspectDuration_DNA, stack, I_INSPECTDURATION, this, this.index); } + public boolean getInspectCancel(ItemStack stack) { return WeaponModManager.eval(inspectCancel_DNA, stack, I_INSPECTCANCEL, this, this.index); } + public Crosshair getCrosshair(ItemStack stack) { return WeaponModManager.eval(crosshair_DNA, stack, O_CROSSHAIR, this, this.index); } + public boolean getHideCrosshair(ItemStack stack) { return WeaponModManager.eval(hideCrosshair_DNA, stack, B_HIDECROSSHAIR, this, this.index); } + public boolean getReloadAnimSequential(ItemStack stack) { return WeaponModManager.eval(reloadAnimationsSequential_DNA, stack, B_RELOADANIMATIONSEQUENTIAL, this, this.index); } + public ResourceLocation getScopeTexture(ItemStack stack) { return WeaponModManager.eval(scopeTexture_DNA, stack, O_SCOPETEXTURE, this, this.index); } + public BiConsumer getSmokeHandler(ItemStack stack) { return WeaponModManager.eval(smokeHandler_DNA, stack, CON_SMOKE, this, this.index); } + public BiConsumer getOrchestra(ItemStack stack) { return WeaponModManager.eval(this.orchestra_DNA, stack, CON_ORCHESTRA, this, this.index); } - public BiConsumer getPressPrimary(ItemStack stack) { return WeaponModManager.eval(this.onPressPrimary_DNA, stack, CON_ONPRESSPRIMARY, this); } - public BiConsumer getPressSecondary(ItemStack stack) { return WeaponModManager.eval(this.onPressSecondary_DNA, stack, CON_ONPRESSSECONDARY, this); } - public BiConsumer getPressTertiary(ItemStack stack) { return WeaponModManager.eval(this.onPressTertiary_DNA, stack, CON_ONPRESSTERTIARY, this); } - public BiConsumer getPressReload(ItemStack stack) { return WeaponModManager.eval(this.onPressReload_DNA, stack, CON_ONPRESSRELOAD, this); } + public BiConsumer getPressPrimary(ItemStack stack) { return WeaponModManager.eval(this.onPressPrimary_DNA, stack, CON_ONPRESSPRIMARY, this, this.index); } + public BiConsumer getPressSecondary(ItemStack stack) { return WeaponModManager.eval(this.onPressSecondary_DNA, stack, CON_ONPRESSSECONDARY, this, this.index); } + public BiConsumer getPressTertiary(ItemStack stack) { return WeaponModManager.eval(this.onPressTertiary_DNA, stack, CON_ONPRESSTERTIARY, this, this.index); } + public BiConsumer getPressReload(ItemStack stack) { return WeaponModManager.eval(this.onPressReload_DNA, stack, CON_ONPRESSRELOAD, this, this.index); } - public BiConsumer getReleasePrimary(ItemStack stack) { return WeaponModManager.eval(this.onReleasePrimary_DNA, stack, CON_ONRELEASEPRIMARY, this); } - public BiConsumer getReleaseSecondary(ItemStack stack) { return WeaponModManager.eval(this.onReleaseSecondary_DNA, stack, CON_ONRELEASESECONDARY, this); } - public BiConsumer getReleaseTertiary(ItemStack stack) { return WeaponModManager.eval(this.onReleaseTertiary_DNA, stack, CON_ONRELEASETERTIARY, this); } - public BiConsumer getReleaseReload(ItemStack stack) { return WeaponModManager.eval(this.onReleaseReload_DNA, stack, CON_ONRELEASERELOAD, this); } + public BiConsumer getReleasePrimary(ItemStack stack) { return WeaponModManager.eval(this.onReleasePrimary_DNA, stack, CON_ONRELEASEPRIMARY, this, this.index); } + public BiConsumer getReleaseSecondary(ItemStack stack) { return WeaponModManager.eval(this.onReleaseSecondary_DNA, stack, CON_ONRELEASESECONDARY, this, this.index); } + public BiConsumer getReleaseTertiary(ItemStack stack) { return WeaponModManager.eval(this.onReleaseTertiary_DNA, stack, CON_ONRELEASETERTIARY, this, this.index); } + public BiConsumer getReleaseReload(ItemStack stack) { return WeaponModManager.eval(this.onReleaseReload_DNA, stack, CON_ONRELEASERELOAD, this, this.index); } - public BiConsumer getDecider(ItemStack stack) { return WeaponModManager.eval(this.decider_DNA, stack, CON_DECIDER, this); } + public BiConsumer getDecider(ItemStack stack) { return WeaponModManager.eval(this.decider_DNA, stack, CON_DECIDER, this, this.index); } - public BiFunction getAnims(ItemStack stack) { return WeaponModManager.eval(this.animations_DNA, stack, FUN_ANIMNATIONS, this); } - public IHUDComponent[] getHUDComponents(ItemStack stack) { return WeaponModManager.eval(this.hudComponents_DNA, stack, O_HUDCOMPONENTS, this); } + public BiFunction getAnims(ItemStack stack) { return WeaponModManager.eval(this.animations_DNA, stack, FUN_ANIMNATIONS, this, this.index); } + public IHUDComponent[] getHUDComponents(ItemStack stack) { return WeaponModManager.eval(this.hudComponents_DNA, stack, O_HUDCOMPONENTS, this, this.index); } /* SETTERS */ - public GunConfig rec(Receiver... receivers) { this.receivers_DNA = receivers; return this; } + public GunConfig rec(Receiver... receivers) { this.receivers_DNA = receivers; for(Receiver r : receivers_DNA) r.parent = this; return this; } public GunConfig dura(float dura) { this.durability_DNA = dura; return this; } public GunConfig draw(int draw) { this.drawDuration_DNA = draw; return this; } public GunConfig inspect(int inspect) { this.inspectDuration_DNA = inspect; return this; } 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 ad5d9cc4f..60b8b7b25 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/ItemGunBaseNT.java +++ b/src/main/java/com/hbm/items/weapon/sedna/ItemGunBaseNT.java @@ -99,7 +99,7 @@ public class ItemGunBaseNT extends Item implements IKeybindReceiver, IEquipRecei public GunConfig getConfig(ItemStack stack, int index) { GunConfig cfg = configs_DNA[index]; if(stack == null) return cfg; - return WeaponModManager.eval(cfg, stack, O_GUNCONFIG + index, this); + return WeaponModManager.eval(cfg, stack, O_GUNCONFIG + index, this, index); } public int getConfigCount() { @@ -150,6 +150,10 @@ public class ItemGunBaseNT extends Item implements IKeybindReceiver, IEquipRecei list.add("Damage with current ammo: " + dmg * bullet.damageMult + (bullet.projectilesMin > 1 ? (" x" + (bullet.projectilesMin != bullet.projectilesMax ? (bullet.projectilesMin + "-" + bullet.projectilesMax) : bullet.projectilesMin)) : "")); } } + + for(ItemStack upgrade : WeaponModManager.getUpgradeItems(stack, i)) { + list.add(EnumChatFormatting.YELLOW + upgrade.getDisplayName()); + } } switch(this.quality) { @@ -160,10 +164,6 @@ public class ItemGunBaseNT extends Item implements IKeybindReceiver, IEquipRecei 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; } - - for(ItemStack upgrade : WeaponModManager.getUpgradeItems(stack)) { - list.add(EnumChatFormatting.YELLOW + upgrade.getDisplayName()); break; - } } @Override 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 e25988fee..b87515a1a 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/Receiver.java +++ b/src/main/java/com/hbm/items/weapon/sedna/Receiver.java @@ -54,6 +54,7 @@ public class Receiver { } protected int index; + protected GunConfig parent; protected float baseDamage_DNA; protected int delayAfterFire_DNA; protected int delayAfterDryFire_DNA; @@ -85,36 +86,36 @@ public class Receiver { protected BiConsumer onRecoil_DNA; /* GETTERS */ - public float getBaseDamage(ItemStack stack) { return WeaponModManager.eval(this.baseDamage_DNA, stack, F_BASEDAMAGE, this); } - public int getDelayAfterFire(ItemStack stack) { return WeaponModManager.eval(this.delayAfterFire_DNA, stack, I_DELAYAFTERFIRE, this); } - public int getDelayAfterDryFire(ItemStack stack) { return WeaponModManager.eval(this.delayAfterDryFire_DNA, stack, I_DELAYAFTERDRYFIRE, this); } - public int getRoundsPerCycle(ItemStack stack) { return WeaponModManager.eval(this.roundsPerCycle_DNA, stack, I_ROUNDSPERCYCLE, this); } - public float getInnateSpread(ItemStack stack) { return WeaponModManager.eval(this.spreadInnate_DNA, stack, F_SPRADINNATE, this); } - public float getAmmoSpread(ItemStack stack) { return WeaponModManager.eval(this.spreadMultAmmo_DNA, stack, F_SPREADAMMO, this); } - public float getHipfireSpread(ItemStack stack) { return WeaponModManager.eval(this.spreadPenaltyHipfire_DNA, stack, F_SPREADHIPFIRE, this); } - public float getDurabilitySpread(ItemStack stack) { return WeaponModManager.eval(this.spreadDurability_DNA, stack, F_SPREADDURABILITY, this); } - public boolean getRefireOnHold(ItemStack stack) { return WeaponModManager.eval(this.refireOnHold_DNA, stack, B_REFIREONHOLD, this); } - public boolean getRefireAfterDry(ItemStack stack) { return WeaponModManager.eval(this.refireAfterDry_DNA, stack, B_REFIREAFTERDRY, this); } - public boolean getDoesDryFire(ItemStack stack) { return WeaponModManager.eval(this.doesDryFire_DNA, stack, B_DOESDRYFIRE, this); } - public boolean getDoesDryFireAfterAuto(ItemStack stack) { return WeaponModManager.eval(this.doesDryFireAfterAuto_DNA, stack, B_DOESDRYFIREAFTERAUTO, this); } - public boolean getEjectOnFire(ItemStack stack) { return WeaponModManager.eval(this.ejectOnFire_DNA, stack, B_EJECTONFIRE, this); } - public boolean getReloadOnEmpty(ItemStack stack) { return WeaponModManager.eval(this.reloadOnEmpty_DNA, stack, B_RELOADONEMPTY, this); } - public int getReloadBeginDuration(ItemStack stack) { return WeaponModManager.eval(this.reloadBeginDuration_DNA, stack, I_RELOADBEGINDURATION, this); } - public int getReloadCycleDuration(ItemStack stack) { return WeaponModManager.eval(this.reloadCycleDuration_DNA, stack, I_RELOADCYCLEDURATION, this); } - public int getReloadEndDuration(ItemStack stack) { return WeaponModManager.eval(this.reloadEndDuration_DNA, stack, I_RELOADENDDURATION, this); } - public int getReloadCockOnEmptyPre(ItemStack stack) { return WeaponModManager.eval(this.reloadCockOnEmptyPre_DNA, stack, I_RELOADCOCKONEMPTYPRE, this); } - public int getReloadCockOnEmptyPost(ItemStack stack) { return WeaponModManager.eval(this.reloadCockOnEmptyPost_DNA, stack, I_RELOADCOCKONEMPTYPOST, this); } - public int getJamDuration(ItemStack stack) { return WeaponModManager.eval(this.jamDuration_DNA, stack, I_JAMDURATION, this); } - public String getFireSound(ItemStack stack) { return WeaponModManager.eval(this.fireSound_DNA, stack, S_FIRESOUND, this); } - public float getFireVolume(ItemStack stack) { return WeaponModManager.eval(this.fireVolume_DNA, stack, F_FIREVOLUME, this); } - public float getFirePitch(ItemStack stack) { return WeaponModManager.eval(this.firePitch_DNA, stack, F_FIREPITCH, this); } - public IMagazine getMagazine(ItemStack stack) { return WeaponModManager.eval(this.magazine_DNA, stack, O_MAGAZINE, this); } - public Vec3 getProjectileOffset(ItemStack stack) { return WeaponModManager.eval(this.projectileOffset_DNA, stack, O_PROJECTILEOFFSET, this); } - public Vec3 getProjectileOffsetScoped(ItemStack stack) { return WeaponModManager.eval(this.projectileOffsetScoped_DNA, stack, O_PROJECTILEOFFSETSCOPED, this); } + public float getBaseDamage(ItemStack stack) { return WeaponModManager.eval(this.baseDamage_DNA, stack, F_BASEDAMAGE, this, parent.index); } + public int getDelayAfterFire(ItemStack stack) { return WeaponModManager.eval(this.delayAfterFire_DNA, stack, I_DELAYAFTERFIRE, this, parent.index); } + public int getDelayAfterDryFire(ItemStack stack) { return WeaponModManager.eval(this.delayAfterDryFire_DNA, stack, I_DELAYAFTERDRYFIRE, this, parent.index); } + public int getRoundsPerCycle(ItemStack stack) { return WeaponModManager.eval(this.roundsPerCycle_DNA, stack, I_ROUNDSPERCYCLE, this, parent.index); } + public float getInnateSpread(ItemStack stack) { return WeaponModManager.eval(this.spreadInnate_DNA, stack, F_SPRADINNATE, this, parent.index); } + public float getAmmoSpread(ItemStack stack) { return WeaponModManager.eval(this.spreadMultAmmo_DNA, stack, F_SPREADAMMO, this, parent.index); } + public float getHipfireSpread(ItemStack stack) { return WeaponModManager.eval(this.spreadPenaltyHipfire_DNA, stack, F_SPREADHIPFIRE, this, parent.index); } + public float getDurabilitySpread(ItemStack stack) { return WeaponModManager.eval(this.spreadDurability_DNA, stack, F_SPREADDURABILITY, this, parent.index); } + public boolean getRefireOnHold(ItemStack stack) { return WeaponModManager.eval(this.refireOnHold_DNA, stack, B_REFIREONHOLD, this, parent.index); } + public boolean getRefireAfterDry(ItemStack stack) { return WeaponModManager.eval(this.refireAfterDry_DNA, stack, B_REFIREAFTERDRY, this, parent.index); } + public boolean getDoesDryFire(ItemStack stack) { return WeaponModManager.eval(this.doesDryFire_DNA, stack, B_DOESDRYFIRE, this, parent.index); } + public boolean getDoesDryFireAfterAuto(ItemStack stack) { return WeaponModManager.eval(this.doesDryFireAfterAuto_DNA, stack, B_DOESDRYFIREAFTERAUTO, this, parent.index); } + public boolean getEjectOnFire(ItemStack stack) { return WeaponModManager.eval(this.ejectOnFire_DNA, stack, B_EJECTONFIRE, this, parent.index); } + public boolean getReloadOnEmpty(ItemStack stack) { return WeaponModManager.eval(this.reloadOnEmpty_DNA, stack, B_RELOADONEMPTY, this, parent.index); } + public int getReloadBeginDuration(ItemStack stack) { return WeaponModManager.eval(this.reloadBeginDuration_DNA, stack, I_RELOADBEGINDURATION, this, parent.index); } + public int getReloadCycleDuration(ItemStack stack) { return WeaponModManager.eval(this.reloadCycleDuration_DNA, stack, I_RELOADCYCLEDURATION, this, parent.index); } + public int getReloadEndDuration(ItemStack stack) { return WeaponModManager.eval(this.reloadEndDuration_DNA, stack, I_RELOADENDDURATION, this, parent.index); } + public int getReloadCockOnEmptyPre(ItemStack stack) { return WeaponModManager.eval(this.reloadCockOnEmptyPre_DNA, stack, I_RELOADCOCKONEMPTYPRE, this, parent.index); } + public int getReloadCockOnEmptyPost(ItemStack stack) { return WeaponModManager.eval(this.reloadCockOnEmptyPost_DNA, stack, I_RELOADCOCKONEMPTYPOST, this, parent.index); } + public int getJamDuration(ItemStack stack) { return WeaponModManager.eval(this.jamDuration_DNA, stack, I_JAMDURATION, this, parent.index); } + public String getFireSound(ItemStack stack) { return WeaponModManager.eval(this.fireSound_DNA, stack, S_FIRESOUND, this, parent.index); } + public float getFireVolume(ItemStack stack) { return WeaponModManager.eval(this.fireVolume_DNA, stack, F_FIREVOLUME, this, parent.index); } + public float getFirePitch(ItemStack stack) { return WeaponModManager.eval(this.firePitch_DNA, stack, F_FIREPITCH, this, parent.index); } + public IMagazine getMagazine(ItemStack stack) { return WeaponModManager.eval(this.magazine_DNA, stack, O_MAGAZINE, this, parent.index); } + public Vec3 getProjectileOffset(ItemStack stack) { return WeaponModManager.eval(this.projectileOffset_DNA, stack, O_PROJECTILEOFFSET, this, parent.index); } + public Vec3 getProjectileOffsetScoped(ItemStack stack) { return WeaponModManager.eval(this.projectileOffsetScoped_DNA, stack, O_PROJECTILEOFFSETSCOPED, this, parent.index); } - public BiFunction getCanFire(ItemStack stack) { return WeaponModManager.eval(this.canFire_DNA, stack, FUN_CANFIRE, this); } - public BiConsumer getOnFire(ItemStack stack) { return WeaponModManager.eval(this.onFire_DNA, stack, CON_ONFIRE, this); } - public BiConsumer getRecoil(ItemStack stack) { return WeaponModManager.eval(this.onRecoil_DNA, stack, CON_ONRECOIL, this); } + public BiFunction getCanFire(ItemStack stack) { return WeaponModManager.eval(this.canFire_DNA, stack, FUN_CANFIRE, this, parent.index); } + public BiConsumer getOnFire(ItemStack stack) { return WeaponModManager.eval(this.onFire_DNA, stack, CON_ONFIRE, this, parent.index); } + public BiConsumer getRecoil(ItemStack stack) { return WeaponModManager.eval(this.onRecoil_DNA, stack, CON_ONRECOIL, this, parent.index); } /* SETTERS */ public Receiver dmg(float dmg) { this.baseDamage_DNA = dmg; return this; } diff --git a/src/main/java/com/hbm/items/weapon/sedna/mods/WeaponModManager.java b/src/main/java/com/hbm/items/weapon/sedna/mods/WeaponModManager.java index 78a31db04..1a08b871b 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/mods/WeaponModManager.java +++ b/src/main/java/com/hbm/items/weapon/sedna/mods/WeaponModManager.java @@ -22,7 +22,7 @@ import net.minecraft.nbt.NBTTagCompound; */ public class WeaponModManager { - public static final String KEY_MOD_LIST = "KEY_MOD_LIST"; + public static final String KEY_MOD_LIST = "KEY_MOD_LIST_"; /** Mapping of mods to IDs, keep the register order consistent! */ public static HashBiMap idToMod = HashBiMap.create(); @@ -45,9 +45,9 @@ public class WeaponModManager { new WeaponModDefinition(new ItemStack(ModItems.weapon_mod_test, 1, EnumModTest.MULTI.ordinal())).addDefault(TEST_MULTI); } - public static ItemStack[] getUpgradeItems(ItemStack stack) { + public static ItemStack[] getUpgradeItems(ItemStack stack, int cfg) { if(!stack.hasTagCompound()) return new ItemStack[0]; - int[] modIds = stack.stackTagCompound.getIntArray(KEY_MOD_LIST); + int[] modIds = stack.stackTagCompound.getIntArray(KEY_MOD_LIST + cfg); if(modIds.length == 0) return new ItemStack[0]; ItemStack[] mods = new ItemStack[modIds.length]; for(int i = 0; i < mods.length; i++) { @@ -61,7 +61,7 @@ public class WeaponModManager { } /** Installs the supplied mods to the gun */ - public static void install(ItemStack stack, ItemStack... mods) { + public static void install(ItemStack stack, int cfg, ItemStack... mods) { List toInstall = new ArrayList(); ComparableStack gun = new ComparableStack(stack); @@ -83,18 +83,18 @@ public class WeaponModManager { if(!stack.hasTagCompound()) stack.stackTagCompound = new NBTTagCompound(); int[] modIds = new int[toInstall.size()]; for(int i = 0; i < modIds.length; i++) modIds[i] = idToMod.inverse().get(toInstall.get(i)); - stack.stackTagCompound.setIntArray(KEY_MOD_LIST, modIds); + stack.stackTagCompound.setIntArray(KEY_MOD_LIST + cfg, modIds); } /** Wipes all mods from the gun */ - public static void uninstall(ItemStack stack) { + public static void uninstall(ItemStack stack, int cfg) { if(stack.hasTagCompound()) { - stack.stackTagCompound.removeTag(KEY_MOD_LIST); + stack.stackTagCompound.removeTag(KEY_MOD_LIST + cfg); //no need to clean up empty stackTagCompound because gun NBT is never empty anyway } } - public static boolean isApplicable(ItemStack gun, ItemStack mod, boolean checkMutex) { + public static boolean isApplicable(ItemStack gun, ItemStack mod, int cfg, boolean checkMutex) { if(gun == null || mod == null) return false; //if either stacks are null WeaponModDefinition def = stackToMod.get(new ComparableStack(mod)); if(def == null) return false; //if the mod stack doesn't have a mod definition @@ -102,7 +102,7 @@ public class WeaponModManager { if(newMod == null) newMod = def.modByGun.get(null); //if there's no per-gun mod, default to null key if(newMod == null) return false; //if there's just no mod applicable - if(checkMutex) for(int i : gun.stackTagCompound.getIntArray(KEY_MOD_LIST)) { + if(checkMutex) for(int i : gun.stackTagCompound.getIntArray(KEY_MOD_LIST + cfg)) { IWeaponMod iMod = idToMod.get(i); if(iMod != null) for(String mutex0 : newMod.getSlots()) for(String mutex1 : iMod.getSlots()) if(mutex0.equals(mutex1)) return false; //if any of the mod's slots are already taken } @@ -121,11 +121,11 @@ public class WeaponModManager { /** Scrapes all upgrades, iterates over them and evaluates the given value. The parent (i.e. holder of the base value) * is passed for context (so upgrades can differentiate primary and secondary receivers for example). Passing a null * stack causes the base value to be returned. */ - public static T eval(T base, ItemStack stack, String key, Object parent) { + public static T eval(T base, ItemStack stack, String key, Object parent, int cfg) { if(stack == null) return base; if(!stack.hasTagCompound()) return base; - for(int i : stack.stackTagCompound.getIntArray(KEY_MOD_LIST)) { + for(int i : stack.stackTagCompound.getIntArray(KEY_MOD_LIST + cfg)) { IWeaponMod mod = idToMod.get(i); if(mod != null) base = mod.eval(base, stack, key, parent); } diff --git a/src/main/java/com/hbm/items/weapon/sedna/mods/WeaponModTestDamage.java b/src/main/java/com/hbm/items/weapon/sedna/mods/WeaponModTestDamage.java index 72e96b0cf..bfde63994 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/mods/WeaponModTestDamage.java +++ b/src/main/java/com/hbm/items/weapon/sedna/mods/WeaponModTestDamage.java @@ -14,7 +14,7 @@ public class WeaponModTestDamage extends WeaponModBase { public T eval(T base, ItemStack gun, String key, Object parent) { if(parent instanceof Receiver && key == Receiver.F_BASEDAMAGE && base instanceof Float) { - return fagSlop((float) base * 1.5F, base); + return fagSlop((Float) base * 1.5F, base); } return base; diff --git a/src/main/java/com/hbm/items/weapon/sedna/mods/WeaponModTestFirerate.java b/src/main/java/com/hbm/items/weapon/sedna/mods/WeaponModTestFirerate.java index 701c3b538..5c5bf0af2 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/mods/WeaponModTestFirerate.java +++ b/src/main/java/com/hbm/items/weapon/sedna/mods/WeaponModTestFirerate.java @@ -14,7 +14,7 @@ public class WeaponModTestFirerate extends WeaponModBase { public T eval(T base, ItemStack gun, String key, Object parent) { if(parent instanceof Receiver && key == Receiver.I_DELAYAFTERFIRE && base instanceof Integer) { - return fagSlop(Math.max((int) base / 2, 1), base); + return fagSlop(Math.max((Integer) base / 2, 1), base); } return base; diff --git a/src/main/java/com/hbm/items/weapon/sedna/mods/WeaponModTestMulti.java b/src/main/java/com/hbm/items/weapon/sedna/mods/WeaponModTestMulti.java index 37cf77d2d..7f5b89823 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/mods/WeaponModTestMulti.java +++ b/src/main/java/com/hbm/items/weapon/sedna/mods/WeaponModTestMulti.java @@ -14,7 +14,7 @@ public class WeaponModTestMulti extends WeaponModBase { public T eval(T base, ItemStack gun, String key, Object parent) { if(parent instanceof Receiver && key == Receiver.I_ROUNDSPERCYCLE && base instanceof Integer) { - return fagSlop((int) base * 3, base); + return fagSlop((Integer) base * 3, base); } return base; diff --git a/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderAberrator.java b/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderAberrator.java index 6ca37d74c..4673f7998 100644 --- a/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderAberrator.java +++ b/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderAberrator.java @@ -185,6 +185,14 @@ public class ItemRenderAberrator extends ItemRenderWeaponBase { GL11.glTranslated(-0.5,-1, 0); } + @Override + public void setupModTable(ItemStack stack) { + double scale = -12.5D; + GL11.glScaled(scale, scale, scale); + GL11.glRotated(90, 0, 1, 0); + GL11.glTranslated(0,-1, 0.5); + } + @Override public void renderOther(ItemStack stack, ItemRenderType type) { diff --git a/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderAm180.java b/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderAm180.java index a21b57e25..718526180 100644 --- a/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderAm180.java +++ b/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderAm180.java @@ -134,6 +134,14 @@ public class ItemRenderAm180 extends ItemRenderWeaponBase { GL11.glTranslated(1.5, 0, 0); } + @Override + public void setupModTable(ItemStack stack) { + double scale = -5D; + GL11.glScaled(scale, scale, scale); + GL11.glRotated(90, 0, 1, 0); + GL11.glTranslated(0, 0, -2); + } + @Override public void renderOther(ItemStack stack, ItemRenderType type) { GL11.glEnable(GL11.GL_LIGHTING); 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 85be22898..8d0bcfe47 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 @@ -126,6 +126,14 @@ public class ItemRenderAtlas extends ItemRenderWeaponBase { GL11.glTranslated(-0.5, 1.5, 0); } + @Override + public void setupModTable(ItemStack stack) { + double scale = -5D; + GL11.glScaled(scale, scale, scale); + GL11.glRotated(90, 0, 1, 0); + GL11.glTranslated(0, 1.5, 0); + } + @Override public void renderOther(ItemStack stack, ItemRenderType type) { GL11.glEnable(GL11.GL_LIGHTING); 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 165cd20cc..de524c481 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 @@ -105,6 +105,14 @@ public class ItemRenderBolter extends ItemRenderWeaponBase { GL11.glTranslated(-0.25, -0.5, 0); } + @Override + public void setupModTable(ItemStack stack) { + double scale = -12.5D; + GL11.glScaled(scale, scale, scale); + GL11.glRotated(90, 0, 1, 0); + GL11.glTranslated(0, -0.5, 0); + } + @Override public void renderOther(ItemStack stack, ItemRenderType type) { GL11.glEnable(GL11.GL_LIGHTING); diff --git a/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderCarbine.java b/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderCarbine.java index 829aa1a3a..f8ea3afc7 100644 --- a/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderCarbine.java +++ b/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderCarbine.java @@ -108,6 +108,13 @@ public class ItemRenderCarbine extends ItemRenderWeaponBase { GL11.glTranslated(-0.5, 0, 0); } + @Override + public void setupModTable(ItemStack stack) { + double scale = -7.5D; + GL11.glScaled(scale, scale, scale); + GL11.glRotated(90, 0, 1, 0); + } + @Override public void renderOther(ItemStack stack, ItemRenderType type) { GL11.glEnable(GL11.GL_LIGHTING); diff --git a/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderChemthrower.java b/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderChemthrower.java index 582bdfaa5..32d2949c8 100644 --- a/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderChemthrower.java +++ b/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderChemthrower.java @@ -77,6 +77,14 @@ public class ItemRenderChemthrower extends ItemRenderWeaponBase { GL11.glTranslated(0.875, 0, 0); } + @Override + public void setupModTable(ItemStack stack) { + double scale = -10D; + GL11.glScaled(scale, scale, scale); + GL11.glRotated(90, 0, 1, 0); + GL11.glTranslated(0, -0.5, -0.5); + } + @Override public void renderOther(ItemStack stack, ItemRenderType type) { GL11.glEnable(GL11.GL_LIGHTING); diff --git a/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderCoilgun.java b/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderCoilgun.java index 111232870..84a709149 100644 --- a/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderCoilgun.java +++ b/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderCoilgun.java @@ -74,6 +74,14 @@ public class ItemRenderCoilgun extends ItemRenderWeaponBase { GL11.glTranslated(-0.25, -0.25, 0); } + @Override + public void setupModTable(ItemStack stack) { + double scale = -20D; + GL11.glScaled(scale, scale, scale); + GL11.glRotated(90, 0, 1, 0); + GL11.glTranslated(0, -0.25, 0.5); + } + @Override public void renderOther(ItemStack stack, ItemRenderType type) { GL11.glEnable(GL11.GL_LIGHTING); diff --git a/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderCongoLake.java b/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderCongoLake.java index b2b7250f4..8dfd5df3a 100644 --- a/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderCongoLake.java +++ b/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderCongoLake.java @@ -159,6 +159,14 @@ public class ItemRenderCongoLake extends ItemRenderWeaponBase { GL11.glTranslated(0, -1.25, 0); } + @Override + public void setupModTable(ItemStack stack) { + double scale = -15D; + GL11.glScaled(scale, scale, scale); + GL11.glRotated(90, 0, 1, 0); + GL11.glTranslated(0, -1.25, 0); + } + @Override public void renderOther(ItemStack stack, ItemRenderType type) { GL11.glEnable(GL11.GL_LIGHTING); diff --git a/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderDANI.java b/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderDANI.java index af2507d02..dfdaf13c5 100644 --- a/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderDANI.java +++ b/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderDANI.java @@ -127,6 +127,14 @@ public class ItemRenderDANI extends ItemRenderWeaponBase { GL11.glScaled(scale, scale, scale); } + @Override + public void setupModTable(ItemStack stack) { + double scale = -5D; + GL11.glScaled(scale, scale, scale); + GL11.glRotated(90, 0, 1, 0); + GL11.glTranslated(0, 1.5, 0); + } + @Override public void renderInv(ItemStack stack) { @@ -176,6 +184,16 @@ public class ItemRenderDANI extends ItemRenderWeaponBase { GL11.glShadeModel(GL11.GL_FLAT); } + @Override + public void renderModTable(ItemStack stack, int index) { + GL11.glEnable(GL11.GL_LIGHTING); + + GL11.glShadeModel(GL11.GL_SMOOTH); + Minecraft.getMinecraft().renderEngine.bindTexture(index == 1 ? ResourceManager.dani_celestial_tex : ResourceManager.dani_lunar_tex); + ResourceManager.bio_revolver.renderAll(); + GL11.glShadeModel(GL11.GL_FLAT); + } + @Override public void renderOther(ItemStack stack, ItemRenderType type) { diff --git a/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderDebug.java b/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderDebug.java index f4875de7f..981138487 100644 --- a/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderDebug.java +++ b/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderDebug.java @@ -112,6 +112,13 @@ public class ItemRenderDebug extends ItemRenderWeaponBase { GL11.glRotated(45, 0, 1, 0); } + @Override + public void setupModTable(ItemStack stack) { + double scale = -5D; + GL11.glScaled(scale, scale, scale); + GL11.glRotated(90, 0, 1, 0); + } + @Override public void renderOther(ItemStack stack, ItemRenderType type) { diff --git a/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderDoubleBarrel.java b/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderDoubleBarrel.java index 5647da9ae..1b5612bc4 100644 --- a/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderDoubleBarrel.java +++ b/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderDoubleBarrel.java @@ -149,6 +149,13 @@ public class ItemRenderDoubleBarrel extends ItemRenderWeaponBase { } } + @Override + public void setupModTable(ItemStack stack) { + double scale = -8.75D; + GL11.glScaled(scale, scale, scale); + GL11.glRotated(90, 0, 1, 0); + } + @Override public void renderOther(ItemStack stack, ItemRenderType type) { GL11.glEnable(GL11.GL_LIGHTING); diff --git a/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderEOTT.java b/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderEOTT.java index efd3d67f7..76d653de5 100644 --- a/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderEOTT.java +++ b/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderEOTT.java @@ -160,6 +160,14 @@ public class ItemRenderEOTT extends ItemRenderWeaponBase { GL11.glScaled(scale, scale, scale); } + @Override + public void setupModTable(ItemStack stack) { + double scale = -12.5D; + GL11.glScaled(scale, scale, scale); + GL11.glRotated(90, 0, 1, 0); + GL11.glTranslated(0,-1, 0.5); + } + @Override public void renderInv(ItemStack stack) { @@ -226,6 +234,11 @@ public class ItemRenderEOTT extends ItemRenderWeaponBase { GL11.glShadeModel(GL11.GL_FLAT); } + @Override + public void renderModTable(ItemStack stack, int index) { + renderOther(stack, ItemRenderType.INVENTORY); + } + @Override public void renderOther(ItemStack stack, ItemRenderType type) { diff --git a/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderFatMan.java b/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderFatMan.java index 8991d63f6..2ff627a40 100644 --- a/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderFatMan.java +++ b/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderFatMan.java @@ -110,6 +110,13 @@ public class ItemRenderFatMan extends ItemRenderWeaponBase { GL11.glTranslated(0, -0.5, 0); } + @Override + public void setupModTable(ItemStack stack) { + double scale = -8.75D; + GL11.glScaled(scale, scale, scale); + GL11.glRotated(90, 0, 1, 0); + } + @Override public void renderOther(ItemStack stack, ItemRenderType type) { GL11.glEnable(GL11.GL_LIGHTING); 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 5ec21511a..f1c9f3560 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 @@ -103,6 +103,14 @@ public class ItemRenderFlamer extends ItemRenderWeaponBase { GL11.glTranslated(-1, 1, 0); } + @Override + public void setupModTable(ItemStack stack) { + double scale = -7.5D; + GL11.glScaled(scale, scale, scale); + GL11.glRotated(90, 0, 1, 0); + GL11.glTranslated(0, 0, 1); + } + @Override public void renderOther(ItemStack stack, ItemRenderType type) { GL11.glEnable(GL11.GL_LIGHTING); diff --git a/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderFlaregun.java b/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderFlaregun.java index d97381832..3bcabc96b 100644 --- a/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderFlaregun.java +++ b/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderFlaregun.java @@ -105,6 +105,13 @@ public class ItemRenderFlaregun extends ItemRenderWeaponBase { GL11.glTranslated(-0.5, 0, 0); } + @Override + public void setupModTable(ItemStack stack) { + double scale = -5D; + GL11.glScaled(scale, scale, scale); + GL11.glRotated(90, 0, 1, 0); + } + @Override public void renderOther(ItemStack stack, ItemRenderType type) { GL11.glEnable(GL11.GL_LIGHTING); 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 a38c70419..2908e52d1 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 @@ -193,6 +193,14 @@ public class ItemRenderFolly extends ItemRenderWeaponBase { GL11.glTranslated(0, -0.5, 0); } + @Override + public void setupModTable(ItemStack stack) { + double scale = -8.75D; + GL11.glScaled(scale, scale, scale); + GL11.glRotated(90, 0, 1, 0); + GL11.glTranslated(0, -1, 0); + } + @Override public void renderOther(ItemStack stack, ItemRenderType type) { GL11.glEnable(GL11.GL_LIGHTING); 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 82d881174..e5e34b83d 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 @@ -129,6 +129,14 @@ public class ItemRenderG3 extends ItemRenderWeaponBase { GL11.glTranslated(-0.5, 0.5, 0); } + @Override + public void setupModTable(ItemStack stack) { + double scale = -5D; + GL11.glScaled(scale, scale, scale); + GL11.glRotated(90, 0, 1, 0); + GL11.glTranslated(0, 0.5, -0.5); + } + @Override public void renderOther(ItemStack stack, ItemRenderType type) { GL11.glEnable(GL11.GL_LIGHTING); diff --git a/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderGreasegun.java b/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderGreasegun.java index a04e1de80..cc488ab5f 100644 --- a/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderGreasegun.java +++ b/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderGreasegun.java @@ -133,6 +133,14 @@ public class ItemRenderGreasegun extends ItemRenderWeaponBase { GL11.glTranslated(-0.5, 2, 0); } + @Override + public void setupModTable(ItemStack stack) { + double scale = -7.5D; + GL11.glScaled(scale, scale, scale); + GL11.glRotated(90, 0, 1, 0); + GL11.glTranslated(0, 2, 0); + } + @Override public void renderOther(ItemStack stack, ItemRenderType type) { GL11.glEnable(GL11.GL_LIGHTING); 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 16ee124cd..21948b4a8 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 @@ -126,6 +126,13 @@ public class ItemRenderHangman extends ItemRenderWeaponBase { GL11.glScaled(scale, scale, scale); } + @Override + public void setupModTable(ItemStack stack) { + double scale = -2.5D; + GL11.glScaled(scale, scale, scale); + GL11.glRotated(90, 0, 1, 0); + } + @Override public void renderOther(ItemStack stack, ItemRenderType type) { GL11.glEnable(GL11.GL_LIGHTING); diff --git a/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderHeavyRevolver.java b/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderHeavyRevolver.java index 7e1d6e858..55020e68b 100644 --- a/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderHeavyRevolver.java +++ b/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderHeavyRevolver.java @@ -149,6 +149,14 @@ public class ItemRenderHeavyRevolver extends ItemRenderWeaponBase { } } + @Override + public void setupModTable(ItemStack stack) { + double scale = -5D; + GL11.glScaled(scale, scale, scale); + GL11.glRotated(90, 0, 1, 0); + GL11.glTranslated(0, -0.5, 0); + } + @Override public void renderOther(ItemStack stack, ItemRenderType type) { diff --git a/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderHenry.java b/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderHenry.java index ce5c9b3fa..df4bbf90c 100644 --- a/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderHenry.java +++ b/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderHenry.java @@ -152,6 +152,13 @@ public class ItemRenderHenry extends ItemRenderWeaponBase { GL11.glTranslated(-0.5, 0.5, 0); } + @Override + public void setupModTable(ItemStack stack) { + double scale = -7.5D; + GL11.glScaled(scale, scale, scale); + GL11.glRotated(90, 0, 1, 0); + } + @Override public void renderOther(ItemStack stack, ItemRenderType type) { GL11.glEnable(GL11.GL_LIGHTING); 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 1a3f532a5..4e69f2572 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 @@ -126,6 +126,14 @@ public class ItemRenderLAG extends ItemRenderWeaponBase { GL11.glTranslated(2.5, 1, 0); } + @Override + public void setupModTable(ItemStack stack) { + double scale = -7.5D; + GL11.glScaled(scale, scale, scale); + GL11.glRotated(90, 0, 1, 0); + GL11.glTranslated(0, 0.5, -2); + } + @Override public void renderOther(ItemStack stack, ItemRenderType type) { GL11.glEnable(GL11.GL_LIGHTING); diff --git a/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderLasrifle.java b/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderLasrifle.java index 8f2e30bff..9ff95eb5b 100644 --- a/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderLasrifle.java +++ b/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderLasrifle.java @@ -90,6 +90,14 @@ public class ItemRenderLasrifle extends ItemRenderWeaponBase { GL11.glTranslated(0.5, 0, 0); } + @Override + public void setupModTable(ItemStack stack) { + double scale = -6.25D; + GL11.glScaled(scale, scale, scale); + GL11.glRotated(90, 0, 1, 0); + GL11.glTranslated(0, -1, 0); + } + @Override public void renderOther(ItemStack stack, ItemRenderType type) { GL11.glEnable(GL11.GL_LIGHTING); diff --git a/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderLiberator.java b/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderLiberator.java index 58cdfeb8e..bb46a00b3 100644 --- a/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderLiberator.java +++ b/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderLiberator.java @@ -142,6 +142,13 @@ public class ItemRenderLiberator extends ItemRenderWeaponBase { GL11.glTranslated(-0.5, 0.5, 0); } + @Override + public void setupModTable(ItemStack stack) { + double scale = -8.75D; + GL11.glScaled(scale, scale, scale); + GL11.glRotated(90, 0, 1, 0); + } + @Override public void renderOther(ItemStack stack, ItemRenderType type) { GL11.glEnable(GL11.GL_LIGHTING); diff --git a/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderM2.java b/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderM2.java index 80ebca69f..2069d94a6 100644 --- a/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderM2.java +++ b/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderM2.java @@ -93,6 +93,14 @@ public class ItemRenderM2 extends ItemRenderWeaponBase { GL11.glTranslated(0.5, -1.25, 0); } + @Override + public void setupModTable(ItemStack stack) { + double scale = -15D; + GL11.glScaled(scale, scale, scale); + GL11.glRotated(90, 0, 1, 0); + GL11.glTranslated(0, -1.5, -0.5); + } + @Override public void renderOther(ItemStack stack, ItemRenderType type) { GL11.glEnable(GL11.GL_LIGHTING); diff --git a/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderMAS36.java b/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderMAS36.java index 6dd2cd761..5ff2805ca 100644 --- a/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderMAS36.java +++ b/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderMAS36.java @@ -144,6 +144,28 @@ public class ItemRenderMAS36 extends ItemRenderWeaponBase { GL11.glTranslated(-0.5, 0.5, 0); } + @Override + public void setupModTable(ItemStack stack) { + double scale = -7.5D; + GL11.glScaled(scale, scale, scale); + GL11.glRotated(90, 0, 1, 0); + GL11.glTranslated(0, -0.25, -2.5); + } + + @Override + public void renderModTable(ItemStack stack, int index) { + GL11.glEnable(GL11.GL_LIGHTING); + + GL11.glShadeModel(GL11.GL_SMOOTH); + Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.mas36_tex); + ResourceManager.mas36.renderPart("Gun"); + ResourceManager.mas36.renderPart("Stock"); + ResourceManager.mas36.renderPart("Bolt"); + //ResourceManager.mas36.renderPart("Scope"); + //ResourceManager.mas36.renderPart("Bayonet"); + GL11.glShadeModel(GL11.GL_FLAT); + } + @Override public void renderOther(ItemStack stack, ItemRenderType type) { GL11.glEnable(GL11.GL_LIGHTING); diff --git a/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderMaresleg.java b/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderMaresleg.java index 81ca1a2ec..e8dfaa091 100644 --- a/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderMaresleg.java +++ b/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderMaresleg.java @@ -146,6 +146,13 @@ public class ItemRenderMaresleg extends ItemRenderWeaponBase { } } + @Override + public void setupModTable(ItemStack stack) { + double scale = -8.75D; + GL11.glScaled(scale, scale, scale); + GL11.glRotated(90, 0, 1, 0); + } + @Override public void renderOther(ItemStack stack, ItemRenderType type) { GL11.glEnable(GL11.GL_LIGHTING); 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 5a60a4aaf..16c90287a 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 @@ -135,6 +135,14 @@ public class ItemRenderMareslegAkimbo extends ItemRenderWeaponBase { GL11.glScaled(scale, scale, scale); } + @Override + public void setupModTable(ItemStack stack) { + double scale = -12.5D; + GL11.glScaled(scale, scale, scale); + GL11.glRotated(90, 0, 1, 0); + GL11.glTranslated(0, -0.5, 1); + } + @Override public void renderInv(ItemStack stack) { @@ -168,6 +176,11 @@ public class ItemRenderMareslegAkimbo extends ItemRenderWeaponBase { GL11.glShadeModel(GL11.GL_FLAT); } + @Override + public void renderModTable(ItemStack stack, int index) { + renderOther(stack, ItemRenderType.INVENTORY); + } + @Override public void renderOther(ItemStack stack, ItemRenderType type) { 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 ed44d201f..d3060f661 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 @@ -103,6 +103,13 @@ public class ItemRenderMinigun extends ItemRenderWeaponBase { GL11.glTranslated(-0.25, 0.5, 0); } + @Override + public void setupModTable(ItemStack stack) { + double scale = -6.25D; + GL11.glScaled(scale, scale, scale); + GL11.glRotated(90, 0, 1, 0); + } + @Override public void renderOther(ItemStack stack, ItemRenderType type) { GL11.glEnable(GL11.GL_LIGHTING); diff --git a/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderMissileLauncher.java b/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderMissileLauncher.java index f5d651a4e..09149bfa4 100644 --- a/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderMissileLauncher.java +++ b/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderMissileLauncher.java @@ -132,6 +132,14 @@ public class ItemRenderMissileLauncher extends ItemRenderWeaponBase { GL11.glTranslated(0, -0.5, 0); } + @Override + public void setupModTable(ItemStack stack) { + double scale = -10D; + GL11.glScaled(scale, scale, scale); + GL11.glRotated(90, 0, 1, 0); + GL11.glTranslated(0, -1, 0); + } + @Override public void renderOther(ItemStack stack, ItemRenderType type) { GL11.glEnable(GL11.GL_LIGHTING); diff --git a/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderPanzerschreck.java b/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderPanzerschreck.java index f0e5380ff..6ad4374c6 100644 --- a/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderPanzerschreck.java +++ b/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderPanzerschreck.java @@ -90,6 +90,13 @@ public class ItemRenderPanzerschreck extends ItemRenderWeaponBase { GL11.glTranslated(-0.5, 0.5, 0); } + @Override + public void setupModTable(ItemStack stack) { + double scale = -10D; + GL11.glScaled(scale, scale, scale); + GL11.glRotated(90, 0, 1, 0); + } + @Override public void renderOther(ItemStack stack, ItemRenderType type) { GL11.glEnable(GL11.GL_LIGHTING); diff --git a/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderPepperbox.java b/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderPepperbox.java index 7f06a4509..a653d60f4 100644 --- a/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderPepperbox.java +++ b/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderPepperbox.java @@ -119,6 +119,13 @@ public class ItemRenderPepperbox extends ItemRenderWeaponBase { GL11.glTranslated(0.5, 0.5, 0); } + @Override + public void setupModTable(ItemStack stack) { + double scale = -7.5D; + GL11.glScaled(scale, scale, scale); + GL11.glRotated(90, 0, 1, 0); + } + @Override public void renderOther(ItemStack stack, ItemRenderType type) { diff --git a/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderQuadro.java b/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderQuadro.java index 0ec9bfe67..61a50d391 100644 --- a/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderQuadro.java +++ b/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderQuadro.java @@ -129,6 +129,14 @@ public class ItemRenderQuadro extends ItemRenderWeaponBase { GL11.glTranslated(0, -1, 0); } + @Override + public void setupModTable(ItemStack stack) { + double scale = -30D; + GL11.glScaled(scale, scale, scale); + GL11.glRotated(90, 0, 1, 0); + GL11.glTranslated(0, -1.125, 0); + } + @Override public void renderOther(ItemStack stack, ItemRenderType type) { GL11.glEnable(GL11.GL_LIGHTING); diff --git a/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderSPAS12.java b/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderSPAS12.java index baff66af8..5cab21b0b 100644 --- a/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderSPAS12.java +++ b/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderSPAS12.java @@ -122,6 +122,14 @@ public class ItemRenderSPAS12 extends ItemRenderWeaponBase { GL11.glTranslated(4.25, -0.5, 0); } + @Override + public void setupModTable(ItemStack stack) { + double scale = -10D; + GL11.glScaled(scale, scale, scale); + GL11.glRotated(90, 0, 1, 0); + GL11.glTranslated(0, -0.5, -4.25); + } + @Override public void renderOther(ItemStack stack, ItemRenderType type) { GL11.glEnable(GL11.GL_LIGHTING); 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 1d7c1e123..64bf11710 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 @@ -163,6 +163,13 @@ public class ItemRenderSTG77 extends ItemRenderWeaponBase { GL11.glTranslated(-0.5, 0.5, 0); } + @Override + public void setupModTable(ItemStack stack) { + double scale = -7.5D; + GL11.glScaled(scale, scale, scale); + GL11.glRotated(90, 0, 1, 0); + } + @Override public void renderOther(ItemStack stack, ItemRenderType type) { GL11.glEnable(GL11.GL_LIGHTING); diff --git a/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderShredder.java b/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderShredder.java index fbb11f533..313ff60a4 100644 --- a/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderShredder.java +++ b/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderShredder.java @@ -158,6 +158,14 @@ public class ItemRenderShredder extends ItemRenderWeaponBase { GL11.glTranslated(-1.5, 0, 0); } + @Override + public void setupModTable(ItemStack stack) { + double scale = -7.5D; + GL11.glScaled(scale, scale, scale); + GL11.glRotated(90, 0, 1, 0); + GL11.glTranslated(0, 0, 1.5); + } + @Override public void renderOther(ItemStack stack, ItemRenderType type) { GL11.glEnable(GL11.GL_LIGHTING); diff --git a/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderStinger.java b/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderStinger.java index 384383688..3e72596e1 100644 --- a/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderStinger.java +++ b/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderStinger.java @@ -118,6 +118,14 @@ public class ItemRenderStinger extends ItemRenderWeaponBase { GL11.glTranslated(0.25, -2.5, 0); } + @Override + public void setupModTable(ItemStack stack) { + double scale = -7.5D; + GL11.glScaled(scale, scale, scale); + GL11.glRotated(-90, 0, 1, 0); + GL11.glTranslated(0, -4, 0); + } + @Override public void renderOther(ItemStack stack, ItemRenderType type) { GL11.glEnable(GL11.GL_LIGHTING); diff --git a/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderTau.java b/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderTau.java index 54226be04..440cdb9d5 100644 --- a/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderTau.java +++ b/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderTau.java @@ -80,6 +80,13 @@ public class ItemRenderTau extends ItemRenderWeaponBase { GL11.glTranslated(-0.25, 0.5, 0); } + @Override + public void setupModTable(ItemStack stack) { + double scale = -10D; + GL11.glScaled(scale, scale, scale); + GL11.glRotated(90, 0, 1, 0); + } + @Override public void renderOther(ItemStack stack, ItemRenderType type) { GL11.glEnable(GL11.GL_LIGHTING); diff --git a/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderTeslaCannon.java b/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderTeslaCannon.java index e961d5517..c10d2c977 100644 --- a/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderTeslaCannon.java +++ b/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderTeslaCannon.java @@ -127,6 +127,14 @@ public class ItemRenderTeslaCannon extends ItemRenderWeaponBase { GL11.glTranslated(0, 0.5, 0); } + @Override + public void setupModTable(ItemStack stack) { + double scale = -8.75D; + GL11.glScaled(scale, scale, scale); + GL11.glRotated(90, 0, 1, 0); + GL11.glTranslated(0, 0.5, 0); + } + @Override public void renderOther(ItemStack stack, ItemRenderType type) { GL11.glEnable(GL11.GL_LIGHTING); diff --git a/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderUzi.java b/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderUzi.java index 40e267595..d2bcd93ae 100644 --- a/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderUzi.java +++ b/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderUzi.java @@ -124,6 +124,14 @@ public class ItemRenderUzi extends ItemRenderWeaponBase { GL11.glTranslated(0, 1, 0); } + @Override + public void setupModTable(ItemStack stack) { + double scale = -6.25D; + GL11.glScaled(scale, scale, scale); + GL11.glRotated(90, 0, 1, 0); + GL11.glTranslated(0, 1, -4); + } + @Override public void renderOther(ItemStack stack, ItemRenderType type) { GL11.glEnable(GL11.GL_LIGHTING); 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 index dded1cc0d..fa98585e3 100644 --- a/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderUziAkimbo.java +++ b/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderUziAkimbo.java @@ -138,6 +138,14 @@ public class ItemRenderUziAkimbo extends ItemRenderWeaponBase { GL11.glScaled(scale, scale, scale); } + @Override + public void setupModTable(ItemStack stack) { + double scale = -6.25D; + GL11.glScaled(scale, scale, scale); + GL11.glRotated(90, 0, 1, 0); + GL11.glTranslated(0, 1, -4); + } + @Override public void renderEquipped(ItemStack stack) { @@ -164,6 +172,20 @@ public class ItemRenderUziAkimbo extends ItemRenderWeaponBase { GL11.glShadeModel(GL11.GL_FLAT); } + @Override + public void renderModTable(ItemStack stack, int index) { + GL11.glEnable(GL11.GL_LIGHTING); + + GL11.glShadeModel(GL11.GL_SMOOTH); + Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.uzi_tex); + ResourceManager.uzi.renderPart(index == 1 ? "GunMirror" : "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 renderOther(ItemStack stack, ItemRenderType type) { GL11.glEnable(GL11.GL_LIGHTING); 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 7a5b32926..634f50e4a 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 @@ -251,6 +251,16 @@ public abstract class ItemRenderWeaponBase implements IItemRenderer { double scale = 0.125D; GL11.glScaled(scale, scale, scale); } + + public void setupModTable(ItemStack stack) { + double scale = -5D; + GL11.glScaled(scale, scale, scale); + GL11.glRotated(90, 0, 1, 0); + } + + public void renderModTable(ItemStack stack, int index) { + renderOther(stack, ItemRenderType.INVENTORY); + } public abstract void renderFirstPerson(ItemStack stack); public void renderOther(ItemStack stack, ItemRenderType type) { } diff --git a/src/main/resources/assets/hbm/textures/gui/machine/gui_weapon_modifier.png b/src/main/resources/assets/hbm/textures/gui/machine/gui_weapon_modifier.png index e2a97539a949cc8eb257767d0f8953467f1cb75f..ed654c869e40d0141fd73fadf7995804f161030f 100644 GIT binary patch literal 1761 zcmds1X;4#F7=3{RBNWiKfFg^7mT{NG!b41mh($(OrtlDqgfO5{P(#2NRD=W>BUToN zK^B4F*s=ry6bWHTL_vv9C4dfVB!PxSpn}NA60-EEb;i!L!~cGN&Yk<+d%k+tB1hxn9`F7pkv*=0gi8U*2fuSwVCKjq{1e|2&7^*L8aotDgJ7N^x>rtan{7dqVp?fs14 z(CpCoGj7`Vud=4G`MqYGE8T(O$7h-=Bk?XG-lR%ONxfgTD+}((TY9HhDECo~QJc%S zy=n3)^;ooxGe=mjzWMfkTYp5h?>P`$q?;_G#^^dL@-o%kzxW>U{BTE)v_OJ?a#=<5<&6QGyk7nJ`4F=A zd2|u3G*X5W@us5k7@@Bho=sHs2bB1r$d-KHbi5O_Ko&@^6*XMBB(--;+w61;s9xJ> z8#6vadROPY38-jFO(;w_Rf!_lp_pVH;1L=~S`DDT1F*Khnj^r*zSm|tYL)tt@J?8? zGj*`Eytj&X$=RtVw+gMA>PWo(yLIP;=IUkHZ+kbEeAAX}V#U{n-ULprbH zE7uBVf!ma616G1YLms9^&-J9r66O~8ZoXD-juP`!#Zwv>tLsN!w64CsY&`uz8QFrL zABPo`w%~g-p*bBaFhjAoRNiP^j57t2+T%@&X5@VWYV%-&nmv-8$8m4&yMT+-&yp!^w*X z?M^k8tn8F`0Tn$j(*fH|*$BIv2ybP=#)|4%f2Q?=W!m(e13UH`J?~x5yel)Xn{jUb z;c3{?J_F#MKlo z0aIu75T7bsQa-zY-qkWPBZgO1hrpzVPjXd=v3v^uG|{)wCoZGR6bA{oi%TSC-H+N} zWA9f1DTLjhB;7BUSH(OY_@&qfJ=As2vs}6XWET_^aJd76gS?o{)fwSas2o+slcbFw zrLxiochv5SgSuPU#%3BlB9X`!2q+c`;d_uVBMXVMXlyqmbPp#!w5byaqNvmku1{#v$93>=fk;|<7Uq{Tby#NbVTf9R~V4x%eNt`gTi1;f{kkK7=*y1GIT zzp05xUvzx2y~ZYk_LEzh3G14|{44FRbRnc{1vVnTE4?-PGlm~58V*8g+_M(nAhgm9 z|7j&F(FLL%ByYrFVC+$Jl6{ShUt+$_7b_Vfp=-BQ)7tDLFvOZjhghkOO4{*!t2F;F zKD840=N1K<^dX014+oj#@WY`Y4T$;dc}%{8i>kyryPSJEuXs={Ul?-Ff!7jZ$0Y@b w?H^AzV5-3-pl*A=K|Pph{pJ7sjeUo-x>>7AEE_x{8b3~X9rW?2bSEeM1xpyr1poj5 literal 7075 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 KdX+lPG5-cI=G80!