Class MissileABMEntity

java.lang.Object
net.minecraftforge.common.capabilities.CapabilityProvider<net.minecraft.world.entity.Entity>
net.minecraft.world.entity.Entity
net.minecraft.world.entity.projectile.Projectile
com.hbm_m.entity.missile.MissileBaseEntity
com.hbm_m.entity.missile.MissileABMEntity
All Implemented Interfaces:
IRadarDetectable, net.minecraft.commands.CommandSource, net.minecraft.world.entity.TraceableEntity, net.minecraft.world.level.entity.EntityAccess, net.minecraft.world.Nameable, net.minecraftforge.common.capabilities.ICapabilityProvider, net.minecraftforge.common.capabilities.ICapabilityProviderImpl<net.minecraft.world.entity.Entity>, net.minecraftforge.common.capabilities.ICapabilitySerializable<net.minecraft.nbt.CompoundTag>, net.minecraftforge.common.extensions.IForgeEntity, net.minecraftforge.common.util.INBTSerializable<net.minecraft.nbt.CompoundTag>

public class MissileABMEntity extends MissileBaseEntity
Порт EntityMissileAntiBallistic из 1.7.10. Поведение: 1. Первые ACTIVATION_TICKS тиков — чисто вертикальный старт (motionY = BASE_SPEED). 2. После активации — ищет ближайшую баллистическую ракету (кроме стелс и ABM), ведёт предиктивное наведение и подрывается в радиусе PROXIMITY_KILL. 3. Автоудаление: при posY > MAX_ALTITUDE или ticksExisted > MAX_LIFETIME без цели. В отличие от MissileBaseEntity, ABM не использует баллистику к targetX/targetZ — он управляется собственным наведением в serverTickLogic().
  • Nested Class Summary

    Nested classes/interfaces inherited from class net.minecraft.world.entity.Entity

    net.minecraft.world.entity.Entity.MoveFunction, net.minecraft.world.entity.Entity.MovementEmission, net.minecraft.world.entity.Entity.RemovalReason

    Nested classes/interfaces inherited from class net.minecraftforge.common.capabilities.CapabilityProvider

    net.minecraftforge.common.capabilities.CapabilityProvider.AsField<B extends net.minecraftforge.common.capabilities.ICapabilityProviderImpl<B>>

    Nested classes/interfaces inherited from interface api.hbm_m.entity.IRadarDetectable

    IRadarDetectable.RadarTargetType
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    protected int
    Счётчик тиков до активации наведения.
    static final double
    Базовая скорость (1.7.10: baseSpeed = 1.5D).
    net.minecraft.world.entity.Entity
    Текущая цель наведения.

    Fields inherited from class com.hbm_m.entity.missile.MissileBaseEntity

    accelXZ, decelY, exploded, health, isCluster, startX, startZ, targetX, targetZ, velocity

    Fields inherited from class net.minecraft.world.entity.Entity

    BASE_TICKS_REQUIRED_TO_FREEZE, blocksBuilding, BOARDING_COOLDOWN, boardingCooldown, BREATHING_DISTANCE_BELOW_EYES, DATA_POSE, DATA_SHARED_FLAGS_ID, DEFAULT_BB_HEIGHT, DEFAULT_BB_WIDTH, DELTA_AFFECTED_BY_BLOCKS_BELOW_0_2, DELTA_AFFECTED_BY_BLOCKS_BELOW_0_5, DELTA_AFFECTED_BY_BLOCKS_BELOW_1_0, ENTITY_COUNTER, entityData, fallDistance, firstTick, FLAG_FALL_FLYING, FLAG_GLOWING, FLAG_ONFIRE, fluidHeight, flyDist, forgeFluidTypeHeight, FREEZE_HURT_FREQUENCY, hasImpulse, horizontalCollision, hurtMarked, ID_TAG, invulnerableTime, isInPowderSnow, isInsidePortal, mainSupportingBlockPos, MAX_ENTITY_TAG_COUNT, minorHorizontalCollision, moveDist, noCulling, noPhysics, PASSENGERS_TAG, portalEntrancePos, portalTime, random, stringUUID, stuckSpeedMultiplier, tickCount, TOTAL_AIR_SUPPLY, uuid, UUID_TAG, verticalCollision, verticalCollisionBelow, walkDist, walkDistO, wasEyeInWater, wasInPowderSnow, wasOnFire, wasTouchingWater, xo, xOld, xRotO, yo, yOld, yRotO, zo, zOld

    Fields inherited from interface net.minecraft.commands.CommandSource

    NULL
  • Constructor Summary

    Constructors
    Constructor
    Description
    MissileABMEntity(net.minecraft.world.entity.EntityType<? extends MissileABMEntity> type, net.minecraft.world.level.Level level)
     
    MissileABMEntity(net.minecraft.world.level.Level level)
     
  • Method Summary

    Modifier and Type
    Method
    Description
    void
    addAdditionalSaveData(net.minecraft.nbt.CompoundTag tag)
     
    protected void
    Предиктивное наведение (порт EntityMissileAntiBallistic.aimAtTarget()).
    protected void
    Подрыв ABM по близости к цели + кинематографичные эффекты уничтожения.
     
    void
    initLaunch(double x, double y, double z, int targetX, int targetZ)
    ABM не использует баллистику к targetX/targetZ — это заглушка initLaunch.
    protected void
    onMissileImpact(net.minecraft.core.BlockPos pos)
     
    void
    readAdditionalSaveData(net.minecraft.nbt.CompoundTag tag)
     
    protected void
     
    protected void
    Поиск ближайшей баллистической ракеты в радиусе TARGET_SEARCH_RADIUS.
    protected void
    ABM наводится на tracking, а не на targetX/targetZ — поэтому yaw/pitch вычисляем из текущего motion (порт onUpdate строки 100-105 в 1.7.10), а не из цели запуска, как базовая баллистическая ракета.

    Methods inherited from class net.minecraft.world.entity.projectile.Projectile

    getEffectSource, getOwner, lerpRotation, mayInteract, onHitBlock, onHitEntity, ownedBy, setOwner, shoot, shootFromRotation, updateRotation

    Methods inherited from class net.minecraft.world.entity.Entity

    absMoveTo, absMoveTo, acceptsFailure, acceptsSuccess, addDeltaMovement, addPassenger, addTag, animateHurt, awardKillScore, baseTick, blockPosition, broadcastToPlayer, calculateUpVector, calculateViewVector, canAddPassenger, canBeCollidedWith, canBeHitByProjectile, canChangeDimensions, canCollideWith, canEnterPose, canFreeze, canRide, canSpawnSprintParticle, canSprint, canTrample, canUpdate, canUpdate, captureDrops, captureDrops, causeFallDamage, changeDimension, changeDimension, checkBelowWorld, checkDespawn, checkFallDamage, checkInsideBlocks, checkSlowFallDistance, checkSupportingBlock, chunkPosition, clearFire, closerThan, closerThan, collideBoundingBox, copyPosition, couldAcceptPassenger, createCommandSourceStack, createHoverEvent, damageSources, dampensVibrations, discard, dismountsUnderwater, dismountTo, displayFireAnimation, distanceTo, distanceToSqr, distanceToSqr, distanceToSqr, doEnchantDamageEffects, doWaterSplashEffect, ejectPassengers, equals, extinguishFire, fillCrashReportCategory, findDimensionEntryPoint, fireImmune, fixupDimensions, gameEvent, gameEvent, getAirSupply, getAllSlots, getArmorSlots, getBbHeight, getBbWidth, getBlockExplosionResistance, getBlockJumpFactor, getBlockPosBelowThatAffectsMyMovement, getBlockSpeedFactor, getBlockStateOn, getBlockStateOnLegacy, getBlockX, getBlockY, getBlockZ, getBoundingBox, getBoundingBoxForCulling, getBoundingBoxForPose, getCollisionHorizontalEscapeVector, getCommandSenderWorld, getControlledVehicle, getControllingPassenger, getCustomName, getDeltaMovement, getDimensionChangingDelay, getDimensions, getDimensionsForge, getDirection, getDismountLocationForPassenger, getDisplayName, getEncodeId, getEntityData, getExitPortal, getEyeHeight, getEyeHeight, getEyeHeight, getEyeHeightAccess, getEyeInFluidType, getEyePosition, getEyePosition, getEyeY, getFeetBlockState, getFireImmuneTicks, getFirstPassenger, getFluidHeight, getFluidJumpThreshold, getFluidTypeHeight, getForward, getHandHoldingItemAngle, getHandSlots, getId, getIndirectPassengers, getLeashOffset, getLeashOffset, getLightLevelDependentMagicValue, getLightProbePosition, getLookAngle, getMaxAirSupply, getMaxFallDistance, getMaxHeightFluidType, getMotionDirection, getMovementEmission, getMyRidingOffset, getName, getNameTagOffsetY, getOnPos, getOnPos, getOnPosLegacy, getPassengers, getPassengersAndSelf, getPassengersRidingOffset, getPercentFrozen, getPermissionLevel, getPersistentData, getPickRadius, getPickResult, getPistonPushReaction, getPortalCooldown, getPortalWaitTime, getPose, getPosition, getPositionCodec, getPrimaryStepSoundBlockPos, getRandomX, getRandomY, getRandomZ, getRelativePortalPosition, getRemainingFireTicks, getRemovalReason, getRootVehicle, getRopeHoldPosition, getRotationVector, getScoreboardName, getSelfAndPassengers, getServer, getSharedFlag, getSlot, getSoundSource, getStringUUID, getSwimHighSpeedSplashSound, getSwimSound, getSwimSplashSound, getTags, getTeam, getTeamColor, getTicksFrozen, getTicksRequiredToFreeze, getType, getTypeName, getUpVector, getUUID, getVehicle, getViewScale, getViewVector, getViewXRot, getViewYRot, getVisualRotationYInDegrees, getX, getX, getXRot, getY, getY, getYHeadRot, getYRot, getZ, getZ, handleDamageEvent, handleEntityEvent, handleInsidePortal, handleNetherPortal, hasControllingPassenger, hasCustomName, hasExactlyOnePlayerPassenger, hasGlowingTag, hashCode, hasIndirectPassenger, hasPassenger, hasPassenger, hasPermissions, hasPose, ignoreExplosion, interact, interactAt, is, isAddedToWorld, isAlive, isAlliedTo, isAlliedTo, isAlwaysTicking, isAttackable, isColliding, isControlledByLocalInstance, isCrouching, isCurrentlyGlowing, isCustomNameVisible, isDescending, isDiscrete, isEffectiveAi, isEyeInFluid, isFlapping, isFree, isFreezing, isFullyFrozen, isHorizontalCollisionMinor, isIgnoringBlockTriggers, isInFluidType, isInFluidType, isInLava, isInvisible, isInvisibleTo, isInvulnerable, isInvulnerableTo, isInWall, isInWater, isInWaterOrBubble, isInWaterOrRain, isInWaterRainOrBubble, isNoGravity, isOnFire, isOnPortalCooldown, isOnRails, isPassenger, isPassengerOfSameVehicle, isPickable, isPushable, isPushedByFluid, isRemoved, isShiftKeyDown, isSilent, isSpectator, isSprinting, isSteppingCarefully, isSupportedBy, isSuppressingBounce, isSwimming, isUnderWater, isVehicle, isVisuallyCrawling, isVisuallySwimming, kill, killedEntity, lavaHurt, lerpHeadTo, level, limitPistonMovement, load, lookAt, makeBoundingBox, makeStuckInBlock, markHurt, maxUpStep, maybeBackOffFromEdge, mirror, move, moveRelative, moveTo, moveTo, moveTo, moveTo, moveTowardsClosestSpace, newDoubleList, newFloatList, nextStep, onAboveBubbleCol, onBelowWorld, onClientRemoval, onFlap, onGround, onInsideBlock, onInsideBubbleColumn, onlyOpCanSetNbt, onPassengerTurned, onSyncedDataUpdated, onSyncedDataUpdated, pick, playCombinationStepSounds, playEntityOnFireExtinguishedSound, playerTouch, playMuffledStepSound, playSound, playSound, playStepSound, playSwimSound, position, positionRider, positionRider, processFlappingMovement, processPortalCooldown, push, push, reapplyPosition, refreshDimensions, remove, removeAfterChangingDimensions, removePassenger, removeTag, removeVehicle, repositionEntityAfterLoad, resetFallDistance, restoreFrom, revive, rideTick, rotate, save, saveAsPassenger, saveWithoutId, sendSystemMessage, setAirSupply, setBoundingBox, setCustomName, setCustomNameVisible, setDeltaMovement, setDeltaMovement, setFluidTypeHeight, setGlowingTag, setId, setInvisible, setInvulnerable, setIsInPowderSnow, setItemSlot, setLevel, setLevelCallback, setMaxUpStep, setNoGravity, setOldPosAndRot, setOnGround, setOnGroundWithKnownMovement, setPortalCooldown, setPortalCooldown, setPos, setPos, setPose, setPosRaw, setRemainingFireTicks, setRemoved, setRot, setSecondsOnFire, setSharedFlag, setSharedFlagOnFire, setShiftKeyDown, setSilent, setSprinting, setSwimming, setTicksFrozen, setUUID, setViewScale, setXRot, setYBodyRot, setYHeadRot, setYRot, shouldBeSaved, shouldBlockExplode, shouldInformAdmins, shouldRender, shouldShowName, showVehicleHealth, skipAttackInteraction, spawnAtLocation, spawnAtLocation, spawnAtLocation, spawnAtLocation, spawnSprintParticle, startRiding, startRiding, startSeenByPlayer, stopRiding, stopSeenByPlayer, syncPacketPositionCodec, teleportRelative, teleportTo, teleportTo, teleportToWithTicket, thunderHit, toString, touchingUnloadedChunk, trackingPosition, tryCheckInsideBlocks, turn, unRide, unsetRemoved, updateDynamicGameEventListener, updateFluidHeightAndDoFluidPushing, updateFluidHeightAndDoFluidPushing, updateFluidHeightAndDoFluidPushing, updateInWaterStateAndDoFluidPushing, updateSwimming, waterSwimSound

    Methods inherited from class net.minecraftforge.common.capabilities.CapabilityProvider

    areCapsCompatible, areCapsCompatible, deserializeCaps, gatherCapabilities, gatherCapabilities, gatherCapabilities, getCapabilities, getCapability, invalidateCaps, reviveCaps, serializeCaps

    Methods inherited from class java.lang.Object

    clone, finalize, getClass, notify, notifyAll, wait, wait, wait

    Methods inherited from interface net.minecraft.commands.CommandSource

    alwaysAccepts

    Methods inherited from interface net.minecraftforge.common.capabilities.ICapabilityProvider

    getCapability, getCapability

    Methods inherited from interface net.minecraftforge.common.extensions.IForgeEntity

    canBeRiddenUnderFluidType, canFluidExtinguish, canHydrateInFluidType, canRiderInteract, canStartSwimming, canSwimInFluidType, deserializeNBT, getClassification, getEyeHeightForge, getFluidFallDistanceModifier, getFluidMotionScale, getParts, getPickedResult, getSoundFromFluidType, getStepHeight, hasCustomOutlineRendering, isEyeInFluidType, isInFluidType, isInFluidType, isInFluidType, isMultipartEntity, isPushedByFluid, serializeNBT, shouldRiderSit, shouldUpdateFluidWhileBoating
  • Field Details

    • BASE_SPEED

      public static final double BASE_SPEED
      Базовая скорость (1.7.10: baseSpeed = 1.5D).
      See Also:
    • tracking

      public net.minecraft.world.entity.Entity tracking
      Текущая цель наведения.
    • activationTimer

      protected int activationTimer
      Счётчик тиков до активации наведения.
  • Constructor Details

    • MissileABMEntity

      public MissileABMEntity(net.minecraft.world.entity.EntityType<? extends MissileABMEntity> type, net.minecraft.world.level.Level level)
    • MissileABMEntity

      public MissileABMEntity(net.minecraft.world.level.Level level)
  • Method Details

    • serverTickLogic

      protected void serverTickLogic()
      Overrides:
      serverTickLogic in class MissileBaseEntity
    • targetMissile

      protected void targetMissile()
      Поиск ближайшей баллистической ракеты в радиусе TARGET_SEARCH_RADIUS. Порт EntityMissileAntiBallistic.targetMissile(). Исключения: стелс (canBeDetectedByRadar()==false) и другие ABM (чтобы перехватчики не гонялись друг за другом).
    • aimAtTarget

      protected void aimAtTarget()
      Предиктивное наведение (порт EntityMissileAntiBallistic.aimAtTarget()). Алгоритм: предсказываем позицию цели на intercept тиков вперёд по её скорости, затем направляем motion к предсказанной точке. На дистанции PROXIMITY_KILL подрываемся.
    • detonateProximity

      protected void detonateProximity()
      Подрыв ABM по близости к цели + кинематографичные эффекты уничтожения. Порт ExplosionLarge.explode(world, posX, posY, posZ, 15F, true, false, false). Эффекты спавнятся через ServerExplosionParticles.sendAlwaysVisible — это «фейковый рендер» (тот же, что у contrail-частиц), позволяющий видеть перехват с земли даже когда ABM летит высоко в неб unloaded-чанках.
    • onMissileImpact

      protected void onMissileImpact(net.minecraft.core.BlockPos pos)
      Specified by:
      onMissileImpact in class MissileBaseEntity
    • updateRotationFromMotion

      protected void updateRotationFromMotion()
      ABM наводится на tracking, а не на targetX/targetZ — поэтому yaw/pitch вычисляем из текущего motion (порт onUpdate строки 100-105 в 1.7.10), а не из цели запуска, как базовая баллистическая ракета.
      Overrides:
      updateRotationFromMotion in class MissileBaseEntity
    • initLaunch

      public void initLaunch(double x, double y, double z, int targetX, int targetZ)
      ABM не использует баллистику к targetX/targetZ — это заглушка initLaunch. serverTickLogic() полностью управляет движением.
      Overrides:
      initLaunch in class MissileBaseEntity
    • addAdditionalSaveData

      public void addAdditionalSaveData(net.minecraft.nbt.CompoundTag tag)
      Overrides:
      addAdditionalSaveData in class MissileBaseEntity
    • readAdditionalSaveData

      public void readAdditionalSaveData(net.minecraft.nbt.CompoundTag tag)
      Overrides:
      readAdditionalSaveData in class MissileBaseEntity
    • getTargetType

      public IRadarDetectable.RadarTargetType getTargetType()
      Specified by:
      getTargetType in interface IRadarDetectable
      Overrides:
      getTargetType in class MissileBaseEntity