diff --git a/src/main/java/com/hbm/inventory/container/ContainerWeaponTable.java b/src/main/java/com/hbm/inventory/container/ContainerWeaponTable.java index 7832b11dc..9b2f23c2a 100644 --- a/src/main/java/com/hbm/inventory/container/ContainerWeaponTable.java +++ b/src/main/java/com/hbm/inventory/container/ContainerWeaponTable.java @@ -1,7 +1,7 @@ package com.hbm.inventory.container; import com.hbm.items.weapon.sedna.ItemGunBaseNT; -import com.hbm.items.weapon.sedna.mods.WeaponModManager; +import com.hbm.items.weapon.sedna.mods.XWeaponModManager; import com.hbm.util.InventoryUtil; import net.minecraft.entity.player.EntityPlayer; @@ -36,7 +36,7 @@ public class ContainerWeaponTable extends Container { ContainerWeaponTable.this.index = 0; if(stack != null) { - ItemStack[] mods = WeaponModManager.getUpgradeItems(stack, index); + ItemStack[] mods = XWeaponModManager.getUpgradeItems(stack, index); if(mods != null) for(int i = 0; i < Math.min(mods.length, 7); i++) { ContainerWeaponTable.this.mods.setInventorySlotContents(i, mods[i]); @@ -50,7 +50,7 @@ public class ContainerWeaponTable extends Container { public void onPickupFromSlot(EntityPlayer player, ItemStack stack) { super.onPickupFromSlot(player, stack); - WeaponModManager.install( + XWeaponModManager.install( stack, index, mods.getStackInSlot(0), mods.getStackInSlot(1), @@ -62,7 +62,7 @@ public class ContainerWeaponTable extends Container { for(int i = 0; i < 7; i++) { ItemStack mod = ContainerWeaponTable.this.mods.getStackInSlot(i); - if(WeaponModManager.isApplicable(stack, mod, index, false)) ContainerWeaponTable.this.mods.setInventorySlotContents(i, null); + if(XWeaponModManager.isApplicable(stack, mod, index, false)) ContainerWeaponTable.this.mods.setInventorySlotContents(i, null); } ContainerWeaponTable.this.index = 0; @@ -92,7 +92,7 @@ public class ContainerWeaponTable extends Container { int configs = ((ItemGunBaseNT) stack.getItem()).getConfigCount(); if(configs < button) return null; - WeaponModManager.install( + XWeaponModManager.install( stack, this.index, mods.getStackInSlot(0), mods.getStackInSlot(1), @@ -104,13 +104,13 @@ public class ContainerWeaponTable extends Container { 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); + if(XWeaponModManager.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); + ItemStack[] mods = XWeaponModManager.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]); @@ -141,7 +141,7 @@ public class ContainerWeaponTable extends Container { ItemStack itemstack = this.gun.getStackInSlotOnClosing(0); if(itemstack != null) { - WeaponModManager.uninstall(itemstack, index); + XWeaponModManager.uninstall(itemstack, index); player.dropPlayerItemWithRandomChoice(itemstack, false); } } @@ -190,27 +190,27 @@ public class ContainerWeaponTable extends Container { @Override public boolean isItemValid(ItemStack stack) { - return gun.getStackInSlot(0) != null && WeaponModManager.isApplicable(gun.getStackInSlot(0), stack, index, true); + return gun.getStackInSlot(0) != null && XWeaponModManager.isApplicable(gun.getStackInSlot(0), stack, index, true); } @Override public void putStack(ItemStack stack) { super.putStack(stack); refreshInstalledMods(); - WeaponModManager.onInstallStack(gun.getStackInSlot(0), stack, index); + XWeaponModManager.onInstallStack(gun.getStackInSlot(0), stack, index); } @Override public void onPickupFromSlot(EntityPlayer player, ItemStack stack) { super.onPickupFromSlot(player, stack); refreshInstalledMods(); - WeaponModManager.onUninstallStack(gun.getStackInSlot(0), stack, index); + XWeaponModManager.onUninstallStack(gun.getStackInSlot(0), stack, index); } public void refreshInstalledMods() { if(gun.getStackInSlot(0) == null) return; - WeaponModManager.uninstall(gun.getStackInSlot(0), index); - WeaponModManager.install( + XWeaponModManager.uninstall(gun.getStackInSlot(0), index); + XWeaponModManager.install( gun.getStackInSlot(0), index, mods.getStackInSlot(0), mods.getStackInSlot(1), 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 5c8602153..2a4c3f207 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/GunConfig.java +++ b/src/main/java/com/hbm/items/weapon/sedna/GunConfig.java @@ -10,7 +10,7 @@ import com.hbm.items.weapon.sedna.ItemGunBaseNT.SmokeNode; import com.hbm.items.weapon.sedna.factory.GunStateDecider; import com.hbm.items.weapon.sedna.factory.Lego; import com.hbm.items.weapon.sedna.hud.IHUDComponent; -import com.hbm.items.weapon.sedna.mods.WeaponModManager; +import com.hbm.items.weapon.sedna.mods.XWeaponModManager; import com.hbm.render.anim.AnimationEnums.GunAnimation; import com.hbm.render.anim.BusAnimation; @@ -89,34 +89,34 @@ public class GunConfig { /* GETTERS */ - 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 hasThermalSights(ItemStack stack) { return WeaponModManager.eval(thermalSights_DNA, stack, B_THERMALSIGHTS, this, this.index); } - public boolean getReloadChangesType(ItemStack stack) { return WeaponModManager.eval(reloadRequiresTypeChange_DNA, stack, B_RELOADREQUIRESTYPECHANGE, 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 Receiver[] getReceivers(ItemStack stack) { return XWeaponModManager.eval(receivers_DNA, stack, O_RECEIVERS, this, this.index); } + public float getDurability(ItemStack stack) { return XWeaponModManager.eval(durability_DNA, stack, F_DURABILITY, this, this.index); } + public int getDrawDuration(ItemStack stack) { return XWeaponModManager.eval(drawDuration_DNA, stack, I_DRAWDURATION, this, this.index); } + public int getInspectDuration(ItemStack stack) { return XWeaponModManager.eval(inspectDuration_DNA, stack, I_INSPECTDURATION, this, this.index); } + public boolean getInspectCancel(ItemStack stack) { return XWeaponModManager.eval(inspectCancel_DNA, stack, I_INSPECTCANCEL, this, this.index); } + public Crosshair getCrosshair(ItemStack stack) { return XWeaponModManager.eval(crosshair_DNA, stack, O_CROSSHAIR, this, this.index); } + public boolean getHideCrosshair(ItemStack stack) { return XWeaponModManager.eval(hideCrosshair_DNA, stack, B_HIDECROSSHAIR, this, this.index); } + public boolean hasThermalSights(ItemStack stack) { return XWeaponModManager.eval(thermalSights_DNA, stack, B_THERMALSIGHTS, this, this.index); } + public boolean getReloadChangesType(ItemStack stack) { return XWeaponModManager.eval(reloadRequiresTypeChange_DNA, stack, B_RELOADREQUIRESTYPECHANGE, this, this.index); } + public boolean getReloadAnimSequential(ItemStack stack) { return XWeaponModManager.eval(reloadAnimationsSequential_DNA, stack, B_RELOADANIMATIONSEQUENTIAL, this, this.index); } + public ResourceLocation getScopeTexture(ItemStack stack) { return XWeaponModManager.eval(scopeTexture_DNA, stack, O_SCOPETEXTURE, this, this.index); } + public BiConsumer getSmokeHandler(ItemStack stack) { return XWeaponModManager.eval(smokeHandler_DNA, stack, CON_SMOKE, this, this.index); } + public BiConsumer getOrchestra(ItemStack stack) { return XWeaponModManager.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, 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 getPressPrimary(ItemStack stack) { return XWeaponModManager.eval(this.onPressPrimary_DNA, stack, CON_ONPRESSPRIMARY, this, this.index); } + public BiConsumer getPressSecondary(ItemStack stack) { return XWeaponModManager.eval(this.onPressSecondary_DNA, stack, CON_ONPRESSSECONDARY, this, this.index); } + public BiConsumer getPressTertiary(ItemStack stack) { return XWeaponModManager.eval(this.onPressTertiary_DNA, stack, CON_ONPRESSTERTIARY, this, this.index); } + public BiConsumer getPressReload(ItemStack stack) { return XWeaponModManager.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, 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 getReleasePrimary(ItemStack stack) { return XWeaponModManager.eval(this.onReleasePrimary_DNA, stack, CON_ONRELEASEPRIMARY, this, this.index); } + public BiConsumer getReleaseSecondary(ItemStack stack) { return XWeaponModManager.eval(this.onReleaseSecondary_DNA, stack, CON_ONRELEASESECONDARY, this, this.index); } + public BiConsumer getReleaseTertiary(ItemStack stack) { return XWeaponModManager.eval(this.onReleaseTertiary_DNA, stack, CON_ONRELEASETERTIARY, this, this.index); } + public BiConsumer getReleaseReload(ItemStack stack) { return XWeaponModManager.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, this.index); } + public BiConsumer getDecider(ItemStack stack) { return XWeaponModManager.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, this.index); } - public IHUDComponent[] getHUDComponents(ItemStack stack) { return WeaponModManager.eval(this.hudComponents_DNA, stack, O_HUDCOMPONENTS, this, this.index); } + public BiFunction getAnims(ItemStack stack) { return XWeaponModManager.eval(this.animations_DNA, stack, FUN_ANIMNATIONS, this, this.index); } + public IHUDComponent[] getHUDComponents(ItemStack stack) { return XWeaponModManager.eval(this.hudComponents_DNA, stack, O_HUDCOMPONENTS, this, this.index); } /* SETTERS */ 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 54bc6b758..48d956f8a 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/ItemGunBaseNT.java +++ b/src/main/java/com/hbm/items/weapon/sedna/ItemGunBaseNT.java @@ -20,7 +20,7 @@ import com.hbm.items.armor.ArmorTrenchmaster; import com.hbm.items.weapon.sedna.hud.IHUDComponent; import com.hbm.items.weapon.sedna.mags.IMagazine; import com.hbm.items.weapon.sedna.mags.MagazineInfinite; -import com.hbm.items.weapon.sedna.mods.WeaponModManager; +import com.hbm.items.weapon.sedna.mods.XWeaponModManager; import com.hbm.lib.RefStrings; import com.hbm.main.MainRegistry; import com.hbm.packet.PacketDispatcher; @@ -115,7 +115,7 @@ public class ItemGunBaseNT extends Item implements IKeybindReceiver, IItemHUD, I 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, index); + return XWeaponModManager.eval(cfg, stack, O_GUNCONFIG + index, this, index); } public int getConfigCount() { @@ -193,7 +193,7 @@ public class ItemGunBaseNT extends Item implements IKeybindReceiver, IItemHUD, I list.add(I18nUtil.resolveKey("gui.weapon.condition") + ": " + dura + "%"); } - for(ItemStack upgrade : WeaponModManager.getUpgradeItems(stack, i)) { + for(ItemStack upgrade : XWeaponModManager.getUpgradeItems(stack, i)) { list.add(EnumChatFormatting.YELLOW + upgrade.getDisplayName()); } } 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 90f2aa7a1..e867b05ab 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/Receiver.java +++ b/src/main/java/com/hbm/items/weapon/sedna/Receiver.java @@ -6,7 +6,7 @@ import java.util.function.BiFunction; import com.hbm.items.weapon.sedna.ItemGunBaseNT.LambdaContext; import com.hbm.items.weapon.sedna.factory.Lego; import com.hbm.items.weapon.sedna.mags.IMagazine; -import com.hbm.items.weapon.sedna.mods.WeaponModManager; +import com.hbm.items.weapon.sedna.mods.XWeaponModManager; import net.minecraft.item.ItemStack; import net.minecraft.util.Vec3; @@ -88,37 +88,37 @@ public class Receiver { protected BiConsumer onRecoil_DNA; /* GETTERS */ - 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 getSplitProjectiles(ItemStack stack) { return WeaponModManager.eval(this.splitProjectiles_DNA, stack, F_SPLITPROJECTILES, this, parent.index); } - public float getInnateSpread(ItemStack stack) { return WeaponModManager.eval(this.spreadInnate_DNA, stack, F_SPREADINNATE, 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 float getBaseDamage(ItemStack stack) { return XWeaponModManager.eval(this.baseDamage_DNA, stack, F_BASEDAMAGE, this, parent.index); } + public int getDelayAfterFire(ItemStack stack) { return XWeaponModManager.eval(this.delayAfterFire_DNA, stack, I_DELAYAFTERFIRE, this, parent.index); } + public int getDelayAfterDryFire(ItemStack stack) { return XWeaponModManager.eval(this.delayAfterDryFire_DNA, stack, I_DELAYAFTERDRYFIRE, this, parent.index); } + public int getRoundsPerCycle(ItemStack stack) { return XWeaponModManager.eval(this.roundsPerCycle_DNA, stack, I_ROUNDSPERCYCLE, this, parent.index); } + public float getSplitProjectiles(ItemStack stack) { return XWeaponModManager.eval(this.splitProjectiles_DNA, stack, F_SPLITPROJECTILES, this, parent.index); } + public float getInnateSpread(ItemStack stack) { return XWeaponModManager.eval(this.spreadInnate_DNA, stack, F_SPREADINNATE, this, parent.index); } + public float getAmmoSpread(ItemStack stack) { return XWeaponModManager.eval(this.spreadMultAmmo_DNA, stack, F_SPREADAMMO, this, parent.index); } + public float getHipfireSpread(ItemStack stack) { return XWeaponModManager.eval(this.spreadPenaltyHipfire_DNA, stack, F_SPREADHIPFIRE, this, parent.index); } + public float getDurabilitySpread(ItemStack stack) { return XWeaponModManager.eval(this.spreadDurability_DNA, stack, F_SPREADDURABILITY, this, parent.index); } + public boolean getRefireOnHold(ItemStack stack) { return XWeaponModManager.eval(this.refireOnHold_DNA, stack, B_REFIREONHOLD, this, parent.index); } + public boolean getRefireAfterDry(ItemStack stack) { return XWeaponModManager.eval(this.refireAfterDry_DNA, stack, B_REFIREAFTERDRY, this, parent.index); } + public boolean getDoesDryFire(ItemStack stack) { return XWeaponModManager.eval(this.doesDryFire_DNA, stack, B_DOESDRYFIRE, this, parent.index); } + public boolean getDoesDryFireAfterAuto(ItemStack stack) { return XWeaponModManager.eval(this.doesDryFireAfterAuto_DNA, stack, B_DOESDRYFIREAFTERAUTO, this, parent.index); } + public boolean getEjectOnFire(ItemStack stack) { return XWeaponModManager.eval(this.ejectOnFire_DNA, stack, B_EJECTONFIRE, this, parent.index); } + public boolean getReloadOnEmpty(ItemStack stack) { return XWeaponModManager.eval(this.reloadOnEmpty_DNA, stack, B_RELOADONEMPTY, this, parent.index); } + public int getReloadBeginDuration(ItemStack stack) { return XWeaponModManager.eval(this.reloadBeginDuration_DNA, stack, I_RELOADBEGINDURATION, this, parent.index); } + public int getReloadCycleDuration(ItemStack stack) { return XWeaponModManager.eval(this.reloadCycleDuration_DNA, stack, I_RELOADCYCLEDURATION, this, parent.index); } + public int getReloadEndDuration(ItemStack stack) { return XWeaponModManager.eval(this.reloadEndDuration_DNA, stack, I_RELOADENDDURATION, this, parent.index); } + public int getReloadCockOnEmptyPre(ItemStack stack) { return XWeaponModManager.eval(this.reloadCockOnEmptyPre_DNA, stack, I_RELOADCOCKONEMPTYPRE, this, parent.index); } + public int getReloadCockOnEmptyPost(ItemStack stack) { return XWeaponModManager.eval(this.reloadCockOnEmptyPost_DNA, stack, I_RELOADCOCKONEMPTYPOST, this, parent.index); } + public int getJamDuration(ItemStack stack) { return XWeaponModManager.eval(this.jamDuration_DNA, stack, I_JAMDURATION, this, parent.index); } + public String getFireSound(ItemStack stack) { return XWeaponModManager.eval(this.fireSound_DNA, stack, S_FIRESOUND, this, parent.index); } + public float getFireVolume(ItemStack stack) { return XWeaponModManager.eval(this.fireVolume_DNA, stack, F_FIREVOLUME, this, parent.index); } + public float getFirePitch(ItemStack stack) { return XWeaponModManager.eval(this.firePitch_DNA, stack, F_FIREPITCH, this, parent.index); } + public IMagazine getMagazine(ItemStack stack) { return XWeaponModManager.eval(this.magazine_DNA, stack, O_MAGAZINE, this, parent.index); } + public Vec3 getProjectileOffset(ItemStack stack) { return XWeaponModManager.eval(this.projectileOffset_DNA, stack, O_PROJECTILEOFFSET, this, parent.index); } + public Vec3 getProjectileOffsetScoped(ItemStack stack) { return XWeaponModManager.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, 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); } + public BiFunction getCanFire(ItemStack stack) { return XWeaponModManager.eval(this.canFire_DNA, stack, FUN_CANFIRE, this, parent.index); } + public BiConsumer getOnFire(ItemStack stack) { return XWeaponModManager.eval(this.onFire_DNA, stack, CON_ONFIRE, this, parent.index); } + public BiConsumer getRecoil(ItemStack stack) { return XWeaponModManager.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/factory/Orchestras.java b/src/main/java/com/hbm/items/weapon/sedna/factory/Orchestras.java index 46311576e..0f96b5e87 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/factory/Orchestras.java +++ b/src/main/java/com/hbm/items/weapon/sedna/factory/Orchestras.java @@ -11,7 +11,7 @@ import com.hbm.items.weapon.sedna.impl.ItemGunChargeThrower; import com.hbm.items.weapon.sedna.impl.ItemGunStinger; import com.hbm.items.weapon.sedna.ItemGunBaseNT.LambdaContext; import com.hbm.items.weapon.sedna.mags.IMagazine; -import com.hbm.items.weapon.sedna.mods.WeaponModManager; +import com.hbm.items.weapon.sedna.mods.XWeaponModManager; import com.hbm.lib.ModDamageSource; import com.hbm.main.MainRegistry; import com.hbm.packet.toclient.AuxParticlePacketNT; @@ -552,11 +552,11 @@ public class Orchestras { AudioWrapper audio = MainRegistry.proxy.getLoopedSound("hbm:weapon.fire.flameLoop", (float) entity.posX, (float) entity.posY, (float) entity.posZ, 1F, 15F, 1F, 10); ItemGunBaseNT.loopedSounds.put(entity, audio); audio.startSound(); + audio.attachTo(entity); } //keepalive if(runningAudio != null && runningAudio.isPlaying()) { runningAudio.keepAlive(); - runningAudio.updatePosition((float) entity.posX, (float) entity.posY, (float) entity.posZ); } } else { //stop sound due to timeout @@ -744,7 +744,7 @@ public class Orchestras { if(entity.worldObj.isRemote) return; GunAnimation type = ItemGunBaseNT.getLastAnim(stack, ctx.configIndex); int timer = ItemGunBaseNT.getAnimTimer(stack, ctx.configIndex); - boolean scoped = stack.getItem() == ModItems.gun_g3_zebra || WeaponModManager.hasUpgrade(stack, 0, WeaponModManager.ID_SCOPE); + boolean scoped = stack.getItem() == ModItems.gun_g3_zebra || XWeaponModManager.hasUpgrade(stack, 0, XWeaponModManager.ID_SCOPE); boolean aiming = ItemGunBaseNT.getIsAiming(stack) && !scoped; if(type == GunAnimation.CYCLE) { @@ -999,13 +999,13 @@ public class Orchestras { if(type == GunAnimation.CYCLE) { if(timer == 0) { - int rounds = WeaponModManager.hasUpgrade(stack, ctx.configIndex, WeaponModManager.ID_MINIGUN_SPEED) ? 3 : 1; + int rounds = XWeaponModManager.hasUpgrade(stack, ctx.configIndex, XWeaponModManager.ID_MINIGUN_SPEED) ? 3 : 1; for(int i = 0; i < rounds; i++) { SpentCasing casing = ctx.config.getReceivers(stack)[0].getMagazine(stack).getCasing(stack, ctx.inventory); if(casing != null) CasingCreator.composeEffect(entity.worldObj, entity, aiming ? 0.125 : 0.5, aiming ? -0.125 : -0.25, aiming ? -0.25 : -0.5D, 0, 0.18, -0.12, 0.01, (float)entity.getRNG().nextGaussian() * 15F, (float)entity.getRNG().nextGaussian() * 15F, casing.getName()); } } - if(timer == (WeaponModManager.hasUpgrade(stack, 0, 207) ? 3 : 1)) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.revolverSpin", 1F, 0.75F); + if(timer == (XWeaponModManager.hasUpgrade(stack, 0, 207) ? 3 : 1)) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.revolverSpin", 1F, 0.75F); } if(type == GunAnimation.CYCLE_DRY) { if(timer == 0) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.dryFireClick", 1F, 0.75F); @@ -1028,13 +1028,13 @@ public class Orchestras { if(type == GunAnimation.CYCLE) { if(timer == 0) { int index = ctx.configIndex == 0 ? -1 : 1; - int rounds = WeaponModManager.hasUpgrade(stack, ctx.configIndex, WeaponModManager.ID_MINIGUN_SPEED) ? 3 : 1; + int rounds = XWeaponModManager.hasUpgrade(stack, ctx.configIndex, XWeaponModManager.ID_MINIGUN_SPEED) ? 3 : 1; for(int i = 0; i < rounds; i++) { SpentCasing casing = ctx.config.getReceivers(stack)[0].getMagazine(stack).getCasing(stack, ctx.inventory); if(casing != null) CasingCreator.composeEffect(entity.worldObj, entity, 0.25, -0.25, -0.5D * index, 0, 0.18, -0.12 * index, 0.01, (float)entity.getRNG().nextGaussian() * 15F, (float)entity.getRNG().nextGaussian() * 15F, casing.getName()); } } - if(timer == (WeaponModManager.hasUpgrade(stack, 0, 207) ? 3 : 1)) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.revolverSpin", 1F, 0.75F); + if(timer == (XWeaponModManager.hasUpgrade(stack, 0, 207) ? 3 : 1)) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.revolverSpin", 1F, 0.75F); } if(type == GunAnimation.CYCLE_DRY) { if(timer == 0) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.dryFireClick", 1F, 0.75F); @@ -1448,7 +1448,7 @@ public class Orchestras { if(entity.worldObj.isRemote) return; GunAnimation type = ItemGunBaseNT.getLastAnim(stack, ctx.configIndex); int timer = ItemGunBaseNT.getAnimTimer(stack, ctx.configIndex); - boolean aiming = ItemGunBaseNT.getIsAiming(stack) && !WeaponModManager.hasUpgrade(stack, 0, WeaponModManager.ID_SCOPE); + boolean aiming = ItemGunBaseNT.getIsAiming(stack) && !XWeaponModManager.hasUpgrade(stack, 0, XWeaponModManager.ID_SCOPE); if(type == GunAnimation.EQUIP) { if(timer == 10) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.openLatch", 1F, 1F); diff --git a/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory12ga.java b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory12ga.java index 2216a05d9..05e44d504 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory12ga.java +++ b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory12ga.java @@ -25,7 +25,7 @@ import com.hbm.items.weapon.sedna.factory.GunFactory.EnumAmmoSecret; import com.hbm.items.weapon.sedna.mags.MagazineBelt; import com.hbm.items.weapon.sedna.mags.MagazineFullReload; import com.hbm.items.weapon.sedna.mags.MagazineSingleReload; -import com.hbm.items.weapon.sedna.mods.WeaponModManager; +import com.hbm.items.weapon.sedna.mods.XWeaponModManager; import com.hbm.main.MainRegistry; import com.hbm.main.ResourceManager; import com.hbm.packet.PacketDispatcher; @@ -387,7 +387,7 @@ public class XFactory12ga { } public static Function LAMBDA_NAME_MARESLEG = (stack) -> { - if(WeaponModManager.hasUpgrade(stack, 0, WeaponModManager.ID_SAWED_OFF)) return stack.getUnlocalizedName() + "_short"; + if(XWeaponModManager.hasUpgrade(stack, 0, XWeaponModManager.ID_SAWED_OFF)) return stack.getUnlocalizedName() + "_short"; return null; }; diff --git a/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory22lr.java b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory22lr.java index a5948b2d6..fbbf2c5e5 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory22lr.java +++ b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory22lr.java @@ -16,7 +16,7 @@ import com.hbm.items.weapon.sedna.ItemGunBaseNT.LambdaContext; import com.hbm.items.weapon.sedna.ItemGunBaseNT.WeaponQuality; import com.hbm.items.weapon.sedna.factory.GunFactory.EnumAmmo; import com.hbm.items.weapon.sedna.mags.MagazineFullReload; -import com.hbm.items.weapon.sedna.mods.WeaponModManager; +import com.hbm.items.weapon.sedna.mods.XWeaponModManager; import com.hbm.main.ResourceManager; import com.hbm.particle.SpentCasing; import com.hbm.particle.SpentCasing.CasingType; @@ -59,7 +59,7 @@ public class XFactory22lr { } public static Function LAMBDA_NAME_AM180 = (stack) -> { - if(WeaponModManager.hasUpgrade(stack, 0, WeaponModManager.ID_SILENCER)) return stack.getUnlocalizedName() + "_silenced"; + if(XWeaponModManager.hasUpgrade(stack, 0, XWeaponModManager.ID_SILENCER)) return stack.getUnlocalizedName() + "_silenced"; return null; }; diff --git a/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory44.java b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory44.java index ad7225d4e..6b2230e0e 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory44.java +++ b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory44.java @@ -21,7 +21,7 @@ import com.hbm.items.weapon.sedna.factory.GunFactory.EnumAmmo; import com.hbm.items.weapon.sedna.factory.GunFactory.EnumAmmoSecret; import com.hbm.items.weapon.sedna.mags.MagazineFullReload; import com.hbm.items.weapon.sedna.mags.MagazineSingleReload; -import com.hbm.items.weapon.sedna.mods.WeaponModManager; +import com.hbm.items.weapon.sedna.mods.XWeaponModManager; import com.hbm.lib.RefStrings; import com.hbm.particle.SpentCasing; import com.hbm.particle.SpentCasing.CasingType; @@ -151,7 +151,7 @@ public class XFactory44 { } public static Function LAMBDA_NAME_NOPIP = (stack) -> { - if(WeaponModManager.hasUpgrade(stack, 0, WeaponModManager.ID_SCOPE)) return stack.getUnlocalizedName() + "_scoped"; + if(XWeaponModManager.hasUpgrade(stack, 0, XWeaponModManager.ID_SCOPE)) return stack.getUnlocalizedName() + "_scoped"; return null; }; diff --git a/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory556mm.java b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory556mm.java index 290ebdf33..a01c8eee4 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory556mm.java +++ b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory556mm.java @@ -19,7 +19,7 @@ import com.hbm.items.weapon.sedna.ItemGunBaseNT.LambdaContext; import com.hbm.items.weapon.sedna.ItemGunBaseNT.WeaponQuality; import com.hbm.items.weapon.sedna.factory.GunFactory.EnumAmmo; import com.hbm.items.weapon.sedna.mags.MagazineFullReload; -import com.hbm.items.weapon.sedna.mods.WeaponModManager; +import com.hbm.items.weapon.sedna.mods.XWeaponModManager; import com.hbm.lib.RefStrings; import com.hbm.main.MainRegistry; import com.hbm.main.ResourceManager; @@ -107,12 +107,12 @@ public class XFactory556mm { } public static Function LAMBDA_NAME_G3 = (stack) -> { - if(WeaponModManager.hasUpgrade(stack, 0, WeaponModManager.ID_SILENCER) && - WeaponModManager.hasUpgrade(stack, 0, WeaponModManager.ID_NO_STOCK) && - WeaponModManager.hasUpgrade(stack, 0, WeaponModManager.ID_FURNITURE_BLACK) && - WeaponModManager.hasUpgrade(stack, 0, WeaponModManager.ID_SCOPE)) return stack.getUnlocalizedName() + "_infiltrator"; - if(!WeaponModManager.hasUpgrade(stack, 0, WeaponModManager.ID_NO_STOCK) && - WeaponModManager.hasUpgrade(stack, 0, WeaponModManager.ID_FURNITURE_GREEN)) return stack.getUnlocalizedName() + "_a3"; + if(XWeaponModManager.hasUpgrade(stack, 0, XWeaponModManager.ID_SILENCER) && + XWeaponModManager.hasUpgrade(stack, 0, XWeaponModManager.ID_NO_STOCK) && + XWeaponModManager.hasUpgrade(stack, 0, XWeaponModManager.ID_FURNITURE_BLACK) && + XWeaponModManager.hasUpgrade(stack, 0, XWeaponModManager.ID_SCOPE)) return stack.getUnlocalizedName() + "_infiltrator"; + if(!XWeaponModManager.hasUpgrade(stack, 0, XWeaponModManager.ID_NO_STOCK) && + XWeaponModManager.hasUpgrade(stack, 0, XWeaponModManager.ID_FURNITURE_GREEN)) return stack.getUnlocalizedName() + "_a3"; return null; }; @@ -146,7 +146,7 @@ public class XFactory556mm { .addBus("EQUIP", new BusAnimationSequence().addPos(45, 0, 0, 0).addPos(0, 0, 0, 500, IType.SIN_FULL)); case CYCLE: return new BusAnimation() .addBus("BOLT", new BusAnimationSequence().addPos(0, 0, 0, 20).addPos(0, 0, -4.5, 40).addPos(0, 0, 0, 40)) - .addBus("RECOIL", new BusAnimationSequence().addPos(0, 0, (ItemGunBaseNT.getIsAiming(stack) || !WeaponModManager.hasUpgrade(stack, 0, WeaponModManager.ID_NO_STOCK)) ? -0.25 : -0.75, 25, IType.SIN_DOWN).addPos(0, 0, 0, 75, IType.SIN_FULL)); + .addBus("RECOIL", new BusAnimationSequence().addPos(0, 0, (ItemGunBaseNT.getIsAiming(stack) || !XWeaponModManager.hasUpgrade(stack, 0, XWeaponModManager.ID_NO_STOCK)) ? -0.25 : -0.75, 25, IType.SIN_DOWN).addPos(0, 0, 0, 75, IType.SIN_FULL)); case CYCLE_DRY: return new BusAnimation() .addBus("BOLT", new BusAnimationSequence().addPos(0, 0, 0, 250).addPos(0, 0, -0.3125, 100).hold(25).addPos(0, 0, -2.75, 130).hold(50).addPos(0, 0, -2.4375, 50).addPos(0, 0, 0, 85)) .addBus("PLUG", new BusAnimationSequence().addPos(0, 0, 0, 250).hold(125).addPos(0, 0, -2.4375, 130).hold(100).addPos(0, 0, 0, 85)) diff --git a/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory9mm.java b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory9mm.java index 15d4112fb..1fd54dc07 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory9mm.java +++ b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory9mm.java @@ -17,7 +17,7 @@ import com.hbm.items.weapon.sedna.ItemGunBaseNT.WeaponQuality; import com.hbm.items.weapon.sedna.factory.GunFactory.EnumAmmo; import com.hbm.items.weapon.sedna.mags.IMagazine; import com.hbm.items.weapon.sedna.mags.MagazineFullReload; -import com.hbm.items.weapon.sedna.mods.WeaponModManager; +import com.hbm.items.weapon.sedna.mods.XWeaponModManager; import com.hbm.main.MainRegistry; import com.hbm.main.ResourceManager; import com.hbm.particle.SpentCasing; @@ -107,12 +107,12 @@ public class XFactory9mm { } public static Function LAMBDA_NAME_GREASEGUN = (stack) -> { - if(WeaponModManager.hasUpgrade(stack, 0, WeaponModManager.ID_GREASEGUN_CLEAN)) return stack.getUnlocalizedName() + "_m3"; + if(XWeaponModManager.hasUpgrade(stack, 0, XWeaponModManager.ID_GREASEGUN_CLEAN)) return stack.getUnlocalizedName() + "_m3"; return null; }; public static Function LAMBDA_NAME_UZI = (stack) -> { - if(WeaponModManager.hasUpgrade(stack, 0, WeaponModManager.ID_SILENCER)) return stack.getUnlocalizedName() + "_richter"; + if(XWeaponModManager.hasUpgrade(stack, 0, XWeaponModManager.ID_SILENCER)) return stack.getUnlocalizedName() + "_richter"; return null; }; diff --git a/src/main/java/com/hbm/items/weapon/sedna/factory/XFactoryDrill.java b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactoryDrill.java index a45f3eccc..d69bd9bf8 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/factory/XFactoryDrill.java +++ b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactoryDrill.java @@ -15,7 +15,7 @@ import com.hbm.items.weapon.sedna.ItemGunBaseNT.WeaponQuality; import com.hbm.items.weapon.sedna.impl.ItemGunDrill; import com.hbm.items.weapon.sedna.mags.IMagazine; import com.hbm.items.weapon.sedna.mags.MagazineLiquidEngine; -import com.hbm.items.weapon.sedna.mods.WeaponModManager; +import com.hbm.items.weapon.sedna.mods.XWeaponModManager; import com.hbm.render.anim.BusAnimation; import com.hbm.render.anim.BusAnimationSequence; import com.hbm.render.anim.HbmAnimations; @@ -71,7 +71,7 @@ public class XFactoryDrill { MovingObjectPosition mop = EntityDamageUtil.getMouseOver(ctx.getPlayer(), getModdableReach(stack, 5.0D)); if(mop != null) { if(mop.typeOfHit == mop.typeOfHit.ENTITY) { - float damage = 5.0F; + float damage = primary.getBaseDamage(stack); if(mop.entityHit instanceof EntityLivingBase) { EntityDamageUtil.attackEntityFromNT((EntityLivingBase) mop.entityHit, DamageSource.causePlayerDamage(ctx.getPlayer()), damage, true, true, 0.1F, getModdableDTNegation(stack, 2F), getModdablePiercing(stack, 0.15F)); } else { @@ -87,7 +87,9 @@ public class XFactoryDrill { } } - mag.useUpAmmo(stack, ctx.inventory, 10); + int ammoToUse = 10; + if(XWeaponModManager.hasUpgrade(stack, 0, XWeaponModManager.ID_ENGINE_ELECTRIC)) ammoToUse = 500; // that's 2,000 operations + mag.useUpAmmo(stack, ctx.inventory, ammoToUse); if(calcWear) ItemGunBaseNT.setWear(stack, index, Math.min(ItemGunBaseNT.getWear(stack, index), ctx.config.getDurability(stack))); } @@ -113,11 +115,11 @@ public class XFactoryDrill { } // this system technically doesn't need to be part of the GunCfg or Receiver or anything, we can just do this and it works the exact same - public static double getModdableReach(ItemStack stack, double base) { return WeaponModManager.eval(base, stack, D_REACH, ModItems.gun_drill, 0); } - public static float getModdableDTNegation(ItemStack stack, float base) { return WeaponModManager.eval(base, stack, F_DTNEG, ModItems.gun_drill, 0); } - public static float getModdablePiercing(ItemStack stack, float base) { return WeaponModManager.eval(base, stack, F_PIERCE, ModItems.gun_drill, 0); } - public static int getModdableAoE(ItemStack stack, int base) { return WeaponModManager.eval(base, stack, I_AOE, ModItems.gun_drill, 0); } - public static int getModdableHarvestLevel(ItemStack stack, int base) { return WeaponModManager.eval(base, stack, I_HARVEST, ModItems.gun_drill, 0); } + public static double getModdableReach(ItemStack stack, double base) { return XWeaponModManager.eval(base, stack, D_REACH, ModItems.gun_drill, 0); } + public static float getModdableDTNegation(ItemStack stack, float base) { return XWeaponModManager.eval(base, stack, F_DTNEG, ModItems.gun_drill, 0); } + public static float getModdablePiercing(ItemStack stack, float base) { return XWeaponModManager.eval(base, stack, F_PIERCE, ModItems.gun_drill, 0); } + public static int getModdableAoE(ItemStack stack, int base) { return XWeaponModManager.eval(base, stack, I_AOE, ModItems.gun_drill, 0); } + public static int getModdableHarvestLevel(ItemStack stack, int base) { return XWeaponModManager.eval(base, stack, I_HARVEST, ModItems.gun_drill, 0); } @SuppressWarnings("incomplete-switch") public static BiFunction LAMBDA_DRILL_ANIMS = (stack, type) -> { switch(type) { diff --git a/src/main/java/com/hbm/items/weapon/sedna/impl/ItemGunNI4NI.java b/src/main/java/com/hbm/items/weapon/sedna/impl/ItemGunNI4NI.java index 3212d04a1..9f70b2e1e 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/impl/ItemGunNI4NI.java +++ b/src/main/java/com/hbm/items/weapon/sedna/impl/ItemGunNI4NI.java @@ -5,7 +5,7 @@ import java.util.List; import com.hbm.items.ICustomizable; import com.hbm.items.weapon.sedna.GunConfig; import com.hbm.items.weapon.sedna.ItemGunBaseNT; -import com.hbm.items.weapon.sedna.mods.WeaponModManager; +import com.hbm.items.weapon.sedna.mods.XWeaponModManager; import com.hbm.util.ChatBuilder; import cpw.mods.fml.relauncher.Side; @@ -30,8 +30,8 @@ public class ItemGunNI4NI extends ItemGunBaseNT implements ICustomizable { if(!world.isRemote) { int maxCoin = 4; - if(WeaponModManager.hasUpgrade(stack, 0, WeaponModManager.ID_NI4NI_NICKEL)) maxCoin += 2; - if(WeaponModManager.hasUpgrade(stack, 0, WeaponModManager.ID_NI4NI_DOUBLOONS)) maxCoin += 2; + if(XWeaponModManager.hasUpgrade(stack, 0, XWeaponModManager.ID_NI4NI_NICKEL)) maxCoin += 2; + if(XWeaponModManager.hasUpgrade(stack, 0, XWeaponModManager.ID_NI4NI_DOUBLOONS)) maxCoin += 2; if(this.getCoinCount(stack) < maxCoin) { this.setCoinCharge(stack, this.getCoinCharge(stack) + 1); diff --git a/src/main/java/com/hbm/items/weapon/sedna/mags/MagazineElectricEngine.java b/src/main/java/com/hbm/items/weapon/sedna/mags/MagazineElectricEngine.java new file mode 100644 index 000000000..ea38a19d9 --- /dev/null +++ b/src/main/java/com/hbm/items/weapon/sedna/mags/MagazineElectricEngine.java @@ -0,0 +1,55 @@ +package com.hbm.items.weapon.sedna.mags; + +import com.hbm.items.ModItems; +import com.hbm.items.weapon.sedna.ItemGunBaseNT; +import com.hbm.particle.SpentCasing; +import com.hbm.util.BobMathUtil; + +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.inventory.IInventory; +import net.minecraft.item.ItemStack; + +public class MagazineElectricEngine implements IMagazine { + + public static final String KEY_MAG_COUNT = "magcount"; + public static final String KEY_MAG_PREV = "magprev"; + public static final String KEY_MAG_AFTER = "magafter"; + + /** A number so the gun tell multiple mags apart */ + public int index; + /** How much ammo this mag can hold */ + public int capacity; + + public MagazineElectricEngine(int index, int capacity) { + this.index = index; + this.capacity = capacity; + } + + @Override public Object getType(ItemStack stack, IInventory inventory) { return null; } + @Override public void setType(ItemStack stack, Object type) { } + @Override public int getCapacity(ItemStack stack) { return capacity; } + + @Override + public void useUpAmmo(ItemStack stack, IInventory inventory, int amount) { + this.setAmount(stack, Math.max(this.getAmount(stack, inventory) - amount, 0)); + } + + @Override public int getAmount(ItemStack stack, IInventory inventory) { return getMagCount(stack, index); } + @Override public void setAmount(ItemStack stack, int amount) { setMagCount(stack, index, amount); } + + @Override public boolean canReload(ItemStack stack, IInventory inventory) { return false; } + @Override public void initNewType(ItemStack stack, IInventory inventory) { } + @Override public void reloadAction(ItemStack stack, IInventory inventory) { } + @Override public SpentCasing getCasing(ItemStack stack, IInventory inventory) { return null; } + + @Override public ItemStack getIconForHUD(ItemStack stack, EntityPlayer player) { return new ItemStack(ModItems.battery_creative); } + @Override public String reportAmmoStateForHUD(ItemStack stack, EntityPlayer player) { return BobMathUtil.getShortNumber(getAmount(stack, player.inventory)) + "/" + BobMathUtil.getShortNumber(this.capacity) + "HE"; } + + @Override public void setAmountBeforeReload(ItemStack stack, int amount) { ItemGunBaseNT.setValueInt(stack, KEY_MAG_PREV + index, amount); } + @Override public int getAmountBeforeReload(ItemStack stack) { return ItemGunBaseNT.getValueInt(stack, KEY_MAG_PREV + index); } + @Override public void setAmountAfterReload(ItemStack stack, int amount) { ItemGunBaseNT.setValueInt(stack, KEY_MAG_AFTER + index, amount); } + @Override public int getAmountAfterReload(ItemStack stack) { return ItemGunBaseNT.getValueInt(stack, KEY_MAG_AFTER + index); } + + public static int getMagCount(ItemStack stack, int index) { return ItemGunBaseNT.getValueInt(stack, KEY_MAG_COUNT + index); } + public static void setMagCount(ItemStack stack, int index, int value) { ItemGunBaseNT.setValueInt(stack, KEY_MAG_COUNT + index, value); } +} diff --git a/src/main/java/com/hbm/items/weapon/sedna/mags/MagazineLiquidEngine.java b/src/main/java/com/hbm/items/weapon/sedna/mags/MagazineLiquidEngine.java index 5f0469ed3..beff6ac2f 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/mags/MagazineLiquidEngine.java +++ b/src/main/java/com/hbm/items/weapon/sedna/mags/MagazineLiquidEngine.java @@ -35,7 +35,7 @@ public class MagazineLiquidEngine implements IMagazine { @Override public void useUpAmmo(ItemStack stack, IInventory inventory, int amount) { - this.setAmount(stack, this.getAmount(stack, inventory) - amount); + this.setAmount(stack, Math.max(this.getAmount(stack, inventory) - amount, 0)); } @Override public int getAmount(ItemStack stack, IInventory inventory) { return getMagCount(stack, index); } diff --git a/src/main/java/com/hbm/items/weapon/sedna/mods/WeaponModBase.java b/src/main/java/com/hbm/items/weapon/sedna/mods/WeaponModBase.java index 2e265c19e..1e5e9d9b6 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/mods/WeaponModBase.java +++ b/src/main/java/com/hbm/items/weapon/sedna/mods/WeaponModBase.java @@ -10,7 +10,7 @@ public abstract class WeaponModBase implements IWeaponMod { public String[] slots; public int priority = 0; - public WeaponModBase(int id, String... slots) { this.slots = slots; WeaponModManager.idToMod.put(id, this); } + public WeaponModBase(int id, String... slots) { this.slots = slots; XWeaponModManager.idToMod.put(id, this); } public WeaponModBase setPriority(int priority) { this.priority = priority; return this; } @Override public int getModPriority() { return priority; } diff --git a/src/main/java/com/hbm/items/weapon/sedna/mods/WeaponModCaliber.java b/src/main/java/com/hbm/items/weapon/sedna/mods/WeaponModCaliber.java index 1794a8cd4..7bbd1f3db 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/mods/WeaponModCaliber.java +++ b/src/main/java/com/hbm/items/weapon/sedna/mods/WeaponModCaliber.java @@ -60,8 +60,8 @@ public class WeaponModCaliber extends WeaponModBase { } /* adding or removing a caliber mod annihilates the loaded rounds */ - public void onInstall(ItemStack gun, ItemStack mod, int index) { clearMag(gun, index); } - public void onUninstall(ItemStack gun, ItemStack mod, int index) { clearMag(gun, index); } + @Override public void onInstall(ItemStack gun, ItemStack mod, int index) { clearMag(gun, index); } + @Override public void onUninstall(ItemStack gun, ItemStack mod, int index) { clearMag(gun, index); } public void clearMag(ItemStack stack, int index) { ItemGunBaseNT gun = (ItemGunBaseNT) stack.getItem(); diff --git a/src/main/java/com/hbm/items/weapon/sedna/mods/WeaponModDrill.java b/src/main/java/com/hbm/items/weapon/sedna/mods/WeaponModDrill.java new file mode 100644 index 000000000..f231af3da --- /dev/null +++ b/src/main/java/com/hbm/items/weapon/sedna/mods/WeaponModDrill.java @@ -0,0 +1,41 @@ +package com.hbm.items.weapon.sedna.mods; + +import com.hbm.items.weapon.sedna.Receiver; +import com.hbm.items.weapon.sedna.factory.XFactoryDrill; + +import net.minecraft.item.ItemStack; + +public class WeaponModDrill extends WeaponModBase { + + protected float damage = 1; + protected double reach = 1; + protected float dt = -1; + protected float pierce = -1; + protected int aoe = -1; + protected int harvest = -1; + + public WeaponModDrill(int id) { + super(id, "DRILL"); + this.setPriority(PRIORITY_SET); + } + + public WeaponModDrill damage(float damage) { this.damage = damage; return this; } + public WeaponModDrill reach(double reach) { this.reach = reach; return this; } + public WeaponModDrill dt(float dt) { this.dt = dt; return this; } + public WeaponModDrill pierce(float pierce) { this.pierce = pierce; return this; } + public WeaponModDrill aoe(int aoe) { this.aoe = aoe; return this; } + public WeaponModDrill harvest(int harvest) { this.harvest = harvest; return this; } + + @Override + public T eval(T base, ItemStack gun, String key, Object parent) { + + if(key.equals(Receiver.F_BASEDAMAGE)) return cast((Float) base * damage, base); + if(key.equals(XFactoryDrill.D_REACH)) return cast((Double) base * reach, base); + if(key.equals(XFactoryDrill.F_DTNEG) && dt >= 0) return cast((Float) dt, base); + if(key.equals(XFactoryDrill.F_PIERCE) && pierce >= 0) return cast((Float) pierce, base); + if(key.equals(XFactoryDrill.I_AOE) && aoe >= 0) return cast((Integer) aoe, base); + if(key.equals(XFactoryDrill.I_HARVEST) && harvest >= 0) return cast((Integer) harvest, base); + + return base; + } +} diff --git a/src/main/java/com/hbm/items/weapon/sedna/mods/WeaponModEngine.java b/src/main/java/com/hbm/items/weapon/sedna/mods/WeaponModEngine.java new file mode 100644 index 000000000..70a2e09db --- /dev/null +++ b/src/main/java/com/hbm/items/weapon/sedna/mods/WeaponModEngine.java @@ -0,0 +1,47 @@ +package com.hbm.items.weapon.sedna.mods; + +import com.hbm.inventory.fluid.Fluids; +import com.hbm.items.weapon.sedna.ItemGunBaseNT; +import com.hbm.items.weapon.sedna.Receiver; +import com.hbm.items.weapon.sedna.mags.IMagazine; +import com.hbm.items.weapon.sedna.mags.MagazineElectricEngine; +import com.hbm.items.weapon.sedna.mags.MagazineLiquidEngine; + +import net.minecraft.item.ItemStack; + +public class WeaponModEngine extends WeaponModBase { + + public static final MagazineLiquidEngine ENGINE_DIESEL = new MagazineLiquidEngine(0, 4_000, Fluids.DIESEL, Fluids.DIESEL_CRACK, Fluids.LIGHTOIL); + public static final MagazineLiquidEngine ENGINE_AVIATION = new MagazineLiquidEngine(0, 4_000, Fluids.KEROSENE, Fluids.LPG); + public static final MagazineElectricEngine ENGINE_ELECTRIC = new MagazineElectricEngine(0, 1_000_000); + public static final MagazineLiquidEngine ENGINE_TURBO = new MagazineLiquidEngine(0, 4_000, Fluids.KEROSENE_REFORM, Fluids.REFORMATE); + + protected IMagazine mag; + protected int delay; + + public WeaponModEngine(int id) { + super(id, "ENGINE"); + this.setPriority(PRIORITY_SET); + } + + public WeaponModEngine mag(IMagazine mag) { this.mag = mag; return this; } + public WeaponModEngine delay(int delay) { this.delay = delay; return this; } + + @Override + public T eval(T base, ItemStack gun, String key, Object parent) { + + if(key == Receiver.O_MAGAZINE && mag != null) return cast(mag, base); + if(key == Receiver.I_DELAYAFTERFIRE) return cast((Integer) delay, base); + + return base; + } + + @Override public void onInstall(ItemStack gun, ItemStack mod, int index) { clearMag(gun, index); } + @Override public void onUninstall(ItemStack gun, ItemStack mod, int index) { clearMag(gun, index); } + + public void clearMag(ItemStack stack, int index) { + ItemGunBaseNT gun = (ItemGunBaseNT) stack.getItem(); + IMagazine mag = gun.getConfig(stack, index).getReceivers(stack)[0].getMagazine(stack); + mag.setAmount(stack, 0); + } +} diff --git a/src/main/java/com/hbm/items/weapon/sedna/mods/WeaponModManager.java b/src/main/java/com/hbm/items/weapon/sedna/mods/XWeaponModManager.java similarity index 90% rename from src/main/java/com/hbm/items/weapon/sedna/mods/WeaponModManager.java rename to src/main/java/com/hbm/items/weapon/sedna/mods/XWeaponModManager.java index da52d93ab..e60cee0ae 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/mods/WeaponModManager.java +++ b/src/main/java/com/hbm/items/weapon/sedna/mods/XWeaponModManager.java @@ -25,6 +25,7 @@ import com.hbm.items.weapon.sedna.factory.XFactory762mm; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; +import net.minecraft.item.Item.ToolMaterial; import net.minecraft.nbt.NBTTagCompound; /** @@ -33,7 +34,7 @@ import net.minecraft.nbt.NBTTagCompound; * * @author hbm */ -public class WeaponModManager { +public class XWeaponModManager { public static final String KEY_MOD_LIST = "KEY_MOD_LIST_"; @@ -151,6 +152,15 @@ public class WeaponModManager { new WeaponModDefinition(EnumModSpecial.LAS_AUTO).addMod(new Item[] {ModItems.gun_lasrifle}, new WeaponModLasAuto(ID_LAS_AUTO)); new WeaponModDefinition(EnumModSpecial.NICKEL).addMod(new Item[] {ModItems.gun_n_i_4_n_i}, new WeaponModNickel(ID_NI4NI_NICKEL, "COIN1")); new WeaponModDefinition(EnumModSpecial.DOUBLOONS).addMod(new Item[] {ModItems.gun_n_i_4_n_i}, new WeaponModNickel(ID_NI4NI_DOUBLOONS, "COIN2")); + + new WeaponModDefinition(EnumModSpecial.DRILL_HSS).addMod(new Item[] {ModItems.gun_drill}, new WeaponModDrill(ID_DRILL_HSS).damage(1.25F).dt(3F).pierce(0.15F).harvest(ToolMaterial.EMERALD.ordinal())); + new WeaponModDefinition(EnumModSpecial.DRILL_WEAPONSTEEL).addMod(new Item[] {ModItems.gun_drill}, new WeaponModDrill(ID_DRILL_WSTEEL).damage(1.5F).dt(5F).pierce(0.2F).aoe(2).harvest(ToolMaterial.EMERALD.ordinal())); + new WeaponModDefinition(EnumModSpecial.DRILL_TCALLOY).addMod(new Item[] {ModItems.gun_drill}, new WeaponModDrill(ID_DRILL_TCALLOY).damage(2F).dt(7.5F).pierce(0.2F).reach(1.5).aoe(2).harvest(ToolMaterial.EMERALD.ordinal() + 1)); + new WeaponModDefinition(EnumModSpecial.DRILL_SATURNITE).addMod(new Item[] {ModItems.gun_drill}, new WeaponModDrill(ID_DRILL_SATURN).damage(3F).dt(10F).pierce(0.25F).reach(2).aoe(2).harvest(ToolMaterial.EMERALD.ordinal() + 2)); + new WeaponModDefinition(EnumModSpecial.ENGINE_DIESEL).addMod(new Item[] {ModItems.gun_drill}, new WeaponModEngine(ID_ENGINE_DIESEL).mag(WeaponModEngine.ENGINE_DIESEL).delay(15)); + new WeaponModDefinition(EnumModSpecial.ENGINE_AVIATION).addMod(new Item[] {ModItems.gun_drill}, new WeaponModEngine(ID_ENGINE_AVIATION).mag(WeaponModEngine.ENGINE_AVIATION).delay(10)); + new WeaponModDefinition(EnumModSpecial.ENGINE_ELECTRIC).addMod(new Item[] {ModItems.gun_drill}, new WeaponModEngine(ID_ENGINE_ELECTRIC).mag(WeaponModEngine.ENGINE_ELECTRIC).delay(15)); + new WeaponModDefinition(EnumModSpecial.ENGINE_TURBO).addMod(new Item[] {ModItems.gun_drill}, new WeaponModEngine(ID_ENGINE_TURBO).mag(WeaponModEngine.ENGINE_TURBO).delay(2)); BulletConfig[] p9 = new BulletConfig[] {XFactory9mm.p9_sp, XFactory9mm.p9_fmj, XFactory9mm.p9_jhp, XFactory9mm.p9_ap}; BulletConfig[] p45 = new BulletConfig[] {XFactory45.p45_sp, XFactory45.p45_fmj, XFactory45.p45_jhp, XFactory45.p45_ap, XFactory45.p45_du}; @@ -206,6 +216,14 @@ public class WeaponModManager { public static final int ID_CARBINE_BAYONET = 219; public static final int ID_NI4NI_NICKEL = 220; public static final int ID_NI4NI_DOUBLOONS = 221; + public static final int ID_DRILL_HSS = 222; + public static final int ID_DRILL_WSTEEL = 223; + public static final int ID_DRILL_TCALLOY = 224; + public static final int ID_DRILL_SATURN = 225; + public static final int ID_ENGINE_DIESEL = 226; + public static final int ID_ENGINE_AVIATION = 227; + public static final int ID_ENGINE_ELECTRIC = 228; + public static final int ID_ENGINE_TURBO = 229; public static ItemStack[] getUpgradeItems(ItemStack stack, int cfg) { if(!stack.hasTagCompound()) return new ItemStack[0]; diff --git a/src/main/java/com/hbm/main/MainRegistry.java b/src/main/java/com/hbm/main/MainRegistry.java index 7c54bf7ba..edbd76d7c 100644 --- a/src/main/java/com/hbm/main/MainRegistry.java +++ b/src/main/java/com/hbm/main/MainRegistry.java @@ -29,7 +29,7 @@ import com.hbm.inventory.recipes.anvil.AnvilRecipes; import com.hbm.inventory.recipes.loader.SerializableRecipe; import com.hbm.items.ItemEnums.EnumAchievementType; import com.hbm.items.ModItems; -import com.hbm.items.weapon.sedna.mods.WeaponModManager; +import com.hbm.items.weapon.sedna.mods.XWeaponModManager; import com.hbm.lib.HbmWorld; import com.hbm.lib.RefStrings; import com.hbm.packet.PacketDispatcher; @@ -281,7 +281,7 @@ public class MainRegistry { SiegeTier.registerTiers(); HazardRegistry.registerItems(); HazardRegistry.registerTrafos(); - WeaponModManager.init(); + XWeaponModManager.init(); OreDictManager oreMan = new OreDictManager(); MinecraftForge.EVENT_BUS.register(oreMan); //OreRegisterEvent 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 10899a9dc..23d32f066 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 @@ -3,7 +3,7 @@ package com.hbm.render.item.weapon.sedna; import org.lwjgl.opengl.GL11; import com.hbm.items.weapon.sedna.ItemGunBaseNT; -import com.hbm.items.weapon.sedna.mods.WeaponModManager; +import com.hbm.items.weapon.sedna.mods.XWeaponModManager; import com.hbm.main.MainRegistry; import com.hbm.main.ResourceManager; import com.hbm.render.anim.HbmAnimations; @@ -162,6 +162,6 @@ public class ItemRenderAm180 extends ItemRenderWeaponBase { } public boolean hasSilencer(ItemStack stack) { - return WeaponModManager.hasUpgrade(stack, 0, WeaponModManager.ID_SILENCER); + return XWeaponModManager.hasUpgrade(stack, 0, XWeaponModManager.ID_SILENCER); } } diff --git a/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderAmat.java b/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderAmat.java index 9bb17c62b..97c5b88bc 100644 --- a/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderAmat.java +++ b/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderAmat.java @@ -4,7 +4,7 @@ import org.lwjgl.opengl.GL11; import com.hbm.items.ModItems; import com.hbm.items.weapon.sedna.ItemGunBaseNT; -import com.hbm.items.weapon.sedna.mods.WeaponModManager; +import com.hbm.items.weapon.sedna.mods.XWeaponModManager; import com.hbm.main.ResourceManager; import com.hbm.render.anim.HbmAnimations; @@ -210,6 +210,6 @@ public class ItemRenderAmat extends ItemRenderWeaponBase { } public boolean isSilenced(ItemStack stack) { - return stack.getItem() == ModItems.gun_amat_penance || WeaponModManager.hasUpgrade(stack, 0, WeaponModManager.ID_SILENCER); + return stack.getItem() == ModItems.gun_amat_penance || XWeaponModManager.hasUpgrade(stack, 0, XWeaponModManager.ID_SILENCER); } } 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 3f4420441..36fae0ee0 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 @@ -3,7 +3,7 @@ package com.hbm.render.item.weapon.sedna; import org.lwjgl.opengl.GL11; import com.hbm.items.weapon.sedna.ItemGunBaseNT; -import com.hbm.items.weapon.sedna.mods.WeaponModManager; +import com.hbm.items.weapon.sedna.mods.XWeaponModManager; import com.hbm.main.ResourceManager; import com.hbm.render.anim.HbmAnimations; @@ -150,6 +150,6 @@ public class ItemRenderCarbine extends ItemRenderWeaponBase { } public boolean hasBayonet(ItemStack stack) { - return WeaponModManager.hasUpgrade(stack, 0, WeaponModManager.ID_CARBINE_BAYONET); + return XWeaponModManager.hasUpgrade(stack, 0, XWeaponModManager.ID_CARBINE_BAYONET); } } diff --git a/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderChargeThrower.java b/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderChargeThrower.java index 8d724e645..d039b18bc 100644 --- a/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderChargeThrower.java +++ b/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderChargeThrower.java @@ -5,7 +5,7 @@ import org.lwjgl.opengl.GL11; import com.hbm.items.weapon.sedna.ItemGunBaseNT; import com.hbm.items.weapon.sedna.factory.XFactoryTool; import com.hbm.items.weapon.sedna.mags.MagazineFullReload; -import com.hbm.items.weapon.sedna.mods.WeaponModManager; +import com.hbm.items.weapon.sedna.mods.XWeaponModManager; import com.hbm.main.ResourceManager; import com.hbm.render.anim.HbmAnimations; @@ -168,6 +168,6 @@ public class ItemRenderChargeThrower extends ItemRenderWeaponBase { } public boolean isScoped(ItemStack stack) { - return WeaponModManager.hasUpgrade(stack, 0, WeaponModManager.ID_SCOPE); + return XWeaponModManager.hasUpgrade(stack, 0, XWeaponModManager.ID_SCOPE); } } 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 1102a81c6..bc9fcf024 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 @@ -4,7 +4,7 @@ import org.lwjgl.opengl.GL11; import com.hbm.items.ModItems; import com.hbm.items.weapon.sedna.ItemGunBaseNT; -import com.hbm.items.weapon.sedna.mods.WeaponModManager; +import com.hbm.items.weapon.sedna.mods.XWeaponModManager; import com.hbm.main.ResourceManager; import com.hbm.render.anim.HbmAnimations; @@ -173,6 +173,6 @@ public class ItemRenderDoubleBarrel extends ItemRenderWeaponBase { } public boolean isSawedOff(ItemStack stack) { - return stack.getItem() == ModItems.gun_double_barrel_sacred_dragon || WeaponModManager.hasUpgrade(stack, 0, WeaponModManager.ID_SAWED_OFF); + return stack.getItem() == ModItems.gun_double_barrel_sacred_dragon || XWeaponModManager.hasUpgrade(stack, 0, XWeaponModManager.ID_SAWED_OFF); } } 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 ec6d0e35a..ca7650ece 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 @@ -4,7 +4,7 @@ import org.lwjgl.opengl.GL11; import com.hbm.items.ModItems; import com.hbm.items.weapon.sedna.ItemGunBaseNT; -import com.hbm.items.weapon.sedna.mods.WeaponModManager; +import com.hbm.items.weapon.sedna.mods.XWeaponModManager; import com.hbm.main.ResourceManager; import com.hbm.render.anim.HbmAnimations; @@ -212,20 +212,20 @@ public class ItemRenderG3 extends ItemRenderWeaponBase { } public boolean hasStock(ItemStack stack) { - return !WeaponModManager.hasUpgrade(stack, 0, WeaponModManager.ID_NO_STOCK); + return !XWeaponModManager.hasUpgrade(stack, 0, XWeaponModManager.ID_NO_STOCK); } public boolean hasSilencer(ItemStack stack) { - return stack.getItem() == ModItems.gun_g3_zebra || WeaponModManager.hasUpgrade(stack, 0, WeaponModManager.ID_SILENCER); + return stack.getItem() == ModItems.gun_g3_zebra || XWeaponModManager.hasUpgrade(stack, 0, XWeaponModManager.ID_SILENCER); } public boolean isScoped(ItemStack stack) { - return stack.getItem() == ModItems.gun_g3_zebra || WeaponModManager.hasUpgrade(stack, 0, WeaponModManager.ID_SCOPE); + return stack.getItem() == ModItems.gun_g3_zebra || XWeaponModManager.hasUpgrade(stack, 0, XWeaponModManager.ID_SCOPE); } public ResourceLocation getTexture(ItemStack stack) { - if(WeaponModManager.hasUpgrade(stack, 0, WeaponModManager.ID_FURNITURE_GREEN)) return ResourceManager.g3_green_tex; - if(WeaponModManager.hasUpgrade(stack, 0, WeaponModManager.ID_FURNITURE_BLACK)) return ResourceManager.g3_black_tex; + if(XWeaponModManager.hasUpgrade(stack, 0, XWeaponModManager.ID_FURNITURE_GREEN)) return ResourceManager.g3_green_tex; + if(XWeaponModManager.hasUpgrade(stack, 0, XWeaponModManager.ID_FURNITURE_BLACK)) return ResourceManager.g3_black_tex; return texture; } } 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 dbbe9a7c9..7b9969d22 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 @@ -3,7 +3,7 @@ package com.hbm.render.item.weapon.sedna; import org.lwjgl.opengl.GL11; import com.hbm.items.weapon.sedna.ItemGunBaseNT; -import com.hbm.items.weapon.sedna.mods.WeaponModManager; +import com.hbm.items.weapon.sedna.mods.XWeaponModManager; import com.hbm.main.ResourceManager; import com.hbm.render.anim.HbmAnimations; @@ -153,6 +153,6 @@ public class ItemRenderGreasegun extends ItemRenderWeaponBase { } public boolean isRefurbished(ItemStack stack) { - return WeaponModManager.hasUpgrade(stack, 0, WeaponModManager.ID_GREASEGUN_CLEAN); + return XWeaponModManager.hasUpgrade(stack, 0, XWeaponModManager.ID_GREASEGUN_CLEAN); } } 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 bd7700d25..acad2ddb2 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 @@ -4,7 +4,7 @@ import org.lwjgl.opengl.GL11; import com.hbm.items.ModItems; import com.hbm.items.weapon.sedna.ItemGunBaseNT; -import com.hbm.items.weapon.sedna.mods.WeaponModManager; +import com.hbm.items.weapon.sedna.mods.XWeaponModManager; import com.hbm.main.ResourceManager; import com.hbm.render.anim.HbmAnimations; @@ -176,6 +176,6 @@ public class ItemRenderHeavyRevolver extends ItemRenderWeaponBase { } public boolean isScoped(ItemStack stack) { - return stack.getItem() == ModItems.gun_heavy_revolver_lilmac || WeaponModManager.hasUpgrade(stack, 0, WeaponModManager.ID_SCOPE); + return stack.getItem() == ModItems.gun_heavy_revolver_lilmac || XWeaponModManager.hasUpgrade(stack, 0, XWeaponModManager.ID_SCOPE); } } 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 477b3dd0b..7cb1a4140 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 @@ -3,7 +3,7 @@ package com.hbm.render.item.weapon.sedna; import org.lwjgl.opengl.GL11; import com.hbm.items.weapon.sedna.ItemGunBaseNT; -import com.hbm.items.weapon.sedna.mods.WeaponModManager; +import com.hbm.items.weapon.sedna.mods.XWeaponModManager; import com.hbm.main.ResourceManager; import com.hbm.render.anim.HbmAnimations; @@ -138,14 +138,14 @@ public class ItemRenderLasrifle extends ItemRenderWeaponBase { } public boolean hasScope(ItemStack stack) { - return !WeaponModManager.hasUpgrade(stack, 0, WeaponModManager.ID_LAS_AUTO); + return !XWeaponModManager.hasUpgrade(stack, 0, XWeaponModManager.ID_LAS_AUTO); } public boolean hasShotgun(ItemStack stack) { - return WeaponModManager.hasUpgrade(stack, 0, WeaponModManager.ID_LAS_SHOTGUN); + return XWeaponModManager.hasUpgrade(stack, 0, XWeaponModManager.ID_LAS_SHOTGUN); } public boolean hasCapacitor(ItemStack stack) { - return WeaponModManager.hasUpgrade(stack, 0, WeaponModManager.ID_LAS_CAPACITOR); + return XWeaponModManager.hasUpgrade(stack, 0, XWeaponModManager.ID_LAS_CAPACITOR); } } 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 7d2a59a56..86a94fecb 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 @@ -5,7 +5,7 @@ import java.nio.DoubleBuffer; import org.lwjgl.opengl.GL11; import com.hbm.items.weapon.sedna.ItemGunBaseNT; -import com.hbm.items.weapon.sedna.mods.WeaponModManager; +import com.hbm.items.weapon.sedna.mods.XWeaponModManager; import com.hbm.main.ResourceManager; import com.hbm.render.anim.HbmAnimations; @@ -193,10 +193,10 @@ public class ItemRenderMAS36 extends ItemRenderWeaponBase { } public boolean isScoped(ItemStack stack) { - return WeaponModManager.hasUpgrade(stack, 0, WeaponModManager.ID_SCOPE); + return XWeaponModManager.hasUpgrade(stack, 0, XWeaponModManager.ID_SCOPE); } public boolean hasBayonet(ItemStack stack) { - return WeaponModManager.hasUpgrade(stack, 0, WeaponModManager.ID_MAS_BAYONET); + return XWeaponModManager.hasUpgrade(stack, 0, XWeaponModManager.ID_MAS_BAYONET); } } 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 c6de5ba6c..cc4d945ae 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 @@ -4,7 +4,7 @@ import org.lwjgl.opengl.GL11; import com.hbm.items.ModItems; import com.hbm.items.weapon.sedna.ItemGunBaseNT; -import com.hbm.items.weapon.sedna.mods.WeaponModManager; +import com.hbm.items.weapon.sedna.mods.XWeaponModManager; import com.hbm.main.ResourceManager; import com.hbm.render.anim.HbmAnimations; @@ -171,6 +171,6 @@ public class ItemRenderMaresleg extends ItemRenderWeaponBase { } public boolean getShort(ItemStack stack) { - return stack.getItem() == ModItems.gun_maresleg_broken || WeaponModManager.hasUpgrade(stack, 0, WeaponModManager.ID_SAWED_OFF); + return stack.getItem() == ModItems.gun_maresleg_broken || XWeaponModManager.hasUpgrade(stack, 0, XWeaponModManager.ID_SAWED_OFF); } } diff --git a/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderMinigunDual.java b/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderMinigunDual.java index 8cb34f24f..715cd3fda 100644 --- a/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderMinigunDual.java +++ b/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderMinigunDual.java @@ -3,7 +3,7 @@ package com.hbm.render.item.weapon.sedna; import org.lwjgl.opengl.GL11; import com.hbm.items.weapon.sedna.ItemGunBaseNT; -import com.hbm.items.weapon.sedna.mods.WeaponModManager; +import com.hbm.items.weapon.sedna.mods.XWeaponModManager; import com.hbm.main.ResourceManager; import com.hbm.render.anim.HbmAnimations; @@ -183,10 +183,10 @@ public class ItemRenderMinigunDual extends ItemRenderWeaponBase { } public boolean hasSilencer(ItemStack stack, int cfg) { - return WeaponModManager.hasUpgrade(stack, cfg, WeaponModManager.ID_SILENCER); + return XWeaponModManager.hasUpgrade(stack, cfg, XWeaponModManager.ID_SILENCER); } public boolean isSaturnite(ItemStack stack, int cfg) { - return WeaponModManager.hasUpgrade(stack, cfg, WeaponModManager.ID_UZI_SATURN); + return XWeaponModManager.hasUpgrade(stack, cfg, XWeaponModManager.ID_UZI_SATURN); } } 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 4d65f4323..7538b0371 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 @@ -3,7 +3,7 @@ package com.hbm.render.item.weapon.sedna; import org.lwjgl.opengl.GL11; import com.hbm.items.weapon.sedna.ItemGunBaseNT; -import com.hbm.items.weapon.sedna.mods.WeaponModManager; +import com.hbm.items.weapon.sedna.mods.XWeaponModManager; import com.hbm.main.ResourceManager; import com.hbm.render.anim.HbmAnimations; @@ -110,6 +110,6 @@ public class ItemRenderPanzerschreck extends ItemRenderWeaponBase { } public boolean hasShield(ItemStack stack) { - return !WeaponModManager.hasUpgrade(stack, 0, WeaponModManager.ID_NO_SHIELD); + return !XWeaponModManager.hasUpgrade(stack, 0, XWeaponModManager.ID_NO_SHIELD); } } 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 1fdea82b0..c4887c37c 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 @@ -3,7 +3,7 @@ package com.hbm.render.item.weapon.sedna; import org.lwjgl.opengl.GL11; import com.hbm.items.weapon.sedna.ItemGunBaseNT; -import com.hbm.items.weapon.sedna.mods.WeaponModManager; +import com.hbm.items.weapon.sedna.mods.XWeaponModManager; import com.hbm.main.ResourceManager; import com.hbm.render.anim.HbmAnimations; @@ -177,10 +177,10 @@ public class ItemRenderUzi extends ItemRenderWeaponBase { } public boolean hasSilencer(ItemStack stack, int cfg) { - return WeaponModManager.hasUpgrade(stack, cfg, WeaponModManager.ID_SILENCER); + return XWeaponModManager.hasUpgrade(stack, cfg, XWeaponModManager.ID_SILENCER); } public boolean isSaturnite(ItemStack stack) { - return WeaponModManager.hasUpgrade(stack, 0, WeaponModManager.ID_UZI_SATURN); + return XWeaponModManager.hasUpgrade(stack, 0, XWeaponModManager.ID_UZI_SATURN); } } 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 91d6820b5..b7c71507d 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 @@ -3,7 +3,7 @@ package com.hbm.render.item.weapon.sedna; import org.lwjgl.opengl.GL11; import com.hbm.items.weapon.sedna.ItemGunBaseNT; -import com.hbm.items.weapon.sedna.mods.WeaponModManager; +import com.hbm.items.weapon.sedna.mods.XWeaponModManager; import com.hbm.main.ResourceManager; import com.hbm.render.anim.HbmAnimations; @@ -289,10 +289,10 @@ public class ItemRenderUziAkimbo extends ItemRenderWeaponBase { } public boolean hasSilencer(ItemStack stack, int cfg) { - return WeaponModManager.hasUpgrade(stack, cfg, WeaponModManager.ID_SILENCER); + return XWeaponModManager.hasUpgrade(stack, cfg, XWeaponModManager.ID_SILENCER); } public boolean isSaturnite(ItemStack stack, int cfg) { - return WeaponModManager.hasUpgrade(stack, cfg, WeaponModManager.ID_UZI_SATURN); + return XWeaponModManager.hasUpgrade(stack, cfg, XWeaponModManager.ID_UZI_SATURN); } } diff --git a/src/main/java/com/hbm/sound/AudioDynamic.java b/src/main/java/com/hbm/sound/AudioDynamic.java index db13d09b3..a3bf973db 100644 --- a/src/main/java/com/hbm/sound/AudioDynamic.java +++ b/src/main/java/com/hbm/sound/AudioDynamic.java @@ -6,6 +6,7 @@ import net.minecraft.client.Minecraft; import net.minecraft.client.audio.ISound; import net.minecraft.client.audio.MovingSound; import net.minecraft.client.entity.EntityClientPlayerMP; +import net.minecraft.entity.Entity; import net.minecraft.util.ResourceLocation; @SideOnly(Side.CLIENT) @@ -14,8 +15,11 @@ public class AudioDynamic extends MovingSound { public float maxVolume = 1; public float range; public int keepAlive; - public int timeSinceKA;; - public boolean shouldExpire = false;; + public int timeSinceKA; + public boolean shouldExpire = false; + // shitty addition that should make looped sounds on tools and guns work right + // position updates happen automatically and if the parent is the client player, volume is always on max + public Entity parentEntity = null; protected AudioDynamic(ResourceLocation loc) { super(loc); @@ -29,6 +33,10 @@ public class AudioDynamic extends MovingSound { this.yPosF = y; this.zPosF = z; } + + public void attachTo(Entity e) { + this.parentEntity = e; + } @Override public void update() { @@ -36,7 +44,12 @@ public class AudioDynamic extends MovingSound { EntityClientPlayerMP player = Minecraft.getMinecraft().thePlayer; float f = 0; - if(player != null) { + if(parentEntity != null) { + this.setPosition((float) parentEntity.posX, (float) parentEntity.posY, (float) parentEntity.posZ); + } + + // only adjust volume over distance if the sound isn't attached to this entity + if(player != null && player != parentEntity) { f = (float)Math.sqrt(Math.pow(xPosF - player.posX, 2) + Math.pow(yPosF - player.posY, 2) + Math.pow(zPosF - player.posZ, 2)); volume = func(f); } else { diff --git a/src/main/java/com/hbm/sound/AudioWrapper.java b/src/main/java/com/hbm/sound/AudioWrapper.java index e3830d5d8..6bbc41f3b 100644 --- a/src/main/java/com/hbm/sound/AudioWrapper.java +++ b/src/main/java/com/hbm/sound/AudioWrapper.java @@ -1,11 +1,14 @@ package com.hbm.sound; +import net.minecraft.entity.Entity; + public class AudioWrapper { public void setKeepAlive(int keepAlive) { } public void keepAlive() { } - + public void updatePosition(float x, float y, float z) { } + public void attachTo(Entity e) { } public void updateVolume(float volume) { } public void updateRange(float range) { } diff --git a/src/main/java/com/hbm/sound/AudioWrapperClient.java b/src/main/java/com/hbm/sound/AudioWrapperClient.java index ca5d038ba..1a277249b 100644 --- a/src/main/java/com/hbm/sound/AudioWrapperClient.java +++ b/src/main/java/com/hbm/sound/AudioWrapperClient.java @@ -2,6 +2,7 @@ package com.hbm.sound; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.entity.Entity; import net.minecraft.util.ResourceLocation; @SideOnly(Side.CLIENT) @@ -10,64 +11,59 @@ public class AudioWrapperClient extends AudioWrapper { AudioDynamic sound; public AudioWrapperClient(ResourceLocation source) { - if(source != null) - sound = new AudioDynamic(source); + if(source != null) sound = new AudioDynamic(source); } @Override public void setKeepAlive(int keepAlive) { - if(sound != null) - sound.setKeepAlive(keepAlive); + if(sound != null) sound.setKeepAlive(keepAlive); } @Override public void keepAlive() { - if(sound != null) - sound.keepAlive(); + if(sound != null) sound.keepAlive(); } @Override public void updatePosition(float x, float y, float z) { - if(sound != null) - sound.setPosition(x, y, z); + if(sound != null) sound.setPosition(x, y, z); + } + + @Override + public void attachTo(Entity e) { + if(sound != null) sound.attachTo(e); } @Override public void updateVolume(float volume) { - if(sound != null) - sound.setVolume(volume); + if(sound != null) sound.setVolume(volume); } @Override public void updateRange(float range) { - if(sound != null) - sound.setRange(range); + if(sound != null) sound.setRange(range); } @Override public void updatePitch(float pitch) { - if(sound != null) - sound.setPitch(pitch); + if(sound != null) sound.setPitch(pitch); } @Override public float getVolume() { - if(sound != null) - return sound.getVolume(); + if(sound != null) return sound.getVolume(); return 1; } @Override public float getPitch() { - if(sound != null) - return sound.getPitch(); + if(sound != null) return sound.getPitch(); return 1; } @Override public void startSound() { - if(sound != null) - sound.start(); + if(sound != null) sound.start(); } @Override @@ -80,6 +76,6 @@ public class AudioWrapperClient extends AudioWrapper { @Override public boolean isPlaying() { - return sound.isPlaying(); + return sound != null ? sound.isPlaying() : false; } } diff --git a/src/main/resources/assets/hbm/textures/items/weapon_mod_special.engine_aviation.png b/src/main/resources/assets/hbm/textures/items/weapon_mod_special.engine_aviation.png index 8f99fe37f..f4d11da90 100644 Binary files a/src/main/resources/assets/hbm/textures/items/weapon_mod_special.engine_aviation.png and b/src/main/resources/assets/hbm/textures/items/weapon_mod_special.engine_aviation.png differ