crocket
@ -25,11 +25,11 @@ import net.minecraft.util.Vec3;
|
|||||||
import net.minecraft.world.WorldServer;
|
import net.minecraft.world.WorldServer;
|
||||||
import net.minecraftforge.common.util.ForgeDirection;
|
import net.minecraftforge.common.util.ForgeDirection;
|
||||||
|
|
||||||
public class BulletConfig {
|
public class BulletConfig implements Cloneable {
|
||||||
|
|
||||||
public static List<BulletConfig> configs = new ArrayList();
|
public static List<BulletConfig> configs = new ArrayList();
|
||||||
|
|
||||||
public final int id;
|
public int id;
|
||||||
|
|
||||||
public ComparableStack ammo;
|
public ComparableStack ammo;
|
||||||
/** How much ammo is added to a standard mag when loading one item */
|
/** How much ammo is added to a standard mag when loading one item */
|
||||||
@ -76,6 +76,13 @@ public class BulletConfig {
|
|||||||
this.id = configs.size();
|
this.id = configs.size();
|
||||||
configs.add(this);
|
configs.add(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** Required for the clone() operation to reset the ID, otherwise the ID and config entry will be the same as the original */
|
||||||
|
public BulletConfig forceReRegister() {
|
||||||
|
this.id = configs.size();
|
||||||
|
configs.add(this);
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
public BulletConfig setItem(Item ammo) { this.ammo = new ComparableStack(ammo); return this; }
|
public BulletConfig setItem(Item ammo) { this.ammo = new ComparableStack(ammo); return this; }
|
||||||
public BulletConfig setItem(EnumAmmo ammo) { this.ammo = new ComparableStack(ModItems.ammo_standard, 1, ammo.ordinal()); return this; }
|
public BulletConfig setItem(EnumAmmo ammo) { this.ammo = new ComparableStack(ModItems.ammo_standard, 1, ammo.ordinal()); return this; }
|
||||||
@ -193,4 +200,14 @@ public class BulletConfig {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public BulletConfig clone() {
|
||||||
|
try {
|
||||||
|
BulletConfig clone = (BulletConfig) super.clone();
|
||||||
|
clone.forceReRegister();
|
||||||
|
return clone;
|
||||||
|
} catch(CloneNotSupportedException e) { }
|
||||||
|
return null;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -4,7 +4,6 @@ import java.util.List;
|
|||||||
import java.util.concurrent.ConcurrentHashMap;
|
import java.util.concurrent.ConcurrentHashMap;
|
||||||
import java.util.function.BiConsumer;
|
import java.util.function.BiConsumer;
|
||||||
|
|
||||||
import com.hbm.handler.CasingEjector;
|
|
||||||
import com.hbm.handler.HbmKeybinds.EnumKeybind;
|
import com.hbm.handler.HbmKeybinds.EnumKeybind;
|
||||||
import com.hbm.interfaces.IItemHUD;
|
import com.hbm.interfaces.IItemHUD;
|
||||||
import com.hbm.items.IEquipReceiver;
|
import com.hbm.items.IEquipReceiver;
|
||||||
@ -14,7 +13,6 @@ import com.hbm.items.weapon.sedna.mags.IMagazine;
|
|||||||
import com.hbm.lib.RefStrings;
|
import com.hbm.lib.RefStrings;
|
||||||
import com.hbm.main.MainRegistry;
|
import com.hbm.main.MainRegistry;
|
||||||
import com.hbm.packet.PacketDispatcher;
|
import com.hbm.packet.PacketDispatcher;
|
||||||
import com.hbm.packet.toclient.AuxParticlePacketNT;
|
|
||||||
import com.hbm.packet.toclient.GunAnimationPacket;
|
import com.hbm.packet.toclient.GunAnimationPacket;
|
||||||
import com.hbm.render.anim.HbmAnimations.AnimType;
|
import com.hbm.render.anim.HbmAnimations.AnimType;
|
||||||
import com.hbm.render.util.RenderScreenOverlay;
|
import com.hbm.render.util.RenderScreenOverlay;
|
||||||
@ -22,7 +20,6 @@ import com.hbm.sound.AudioWrapper;
|
|||||||
import com.hbm.util.BobMathUtil;
|
import com.hbm.util.BobMathUtil;
|
||||||
import com.hbm.util.EnumUtil;
|
import com.hbm.util.EnumUtil;
|
||||||
|
|
||||||
import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint;
|
|
||||||
import cpw.mods.fml.relauncher.Side;
|
import cpw.mods.fml.relauncher.Side;
|
||||||
import cpw.mods.fml.relauncher.SideOnly;
|
import cpw.mods.fml.relauncher.SideOnly;
|
||||||
import net.minecraft.client.Minecraft;
|
import net.minecraft.client.Minecraft;
|
||||||
@ -97,7 +94,7 @@ public class ItemGunBaseNT extends Item implements IKeybindReceiver, IEquipRecei
|
|||||||
A_SIDE,
|
A_SIDE,
|
||||||
B_SIDE,
|
B_SIDE,
|
||||||
LEGENDARY,
|
LEGENDARY,
|
||||||
SEPCIAL,
|
SPECIAL,
|
||||||
SECRET,
|
SECRET,
|
||||||
DEBUG
|
DEBUG
|
||||||
}
|
}
|
||||||
@ -128,7 +125,7 @@ public class ItemGunBaseNT extends Item implements IKeybindReceiver, IEquipRecei
|
|||||||
case A_SIDE: list.add(EnumChatFormatting.YELLOW + "Standard Arsenal"); break;
|
case A_SIDE: list.add(EnumChatFormatting.YELLOW + "Standard Arsenal"); break;
|
||||||
case B_SIDE: list.add(EnumChatFormatting.GOLD + "B-Side"); break;
|
case B_SIDE: list.add(EnumChatFormatting.GOLD + "B-Side"); break;
|
||||||
case LEGENDARY: list.add(EnumChatFormatting.RED + "Legendary Weapon"); break;
|
case LEGENDARY: list.add(EnumChatFormatting.RED + "Legendary Weapon"); break;
|
||||||
case SEPCIAL: list.add(EnumChatFormatting.AQUA + "Special Weapon"); break;
|
case SPECIAL: list.add(EnumChatFormatting.AQUA + "Special Weapon"); break;
|
||||||
case SECRET: list.add(EnumChatFormatting.DARK_RED + "SECRET"); break;
|
case SECRET: list.add(EnumChatFormatting.DARK_RED + "SECRET"); break;
|
||||||
case DEBUG: list.add((BobMathUtil.getBlink() ? EnumChatFormatting.YELLOW : EnumChatFormatting.GOLD) + "DEBUG"); break;
|
case DEBUG: list.add((BobMathUtil.getBlink() ? EnumChatFormatting.YELLOW : EnumChatFormatting.GOLD) + "DEBUG"); break;
|
||||||
}
|
}
|
||||||
@ -244,22 +241,6 @@ public class ItemGunBaseNT extends Item implements IKeybindReceiver, IEquipRecei
|
|||||||
if(timer <= 1) configs[i].getDecider(stack).accept(stack, ctx[i]);
|
if(timer <= 1) configs[i].getDecider(stack).accept(stack, ctx[i]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void trySpawnCasing(Entity entity, CasingEjector ejector, BulletConfig bullet, ItemStack stack) {
|
|
||||||
|
|
||||||
if(ejector == null) return; //abort if the gun can't eject bullets at all
|
|
||||||
if(bullet == null) return; //abort if there's no valid bullet cfg
|
|
||||||
if(bullet.casing == null) return; //abort if the bullet is caseless
|
|
||||||
|
|
||||||
NBTTagCompound data = new NBTTagCompound();
|
|
||||||
data.setString("type", "casing");
|
|
||||||
data.setFloat("pitch", (float) Math.toRadians(entity.rotationPitch));
|
|
||||||
data.setFloat("yaw", (float) Math.toRadians(entity.rotationYaw));
|
|
||||||
data.setBoolean("crouched", entity.isSneaking());
|
|
||||||
data.setString("name", bullet.casing.getName());
|
|
||||||
data.setInteger("ej", ejector.getId());
|
|
||||||
PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(data, entity.posX, entity.posY + entity.getEyeHeight(), entity.posZ), new TargetPoint(entity.dimension, entity.posX, entity.posY, entity.posZ, 50));
|
|
||||||
}
|
|
||||||
|
|
||||||
// GUN DRAWN //
|
// GUN DRAWN //
|
||||||
public static boolean getIsDrawn(ItemStack stack) { return getValueBool(stack, KEY_DRAWN); }
|
public static boolean getIsDrawn(ItemStack stack) { return getValueBool(stack, KEY_DRAWN); }
|
||||||
|
|||||||
@ -73,8 +73,9 @@ public class GunFactory {
|
|||||||
R762_SP, R762_FMJ, R762_JHP, R762_AP, R762_DU,
|
R762_SP, R762_FMJ, R762_JHP, R762_AP, R762_DU,
|
||||||
BMG50_SP, BMG50_FMJ, BMG50_JHP, BMG50_AP, BMG50_DU,
|
BMG50_SP, BMG50_FMJ, BMG50_JHP, BMG50_AP, BMG50_DU,
|
||||||
G12_BP, G12_BP_MAGNUM, G12_BP_SLUG, G12, G12_SLUG, G12_FLECHETTE, G12_MAGNUM, G12_EXPLOSIVE, G12_PHOSPHORUS, G12_ANTHRAX,
|
G12_BP, G12_BP_MAGNUM, G12_BP_SLUG, G12, G12_SLUG, G12_FLECHETTE, G12_MAGNUM, G12_EXPLOSIVE, G12_PHOSPHORUS, G12_ANTHRAX,
|
||||||
G40_FLARE, G40,
|
G40_FLARE,
|
||||||
ROCKET_HE, ROCKET_HEAT,
|
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,
|
FLAME_DIESEL, FLAME_GAS, FLAME_NAPALM, FLAME_BALEFIRE,
|
||||||
M44_EQUESTRIAN, G12_EQUESTRIAN, BMG50_EQUESTRIAN
|
M44_EQUESTRIAN, G12_EQUESTRIAN, BMG50_EQUESTRIAN
|
||||||
}
|
}
|
||||||
|
|||||||
@ -13,7 +13,11 @@ import static com.hbm.items.weapon.sedna.factory.XFactory9mm.*;
|
|||||||
import static com.hbm.items.weapon.sedna.factory.XFactoryBlackPowder.*;
|
import static com.hbm.items.weapon.sedna.factory.XFactoryBlackPowder.*;
|
||||||
import static com.hbm.items.weapon.sedna.factory.XFactoryRocket.*;
|
import static com.hbm.items.weapon.sedna.factory.XFactoryRocket.*;
|
||||||
|
|
||||||
|
import java.util.function.BiConsumer;
|
||||||
|
|
||||||
|
import com.hbm.entity.projectile.EntityBulletBaseMK4;
|
||||||
import com.hbm.items.ModItems;
|
import com.hbm.items.ModItems;
|
||||||
|
import com.hbm.items.weapon.sedna.BulletConfig;
|
||||||
import com.hbm.items.weapon.sedna.ItemGunBaseNT;
|
import com.hbm.items.weapon.sedna.ItemGunBaseNT;
|
||||||
import com.hbm.main.ResourceManager;
|
import com.hbm.main.ResourceManager;
|
||||||
import com.hbm.render.item.weapon.sedna.*;
|
import com.hbm.render.item.weapon.sedna.*;
|
||||||
@ -57,25 +61,52 @@ public class GunFactoryClient {
|
|||||||
//PROJECTILES
|
//PROJECTILES
|
||||||
ammo_debug.setRenderer(LegoClient.RENDER_STANDARD_BULLET);
|
ammo_debug.setRenderer(LegoClient.RENDER_STANDARD_BULLET);
|
||||||
ammo_debug_buckshot.setRenderer(LegoClient.RENDER_STANDARD_BULLET);
|
ammo_debug_buckshot.setRenderer(LegoClient.RENDER_STANDARD_BULLET);
|
||||||
|
|
||||||
stone.setRenderer(LegoClient.RENDER_STANDARD_BULLET);
|
stone.setRenderer(LegoClient.RENDER_STANDARD_BULLET);
|
||||||
flint.setRenderer(LegoClient.RENDER_STANDARD_BULLET);
|
flint.setRenderer(LegoClient.RENDER_STANDARD_BULLET);
|
||||||
iron.setRenderer(LegoClient.RENDER_STANDARD_BULLET);
|
iron.setRenderer(LegoClient.RENDER_STANDARD_BULLET);
|
||||||
shot.setRenderer(LegoClient.RENDER_STANDARD_BULLET);
|
shot.setRenderer(LegoClient.RENDER_STANDARD_BULLET);
|
||||||
|
|
||||||
m357_sp.setRenderer(LegoClient.RENDER_STANDARD_BULLET);
|
m357_sp.setRenderer(LegoClient.RENDER_STANDARD_BULLET);
|
||||||
m357_fmj.setRenderer(LegoClient.RENDER_STANDARD_BULLET);
|
m357_fmj.setRenderer(LegoClient.RENDER_STANDARD_BULLET);
|
||||||
m357_jhp.setRenderer(LegoClient.RENDER_STANDARD_BULLET);
|
m357_jhp.setRenderer(LegoClient.RENDER_STANDARD_BULLET);
|
||||||
m357_ap.setRenderer(LegoClient.RENDER_AP_BULLET);
|
m357_ap.setRenderer(LegoClient.RENDER_AP_BULLET);
|
||||||
m357_express.setRenderer(LegoClient.RENDER_EXPRESS_BULLET);
|
m357_express.setRenderer(LegoClient.RENDER_EXPRESS_BULLET);
|
||||||
|
|
||||||
m44_sp.setRenderer(LegoClient.RENDER_STANDARD_BULLET);
|
m44_sp.setRenderer(LegoClient.RENDER_STANDARD_BULLET);
|
||||||
m44_fmj.setRenderer(LegoClient.RENDER_STANDARD_BULLET);
|
m44_fmj.setRenderer(LegoClient.RENDER_STANDARD_BULLET);
|
||||||
m44_jhp.setRenderer(LegoClient.RENDER_STANDARD_BULLET);
|
m44_jhp.setRenderer(LegoClient.RENDER_STANDARD_BULLET);
|
||||||
m44_ap.setRenderer(LegoClient.RENDER_AP_BULLET);
|
m44_ap.setRenderer(LegoClient.RENDER_AP_BULLET);
|
||||||
m44_express.setRenderer(LegoClient.RENDER_EXPRESS_BULLET);
|
m44_express.setRenderer(LegoClient.RENDER_EXPRESS_BULLET);
|
||||||
m44_equestrian.setRenderer(LegoClient.RENDER_LEGENDARY_BULLET);
|
m44_equestrian.setRenderer(LegoClient.RENDER_LEGENDARY_BULLET);
|
||||||
|
|
||||||
|
p22_sp.setRenderer(LegoClient.RENDER_STANDARD_BULLET);
|
||||||
|
p22_fmj.setRenderer(LegoClient.RENDER_STANDARD_BULLET);
|
||||||
|
p22_jhp.setRenderer(LegoClient.RENDER_STANDARD_BULLET);
|
||||||
|
p22_ap.setRenderer(LegoClient.RENDER_AP_BULLET);
|
||||||
|
|
||||||
p9_sp.setRenderer(LegoClient.RENDER_STANDARD_BULLET);
|
p9_sp.setRenderer(LegoClient.RENDER_STANDARD_BULLET);
|
||||||
p9_fmj.setRenderer(LegoClient.RENDER_STANDARD_BULLET);
|
p9_fmj.setRenderer(LegoClient.RENDER_STANDARD_BULLET);
|
||||||
p9_jhp.setRenderer(LegoClient.RENDER_STANDARD_BULLET);
|
p9_jhp.setRenderer(LegoClient.RENDER_STANDARD_BULLET);
|
||||||
p9_ap.setRenderer(LegoClient.RENDER_AP_BULLET);
|
p9_ap.setRenderer(LegoClient.RENDER_AP_BULLET);
|
||||||
|
|
||||||
|
r556_sp.setRenderer(LegoClient.RENDER_STANDARD_BULLET);
|
||||||
|
r556_fmj.setRenderer(LegoClient.RENDER_STANDARD_BULLET);
|
||||||
|
r556_jhp.setRenderer(LegoClient.RENDER_STANDARD_BULLET);
|
||||||
|
r556_ap.setRenderer(LegoClient.RENDER_AP_BULLET);
|
||||||
|
|
||||||
|
r762_sp.setRenderer(LegoClient.RENDER_STANDARD_BULLET);
|
||||||
|
r762_fmj.setRenderer(LegoClient.RENDER_STANDARD_BULLET);
|
||||||
|
r762_jhp.setRenderer(LegoClient.RENDER_STANDARD_BULLET);
|
||||||
|
r762_ap.setRenderer(LegoClient.RENDER_AP_BULLET);
|
||||||
|
r762_du.setRenderer(LegoClient.RENDER_DU_BULLET);
|
||||||
|
|
||||||
|
bmg50_sp.setRenderer(LegoClient.RENDER_STANDARD_BULLET);
|
||||||
|
bmg50_fmj.setRenderer(LegoClient.RENDER_STANDARD_BULLET);
|
||||||
|
bmg50_jhp.setRenderer(LegoClient.RENDER_STANDARD_BULLET);
|
||||||
|
bmg50_ap.setRenderer(LegoClient.RENDER_AP_BULLET);
|
||||||
|
bmg50_du.setRenderer(LegoClient.RENDER_DU_BULLET);
|
||||||
|
|
||||||
g12_bp.setRenderer(LegoClient.RENDER_STANDARD_BULLET);
|
g12_bp.setRenderer(LegoClient.RENDER_STANDARD_BULLET);
|
||||||
g12_bp_magnum.setRenderer(LegoClient.RENDER_STANDARD_BULLET);
|
g12_bp_magnum.setRenderer(LegoClient.RENDER_STANDARD_BULLET);
|
||||||
g12_bp_slug.setRenderer(LegoClient.RENDER_STANDARD_BULLET);
|
g12_bp_slug.setRenderer(LegoClient.RENDER_STANDARD_BULLET);
|
||||||
@ -87,32 +118,17 @@ public class GunFactoryClient {
|
|||||||
g12_phosphorus.setRenderer(LegoClient.RENDER_AP_BULLET);
|
g12_phosphorus.setRenderer(LegoClient.RENDER_AP_BULLET);
|
||||||
g12_anthrax.setRenderer(LegoClient.RENDER_STANDARD_BULLET);
|
g12_anthrax.setRenderer(LegoClient.RENDER_STANDARD_BULLET);
|
||||||
g12_equestrian.setRenderer(LegoClient.RENDER_LEGENDARY_BULLET);
|
g12_equestrian.setRenderer(LegoClient.RENDER_LEGENDARY_BULLET);
|
||||||
r762_sp.setRenderer(LegoClient.RENDER_STANDARD_BULLET);
|
|
||||||
r762_fmj.setRenderer(LegoClient.RENDER_STANDARD_BULLET);
|
|
||||||
r762_jhp.setRenderer(LegoClient.RENDER_STANDARD_BULLET);
|
|
||||||
r762_ap.setRenderer(LegoClient.RENDER_AP_BULLET);
|
|
||||||
r762_du.setRenderer(LegoClient.RENDER_DU_BULLET);
|
|
||||||
p22_sp.setRenderer(LegoClient.RENDER_STANDARD_BULLET);
|
|
||||||
p22_fmj.setRenderer(LegoClient.RENDER_STANDARD_BULLET);
|
|
||||||
p22_jhp.setRenderer(LegoClient.RENDER_STANDARD_BULLET);
|
|
||||||
p22_ap.setRenderer(LegoClient.RENDER_AP_BULLET);
|
|
||||||
g40_flare.setRenderer(LegoClient.RENDER_FLARE);
|
g40_flare.setRenderer(LegoClient.RENDER_FLARE);
|
||||||
g40.setRenderer(LegoClient.RENDER_GRENADE);
|
|
||||||
rocket_rpzb_he.setRenderer(LegoClient.RENDER_RPZB);
|
setRendererBulk(LegoClient.RENDER_GRENADE,
|
||||||
rocket_rpzb_heat.setRenderer(LegoClient.RENDER_RPZB);
|
g40_he);
|
||||||
rocket_qd_he.setRenderer(LegoClient.RENDER_QD);
|
setRendererBulk(LegoClient.RENDER_RPZB,
|
||||||
rocket_qd_heat.setRenderer(LegoClient.RENDER_QD);
|
rocket_rpzb_he, rocket_rpzb_heat);
|
||||||
rocket_ml_he.setRenderer(LegoClient.RENDER_ML);
|
setRendererBulk(LegoClient.RENDER_QD,
|
||||||
rocket_ml_heat.setRenderer(LegoClient.RENDER_ML);
|
rocket_qd_he, rocket_qd_heat);
|
||||||
r556_sp.setRenderer(LegoClient.RENDER_STANDARD_BULLET);
|
setRendererBulk(LegoClient.RENDER_ML,
|
||||||
r556_fmj.setRenderer(LegoClient.RENDER_STANDARD_BULLET);
|
rocket_ml_he, rocket_ml_heat);
|
||||||
r556_jhp.setRenderer(LegoClient.RENDER_STANDARD_BULLET);
|
|
||||||
r556_ap.setRenderer(LegoClient.RENDER_AP_BULLET);
|
|
||||||
bmg50_sp.setRenderer(LegoClient.RENDER_STANDARD_BULLET);
|
|
||||||
bmg50_fmj.setRenderer(LegoClient.RENDER_STANDARD_BULLET);
|
|
||||||
bmg50_jhp.setRenderer(LegoClient.RENDER_STANDARD_BULLET);
|
|
||||||
bmg50_ap.setRenderer(LegoClient.RENDER_AP_BULLET);
|
|
||||||
bmg50_du.setRenderer(LegoClient.RENDER_DU_BULLET);
|
|
||||||
//HUDS
|
//HUDS
|
||||||
((ItemGunBaseNT) ModItems.gun_debug) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO);
|
((ItemGunBaseNT) ModItems.gun_debug) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO);
|
||||||
((ItemGunBaseNT) ModItems.gun_pepperbox) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO);
|
((ItemGunBaseNT) ModItems.gun_pepperbox) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO);
|
||||||
@ -148,4 +164,8 @@ public class GunFactoryClient {
|
|||||||
((ItemGunBaseNT) ModItems.gun_maresleg_akimbo) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY_MIRROR, LegoClient.HUD_COMPONENT_AMMO_MIRROR);
|
((ItemGunBaseNT) ModItems.gun_maresleg_akimbo) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY_MIRROR, LegoClient.HUD_COMPONENT_AMMO_MIRROR);
|
||||||
((ItemGunBaseNT) ModItems.gun_maresleg_akimbo) .getConfig(null, 1).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO);
|
((ItemGunBaseNT) ModItems.gun_maresleg_akimbo) .getConfig(null, 1).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static void setRendererBulk(BiConsumer<EntityBulletBaseMK4, Float> renderer, BulletConfig... configs) {
|
||||||
|
for(BulletConfig config : configs) config.setRenderer(renderer);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -29,7 +29,7 @@ import net.minecraft.util.MovingObjectPosition;
|
|||||||
public class XFactory40mm {
|
public class XFactory40mm {
|
||||||
|
|
||||||
public static BulletConfig g40_flare;
|
public static BulletConfig g40_flare;
|
||||||
public static BulletConfig g40;
|
public static BulletConfig g40_he;
|
||||||
|
|
||||||
public static BiConsumer<EntityBulletBaseMK4, MovingObjectPosition> LAMBDA_STANDARD_EXPLODE = (bullet, mop) -> {
|
public static BiConsumer<EntityBulletBaseMK4, MovingObjectPosition> LAMBDA_STANDARD_EXPLODE = (bullet, mop) -> {
|
||||||
Lego.standardExplode(bullet, mop, 5F); bullet.setDead();
|
Lego.standardExplode(bullet, mop, 5F); bullet.setDead();
|
||||||
@ -38,7 +38,7 @@ public class XFactory40mm {
|
|||||||
public static void init() {
|
public static void init() {
|
||||||
|
|
||||||
g40_flare = new BulletConfig().setItem(EnumAmmo.G40_FLARE).setLife(100).setVel(2F).setGrav(0.035D).setRenderRotations(false).setCasing(new SpentCasing(CasingType.STRAIGHT).setColor(0x9E1616).setScale(2F).register("G40Flare"));
|
g40_flare = new BulletConfig().setItem(EnumAmmo.G40_FLARE).setLife(100).setVel(2F).setGrav(0.035D).setRenderRotations(false).setCasing(new SpentCasing(CasingType.STRAIGHT).setColor(0x9E1616).setScale(2F).register("G40Flare"));
|
||||||
g40 = new BulletConfig().setItem(EnumAmmo.G40).setLife(200).setOnImpact(LAMBDA_STANDARD_EXPLODE).setVel(2F).setGrav(0.035D).setCasing(new SpentCasing(CasingType.STRAIGHT).setColor(SpentCasing.COLOR_CASE_40MM).setScale(2, 2F, 1.5F).register("G40"));
|
g40_he = new BulletConfig().setItem(EnumAmmo.G40_HE).setLife(200).setOnImpact(LAMBDA_STANDARD_EXPLODE).setVel(2F).setGrav(0.035D).setCasing(new SpentCasing(CasingType.STRAIGHT).setColor(SpentCasing.COLOR_CASE_40MM).setScale(2, 2F, 1.5F).register("G40"));
|
||||||
|
|
||||||
ModItems.gun_flaregun = new ItemGunBaseNT(WeaponQuality.A_SIDE, new GunConfig()
|
ModItems.gun_flaregun = new ItemGunBaseNT(WeaponQuality.A_SIDE, new GunConfig()
|
||||||
.dura(100).draw(7).inspect(39).crosshair(Crosshair.L_CIRCUMFLEX).smoke(LAMBDA_SMOKE)
|
.dura(100).draw(7).inspect(39).crosshair(Crosshair.L_CIRCUMFLEX).smoke(LAMBDA_SMOKE)
|
||||||
@ -55,7 +55,7 @@ public class XFactory40mm {
|
|||||||
.dura(400).draw(7).inspect(39).reloadSequential(true).crosshair(Crosshair.L_CIRCUMFLEX).smoke(LAMBDA_SMOKE)
|
.dura(400).draw(7).inspect(39).reloadSequential(true).crosshair(Crosshair.L_CIRCUMFLEX).smoke(LAMBDA_SMOKE)
|
||||||
.rec(new Receiver(0)
|
.rec(new Receiver(0)
|
||||||
.dmg(30F).delay(24).reload(16, 16, 16, 0).jam(0).sound("hbm:weapon.glShoot", 1.0F, 1.0F)
|
.dmg(30F).delay(24).reload(16, 16, 16, 0).jam(0).sound("hbm:weapon.glShoot", 1.0F, 1.0F)
|
||||||
.mag(new MagazineSingleReload(0, 4).addConfigs(g40, g40_flare))
|
.mag(new MagazineSingleReload(0, 4).addConfigs(g40_he, g40_flare))
|
||||||
.offset(0.75, -0.0625, -0.1875D)
|
.offset(0.75, -0.0625, -0.1875D)
|
||||||
.setupStandardFire().recoil(Lego.LAMBDA_STANDARD_RECOIL))
|
.setupStandardFire().recoil(Lego.LAMBDA_STANDARD_RECOIL))
|
||||||
.setupStandardConfiguration()
|
.setupStandardConfiguration()
|
||||||
|
|||||||
@ -31,6 +31,9 @@ import net.minecraft.util.Vec3;
|
|||||||
|
|
||||||
public class XFactoryRocket {
|
public class XFactoryRocket {
|
||||||
|
|
||||||
|
public static BulletConfig rocket_he; //TODO: just make this a fucking array you moron
|
||||||
|
public static BulletConfig rocket_heat; //TODO: so the amount of lines increases linearly instead of exponentially
|
||||||
|
|
||||||
public static BulletConfig rocket_rpzb_he;
|
public static BulletConfig rocket_rpzb_he;
|
||||||
public static BulletConfig rocket_rpzb_heat;
|
public static BulletConfig rocket_rpzb_heat;
|
||||||
public static BulletConfig rocket_qd_he;
|
public static BulletConfig rocket_qd_he;
|
||||||
@ -38,16 +41,16 @@ public class XFactoryRocket {
|
|||||||
public static BulletConfig rocket_ml_he;
|
public static BulletConfig rocket_ml_he;
|
||||||
public static BulletConfig rocket_ml_heat;
|
public static BulletConfig rocket_ml_heat;
|
||||||
|
|
||||||
|
// FLYING
|
||||||
public static Consumer<EntityBulletBaseMK4> LAMBDA_STANDARD_ACCELERATE = (bullet) -> {
|
public static Consumer<EntityBulletBaseMK4> LAMBDA_STANDARD_ACCELERATE = (bullet) -> {
|
||||||
if(bullet.accel < 7) bullet.accel += 0.4D;
|
if(bullet.accel < 7) bullet.accel += 0.4D;
|
||||||
};
|
};
|
||||||
public static Consumer<EntityBulletBaseMK4> LAMBDA_STEERING_ACCELERATE = (bullet) -> {
|
public static Consumer<EntityBulletBaseMK4> LAMBDA_STEERING_ACCELERATE = (bullet) -> {
|
||||||
if(bullet.accel < 4) bullet.accel += 0.4D;
|
if(bullet.accel < 4) bullet.accel += 0.4D;
|
||||||
|
|
||||||
if(bullet.getThrower() == null || !(bullet.getThrower() instanceof EntityPlayer)) return;
|
if(bullet.getThrower() == null || !(bullet.getThrower() instanceof EntityPlayer)) return;
|
||||||
|
|
||||||
EntityPlayer player = (EntityPlayer) bullet.getThrower();
|
EntityPlayer player = (EntityPlayer) bullet.getThrower();
|
||||||
if(Vec3.createVectorHelper(bullet.posX - player.posX, bullet.posY - player.posY, bullet.posZ - player.posZ).lengthVector() > 100) return;
|
if(Vec3.createVectorHelper(bullet.posX - player.posX, bullet.posY - player.posY, bullet.posZ - player.posZ).lengthVector() > 100) return;
|
||||||
|
|
||||||
if(player.getHeldItem() == null || !(player.getHeldItem().getItem() instanceof ItemGunBaseNT) || !ItemGunBaseNT.getIsAiming(player.getHeldItem())) return;
|
if(player.getHeldItem() == null || !(player.getHeldItem().getItem() instanceof ItemGunBaseNT) || !ItemGunBaseNT.getIsAiming(player.getHeldItem())) return;
|
||||||
|
|
||||||
MovingObjectPosition mop = Library.rayTrace(player, 200, 1);
|
MovingObjectPosition mop = Library.rayTrace(player, 200, 1);
|
||||||
@ -58,34 +61,42 @@ public class XFactoryRocket {
|
|||||||
vec = vec.normalize();
|
vec = vec.normalize();
|
||||||
|
|
||||||
double speed = Vec3.createVectorHelper(bullet.motionX, bullet.motionY, bullet.motionZ).lengthVector();
|
double speed = Vec3.createVectorHelper(bullet.motionX, bullet.motionY, bullet.motionZ).lengthVector();
|
||||||
|
|
||||||
bullet.motionX = vec.xCoord * speed;
|
bullet.motionX = vec.xCoord * speed;
|
||||||
bullet.motionY = vec.yCoord * speed;
|
bullet.motionY = vec.yCoord * speed;
|
||||||
bullet.motionZ = vec.zCoord * speed;
|
bullet.motionZ = vec.zCoord * speed;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// IMPACT
|
||||||
public static BiConsumer<EntityBulletBaseMK4, MovingObjectPosition> LAMBDA_STANDARD_EXPLODE = (bullet, mop) -> {
|
public static BiConsumer<EntityBulletBaseMK4, MovingObjectPosition> LAMBDA_STANDARD_EXPLODE = (bullet, mop) -> {
|
||||||
if(mop.typeOfHit == mop.typeOfHit.ENTITY && bullet.ticksExisted < 3) return;
|
if(mop.typeOfHit == mop.typeOfHit.ENTITY && bullet.ticksExisted < 3) return;
|
||||||
Lego.standardExplode(bullet, mop, 5F); bullet.setDead();
|
Lego.standardExplode(bullet, mop, 5F); bullet.setDead();
|
||||||
};
|
};
|
||||||
public static BiConsumer<EntityBulletBaseMK4, MovingObjectPosition> LAMBDA_STANDARD_EXPLODE_HEAT = (bullet, mop) -> {
|
public static BiConsumer<EntityBulletBaseMK4, MovingObjectPosition> LAMBDA_STANDARD_EXPLODE_HEAT = (bullet, mop) -> {
|
||||||
if(mop.typeOfHit == mop.typeOfHit.ENTITY && bullet.ticksExisted < 3) return;
|
if(mop.typeOfHit == mop.typeOfHit.ENTITY && bullet.ticksExisted < 3) return;
|
||||||
Lego.standardExplode(bullet, mop, 3F, 0.25F); bullet.setDead();
|
Lego.standardExplode(bullet, mop, 2.5F); bullet.setDead();
|
||||||
};
|
};
|
||||||
|
|
||||||
|
public static BulletConfig makeRPZB(BulletConfig original) { return original.clone(); }
|
||||||
|
public static BulletConfig makeQD(BulletConfig original) { return original.clone().setLife(400).setOnUpdate(LAMBDA_STEERING_ACCELERATE); }
|
||||||
|
public static BulletConfig makeML(BulletConfig original) { return original.clone(); }
|
||||||
|
|
||||||
|
//this is starting to get messy but we need to put this crap *somewhere* and fragmenting it into a billion classes with two methods each just isn't gonna help
|
||||||
public static void init() {
|
public static void init() {
|
||||||
|
|
||||||
rocket_rpzb_he = new BulletConfig().setItem(EnumAmmo.ROCKET_HE).setLife(300).setSelfDamageDelay(10).setVel(0F).setGrav(0D)
|
rocket_he = new BulletConfig().setItem(EnumAmmo.ROCKET_HE).setLife(300).setSelfDamageDelay(10).setVel(0F).setGrav(0D)
|
||||||
.setOnImpact(LAMBDA_STANDARD_EXPLODE).setOnEntityHit(null).setOnRicochet(null).setOnUpdate(LAMBDA_STANDARD_ACCELERATE);
|
.setOnImpact(LAMBDA_STANDARD_EXPLODE).setOnEntityHit(null).setOnRicochet(null).setOnUpdate(LAMBDA_STANDARD_ACCELERATE);
|
||||||
rocket_rpzb_heat = new BulletConfig().setItem(EnumAmmo.ROCKET_HEAT).setLife(300).setDamage(1.5F).setSelfDamageDelay(10).setVel(0F).setGrav(0D)
|
rocket_heat = new BulletConfig().setItem(EnumAmmo.ROCKET_HEAT).setLife(300).setDamage(1.5F).setSelfDamageDelay(10).setVel(0F).setGrav(0D)
|
||||||
.setOnImpact(LAMBDA_STANDARD_EXPLODE_HEAT).setOnEntityHit(null).setOnRicochet(null).setOnUpdate(LAMBDA_STANDARD_ACCELERATE);
|
|
||||||
rocket_qd_he = new BulletConfig().setItem(EnumAmmo.ROCKET_HE).setLife(400).setSelfDamageDelay(10).setVel(0F).setGrav(0D)
|
|
||||||
.setOnImpact(LAMBDA_STANDARD_EXPLODE).setOnEntityHit(null).setOnRicochet(null).setOnUpdate(LAMBDA_STEERING_ACCELERATE);
|
|
||||||
rocket_qd_heat = new BulletConfig().setItem(EnumAmmo.ROCKET_HEAT).setLife(400).setDamage(1.5F).setSelfDamageDelay(10).setVel(0F).setGrav(0D)
|
|
||||||
.setOnImpact(LAMBDA_STANDARD_EXPLODE_HEAT).setOnEntityHit(null).setOnRicochet(null).setOnUpdate(LAMBDA_STEERING_ACCELERATE);
|
|
||||||
rocket_ml_he = new BulletConfig().setItem(EnumAmmo.ROCKET_HE).setLife(300).setSelfDamageDelay(10).setVel(0F).setGrav(0D)
|
|
||||||
.setOnImpact(LAMBDA_STANDARD_EXPLODE).setOnEntityHit(null).setOnRicochet(null).setOnUpdate(LAMBDA_STANDARD_ACCELERATE);
|
|
||||||
rocket_ml_heat = new BulletConfig().setItem(EnumAmmo.ROCKET_HEAT).setLife(300).setDamage(1.5F).setSelfDamageDelay(10).setVel(0F).setGrav(0D)
|
|
||||||
.setOnImpact(LAMBDA_STANDARD_EXPLODE_HEAT).setOnEntityHit(null).setOnRicochet(null).setOnUpdate(LAMBDA_STANDARD_ACCELERATE);
|
.setOnImpact(LAMBDA_STANDARD_EXPLODE_HEAT).setOnEntityHit(null).setOnRicochet(null).setOnUpdate(LAMBDA_STANDARD_ACCELERATE);
|
||||||
|
|
||||||
|
//not a great solution but it makes the entire ordeal a lot more bearable
|
||||||
|
rocket_rpzb_he = makeRPZB(rocket_he);
|
||||||
|
rocket_rpzb_heat = makeRPZB(rocket_heat);
|
||||||
|
|
||||||
|
rocket_qd_he = makeQD(rocket_he);
|
||||||
|
rocket_qd_heat = makeQD(rocket_heat);
|
||||||
|
|
||||||
|
rocket_ml_he = makeML(rocket_he);
|
||||||
|
rocket_ml_heat = makeML(rocket_heat);
|
||||||
|
|
||||||
ModItems.gun_panzerschreck = new ItemGunBaseNT(WeaponQuality.A_SIDE, new GunConfig()
|
ModItems.gun_panzerschreck = new ItemGunBaseNT(WeaponQuality.A_SIDE, new GunConfig()
|
||||||
.dura(300).draw(7).inspect(40).crosshair(Crosshair.L_CIRCUMFLEX)
|
.dura(300).draw(7).inspect(40).crosshair(Crosshair.L_CIRCUMFLEX)
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 14 KiB After Width: | Height: | Size: 14 KiB |
|
After Width: | Height: | Size: 302 B |
|
Before Width: | Height: | Size: 364 B After Width: | Height: | Size: 364 B |
|
After Width: | Height: | Size: 340 B |
|
After Width: | Height: | Size: 336 B |
|
After Width: | Height: | Size: 372 B |
|
After Width: | Height: | Size: 332 B |
|
After Width: | Height: | Size: 329 B |
|
After Width: | Height: | Size: 343 B |