# IStorm > Represents a storm (world border) that can be positioned, resized, and animated. `gg.lode.barrierapi.IStorm` --- ## Signature ```java public interface IStorm ``` --- ## Methods ### Damage ```java double getDamage() void setDamage(double damage) int getDamageTick() void setDamageTick(int damageTick) int getTicksBeforeDamage() void setTicksBeforeDamage(int ticksBeforeDamage) void damage(Player player) ``` Controls how much damage the storm deals, how frequently, and the grace period before damage starts. --- ### Position ```java double getCurrentX() double getCurrentY() double getCurrentZ() double getTargetX() double getTargetY() double getTargetZ() Location getCurrentCenter() Location getTargetCenter() void setX(double x) void setY(double y) void setZ(double z) void setOrigin(double x, double z) void setOrigin(double x, double z, int time) void setOrigin(double x, double y, double z) void setOrigin(double x, double y, double z, int time) ``` Gets and sets the storm's current and target positions. The `time` parameter (in ticks) animates the transition. --- ### Radius (Circle) ```java double getCurrentRadius() double getTargetRadius() void setRadius(double radius) void setRadius(double radius, int time) void setRadius(int radius) ``` Controls the storm radius when using `CIRCLE` storm type. --- ### Size (Width, Length, Height) ```java double getCurrentWidth() double getTargetWidth() void setWidth(double width) void setWidth(double width, int time) double getCurrentLength() double getTargetLength() void setLength(double length) void setLength(double length, int time) double getCurrentHeight() double getTargetHeight() void setHeight(double height) void setHeight(double height, int time) void setSize(double size) void setSize(double size, int time) void setSize(double width, double length) void setSize(double width, double length, int time) void setSize(double width, double height, double length) void setSize(double width, double height, double length, int time) ``` Controls the storm dimensions when using box-based storm types. --- ### Timing ```java int getTicksToMove() void setTicksToMove(int time) int getTicksToShrink() void setTicksToShrink(int time) ``` Controls animation timing for movement and resizing. --- ### Storm Type ```java StormType getStormType() void setStormType(StormType stormType) ``` Gets or sets the storm shape. --- ### Color ```java Color getColor() void setColor(Color color) ``` Gets or sets the storm's visual color. --- ### Visibility ```java void hideStorm(Player player) void showStorm(Player player) ``` Hides or shows the storm for a specific player. --- ### Query ```java boolean isInStorm(Entity entity) boolean isMoving() boolean isResizing() ``` Checks whether an entity is inside the storm, or whether the storm is currently animating. --- ### Movement Helpers ```java void moveUp(double value) void moveUp(double value, int time) void moveDown(double value) void moveDown(double value, int time) void moveTo(Location location) void moveTo(Location location, int time) ``` Convenience methods for moving the storm. --- ### Size Helpers ```java void shrink(double value) void shrink(double value, int time) void expand(double value) void expand(double value, int time) void shrinkArea(double value) void shrinkArea(double value, int time) void expandArea(double value) void expandArea(double value, int time) void shrinkHeight(double value) void shrinkHeight(double value, int time) void expandHeight(double value) void expandHeight(double value, int time) ``` Convenience methods for resizing the storm. `shrink`/`expand` affect the radius (circle), `shrinkArea`/`expandArea` affect width and length, and `shrinkHeight`/`expandHeight` affect the height. --- ### Control ```java void stop() void stopMoving() void stopResizing() void update() ``` Stops all animations, stops movement only, stops resizing only, or forces a visual update. --- ## Related Pages - [[IBarrierAPI]] — Access storms via `getStorm(World)` - [[StormType]] — Storm shape types - [[PlayerDamageByStormEvent]] — Fired when a player takes storm damage - [[PlayerEnterStormEvent]] — Fired when a player enters the storm - [[PlayerLeaveStormEvent]] — Fired when a player leaves the storm