Basis of casing system

All untested and should be considered still in-development. Just commiting for backup.
This commit is contained in:
UFFR 2022-11-18 16:54:01 -05:00
parent e75e328653
commit 51e392011e
No known key found for this signature in database
GPG Key ID: 1CDEFC5119049FC5
11 changed files with 1473 additions and 874 deletions

View File

@ -72,7 +72,6 @@ public class WeaponRecipes {
CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_quadro, 1), new Object[] { "SSS", "SSS", "CM ", 'S', ModItems.hull_small_steel, 'C', ModItems.circuit_targeting_tier3, 'M', ModItems.mechanism_launcher_2 });
CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_hk69, 1), new Object[] { "SSI", " MB", 'S', ModItems.hull_small_steel, 'I', FE.ingot(), 'M', ModItems.mechanism_launcher_1, 'B', ModItems.bolt_tungsten });
CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_stinger, 1), new Object[] { "SSW", "CMW", 'S', STEEL.plate(), 'W', TI.plate(), 'C', ModItems.circuit_red_copper, 'M', ModItems.mechanism_launcher_2 });
CraftingManager.addRecipeAuto(new ItemStack(ModItems.ammo_stinger_rocket, 4), new Object[] { "SS ", "STI", " IR", 'S', STEEL.plate(), 'T', Item.getItemFromBlock(Blocks.tnt), 'I', AL.plate(), 'R', REDSTONE.dust() });
CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_revolver, 1), new Object[] { "SSM", " RW", 'S', STEEL.plate(), 'W', KEY_PLANKS, 'R', ModItems.wire_aluminium, 'M', ModItems.mechanism_revolver_1 });
CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_revolver_saturnite, 1), new Object[] { "SSM", " RW", 'S', BIGMT.plate(), 'W', KEY_PLANKS, 'R', ModItems.wire_tungsten, 'M', ModItems.mechanism_revolver_2 });
CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_revolver_iron, 1), new Object[] { "SSM", " RW", 'S', FE.plate(), 'W', KEY_PLANKS, 'R', ModItems.wire_aluminium, 'M', ModItems.mechanism_revolver_1 });
@ -215,8 +214,8 @@ public class WeaponRecipes {
CraftingManager.addRecipeAuto(new ItemStack(ModItems.ammo_folly_du, 1), new Object[] { " B ", "EEE", " S ", 'B', ModItems.folly_bullet_du, 'E', ModBlocks.det_charge, 'S', ModItems.folly_shell });
//Rockets
CraftingManager.addRecipeAuto(new ItemStack(ModItems.ammo_rocket, 1), new Object[] { " T ", "GCG", " P ", 'T', Blocks.tnt, 'G', ModItems.rocket_fuel, 'C', ModItems.casing_50, 'P', ModItems.primer_50 });// I got tired of changing *all* of them, the stock one is always the first one anyway
CraftingManager.addRecipeAuto(new ItemStack(ModItems.ammo_rocket, 2), new Object[] { " T ", "GCG", " P ", 'T', ANY_PLASTICEXPLOSIVE.ingot(), 'G', ModItems.rocket_fuel, 'C', ModItems.casing_50, 'P', ModItems.primer_50 });
CraftingManager.addRecipeAuto(new ItemStack(ModItems.ammo_rocket, 1), new Object[] { " T ", "GCG", " P ", 'T', ModItems.ball_dynamite, 'G', ModItems.rocket_fuel, 'C', ModItems.hull_small_aluminium, 'P', ModItems.primer_50 });// I got tired of changing *all* of them, the stock one is always the first one anyway
CraftingManager.addRecipeAuto(new ItemStack(ModItems.ammo_rocket, 2), new Object[] { " T ", "GCG", " P ", 'T', ANY_PLASTICEXPLOSIVE.ingot(), 'G', ModItems.rocket_fuel, 'C', ModItems.hull_small_aluminium, 'P', ModItems.primer_50 });
CraftingManager.addRecipeAuto(ModItems.ammo_rocket.stackFromEnum(AmmoRocket.HE), new Object[] { "G", "R", 'G', ANY_PLASTICEXPLOSIVE.ingot(), 'R', ModItems.ammo_rocket });
CraftingManager.addRecipeAuto(ModItems.ammo_rocket.stackFromEnum(AmmoRocket.INCENDIARY), new Object[] { "G", "R", 'G', P_RED.dust(), 'R', ModItems.ammo_rocket });
CraftingManager.addRecipeAuto(ModItems.ammo_rocket.stackFromEnum(AmmoRocket.PHOSPHORUS), new Object[] { "G", "R", 'G', P_WHITE.ingot(), 'R', ModItems.ammo_rocket });

View File

@ -1,11 +1,14 @@
package com.hbm.handler;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.EnumMap;
import java.util.List;
import java.util.Map;
import java.util.Optional;
import com.hbm.lib.HbmCollection.EnumGunManufacturer;
import com.hbm.main.MainRegistry;
import com.hbm.particle.SpentCasingConfig;
import com.hbm.render.anim.BusAnimation;
import com.hbm.render.anim.HbmAnimations.AnimType;
import com.hbm.render.util.RenderScreenOverlay.Crosshair;
@ -32,7 +35,7 @@ public class GunConfiguration implements Cloneable {
public int durability;
//animations!
public HashMap<AnimType, BusAnimation> animations = new HashMap<AnimType, BusAnimation>();
public final Map<AnimType, BusAnimation> animations = new EnumMap<>(AnimType.class);
//whether ot not to disable crosshais when sneaking
public boolean hasSights;
@ -90,6 +93,9 @@ public class GunConfiguration implements Cloneable {
//crosshair
public Crosshair crosshair;
/**Controller for spent casings. If {@code Optional.empty()} it will not eject casings.**/
public Optional<SpentCasingConfig> casingConfig = Optional.empty();
public static final int MODE_NORMAL = 0;
public static final int MODE_RELEASE = 1;
public static final int MODE_BOTH = 1;

View File

@ -1,7 +1,6 @@
package com.hbm.handler.guncfg;
import java.util.ArrayList;
import java.util.HashMap;
import com.hbm.entity.projectile.EntityBulletBase;
import com.hbm.handler.BulletConfigSyncingUtil;
@ -133,7 +132,7 @@ public class Gun556mmFactory {
public static GunConfiguration getMLRConfig()
{
GunConfiguration config = new GunConfiguration();
final GunConfiguration config = new GunConfiguration();
config.rateOfFire = 2;
config.roundsPerCycle = 1;
@ -156,7 +155,6 @@ public class Gun556mmFactory {
config.config.addAll(HbmCollection.NATO);
config.config.addAll(HbmCollection.NATOFlechette);
config.animations = new HashMap<>();
config.animations.put(AnimType.CYCLE, new BusAnimation()
.addBus("RECOIL", new BusAnimationSequence()
.addKeyframe(new BusAnimationKeyframe(-0.35, 0, 0, 30))
@ -167,7 +165,7 @@ public class Gun556mmFactory {
public static GunConfiguration getG36Config()
{
GunConfiguration config = new GunConfiguration();
final GunConfiguration config = new GunConfiguration();
config.rateOfFire = 3;
config.roundsPerCycle = 1;
@ -188,7 +186,6 @@ public class Gun556mmFactory {
config.config.addAll(HbmCollection.NATO);
config.animations = new HashMap<>();
config.animations.put(AnimType.CYCLE, new BusAnimation()
.addBus("RECOIL", new BusAnimationSequence()
.addKeyframe(new BusAnimationKeyframe(-0.35, 0, 0, 30))

View File

@ -130,7 +130,7 @@ public class ClientProxy extends ServerProxy {
//SoundUtil.addSoundCategory("ntmMachines");
}
private void registerClientEventHandler(Object handler) {
private static void registerClientEventHandler(Object handler) {
MinecraftForge.EVENT_BUS.register(handler);
FMLCommonHandler.instance().bus().register(handler);
}
@ -343,7 +343,7 @@ public class ClientProxy extends ServerProxy {
MinecraftForgeClient.registerItemRenderer(entry.getKey(), entry.getValue());
//this bit registers an item renderer for every existing tile entity renderer that implements IItemRendererProvider
Iterator iterator = TileEntityRendererDispatcher.instance.mapSpecialRenderers.values().iterator();
Iterator<?> iterator = TileEntityRendererDispatcher.instance.mapSpecialRenderers.values().iterator();
while(iterator.hasNext()) {
Object renderer = iterator.next();
if(renderer instanceof IItemRendererProvider) {
@ -783,10 +783,10 @@ public class ClientProxy extends ServerProxy {
MissilePart.registerAllParts();
Iterator it = MissilePart.parts.entrySet().iterator();
Iterator<?> it = MissilePart.parts.entrySet().iterator();
while(it.hasNext()) {
Map.Entry pair = (Map.Entry) it.next();
Map.Entry<?, ?> pair = (Map.Entry<?, ?>) it.next();
MissilePart part = (MissilePart) pair.getValue();
MinecraftForgeClient.registerItemRenderer(part.part, new ItemRenderMissilePart(part));
}
@ -828,6 +828,8 @@ public class ClientProxy extends ServerProxy {
ParticleRadiationFog fog = new ParticleRadiationFog(man, world, x, y, z);
Minecraft.getMinecraft().effectRenderer.addEffect(fog);
break;
default:
break;
}
}
@ -869,6 +871,7 @@ public class ClientProxy extends ServerProxy {
}
//mk3, only use this one
@Override
public void effectNT(NBTTagCompound data) {
World world = Minecraft.getMinecraft().theWorld;
@ -885,12 +888,15 @@ public class ClientProxy extends ServerProxy {
double y = data.getDouble("posY");
double z = data.getDouble("posZ");
if("smoke".equals(type)) {
switch (type)
{
case "smoke": {
String mode = data.getString("mode");
int count = Math.max(1, data.getInteger("count"));
if("cloud".equals(mode)) {
switch (data.getString("mode"))
{
case "cloud": {
for(int i = 0; i < count; i++) {
ParticleExSmoke fx = new ParticleExSmoke(man, world, x, y, z);
@ -900,9 +906,10 @@ public class ClientProxy extends ServerProxy {
if(rand.nextBoolean()) fx.motionY = Math.abs(fx.motionY);
Minecraft.getMinecraft().effectRenderer.addEffect(fx);
}
break;
}
if("radial".equals(mode)) {
case "radial": {
for(int i = 0; i < count; i++) {
ParticleExSmoke fx = new ParticleExSmoke(man, world, x, y, z);
@ -911,9 +918,10 @@ public class ClientProxy extends ServerProxy {
fx.motionZ = rand.nextGaussian() * (1 + (count / 50));
Minecraft.getMinecraft().effectRenderer.addEffect(fx);
}
break;
}
if("radialDigamma".equals(mode)) {
case "radialDigamma": {
Vec3 vec = Vec3.createVectorHelper(2, 0, 0);
vec.rotateAroundY(rand.nextFloat() * (float)Math.PI * 2F);
@ -925,11 +933,12 @@ public class ClientProxy extends ServerProxy {
fx.motionZ = vec.zCoord;
Minecraft.getMinecraft().effectRenderer.addEffect(fx);
vec.rotateAroundY((float)Math.PI * 2F / (float)count);
vec.rotateAroundY((float)Math.PI * 2F / count);
}
break;
}
if("shock".equals(mode)) {
case "shock": {
double strength = data.getDouble("strength");
@ -943,11 +952,12 @@ public class ClientProxy extends ServerProxy {
fx.motionZ = vec.zCoord;
Minecraft.getMinecraft().effectRenderer.addEffect(fx);
vec.rotateAroundY((float)Math.PI * 2F / (float)count);
vec.rotateAroundY((float)Math.PI * 2F / count);
}
break;
}
if("shockRand".equals(mode)) {
case "shockRand": {
double strength = data.getDouble("strength");
@ -965,9 +975,10 @@ public class ClientProxy extends ServerProxy {
vec.rotateAroundY(360 / count);
}
break;
}
if("wave".equals(mode)) {
case "wave": {
double strength = data.getDouble("range");
@ -986,14 +997,18 @@ public class ClientProxy extends ServerProxy {
vec.rotateAroundY(360 / count);
}
break;
}
default: break;
}
break;
}
if("exhaust".equals(type)) {
case "exhaust": {
String mode = data.getString("mode");
if("soyuz".equals(mode)) {
switch (data.getString("mode"))
{
case "soyuz": {
if(Vec3.createVectorHelper(player.posX - x, player.posY - y, player.posZ - z).lengthVector() > 350)
return;
@ -1007,9 +1022,10 @@ public class ClientProxy extends ServerProxy {
fx.motionY = -0.75 + rand.nextDouble() * 0.5;
Minecraft.getMinecraft().effectRenderer.addEffect(fx);
}
break;
}
if("meteor".equals(mode)) {
case "meteor": {
if(Vec3.createVectorHelper(player.posX - x, player.posY - y, player.posZ - z).lengthVector() > 350)
return;
@ -1022,10 +1038,13 @@ public class ClientProxy extends ServerProxy {
ParticleRocketFlame fx = new ParticleRocketFlame(man, world, x + rand.nextGaussian() * width, y + rand.nextGaussian() * width, z + rand.nextGaussian() * width);
Minecraft.getMinecraft().effectRenderer.addEffect(fx);
}
break;
}
default: break;
}
}
if("fireworks".equals(type)) {
case "fireworks": {
int color = data.getInteger("color");
char c = (char)data.getInteger("char");
@ -1040,9 +1059,10 @@ public class ClientProxy extends ServerProxy {
blast.setColour(color);
Minecraft.getMinecraft().effectRenderer.addEffect(blast);
}
break;
}
if("vanillaburst".equals(type)) {
case "vanillaburst": {
double motion = data.getDouble("motion");
@ -1054,42 +1074,36 @@ public class ClientProxy extends ServerProxy {
EntityFX fx = null;
if("flame".equals(data.getString("mode"))) {
fx = new EntityFlameFX(world, x, y, z, mX, mY, mZ);
}
switch (data.getString("mode"))
{
case "flame": fx = new EntityFlameFX(world, x, y, z, mX, mY, mZ); break;
case "cloud": fx = new net.minecraft.client.particle.EntityCloudFX(world, x, y, z, mX, mY, mZ); break;
if("cloud".equals(data.getString("mode"))) {
fx = new net.minecraft.client.particle.EntityCloudFX(world, x, y, z, mX, mY, mZ);
}
if("reddust".equals(data.getString("mode"))) {
case "reddust":
fx = new net.minecraft.client.particle.EntityReddustFX(world, x, y, z, 0.0F, 0.0F, 0.0F);
fx.motionX = mX;
fx.motionY = mY;
fx.motionZ = mZ;
}
if("bluedust".equals(data.getString("mode"))) {
fx = new net.minecraft.client.particle.EntityReddustFX(world, x, y, z, 0.01F, 0.01F, 1F);
}
if("greendust".equals(data.getString("mode"))) {
fx = new net.minecraft.client.particle.EntityReddustFX(world, x, y, z, 0.01F, 0.5F, 0.1F);
}
if("blockdust".equals(data.getString("mode"))) {
break;
case "bluedust": fx = new net.minecraft.client.particle.EntityReddustFX(world, x, y, z, 0.01F, 0.01F, 1F); break;
case "greendust": fx = new net.minecraft.client.particle.EntityReddustFX(world, x, y, z, 0.01F, 0.5F, 0.1F); break;
case "blockdust":
Block b = Block.getBlockById(data.getInteger("block"));
fx = new net.minecraft.client.particle.EntityBlockDustFX(world, x, y, z, mX, mY + 0.2, mZ, b, 0);
ReflectionHelper.setPrivateValue(EntityFX.class, fx, 50 + rand.nextInt(50), "particleMaxAge", "field_70547_e");
break;
default: break;
}
if(fx != null)
Minecraft.getMinecraft().effectRenderer.addEffect(fx);
}
break;
}
if("vanillaExt".equals(type)) {
case "vanillaExt": {
double mX = data.getDouble("mX");
double mY = data.getDouble("mY");
@ -1097,15 +1111,11 @@ public class ClientProxy extends ServerProxy {
EntityFX fx = null;
if("flame".equals(data.getString("mode"))) {
fx = new EntityFlameFX(world, x, y, z, mX, mY, mZ);
}
if("smoke".equals(data.getString("mode"))) {
fx = new net.minecraft.client.particle.EntitySmokeFX(world, x, y, z, mX, mY, mZ);
}
if("volcano".equals(data.getString("mode"))) {
switch (data.getString("mode"))
{
case "flame": fx = new EntityFlameFX(world, x, y, z, mX, mY, mZ); break;
case "smoke": fx = new net.minecraft.client.particle.EntitySmokeFX(world, x, y, z, mX, mY, mZ); break;
case "volcano":
fx = new net.minecraft.client.particle.EntitySmokeFX(world, x, y, z, mX, mY, mZ);
float scale = 100;
ReflectionHelper.setPrivateValue(net.minecraft.client.particle.EntitySmokeFX.class, (net.minecraft.client.particle.EntitySmokeFX)fx, scale, "smokeParticleScale", "field_70587_a");
@ -1114,9 +1124,8 @@ public class ClientProxy extends ServerProxy {
fx.motionY = 2.5 + rand.nextDouble();
fx.motionX = rand.nextGaussian() * 0.2;
fx.motionZ = rand.nextGaussian() * 0.2;
}
if("cloud".equals(data.getString("mode"))) {
break;
case "cloud":
fx = new net.minecraft.client.particle.EntityCloudFX(world, x, y, z, mX, mY, mZ);
if(data.hasKey("r")) {
@ -1127,23 +1136,11 @@ public class ClientProxy extends ServerProxy {
fx.motionY = 0;
fx.motionZ = 0;
}
}
if("reddust".equals(data.getString("mode"))) {
fx = new net.minecraft.client.particle.EntityReddustFX(world, x, y, z, (float)mX, (float)mY, (float)mZ);
}
if("bluedust".equals(data.getString("mode"))) {
fx = new net.minecraft.client.particle.EntityReddustFX(world, x, y, z, 0.01F, 0.01F, 1F);
}
if("greendust".equals(data.getString("mode"))) {
fx = new net.minecraft.client.particle.EntityReddustFX(world, x, y, z, 0.01F, 0.5F, 0.1F);
}
if("largeexplode".equals(data.getString("mode"))) {
break;
case "reddust": fx = new net.minecraft.client.particle.EntityReddustFX(world, x, y, z, (float)mX, (float)mY, (float)mZ); break;
case "bluedust": fx = new net.minecraft.client.particle.EntityReddustFX(world, x, y, z, 0.01F, 0.01F, 1F); break;
case "greendust": fx = new net.minecraft.client.particle.EntityReddustFX(world, x, y, z, 0.01F, 0.5F, 0.1F); break;
case "largeexplode":
fx = new net.minecraft.client.particle.EntityLargeExplodeFX(man, world, x, y, z, data.getFloat("size"), 0.0F, 0.0F);
float r = 1.0F - rand.nextFloat() * 0.2F;
fx.setRBGColorF(1F * r, 0.9F * r, 0.5F * r);
@ -1155,35 +1152,33 @@ public class ClientProxy extends ServerProxy {
sec.multipleParticleScaleBy(i + 1);
Minecraft.getMinecraft().effectRenderer.addEffect(sec);
}
}
if("townaura".equals(data.getString("mode"))) {
break;
case "townaura":
fx = new EntityAuraFX(world, x, y, z, 0, 0, 0);
float color = 0.5F + rand.nextFloat() * 0.5F;
fx.setRBGColorF(0.8F * color, 0.9F * color, 1.0F * color);
fx.setVelocity(mX, mY, mZ);
}
if("blockdust".equals(data.getString("mode"))) {
break;
case "blockdust":
{
Block b = Block.getBlockById(data.getInteger("block"));
fx = new net.minecraft.client.particle.EntityBlockDustFX(world, x, y, z, mX, mY + 0.2, mZ, b, 0);
ReflectionHelper.setPrivateValue(EntityFX.class, fx, 10 + rand.nextInt(20), "particleMaxAge", "field_70547_e");
break;
}
if("colordust".equals(data.getString("mode"))) {
case "colordust":
{
Block b = Blocks.wool;
fx = new net.minecraft.client.particle.EntityBlockDustFX(world, x, y, z, mX, mY + 0.2, mZ, b, 0);
fx.setRBGColorF(data.getFloat("r"), data.getFloat("g"), data.getFloat("b"));
ReflectionHelper.setPrivateValue(EntityFX.class, fx, 10 + rand.nextInt(20), "particleMaxAge", "field_70547_e");
break;
}
}
if(fx != null) {
if(data.getBoolean("noclip")) {
fx.noClip = true;
}
fx.noClip = data.getBoolean("noclip");
if(data.getInteger("overrideAge") > 0) {
ReflectionHelper.setPrivateValue(EntityFX.class, fx, data.getInteger("overrideAge"), "particleMaxAge", "field_70547_e");
@ -1191,17 +1186,19 @@ public class ClientProxy extends ServerProxy {
Minecraft.getMinecraft().effectRenderer.addEffect(fx);
}
break;
}
if("vanilla".equals(type)) {
case "vanilla": {
double mX = data.getDouble("mX");
double mY = data.getDouble("mY");
double mZ = data.getDouble("mZ");
world.spawnParticle(data.getString("mode"), x, y, z, mX, mY, mZ);
break;
}
if("jetpack".equals(type)) {
case "jetpack": {
if(particleSetting == 2)
return;
@ -1280,9 +1277,10 @@ public class ClientProxy extends ServerProxy {
Minecraft.getMinecraft().effectRenderer.addEffect(new net.minecraft.client.particle.EntitySmokeFX(world, ix - ox, iy, iz - oz, mX3, mY3, mZ3));
}
}
break;
}
if("bnuuy".equals(type)) {
case "bnuuy": {
if(particleSetting == 2)
return;
@ -1317,13 +1315,14 @@ public class ClientProxy extends ServerProxy {
for(int i = 0; i < 2; i++) {
net.minecraft.client.particle.EntitySmokeFX fx = new net.minecraft.client.particle.EntitySmokeFX(world, ix + ox * (i == 0 ? -1 : 1), iy, iz + oz * (i == 0 ? -1 : 1), mX, 0, mZ);
float scale = 0.5F;
ReflectionHelper.setPrivateValue(net.minecraft.client.particle.EntitySmokeFX.class, (net.minecraft.client.particle.EntitySmokeFX)fx, scale, "smokeParticleScale", "field_70587_a");
ReflectionHelper.setPrivateValue(net.minecraft.client.particle.EntitySmokeFX.class, fx, scale, "smokeParticleScale", "field_70587_a");
Minecraft.getMinecraft().effectRenderer.addEffect(fx);
}
}
break;
}
if("jetpack_bj".equals(type)) {
case "jetpack_bj": {
if(particleSetting == 2)
return;
@ -1375,9 +1374,10 @@ public class ClientProxy extends ServerProxy {
Minecraft.getMinecraft().effectRenderer.addEffect(dust1);
Minecraft.getMinecraft().effectRenderer.addEffect(dust2);
}
break;
}
if("jetpack_dns".equals(type)) {
case "jetpack_dns": {
if(particleSetting == 2)
return;
@ -1427,9 +1427,10 @@ public class ClientProxy extends ServerProxy {
Minecraft.getMinecraft().effectRenderer.addEffect(dust1);
Minecraft.getMinecraft().effectRenderer.addEffect(dust2);
}
break;
}
if("muke".equals(type)) {
case "muke": {
ParticleMukeWave wave = new ParticleMukeWave(man, world, x, y, z);
ParticleMukeFlash flash = new ParticleMukeFlash(man, world, x, y, z, data.getBoolean("balefire"));
@ -1449,9 +1450,10 @@ public class ClientProxy extends ServerProxy {
player.maxHurtTime = 15;
}
player.attackedAtYaw = 0F;
break;
}
if("tinytot".equals(type)) {
case "tinytot": {
ParticleMukeWave wave = new ParticleMukeWave(man, world, x, y, z);
Minecraft.getMinecraft().effectRenderer.addEffect(wave);
@ -1488,39 +1490,43 @@ public class ClientProxy extends ServerProxy {
player.attackedAtYaw = 0F;
}
if("ufo".equals(type)) {
case "ufo": {
double motion = data.getDouble("motion");
ParticleMukeCloud cloud = new ParticleMukeCloud(man, world, x, y, z, rand.nextGaussian() * motion, 0, rand.nextGaussian() * motion);
Minecraft.getMinecraft().effectRenderer.addEffect(cloud);
break;
}
if("haze".equals(type)) {
case "haze": {
ParticleHaze fog = new ParticleHaze(man, world, x, y, z);
Minecraft.getMinecraft().effectRenderer.addEffect(fog);
break;
}
if("plasmablast".equals(type)) {
case "plasmablast": {
ParticlePlasmaBlast cloud = new ParticlePlasmaBlast(man, world, x, y, z, data.getFloat("r"), data.getFloat("g"), data.getFloat("b"), data.getFloat("pitch"), data.getFloat("yaw"));
cloud.setScale(data.getFloat("scale"));
Minecraft.getMinecraft().effectRenderer.addEffect(cloud);
break;
}
if("justTilt".equals(type)) {
case "justTilt": {
player.hurtTime = player.maxHurtTime = data.getInteger("time");
player.attackedAtYaw = 0F;
break;
}
if("properJolt".equals(type)) {
case "properJolt": {
player.hurtTime = data.getInteger("time");
player.maxHurtTime = data.getInteger("maxTime");
player.attackedAtYaw = 0F;
break;
}
if("sweat".equals(type)) {
case "sweat": {
Entity e = world.getEntityByID(data.getInteger("entity"));
Block b = Block.getBlockById(data.getInteger("block"));
@ -1541,9 +1547,10 @@ public class ClientProxy extends ServerProxy {
Minecraft.getMinecraft().effectRenderer.addEffect(fx);
}
}
break;
}
if("vomit".equals(type)) {
case "vomit": {
Entity e = world.getEntityByID(data.getInteger("entity"));
int count = data.getInteger("count") / (particleSetting + 1);
@ -1577,9 +1584,10 @@ public class ClientProxy extends ServerProxy {
}
}
}
break;
}
if("radiation".equals(type)) {
case "radiation": {
for(int i = 0; i < data.getInteger("count"); i++) {
@ -1593,36 +1601,23 @@ public class ClientProxy extends ServerProxy {
flash.setVelocity(rand.nextGaussian(), rand.nextGaussian(), rand.nextGaussian());
Minecraft.getMinecraft().effectRenderer.addEffect(flash);
}
break;
}
if("schrabfog".equals(type)) {
case "schrabfog": {
EntityAuraFX flash = new EntityAuraFX(world, x, y, z, 0, 0, 0);
flash.setRBGColorF(0F, 1F, 1F);
Minecraft.getMinecraft().effectRenderer.addEffect(flash);
break;
}
if("hadron".equals(type)) {
case "hadron": Minecraft.getMinecraft().effectRenderer.addEffect(new ParticleHadron(man, world, x, y, z)); break;
case "rift": Minecraft.getMinecraft().effectRenderer.addEffect(new ParticleRift(man, world, x, y, z)); break;
case "rbmkflame": Minecraft.getMinecraft().effectRenderer.addEffect(new ParticleRBMKFlame(man, world, x, y, z, data.getInteger("maxAge"))); break;
case "rbmkmush": Minecraft.getMinecraft().effectRenderer.addEffect(new ParticleRBMKMush(man, world, x, y, z, data.getFloat("scale"))); break;
Minecraft.getMinecraft().effectRenderer.addEffect(new ParticleHadron(man, world, x, y, z));
}
if("rift".equals(type)) {
Minecraft.getMinecraft().effectRenderer.addEffect(new ParticleRift(man, world, x, y, z));
}
if("rbmkflame".equals(type)) {
int maxAge = data.getInteger("maxAge");
Minecraft.getMinecraft().effectRenderer.addEffect(new ParticleRBMKFlame(man, world, x, y, z, maxAge));
}
if("rbmkmush".equals(type)) {
float scale = data.getFloat("scale");
Minecraft.getMinecraft().effectRenderer.addEffect(new ParticleRBMKMush(man, world, x, y, z, scale));
}
if("tower".equals(type)) {
case "tower": {
if(particleSetting == 0 || (particleSetting == 1 && rand.nextBoolean())) {
ParticleCoolingTower fx = new ParticleCoolingTower(man, world, x, y, z);
fx.setLift(data.getFloat("lift"));
@ -1637,17 +1632,22 @@ public class ClientProxy extends ServerProxy {
Minecraft.getMinecraft().effectRenderer.addEffect(fx);
}
break;
}
if("deadleaf".equals(type)) {
case "deadleaf": {
if(particleSetting == 0 || (particleSetting == 1 && rand.nextBoolean()))
Minecraft.getMinecraft().effectRenderer.addEffect(new ParticleDeadLeaf(man, world, x, y, z));
break;
}
if("anim".equals(type)) {
case "anim": {
/* crucible deploy */
if("crucible".equals(data.getString("mode")) && player.getHeldItem() != null) {
switch (data.getString("mode"))
{
case "crucible":
if(player.getHeldItem() != null) {
BusAnimation animation = new BusAnimation()
.addBus("GUARD_ROT", new BusAnimationSequence()
@ -1657,9 +1657,9 @@ public class ClientProxy extends ServerProxy {
HbmAnimations.hotbar[player.inventory.currentItem] = new Animation(player.getHeldItem().getItem().getUnlocalizedName(), System.currentTimeMillis(), animation);
}
break;
/* crucible swing */
if("cSwing".equals(data.getString("mode"))) {
case "cSwing": {
if(HbmAnimations.getRelevantTransformation("SWING_ROT")[0] == 0) {
@ -1679,10 +1679,13 @@ public class ClientProxy extends ServerProxy {
HbmAnimations.hotbar[player.inventory.currentItem] = new Animation(player.getHeldItem().getItem().getUnlocalizedName(), System.currentTimeMillis(), animation);
}
break;
}
/* chainsaw swing */
if("sSwing".equals(data.getString("mode")) || "lSwing".equals(data.getString("mode"))) { //temp for lance
case "sSwing":
case "lSwing":
{ //temp for lance
int forward = 150;
int sideways = 100;
@ -1725,21 +1728,27 @@ public class ClientProxy extends ServerProxy {
HbmAnimations.hotbar[player.inventory.currentItem] = new Animation(player.getHeldItem().getItem().getUnlocalizedName(), System.currentTimeMillis(), animation);
}
}
default:
break;
}
break;
}
if("tau".equals(type)) {
case "tau": {
for(int i = 0; i < data.getByte("count"); i++)
Minecraft.getMinecraft().effectRenderer.addEffect(new ParticleSpark(world, x, y, z, rand.nextGaussian() * 0.05, 0.05, rand.nextGaussian() * 0.05));
Minecraft.getMinecraft().effectRenderer.addEffect(new ParticleHadron(man, world, x, y, z));
break;
}
if("vanish".equals(type)) {
case "vanish": {
int ent = data.getInteger("ent");
this.vanish(ent);
break;
}
if("giblets".equals(type)) {
case "giblets": {
int ent = data.getInteger("ent");
this.vanish(ent);
Entity e = world.getEntityByID(ent);
@ -1766,48 +1775,48 @@ public class ClientProxy extends ServerProxy {
for(int i = 0; i < count; i++) {
Minecraft.getMinecraft().effectRenderer.addEffect(new ParticleGiblet(man, world, x, y, z, rand.nextGaussian() * 0.25 * mult, rand.nextDouble() * mult, rand.nextGaussian() * 0.25 * mult));
}
break;
}
case "amat": Minecraft.getMinecraft().effectRenderer.addEffect(new ParticleAmatFlash(world, x, y, z, data.getFloat("scale"))); break;
if("amat".equals(type)) {
Minecraft.getMinecraft().effectRenderer.addEffect(new ParticleAmatFlash(world, x, y, z, data.getFloat("scale")));
}
if("debug".equals(type)) {
case "debug": {
String t = data.getString("text");
int color = data.getInteger("color");
float scale = data.getFloat("scale");
ParticleText text = new ParticleText(world, x, y, z, color, t);
text.multipleParticleScaleBy(scale);
Minecraft.getMinecraft().effectRenderer.addEffect(text);
break;
}
if("network".equals(type)) {
case "network": {
ParticleDebug debug = null;
double mX = data.getDouble("mX");
double mY = data.getDouble("mY");
double mZ = data.getDouble("mZ");
if("power".equals(data.getString("mode"))) {
debug = new ParticleDebug(man, world, x, y, z, mX, mY, mZ);
}
if("fluid".equals(data.getString("mode"))) {
int color = data.getInteger("color");
debug = new ParticleDebug(man, world, x, y, z, mX, mY, mZ, color);
switch (data.getString("mode"))
{
case "power": debug = new ParticleDebug(man, world, x, y, z, mX, mY, mZ); break;
case "fluid": debug = new ParticleDebug(man, world, x, y, z, mX, mY, mZ, data.getInteger("color")); break;
default: break;
}
Minecraft.getMinecraft().effectRenderer.addEffect(debug);
break;
}
if("gasfire".equals(type)) {
case "gasfire": {
double mX = data.getDouble("mX");
double mY = data.getDouble("mY");
double mZ = data.getDouble("mZ");
float scale = data.getFloat("scale");
ParticleGasFlame text = new ParticleGasFlame(world, x, y, z, mX, mY, mZ, scale > 0 ? scale : 6.5F);
Minecraft.getMinecraft().effectRenderer.addEffect(text);
break;
}
}
}
private HashMap<Integer, Long> vanished = new HashMap();
private final HashMap<Integer, Long> vanished = new HashMap<Integer, Long>();
public void vanish(int ent) {
vanished.put(ent, System.currentTimeMillis() + 2000);
@ -1853,9 +1862,9 @@ public class ClientProxy extends ServerProxy {
public void displayTooltip(String msg, int time, int id) {
if(id != 0)
this.theInfoSystem.push(new InfoEntry(msg, time), id);
RenderInfoSystem.push(new InfoEntry(msg, time), id);
else
this.theInfoSystem.push(new InfoEntry(msg, time));
RenderInfoSystem.push(new InfoEntry(msg, time));
}
@Override
@ -1872,9 +1881,9 @@ public class ClientProxy extends ServerProxy {
case CRANE_LEFT: return HbmKeybinds.craneLeftKey.getIsKeyPressed();
case CRANE_RIGHT: return HbmKeybinds.craneRightKey.getIsKeyPressed();
case CRANE_LOAD: return HbmKeybinds.craneLoadKey.getIsKeyPressed();
default: return false;
}
return false;
}
@Override
@ -1886,13 +1895,15 @@ public class ClientProxy extends ServerProxy {
public void openLink(String url) {
try {
Desktop.getDesktop().browse(new URI(url));
} catch (Exception e) { }
} catch (Exception e) {
MainRegistry.logger.catching(e);
}
}
@Override
public List<ItemStack> getSubItems(ItemStack stack) {
List<ItemStack> list = new ArrayList();
List<ItemStack> list = new ArrayList<ItemStack>();
stack.getItem().getSubItems(stack.getItem(), stack.getItem().getCreativeTab(), list);
for(ItemStack sta : list) {
sta.stackSize = stack.stackSize;

View File

@ -14,7 +14,7 @@ import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.world.World;
public class ServerProxy {
public abstract class ServerProxy {
//sort by estimated time of display. longer lasting ones should be sorted at the top.
public static final int ID_DUCK = 0;
@ -28,50 +28,46 @@ public class ServerProxy {
public static final int ID_GUN_MODE = 8;
public static final int ID_GAS_HAZARD = 9;
public void registerRenderInfo() { }
public void registerTileEntitySpecialRenderer() { }
public void registerItemRenderer() { }
public void registerEntityRenderer() { }
public void registerBlockRenderer() { }
public abstract void registerRenderInfo();
public abstract void registerTileEntitySpecialRenderer();
public abstract void registerItemRenderer();
public abstract void registerEntityRenderer();
public abstract void registerBlockRenderer();
public void particleControl(double x, double y, double z, int type) { }
public abstract void particleControl(double x, double y, double z, int type);
public void spawnParticle(double x, double y, double z, String type, float[] args) { }
public abstract void spawnParticle(double x, double y, double z, String type, float... args);
public void effectNT(NBTTagCompound data) { }
public abstract void effectNT(NBTTagCompound data);
public void registerMissileItems() { }
public abstract void registerMissileItems();
public AudioWrapper getLoopedSound(String sound, float x, float y, float z, float volume, float pitch) { return null; }
public AudioWrapper getLoopedSoundStartStop(World world, String sound, String start, String stop, float x, float y, float z, float volume, float pitch) { return null; }
public abstract AudioWrapper getLoopedSound(String sound, float x, float y, float z, float volume, float pitch);
public abstract AudioWrapper getLoopedSoundStartStop(World world, String sound, String start, String stop, float x, float y, float z, float volume, float pitch);
public void playSound(String sound, Object data) { }
public abstract void playSound(String sound, Object data);
public void displayTooltip(String msg, int id) {
displayTooltip(msg, 1000, id);
}
public void displayTooltip(String msg, int time, int id) { }
public abstract void displayTooltip(String msg, int time, int id);
public boolean getIsKeyPressed(EnumKeybind key) {
return false;
}
public EntityPlayer me() {
return null;
}
public abstract boolean getIsKeyPressed(EnumKeybind key);
public abstract EntityPlayer me();
public boolean isVanished(Entity e) {
return false;
}
public abstract boolean isVanished(Entity e);
public void openLink(String url) { }
public abstract void openLink(String url);
@SuppressWarnings({ "unused", "static-method" })
public SoundWrapper getTileSound(String sound, ISoundSourceTE source) {
return new SoundWrapper();
}
@SuppressWarnings("static-method")
public List<ItemStack> getSubItems(ItemStack stack) {
List<ItemStack> list = new ArrayList();
List<ItemStack> list = new ArrayList<ItemStack>();
list.add(stack);
return list;
}

View File

@ -0,0 +1,97 @@
package com.hbm.particle;
import org.lwjgl.opengl.GL11;
import com.hbm.lib.RefStrings;
import com.hbm.particle.SpentCasingConfig.CasingType;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import net.minecraft.client.particle.EntityFX;
import net.minecraft.client.renderer.Tessellator;
import net.minecraft.client.renderer.texture.TextureManager;
import net.minecraft.util.ResourceLocation;
import net.minecraft.world.World;
@SideOnly(Side.CLIENT)
public class ParticleSpentCasing extends EntityFX
{
private static final ResourceLocation TEXTURE_BRASS = new ResourceLocation(RefStrings.MODID, "textures/particle/casing_brass.png"),
TEXTURE_SHOTGUN = new ResourceLocation(RefStrings.MODID, "textures/particle/casing_shotgun.png"),
TEXTURE_AR2 = new ResourceLocation(RefStrings.MODID, "textures/particle/casing_ar2.png");
private final TextureManager textureManager;
private final float momentumPitch, momentumYaw;
private final CasingType casingType;
public ParticleSpentCasing(TextureManager textureManager, World world, double x, double y, double z, double mx, double my, double mz, CasingType casingType, float momentumPitch, float momentumYaw)
{
super(world, x, y, z, mx, my, mz);
particleMaxAge = 120;
this.textureManager = textureManager;
this.casingType = casingType;
this.momentumPitch = momentumPitch;
this.momentumYaw = momentumYaw;
}
@Override
public int getFXLayer()
{
return 3;
}
@Override
public void onUpdate()
{
// TODO Auto-generated method stub
super.onUpdate();
prevRotationPitch = rotationPitch;
prevRotationYaw = rotationYaw;
if (!onGround)
{
rotationPitch += momentumPitch;
rotationYaw += momentumYaw;
}
}
@Override
public void renderParticle(
Tessellator tessellator, float interp, float x, float y, float z,
float tx, float tz
)
{
// TODO Auto-generated method stub
super.renderParticle(tessellator, interp, x, y, z, tx, tz);
GL11.glPushMatrix();
GL11.glDisable(GL11.GL_LIGHTING);
final ResourceLocation texture;
switch (casingType)
{
case AR2: texture = TEXTURE_AR2; break;
case BRASS: texture = TEXTURE_BRASS; break;
case SHOTGUN: texture = TEXTURE_SHOTGUN; break;
default: throw new IllegalStateException("CasingType [" + casingType + "] is not recognized, cannot render spent casing!");
}
textureManager.bindTexture(texture);
final float scale = particleScale * 0.1f,
xInterp = (float) (prevPosX + (posX - prevPosX) * interp - interpPosX),
yInterp = (float) (prevPosY + (posY - prevPosY) * interp - interpPosY),
zInterp = (float) (prevPosZ + (posZ - prevPosZ) * interp - interpPosZ);
tessellator.startDrawingQuads();
tessellator.setNormal(0, 1, 0);
tessellator.setBrightness(240);
tessellator.setColorRGBA_F(particleRed, particleGreen, particleBlue, particleAlpha);
tessellator.addVertexWithUV(xInterp - x * scale - tx * scale, yInterp - y, zInterp - z * scale - tz * scale, 0, 0);
tessellator.addVertexWithUV(xInterp - x * scale + tx * scale, yInterp + y, zInterp - z * scale + tz * scale, 0, 1);
tessellator.addVertexWithUV(xInterp + x * scale + tx * scale, yInterp + y, zInterp + z * scale + tz * scale, 1, 1);
tessellator.addVertexWithUV(xInterp + x * scale - tx * scale, yInterp - y, zInterp + z * scale - tz * scale, 1, 0);
tessellator.draw();
GL11.glPopMatrix();
}
}

View File

@ -0,0 +1,200 @@
package com.hbm.particle;
import java.util.Objects;
public class SpentCasingConfig implements Cloneable
{
public enum CasingType
{
/**The typical ejected type. Most pistols, rifles, and even cannons will likely use it.**/
BRASS,
/**Shotgun shells.**/
SHOTGUN,
/**AR2 pulse rifle plugs.**/
AR2;
}
/**Change position of the ejecting shell.**/
private final double offsetX, offsetY, offsetZ;
/**Set initial motion after ejecting.**/
private final double motionX, motionY, motionZ;
/**Rescale the sprite to match the approximate scale of the rounds.**/
private final float stretchX, stretchY;
/**Multipliers for random pitch and yaw.**/
private final float pitchFactor, yawFactor;
/**Overrides for the sprite colors.**/
private final int redOverride, greenOverride, blueOverride;
/**Whether or not to override the default sprite color scheme.**/
private final boolean overrideColor;
/**The type of casing.**/
private final CasingType casingType;
/**Amount of casings to spawn per event. Default 1.**/
private final int casingAmount;
/**If the casing(s) should be spawned after reloading, instead of after firing.**/
private final boolean afterReload;
public SpentCasingConfig(
double offsetX, double offsetY, double offsetZ, double motionX, double motionY, double motionZ,
float stretchX, float stretchY, float pitchFactor, float yawFactor, int redOverride, int greenOverride,
int blueOverride, boolean overrideColor, CasingType casingType, int casingAmount, boolean afterReload
)
{
this.offsetX = offsetX;
this.offsetY = offsetY;
this.offsetZ = offsetZ;
this.motionX = motionX;
this.motionY = motionY;
this.motionZ = motionZ;
this.stretchX = stretchX;
this.stretchY = stretchY;
this.pitchFactor = pitchFactor;
this.yawFactor = yawFactor;
this.redOverride = redOverride;
this.greenOverride = greenOverride;
this.blueOverride = blueOverride;
this.overrideColor = overrideColor;
this.casingType = casingType;
this.casingAmount = casingAmount;
this.afterReload = afterReload;
}
/**
* Apply these settings to an initialized casing entity
* @param entity The entity to apply the settings defined by this object
*/
public void applyToEntity(ParticleSpentCasing entity)
{
entity.setPosition((entity.posX - Math.cos(entity.rotationYaw / 180 * Math.PI)) + offsetX,
(entity.posY - 0.1) + offsetY,
(entity.posZ - Math.sin(entity.rotationYaw / 180 * Math.PI) + offsetZ));
entity.setRBGColorF((float) redOverride / 255, (float) greenOverride / 255, (float) blueOverride / 255);
}
public double getOffsetX()
{
return offsetX;
}
public double getOffsetY()
{
return offsetY;
}
public double getOffsetZ()
{
return offsetZ;
}
public double getMotionX()
{
return motionX;
}
public double getMotionY()
{
return motionY;
}
public double getMotionZ()
{
return motionZ;
}
public float getStretchX()
{
return stretchX;
}
public float getStretchY()
{
return stretchY;
}
public float getPitchFactor()
{
return pitchFactor;
}
public float getYawFactor()
{
return yawFactor;
}
public int getRedOverride()
{
return redOverride;
}
public int getGreenOverride()
{
return greenOverride;
}
public int getBlueOverride()
{
return blueOverride;
}
public boolean isOverrideColor()
{
return overrideColor;
}
public CasingType getCasingType()
{
return casingType;
}
public int getCasingAmount()
{
return casingAmount;
}
public boolean isAfterReload()
{
return afterReload;
}
@Override
public int hashCode()
{
return Objects.hash(afterReload, blueOverride, casingAmount, casingType, greenOverride, motionX, motionY, motionZ,
offsetX, offsetY, offsetZ, overrideColor, pitchFactor, redOverride, stretchX, stretchY, yawFactor);
}
@Override
public boolean equals(Object obj)
{
if (this == obj)
return true;
if (!(obj instanceof SpentCasingConfig))
return false;
final SpentCasingConfig other = (SpentCasingConfig) obj;
return afterReload == other.afterReload && blueOverride == other.blueOverride
&& casingAmount == other.casingAmount && casingType == other.casingType
&& greenOverride == other.greenOverride
&& Double.doubleToLongBits(motionX) == Double.doubleToLongBits(other.motionX)
&& Double.doubleToLongBits(motionY) == Double.doubleToLongBits(other.motionY)
&& Double.doubleToLongBits(motionZ) == Double.doubleToLongBits(other.motionZ)
&& Double.doubleToLongBits(offsetX) == Double.doubleToLongBits(other.offsetX)
&& Double.doubleToLongBits(offsetY) == Double.doubleToLongBits(other.offsetY)
&& Double.doubleToLongBits(offsetZ) == Double.doubleToLongBits(other.offsetZ)
&& overrideColor == other.overrideColor
&& Float.floatToIntBits(pitchFactor) == Float.floatToIntBits(other.pitchFactor)
&& redOverride == other.redOverride
&& Float.floatToIntBits(stretchX) == Float.floatToIntBits(other.stretchX)
&& Float.floatToIntBits(stretchY) == Float.floatToIntBits(other.stretchY)
&& Float.floatToIntBits(yawFactor) == Float.floatToIntBits(other.yawFactor);
}
@Override
public String toString()
{
final StringBuilder builder = new StringBuilder();
builder.append("SpentCasingConfig [offsetX=").append(offsetX).append(", offsetY=").append(offsetY)
.append(", offsetZ=").append(offsetZ).append(", motionX=").append(motionX).append(", motionY=")
.append(motionY).append(", motionZ=").append(motionZ).append(", stretchX=").append(stretchX)
.append(", stretchY=").append(stretchY).append(", pitchFactor=").append(pitchFactor)
.append(", yawFactor=").append(yawFactor).append(", redOverride=").append(redOverride)
.append(", greenOverride=").append(greenOverride).append(", blueOverride=").append(blueOverride)
.append(", overrideColor=").append(overrideColor).append(", casingType=").append(casingType)
.append(", casingAmount=").append(casingAmount).append(", afterReload=").append(afterReload)
.append(']');
return builder.toString();
}
@Override
public SpentCasingConfig clone()
{
try
{
return (SpentCasingConfig) super.clone();
} catch (CloneNotSupportedException e)
{
e.printStackTrace();
return new SpentCasingConfig(offsetX, offsetY, offsetZ, motionX, motionY, motionZ, stretchX, stretchY, pitchFactor, yawFactor, redOverride, greenOverride, blueOverride, overrideColor, casingType, casingAmount, afterReload);
}
}
}

View File

@ -0,0 +1,293 @@
package com.hbm.particle;
import java.util.Objects;
import com.hbm.particle.SpentCasingConfig.CasingType;
import net.minecraft.util.MathHelper;
public class SpentCasingConfigBuilder implements Cloneable
{
/**Change position of the ejecting shell.**/
private double offsetX, offsetY, offsetZ;
/**Set initial motion after ejecting.**/
private double motionX, motionY, motionZ;
/**Rescale the sprite to match the approximate scale of the rounds.**/
private float stretchX, stretchY;
/**Multipliers for random pitch and yaw.**/
private float pitchFactor = 1, yawFactor = 1;
/**Overrides for the sprite colors.**/
private int redOverride, greenOverride, blueOverride;
/**Whether or not to override the default sprite color scheme.**/
private boolean overrideColor;
/**The type of casing.**/
private CasingType casingType;
/**Amount of casings to spawn per event. Default 1.**/
private int casingAmount = 1;
/**If the casing(s) should be spawned after reloading, instead of after firing.**/
private boolean afterReload;
public SpentCasingConfigBuilder(CasingType casingType, boolean overrideColor)
{
this.casingType = casingType;
this.overrideColor = overrideColor;
}
public double getOffsetX()
{
return offsetX;
}
public SpentCasingConfigBuilder setOffsetX(double offsetX)
{
this.offsetX = offsetX;
return this;
}
public double getOffsetY()
{
return offsetY;
}
public SpentCasingConfigBuilder setOffsetY(double offsetY)
{
this.offsetY = offsetY;
return this;
}
public double getOffsetZ()
{
return offsetZ;
}
public SpentCasingConfigBuilder setOffsetZ(double offsetZ)
{
this.offsetZ = offsetZ;
return this;
}
public double getMotionX()
{
return motionX;
}
public SpentCasingConfigBuilder setMotionX(double motionX)
{
this.motionX = motionX;
return this;
}
public double getMotionY()
{
return motionY;
}
public SpentCasingConfigBuilder setMotionY(double motionY)
{
this.motionY = motionY;
return this;
}
public double getMotionZ()
{
return motionZ;
}
public SpentCasingConfigBuilder setMotionZ(double motionZ)
{
this.motionZ = motionZ;
return this;
}
public double getStretchX()
{
return stretchX;
}
public SpentCasingConfigBuilder setStretchX(float stretchX)
{
this.stretchX = stretchX;
return this;
}
public double getStretchY()
{
return stretchY;
}
public SpentCasingConfigBuilder setStretchY(float stretchY)
{
this.stretchY = stretchY;
return this;
}
public float getPitchFactor()
{
return pitchFactor;
}
public SpentCasingConfigBuilder setPitchFactor(float pitchFactor)
{
this.pitchFactor = pitchFactor;
return this;
}
public float getYawFactor()
{
return yawFactor;
}
public SpentCasingConfigBuilder setYawFactor(float yawFactor)
{
this.yawFactor = yawFactor;
return this;
}
public int getRedOverride()
{
return redOverride;
}
public SpentCasingConfigBuilder setRedOverride(int redOverride)
{
this.redOverride = MathHelper.clamp_int(redOverride, 0, 255);
return this;
}
public int getGreenOverride()
{
return greenOverride;
}
public SpentCasingConfigBuilder setGreenOverride(int greenOverride)
{
this.greenOverride = MathHelper.clamp_int(greenOverride, 0, 255);
return this;
}
public int getBlueOverride()
{
return blueOverride;
}
public SpentCasingConfigBuilder setBlueOverride(int blueOverride)
{
this.blueOverride = MathHelper.clamp_int(blueOverride, 0, 255);
return this;
}
public boolean isOverrideColor()
{
return overrideColor;
}
public SpentCasingConfigBuilder setOverrideColor(boolean overrideColor)
{
this.overrideColor = overrideColor;
return this;
}
public CasingType getCasingType()
{
return casingType;
}
public SpentCasingConfigBuilder setCasingType(CasingType casingType)
{
this.casingType = casingType;
return this;
}
public int getCasingAmount()
{
return casingAmount;
}
public SpentCasingConfigBuilder setCasingAmount(int casingAmount)
{
this.casingAmount = casingAmount;
return this;
}
public boolean isAfterReload()
{
return afterReload;
}
public SpentCasingConfigBuilder setAfterReload(boolean afterReload)
{
this.afterReload = afterReload;
return this;
}
public SpentCasingConfig build()
{
return new SpentCasingConfig(offsetX, offsetY, offsetZ, motionX, motionY, motionZ, stretchX, stretchY, pitchFactor, yawFactor, redOverride, greenOverride, blueOverride, overrideColor, casingType, casingAmount, afterReload);
}
@Override
public int hashCode()
{
return Objects.hash(afterReload, blueOverride, casingAmount, casingType, greenOverride, motionX, motionY,
motionZ, offsetX, offsetY, offsetZ, overrideColor, pitchFactor, redOverride, stretchX, stretchY,
yawFactor);
}
@Override
public boolean equals(Object obj)
{
if (this == obj)
return true;
if (!(obj instanceof SpentCasingConfigBuilder))
return false;
final SpentCasingConfigBuilder other = (SpentCasingConfigBuilder) obj;
return afterReload == other.afterReload && blueOverride == other.blueOverride
&& casingAmount == other.casingAmount && casingType == other.casingType
&& greenOverride == other.greenOverride
&& Double.doubleToLongBits(motionX) == Double.doubleToLongBits(other.motionX)
&& Double.doubleToLongBits(motionY) == Double.doubleToLongBits(other.motionY)
&& Double.doubleToLongBits(motionZ) == Double.doubleToLongBits(other.motionZ)
&& Double.doubleToLongBits(offsetX) == Double.doubleToLongBits(other.offsetX)
&& Double.doubleToLongBits(offsetY) == Double.doubleToLongBits(other.offsetY)
&& Double.doubleToLongBits(offsetZ) == Double.doubleToLongBits(other.offsetZ)
&& overrideColor == other.overrideColor
&& Float.floatToIntBits(pitchFactor) == Float.floatToIntBits(other.pitchFactor)
&& redOverride == other.redOverride
&& Float.floatToIntBits(stretchX) == Float.floatToIntBits(other.stretchX)
&& Float.floatToIntBits(stretchY) == Float.floatToIntBits(other.stretchY)
&& Float.floatToIntBits(yawFactor) == Float.floatToIntBits(other.yawFactor);
}
@Override
public String toString()
{
final StringBuilder builder = new StringBuilder();
builder.append("SpentCasingConfigBuilder [offsetX=").append(offsetX).append(", offsetY=").append(offsetY)
.append(", offsetZ=").append(offsetZ).append(", motionX=").append(motionX).append(", motionY=")
.append(motionY).append(", motionZ=").append(motionZ).append(", stretchX=").append(stretchX)
.append(", stretchY=").append(stretchY).append(", pitchFactor=").append(pitchFactor)
.append(", yawFactor=").append(yawFactor).append(", redOverride=").append(redOverride)
.append(", greenOverride=").append(greenOverride).append(", blueOverride=").append(blueOverride)
.append(", overrideColor=").append(overrideColor).append(", casingType=").append(casingType)
.append(", casingAmount=").append(casingAmount).append(", afterReload=").append(afterReload)
.append(']');
return builder.toString();
}
@Override
public SpentCasingConfigBuilder clone()
{
try
{
return (SpentCasingConfigBuilder) super.clone();
} catch (CloneNotSupportedException e)
{
e.printStackTrace();
return new SpentCasingConfigBuilder(casingType, overrideColor).setBlueOverride(blueOverride)
.setCasingAmount(casingAmount).setGreenOverride(greenOverride).setMotionX(motionX)
.setMotionY(motionY).setMotionZ(motionZ).setOffsetX(offsetX).setOffsetY(offsetY)
.setOffsetZ(offsetZ).setPitchFactor(pitchFactor).setRedOverride(redOverride)
.setStretchX(stretchX).setStretchY(stretchY).setYawFactor(yawFactor);
}
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 633 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 628 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 773 B