Contents
- Description
- Nested Class Summary
- Field Summary
- Constructor Summary
- Method Summary
- Field Details
- Constructor Details
- Method Details
- getComponentType()
- onCollision(int, int, int, Vector3d, BlockContactData, BlockData, Box)
- probeCollisionDamage(int, int, int, Vector3d, BlockContactData, BlockData)
- onCollisionDamage(int, int, int, Vector3d, BlockContactData, BlockData)
- onCollisionSliceFinished()
- onCollisionFinished()
- finishTick(TransformComponent, Velocity)
- rotateBody(double, Rotation3f)
- isOnGround()
- isSwimming()
- getDragCoefficient(double)
- getState()
- setState(StandardPhysicsProvider.STATE)
- getPhysicsConfig()
- getForceProviderStandardState()
- getRestingSupport()
- setWorld(World)
- getPosition()
- getVelocity()
- getMovement()
- getNextMovement()
- getForceProviderEntity()
- getForceProviders()
- getStateUpdater()
- getStateBefore()
- getStateAfter()
- isProvidesCharacterCollisions()
- getCreatorUuid()
- getEntityCollisionProvider()
- isBounced()
- setBounced(boolean)
- getBounces()
- incrementBounces()
- bounceBlockPosition()
- clearBounced()
- getMoveOutOfSolidVelocity()
- isMovedInsideSolid()
- setMovedInsideSolid(boolean)
- getContactBlock()
- setFallingAfterBreak(boolean)
- getDisplacedMass()
- setDisplacedMass(double)
- getSubSurfaceVolume()
- setSubSurfaceVolume(double)
- getEnterFluid()
- setEnterFluid(double)
- getLeaveFluid()
- setLeaveFluid(double)
- getCollisionStart()
- setCollisionStart(double)
- getContactPosition()
- getContactNormal()
- isSliding()
- setSliding(boolean)
- getBlockCollisionProvider()
- getTriggerTracker()
- getFluidTracker()
- isInFluid()
- setInFluid(boolean)
- getVelocityExtremaCount()
- setVelocityExtremaCount(int)
- decrementVelocityExtremaCount()
- setOnGround(boolean)
- getImpactConsumer()
- setImpactConsumer(ImpactConsumer)
- getBounceConsumer()
- setBounceConsumer(BounceConsumer)
- clone()
Class StandardPhysicsProvider
java.lang.Object
com.hypixel.hytale.server.core.modules.projectile.config.StandardPhysicsProvider
- All Implemented Interfaces:
Component<EntityStore>, IBlockCollisionConsumer, Cloneable
public class StandardPhysicsProvider
extends Object
implements IBlockCollisionConsumer, Component<EntityStore>
Mixin class to provide a simple physics behavior with gravity and collisions
-
Nested Class Summary
Nested ClassesNested classes/interfaces inherited from interface IBlockCollisionConsumer
IBlockCollisionConsumer.Result -
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final doublestatic final doublestatic final intNumber of extrema to detect swimming state changeFields inherited from interface Component
EMPTY_ARRAY -
Constructor Summary
ConstructorsConstructorDescriptionStandardPhysicsProvider(BoundingBox boundingBox, UUID creatorUuid, StandardPhysicsConfig physicsConfig, org.joml.Vector3d initialForce, boolean predicted) -
Method Summary
Modifier and TypeMethodDescriptionorg.joml.Vector3ivoidclone()voidvoidfinishTick(TransformComponent position, Velocity velocity) intdoubleThe cell this projectile last collided with, ornullif it has not struck a block.org.joml.Vector3dorg.joml.Vector3ddoubledoublegetDragCoefficient(double density) doubledoubleorg.joml.Vector3dorg.joml.Vector3dorg.joml.Vector3dorg.joml.Vector3dgetState()doubleorg.joml.Vector3dintvoidbooleanbooleanbooleanbooleanbooleanbooleanbooleanonCollision(int blockX, int blockY, int blockZ, org.joml.Vector3d direction, BlockContactData contactData, BlockData blockData, Box collider) Process a collision between a block and the collider.voidonCollisionDamage(int blockX, int blockY, int blockZ, org.joml.Vector3d direction, BlockContactData collisionData, BlockData blockData) Process damage caused by block.voidCalled when all blocks are processed.Called whenBoxBlockIteratorused for iteration ends a slice.probeCollisionDamage(int blockX, int blockY, int blockZ, org.joml.Vector3d direction, BlockContactData collisionData, BlockData blockData) Test if the damage caused by block should stop processing and stop movement of collider.voidrotateBody(double dt, Rotation3f bodyRotation) voidsetBounceConsumer(BounceConsumer bounceConsumer) voidsetBounced(boolean bounced) voidsetCollisionStart(double collisionStart) voidsetDisplacedMass(double displacedMass) voidsetEnterFluid(double enterFluid) voidsetFallingAfterBreak(boolean fallingAfterBreak) voidsetImpactConsumer(ImpactConsumer impactConsumer) voidsetInFluid(boolean inFluid) voidsetLeaveFluid(double leaveFluid) voidsetMovedInsideSolid(boolean movedInsideSolid) voidsetOnGround(boolean onGround) voidsetSliding(boolean sliding) voidvoidsetSubSurfaceVolume(double subSurfaceVolume) voidsetVelocityExtremaCount(int velocityExtremaCount) voidMethods inherited from class Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface Component
cloneSerializable
-
Field Details
-
WATER_DETECTION_EXTREMA_COUNT
public static final int WATER_DETECTION_EXTREMA_COUNTNumber of extrema to detect swimming state change- See Also:
-
MIN_BOUNCE_EPSILON
public static final double MIN_BOUNCE_EPSILON- See Also:
-
MIN_BOUNCE_EPSILON_SQUARED
public static final double MIN_BOUNCE_EPSILON_SQUARED- See Also:
-
-
Constructor Details
-
StandardPhysicsProvider
public StandardPhysicsProvider(@Nonnull BoundingBox boundingBox, @Nullable UUID creatorUuid, @Nonnull StandardPhysicsConfig physicsConfig, @Nonnull org.joml.Vector3d initialForce, boolean predicted)
-
-
Method Details
-
getComponentType
- Returns:
- the component type for the
StandardPhysicsProvidercomponent.
-
onCollision
@Nonnull public IBlockCollisionConsumer.Result onCollision(int blockX, int blockY, int blockZ, @Nonnull org.joml.Vector3d direction, @Nonnull BlockContactData contactData, @Nonnull BlockData blockData, @Nonnull Box collider) Description copied from interface:IBlockCollisionConsumerProcess a collision between a block and the collider.collisionDataandblockDataare only valid until this call returns.- Specified by:
onCollisionin interfaceIBlockCollisionConsumer- Parameters:
blockX- X position of blockblockY- Y position of blockblockZ- Z position of blockdirection- Direction collider is movingcontactData- Information about collision contactblockData- Information about blockcollider- Sub hitbox collision happens with- Returns:
- Return
IBlockCollisionConsumer.Result.STOPorIBlockCollisionConsumer.Result.STOP_NOWto stop processing after this block orIBlockCollisionConsumer.Result.CONTINUEto continue
-
probeCollisionDamage
@Nonnull public IBlockCollisionConsumer.Result probeCollisionDamage(int blockX, int blockY, int blockZ, org.joml.Vector3d direction, BlockContactData collisionData, BlockData blockData) Description copied from interface:IBlockCollisionConsumerTest if the damage caused by block should stop processing and stop movement of collider.collisionDataandblockDataare only valid until this call returns. The actual damage should be processed usingIBlockCollisionConsumer.onCollisionDamage(int, int, int, Vector3d, BlockContactData, BlockData).- Specified by:
probeCollisionDamagein interfaceIBlockCollisionConsumer- Parameters:
blockX- X position of blockblockY- Y position of blockblockZ- Z position of blockdirection- Direction collider is movingcollisionData- Information about collision contactblockData- Information about block- Returns:
- Return
IBlockCollisionConsumer.Result.STOPorIBlockCollisionConsumer.Result.STOP_NOWto stop processing after this block orIBlockCollisionConsumer.Result.CONTINUEto continue
-
onCollisionDamage
public void onCollisionDamage(int blockX, int blockY, int blockZ, org.joml.Vector3d direction, BlockContactData collisionData, BlockData blockData) Description copied from interface:IBlockCollisionConsumerProcess damage caused by block.collisionDataandblockDataare only valid until this call returns.- Specified by:
onCollisionDamagein interfaceIBlockCollisionConsumer- Parameters:
blockX- X position of blockblockY- Y position of blockblockZ- Z position of blockdirection- Direction collider is movingcollisionData- Information about collision contactblockData- Information about block
-
onCollisionSliceFinished
Description copied from interface:IBlockCollisionConsumerCalled whenBoxBlockIteratorused for iteration ends a slice.- Specified by:
onCollisionSliceFinishedin interfaceIBlockCollisionConsumer- Returns:
- Return
IBlockCollisionConsumer.Result.STOPorIBlockCollisionConsumer.Result.STOP_NOWto stop processing after this block orIBlockCollisionConsumer.Result.CONTINUEto continue
-
onCollisionFinished
public void onCollisionFinished()Description copied from interface:IBlockCollisionConsumerCalled when all blocks are processed.- Specified by:
onCollisionFinishedin interfaceIBlockCollisionConsumer
-
finishTick
-
rotateBody
-
isOnGround
public boolean isOnGround() -
isSwimming
public boolean isSwimming() -
getDragCoefficient
public double getDragCoefficient(double density) -
getState
-
setState
-
getPhysicsConfig
-
getForceProviderStandardState
-
getRestingSupport
-
setWorld
-
getPosition
@Nonnull public org.joml.Vector3d getPosition() -
getVelocity
@Nonnull public org.joml.Vector3d getVelocity() -
getMovement
@Nonnull public org.joml.Vector3d getMovement() -
getNextMovement
@Nonnull public org.joml.Vector3d getNextMovement() -
getForceProviderEntity
-
getForceProviders
-
getStateUpdater
-
getStateBefore
-
getStateAfter
-
isProvidesCharacterCollisions
public boolean isProvidesCharacterCollisions() -
getCreatorUuid
-
getEntityCollisionProvider
-
isBounced
public boolean isBounced() -
setBounced
public void setBounced(boolean bounced) -
getBounces
public int getBounces() -
incrementBounces
public void incrementBounces() -
bounceBlockPosition
@Nullable public org.joml.Vector3i bounceBlockPosition() -
clearBounced
public void clearBounced() -
getMoveOutOfSolidVelocity
@Nonnull public org.joml.Vector3d getMoveOutOfSolidVelocity() -
isMovedInsideSolid
public boolean isMovedInsideSolid() -
setMovedInsideSolid
public void setMovedInsideSolid(boolean movedInsideSolid) -
getContactBlock
The cell this projectile last collided with, ornullif it has not struck a block. The cell keeps its value while the projectile settles, unlikebounceBlockPosition(), which is cleared once the bounce is consumed. -
setFallingAfterBreak
public void setFallingAfterBreak(boolean fallingAfterBreak) -
getDisplacedMass
public double getDisplacedMass() -
setDisplacedMass
public void setDisplacedMass(double displacedMass) -
getSubSurfaceVolume
public double getSubSurfaceVolume() -
setSubSurfaceVolume
public void setSubSurfaceVolume(double subSurfaceVolume) -
getEnterFluid
public double getEnterFluid() -
setEnterFluid
public void setEnterFluid(double enterFluid) -
getLeaveFluid
public double getLeaveFluid() -
setLeaveFluid
public void setLeaveFluid(double leaveFluid) -
getCollisionStart
public double getCollisionStart() -
setCollisionStart
public void setCollisionStart(double collisionStart) -
getContactPosition
@Nonnull public org.joml.Vector3d getContactPosition() -
getContactNormal
@Nonnull public org.joml.Vector3d getContactNormal() -
isSliding
public boolean isSliding() -
setSliding
public void setSliding(boolean sliding) -
getBlockCollisionProvider
-
getTriggerTracker
-
getFluidTracker
-
isInFluid
public boolean isInFluid() -
setInFluid
public void setInFluid(boolean inFluid) -
getVelocityExtremaCount
public int getVelocityExtremaCount() -
setVelocityExtremaCount
public void setVelocityExtremaCount(int velocityExtremaCount) -
decrementVelocityExtremaCount
public void decrementVelocityExtremaCount() -
setOnGround
public void setOnGround(boolean onGround) -
getImpactConsumer
-
setImpactConsumer
-
getBounceConsumer
-
setBounceConsumer
-
clone
- Specified by:
clonein interfaceComponent<EntityStore>- Returns:
- a clone instance of the original component instance.
-