guns are great, but why not make them better?

This commit is contained in:
Bob 2025-03-19 22:13:42 +01:00
parent 5a9f3e75dc
commit 1538932316
52 changed files with 574 additions and 81 deletions

View File

@ -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),

View File

@ -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();
}
}
}

View File

@ -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<ItemStack, LambdaContext> getSmokeHandler(ItemStack stack) { return WeaponModManager.eval(smokeHandler_DNA, stack, CON_SMOKE, this); }
public BiConsumer<ItemStack, LambdaContext> 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<ItemStack, LambdaContext> getSmokeHandler(ItemStack stack) { return WeaponModManager.eval(smokeHandler_DNA, stack, CON_SMOKE, this, this.index); }
public BiConsumer<ItemStack, LambdaContext> getOrchestra(ItemStack stack) { return WeaponModManager.eval(this.orchestra_DNA, stack, CON_ORCHESTRA, this, this.index); }
public BiConsumer<ItemStack, LambdaContext> getPressPrimary(ItemStack stack) { return WeaponModManager.eval(this.onPressPrimary_DNA, stack, CON_ONPRESSPRIMARY, this); }
public BiConsumer<ItemStack, LambdaContext> getPressSecondary(ItemStack stack) { return WeaponModManager.eval(this.onPressSecondary_DNA, stack, CON_ONPRESSSECONDARY, this); }
public BiConsumer<ItemStack, LambdaContext> getPressTertiary(ItemStack stack) { return WeaponModManager.eval(this.onPressTertiary_DNA, stack, CON_ONPRESSTERTIARY, this); }
public BiConsumer<ItemStack, LambdaContext> getPressReload(ItemStack stack) { return WeaponModManager.eval(this.onPressReload_DNA, stack, CON_ONPRESSRELOAD, this); }
public BiConsumer<ItemStack, LambdaContext> getPressPrimary(ItemStack stack) { return WeaponModManager.eval(this.onPressPrimary_DNA, stack, CON_ONPRESSPRIMARY, this, this.index); }
public BiConsumer<ItemStack, LambdaContext> getPressSecondary(ItemStack stack) { return WeaponModManager.eval(this.onPressSecondary_DNA, stack, CON_ONPRESSSECONDARY, this, this.index); }
public BiConsumer<ItemStack, LambdaContext> getPressTertiary(ItemStack stack) { return WeaponModManager.eval(this.onPressTertiary_DNA, stack, CON_ONPRESSTERTIARY, this, this.index); }
public BiConsumer<ItemStack, LambdaContext> getPressReload(ItemStack stack) { return WeaponModManager.eval(this.onPressReload_DNA, stack, CON_ONPRESSRELOAD, this, this.index); }
public BiConsumer<ItemStack, LambdaContext> getReleasePrimary(ItemStack stack) { return WeaponModManager.eval(this.onReleasePrimary_DNA, stack, CON_ONRELEASEPRIMARY, this); }
public BiConsumer<ItemStack, LambdaContext> getReleaseSecondary(ItemStack stack) { return WeaponModManager.eval(this.onReleaseSecondary_DNA, stack, CON_ONRELEASESECONDARY, this); }
public BiConsumer<ItemStack, LambdaContext> getReleaseTertiary(ItemStack stack) { return WeaponModManager.eval(this.onReleaseTertiary_DNA, stack, CON_ONRELEASETERTIARY, this); }
public BiConsumer<ItemStack, LambdaContext> getReleaseReload(ItemStack stack) { return WeaponModManager.eval(this.onReleaseReload_DNA, stack, CON_ONRELEASERELOAD, this); }
public BiConsumer<ItemStack, LambdaContext> getReleasePrimary(ItemStack stack) { return WeaponModManager.eval(this.onReleasePrimary_DNA, stack, CON_ONRELEASEPRIMARY, this, this.index); }
public BiConsumer<ItemStack, LambdaContext> getReleaseSecondary(ItemStack stack) { return WeaponModManager.eval(this.onReleaseSecondary_DNA, stack, CON_ONRELEASESECONDARY, this, this.index); }
public BiConsumer<ItemStack, LambdaContext> getReleaseTertiary(ItemStack stack) { return WeaponModManager.eval(this.onReleaseTertiary_DNA, stack, CON_ONRELEASETERTIARY, this, this.index); }
public BiConsumer<ItemStack, LambdaContext> getReleaseReload(ItemStack stack) { return WeaponModManager.eval(this.onReleaseReload_DNA, stack, CON_ONRELEASERELOAD, this, this.index); }
public BiConsumer<ItemStack, LambdaContext> getDecider(ItemStack stack) { return WeaponModManager.eval(this.decider_DNA, stack, CON_DECIDER, this); }
public BiConsumer<ItemStack, LambdaContext> getDecider(ItemStack stack) { return WeaponModManager.eval(this.decider_DNA, stack, CON_DECIDER, this, this.index); }
public BiFunction<ItemStack, AnimType, BusAnimation> 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<ItemStack, AnimType, BusAnimation> 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; }

View File

@ -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

View File

@ -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<ItemStack, LambdaContext> 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<ItemStack, LambdaContext, Boolean> getCanFire(ItemStack stack) { return WeaponModManager.eval(this.canFire_DNA, stack, FUN_CANFIRE, this); }
public BiConsumer<ItemStack, LambdaContext> getOnFire(ItemStack stack) { return WeaponModManager.eval(this.onFire_DNA, stack, CON_ONFIRE, this); }
public BiConsumer<ItemStack, LambdaContext> getRecoil(ItemStack stack) { return WeaponModManager.eval(this.onRecoil_DNA, stack, CON_ONRECOIL, this); }
public BiFunction<ItemStack, LambdaContext, Boolean> getCanFire(ItemStack stack) { return WeaponModManager.eval(this.canFire_DNA, stack, FUN_CANFIRE, this, parent.index); }
public BiConsumer<ItemStack, LambdaContext> getOnFire(ItemStack stack) { return WeaponModManager.eval(this.onFire_DNA, stack, CON_ONFIRE, this, parent.index); }
public BiConsumer<ItemStack, LambdaContext> 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; }

View File

@ -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<Integer, IWeaponMod> 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<IWeaponMod> 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> T eval(T base, ItemStack stack, String key, Object parent) {
public static <T> 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);
}

View File

@ -14,7 +14,7 @@ public class WeaponModTestDamage extends WeaponModBase {
public <T> 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;

View File

@ -14,7 +14,7 @@ public class WeaponModTestFirerate extends WeaponModBase {
public <T> 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;

View File

@ -14,7 +14,7 @@ public class WeaponModTestMulti extends WeaponModBase {
public <T> 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;

View File

@ -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) {

View File

@ -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);

View File

@ -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);

View File

@ -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);

View File

@ -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);

View File

@ -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);

View File

@ -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);

View File

@ -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);

View File

@ -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) {

View File

@ -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) {

View File

@ -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);

View File

@ -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) {

View File

@ -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);

View File

@ -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);

View File

@ -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);

View File

@ -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);

View File

@ -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);

View File

@ -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);

View File

@ -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);

View File

@ -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) {

View File

@ -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);

View File

@ -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);

View File

@ -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);

View File

@ -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);

View File

@ -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);

View File

@ -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);

View File

@ -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);

View File

@ -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) {

View File

@ -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);

View File

@ -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);

View File

@ -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);

View File

@ -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) {

View File

@ -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);

View File

@ -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);

View File

@ -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);

View File

@ -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);

View File

@ -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);

View File

@ -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);

View File

@ -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);

View File

@ -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);

View File

@ -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);

View File

@ -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) { }

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.9 KiB

After

Width:  |  Height:  |  Size: 1.7 KiB