A simple library for creating hypixel-styled RPG items in minecraft using SpigotMC.
Note: the library is in the early stages of its development.
Documentation will be added at a later date.
public class Events implements Listener {
private RPGItemRegistry registry;
public Events(RPGItemRegistry registry) {
this.registry = registry;
}
@EventHandler
public void onBlockBreak(BlockBreakEvent event) {
ItemStack item = event.getPlayer().getItemInHand();
registry.fromStack(item).ifPresent(stack -> stack.executeAbility(AbilityAction.BLOCK_BREAK, event));
}
@EventHandler
public void onPlayerRightClick(PlayerInteractEvent event) {
ItemStack item = event.getPlayer().getItemInHand();
registry.fromStack(item).ifPresent(stack -> stack.executeAbility(AbilityAction.RIGHT_CLICK, event));
}
// More event handlers to be added...
@Override
public void onEnable() {
// Plugin startup logic
RPGItemRegistry registry = new RPGItemRegistry(this);
Bukkit.getPluginManager().registerEvents(new Events(registry), this);
}
public class Shortbow extends RPGItem {
public Shortbow() {
super(Material.BOW);
abilities = Map.of(AbilityAction.RIGHT_CLICK, new Ability() {
@Override
public void execute(Event event) {
onRightClick((PlayerInteractEvent) event);
}
@Override
public String getDescription() {
return "Instantly fires arrows!";
}
});
setRPGMeta(item, ItemRarity.RARE, "Artisanal Shortbow");
}
public void onRightClick(PlayerInteractEvent event) {
event.setCancelled(true);
Player player = event.getPlayer();
Vector direction = player.getEyeLocation().getDirection();
Entity arrow = player.getWorld().spawnEntity(player.getEyeLocation(), EntityType.ARROW);
float yaw = (float) Math.toDegrees(Math.atan2(-direction.getX(), direction.getZ()));
float pitch = (float) Math.toDegrees(-Math.asin(direction.getY()));
arrow.setRotation(yaw, pitch);
arrow.setVelocity(direction.multiply(1.2));
}
}
@Override
public void onEnable() {
// Plugin startup logic
RPGItemRegistry registry = new RPGItemRegistry(this);
Shortbow shortbow = new Shortbow();
registry.register(shortbow);
// <...>
}
player.getInventory().addItem(shortbow.getItem());
More examples to be added.