Code (Java):
/**
* KeyframeAPI - Public API Methods
*
* Use these static and instance methods to interact with keyframe animations.
*/
// Core Plugin Access
KeyframeAPI.
getInstance
(
)
;
// Returns the main plugin instance.
// Animation Management
KeyframeAPI.
keyframeAnimationExists
(
String name
)
;
// Checks if a keyframe animation with the given name exists.
KeyframeAPI.
createKeyframeAnimation
(
String name
)
;
// Creates a new KeyframeAnimation with the given name.
KeyframeAPI.
getKeyframeAnimation
(
String name
)
;
// Retrieves an existing KeyframeAnimation by name.
KeyframeAPI.
deleteKeyframeAnimation
(KeyframeAnimation animation
)
;
// Deletes the given keyframe animation and removes it from the handler.
KeyframeAPI.
getKeyframeAnimations
(
)
;
// Returns a list of all registered KeyframeAnimations.
// Playback Control
KeyframeAPI.
playKeyframeAnimation
(Player player, KeyframeAnimation animation
)
;
// Plays the specified keyframe animation for the given player.
// Playback Status
KeyframeAPI.
isPlayingAnimation
(Player player
)
;
// Returns true if the specified player is currently playing a keyframe animation.
KeyframeAPI.
isRecordingAnimation
(Player player
)
;
// Returns true if the specified player is currently recording an animation.
Code (Text):
/**
* KeyframeAPI - Animation Event Reference
*
* These events are part of the keyframe animation lifecycle and can be listened to using Bukkit's event system.
* They allow plugins to hook into various stages of keyframe animation playback and control.
*/
// Called when a keyframe animation is cancelled for a player.
KeyframeCancelEvent
// Called when a keyframe animation ends for a player.
KeyframeEndEvent
// Called when a keyframe sequence (a series of animations) finishes playing.
KeyframeSequenceEndEvent
// Called when a keyframe sequence starts for a player.
KeyframeSequenceStartEvent
// Called when the sequence switches from one animation to the next in a sequence.
KeyframeSequenceSwitchEvent
// Called when a keyframe animation starts for a player.
KeyframeStartEvent
// Called every tick during an active keyframe animation (can be used for syncing or effects).
KeyframeTickEvent
Code (Text):
package me.abhi.keyframeapi;
import me.abhi.keyframeapi.keyframe.KeyframeAnimationSequence;
import me.abhi.keyframeapi.keyframe.event.*;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerJoinEvent;
public class KeyframeAPIExample implements Listener {
public KeyframeAPIExample() {
Bukkit.getPluginManager().registerEvents(this, KeyframeAPI.getInstance());
}
@EventHandler
public void onJoin(PlayerJoinEvent event) {
Player player = event.getPlayer();
if (!KeyframeAPI.keyframeAnimationExists("join1") || !KeyframeAPI.keyframeAnimationExists("join2")) return;
KeyframeAnimationSequence keyframeAnimationSequence = new KeyframeAnimationSequence(
"join",
player,
KeyframeAPI.getKeyframeAnimation("join1"),
KeyframeAPI.getKeyframeAnimation("join2"));
keyframeAnimationSequence.play();
}
@EventHandler
public void onKeyframeStart(KeyframeStartEvent event) {
Player player = event.getPlayer();
player.sendMessage(ChatColor.GREEN + "Keyframe Animation Started");
}
@EventHandler
public void onKeyframeEnd(KeyframeEndEvent event) {
Player player = event.getPlayer();
player.sendMessage(ChatColor.GREEN + "Keyframe Animation Ended");
}
@EventHandler
public void onKeyframeCancel(KeyframeCancelEvent event) {
Player player = event.getPlayer();
player.sendMessage(ChatColor.GREEN + "Keyframe Animation Cancelled");
}
@EventHandler
public void onSequenceStart(KeyframeSequenceStartEvent event) {
Player player = event.getPlayer();
player.sendTitle(ChatColor.GOLD + "Welcome to the first scene!", null, 10, 40, 20);
}
@EventHandler
public void onSequenceSwitch(KeyframeSequenceSwitchEvent event) {
Player player = event.getPlayer();
player.sendTitle(ChatColor.GOLD + "Welcome to the next scene!", null, 10, 40, 20);
}
@EventHandler
public void onSequenceEnd(KeyframeSequenceEndEvent event) {
Player player = event.getPlayer();
player.teleport(Bukkit.getWorlds().get(0).getSpawnLocation());
player.sendMessage(ChatColor.GOLD + "Have fun!");
}
}