the malicious gigglefish from the silly dimension
@ -44,6 +44,10 @@
|
||||
* Crates will not longer show their contents when locked
|
||||
* Crates found in structures will sometimes contain things that aren't items
|
||||
* Beam weapons are no longer pinpoint accurate when firing unscoped
|
||||
* Reduced the recoil animation's intensity on the G3 by 66%, unless if the stock is sawed off
|
||||
* The comically long pistol no longer cancels the inspect animation when fired while inspecting
|
||||
* Instead, it will fire where the gun is pointing, at the player's face
|
||||
* There's no special animation for this, since in survival mode, that would be lethal anyway
|
||||
|
||||
## Fixed
|
||||
* Fixed animation errors on the MAS-36
|
||||
@ -56,4 +60,5 @@
|
||||
* Chunk-loading drones may or may not be fixed
|
||||
* Fixed disperser canisters not actually despawning on impact, endlessly spawning mist clouds
|
||||
* Fixed issues where the new packet system didn't play nice with machines that are being sent packets by other machines, like watz segments and radar screens
|
||||
* Fixed fat man's piston not being extended correctly in non-first person rendering when unloaded
|
||||
* Fixed fat man's piston not being extended correctly in non-first person rendering when unloaded
|
||||
* Fixed weapon equip animation not playing when switching between two weapons of the same type
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
mod_version=1.0.27
|
||||
# Empty build number makes a release type
|
||||
mod_build_number=5257
|
||||
mod_build_number=5278
|
||||
|
||||
credits=HbMinecraft,\
|
||||
\ rodolphito (explosion algorithms),\
|
||||
|
||||
@ -16,6 +16,7 @@ import com.hbm.items.ModItems;
|
||||
import com.hbm.items.weapon.GunB92Cell;
|
||||
import com.hbm.items.weapon.sedna.factory.GunFactory.EnumAmmo;
|
||||
import com.hbm.items.weapon.sedna.factory.GunFactory.EnumAmmoSecret;
|
||||
import com.hbm.items.weapon.sedna.factory.GunFactory.EnumModSpecial;
|
||||
import com.hbm.main.CraftingManager;
|
||||
|
||||
import net.minecraft.init.Blocks;
|
||||
@ -96,6 +97,21 @@ public class WeaponRecipes {
|
||||
CraftingManager.addRecipeAuto(DictFrame.fromOne(ModItems.ammo_standard, EnumAmmo.STONE_SHOT, 6), new Object[] { "C", "P", "G", 'C', Blocks.gravel, 'P', Items.paper, 'G', Items.gunpowder });
|
||||
CraftingManager.addRecipeAuto(DictFrame.fromOne(ModItems.ammo_standard, EnumAmmo.STONE_IRON, 6), new Object[] { "C", "P", "G", 'C', IRON.ingot(), 'P', Items.paper, 'G', Items.gunpowder });
|
||||
|
||||
//SEDNA Mods
|
||||
CraftingManager.addRecipeAuto(new ItemStack(ModItems.weapon_mod_special, 1, EnumModSpecial.SILENCER.ordinal()), new Object[] { "P", "B", "P", 'P', ANY_PLASTIC.ingot(), 'B', STEEL.lightBarrel() });
|
||||
CraftingManager.addRecipeAuto(new ItemStack(ModItems.weapon_mod_special, 1, EnumModSpecial.SCOPE.ordinal()), new Object[] { "SPS", "G G", "SPS", 'P', ANY_PLASTIC.ingot(), 'S', STEEL.plate(), 'G', KEY_ANYPANE });
|
||||
CraftingManager.addRecipeAuto(new ItemStack(ModItems.weapon_mod_special, 1, EnumModSpecial.SAW.ordinal()), new Object[] { "BBS", "BHB", 'B', STEEL.bolt(), 'S', KEY_STICK, 'H', DURA.plate() });
|
||||
CraftingManager.addRecipeAuto(new ItemStack(ModItems.weapon_mod_special, 1, EnumModSpecial.SPEEDLOADER.ordinal()), new Object[] { " B ", "BSB", " B ", 'B', STEEL.bolt(), 'S', WEAPONSTEEL.plate() });
|
||||
CraftingManager.addRecipeAuto(new ItemStack(ModItems.weapon_mod_special, 1, EnumModSpecial.SLOWDOWN.ordinal()), new Object[] { " I ", " M ", "I I", 'I', WEAPONSTEEL.ingot(), 'M', WEAPONSTEEL.mechanism() });
|
||||
CraftingManager.addRecipeAuto(new ItemStack(ModItems.weapon_mod_special, 1, EnumModSpecial.SPEEDUP.ordinal()), new Object[] { "PIP", "WWW", "PIP", 'P', WEAPONSTEEL.plate(), 'I', GUNMETAL.ingot(), 'W', GOLD.wireDense() });
|
||||
CraftingManager.addRecipeAuto(new ItemStack(ModItems.weapon_mod_special, 1, EnumModSpecial.GREASEGUN.ordinal()), new Object[] { "BRM", "P G", 'B', WEAPONSTEEL.lightBarrel(), 'R', WEAPONSTEEL.lightReceiver(), 'M', WEAPONSTEEL.mechanism(), 'P', DURA.plate(), 'G', ANY_PLASTIC.grip() });
|
||||
CraftingManager.addRecipeAuto(new ItemStack(ModItems.weapon_mod_special, 1, EnumModSpecial.CHOKE.ordinal()), new Object[] { "P", "B", "P", 'P', WEAPONSTEEL.plate(), 'B', DURA.lightBarrel() });
|
||||
CraftingManager.addRecipeAuto(new ItemStack(ModItems.weapon_mod_special, 1, EnumModSpecial.FURNITURE_GREEN.ordinal()), new Object[] { "PDS", " G", 'P', ANY_PLASTIC.ingot(), 'D', KEY_GREEN, 'S', ANY_PLASTIC.stock(), 'G', ANY_PLASTIC.grip() });
|
||||
CraftingManager.addRecipeAuto(new ItemStack(ModItems.weapon_mod_special, 1, EnumModSpecial.FURNITURE_BLACK.ordinal()), new Object[] { "PDS", " G", 'P', ANY_PLASTIC.ingot(), 'D', KEY_BLACK, 'S', ANY_PLASTIC.stock(), 'G', ANY_PLASTIC.grip() });
|
||||
CraftingManager.addRecipeAuto(new ItemStack(ModItems.weapon_mod_special, 1, EnumModSpecial.SKIN_SATURNITE.ordinal()), new Object[] { "BRM", " P ", 'B', BIGMT.lightBarrel(), 'R', BIGMT.lightReceiver(), 'M', BIGMT.mechanism(), 'P', BIGMT.plate() });
|
||||
CraftingManager.addRecipeAuto(new ItemStack(ModItems.weapon_mod_special, 1, EnumModSpecial.STACK_MAG.ordinal()), new Object[] { "P P", "P P", "PMP", 'P', WEAPONSTEEL.plate(), 'M', BIGMT.mechanism() });
|
||||
CraftingManager.addRecipeAuto(new ItemStack(ModItems.weapon_mod_special, 1, EnumModSpecial.BAYONET.ordinal()), new Object[] { " P", "BBB", 'P', WEAPONSTEEL.plate(), 'B', STEEL.bolt() });
|
||||
|
||||
//Nitra!
|
||||
CraftingManager.addShapelessAuto(DictFrame.fromOne(ModItems.ammo_standard, EnumAmmo.M357_SP, 6), new Object[] { DictFrame.fromOne(ModItems.ammo_standard, EnumAmmo.M357_SP), ModItems.nitra });
|
||||
CraftingManager.addShapelessAuto(DictFrame.fromOne(ModItems.ammo_standard, EnumAmmo.M44_SP, 6), new Object[] { DictFrame.fromOne(ModItems.ammo_standard, EnumAmmo.M44_SP), ModItems.nitra });
|
||||
|
||||
@ -39,6 +39,7 @@ public class AmmoPressRecipes extends SerializableRecipe {
|
||||
OreDictStack copper = new OreDictStack(CU.ingot());
|
||||
OreDictStack plastic = new OreDictStack(ANY_PLASTIC.ingot());
|
||||
OreDictStack uranium = new OreDictStack(U238.ingot());
|
||||
OreDictStack ferro = new OreDictStack(FERRO.ingot());
|
||||
ComparableStack smokeful = new ComparableStack(Items.gunpowder);
|
||||
OreDictStack smokeless = new OreDictStack(ANY_SMOKELESS.dust());
|
||||
ComparableStack rocket = new ComparableStack(ModItems.rocket_fuel);
|
||||
@ -195,6 +196,10 @@ public class AmmoPressRecipes extends SerializableRecipe {
|
||||
null, uranium.copy(2), null,
|
||||
null, smokeless.copy(4), null,
|
||||
null, sSmall.copy(2), null));
|
||||
recipes.add(new AmmoPressRecipe(DictFrame.fromOne(ModItems.ammo_standard, EnumAmmo.R762_HE, 12),
|
||||
he, ferro, null,
|
||||
null, smokeless.copy(4), null,
|
||||
null, sSmall.copy(2), null));
|
||||
|
||||
recipes.add(new AmmoPressRecipe(DictFrame.fromOne(ModItems.ammo_standard, EnumAmmo.BMG50_SP, 12),
|
||||
null, lead.copy(2), null,
|
||||
@ -216,6 +221,10 @@ public class AmmoPressRecipes extends SerializableRecipe {
|
||||
null, uranium.copy(2), null,
|
||||
null, smokeless.copy(6), null,
|
||||
null, sBig, null));
|
||||
recipes.add(new AmmoPressRecipe(DictFrame.fromOne(ModItems.ammo_standard, EnumAmmo.BMG50_HE, 12),
|
||||
he, ferro, null,
|
||||
null, smokeless.copy(6), null,
|
||||
null, sBig, null));
|
||||
|
||||
recipes.add(new AmmoPressRecipe(DictFrame.fromOne(ModItems.ammo_standard, EnumAmmo.G12_BP, 6),
|
||||
null, nugget.copy(6), null,
|
||||
@ -259,21 +268,22 @@ public class AmmoPressRecipes extends SerializableRecipe {
|
||||
null, nugget.copy(8), null,
|
||||
null, smokeless.copy(2), null,
|
||||
null, sShell, null));
|
||||
|
||||
recipes.add(new AmmoPressRecipe(DictFrame.fromOne(ModItems.ammo_standard, EnumAmmo.G10_SHRAPNEL, 4),
|
||||
plastic, nugget.copy(8), null,
|
||||
null, smokeless.copy(2), null,
|
||||
null, sShell, null));
|
||||
|
||||
recipes.add(new AmmoPressRecipe(DictFrame.fromOne(ModItems.ammo_standard, EnumAmmo.G10_DU, 4),
|
||||
null, uranium, null,
|
||||
null, smokeless.copy(2), null,
|
||||
null, sShell, null));
|
||||
|
||||
recipes.add(new AmmoPressRecipe(DictFrame.fromOne(ModItems.ammo_standard, EnumAmmo.G10_SLUG, 4),
|
||||
null, lead, null,
|
||||
null, smokeless.copy(2), null,
|
||||
null, sShell, null));
|
||||
recipes.add(new AmmoPressRecipe(DictFrame.fromOne(ModItems.ammo_standard, EnumAmmo.G10_EXPLOSIVE, 4),
|
||||
he, ferro, null,
|
||||
null, smokeless.copy(2), null,
|
||||
null, sShell, null));
|
||||
|
||||
recipes.add(new AmmoPressRecipe(DictFrame.fromOne(ModItems.ammo_standard, EnumAmmo.G26_FLARE, 4),
|
||||
null, rp, null,
|
||||
@ -387,7 +397,6 @@ public class AmmoPressRecipes extends SerializableRecipe {
|
||||
null, lPlate , null));
|
||||
|
||||
OreDictStack tungsten = new OreDictStack(W.ingot());
|
||||
OreDictStack ferro = new OreDictStack(FERRO.ingot());
|
||||
recipes.add(new AmmoPressRecipe(DictFrame.fromOne(ModItems.ammo_standard, EnumAmmo.COIL_TUNGSTEN, 4),
|
||||
null, null, null,
|
||||
null, tungsten, null,
|
||||
|
||||
@ -14,7 +14,6 @@ import com.hbm.handler.HbmKeybinds.EnumKeybind;
|
||||
import com.hbm.interfaces.IItemHUD;
|
||||
import com.hbm.inventory.RecipesCommon.ComparableStack;
|
||||
import com.hbm.inventory.gui.GUIWeaponTable;
|
||||
import com.hbm.items.IEquipReceiver;
|
||||
import com.hbm.items.IKeybindReceiver;
|
||||
import com.hbm.items.weapon.sedna.hud.IHUDComponent;
|
||||
import com.hbm.items.weapon.sedna.mags.IMagazine;
|
||||
@ -48,7 +47,7 @@ import net.minecraft.world.World;
|
||||
import net.minecraftforge.client.event.RenderGameOverlayEvent.ElementType;
|
||||
import net.minecraftforge.client.event.RenderGameOverlayEvent.Pre;
|
||||
|
||||
public class ItemGunBaseNT extends Item implements IKeybindReceiver, IEquipReceiver, IItemHUD {
|
||||
public class ItemGunBaseNT extends Item implements IKeybindReceiver, IItemHUD {
|
||||
|
||||
/** Timestamp for rendering smoke nodes and muzzle flashes */
|
||||
public long[] lastShot;
|
||||
@ -96,6 +95,7 @@ public class ItemGunBaseNT extends Item implements IKeybindReceiver, IEquipRecei
|
||||
public static final String KEY_LOCKONTARGET = "lockontarget";
|
||||
public static final String KEY_LOCKEDON = "lockedon";
|
||||
public static final String KEY_CANCELRELOAD = "cancel";
|
||||
public static final String KEY_EQUIPPED = "eqipped";
|
||||
|
||||
public static ConcurrentHashMap<EntityLivingBase, AudioWrapper> loopedSounds = new ConcurrentHashMap();
|
||||
|
||||
@ -228,7 +228,6 @@ public class ItemGunBaseNT extends Item implements IKeybindReceiver, IEquipRecei
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onEquip(EntityPlayer player, ItemStack stack) {
|
||||
for(int i = 0; i < this.configs_DNA.length; i++) {
|
||||
playAnimation(player, stack, AnimType.EQUIP, i);
|
||||
@ -291,6 +290,17 @@ public class ItemGunBaseNT extends Item implements IKeybindReceiver, IEquipRecei
|
||||
return;
|
||||
}
|
||||
|
||||
/// ON EQUIP ///
|
||||
if(player != null) {
|
||||
boolean wasHeld = this.getIsEquipped(stack);
|
||||
|
||||
if(!wasHeld && isHeld && player != null) {
|
||||
this.onEquip(player, stack);
|
||||
}
|
||||
}
|
||||
|
||||
this.setIsEquipped(stack, isHeld);
|
||||
|
||||
/// RESET WHEN NOT EQUIPPED ///
|
||||
if(!isHeld) {
|
||||
for(int i = 0; i < confNo; i++) {
|
||||
@ -359,6 +369,9 @@ public class ItemGunBaseNT extends Item implements IKeybindReceiver, IEquipRecei
|
||||
// RELOAD CANCEL //
|
||||
public static boolean getReloadCancel(ItemStack stack) { return getValueBool(stack, KEY_CANCELRELOAD); }
|
||||
public static void setReloadCancel(ItemStack stack, boolean value) { setValueBool(stack, KEY_CANCELRELOAD, value); }
|
||||
// EQUIPPED //
|
||||
public static boolean getIsEquipped(ItemStack stack) { return getValueBool(stack, KEY_EQUIPPED); }
|
||||
public static void setIsEquipped(ItemStack stack, boolean value) { setValueBool(stack, KEY_EQUIPPED, value); }
|
||||
|
||||
|
||||
/// UTIL ///
|
||||
|
||||
@ -139,7 +139,8 @@ public class GunFactory {
|
||||
}
|
||||
|
||||
public static enum EnumModTest {
|
||||
FIRERATE, DAMAGE, MULTI;
|
||||
FIRERATE, DAMAGE, MULTI,
|
||||
OVERRIDE_2_5, OVERRIDE_5, OVERRIDE_7_5, OVERRIDE_10, OVERRIDE_12_5, OVERRIDE_15, OVERRIDE_20;
|
||||
}
|
||||
|
||||
public static enum EnumModGeneric {
|
||||
|
||||
@ -111,7 +111,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) ? -0.5 : -0.75, 25, IType.SIN_DOWN).addPos(0, 0, 0, 75, IType.SIN_FULL));
|
||||
.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));
|
||||
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))
|
||||
|
||||
@ -15,6 +15,7 @@ import com.hbm.items.weapon.sedna.ItemGunBaseNT.GunState;
|
||||
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.IMagazine;
|
||||
import com.hbm.items.weapon.sedna.mags.MagazineFullReload;
|
||||
import com.hbm.items.weapon.sedna.mods.WeaponModManager;
|
||||
import com.hbm.main.MainRegistry;
|
||||
@ -25,7 +26,10 @@ import com.hbm.render.anim.BusAnimation;
|
||||
import com.hbm.render.anim.BusAnimationSequence;
|
||||
import com.hbm.render.anim.BusAnimationKeyframe.IType;
|
||||
import com.hbm.render.anim.HbmAnimations.AnimType;
|
||||
import com.hbm.util.EntityDamageUtil;
|
||||
import com.hbm.util.DamageResistanceHandler.DamageClass;
|
||||
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.item.ItemStack;
|
||||
|
||||
public class XFactory9mm {
|
||||
@ -64,7 +68,7 @@ public class XFactory9mm {
|
||||
.dmg(25F).delay(4).dry(10).spread(0.005F).reload(53).jam(44).sound("hbm:weapon.fire.pistol", 1.0F, 1.0F)
|
||||
.mag(new MagazineFullReload(0, 17).addConfigs(p9_sp, p9_fmj, p9_jhp, p9_ap))
|
||||
.offset(1, -0.0625 * 2.5, -0.25D)
|
||||
.setupStandardFire().recoil(LAMBDA_RECOIL_LAG))
|
||||
.setupStandardFire().fire(LAMBDA_FIRE_LAG).recoil(LAMBDA_RECOIL_LAG))
|
||||
.setupStandardConfiguration()
|
||||
.anim(LAMBDA_LAG_ANIMS).orchestra(Orchestras.ORCHESTRA_LAG)
|
||||
).setUnlocalizedName("gun_lag");
|
||||
@ -133,6 +137,27 @@ public class XFactory9mm {
|
||||
GunStateDecider.deciderAutoRefire(stack, ctx, lastState, 0, index, () -> { return ItemGunBaseNT.getSecondary(stack, index) && ItemGunBaseNT.getMode(stack, ctx.configIndex) == 0; });
|
||||
};
|
||||
|
||||
public static BiConsumer<ItemStack, LambdaContext> LAMBDA_FIRE_LAG = (stack, ctx) -> {
|
||||
AnimType type = ItemGunBaseNT.getLastAnim(stack, ctx.configIndex);
|
||||
int timer = ItemGunBaseNT.getAnimTimer(stack, ctx.configIndex);
|
||||
EntityPlayer player = ctx.getPlayer();
|
||||
if(player != null && type == AnimType.INSPECT && timer > 20 && timer < 60) {
|
||||
int index = ctx.configIndex;
|
||||
Receiver primary = ctx.config.getReceivers(stack)[0];
|
||||
IMagazine mag = primary.getMagazine(stack);
|
||||
BulletConfig config = (BulletConfig) mag.getType(stack, ctx.inventory);
|
||||
player.addStat(MainRegistry.statBullets, 1);
|
||||
mag.useUpAmmo(stack, ctx.inventory, 1);
|
||||
ItemGunBaseNT.setWear(stack, index, Math.min(ItemGunBaseNT.getWear(stack, index) + config.wear, ctx.config.getDurability(stack)));
|
||||
player.worldObj.playSoundEffect(player.posX, player.posY, player.posZ, primary.getFireSound(stack), primary.getFireVolume(stack), primary.getFirePitch(stack));
|
||||
ItemGunBaseNT.setState(stack, index, GunState.COOLDOWN);
|
||||
ItemGunBaseNT.setTimer(stack, index, primary.getDelayAfterFire(stack));
|
||||
EntityDamageUtil.attackEntityFromNT(player, BulletConfig.getDamage(player, player, DamageClass.PHYSICAL), 1_000F, true, false, 1D, 5F, 0F);
|
||||
} else {
|
||||
Lego.doStandardFire(stack, ctx, AnimType.CYCLE, true);
|
||||
}
|
||||
};
|
||||
|
||||
public static BiConsumer<ItemStack, LambdaContext> LAMBDA_SMOKE = (stack, ctx) -> {
|
||||
Lego.handleStandardSmoke(ctx.entity, stack, 2000, 0.05D, 1.1D, ctx.configIndex);
|
||||
};
|
||||
|
||||
@ -58,6 +58,14 @@ public class WeaponModManager {
|
||||
new WeaponModDefinition(new ItemStack(ModItems.weapon_mod_test, 1, EnumModTest.DAMAGE.ordinal())).addDefault(TEST_DAMAGE);
|
||||
new WeaponModDefinition(new ItemStack(ModItems.weapon_mod_test, 1, EnumModTest.MULTI.ordinal())).addDefault(TEST_MULTI);
|
||||
|
||||
new WeaponModDefinition(new ItemStack(ModItems.weapon_mod_test, 1, EnumModTest.OVERRIDE_2_5.ordinal())).addDefault(new WeaponModOverride(3, 2.5F, "OVERRIDE"));
|
||||
new WeaponModDefinition(new ItemStack(ModItems.weapon_mod_test, 1, EnumModTest.OVERRIDE_5.ordinal())).addDefault(new WeaponModOverride(4, 5F, "OVERRIDE"));
|
||||
new WeaponModDefinition(new ItemStack(ModItems.weapon_mod_test, 1, EnumModTest.OVERRIDE_7_5.ordinal())).addDefault(new WeaponModOverride(5, 7.5F, "OVERRIDE"));
|
||||
new WeaponModDefinition(new ItemStack(ModItems.weapon_mod_test, 1, EnumModTest.OVERRIDE_10.ordinal())).addDefault(new WeaponModOverride(6, 10F, "OVERRIDE"));
|
||||
new WeaponModDefinition(new ItemStack(ModItems.weapon_mod_test, 1, EnumModTest.OVERRIDE_12_5.ordinal())).addDefault(new WeaponModOverride(7, 12_5F, "OVERRIDE"));
|
||||
new WeaponModDefinition(new ItemStack(ModItems.weapon_mod_test, 1, EnumModTest.OVERRIDE_15.ordinal())).addDefault(new WeaponModOverride(8, 15F, "OVERRIDE"));
|
||||
new WeaponModDefinition(new ItemStack(ModItems.weapon_mod_test, 1, EnumModTest.OVERRIDE_20.ordinal())).addDefault(new WeaponModOverride(9, 20F, "OVERRIDE"));
|
||||
|
||||
new WeaponModDefinition(new ItemStack(ModItems.weapon_mod_generic, 1, EnumModGeneric.IRON_DAMAGE.ordinal())).addMod(ModItems.gun_pepperbox, new WeaponModGenericDamage(100));
|
||||
new WeaponModDefinition(new ItemStack(ModItems.weapon_mod_generic, 1, EnumModGeneric.IRON_DURA.ordinal())).addMod(ModItems.gun_pepperbox, new WeaponModGenericDurability(101));
|
||||
|
||||
@ -151,7 +159,7 @@ public class WeaponModManager {
|
||||
.addMod(ModItems.gun_greasegun, new WeaponModCaliber(311, 24, 3F, p45))
|
||||
.addMod(ModItems.gun_uzi, new WeaponModCaliber(312, 24, 3F, p45))
|
||||
.addMod(ModItems.gun_uzi_akimbo, new WeaponModCaliber(313, 24, 3F, p45))
|
||||
.addMod(ModItems.gun_lag, new WeaponModCaliber(314, 24, 25F, p45));
|
||||
.addMod(ModItems.gun_lag, new WeaponModCaliber(314, 15, 25F, p45));
|
||||
new WeaponModDefinition(EnumModCaliber.P22)
|
||||
.addMod(ModItems.gun_henry, new WeaponModCaliber(320, 28, 10F, p22))
|
||||
.addMod(ModItems.gun_uzi, new WeaponModCaliber(321, 40, 3F, p22))
|
||||
@ -260,6 +268,7 @@ public class WeaponModManager {
|
||||
WeaponModDefinition def = stackToMod.get(new ComparableStack(mod));
|
||||
if(def == null) return null;
|
||||
IWeaponMod newMod = def.modByGun.get(new ComparableStack(gun).makeSingular()); //shift clicking causes the gun to have stack size 0!
|
||||
if(newMod == null) newMod = def.modByGun.get(null);
|
||||
return newMod;
|
||||
}
|
||||
|
||||
|
||||
@ -0,0 +1,22 @@
|
||||
package com.hbm.items.weapon.sedna.mods;
|
||||
|
||||
import com.hbm.items.weapon.sedna.Receiver;
|
||||
|
||||
import net.minecraft.item.ItemStack;
|
||||
|
||||
public class WeaponModOverride extends WeaponModBase {
|
||||
|
||||
protected final float baseDamage;
|
||||
|
||||
public WeaponModOverride(int id, float baseDamage, String... slots) {
|
||||
super(id, slots);
|
||||
this.baseDamage = baseDamage;
|
||||
this.setPriority(PRIORITY_SET);
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T> T eval(T base, ItemStack gun, String key, Object parent) {
|
||||
if(key == Receiver.F_BASEDAMAGE) return cast(baseDamage, base);
|
||||
return base;
|
||||
}
|
||||
}
|
||||
@ -3,7 +3,7 @@ package com.hbm.lib;
|
||||
public class RefStrings {
|
||||
public static final String MODID = "hbm";
|
||||
public static final String NAME = "Hbm's Nuclear Tech Mod";
|
||||
public static final String VERSION = "1.0.27 BETA (5257)";
|
||||
public static final String VERSION = "1.0.27 BETA (5278)";
|
||||
//HBM's Beta Naming Convention:
|
||||
//V T (X)
|
||||
//V -> next release version
|
||||
|
||||
@ -1760,7 +1760,7 @@ public class ClientProxy extends ServerProxy {
|
||||
.addPos(90, 0, 1, 800)
|
||||
.addPos(0, 0, 1, 50));
|
||||
|
||||
HbmAnimations.hotbar[player.inventory.currentItem][0] = new Animation(player.getHeldItem().getItem().getUnlocalizedName(), System.currentTimeMillis(), animation);
|
||||
HbmAnimations.hotbar[player.inventory.currentItem][0] = new Animation(player.getHeldItem().getItem().getUnlocalizedName(), System.currentTimeMillis(), animation, null);
|
||||
}
|
||||
|
||||
/* crucible swing */
|
||||
@ -1782,7 +1782,7 @@ public class ClientProxy extends ServerProxy {
|
||||
|
||||
Minecraft.getMinecraft().getSoundHandler().playSound(PositionedSoundRecord.func_147674_a(new ResourceLocation("hbm:weapon.cSwing"), 0.8F + player.getRNG().nextFloat() * 0.2F));
|
||||
|
||||
HbmAnimations.hotbar[player.inventory.currentItem][0] = new Animation(player.getHeldItem().getItem().getUnlocalizedName(), System.currentTimeMillis(), animation);
|
||||
HbmAnimations.hotbar[player.inventory.currentItem][0] = new Animation(player.getHeldItem().getItem().getUnlocalizedName(), System.currentTimeMillis(), animation, null);
|
||||
}
|
||||
}
|
||||
|
||||
@ -1806,7 +1806,7 @@ public class ClientProxy extends ServerProxy {
|
||||
.addPos(0, 0, 0, retire));
|
||||
|
||||
|
||||
HbmAnimations.hotbar[player.inventory.currentItem][0] = new Animation(player.getHeldItem().getItem().getUnlocalizedName(), System.currentTimeMillis(), animation);
|
||||
HbmAnimations.hotbar[player.inventory.currentItem][0] = new Animation(player.getHeldItem().getItem().getUnlocalizedName(), System.currentTimeMillis(), animation, null);
|
||||
|
||||
} else {
|
||||
|
||||
@ -1827,7 +1827,7 @@ public class ClientProxy extends ServerProxy {
|
||||
.addPos(2, 0, 2, sideways)
|
||||
.addPos(0, 0, 0, retire));
|
||||
|
||||
HbmAnimations.hotbar[player.inventory.currentItem][0] = new Animation(player.getHeldItem().getItem().getUnlocalizedName(), System.currentTimeMillis(), animation);
|
||||
HbmAnimations.hotbar[player.inventory.currentItem][0] = new Animation(player.getHeldItem().getItem().getUnlocalizedName(), System.currentTimeMillis(), animation, null);
|
||||
}
|
||||
}
|
||||
|
||||
@ -1839,7 +1839,7 @@ public class ClientProxy extends ServerProxy {
|
||||
BusAnimation anim = item.getAnimation(data, stack);
|
||||
|
||||
if(anim != null) {
|
||||
HbmAnimations.hotbar[player.inventory.currentItem][0] = new Animation(player.getHeldItem().getItem().getUnlocalizedName(), System.currentTimeMillis(), anim);
|
||||
HbmAnimations.hotbar[player.inventory.currentItem][0] = new Animation(player.getHeldItem().getItem().getUnlocalizedName(), System.currentTimeMillis(), anim, null);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -105,7 +105,7 @@ public class GunAnimationPacket implements IMessage {
|
||||
|
||||
if(animation != null) {
|
||||
boolean isReloadAnimation = type == AnimType.RELOAD || type == AnimType.RELOAD_CYCLE || type == AnimType.RELOAD_EMPTY;
|
||||
HbmAnimations.hotbar[slot][0] = new Animation(stack.getItem().getUnlocalizedName(), System.currentTimeMillis(), animation, isReloadAnimation && base.mainConfig.reloadAnimationsSequential);
|
||||
HbmAnimations.hotbar[slot][0] = new Animation(stack.getItem().getUnlocalizedName(), System.currentTimeMillis(), animation, type, isReloadAnimation && base.mainConfig.reloadAnimationsSequential);
|
||||
}
|
||||
|
||||
} catch(Exception x) { }
|
||||
@ -143,7 +143,7 @@ public class GunAnimationPacket implements IMessage {
|
||||
Minecraft.getMinecraft().entityRenderer.itemRenderer.resetEquippedProgress();
|
||||
Minecraft.getMinecraft().entityRenderer.itemRenderer.itemToRender = stack;
|
||||
boolean isReloadAnimation = type == AnimType.RELOAD || type == AnimType.RELOAD_CYCLE || type == AnimType.RELOAD_EMPTY;
|
||||
HbmAnimations.hotbar[slot][gunIndex] = new Animation(stack.getItem().getUnlocalizedName(), System.currentTimeMillis(), animation, isReloadAnimation && config.getReloadAnimSequential(stack));
|
||||
HbmAnimations.hotbar[slot][gunIndex] = new Animation(stack.getItem().getUnlocalizedName(), System.currentTimeMillis(), animation, type, isReloadAnimation && config.getReloadAnimSequential(stack));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -47,18 +47,22 @@ public class HbmAnimations {
|
||||
public BusAnimation animation;
|
||||
// If set, don't cancel this animation when the timer ends, instead wait for the next to start
|
||||
public boolean holdLastFrame = false;
|
||||
// so we know what type of animation we're playing, only used rarely
|
||||
public AnimType type;
|
||||
|
||||
public Animation(String key, long startMillis, BusAnimation animation) {
|
||||
public Animation(String key, long startMillis, BusAnimation animation, AnimType type) {
|
||||
this.key = key;
|
||||
this.startMillis = startMillis;
|
||||
this.animation = animation;
|
||||
this.type = type;
|
||||
}
|
||||
|
||||
public Animation(String key, long startMillis, BusAnimation animation, boolean holdLastFrame) {
|
||||
public Animation(String key, long startMillis, BusAnimation animation, AnimType type, boolean holdLastFrame) {
|
||||
this.key = key;
|
||||
this.startMillis = startMillis;
|
||||
this.animation = animation;
|
||||
this.holdLastFrame = holdLastFrame;
|
||||
this.type = type;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -84,6 +84,16 @@ public abstract class ItemRenderWeaponBase implements IItemRenderer {
|
||||
GL11.glPushMatrix();
|
||||
|
||||
if(mc.gameSettings.thirdPersonView == 0 && !mc.renderViewEntity.isPlayerSleeping() && !mc.gameSettings.hideGUI && !mc.playerController.enableEverythingIsScrewedUpMode()) {
|
||||
/*ItemRenderer ir = mc.entityRenderer.itemRenderer;
|
||||
float equip = ir.prevEquippedProgress + (ir.equippedProgress- ir.prevEquippedProgress) * interp;
|
||||
Animation current = HbmAnimations.getRelevantAnim();
|
||||
// flicker prevention, if equip is in progress, only render if an animation is playing
|
||||
if(!(equip < 0.25 && ir.prevEquippedProgress < ir.equippedProgress && (current == null || current.type != AnimType.EQUIP))) {
|
||||
entityRenderer.enableLightmap(interp);
|
||||
this.setupTransformsAndRender(stack);
|
||||
entityRenderer.disableLightmap(interp);
|
||||
}*/
|
||||
|
||||
entityRenderer.enableLightmap(interp);
|
||||
this.setupTransformsAndRender(stack);
|
||||
entityRenderer.disableLightmap(interp);
|
||||
|
||||
@ -1,5 +1,6 @@
|
||||
package com.hbm.tileentity.machine.storage;
|
||||
|
||||
import api.hbm.energymk2.IEnergyReceiverMK2.ConnectionPriority;
|
||||
import api.hbm.fluidmk2.IFluidStandardTransceiverMK2;
|
||||
|
||||
import com.hbm.blocks.ModBlocks;
|
||||
@ -91,7 +92,7 @@ public class TileEntityBarrel extends TileEntityMachineBase implements SimpleCom
|
||||
tank.unloadTank(4, 5, slots);
|
||||
|
||||
for(DirPos pos : getConPos()) {
|
||||
if(mode == 0 || mode == 2) this.trySubscribe(tank.getTankType(), worldObj, pos);
|
||||
if(mode == 0 || mode == 1) this.trySubscribe(tank.getTankType(), worldObj, pos);
|
||||
if(mode == 1 || mode == 2) this.tryProvide(tank, worldObj, pos);
|
||||
}
|
||||
|
||||
@ -234,6 +235,11 @@ public class TileEntityBarrel extends TileEntityMachineBase implements SimpleCom
|
||||
return new FluidTank[] { tank };
|
||||
}
|
||||
|
||||
@Override
|
||||
public ConnectionPriority getFluidPriority() {
|
||||
return mode == 1 ? ConnectionPriority.LOW : ConnectionPriority.NORMAL;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int[] getFluidIDToCopy() {
|
||||
return new int[] {tank.getTankType().getID()};
|
||||
|
||||
@ -1,5 +1,6 @@
|
||||
package com.hbm.tileentity.machine.storage;
|
||||
|
||||
import api.hbm.energymk2.IEnergyReceiverMK2.ConnectionPriority;
|
||||
import api.hbm.fluid.IFluidStandardTransceiver;
|
||||
import com.hbm.blocks.BlockDummyable;
|
||||
import com.hbm.blocks.ModBlocks;
|
||||
@ -48,7 +49,7 @@ import java.util.List;
|
||||
import java.util.Random;
|
||||
|
||||
@Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "opencomputers")})
|
||||
public class TileEntityMachineFluidTank extends TileEntityMachineBase implements SimpleComponent, OCComponent, IFluidStandardTransceiver, IPersistentNBT, IOverpressurable, IGUIProvider, IRepairable, IFluidCopiable{
|
||||
public class TileEntityMachineFluidTank extends TileEntityMachineBase implements SimpleComponent, OCComponent, IFluidStandardTransceiver, IPersistentNBT, IOverpressurable, IGUIProvider, IRepairable, IFluidCopiable {
|
||||
|
||||
public FluidTank tank;
|
||||
public short mode = 0;
|
||||
@ -107,7 +108,7 @@ public class TileEntityMachineFluidTank extends TileEntityMachineBase implements
|
||||
}
|
||||
|
||||
for(DirPos pos : getConPos()) {
|
||||
if(mode == 0 || mode == 2) this.trySubscribe(tank.getTankType(), worldObj, pos);
|
||||
if(mode == 0 || mode == 1) this.trySubscribe(tank.getTankType(), worldObj, pos);
|
||||
if(mode == 1 || mode == 2) this.tryProvide(tank, worldObj, pos);
|
||||
}
|
||||
|
||||
@ -331,12 +332,8 @@ public class TileEntityMachineFluidTank extends TileEntityMachineBase implements
|
||||
|
||||
@Override
|
||||
public long getDemand(FluidType type, int pressure) {
|
||||
|
||||
if(this.mode == 2 || this.mode == 3 || this.sendingBrake)
|
||||
return 0;
|
||||
|
||||
if(this.mode == 2 || this.mode == 3) return 0;
|
||||
if(tank.getPressure() != pressure) return 0;
|
||||
|
||||
return type == tank.getTankType() ? tank.getMaxFill() - tank.getFill() : 0;
|
||||
}
|
||||
|
||||
@ -377,6 +374,11 @@ public class TileEntityMachineFluidTank extends TileEntityMachineBase implements
|
||||
return (mode == 0 || mode == 1) ? new FluidTank[] {tank} : new FluidTank[0];
|
||||
}
|
||||
|
||||
@Override
|
||||
public ConnectionPriority getFluidPriority() {
|
||||
return mode == 1 ? ConnectionPriority.LOW : ConnectionPriority.NORMAL;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int[] getFluidIDToCopy() {
|
||||
return new int[] {tank.getTankType().getID()};
|
||||
|
||||
@ -40,6 +40,8 @@ public net.minecraft.nbt.NBTTagList * # Mo
|
||||
|
||||
# ItemRenderer
|
||||
public net.minecraft.client.renderer.ItemRenderer field_78453_b # itemToRender
|
||||
public net.minecraft.client.renderer.ItemRenderer field_78454_c # equippedProgress
|
||||
public net.minecraft.client.renderer.ItemRenderer field_78451_d # prevEquippedProgress
|
||||
|
||||
# AbstractResourcePack
|
||||
public net.minecraft.client.resources.AbstractResourcePack field_110597_b # resourcePackFile
|
||||
|
||||
@ -3736,6 +3736,16 @@ item.weapon_mod_special.slowdown.name=Rädergetriebe
|
||||
item.weapon_mod_special.speedloader.name=Schnelllader
|
||||
item.weapon_mod_special.speedup.name=Elektrischer Servomotor
|
||||
item.weapon_mod_special.stack_mag.name=Zweistapel-Magazin
|
||||
item.weapon_mod_test.damage.name=DAMAGE UPGRADE
|
||||
item.weapon_mod_test.firerate.name=FIRE RATE UPGRADE
|
||||
item.weapon_mod_test.multi.name=MULTI SHOT UPGRADE
|
||||
item.weapon_mod_test.override_2_5.name=DAMAGE OVERRIDE (2.5)
|
||||
item.weapon_mod_test.override_5.name=DAMAGE OVERRIDE (5)
|
||||
item.weapon_mod_test.override_7_5.name=DAMAGE OVERRIDE (7.5)
|
||||
item.weapon_mod_test.override_10.name=DAMAGE OVERRIDE (10)
|
||||
item.weapon_mod_test.override_12_5.name=DAMAGE OVERRIDE (12.5)
|
||||
item.weapon_mod_test.override_15.name=DAMAGE OVERRIDE (15)
|
||||
item.weapon_mod_test.override_20.name=DAMAGE OVERRIDE (20)
|
||||
item.weapon_pipe_lead.name=Die Handüberbrückung
|
||||
item.weapon_pipe_rusty.name=Der Einstellungskorrigierer
|
||||
item.weapon_saw.name=Ärztlich autorisierter Mord
|
||||
|
||||
@ -4762,6 +4762,16 @@ item.weapon_mod_special.slowdown.name=Gear Train
|
||||
item.weapon_mod_special.speedloader.name=Speedloader
|
||||
item.weapon_mod_special.speedup.name=Auxiliary Electric Engine
|
||||
item.weapon_mod_special.stack_mag.name=Double-Stacked Magazine
|
||||
item.weapon_mod_test.damage.name=DAMAGE UPGRADE
|
||||
item.weapon_mod_test.firerate.name=FIRE RATE UPGRADE
|
||||
item.weapon_mod_test.multi.name=MULTI SHOT UPGRADE
|
||||
item.weapon_mod_test.override_2_5.name=DAMAGE OVERRIDE (2.5)
|
||||
item.weapon_mod_test.override_5.name=DAMAGE OVERRIDE (5)
|
||||
item.weapon_mod_test.override_7_5.name=DAMAGE OVERRIDE (7.5)
|
||||
item.weapon_mod_test.override_10.name=DAMAGE OVERRIDE (10)
|
||||
item.weapon_mod_test.override_12_5.name=DAMAGE OVERRIDE (12.5)
|
||||
item.weapon_mod_test.override_15.name=DAMAGE OVERRIDE (15)
|
||||
item.weapon_mod_test.override_20.name=DAMAGE OVERRIDE (20)
|
||||
item.weapon_pipe_lead.name=The Manual Override
|
||||
item.weapon_pipe_rusty.name=The Attitude Adjuster
|
||||
item.weapon_saw.name=Doctor Assisted Homicide
|
||||
|
||||
|
After Width: | Height: | Size: 267 B |
|
After Width: | Height: | Size: 267 B |
|
After Width: | Height: | Size: 267 B |
|
After Width: | Height: | Size: 267 B |
|
After Width: | Height: | Size: 267 B |
|
After Width: | Height: | Size: 267 B |
|
After Width: | Height: | Size: 267 B |