Package com.hbm_m.entity.missile
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>
Порт
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.RemovalReasonNested 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
FieldsModifier and TypeFieldDescriptionprotected 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, velocityFields 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, zOldFields inherited from interface net.minecraft.commands.CommandSource
NULL -
Constructor Summary
ConstructorsConstructorDescriptionMissileABMEntity(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 TypeMethodDescriptionvoidaddAdditionalSaveData(net.minecraft.nbt.CompoundTag tag) protected voidПредиктивное наведение (портEntityMissileAntiBallistic.aimAtTarget()).protected voidПодрыв ABM по близости к цели + кинематографичные эффекты уничтожения.voidinitLaunch(double x, double y, double z, int targetX, int targetZ) ABM не использует баллистику к targetX/targetZ — это заглушка initLaunch.protected voidonMissileImpact(net.minecraft.core.BlockPos pos) voidreadAdditionalSaveData(net.minecraft.nbt.CompoundTag tag) protected voidprotected voidПоиск ближайшей баллистической ракеты в радиусеTARGET_SEARCH_RADIUS.protected voidABM наводится на tracking, а не на targetX/targetZ — поэтому yaw/pitch вычисляем из текущего motion (порт onUpdate строки 100-105 в 1.7.10), а не из цели запуска, как базовая баллистическая ракета.Methods inherited from class com.hbm_m.entity.missile.MissileBaseEntity
canBeDetectedByRadar, canHitEntity, cluster, debrisTierIndex, defineSynchedData, getAddEntityPacket, getContrailScale, getContrailScaleForSync, getDebris, getDebrisRareDrop, getLaunchFacing, getMotionMultiplier, hasPropulsion, hurt, killMissile, lerpMotion, lerpTo, onAddedToWorld, onHit, onRemovedFromWorld, recreateFromPacket, releaseChunkTicket, setLaunchFacing, shouldRenderAtSqrDistance, spawnContrail, spawnContrailWithOffset, spawnNozzleFlare, tickMethods inherited from class net.minecraft.world.entity.projectile.Projectile
getEffectSource, getOwner, lerpRotation, mayInteract, onHitBlock, onHitEntity, ownedBy, setOwner, shoot, shootFromRotation, updateRotationMethods 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, waterSwimSoundMethods inherited from class net.minecraftforge.common.capabilities.CapabilityProvider
areCapsCompatible, areCapsCompatible, deserializeCaps, gatherCapabilities, gatherCapabilities, gatherCapabilities, getCapabilities, getCapability, invalidateCaps, reviveCaps, serializeCapsMethods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, waitMethods inherited from interface net.minecraft.commands.CommandSource
alwaysAcceptsMethods inherited from interface net.minecraftforge.common.capabilities.ICapabilityProvider
getCapability, getCapabilityMethods 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:
serverTickLogicin classMissileBaseEntity
-
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:
onMissileImpactin classMissileBaseEntity
-
updateRotationFromMotion
protected void updateRotationFromMotion()ABM наводится на tracking, а не на targetX/targetZ — поэтому yaw/pitch вычисляем из текущего motion (порт onUpdate строки 100-105 в 1.7.10), а не из цели запуска, как базовая баллистическая ракета.- Overrides:
updateRotationFromMotionin classMissileBaseEntity
-
initLaunch
public void initLaunch(double x, double y, double z, int targetX, int targetZ) ABM не использует баллистику к targetX/targetZ — это заглушка initLaunch.serverTickLogic()полностью управляет движением.- Overrides:
initLaunchin classMissileBaseEntity
-
addAdditionalSaveData
public void addAdditionalSaveData(net.minecraft.nbt.CompoundTag tag) - Overrides:
addAdditionalSaveDatain classMissileBaseEntity
-
readAdditionalSaveData
public void readAdditionalSaveData(net.minecraft.nbt.CompoundTag tag) - Overrides:
readAdditionalSaveDatain classMissileBaseEntity
-
getTargetType
- Specified by:
getTargetTypein interfaceIRadarDetectable- Overrides:
getTargetTypein classMissileBaseEntity
-