Merge remote-tracking branch 'origin/Optimization' into Optimization
@ -104,6 +104,9 @@ NTM has certain behaviors intended to fix vanilla code or to increase compatibil
|
||||
### Thermos
|
||||
Thermos servers (along with its forks such as Crucible) have a "performance" feature that causes all tile entity ticking to slow down if there's no player present in the same chunk. For obvious reasons, this will heavily impact machines and cause phantom issues that, not having knowledge of this "performance" feature, are near impossible to diagnose. By default, NTM will crash on servers running the Thermos base code and print a lengthy message informing server owners about this "performance" feature as well as how to fix the issues it causes. The error message is printed in plain English on the top of the crash log, failure to read (as well as understand) it will leave the server inoperable.
|
||||
|
||||
### Shaders
|
||||
Shaders (loaded by either Optifine, Iris or otherwise) will in all likelihood break when a gun is held. This is because guns need to skip vanilla's first person item setup for the rendering, however shaders apparently use the setup step for setting certain GL states, and skipping that will break rendering. [Shader Fixer](https://modrinth.com/mod/shader-fixer) is a mod with various fixes, among which is explicit compatibility for NTM's guns.
|
||||
|
||||
### Optifine
|
||||
One of the most common "performance" mods on 1.7.10, Optifine, achieves an increase in performance by breaking small things in spots that are usually hard to notice, although this can cause severe issues with NTM. A short list of problems, along with some solutions, follows:
|
||||
* Get rid of Optifine and use one of the many [other, less intrusive performance mods](https://gist.github.com/makamys/7cb74cd71d93a4332d2891db2624e17c).
|
||||
@ -113,7 +116,7 @@ One of the most common "performance" mods on 1.7.10, Optifine, achieves an incre
|
||||
### Angelica
|
||||
In older versions, Angelica caused issues regarding model rendering, often times making 3D models transparent. Ever since the switch to VBOs, models work fine. Another issue was blocks with connected textures not rendering at all, but this too was fixed, meaning as of time of writing there are no major incompatibilities known with Angelica. However there a few minor issues that persist, but those can be fixed:
|
||||
* Often times when making a new world, all items appear as white squares. Somehow, scrolling though the NEI pages fixes this permanently
|
||||
* Reeds will render weirdly, this is an incompatibility with the "Compact Vertex Format" feature. Disabling it will make reeds look normal
|
||||
* Reeds will render weirdly, this is an incompatibility with the "Compact Vertex Format" feature. Disabling it will make reeds look normal. Alternatively, reed rendering can be disabled by using `/ntmclient set RENDER_REEDS false`, which works around the issue by not rendering the underwater portion of reeds at all.
|
||||
|
||||
### Skybox chainloader
|
||||
NTM adds a few small things to the skybox using a custom skybox renderer. Minecraft can only have a single skybox renderer loaded, so setting the skybox to the NTM custom one would break compatibility with other mods' skyboxes. To mend this, NTM employs a **chainloader**. This chainloader will detect if a different skybox is loaded, save a reference to that skybox and then use NTM's skybox, which when used will also make sure to run the previous modded skybox renderer. In the event that NTM's skybox were to cause trouble, it can be disabled with the config option `1.31_enableSkyboxes`.
|
||||
|
||||
42
changelog
@ -1,25 +1,27 @@
|
||||
## Added
|
||||
* Double barrel shotgun
|
||||
* Special weapon, spawns as part of certain loot pools
|
||||
* Uses the new 10 gauge caliber
|
||||
* Will reload after each shot, however it is not belt-fed, if ammo is depleted, the next reload must be triggered manually
|
||||
* 10 gauge slug
|
||||
* Shredder
|
||||
* A b-side for the autoshotgun
|
||||
* Fires 12 gauge, accelerated by plasma, which bursts on impact
|
||||
* Fragments move slowly and have damaging ricochet effects
|
||||
* Fragments keep the effects of the original shell (e.g. explosive shell will spawn a single explosive fragment)
|
||||
|
||||
## Changed
|
||||
* Removed the old casing items
|
||||
* Reduced the flicker on the autoshotgun's holo sights
|
||||
* Black powder bullets now have 75% base damage instead of 50%
|
||||
* Ball and powder type rounds no longer have a bonus on headshot
|
||||
* Shot and powder now does way less damage
|
||||
* Some secret ammo types are now craftable
|
||||
* Updated the assault rifle's texture
|
||||
* Shooting at old CRT screens now breaks them
|
||||
|
||||
## Fixed
|
||||
* Fixed the bullet casing molds being unobtainable
|
||||
* Fixed instant crash caused by smelting certain things in the crucible
|
||||
* Fixed the SPAS' alt fire having a delay of only 10 ticks instead of 20
|
||||
* Fixed 240mm nuclear shells not triggering properly if they hit their target within 3 ticks of being spawned
|
||||
* Fixed some items that are supposed to be hidden in NEI being visible
|
||||
* Fixed dual lever action shotguns having inconsistent damage
|
||||
* Fixed entities (especially players) not being affected at all by their own explosions (rockets, 40mm grenades, etc)
|
||||
* To keep rocket jumping at least somewhat viable, self-damage from explosions is reduced by 50%, the knockback remains the same
|
||||
* Fixed missing localization for the casing molds
|
||||
* Fixed the broken CIWS turret crashing instantly
|
||||
* Added safeguards to prevent any unnamed casing config from crashing
|
||||
* Fixed one of the break action revolver's faces having incorrect normals, making it invisible
|
||||
* Fixed the fluid trait config not loading correctly
|
||||
* Fluids are now subject to the /ntmreload command
|
||||
* Fixed `ITEM_TOOLTIP_SHOW_CUSTOM_NUKE` client config overriding `ITEM_TOOLTIP_SHOW_OREDICT` due to name overlap
|
||||
* Fixed certain secret weapon creation condition not working properly
|
||||
* Fixed artillery rockets getting stuck in the air when their target is not set to a block
|
||||
* Fixed potential issue of ABMs getting stuck mid-flight when their target is destroyed prematurely
|
||||
* Fixed mistakes in the fragment names for de_DE
|
||||
* Fixed nitra rocket duplication only yielding one rocket
|
||||
* Fixed rotary furnace not always properly showing the metal pouring effect
|
||||
* Fixed T45 model not lifting its arms when a new gun is held
|
||||
* Like previously, due to the archaic nature of the model, the rotations are not very precise, and will most likely break when holding an akimbo gun
|
||||
* Potentially fixed an issue where cargo planes do not successfully spawn on lower render distances
|
||||
@ -143,7 +143,7 @@ public class BlockPedestal extends BlockContainer {
|
||||
}
|
||||
|
||||
if(recipe.extra == recipe.extra.SUN) {
|
||||
if(world.getCelestialAngle(0) > 0.15 || world.getCelestialAngle(0) < 0.85) continue;
|
||||
if(world.getCelestialAngle(0) > 0.15 && world.getCelestialAngle(0) < 0.85) continue;
|
||||
}
|
||||
|
||||
for(int i = 0; i < 9; i++) {
|
||||
|
||||
@ -51,7 +51,7 @@ public class ClientConfig {
|
||||
configMap.put("GUN_MODEL_FOV", GUN_MODEL_FOV);
|
||||
configMap.put("GUN_VISUAL_RECOIL", GUN_VISUAL_RECOIL);
|
||||
configMap.put("ITEM_TOOLTIP_SHOW_OREDICT", ITEM_TOOLTIP_SHOW_OREDICT);
|
||||
configMap.put("ITEM_TOOLTIP_SHOW_OREDICT", ITEM_TOOLTIP_SHOW_CUSTOM_NUKE);
|
||||
configMap.put("ITEM_TOOLTIP_SHOW_CUSTOM_NUKE", ITEM_TOOLTIP_SHOW_CUSTOM_NUKE);
|
||||
configMap.put("MAIN_MENU_WACKY_SPLASHES", MAIN_MENU_WACKY_SPLASHES);
|
||||
configMap.put("DODD_RBMK_DIAGNOSTIC", DODD_RBMK_DIAGNOSTIC);
|
||||
configMap.put("RENDER_CABLE_HANG", RENDER_CABLE_HANG);
|
||||
|
||||
@ -10,10 +10,12 @@ import static com.hbm.inventory.OreDictManager.*;
|
||||
|
||||
import com.hbm.items.ItemAmmoEnums.*;
|
||||
import com.hbm.items.ItemEnums.EnumCasingType;
|
||||
import com.hbm.items.ItemEnums.EnumSecretType;
|
||||
import com.hbm.items.machine.ItemCircuit.EnumCircuitType;
|
||||
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.main.CraftingManager;
|
||||
|
||||
import net.minecraft.init.Blocks;
|
||||
@ -72,6 +74,7 @@ public class WeaponRecipes {
|
||||
CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_chemthrower, 1), new Object[] { "MHW", "PSS", 'M', WEAPONSTEEL.mechanism(), 'H', RUBBER.pipe(), 'W', ModItems.wrench, 'P', WEAPONSTEEL.heavyBarrel(), 'S', WEAPONSTEEL.shell() });
|
||||
CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_m2, 1), new Object[] { " G", "BRM", " G", 'G', WOOD.grip(), 'B', FERRO.heavyBarrel(), 'R', FERRO.heavyReceiver(), 'M', WEAPONSTEEL.mechanism() });
|
||||
CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_autoshotgun, 1), new Object[] { "BRM", "G G", 'B', FERRO.heavyBarrel(), 'R', FERRO.heavyReceiver(), 'M', WEAPONSTEEL.mechanism(), 'G', ANY_PLASTIC.grip() });
|
||||
CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_autoshotgun_shredder, 1), new Object[] { " M ", "MSM", " M ", 'M', BIGMT.mechanism(), 'A', ModItems.gun_autoshotgun });
|
||||
CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_quadro, 1), new Object[] { "BCB", "BMB", "GG ", 'B', FERRO.heavyBarrel(), 'C', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.ADVANCED), 'M', WEAPONSTEEL.mechanism(), 'G', ANY_PLASTIC.grip() });
|
||||
CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_lag, 1), new Object[] { "BRM", " G", 'B', ANY_RESISTANTALLOY.lightBarrel(), 'R', ANY_RESISTANTALLOY.lightReceiver(), 'M', WEAPONSTEEL.mechanism(), 'G', ANY_PLASTIC.grip() });
|
||||
CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_minigun, 1), new Object[] { "BMG", "BRE", "BGM", 'B', ANY_RESISTANTALLOY.lightBarrel(), 'M', WEAPONSTEEL.mechanism(), 'G', ANY_PLASTIC.grip(), 'R', ANY_RESISTANTALLOY.heavyReceiver(), 'E', ModItems.motor_desh });
|
||||
@ -96,8 +99,13 @@ public class WeaponRecipes {
|
||||
CraftingManager.addShapelessAuto(DictFrame.fromOne(ModItems.ammo_standard, EnumAmmo.R556_SP, 8), new Object[] { DictFrame.fromOne(ModItems.ammo_standard, EnumAmmo.R556_SP), ModItems.nitra });
|
||||
CraftingManager.addShapelessAuto(DictFrame.fromOne(ModItems.ammo_standard, EnumAmmo.R762_SP, 6), new Object[] { DictFrame.fromOne(ModItems.ammo_standard, EnumAmmo.R762_SP), ModItems.nitra });
|
||||
CraftingManager.addShapelessAuto(DictFrame.fromOne(ModItems.ammo_standard, EnumAmmo.BMG50_SP, 4), new Object[] { DictFrame.fromOne(ModItems.ammo_standard, EnumAmmo.BMG50_SP), ModItems.nitra });
|
||||
CraftingManager.addShapelessAuto(DictFrame.fromOne(ModItems.ammo_standard, EnumAmmo.G40_HE, 2), new Object[] { DictFrame.fromOne(ModItems.ammo_standard, EnumAmmo.G40_HE), ModItems.nitra });
|
||||
CraftingManager.addShapelessAuto(DictFrame.fromOne(ModItems.ammo_standard, EnumAmmo.ROCKET_HE, 1), new Object[] { DictFrame.fromOne(ModItems.ammo_standard, EnumAmmo.ROCKET_HE), ModItems.nitra });
|
||||
CraftingManager.addShapelessAuto(DictFrame.fromOne(ModItems.ammo_standard, EnumAmmo.G40_HE, 3), new Object[] { DictFrame.fromOne(ModItems.ammo_standard, EnumAmmo.G40_HE), ModItems.nitra });
|
||||
CraftingManager.addShapelessAuto(DictFrame.fromOne(ModItems.ammo_standard, EnumAmmo.ROCKET_HE, 2), new Object[] { DictFrame.fromOne(ModItems.ammo_standard, EnumAmmo.ROCKET_HE), ModItems.nitra });
|
||||
|
||||
//secrets!
|
||||
CraftingManager.addShapelessAuto(DictFrame.fromOne(ModItems.ammo_secret, EnumAmmoSecret.M44_EQUESTRIAN, 6), new Object[] { DictFrame.fromOne(ModItems.ammo_standard, EnumAmmo.M44_JHP), DictFrame.fromOne(ModItems.item_secret, EnumSecretType.SELENIUM_STEEL) });
|
||||
CraftingManager.addShapelessAuto(DictFrame.fromOne(ModItems.ammo_secret, EnumAmmoSecret.G12_EQUESTRIAN, 6), new Object[] { DictFrame.fromOne(ModItems.ammo_standard, EnumAmmo.G12), DictFrame.fromOne(ModItems.item_secret, EnumSecretType.SELENIUM_STEEL) });
|
||||
CraftingManager.addShapelessAuto(DictFrame.fromOne(ModItems.ammo_secret, EnumAmmoSecret.BMG50_EQUESTRIAN, 6), new Object[] { DictFrame.fromOne(ModItems.ammo_standard, EnumAmmo.BMG50_FMJ), DictFrame.fromOne(ModItems.item_secret, EnumSecretType.SELENIUM_STEEL) });
|
||||
|
||||
//Missiles
|
||||
CraftingManager.addShapelessAuto(new ItemStack(ModItems.missile_taint, 1), new Object[] { ModItems.missile_assembly, ModItems.bucket_mud, ModItems.powder_spark_mix, ModItems.powder_magic });
|
||||
|
||||
@ -74,8 +74,8 @@ public class EntityMissileAntiBallistic extends EntityThrowableInterp implements
|
||||
if(prevTracking == null && this.tracking != null) {
|
||||
ExplosionLarge.spawnShock(worldObj, posX, posY, posZ, 24, 3F);
|
||||
}
|
||||
|
||||
if(this.tracking != null) {
|
||||
|
||||
if(this.tracking != null && !this.tracking.isDead) {
|
||||
this.aimAtTarget();
|
||||
} else {
|
||||
if(this.ticksExisted > 600) this.setDead();
|
||||
|
||||
@ -97,14 +97,18 @@ public class EntityArtilleryRocket extends EntityThrowableInterp implements IChu
|
||||
|
||||
if(!worldObj.isRemote) {
|
||||
|
||||
/*if(this.targetEntity == null) {
|
||||
//shitty hack, figure out what's happening here
|
||||
if(this.targeting == null) this.targeting = new RocketTargetingPredictive();
|
||||
if(this.steering == null) this.steering = new RocketSteeringBallisticArc();
|
||||
|
||||
if(this.targetEntity == null) {
|
||||
Vec3 delta = Vec3.createVectorHelper(this.lastTargetPos.xCoord - this.posX, this.lastTargetPos.yCoord - this.posY, this.lastTargetPos.zCoord - this.posZ);
|
||||
if(delta.lengthVector() <= 15D) {
|
||||
this.targeting = null;
|
||||
this.steering = null;
|
||||
}
|
||||
}*/
|
||||
|
||||
}
|
||||
|
||||
if(this.targeting != null && this.targetEntity != null) this.targeting.recalculateTargetPosition(this, this.targetEntity);
|
||||
if(this.steering != null) this.steering.adjustCourse(this, 25D, 15D);
|
||||
|
||||
|
||||
@ -34,6 +34,26 @@ public class EntityBulletBaseMK4 extends EntityThrowableInterp {
|
||||
this.isImmuneToFire = true;
|
||||
}
|
||||
|
||||
/** For submunitions! */
|
||||
public EntityBulletBaseMK4(World world, EntityLivingBase entity, BulletConfig config, float damage, float gunSpread, double posX, double posY, double posZ, double motionX, double motionY, double motionZ) {
|
||||
this(world);
|
||||
|
||||
this.thrower = entity;
|
||||
this.setBulletConfig(config);
|
||||
|
||||
this.damage = damage;
|
||||
|
||||
this.setLocationAndAngles(posX, posY, posZ, 0, 0);
|
||||
this.setPosition(this.posX, this.posY, this.posZ);
|
||||
|
||||
this.motionX = motionX;
|
||||
this.motionY = motionY;
|
||||
this.motionZ = motionZ;
|
||||
|
||||
this.setThrowableHeading(this.motionX, this.motionY, this.motionZ, 1.0F, this.config.spread + gunSpread);
|
||||
}
|
||||
|
||||
/** For standard guns */
|
||||
public EntityBulletBaseMK4(EntityLivingBase entity, BulletConfig config, float baseDamage, float gunSpread, double sideOffset, double heightOffset, double frontOffset) {
|
||||
this(entity.worldObj);
|
||||
|
||||
@ -57,15 +77,11 @@ public class EntityBulletBaseMK4 extends EntityThrowableInterp {
|
||||
this.motionX = -MathHelper.sin(this.rotationYaw / 180.0F * (float) Math.PI) * MathHelper.cos(this.rotationPitch / 180.0F * (float) Math.PI);
|
||||
this.motionZ = MathHelper.cos(this.rotationYaw / 180.0F * (float) Math.PI) * MathHelper.cos(this.rotationPitch / 180.0F * (float) Math.PI);
|
||||
this.motionY = (-MathHelper.sin(this.rotationPitch / 180.0F * (float) Math.PI));
|
||||
|
||||
/*motionX += entity.motionX;
|
||||
motionY += entity.motionY;
|
||||
motionZ += entity.motionZ;*/
|
||||
|
||||
this.setThrowableHeading(this.motionX, this.motionY, this.motionZ, 1.0F, this.config.spread + gunSpread);
|
||||
}
|
||||
|
||||
/** For turrets - angles are in radians, andp itch is negative! */
|
||||
/** For turrets - angles are in radians, and pitch is negative! */
|
||||
public EntityBulletBaseMK4(World world, BulletConfig config, float baseDamage, float gunSpread, float yaw, float pitch) {
|
||||
this(world);
|
||||
|
||||
|
||||
6
src/main/java/com/hbm/interfaces/IOrderedEnum.java
Normal file
@ -0,0 +1,6 @@
|
||||
package com.hbm.interfaces;
|
||||
|
||||
public interface IOrderedEnum {
|
||||
|
||||
public Enum[] getOrder();
|
||||
}
|
||||
@ -247,6 +247,11 @@ public class AmmoPressRecipes extends SerializableRecipe {
|
||||
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.G26_FLARE, 4),
|
||||
null, rp, null,
|
||||
|
||||
@ -3,6 +3,7 @@ package com.hbm.items;
|
||||
import java.util.List;
|
||||
import java.util.Locale;
|
||||
|
||||
import com.hbm.interfaces.IOrderedEnum;
|
||||
import com.hbm.lib.RefStrings;
|
||||
import com.hbm.util.EnumUtil;
|
||||
|
||||
@ -31,8 +32,12 @@ public class ItemEnumMulti extends Item {
|
||||
@Override
|
||||
@SideOnly(Side.CLIENT)
|
||||
public void getSubItems(Item item, CreativeTabs tab, List list) {
|
||||
for(int i = 0; i < theEnum.getEnumConstants().length; i++) {
|
||||
list.add(new ItemStack(item, 1, i));
|
||||
|
||||
Enum[] order = theEnum.getEnumConstants();
|
||||
if(order[0] instanceof IOrderedEnum) order = ((IOrderedEnum) order[0]).getOrder();
|
||||
|
||||
for(int i = 0; i < order.length; i++) {
|
||||
list.add(new ItemStack(item, 1, order[i].ordinal()));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -1504,6 +1504,7 @@ public class ModItems {
|
||||
public static Item gun_chemthrower;
|
||||
public static Item gun_m2;
|
||||
public static Item gun_autoshotgun;
|
||||
public static Item gun_autoshotgun_shredder;
|
||||
public static Item gun_autoshotgun_sexy;
|
||||
public static Item gun_quadro;
|
||||
public static Item gun_lag;
|
||||
@ -6528,6 +6529,7 @@ public class ModItems {
|
||||
GameRegistry.registerItem(gun_chemthrower, gun_chemthrower.getUnlocalizedName());
|
||||
GameRegistry.registerItem(gun_m2, gun_m2.getUnlocalizedName());
|
||||
GameRegistry.registerItem(gun_autoshotgun, gun_autoshotgun.getUnlocalizedName());
|
||||
GameRegistry.registerItem(gun_autoshotgun_shredder, gun_autoshotgun_shredder.getUnlocalizedName());
|
||||
GameRegistry.registerItem(gun_autoshotgun_sexy, gun_autoshotgun_sexy.getUnlocalizedName());
|
||||
GameRegistry.registerItem(gun_quadro, gun_quadro.getUnlocalizedName());
|
||||
GameRegistry.registerItem(gun_lag, gun_lag.getUnlocalizedName());
|
||||
|
||||
@ -5,6 +5,7 @@ import java.util.List;
|
||||
import java.util.function.BiConsumer;
|
||||
import java.util.function.Consumer;
|
||||
|
||||
import com.hbm.blocks.ModBlocks;
|
||||
import com.hbm.blocks.bomb.BlockDetonatable;
|
||||
import com.hbm.entity.projectile.EntityBulletBaseMK4;
|
||||
import com.hbm.entity.projectile.EntityBulletBeamBase;
|
||||
@ -99,6 +100,7 @@ public class BulletConfig implements Cloneable {
|
||||
public BulletConfig setChunkloading() { this.pType = ProjectileType.BULLET_CHUNKLOADING; return this; }
|
||||
public BulletConfig setItem(Item ammo) { this.ammo = new ComparableStack(ammo); return this; }
|
||||
public BulletConfig setItem(ItemStack ammo) { this.ammo = new ComparableStack(ammo); return this; }
|
||||
public BulletConfig setItem(ComparableStack ammo) { this.ammo = ammo; return this; }
|
||||
public BulletConfig setItem(EnumAmmo ammo) { this.ammo = new ComparableStack(ModItems.ammo_standard, 1, ammo.ordinal()); return this; }
|
||||
public BulletConfig setItem(EnumAmmoSecret ammo) { this.ammo = new ComparableStack(ModItems.ammo_secret, 1, ammo.ordinal()); return this; }
|
||||
public BulletConfig setReloadCount(int ammoReloadCount) { this.ammoReloadCount = ammoReloadCount; return this; }
|
||||
@ -174,6 +176,10 @@ public class BulletConfig implements Cloneable {
|
||||
if(b instanceof BlockDetonatable) {
|
||||
((BlockDetonatable) b).onShot(bullet.worldObj, mop.blockX, mop.blockY, mop.blockZ);
|
||||
}
|
||||
if(b == ModBlocks.deco_crt) {
|
||||
int meta = bullet.worldObj.getBlockMetadata(mop.blockX, mop.blockY, mop.blockZ);
|
||||
bullet.worldObj.setBlockMetadataWithNotify(mop.blockX, mop.blockY, mop.blockZ, meta % 4 + 4, 3);
|
||||
}
|
||||
|
||||
ForgeDirection dir = ForgeDirection.getOrientation(mop.sideHit);
|
||||
Vec3 face = Vec3.createVectorHelper(dir.offsetX, dir.offsetY, dir.offsetZ);
|
||||
|
||||
@ -1,5 +1,6 @@
|
||||
package com.hbm.items.weapon.sedna.factory;
|
||||
|
||||
import com.hbm.interfaces.IOrderedEnum;
|
||||
import com.hbm.items.ItemEnumMulti;
|
||||
import com.hbm.items.ModItems;
|
||||
import com.hbm.items.weapon.sedna.BulletConfig;
|
||||
@ -69,7 +70,7 @@ public class GunFactory {
|
||||
MainRegistry.proxy.registerGunCfg();
|
||||
}
|
||||
|
||||
public static enum EnumAmmo {
|
||||
public static enum EnumAmmo implements IOrderedEnum {
|
||||
STONE, STONE_AP, STONE_IRON, STONE_SHOT,
|
||||
M357_BP, M357_SP, M357_FMJ, M357_JHP, M357_AP, M357_EXPRESS,
|
||||
M44_BP, M44_SP, M44_FMJ, M44_JHP, M44_AP, M44_EXPRESS,
|
||||
@ -88,7 +89,37 @@ public class GunFactory {
|
||||
TAU_URANIUM,
|
||||
COIL_TUNGSTEN, COIL_FERROURANIUM,
|
||||
NUKE_STANDARD, NUKE_DEMO, NUKE_HIGH, NUKE_TOTS, NUKE_HIVE,
|
||||
G10, G10_SHRAPNEL, G10_DU
|
||||
G10, G10_SHRAPNEL, G10_DU, G10_SLUG,
|
||||
|
||||
//ONLY ADD NEW ENTRIES AT THE BOTTOM TO AVOID SHIFTING!
|
||||
;
|
||||
|
||||
/** used for creative tab order */
|
||||
public static EnumAmmo[] order = new EnumAmmo[] {
|
||||
STONE, STONE_AP, STONE_IRON, STONE_SHOT,
|
||||
M357_BP, M357_SP, M357_FMJ, M357_JHP, M357_AP, M357_EXPRESS,
|
||||
M44_BP, M44_SP, M44_FMJ, M44_JHP, M44_AP, M44_EXPRESS,
|
||||
P22_SP, P22_FMJ, P22_JHP, P22_AP,
|
||||
P9_SP, P9_FMJ, P9_JHP, P9_AP,
|
||||
R556_SP, R556_FMJ, R556_JHP, R556_AP,
|
||||
R762_SP, R762_FMJ, R762_JHP, R762_AP, R762_DU,
|
||||
BMG50_SP, BMG50_FMJ, BMG50_JHP, BMG50_AP, BMG50_DU,
|
||||
B75, B75_INC, B75_EXP,
|
||||
G12_BP, G12_BP_MAGNUM, G12_BP_SLUG, G12, G12_SLUG, G12_FLECHETTE, G12_MAGNUM, G12_EXPLOSIVE, G12_PHOSPHORUS,
|
||||
G10, G10_SHRAPNEL, G10_DU, G10_SLUG,
|
||||
G26_FLARE, G26_FLARE_SUPPLY, G26_FLARE_WEAPON,
|
||||
G40_HE, G40_HEAT, G40_DEMO, G40_INC, G40_PHOSPHORUS,
|
||||
ROCKET_HE, ROCKET_HEAT, ROCKET_DEMO, ROCKET_INC, ROCKET_PHOSPHORUS,
|
||||
FLAME_DIESEL, FLAME_GAS, FLAME_NAPALM, FLAME_BALEFIRE,
|
||||
CAPACITOR, CAPACITOR_OVERCHARGE, CAPACITOR_IR,
|
||||
TAU_URANIUM,
|
||||
COIL_TUNGSTEN, COIL_FERROURANIUM,
|
||||
NUKE_STANDARD, NUKE_DEMO, NUKE_HIGH, NUKE_TOTS, NUKE_HIVE,
|
||||
};
|
||||
|
||||
public Enum[] getOrder() {
|
||||
return order;
|
||||
}
|
||||
}
|
||||
|
||||
public static enum EnumAmmoSecret {
|
||||
|
||||
@ -67,6 +67,7 @@ public class GunFactoryClient {
|
||||
MinecraftForgeClient.registerItemRenderer(ModItems.gun_chemthrower, new ItemRenderChemthrower());
|
||||
MinecraftForgeClient.registerItemRenderer(ModItems.gun_m2, new ItemRenderM2());
|
||||
MinecraftForgeClient.registerItemRenderer(ModItems.gun_autoshotgun, new ItemRenderShredder(ResourceManager.shredder_tex));
|
||||
MinecraftForgeClient.registerItemRenderer(ModItems.gun_autoshotgun_shredder, new ItemRenderShredder(ResourceManager.shredder_orig_tex));
|
||||
MinecraftForgeClient.registerItemRenderer(ModItems.gun_autoshotgun_sexy, new ItemRenderShredder(ResourceManager.sexy_tex));
|
||||
MinecraftForgeClient.registerItemRenderer(ModItems.gun_quadro, new ItemRenderQuadro());
|
||||
MinecraftForgeClient.registerItemRenderer(ModItems.gun_minigun, new ItemRenderMinigun(ResourceManager.minigun_tex));
|
||||
@ -146,13 +147,22 @@ public class GunFactoryClient {
|
||||
g12_magnum.setRenderer(LegoClient.RENDER_STANDARD_BULLET);
|
||||
g12_explosive.setRenderer(LegoClient.RENDER_EXPRESS_BULLET);
|
||||
g12_phosphorus.setRenderer(LegoClient.RENDER_AP_BULLET);
|
||||
//g12_anthrax.setRenderer(LegoClient.RENDER_STANDARD_BULLET);
|
||||
g12_equestrian_bj.setRenderer(LegoClient.RENDER_LEGENDARY_BULLET);
|
||||
g12_equestrian_tkr.setRenderer(LegoClient.RENDER_LEGENDARY_BULLET);
|
||||
|
||||
g12_sub.setRenderer(LegoClient.RENDER_STANDARD_BULLET);
|
||||
g12_sub_slug.setRenderer(LegoClient.RENDER_STANDARD_BULLET);
|
||||
g12_sub_flechette.setRenderer(LegoClient.RENDER_FLECHETTE_BULLET);
|
||||
g12_sub_magnum.setRenderer(LegoClient.RENDER_STANDARD_BULLET);
|
||||
g12_sub_explosive.setRenderer(LegoClient.RENDER_EXPRESS_BULLET);
|
||||
g12_sub_phosphorus.setRenderer(LegoClient.RENDER_AP_BULLET);
|
||||
|
||||
setRendererBulkBeam(LegoClient.RENDER_LASER_CYAN, g12_shredder, g12_shredder_slug, g12_shredder_flechette, g12_shredder_magnum, g12_shredder_explosive, g12_shredder_phosphorus);
|
||||
|
||||
g10.setRenderer(LegoClient.RENDER_STANDARD_BULLET);
|
||||
g10_shrapnel.setRenderer(LegoClient.RENDER_STANDARD_BULLET);
|
||||
g10_du.setRenderer(LegoClient.RENDER_DU_BULLET);
|
||||
g10_slug.setRenderer(LegoClient.RENDER_STANDARD_BULLET);
|
||||
|
||||
g26_flare.setRenderer(LegoClient.RENDER_FLARE);
|
||||
g26_flare_supply.setRenderer(LegoClient.RENDER_FLARE_SUPPLY);
|
||||
@ -209,6 +219,7 @@ public class GunFactoryClient {
|
||||
((ItemGunBaseNT) ModItems.gun_chemthrower) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO);
|
||||
((ItemGunBaseNT) ModItems.gun_m2) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO);
|
||||
((ItemGunBaseNT) ModItems.gun_autoshotgun) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO);
|
||||
((ItemGunBaseNT) ModItems.gun_autoshotgun_shredder) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO);
|
||||
((ItemGunBaseNT) ModItems.gun_autoshotgun_sexy) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO);
|
||||
((ItemGunBaseNT) ModItems.gun_quadro) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO);
|
||||
((ItemGunBaseNT) ModItems.gun_lag) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO);
|
||||
|
||||
@ -318,11 +318,13 @@ public class LegoClient {
|
||||
GL11.glPopMatrix();
|
||||
RenderArcFurnace.fullbright(false);
|
||||
};
|
||||
|
||||
|
||||
public static BiConsumer<EntityBulletBeamBase, Float> RENDER_LASER_RED = (bullet, interp) -> {
|
||||
renderStandardLaser(bullet, interp, 0x80, 0x15, 0x15);
|
||||
};
|
||||
|
||||
public static BiConsumer<EntityBulletBeamBase, Float> RENDER_LASER_CYAN = (bullet, interp) -> {
|
||||
renderStandardLaser(bullet, interp, 0x15, 0x15, 0x80);
|
||||
};
|
||||
public static BiConsumer<EntityBulletBeamBase, Float> RENDER_LASER_PURPLE = (bullet, interp) -> {
|
||||
renderStandardLaser(bullet, interp, 0x60, 0x15, 0x80);
|
||||
};
|
||||
|
||||
@ -27,18 +27,20 @@ public class XFactory10ga {
|
||||
public static BulletConfig g10;
|
||||
public static BulletConfig g10_shrapnel;
|
||||
public static BulletConfig g10_du;
|
||||
public static BulletConfig g10_slug;
|
||||
|
||||
public static void init() {
|
||||
|
||||
g10 = new BulletConfig().setItem(EnumAmmo.G10).setProjectiles(10).setDamage(1F/10F).setSpread(0.05F).setRicochetAngle(15).setThresholdNegation(5F).setCasing(new SpentCasing(CasingType.SHOTGUN).setColor(0xB52B2B, SpentCasing.COLOR_CASE_12GA).setScale(1F).register("10GA"));
|
||||
g10_shrapnel = new BulletConfig().setItem(EnumAmmo.G10_SHRAPNEL).setProjectiles(10).setDamage(1F/10F).setSpread(0.05F).setRicochetAngle(90).setRicochetCount(15).setThresholdNegation(5F).setCasing(new SpentCasing(CasingType.SHOTGUN).setColor(0xE5DD00, SpentCasing.COLOR_CASE_12GA).setScale(1F).register("10GAShrapnel"));
|
||||
g10_du = new BulletConfig().setItem(EnumAmmo.G10_DU).setProjectiles(10).setDamage(1F/4F).setSpread(0.05F).setRicochetAngle(15).setThresholdNegation(10F).setArmorPiercing(0.2F).setDoesPenetrate(true).setDamageFalloutByPen(false).setCasing(new SpentCasing(CasingType.SHOTGUN).setColor(0x538D53, SpentCasing.COLOR_CASE_12GA).setScale(1F).register("10GADU"));
|
||||
g10_slug = new BulletConfig().setItem(EnumAmmo.G10_SLUG).setRicochetAngle(15).setThresholdNegation(10F).setArmorPiercing(0.1F).setDoesPenetrate(true).setCasing(new SpentCasing(CasingType.SHOTGUN).setColor(0x808080, SpentCasing.COLOR_CASE_12GA).setScale(1F).register("10GASlug"));
|
||||
|
||||
ModItems.gun_double_barrel = new ItemGunBaseNT(WeaponQuality.SPECIAL, new GunConfig()
|
||||
.dura(1000).draw(10).inspect(39).crosshair(Crosshair.L_CIRCLE).smoke(Lego.LAMBDA_STANDARD_SMOKE)
|
||||
.rec(new Receiver(0)
|
||||
.dmg(30F).rounds(2).delay(10).reload(41).reloadOnEmpty(true).sound("hbm:weapon.fire.shotgun", 1.0F, 0.9F)
|
||||
.mag(new MagazineFullReload(0, 2).addConfigs(g10, g10_shrapnel, g10_du))
|
||||
.mag(new MagazineFullReload(0, 2).addConfigs(g10, g10_shrapnel, g10_du, g10_slug))
|
||||
.offset(0.75, -0.0625, -0.1875)
|
||||
.setupStandardFire().recoil(LAMBDA_RECOIL_DOUBLE_BARREL))
|
||||
.setupStandardConfiguration()
|
||||
|
||||
@ -1,8 +1,11 @@
|
||||
package com.hbm.items.weapon.sedna.factory;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.function.BiConsumer;
|
||||
import java.util.function.BiFunction;
|
||||
|
||||
import com.hbm.blocks.ModBlocks;
|
||||
import com.hbm.blocks.bomb.BlockDetonatable;
|
||||
import com.hbm.entity.projectile.EntityBulletBaseMK4;
|
||||
import com.hbm.entity.projectile.EntityDuchessGambit;
|
||||
import com.hbm.extprop.HbmLivingProps;
|
||||
@ -17,21 +20,40 @@ 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.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.main.MainRegistry;
|
||||
import com.hbm.main.ResourceManager;
|
||||
import com.hbm.packet.PacketDispatcher;
|
||||
import com.hbm.packet.toclient.AuxParticlePacketNT;
|
||||
import com.hbm.particle.SpentCasing;
|
||||
import com.hbm.particle.SpentCasing.CasingType;
|
||||
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.BobMathUtil;
|
||||
import com.hbm.util.TrackerUtil;
|
||||
import com.hbm.util.Vec3NT;
|
||||
import com.hbm.util.DamageResistanceHandler.DamageClass;
|
||||
import com.hbm.util.EntityDamageUtil;
|
||||
|
||||
import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint;
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.block.material.Material;
|
||||
import net.minecraft.entity.Entity;
|
||||
import net.minecraft.entity.EntityLivingBase;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.nbt.NBTTagCompound;
|
||||
import net.minecraft.util.AxisAlignedBB;
|
||||
import net.minecraft.util.DamageSource;
|
||||
import net.minecraft.util.MovingObjectPosition;
|
||||
import net.minecraft.util.Vec3;
|
||||
import net.minecraft.world.World;
|
||||
import net.minecraft.world.WorldServer;
|
||||
import net.minecraftforge.common.util.ForgeDirection;
|
||||
|
||||
public class XFactory12ga {
|
||||
|
||||
@ -47,6 +69,20 @@ public class XFactory12ga {
|
||||
public static BulletConfig g12_anthrax;
|
||||
public static BulletConfig g12_equestrian_bj;
|
||||
public static BulletConfig g12_equestrian_tkr;
|
||||
|
||||
public static BulletConfig g12_shredder;
|
||||
public static BulletConfig g12_shredder_slug;
|
||||
public static BulletConfig g12_shredder_flechette;
|
||||
public static BulletConfig g12_shredder_magnum;
|
||||
public static BulletConfig g12_shredder_explosive;
|
||||
public static BulletConfig g12_shredder_phosphorus;
|
||||
|
||||
public static BulletConfig g12_sub;
|
||||
public static BulletConfig g12_sub_slug;
|
||||
public static BulletConfig g12_sub_flechette;
|
||||
public static BulletConfig g12_sub_magnum;
|
||||
public static BulletConfig g12_sub_explosive;
|
||||
public static BulletConfig g12_sub_phosphorus;
|
||||
|
||||
public static BiConsumer<EntityBulletBaseMK4, MovingObjectPosition> LAMBDA_STANDARD_EXPLODE = (bullet, mop) -> {
|
||||
Lego.standardExplode(bullet, mop, 2F); bullet.setDead();
|
||||
@ -62,11 +98,166 @@ public class XFactory12ga {
|
||||
bullet.setDead();
|
||||
};
|
||||
|
||||
public static BulletConfig makeShredderConfig(BulletConfig original, BulletConfig submunition) {
|
||||
BulletConfig cfg = new BulletConfig().setBeam().setRenderRotations(false).setLife(5).setDamage(original.damageMult * original.projectilesMax).setupDamageClass(DamageClass.LASER);
|
||||
cfg.setItem(original.ammo);
|
||||
cfg.setCasing(original.casing);
|
||||
cfg.setOnBeamImpact((beam, mop) -> {
|
||||
|
||||
int projectiles = submunition.projectilesMin;
|
||||
if(submunition.projectilesMax > submunition.projectilesMin) projectiles += beam.worldObj.rand.nextInt(submunition.projectilesMax - submunition.projectilesMin + 1);
|
||||
|
||||
if(mop.typeOfHit == mop.typeOfHit.BLOCK) {
|
||||
|
||||
ForgeDirection dir = ForgeDirection.getOrientation(mop.sideHit);
|
||||
|
||||
mop.hitVec.xCoord += dir.offsetX * 0.1;
|
||||
mop.hitVec.yCoord += dir.offsetY * 0.1;
|
||||
mop.hitVec.zCoord += dir.offsetZ * 0.1;
|
||||
|
||||
spawnPulse(beam.worldObj, mop, beam.rotationYaw, beam.rotationPitch);
|
||||
|
||||
List<Entity> blast = beam.worldObj.getEntitiesWithinAABBExcludingEntity(beam, AxisAlignedBB.getBoundingBox(mop.hitVec.xCoord, mop.hitVec.yCoord, mop.hitVec.zCoord, mop.hitVec.xCoord, mop.hitVec.yCoord, mop.hitVec.zCoord).expand(0.75, 0.75, 0.75));
|
||||
DamageSource source = BulletConfig.getDamage(beam, beam.getThrower(), DamageClass.LASER);
|
||||
|
||||
for(Entity e : blast) {
|
||||
if(!e.isEntityAlive()) continue;
|
||||
if(e instanceof EntityLivingBase) {
|
||||
EntityDamageUtil.attackEntityFromNT((EntityLivingBase) e, source, beam.damage, true, false, 0D, 0F, 0F);
|
||||
if(!e.isEntityAlive()) ConfettiUtil.decideConfetti((EntityLivingBase) e, source);
|
||||
} else {
|
||||
e.attackEntityFrom(source, beam.damage);
|
||||
}
|
||||
}
|
||||
|
||||
for(int i = 0; i < projectiles; i++) {
|
||||
EntityBulletBaseMK4 bullet = new EntityBulletBaseMK4(beam.worldObj, beam.thrower, submunition, beam.damage * submunition.damageMult, 0.2F, mop.hitVec.xCoord, mop.hitVec.yCoord, mop.hitVec.zCoord, dir.offsetX, dir.offsetY, dir.offsetZ);
|
||||
bullet.worldObj.spawnEntityInWorld(bullet);
|
||||
}
|
||||
}
|
||||
|
||||
if(mop.typeOfHit == mop.typeOfHit.ENTITY) {
|
||||
|
||||
spawnPulse(beam.worldObj, mop, beam.rotationYaw, beam.rotationPitch);
|
||||
|
||||
for(int i = 0; i < projectiles; i++) {
|
||||
Vec3NT vec = new Vec3NT(beam.worldObj.rand.nextGaussian(), beam.worldObj.rand.nextGaussian(), beam.worldObj.rand.nextGaussian()).normalizeSelf();
|
||||
EntityBulletBaseMK4 bullet = new EntityBulletBaseMK4(beam.worldObj, beam.thrower, submunition, beam.damage * submunition.damageMult, 0.2F, mop.hitVec.xCoord, mop.hitVec.yCoord, mop.hitVec.zCoord, vec.xCoord, vec.yCoord, vec.zCoord);
|
||||
bullet.worldObj.spawnEntityInWorld(bullet);
|
||||
}
|
||||
}
|
||||
});
|
||||
return cfg;
|
||||
}
|
||||
|
||||
public static BulletConfig makeShredderSubmunition(BulletConfig original) {
|
||||
BulletConfig cfg = original.clone();
|
||||
cfg.setRicochetAngle(90).setRicochetCount(3).setVel(0.5F).setLife(50).setupDamageClass(DamageClass.LASER).setOnRicochet(LAMBDA_SHREDDER_RICOCHET);
|
||||
return cfg;
|
||||
}
|
||||
|
||||
//this sucks
|
||||
public static BiConsumer<EntityBulletBaseMK4, MovingObjectPosition> LAMBDA_SHREDDER_RICOCHET = (bullet, mop) -> {
|
||||
|
||||
if(mop.typeOfHit == mop.typeOfHit.BLOCK) {
|
||||
|
||||
Block b = bullet.worldObj.getBlock(mop.blockX, mop.blockY, mop.blockZ);
|
||||
if(b.getMaterial() == Material.glass) {
|
||||
bullet.worldObj.func_147480_a(mop.blockX, mop.blockY, mop.blockZ, false);
|
||||
bullet.setPosition(mop.hitVec.xCoord, mop.hitVec.yCoord, mop.hitVec.zCoord);
|
||||
return;
|
||||
}
|
||||
if(b instanceof BlockDetonatable) {
|
||||
((BlockDetonatable) b).onShot(bullet.worldObj, mop.blockX, mop.blockY, mop.blockZ);
|
||||
}
|
||||
if(b == ModBlocks.deco_crt) {
|
||||
int meta = bullet.worldObj.getBlockMetadata(mop.blockX, mop.blockY, mop.blockZ);
|
||||
bullet.worldObj.setBlockMetadataWithNotify(mop.blockX, mop.blockY, mop.blockZ, meta % 4 + 4, 3);
|
||||
}
|
||||
|
||||
ForgeDirection dir = ForgeDirection.getOrientation(mop.sideHit);
|
||||
Vec3 face = Vec3.createVectorHelper(dir.offsetX, dir.offsetY, dir.offsetZ);
|
||||
Vec3 vel = Vec3.createVectorHelper(bullet.motionX, bullet.motionY, bullet.motionZ).normalize();
|
||||
|
||||
double angle = Math.abs(BobMathUtil.getCrossAngle(vel, face) - 90);
|
||||
|
||||
if(angle <= bullet.config.ricochetAngle) {
|
||||
|
||||
spawnPulse(bullet.worldObj, mop, bullet.rotationYaw, bullet.rotationPitch);
|
||||
|
||||
List<Entity> blast = bullet.worldObj.getEntitiesWithinAABBExcludingEntity(bullet, AxisAlignedBB.getBoundingBox(bullet.posX, bullet.posY, bullet.posZ, bullet.posX, bullet.posY, bullet.posZ).expand(0.5, 0.5, 0.5));
|
||||
DamageSource source = BulletConfig.getDamage(bullet, bullet.getThrower(), DamageClass.LASER);
|
||||
|
||||
for(Entity e : blast) {
|
||||
if(!e.isEntityAlive()) continue;
|
||||
if(e instanceof EntityLivingBase) {
|
||||
EntityDamageUtil.attackEntityFromNT((EntityLivingBase) e, source, bullet.damage, true, false, 0D, 0F, 0F);
|
||||
if(!e.isEntityAlive()) ConfettiUtil.decideConfetti((EntityLivingBase) e, source);
|
||||
} else {
|
||||
e.attackEntityFrom(source, bullet.damage);
|
||||
}
|
||||
}
|
||||
|
||||
bullet.ricochets++;
|
||||
if(bullet.ricochets > bullet.config.maxRicochetCount) {
|
||||
bullet.setPosition(mop.hitVec.xCoord, mop.hitVec.yCoord, mop.hitVec.zCoord);
|
||||
bullet.setDead();
|
||||
}
|
||||
|
||||
switch(mop.sideHit) {
|
||||
case 0: case 1: bullet.motionY *= -1; break;
|
||||
case 2: case 3: bullet.motionZ *= -1; break;
|
||||
case 4: case 5: bullet.motionX *= -1; break;
|
||||
}
|
||||
bullet.setPosition(mop.hitVec.xCoord, mop.hitVec.yCoord, mop.hitVec.zCoord);
|
||||
//send a teleport so the ricochet is more accurate instead of the interp smoothing fucking everything up
|
||||
if(bullet.worldObj instanceof WorldServer) TrackerUtil.sendTeleport((WorldServer) bullet.worldObj, bullet);
|
||||
return;
|
||||
|
||||
} else {
|
||||
bullet.setPosition(mop.hitVec.xCoord, mop.hitVec.yCoord, mop.hitVec.zCoord);
|
||||
bullet.setDead();
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
public static void spawnPulse(World world, MovingObjectPosition mop, float yaw, float pitch) {
|
||||
|
||||
double x = mop.hitVec.xCoord;
|
||||
double y = mop.hitVec.yCoord;
|
||||
double z = mop.hitVec.zCoord;
|
||||
|
||||
if(mop.typeOfHit == mop.typeOfHit.BLOCK) {
|
||||
if(mop.sideHit == ForgeDirection.UP.ordinal()) { yaw = 0F; pitch = 0F; }
|
||||
if(mop.sideHit == ForgeDirection.DOWN.ordinal()) { yaw = 0F; pitch = 0F; }
|
||||
if(mop.sideHit == ForgeDirection.NORTH.ordinal()) { yaw = 0F; pitch = 90F; }
|
||||
if(mop.sideHit == ForgeDirection.SOUTH.ordinal()) { yaw = 180F; pitch = 90F; }
|
||||
if(mop.sideHit == ForgeDirection.EAST.ordinal()) { yaw = 90F; pitch = 90F; }
|
||||
if(mop.sideHit == ForgeDirection.WEST.ordinal()) { yaw = 270F; pitch = 90F; }
|
||||
|
||||
ForgeDirection dir = ForgeDirection.getOrientation(mop.sideHit);
|
||||
|
||||
x += dir.offsetX * 0.05;
|
||||
y += dir.offsetY * 0.05;
|
||||
z += dir.offsetZ * 0.05;
|
||||
}
|
||||
|
||||
NBTTagCompound data = new NBTTagCompound();
|
||||
data.setString("type", "plasmablast");
|
||||
data.setFloat("r", 0.5F);
|
||||
data.setFloat("g", 0.5F);
|
||||
data.setFloat("b", 1.0F);
|
||||
data.setFloat("pitch", pitch);
|
||||
data.setFloat("yaw", yaw);
|
||||
data.setFloat("scale", 0.75F);
|
||||
PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(data, x, y, z), new TargetPoint(world.provider.dimensionId, x, y, z, 100));
|
||||
}
|
||||
|
||||
public static void init() {
|
||||
|
||||
g12_bp = new BulletConfig().setItem(EnumAmmo.G12_BP).setBlackPowder(true).setProjectiles(8).setDamage(0.5F/8F).setSpread(0.05F).setRicochetAngle(15).setCasing(new SpentCasing(CasingType.SHOTGUN).setColor(SpentCasing.COLOR_CASE_BRASS, SpentCasing.COLOR_CASE_BRASS).setScale(0.75F).register("12GA_BP"));
|
||||
g12_bp_magnum = new BulletConfig().setItem(EnumAmmo.G12_BP_MAGNUM).setBlackPowder(true).setProjectiles(4).setDamage(0.5F/4F).setSpread(0.05F).setRicochetAngle(25).setCasing(new SpentCasing(CasingType.SHOTGUN).setColor(SpentCasing.COLOR_CASE_BRASS, SpentCasing.COLOR_CASE_BRASS).setScale(0.75F).register("12GA_BP_MAGNUM"));
|
||||
g12_bp_slug = new BulletConfig().setItem(EnumAmmo.G12_BP_SLUG).setBlackPowder(true).setDamage(0.5F).setSpread(0.01F).setRicochetAngle(5).setCasing(new SpentCasing(CasingType.SHOTGUN).setColor(SpentCasing.COLOR_CASE_BRASS, SpentCasing.COLOR_CASE_BRASS).setScale(0.75F).register("12GA_BP_SLUG"));
|
||||
g12_bp = new BulletConfig().setItem(EnumAmmo.G12_BP).setBlackPowder(true).setProjectiles(8).setDamage(0.75F/8F).setSpread(0.05F).setRicochetAngle(15).setCasing(new SpentCasing(CasingType.SHOTGUN).setColor(SpentCasing.COLOR_CASE_BRASS, SpentCasing.COLOR_CASE_BRASS).setScale(0.75F).register("12GA_BP"));
|
||||
g12_bp_magnum = new BulletConfig().setItem(EnumAmmo.G12_BP_MAGNUM).setBlackPowder(true).setProjectiles(4).setDamage(0.75F/4F).setSpread(0.05F).setRicochetAngle(25).setCasing(new SpentCasing(CasingType.SHOTGUN).setColor(SpentCasing.COLOR_CASE_BRASS, SpentCasing.COLOR_CASE_BRASS).setScale(0.75F).register("12GA_BP_MAGNUM"));
|
||||
g12_bp_slug = new BulletConfig().setItem(EnumAmmo.G12_BP_SLUG).setBlackPowder(true).setDamage(0.75F).setSpread(0.01F).setRicochetAngle(5).setCasing(new SpentCasing(CasingType.SHOTGUN).setColor(SpentCasing.COLOR_CASE_BRASS, SpentCasing.COLOR_CASE_BRASS).setScale(0.75F).register("12GA_BP_SLUG"));
|
||||
g12 = new BulletConfig().setItem(EnumAmmo.G12).setProjectiles(8).setDamage(1F/8F).setSpread(0.05F).setRicochetAngle(15).setThresholdNegation(2F).setCasing(new SpentCasing(CasingType.SHOTGUN).setColor(0xB52B2B, SpentCasing.COLOR_CASE_BRASS).setScale(0.75F).register("12GA"));
|
||||
g12_slug = new BulletConfig().setItem(EnumAmmo.G12_SLUG).setHeadshot(1.5F).setSpread(0.0F).setRicochetAngle(25).setThresholdNegation(4F).setArmorPiercing(0.15F).setCasing(new SpentCasing(CasingType.SHOTGUN).setColor(0x393939, SpentCasing.COLOR_CASE_BRASS).setScale(0.75F).register("12GA_SLUG"));
|
||||
g12_flechette = new BulletConfig().setItem(EnumAmmo.G12_FLECHETTE).setProjectiles(8).setDamage(1F/8F).setThresholdNegation(5F).setThresholdNegation(3F).setArmorPiercing(0.2F).setSpread(0.025F).setRicochetAngle(5).setCasing(new SpentCasing(CasingType.SHOTGUN).setColor(0x3C80F0, SpentCasing.COLOR_CASE_BRASS).setScale(0.75F).register("12GA_FLECHETTE"));
|
||||
@ -79,6 +270,19 @@ public class XFactory12ga {
|
||||
g12_equestrian_tkr = new BulletConfig().setItem(EnumAmmoSecret.G12_EQUESTRIAN).setDamage(0F).setCasing(new SpentCasing(CasingType.SHOTGUN).setColor(SpentCasing.COLOR_CASE_EQUESTRIAN, SpentCasing.COLOR_CASE_12GA).setScale(0.75F).register("12gaEquestrianTKR"));
|
||||
|
||||
BulletConfig[] all = new BulletConfig[] {g12_bp, g12_bp_magnum, g12_bp_slug, g12, g12_slug, g12_flechette, g12_magnum, g12_explosive, g12_phosphorus};
|
||||
|
||||
g12_sub = makeShredderSubmunition(g12);
|
||||
g12_sub_slug = makeShredderSubmunition(g12_slug);
|
||||
g12_sub_flechette = makeShredderSubmunition(g12_flechette);
|
||||
g12_sub_magnum = makeShredderSubmunition(g12_magnum);
|
||||
g12_sub_explosive = makeShredderSubmunition(g12_explosive);
|
||||
g12_sub_phosphorus = makeShredderSubmunition(g12_phosphorus);
|
||||
g12_shredder = makeShredderConfig(g12, g12_sub);
|
||||
g12_shredder_slug = makeShredderConfig(g12_slug, g12_sub_slug);
|
||||
g12_shredder_flechette = makeShredderConfig(g12_flechette, g12_sub_flechette);
|
||||
g12_shredder_magnum = makeShredderConfig(g12_magnum, g12_sub_magnum);
|
||||
g12_shredder_explosive = makeShredderConfig(g12_explosive, g12_sub_explosive);
|
||||
g12_shredder_phosphorus = makeShredderConfig(g12_phosphorus, g12_sub_phosphorus);
|
||||
|
||||
ModItems.gun_maresleg = new ItemGunBaseNT(WeaponQuality.A_SIDE, new GunConfig()
|
||||
.dura(600).draw(10).inspect(39).reloadSequential(true).crosshair(Crosshair.L_CIRCLE).smoke(Lego.LAMBDA_STANDARD_SMOKE)
|
||||
@ -153,6 +357,16 @@ public class XFactory12ga {
|
||||
.setupStandardConfiguration()
|
||||
.anim(LAMBDA_SHREDDER_ANIMS).orchestra(Orchestras.ORCHESTRA_SHREDDER)
|
||||
).setUnlocalizedName("gun_autoshotgun");
|
||||
ModItems.gun_autoshotgun_shredder = new ItemGunBaseNT(WeaponQuality.B_SIDE, new GunConfig()
|
||||
.dura(2_000).draw(10).inspect(33).reloadSequential(true).crosshair(Crosshair.L_CIRCLE).smoke(Lego.LAMBDA_STANDARD_SMOKE)
|
||||
.rec(new Receiver(0)
|
||||
.dmg(50F).delay(10).auto(true).autoAfterDry(true).dryfireAfterAuto(true).reload(44).jam(19).sound("hbm:weapon.fire.shotgunAuto", 1.0F, 1.0F)
|
||||
.mag(new MagazineBelt().addConfigs(g12_shredder, g12_shredder_slug, g12_shredder_flechette, g12_shredder_magnum, g12_shredder_explosive, g12_shredder_phosphorus))
|
||||
.offset(0.75, -0.125, -0.25)
|
||||
.setupStandardFire().recoil(LAMBDA_RECOIL_AUTOSHOTGUN))
|
||||
.setupStandardConfiguration()
|
||||
.anim(LAMBDA_SHREDDER_ANIMS).orchestra(Orchestras.ORCHESTRA_SHREDDER)
|
||||
).setUnlocalizedName("gun_autoshotgun_shredder");
|
||||
ModItems.gun_autoshotgun_sexy = new ItemGunBaseNT(WeaponQuality.LEGENDARY, new GunConfig()
|
||||
.dura(5_000).draw(10).inspect(33).reloadSequential(true).crosshair(Crosshair.L_CIRCLE).smoke(Lego.LAMBDA_STANDARD_SMOKE)
|
||||
.rec(new Receiver(0)
|
||||
|
||||
@ -30,7 +30,7 @@ public class XFactory357 {
|
||||
public static BulletConfig m357_express;
|
||||
|
||||
public static void init() {
|
||||
m357_bp = new BulletConfig().setItem(EnumAmmo.M357_BP).setDamage(0.5F).setBlackPowder(true);
|
||||
m357_bp = new BulletConfig().setItem(EnumAmmo.M357_BP).setDamage(0.75F).setBlackPowder(true);
|
||||
m357_sp = new BulletConfig().setItem(EnumAmmo.M357_SP);
|
||||
m357_fmj = new BulletConfig().setItem(EnumAmmo.M357_FMJ).setDamage(0.8F).setThresholdNegation(2F).setArmorPiercing(0.1F);
|
||||
m357_jhp = new BulletConfig().setItem(EnumAmmo.M357_JHP).setDamage(1.5F).setHeadshot(1.5F).setArmorPiercing(-0.25F);
|
||||
|
||||
@ -36,6 +36,7 @@ import com.hbm.render.anim.HbmAnimations.AnimType;
|
||||
import com.hbm.util.EntityDamageUtil;
|
||||
import com.hbm.util.TrackerUtil;
|
||||
import com.hbm.util.DamageResistanceHandler.DamageClass;
|
||||
import com.hbm.world.WorldUtil;
|
||||
|
||||
import net.minecraft.entity.Entity;
|
||||
import net.minecraft.entity.EntityLivingBase;
|
||||
@ -133,7 +134,7 @@ public class XFactory40mm {
|
||||
int z = (int) Math.floor(bullet.posZ);
|
||||
int y = bullet.worldObj.getHeightValue(x, z);
|
||||
c130.fac(bullet.worldObj, x, y, z, payload);
|
||||
bullet.worldObj.spawnEntityInWorld(c130);
|
||||
WorldUtil.loadAndSpawnEntityInWorld(c130);
|
||||
TrackerUtil.setTrackingRange(bullet.worldObj, c130, 250);
|
||||
}
|
||||
}
|
||||
|
||||
@ -66,7 +66,7 @@ public class XFactory44 {
|
||||
|
||||
public static void init() {
|
||||
SpentCasing casing44 = new SpentCasing(CasingType.STRAIGHT).setColor(SpentCasing.COLOR_CASE_BRASS).setupSmoke(1F, 0.5D, 60, 20);
|
||||
m44_bp = new BulletConfig().setItem(EnumAmmo.M44_BP).setDamage(0.5F).setBlackPowder(true)
|
||||
m44_bp = new BulletConfig().setItem(EnumAmmo.M44_BP).setDamage(0.75F).setBlackPowder(true)
|
||||
.setCasing(casing44.clone().register("m44bp"));
|
||||
m44_sp = new BulletConfig().setItem(EnumAmmo.M44_SP)
|
||||
.setCasing(casing44.clone().register("m44"));
|
||||
|
||||
@ -99,7 +99,8 @@ public class XFactory556mm {
|
||||
case CYCLE: return new BusAnimation()
|
||||
.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));
|
||||
case CYCLE_DRY: return new BusAnimation()
|
||||
.addBus("BOLT", new BusAnimationSequence().addPos(0, 0, 0, 250).addPos(0, 0, -3.25, 150).addPos(0, 0, 0, 100));
|
||||
.addBus("BOLT", new BusAnimationSequence().addPos(0, 0, 0, 250).addPos(0, 0, -3.25, 150).addPos(0, 0, 0, 100))
|
||||
.addBus("LIFT", new BusAnimationSequence().addPos(0, 0, 0, 400).addPos(-1, 0, 0, 100, IType.SIN_DOWN).addPos(0, 0, 0, 100, IType.SIN_FULL));
|
||||
case RELOAD:
|
||||
return new BusAnimation()
|
||||
.addBus("MAG", new BusAnimationSequence()
|
||||
|
||||
@ -22,10 +22,10 @@ import net.minecraft.item.ItemStack;
|
||||
|
||||
public class XFactoryBlackPowder {
|
||||
|
||||
public static BulletConfig stone = new BulletConfig().setItem(EnumAmmo.STONE).setBlackPowder(true).setSpread(0.025F).setRicochetAngle(15);
|
||||
public static BulletConfig flint = new BulletConfig().setItem(EnumAmmo.STONE_AP).setBlackPowder(true).setSpread(0.01F).setRicochetAngle(5).setDoesPenetrate(true).setDamage(1.75F);
|
||||
public static BulletConfig iron = new BulletConfig().setItem(EnumAmmo.STONE_IRON).setBlackPowder(true).setSpread(0F).setRicochetAngle(90).setRicochetCount(5).setDoesPenetrate(true).setDamageFalloutByPen(false).setDamage(2F);
|
||||
public static BulletConfig shot = new BulletConfig().setItem(EnumAmmo.STONE_SHOT).setBlackPowder(true).setSpread(0.1F).setRicochetAngle(45).setProjectiles(6, 6).setDamage(0.5F);
|
||||
public static BulletConfig stone = new BulletConfig().setItem(EnumAmmo.STONE).setBlackPowder(true).setHeadshot(1F).setSpread(0.025F).setRicochetAngle(15);
|
||||
public static BulletConfig flint = new BulletConfig().setItem(EnumAmmo.STONE_AP).setBlackPowder(true).setHeadshot(1F).setSpread(0.01F).setRicochetAngle(5).setDoesPenetrate(true).setDamage(1.5F);
|
||||
public static BulletConfig iron = new BulletConfig().setItem(EnumAmmo.STONE_IRON).setBlackPowder(true).setHeadshot(1F).setSpread(0F).setRicochetAngle(90).setRicochetCount(5).setDoesPenetrate(true).setDamageFalloutByPen(false).setDamage(1.5F);
|
||||
public static BulletConfig shot = new BulletConfig().setItem(EnumAmmo.STONE_SHOT).setBlackPowder(true).setHeadshot(1F).setSpread(0.1F).setRicochetAngle(45).setProjectiles(6, 6).setDamage(1F/6F);
|
||||
|
||||
public static void init() {
|
||||
|
||||
|
||||
@ -1001,6 +1001,7 @@ public class ResourceManager {
|
||||
public static final ResourceLocation panzerschreck_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/panzerschreck.png");
|
||||
public static final ResourceLocation g3_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/g3.png");
|
||||
public static final ResourceLocation shredder_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/shredder.png");
|
||||
public static final ResourceLocation shredder_orig_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/shredder_orig.png");
|
||||
public static final ResourceLocation sexy_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/sexy.png");
|
||||
public static final ResourceLocation quadro_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/quadro.png");
|
||||
public static final ResourceLocation quadro_rocket_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/quadro_rocket.png");
|
||||
|
||||
@ -77,10 +77,10 @@ public class ParticlePlasmaBlast extends EntityFX {
|
||||
|
||||
tess.setColorRGBA_F(this.particleRed, this.particleGreen, this.particleBlue, this.particleAlpha);
|
||||
|
||||
tess.addVertexWithUV((double)(- 1 * scale), (double)(- 0.25), (double)(- 1 * scale), 1, 1);
|
||||
tess.addVertexWithUV((double)(- 1 * scale), (double)(- 0.25), (double)(+ 1 * scale), 1, 0);
|
||||
tess.addVertexWithUV((double)(+ 1 * scale), (double)(- 0.25), (double)(+ 1 * scale), 0, 0);
|
||||
tess.addVertexWithUV((double)(+ 1 * scale), (double)(- 0.25), (double)(- 1 * scale), 0, 1);
|
||||
tess.addVertexWithUV((double)(- 1 * scale), 0, (double)(- 1 * scale), 1, 1);
|
||||
tess.addVertexWithUV((double)(- 1 * scale), 0, (double)(+ 1 * scale), 1, 0);
|
||||
tess.addVertexWithUV((double)(+ 1 * scale), 0, (double)(+ 1 * scale), 0, 0);
|
||||
tess.addVertexWithUV((double)(+ 1 * scale), 0, (double)(- 1 * scale), 0, 1);
|
||||
tess.draw();
|
||||
|
||||
if(fog) GL11.glEnable(GL11.GL_FOG);
|
||||
|
||||
@ -61,7 +61,8 @@ public class ItemRenderG3 extends ItemRenderWeaponBase {
|
||||
|
||||
ResourceManager.g3.renderPart("Rifle");
|
||||
ResourceManager.g3.renderPart("Stock");
|
||||
ResourceManager.g3.renderPart("FlashHider");
|
||||
ResourceManager.g3.renderPart("Flash_Hider");
|
||||
ResourceManager.g3.renderPart("Trigger_Rifle.002");
|
||||
|
||||
GL11.glPushMatrix();
|
||||
GL11.glTranslated(mag[0], mag[1], mag[2]);
|
||||
@ -86,7 +87,7 @@ public class ItemRenderG3 extends ItemRenderWeaponBase {
|
||||
GL11.glTranslated(0, -0.875, -3.5);
|
||||
GL11.glRotated(-30 * (1 - ItemGunBaseNT.getMode(stack, 0)), 1, 0, 0);
|
||||
GL11.glTranslated(0, 0.875, 3.5);
|
||||
ResourceManager.g3.renderPart("Selector");
|
||||
ResourceManager.g3.renderPart("Selector_Rifle.001");
|
||||
GL11.glPopMatrix();
|
||||
|
||||
double smokeScale = 0.75;
|
||||
@ -137,15 +138,16 @@ public class ItemRenderG3 extends ItemRenderWeaponBase {
|
||||
ResourceManager.g3.renderPart("Rifle");
|
||||
ResourceManager.g3.renderPart("Stock");
|
||||
ResourceManager.g3.renderPart("Magazine");
|
||||
ResourceManager.g3.renderPart("FlashHider");
|
||||
ResourceManager.g3.renderPart("Flash_Hider");
|
||||
ResourceManager.g3.renderPart("Bolt");
|
||||
ResourceManager.g3.renderPart("Handle");
|
||||
ResourceManager.g3.renderPart("Trigger_Rifle.002");
|
||||
|
||||
GL11.glPushMatrix();
|
||||
GL11.glTranslated(0, -0.875, -3.5);
|
||||
GL11.glRotated(-30, 1, 0, 0);
|
||||
GL11.glTranslated(0, 0.875, 3.5);
|
||||
ResourceManager.g3.renderPart("Selector");
|
||||
ResourceManager.g3.renderPart("Selector_Rifle.001");
|
||||
GL11.glPopMatrix();
|
||||
GL11.glShadeModel(GL11.GL_FLAT);
|
||||
}
|
||||
|
||||
@ -9,6 +9,7 @@ package com.hbm.render.model;
|
||||
import org.lwjgl.opengl.GL11;
|
||||
|
||||
import com.hbm.interfaces.IHoldableWeapon;
|
||||
import com.hbm.items.weapon.sedna.ItemGunBaseNT;
|
||||
|
||||
import net.minecraft.client.model.ModelBiped;
|
||||
import net.minecraft.client.model.ModelRenderer;
|
||||
@ -207,6 +208,7 @@ public class ModelT45Chest extends ModelBiped {
|
||||
|
||||
@Override
|
||||
public void setRotationAngles(float f, float f1, float f2, float f3, float f4, float f5, Entity entity) {
|
||||
|
||||
if (entity instanceof EntityPlayer) {
|
||||
EntityPlayer player = (EntityPlayer) entity;
|
||||
if (player.isSneaking()) {
|
||||
@ -227,8 +229,8 @@ public class ModelT45Chest extends ModelBiped {
|
||||
}
|
||||
}
|
||||
|
||||
if(itemstack != null && player.getHeldItem().getItem() instanceof IHoldableWeapon)
|
||||
this.aimedBow = true;
|
||||
if(itemstack != null && player.getHeldItem().getItem() instanceof IHoldableWeapon) this.aimedBow = true;
|
||||
if(itemstack != null && player.getHeldItem().getItem() instanceof ItemGunBaseNT) this.aimedBow = true;
|
||||
}
|
||||
super.setRotationAngles(f, f1, f2, f3, f4, f5, entity);
|
||||
this.chest.rotationPointX = this.bipedBody.rotationPointX;
|
||||
|
||||
@ -90,10 +90,11 @@ public class TileEntityMachineRotaryFurnace extends TileEntityMachinePolluting i
|
||||
|
||||
if(this.output != null) {
|
||||
|
||||
int prev = this.output.amount;
|
||||
Vec3 impact = Vec3.createVectorHelper(0, 0, 0);
|
||||
MaterialStack leftover = CrucibleUtil.pourSingleStack(worldObj, xCoord + 0.5D + rot.offsetX * 2.875D, yCoord + 1.25D, zCoord + 0.5D + rot.offsetZ * 2.875D, 6, true, this.output, MaterialShapes.INGOT.q(1), impact);
|
||||
|
||||
if(leftover.amount != this.output.amount) {
|
||||
if(prev != this.output.amount) {
|
||||
this.output = leftover;
|
||||
NBTTagCompound data = new NBTTagCompound();
|
||||
data.setString("type", "foundry");
|
||||
|
||||
@ -1206,6 +1206,7 @@ item.ammo_standard.flame_napalm.name=Flammenwerferbrennstoff, Napalm
|
||||
item.ammo_standard.g10.name=Kaliber 10 Schrot
|
||||
item.ammo_standard.g10_du.name=Kaliber 10 Uranschrot
|
||||
item.ammo_standard.g10_shrapnel.name=Kaliber 10 Schrapnell-Schrot
|
||||
item.ammo_standard.g10_slug.name=Kaliber 10 Laufgeschoss
|
||||
item.ammo_standard.g12.name=Kaliber 12 Schrot
|
||||
item.ammo_standard.g12_anthrax.name=Kaliber 12 Anthrax
|
||||
item.ammo_standard.g12_bp.name=Kaliber 12 Schwarzpulver
|
||||
@ -2080,13 +2081,13 @@ item.folly_shell.name=Silberne Kanonenhülse
|
||||
item.fooditem.name=lebensmittel
|
||||
item.fragment_actinium.name=Actiniumfragment
|
||||
item.fragment_boron.name=Borfragment
|
||||
item.fragment_cerium.name=Cerium Ffragment
|
||||
item.fragment_cerium.name=Cerfragment
|
||||
item.fragment_cobalt.name=Cobaltfragment
|
||||
item.fragment_coltan.name=Coltan
|
||||
item.fragment_lanthanium.name=Lanthanfragment
|
||||
item.fragment_meteorite.name=Meteoritenfragment
|
||||
item.fragment_neodymium.name=Neodymfragment
|
||||
item.fragment_niobium.name=Niobium Ffragment
|
||||
item.fragment_niobium.name=Niobfragment
|
||||
item.fuel_additive.antiknock.name=Tetraethyblei-Antiklopfmittel
|
||||
item.fuel_additive.deicer.name=Enteisungsmittel
|
||||
item.fuel_tank_large.name=Großer Treibstofftank
|
||||
@ -2181,6 +2182,7 @@ item.gun_am180.name=Schallgedämpfte Maschinenpistole
|
||||
item.gun_ar15.name=Josh
|
||||
item.gun_autoshotgun.name=Auto-Flinte
|
||||
item.gun_autoshotgun_sexy.name=Sexy
|
||||
item.gun_autoshotgun_shredder.name=Shredder
|
||||
item.gun_avenger.name=CZ57 Avenger-Minigun
|
||||
item.gun_b92.name=§9B92 Energiepistole§r
|
||||
item.gun_b92_ammo.name=§9B92-Energiezelle§r
|
||||
|
||||
@ -1929,6 +1929,7 @@ item.ammo_standard.flame_napalm.name=Flamer Fuel, Napalm
|
||||
item.ammo_standard.g10.name=10 Gauge Buckshot
|
||||
item.ammo_standard.g10_du.name=10 Gauge Uranium Buckshot
|
||||
item.ammo_standard.g10_shrapnel.name=10 Gauge Shrapnel Buckshot
|
||||
item.ammo_standard.g10_slug.name=10 Gauge Slug
|
||||
item.ammo_standard.g12.name=12 Gauge Buckshot
|
||||
item.ammo_standard.g12_anthrax.name=12 Gauge Anthrax Shell
|
||||
item.ammo_standard.g12_bp.name=12 Gauge Black Powder Buckshot
|
||||
@ -2987,6 +2988,7 @@ item.gun_am180.name=Silenced Submachine Gun
|
||||
item.gun_ar15.name=Josh
|
||||
item.gun_autoshotgun.name=Auto Shotgun
|
||||
item.gun_autoshotgun_sexy.name=Sexy
|
||||
item.gun_autoshotgun_shredder.name=Shredder
|
||||
item.gun_avenger.name=CZ57 Avenger Minigun
|
||||
item.gun_b92.name=§9B92 Energy Pistol§r
|
||||
item.gun_b92_ammo.name=§9B92 Energy Cell§r
|
||||
|
||||
|
Before Width: | Height: | Size: 562 B |
|
Before Width: | Height: | Size: 435 B |
|
Before Width: | Height: | Size: 576 B |
|
Before Width: | Height: | Size: 302 B |
|
Before Width: | Height: | Size: 281 B |
|
Before Width: | Height: | Size: 296 B |
|
Before Width: | Height: | Size: 413 B |
|
Before Width: | Height: | Size: 280 B |
|
Before Width: | Height: | Size: 363 B |
|
Before Width: | Height: | Size: 358 B |
|
Before Width: | Height: | Size: 340 B |
|
Before Width: | Height: | Size: 357 B |
|
Before Width: | Height: | Size: 359 B |
|
Before Width: | Height: | Size: 369 B |
|
Before Width: | Height: | Size: 336 B |
|
Before Width: | Height: | Size: 392 B |
|
Before Width: | Height: | Size: 327 B |
|
Before Width: | Height: | Size: 352 B |
|
Before Width: | Height: | Size: 349 B |
|
Before Width: | Height: | Size: 1.9 KiB |
|
Before Width: | Height: | Size: 5.3 KiB |
|
Before Width: | Height: | Size: 5.3 KiB |
|
Before Width: | Height: | Size: 311 B |
|
Before Width: | Height: | Size: 321 B |
|
Before Width: | Height: | Size: 326 B |
|
Before Width: | Height: | Size: 323 B |
|
Before Width: | Height: | Size: 322 B |
|
Before Width: | Height: | Size: 346 B |
|
Before Width: | Height: | Size: 423 B |
|
Before Width: | Height: | Size: 360 B |
|
Before Width: | Height: | Size: 315 B |
|
Before Width: | Height: | Size: 362 B |
|
Before Width: | Height: | Size: 347 B |
|
Before Width: | Height: | Size: 364 B |
|
Before Width: | Height: | Size: 311 B |
|
Before Width: | Height: | Size: 317 B |
|
Before Width: | Height: | Size: 299 B |
|
Before Width: | Height: | Size: 277 B |
|
Before Width: | Height: | Size: 193 B |
|
Before Width: | Height: | Size: 325 B |
|
Before Width: | Height: | Size: 319 B |
|
Before Width: | Height: | Size: 333 B |
|
Before Width: | Height: | Size: 331 B |
|
Before Width: | Height: | Size: 346 B |
|
Before Width: | Height: | Size: 321 B |
|
Before Width: | Height: | Size: 377 B |
|
Before Width: | Height: | Size: 327 B |
|
Before Width: | Height: | Size: 286 B |
|
Before Width: | Height: | Size: 340 B |
|
After Width: | Height: | Size: 252 B |
|
After Width: | Height: | Size: 7.7 KiB |