Projectile class

Пакет: com.hypixel.hytale.server.core.asset.type.projectile.config

Файл: com/hypixel/hytale/server/core/asset/type/projectile/config/Projectile.java

implements: JsonAssetWithMap<String, DefaultAssetMap<String, Projectile>>, BallisticData

Поля (63)

МодификаторыТипИмя
ASSET_STORE
final AssetBuilderCodec<String, Projectile> CODEC
int var1
var1
var1
var1
var1
var1
var1
var1
var1
var1
var1
var1
var1
var1
var1
var1
var1
var1
var1
var1
var1
var1
var1
var1
var1
var1
var1
var1
var1
var1
var1
var1
var1
var1
var1
var1
var1
var1
var1
var1
var1
Projectile var2
long var2
var2
var2
var2
var2
var2
var2
var2
var2
var2
var2
var2
var2
var2
var2
var2
var2
var2
var2

Методы (53)

МодификаторыВозвратСигнатура
public String getAppearanceString getAppearance()
static DefaultAssetMap<String, Projectile> getAssetMapDefaultAssetMap<String, Projectile> getAssetMap()
static AssetStore<String, Projectile, DefaultAssetMap<String, Projectile>> getAssetStoreAssetStore<String, Projectile, DefaultAssetMap<String, Projectile>> getAssetStore()
public String getBounceSoundEventIdString getBounceSoundEventId()
public int getBounceSoundEventIndexint getBounceSoundEventIndex()
public double getBouncinessdouble getBounciness()
public int getDamageint getDamage()
public double getDampingRotationdouble getDampingRotation()
public double getDeadTimedouble getDeadTime()
public double getDeadTimeMissdouble getDeadTimeMiss()
public String getDeathSoundEventIdString getDeathSoundEventId()
public int getDeathSoundEventIndexint getDeathSoundEventIndex()
public double getDensitydouble getDensity()
public double getHeightdouble getHeight()
public String getHitSoundEventIdString getHitSoundEventId()
public int getHitSoundEventIndexint getHitSoundEventIndex()
public String getIdString getId()
public double getImpactSlowdowndouble getImpactSlowdown()
public String getMissSoundEventIdString getMissSoundEventId()
public int getMissSoundEventIndexint getMissSoundEventIndex()
public double getRadiusdouble getRadius()
public SimplePhysicsProvider.ROTATION_MODE getRotationModeSimplePhysicsProvider.ROTATION_MODE getRotationMode()
public double getRotationSpeedVelocityRatiodouble getRotationSpeedVelocityRatio()
public double getSwimmingDampingFactordouble getSwimmingDampingFactor()
public double getTerminalVelocitydouble getTerminalVelocity()
public double getTimeToLivedouble getTimeToLive()
public double getWaterHitImpulseLossdouble getWaterHitImpulseLoss()
public double getWaterTerminalVelocityMultiplierdouble getWaterTerminalVelocityMultiplier()
if if(ASSET_STORE == null)
if if(this.bounceSoundEventId != null)
if if(this.hitSoundEventId != null)
if if(this.missSoundEventId != null)
if if(this.deathSoundEventId != null)
if if(this == var1)
if if(this.pitchAdjustShot != var2.pitchAdjustShot)
if if(this.sticksVertically != var2.sticksVertically)
if if(this.computeYaw != var2.computeYaw)
if if(this.computePitch != var2.computePitch)
if if(this.computeRoll != var2.computeRoll)
if if(this.bounceSoundEventIndex != var2.bounceSoundEventIndex)
if if(this.hitSoundEventIndex != var2.hitSoundEventIndex)
if if(this.damage != var2.damage)
if if(this.missSoundEventIndex != var2.missSoundEventIndex)
if if(this.deathSoundEventIndex != var2.deathSoundEventIndex)
if if(this.deathEffectsOnHit != var2.deathEffectsOnHit)
if if(this.explosionConfig != var2.explosionConfig)
if if(this.rotationMode != var2.rotationMode)
public boolean isComputePitchboolean isComputePitch()
public boolean isComputeRollboolean isComputeRoll()
public boolean isComputeYawboolean isComputeYaw()
public boolean isDeathEffectsOnHitboolean isDeathEffectsOnHit()
public boolean isSticksVerticallyboolean isSticksVertically()
protected void processConfigvoid processConfig()

Исходный код

Показать/скрыть
class="kw">package com.hypixel.hytale.server.core.asset.type.projectile.config;

class="kw">import com.hypixel.hytale.assetstore.AssetExtraInfo;
class="kw">import com.hypixel.hytale.assetstore.AssetKeyValidator;
class="kw">import com.hypixel.hytale.assetstore.AssetRegistry;
class="kw">import com.hypixel.hytale.assetstore.AssetStore;
class="kw">import com.hypixel.hytale.assetstore.codec.AssetBuilderCodec;
class="kw">import com.hypixel.hytale.assetstore.map.DefaultAssetMap;
class="kw">import com.hypixel.hytale.assetstore.map.JsonAssetWithMap;
class="kw">import com.hypixel.hytale.codec.Codec;
class="kw">import com.hypixel.hytale.codec.KeyedCodec;
class="kw">import com.hypixel.hytale.codec.codecs.EnumCodec;
class="kw">import com.hypixel.hytale.codec.validation.ValidatorCache;
class="kw">import com.hypixel.hytale.server.core.asset.type.model.config.ModelAsset;
class="kw">import com.hypixel.hytale.server.core.asset.type.particle.config.WorldParticle;
class="kw">import com.hypixel.hytale.server.core.asset.type.soundevent.config.SoundEvent;
class="kw">import com.hypixel.hytale.server.core.asset.type.soundevent.validator.SoundEventValidators;
class="kw">import com.hypixel.hytale.server.core.entity.ExplosionConfig;
class="kw">import com.hypixel.hytale.server.core.modules.physics.SimplePhysicsProvider;
class="kw">import com.hypixel.hytale.server.core.modules.projectile.config.BallisticData;
class="kw">import javax.annotation.Nonnull;
class="kw">import javax.annotation.Nullable;

@Deprecated
class="kw">public class Projectile class="kw">implements JsonAssetWithMap<String, DefaultAssetMap<String, Projectile>>, BallisticData {
   class="kw">public class="kw">static class="kw">final AssetBuilderCodec<String, Projectile> CODEC = AssetBuilderCodec.builder(
         Projectile.class, Projectile::new, Codec.STRING, (var0, var1) -> var0.id = var1, var0 -> var0.id, (var0, var1) -> var0.data = var1, var0 -> var0.data
      )
      .appendInherited(
         new KeyedCodec<>("Appearance", Codec.STRING),
         (var0, var1) -> var0.appearance = var1,
         var0 -> var0.appearance,
         (var0, var1) -> var0.appearance = var1.appearance
      )
      .addValidator(ModelAsset.VALIDATOR_CACHE.getValidator())
      .add()
      .appendInherited(
         new KeyedCodec<>("Radius", Codec.DOUBLE), (var0, var1) -> var0.radius = var1, var0 -> var0.radius, (var0, var1) -> var0.radius = var1.radius
      )
      .add()
      .appendInherited(
         new KeyedCodec<>("Height", Codec.DOUBLE), (var0, var1) -> var0.height = var1, var0 -> var0.height, (var0, var1) -> var0.height = var1.height
      )
      .add()
      .appendInherited(
         new KeyedCodec<>("VerticalCenterShot", Codec.DOUBLE),
         (var0, var1) -> var0.verticalCenterShot = var1,
         var0 -> var0.verticalCenterShot,
         (var0, var1) -> var0.verticalCenterShot = var1.verticalCenterShot
      )
      .add()
      .appendInherited(
         new KeyedCodec<>("HorizontalCenterShot", Codec.DOUBLE),
         (var0, var1) -> var0.horizontalCenterShot = var1,
         var0 -> var0.horizontalCenterShot,
         (var0, var1) -> var0.horizontalCenterShot = var1.horizontalCenterShot
      )
      .add()
      .appendInherited(
         new KeyedCodec<>("DepthShot", Codec.DOUBLE),
         (var0, var1) -> var0.depthShot = var1,
         var0 -> var0.depthShot,
         (var0, var1) -> var0.depthShot = var1.depthShot
      )
      .add()
      .appendInherited(
         new KeyedCodec<>("PitchAdjustShot", Codec.BOOLEAN),
         (var0, var1) -> var0.pitchAdjustShot = var1,
         var0 -> var0.pitchAdjustShot,
         (var0, var1) -> var0.pitchAdjustShot = var1.pitchAdjustShot
      )
      .add()
      .appendInherited(
         new KeyedCodec<>("MuzzleVelocity", Codec.DOUBLE),
         (var0, var1) -> var0.muzzleVelocity = var1,
         var0 -> var0.muzzleVelocity,
         (var0, var1) -> var0.muzzleVelocity = var1.muzzleVelocity
      )
      .add()
      .appendInherited(
         new KeyedCodec<>("TerminalVelocity", Codec.DOUBLE),
         (var0, var1) -> var0.terminalVelocity = var1,
         var0 -> var0.terminalVelocity,
         (var0, var1) -> var0.terminalVelocity = var1.terminalVelocity
      )
      .add()
      .appendInherited(
         new KeyedCodec<>("Gravity", Codec.DOUBLE), (var0, var1) -> var0.gravity = var1, var0 -> var0.gravity, (var0, var1) -> var0.gravity = var1.gravity
      )
      .add()
      .appendInherited(
         new KeyedCodec<>("Bounciness", Codec.DOUBLE),
         (var0, var1) -> var0.bounciness = var1,
         var0 -> var0.bounciness,
         (var0, var1) -> var0.bounciness = var1.bounciness
      )
      .add()
      .appendInherited(
         new KeyedCodec<>("ImpactSlowdown", Codec.DOUBLE),
         (var0, var1) -> var0.impactSlowdown = var1,
         var0 -> var0.impactSlowdown,
         (var0, var1) -> var0.impactSlowdown = var1.impactSlowdown
      )
      .add()
      .appendInherited(
         new KeyedCodec<>("SticksVertically", Codec.BOOLEAN),
         (var0, var1) -> var0.sticksVertically = var1,
         var0 -> var0.sticksVertically,
         (var0, var1) -> var0.sticksVertically = var1.sticksVertically
      )
      .add()
      .appendInherited(
         new KeyedCodec<>("ComputeYaw", Codec.BOOLEAN),
         (var0, var1) -> var0.computeYaw = var1,
         var0 -> var0.computeYaw,
         (var0, var1) -> var0.computeYaw = var1.computeYaw
      )
      .add()
      .appendInherited(
         new KeyedCodec<>("ComputePitch", Codec.BOOLEAN),
         (var0, var1) -> var0.computePitch = var1,
         var0 -> var0.computePitch,
         (var0, var1) -> var0.computePitch = var1.computePitch
      )
      .add()
      .appendInherited(
         new KeyedCodec<>("ComputeRoll", Codec.BOOLEAN),
         (var0, var1) -> var0.computeRoll = var1,
         var0 -> var0.computeRoll,
         (var0, var1) -> var0.computeRoll = var1.computeRoll
      )
      .add()
      .appendInherited(
         new KeyedCodec<>("TimeToLive", Codec.DOUBLE),
         (var0, var1) -> var0.timeToLive = var1,
         var0 -> var0.timeToLive,
         (var0, var1) -> var0.timeToLive = var1.timeToLive
      )
      .add()
      .<String>appendInherited(
         new KeyedCodec<>("BounceSoundEventId", Codec.STRING),
         (var0, var1) -> var0.bounceSoundEventId = var1,
         var0 -> var0.bounceSoundEventId,
         (var0, var1) -> var0.bounceSoundEventId = var1.bounceSoundEventId
      )
      .addValidator(SoundEvent.VALIDATOR_CACHE.getValidator())
      .addValidator(SoundEventValidators.MONO)
      .add()
      .appendInherited(
         new KeyedCodec<>("BounceParticles", WorldParticle.CODEC),
         (var0, var1) -> var0.bounceParticles = var1,
         var0 -> var0.bounceParticles,
         (var0, var1) -> var0.bounceParticles = var1.bounceParticles
      )
      .add()
      .<String>appendInherited(
         new KeyedCodec<>("HitSoundEventId", Codec.STRING),
         (var0, var1) -> var0.hitSoundEventId = var1,
         var0 -> var0.hitSoundEventId,
         (var0, var1) -> var0.hitSoundEventId = var1.hitSoundEventId
      )
      .addValidator(SoundEvent.VALIDATOR_CACHE.getValidator())
      .addValidator(SoundEventValidators.MONO)
      .add()
      .appendInherited(
         new KeyedCodec<>("HitParticles", WorldParticle.CODEC),
         (var0, var1) -> var0.hitParticles = var1,
         var0 -> var0.hitParticles,
         (var0, var1) -> var0.hitParticles = var1.hitParticles
      )
      .add()
      .appendInherited(
         new KeyedCodec<>("Damage", Codec.INTEGER), (var0, var1) -> var0.damage = var1, var0 -> var0.damage, (var0, var1) -> var0.damage = var1.damage
      )
      .add()
      .appendInherited(
         new KeyedCodec<>("DeadTime", Codec.DOUBLE), (var0, var1) -> var0.deadTime = var1, var0 -> var0.deadTime, (var0, var1) -> var0.deadTime = var1.deadTime
      )
      .add()
      .<String>appendInherited(
         new KeyedCodec<>("MissSoundEventId", Codec.STRING),
         (var0, var1) -> var0.missSoundEventId = var1,
         var0 -> var0.missSoundEventId,
         (var0, var1) -> var0.missSoundEventId = var1.missSoundEventId
      )
      .addValidator(SoundEvent.VALIDATOR_CACHE.getValidator())
      .addValidator(SoundEventValidators.MONO)
      .add()
      .appendInherited(
         new KeyedCodec<>("MissParticles", WorldParticle.CODEC),
         (var0, var1) -> var0.missParticles = var1,
         var0 -> var0.missParticles,
         (var0, var1) -> var0.missParticles = var1.missParticles
      )
      .add()
      .appendInherited(
         new KeyedCodec<>("DeadTimeMiss", Codec.DOUBLE),
         (var0, var1) -> var0.deadTimeMiss = var1,
         var0 -> var0.deadTimeMiss,
         (var0, var1) -> var0.deadTimeMiss = var1.deadTimeMiss
      )
      .add()
      .<String>appendInherited(
         new KeyedCodec<>("DeathSoundEventId", Codec.STRING),
         (var0, var1) -> var0.deathSoundEventId = var1,
         var0 -> var0.deathSoundEventId,
         (var0, var1) -> var0.deathSoundEventId = var1.deathSoundEventId
      )
      .addValidator(SoundEvent.VALIDATOR_CACHE.getValidator())
      .addValidator(SoundEventValidators.MONO)
      .add()
      .appendInherited(
         new KeyedCodec<>("DeathParticles", WorldParticle.CODEC),
         (var0, var1) -> var0.deathParticles = var1,
         var0 -> var0.deathParticles,
         (var0, var1) -> var0.deathParticles = var1.deathParticles
      )
      .add()
      .appendInherited(
         new KeyedCodec<>("DeathEffectsOnHit", Codec.BOOLEAN),
         (var0, var1) -> var0.deathEffectsOnHit = var1,
         var0 -> var0.deathEffectsOnHit,
         (var0, var1) -> var0.deathEffectsOnHit = var1.deathEffectsOnHit
      )
      .add()
      .<ExplosionConfig>appendInherited(
         new KeyedCodec<>("ExplosionConfig", ExplosionConfig.CODEC),
         (var0, var1) -> var0.explosionConfig = var1,
         var0 -> var0.explosionConfig,
         (var0, var1) -> var0.explosionConfig = var1.explosionConfig
      )
      .documentation("The explosion config associated with this projectile")
      .add()
      .appendInherited(
         new KeyedCodec<>("Density", Codec.DOUBLE), (var0, var1) -> var0.density = var1, var0 -> var0.density, (var0, var1) -> var0.density = var1.density
      )
      .add()
      .appendInherited(
         new KeyedCodec<>("WaterTerminalVelocityMultiplier", Codec.DOUBLE),
         (var0, var1) -> var0.waterTerminalVelocityMultiplier = var1,
         var0 -> var0.waterTerminalVelocityMultiplier,
         (var0, var1) -> var0.waterTerminalVelocityMultiplier = var1.waterTerminalVelocityMultiplier
      )
      .add()
      .appendInherited(
         new KeyedCodec<>("WaterHitImpulseLoss", Codec.DOUBLE),
         (var0, var1) -> var0.waterHitImpulseLoss = var1,
         var0 -> var0.waterHitImpulseLoss,
         (var0, var1) -> var0.waterHitImpulseLoss = var1.waterHitImpulseLoss
      )
      .add()
      .appendInherited(
         new KeyedCodec<>("DampingRotation", Codec.DOUBLE),
         (var0, var1) -> var0.dampingRotation = var1,
         var0 -> var0.dampingRotation,
         (var0, var1) -> var0.dampingRotation = var1.dampingRotation
      )
      .add()
      .appendInherited(
         new KeyedCodec<>("RotationSpeedVelocityRatio", Codec.DOUBLE),
         (var0, var1) -> var0.rotationSpeedVelocityRatio = var1,
         var0 -> var0.rotationSpeedVelocityRatio,
         (var0, var1) -> var0.rotationSpeedVelocityRatio = var1.rotationSpeedVelocityRatio
      )
      .add()
      .appendInherited(
         new KeyedCodec<>("SwimmingDampingFactor", Codec.DOUBLE),
         (var0, var1) -> var0.swimmingDampingFactor = var1,
         var0 -> var0.swimmingDampingFactor,
         (var0, var1) -> var0.swimmingDampingFactor = var1.swimmingDampingFactor
      )
      .add()
      .appendInherited(
         new KeyedCodec<>("RotationMode", new EnumCodec<>(SimplePhysicsProvider.ROTATION_MODE.class)),
         (var0, var1) -> var0.rotationMode = var1,
         var0 -> var0.rotationMode,
         (var0, var1) -> var0.rotationMode = var1.rotationMode
      )
      .add()
      .afterDecode(Projectile::processConfig)
      .build();
   class="kw">private class="kw">static AssetStore<String, Projectile, DefaultAssetMap<String, Projectile>> ASSET_STORE;
   class="kw">public class="kw">static class="kw">final ValidatorCache<String> VALIDATOR_CACHE = new ValidatorCache<>(new AssetKeyValidator<>(Projectile::getAssetStore));
   class="kw">protected AssetExtraInfo.Data data;
   class="kw">protected String id;
   class="kw">protected String appearance;
   class="kw">protected double radius;
   class="kw">protected double height;
   class="kw">protected double verticalCenterShot;
   class="kw">protected double horizontalCenterShot;
   class="kw">protected double depthShot;
   class="kw">protected boolean pitchAdjustShot;
   class="kw">protected double muzzleVelocity;
   class="kw">protected double terminalVelocity;
   class="kw">protected double gravity;
   class="kw">protected double bounciness;
   class="kw">protected double impactSlowdown;
   class="kw">protected boolean sticksVertically;
   class="kw">protected boolean computeYaw = true;
   class="kw">protected boolean computePitch = true;
   class="kw">protected boolean computeRoll = true;
   class="kw">protected SimplePhysicsProvider.ROTATION_MODE rotationMode = SimplePhysicsProvider.ROTATION_MODE.Velocity;
   class="kw">protected double timeToLive;
   class="kw">protected String bounceSoundEventId;
   class="kw">protected class="kw">transient int bounceSoundEventIndex;
   @Nullable
   class="kw">protected WorldParticle bounceParticles;
   class="kw">protected String hitSoundEventId;
   class="kw">protected class="kw">transient int hitSoundEventIndex;
   @Nullable
   class="kw">protected WorldParticle hitParticles;
   class="kw">protected int damage;
   class="kw">protected double deadTime;
   class="kw">protected String missSoundEventId;
   class="kw">protected class="kw">transient int missSoundEventIndex;
   class="kw">protected WorldParticle missParticles;
   class="kw">protected double deadTimeMiss = 10.0;
   class="kw">protected String deathSoundEventId;
   class="kw">protected class="kw">transient int deathSoundEventIndex;
   @Nullable
   class="kw">protected WorldParticle deathParticles;
   class="kw">protected boolean deathEffectsOnHit;
   @Nullable
   class="kw">protected ExplosionConfig explosionConfig;
   double density = 2000.0;
   double waterTerminalVelocityMultiplier = 1.0;
   double waterHitImpulseLoss = 0.0;
   double dampingRotation = 0.0;
   double rotationSpeedVelocityRatio = 2.0;
   double swimmingDampingFactor = 1.0;

   class="kw">public class="kw">static AssetStore<String, Projectile, DefaultAssetMap<String, Projectile>> getAssetStore() {
      if (ASSET_STORE == null) {
         ASSET_STORE = AssetRegistry.getAssetStore(Projectile.class);
      }

      class="kw">return ASSET_STORE;
   }

   class="kw">public class="kw">static DefaultAssetMap<String, Projectile> getAssetMap() {
      class="kw">return (DefaultAssetMap<String, Projectile>)getAssetStore().getAssetMap();
   }

   class="kw">protected Projectile() {
   }

   class="kw">public String getId() {
      class="kw">return this.id;
   }

   class="kw">public String getAppearance() {
      class="kw">return this.appearance;
   }

   class="kw">public double getRadius() {
      class="kw">return this.radius;
   }

   class="kw">public double getHeight() {
      class="kw">return this.height;
   }

   @Override
   class="kw">public double getVerticalCenterShot() {
      class="kw">return this.verticalCenterShot;
   }

   @Override
   class="kw">public double getHorizontalCenterShot() {
      class="kw">return this.horizontalCenterShot;
   }

   @Override
   class="kw">public double getDepthShot() {
      class="kw">return this.depthShot;
   }

   @Override
   class="kw">public boolean isPitchAdjustShot() {
      class="kw">return this.pitchAdjustShot;
   }

   class="kw">public boolean isSticksVertically() {
      class="kw">return this.sticksVertically;
   }

   @Override
   class="kw">public double getMuzzleVelocity() {
      class="kw">return this.muzzleVelocity;
   }

   class="kw">public double getTerminalVelocity() {
      class="kw">return this.terminalVelocity;
   }

   @Override
   class="kw">public double getGravity() {
      class="kw">return this.gravity;
   }

   class="kw">public double getBounciness() {
      class="kw">return this.bounciness;
   }

   class="kw">public double getImpactSlowdown() {
      class="kw">return this.impactSlowdown;
   }

   class="kw">public double getTimeToLive() {
      class="kw">return this.timeToLive;
   }

   class="kw">public int getDamage() {
      class="kw">return this.damage;
   }

   class="kw">public double getDeadTime() {
      class="kw">return this.deadTime;
   }

   class="kw">public double getDeadTimeMiss() {
      class="kw">return this.deadTimeMiss;
   }

   class="kw">public String getBounceSoundEventId() {
      class="kw">return this.bounceSoundEventId;
   }

   class="kw">public int getBounceSoundEventIndex() {
      class="kw">return this.bounceSoundEventIndex;
   }

   class="kw">public String getHitSoundEventId() {
      class="kw">return this.hitSoundEventId;
   }

   class="kw">public int getHitSoundEventIndex() {
      class="kw">return this.hitSoundEventIndex;
   }

   class="kw">public String getMissSoundEventId() {
      class="kw">return this.missSoundEventId;
   }

   class="kw">public int getMissSoundEventIndex() {
      class="kw">return this.missSoundEventIndex;
   }

   class="kw">public String getDeathSoundEventId() {
      class="kw">return this.deathSoundEventId;
   }

   class="kw">public int getDeathSoundEventIndex() {
      class="kw">return this.deathSoundEventIndex;
   }

   @Nullable
   class="kw">public WorldParticle getBounceParticles() {
      class="kw">return this.bounceParticles;
   }

   @Nullable
   class="kw">public WorldParticle getMissParticles() {
      class="kw">return this.missParticles;
   }

   @Nullable
   class="kw">public WorldParticle getDeathParticles() {
      class="kw">return this.deathParticles;
   }

   @Nullable
   class="kw">public WorldParticle getHitParticles() {
      class="kw">return this.hitParticles;
   }

   class="kw">public boolean isDeathEffectsOnHit() {
      class="kw">return this.deathEffectsOnHit;
   }

   class="kw">public boolean isComputeYaw() {
      class="kw">return this.computeYaw;
   }

   class="kw">public boolean isComputePitch() {
      class="kw">return this.computePitch;
   }

   class="kw">public boolean isComputeRoll() {
      class="kw">return this.computeRoll;
   }

   class="kw">public SimplePhysicsProvider.ROTATION_MODE getRotationMode() {
      class="kw">return this.rotationMode;
   }

   class="kw">public double getDensity() {
      class="kw">return this.density;
   }

   class="kw">public double getWaterTerminalVelocityMultiplier() {
      class="kw">return this.waterTerminalVelocityMultiplier;
   }

   class="kw">public double getWaterHitImpulseLoss() {
      class="kw">return this.waterHitImpulseLoss;
   }

   class="kw">public double getDampingRotation() {
      class="kw">return this.dampingRotation;
   }

   class="kw">public double getRotationSpeedVelocityRatio() {
      class="kw">return this.rotationSpeedVelocityRatio;
   }

   class="kw">public double getSwimmingDampingFactor() {
      class="kw">return this.swimmingDampingFactor;
   }

   class="kw">protected void processConfig() {
      if (this.bounceSoundEventId != null) {
         this.bounceSoundEventIndex = SoundEvent.getAssetMap().getIndex(this.bounceSoundEventId);
      }

      if (this.hitSoundEventId != null) {
         this.hitSoundEventIndex = SoundEvent.getAssetMap().getIndex(this.hitSoundEventId);
      }

      if (this.missSoundEventId != null) {
         this.missSoundEventIndex = SoundEvent.getAssetMap().getIndex(this.missSoundEventId);
      }

      if (this.deathSoundEventId != null) {
         this.deathSoundEventIndex = SoundEvent.getAssetMap().getIndex(this.deathSoundEventId);
      }
   }

   @Override
   class="kw">public boolean equals(@Nullable Object var1) {
      if (this == var1) {
         class="kw">return true;
      }

      if (var1 != null && this.getClass() == var1.getClass()) {
         Projectile var2 = (Projectile)var1;
         if (Double.compare(var2.radius, this.radius) != 0) {
            class="kw">return false;
         }

         if (Double.compare(var2.height, this.height) != 0) {
            class="kw">return false;
         }

         if (Double.compare(var2.verticalCenterShot, this.verticalCenterShot) != 0) {
            class="kw">return false;
         }

         if (Double.compare(var2.horizontalCenterShot, this.horizontalCenterShot) != 0) {
            class="kw">return false;
         }

         if (Double.compare(var2.depthShot, this.depthShot) != 0) {
            class="kw">return false;
         }

         if (this.pitchAdjustShot != var2.pitchAdjustShot) {
            class="kw">return false;
         }

         if (Double.compare(var2.muzzleVelocity, this.muzzleVelocity) != 0) {
            class="kw">return false;
         }

         if (Double.compare(var2.terminalVelocity, this.terminalVelocity) != 0) {
            class="kw">return false;
         }

         if (Double.compare(var2.gravity, this.gravity) != 0) {
            class="kw">return false;
         }

         if (Double.compare(var2.bounciness, this.bounciness) != 0) {
            class="kw">return false;
         }

         if (Double.compare(var2.impactSlowdown, this.impactSlowdown) != 0) {
            class="kw">return false;
         }

         if (this.sticksVertically != var2.sticksVertically) {
            class="kw">return false;
         }

         if (this.computeYaw != var2.computeYaw) {
            class="kw">return false;
         }

         if (this.computePitch != var2.computePitch) {
            class="kw">return false;
         }

         if (this.computeRoll != var2.computeRoll) {
            class="kw">return false;
         }

         if (Double.compare(var2.timeToLive, this.timeToLive) != 0) {
            class="kw">return false;
         }

         if (this.bounceSoundEventIndex != var2.bounceSoundEventIndex) {
            class="kw">return false;
         }

         if (this.hitSoundEventIndex != var2.hitSoundEventIndex) {
            class="kw">return false;
         }

         if (this.damage != var2.damage) {
            class="kw">return false;
         }

         if (Double.compare(var2.deadTime, this.deadTime) != 0) {
            class="kw">return false;
         }

         if (this.missSoundEventIndex != var2.missSoundEventIndex) {
            class="kw">return false;
         }

         if (Double.compare(var2.deadTimeMiss, this.deadTimeMiss) != 0) {
            class="kw">return false;
         }

         if (this.deathSoundEventIndex != var2.deathSoundEventIndex) {
            class="kw">return false;
         }

         if (this.deathEffectsOnHit != var2.deathEffectsOnHit) {
            class="kw">return false;
         }

         if (this.explosionConfig != var2.explosionConfig) {
            class="kw">return false;
         }

         if (Double.compare(var2.density, this.density) != 0) {
            class="kw">return false;
         }

         if (Double.compare(var2.waterTerminalVelocityMultiplier, this.waterTerminalVelocityMultiplier) != 0) {
            class="kw">return false;
         }

         if (Double.compare(var2.waterHitImpulseLoss, this.waterHitImpulseLoss) != 0) {
            class="kw">return false;
         }

         if (Double.compare(var2.dampingRotation, this.dampingRotation) != 0) {
            class="kw">return false;
         }

         if (Double.compare(var2.rotationSpeedVelocityRatio, this.rotationSpeedVelocityRatio) != 0) {
            class="kw">return false;
         }

         if (Double.compare(var2.swimmingDampingFactor, this.swimmingDampingFactor) != 0) {
            class="kw">return false;
         }

         if (!this.id.equals(var2.id)) {
            class="kw">return false;
         }

         if (this.appearance != null ? this.appearance.equals(var2.appearance) : var2.appearance == null) {
            if (this.rotationMode != var2.rotationMode) {
               class="kw">return false;
            }

            if (this.bounceSoundEventId != null ? this.bounceSoundEventId.equals(var2.bounceSoundEventId) : var2.bounceSoundEventId == null) {
               if (this.bounceParticles != null ? this.bounceParticles.equals(var2.bounceParticles) : var2.bounceParticles == null) {
                  if (this.hitSoundEventId != null ? this.hitSoundEventId.equals(var2.hitSoundEventId) : var2.hitSoundEventId == null) {
                     if (this.hitParticles != null ? this.hitParticles.equals(var2.hitParticles) : var2.hitParticles == null) {
                        if (this.missSoundEventId != null ? this.missSoundEventId.equals(var2.missSoundEventId) : var2.missSoundEventId == null) {
                           if (this.missParticles != null ? this.missParticles.equals(var2.missParticles) : var2.missParticles == null) {
                              if (this.deathSoundEventId != null ? this.deathSoundEventId.equals(var2.deathSoundEventId) : var2.deathSoundEventId == null) {
                                 class="kw">return this.deathParticles != null ? !this.deathParticles.equals(var2.deathParticles) : var2.deathParticles != null;
                              } else {
                                 class="kw">return false;
                              }
                           } else {
                              class="kw">return false;
                           }
                        } else {
                           class="kw">return false;
                        }
                     } else {
                        class="kw">return false;
                     }
                  } else {
                     class="kw">return false;
                  }
               } else {
                  class="kw">return false;
               }
            } else {
               class="kw">return false;
            }
         } else {
            class="kw">return false;
         }
      } else {
         class="kw">return false;
      }
   }

   @Override
   class="kw">public int hashCode() {
      int var1 = this.id.hashCode();
      var1 = 31 * var1 + (this.appearance != null ? this.appearance.hashCode() : 0);
      long var2 = Double.doubleToLongBits(this.radius);
      var1 = 31 * var1 + (int)(var2 ^ var2 >>> 32);
      var2 = Double.doubleToLongBits(this.height);
      var1 = 31 * var1 + (int)(var2 ^ var2 >>> 32);
      var2 = Double.doubleToLongBits(this.verticalCenterShot);
      var1 = 31 * var1 + (int)(var2 ^ var2 >>> 32);
      var2 = Double.doubleToLongBits(this.horizontalCenterShot);
      var1 = 31 * var1 + (int)(var2 ^ var2 >>> 32);
      var2 = Double.doubleToLongBits(this.depthShot);
      var1 = 31 * var1 + (int)(var2 ^ var2 >>> 32);
      var1 = 31 * var1 + (this.pitchAdjustShot ? 1 : 0);
      var2 = Double.doubleToLongBits(this.muzzleVelocity);
      var1 = 31 * var1 + (int)(var2 ^ var2 >>> 32);
      var2 = Double.doubleToLongBits(this.terminalVelocity);
      var1 = 31 * var1 + (int)(var2 ^ var2 >>> 32);
      var2 = Double.doubleToLongBits(this.gravity);
      var1 = 31 * var1 + (int)(var2 ^ var2 >>> 32);
      var2 = Double.doubleToLongBits(this.bounciness);
      var1 = 31 * var1 + (int)(var2 ^ var2 >>> 32);
      var2 = Double.doubleToLongBits(this.impactSlowdown);
      var1 = 31 * var1 + (int)(var2 ^ var2 >>> 32);
      var1 = 31 * var1 + (this.sticksVertically ? 1 : 0);
      var1 = 31 * var1 + (this.computeYaw ? 1 : 0);
      var1 = 31 * var1 + (this.computePitch ? 1 : 0);
      var1 = 31 * var1 + (this.computeRoll ? 1 : 0);
      var1 = 31 * var1 + (this.rotationMode != null ? this.rotationMode.hashCode() : 0);
      var2 = Double.doubleToLongBits(this.timeToLive);
      var1 = 31 * var1 + (int)(var2 ^ var2 >>> 32);
      var1 = 31 * var1 + (this.bounceSoundEventId != null ? this.bounceSoundEventId.hashCode() : 0);
      var1 = 31 * var1 + this.bounceSoundEventIndex;
      var1 = 31 * var1 + (this.bounceParticles != null ? this.bounceParticles.hashCode() : 0);
      var1 = 31 * var1 + (this.hitSoundEventId != null ? this.hitSoundEventId.hashCode() : 0);
      var1 = 31 * var1 + this.hitSoundEventIndex;
      var1 = 31 * var1 + (this.hitParticles != null ? this.hitParticles.hashCode() : 0);
      var1 = 31 * var1 + this.damage;
      var2 = Double.doubleToLongBits(this.deadTime);
      var1 = 31 * var1 + (int)(var2 ^ var2 >>> 32);
      var1 = 31 * var1 + (this.missSoundEventId != null ? this.missSoundEventId.hashCode() : 0);
      var1 = 31 * var1 + this.missSoundEventIndex;
      var1 = 31 * var1 + (this.missParticles != null ? this.missParticles.hashCode() : 0);
      var2 = Double.doubleToLongBits(this.deadTimeMiss);
      var1 = 31 * var1 + (int)(var2 ^ var2 >>> 32);
      var1 = 31 * var1 + (this.deathSoundEventId != null ? this.deathSoundEventId.hashCode() : 0);
      var1 = 31 * var1 + this.deathSoundEventIndex;
      var1 = 31 * var1 + (this.deathParticles != null ? this.deathParticles.hashCode() : 0);
      var1 = 31 * var1 + (this.deathEffectsOnHit ? 1 : 0);
      var1 = 31 * var1 + (int)(var2 ^ var2 >>> 32);
      var2 = Double.doubleToLongBits(this.density);
      var1 = 31 * var1 + (int)(var2 ^ var2 >>> 32);
      var2 = Double.doubleToLongBits(this.waterTerminalVelocityMultiplier);
      var1 = 31 * var1 + (int)(var2 ^ var2 >>> 32);
      var2 = Double.doubleToLongBits(this.waterHitImpulseLoss);
      var1 = 31 * var1 + (int)(var2 ^ var2 >>> 32);
      var2 = Double.doubleToLongBits(this.dampingRotation);
      var1 = 31 * var1 + (int)(var2 ^ var2 >>> 32);
      var2 = Double.doubleToLongBits(this.rotationSpeedVelocityRatio);
      var1 = 31 * var1 + (int)(var2 ^ var2 >>> 32);
      var2 = Double.doubleToLongBits(this.swimmingDampingFactor);
      class="kw">return 31 * var1 + (int)(var2 ^ var2 >>> 32);
   }

   @Nonnull
   @Override
   class="kw">public String toString() {
      class="kw">return "Projectile{id='"
         + this.id
         + "', appearance='"
         + this.appearance
         + "', radius="
         + this.radius
         + ", height="
         + this.height
         + ", verticalCenterShot="
         + this.verticalCenterShot
         + ", horizontalCenterShot="
         + this.horizontalCenterShot
         + ", depthShot="
         + this.depthShot
         + ", pitchAdjustShot="
         + this.pitchAdjustShot
         + ", muzzleVelocity="
         + this.muzzleVelocity
         + ", terminalVelocity="
         + this.terminalVelocity
         + ", gravity="
         + this.gravity
         + ", bounciness="
         + this.bounciness
         + ", impactSlowdown="
         + this.impactSlowdown
         + ", sticksVertically="
         + this.sticksVertically
         + ", computeYaw="
         + this.computeYaw
         + ", computePitch="
         + this.computePitch
         + ", computeRoll="
         + this.computeRoll
         + ", rotationMode="
         + this.rotationMode
         + ", timeToLive="
         + this.timeToLive
         + ", bounceSoundEventId='"
         + this.bounceSoundEventId
         + "', bounceParticles='"
         + this.bounceParticles
         + "', hitSoundEventId='"
         + this.hitSoundEventId
         + "', hitParticles='"
         + this.hitParticles
         + "', damage="
         + this.damage
         + ", deadTime="
         + this.deadTime
         + ", missSoundEventId='"
         + this.missSoundEventId
         + "', missParticles='"
         + this.missParticles
         + "', deadTimeMiss="
         + this.deadTimeMiss
         + ", deathSoundEventId='"
         + this.deathSoundEventId
         + "', deathParticles='"
         + this.deathParticles
         + "', deathEffectsOnHit="
         + this.deathEffectsOnHit
         + ", density="
         + this.density
         + ", waterTerminalVelocityMultiplier="
         + this.waterTerminalVelocityMultiplier
         + ", waterHitImpulseLoss="
         + this.waterHitImpulseLoss
         + ", dampingRotation="
         + this.dampingRotation
         + ", rotationSpeedVelocityRatio="
         + this.rotationSpeedVelocityRatio
         + ", swimmingDampingFactor="
         + this.swimmingDampingFactor
         + "}";
   }

   @Nullable
   class="kw">public ExplosionConfig getExplosionConfig() {
      class="kw">return this.explosionConfig;
   }
}