Skip to content
Open
Show file tree
Hide file tree
Changes from 7 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion src/main/java/ch/njol/skript/Skript.java
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@
import ch.njol.skript.classes.data.*;
import ch.njol.skript.command.Commands;
import ch.njol.skript.doc.Documentation;
import ch.njol.skript.events.EvtSkript;
import ch.njol.skript.expressions.arithmetic.ExprArithmetic;
import ch.njol.skript.hooks.Hook;
import ch.njol.skript.lang.*;
Expand Down Expand Up @@ -65,6 +64,7 @@
import org.skriptlang.skript.bukkit.SkriptMetrics;
import org.skriptlang.skript.bukkit.lang.eventvalue.EventValueRegistry;
import org.skriptlang.skript.bukkit.log.runtime.BukkitRuntimeErrorConsumer;
import org.skriptlang.skript.bukkit.misc.elements.events.EvtSkript;
import org.skriptlang.skript.bukkit.registration.BukkitSyntaxInfos;
import org.skriptlang.skript.bukkit.text.TextComponentParser;
import org.skriptlang.skript.common.CommonModule;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -433,14 +433,6 @@ else if (hand == EquipmentSlot.OFF_HAND)
registry.register(EventValue.simple(CommandEvent.class, World.class, e -> e.getSender() instanceof Player ? ((Player) e.getSender()).getWorld() : null));
registry.register(EventValue.simple(CommandEvent.class, Block.class, event -> event.getSender() instanceof BlockCommandSender sender ? sender.getBlock() : null));

// === ServerEvents ===
// Script load/unload event
registry.register(EventValue.simple(ScriptEvent.class, CommandSender.class, event -> Bukkit.getConsoleSender()));
// Server load event
registry.register(EventValue.simple(SkriptStartEvent.class, CommandSender.class, event -> Bukkit.getConsoleSender()));
// Server stop event
registry.register(EventValue.simple(SkriptStopEvent.class, CommandSender.class, event -> Bukkit.getConsoleSender()));

// === InventoryEvents ===
// InventoryClickEvent
registry.register(EventValue.simple(InventoryClickEvent.class, Player.class, event -> event.getWhoClicked() instanceof Player player ? player : null));
Expand Down Expand Up @@ -499,9 +491,6 @@ else if (hand == EquipmentSlot.OFF_HAND)
}
return inventories.toArray(new Inventory[0]);
}));
// PrepareAnvilEvent
if (Skript.classExists("com.destroystokyo.paper.event.inventory.PrepareResultEvent"))
registry.register(EventValue.simple(PrepareAnvilEvent.class, ItemStack.class, PrepareResultEvent::getResult));
//BlockFertilizeEvent
registry.register(EventValue.simple(BlockFertilizeEvent.class, Player.class, BlockFertilizeEvent::getPlayer));
registry.register(EventValue.simple(BlockFertilizeEvent.class, Block[].class, event -> event.getBlocks().stream()
Expand Down Expand Up @@ -664,17 +653,6 @@ else if (hand == EquipmentSlot.OFF_HAND)
}
}));
}
//PrepareItemEnchantEvent
registry.register(EventValue.simple(PrepareItemEnchantEvent.class, Player.class, PrepareItemEnchantEvent::getEnchanter));
registry.register(EventValue.simple(PrepareItemEnchantEvent.class, ItemStack.class, PrepareItemEnchantEvent::getItem));
registry.register(EventValue.simple(PrepareItemEnchantEvent.class, Block.class, PrepareItemEnchantEvent::getEnchantBlock));
//EnchantItemEvent
registry.register(EventValue.simple(EnchantItemEvent.class, Player.class, EnchantItemEvent::getEnchanter));
registry.register(EventValue.simple(EnchantItemEvent.class, ItemStack.class, EnchantItemEvent::getItem));
registry.register(EventValue.simple(EnchantItemEvent.class, EnchantmentType[].class, event -> event.getEnchantsToAdd().entrySet().stream()
.map(entry -> new EnchantmentType(entry.getKey(), entry.getValue()))
.toArray(EnchantmentType[]::new)));
registry.register(EventValue.simple(EnchantItemEvent.class, Block.class, EnchantItemEvent::getEnchantBlock));
registry.register(EventValue.simple(HorseJumpEvent.class, Entity.class, HorseJumpEvent::getEntity));
// PlayerTradeEvent
if (Skript.classExists("io.papermc.paper.event.player.PlayerTradeEvent")) {
Expand Down
48 changes: 2 additions & 46 deletions src/main/java/ch/njol/skript/events/SimpleEvents.java
Original file line number Diff line number Diff line change
Expand Up @@ -390,22 +390,6 @@ public class SimpleEvents {
" cancel event")
.since("2.3");

Class<? extends Event> serverListPingEventClass = (Skript.classExists("com.destroystokyo.paper.event.server.PaperServerListPingEvent")
? PaperServerListPingEvent.class : ServerListPingEvent.class);
Skript.registerEvent("Server List Ping", SimpleEvent.class, serverListPingEventClass, "server [list] ping")
.description("Called when a server list ping is coming in, generally when a Minecraft client pings the server to show its information in the server list.",
"The <a href='#ExprIP'>IP</a> expression can be used to get the IP adress of the pinger.",
"This event can be cancelled on PaperSpigot 1.12.2+ only and this means the player will see the server as offline (but still can join).",
"",
"Also you can use <a href='#ExprMOTD'>MOTD</a>, <a href='#ExprMaxPlayers'>Max Players</a>, " +
"<a href='#ExprOnlinePlayersCount'>Online Players Count</a>, <a href='#ExprProtocolVersion'>Protocol Version</a>, " +
"<a href='#ExprVersionString'>Version String</a>, <a href='#ExprHoverList'>Hover List</a> and <a href='#ExprServerIcon'>Server Icon</a> " +
"expressions, and <a href='#EffPlayerInfoVisibility'>Player Info Visibility</a> and <a href='#EffHidePlayerFromServerList'>Hide Player from Server List</a> effects to modify the server list.")
.examples("on server list ping:",
" set the motd to \"Welcome %{player-by-IP::%ip%}%! Join now!\" if {player-by-IP::%ip%} is set, else \"Join now!\"",
" set the fake max players count to (online players count + 1)",
" set the shown icon to a random server icon out of {server-icons::*}")
.since("2.3");
Skript.registerEvent("Swim Toggle", SimpleEvent.class, EntityToggleSwimEvent.class, "[entity] toggl(e|ing) swim",
"[entity] swim toggl(e|ing)")
.description("Called when an entity swims or stops swimming.")
Expand All @@ -427,20 +411,7 @@ public class SimpleEvents {
"\tloop absorbed blocks:",
"\t\tbroadcast \"%loop-block% was absorbed by a sponge\"!")
.since("2.5");
Skript.registerEvent("Enchant Prepare", SimpleEvent.class, PrepareItemEnchantEvent.class, "[item] enchant prepare")
.description("Called when a player puts an item into enchantment table. This event may be called multiple times.",
" To get the enchant item, see the <a href='#ExprEnchantEventsEnchantItem'>enchant item expression</a>")
.examples("on enchant prepare:",
"\tset enchant offer 1 to sharpness 1",
"\tset the cost of enchant offer 1 to 10 levels")
.since("2.5");
Skript.registerEvent("Enchant", SimpleEvent.class, EnchantItemEvent.class, "[item] enchant")
.description("Called when a player successfully enchants an item.",
" To get the enchanted item, see the <a href='#ExprEnchantEventsEnchantItem'>enchant item expression</a>")
.examples("on enchant:",
"\tif the clicked button is 1: # offer 1",
"\t\tset the applied enchantments to sharpness 10 and unbreaking 10")
.since("2.5");

Skript.registerEvent("Inventory Pickup", SimpleEvent.class, InventoryPickupItemEvent.class, "inventory pick[ ]up")
.description("Called when an inventory (a hopper, a hopper minecart, etc.) picks up an item")
.examples("on inventory pickup:")
Expand Down Expand Up @@ -469,14 +440,7 @@ public class SimpleEvents {
"\t\tcancel the event",
"\t\tsend \"Oops! Mending failed!\" to player")
.since("2.5.1");
Skript.registerEvent("Anvil Prepare", SimpleEvent.class, PrepareAnvilEvent.class, "anvil prepar(e|ing)")
.description("Called when an item is put in a slot for repair by an anvil. Please note that this event is called multiple times in a single item slot move.")
.examples("on anvil prepare:",
"\tevent-item is set # result item",
"\tchance of 5%:",
"\t\tset repair cost to repair cost * 50%",
"\t\tsend \"You're LUCKY! You got 50% discount.\" to player")
.since("2.7");

if (Skript.classExists("io.papermc.paper.event.player.PlayerTradeEvent")) {
Skript.registerEvent("Player Trade", SimpleEvent.class, PlayerTradeEvent.class, "player trad(e|ing)")
.description("Called when a player has traded with a villager.")
Expand Down Expand Up @@ -629,14 +593,6 @@ public class SimpleEvents {
.since("2.10");
}

Skript.registerEvent("Broadcast", SimpleEvent.class, BroadcastMessageEvent.class, "broadcast")
.description("Called when a message is broadcasted.")
.examples(
"on broadcast:",
"\tset broadcast-message to \"&c[BROADCAST] %broadcasted message%\""
)
.since("2.10");

Skript.registerEvent("Experience Cooldown Change", SimpleEvent.class, PlayerExpCooldownChangeEvent.class, "player (experience|[e]xp) cooldown change")
.description(
"Called when a player's experience cooldown changes.",
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
package ch.njol.skript.events.bukkit;

import ch.njol.skript.registrations.EventValues;
import org.bukkit.World;
import org.bukkit.event.Event;
import org.bukkit.event.HandlerList;
Expand All @@ -10,12 +9,6 @@
* @author Peter Güttinger
*/
public class ScheduledEvent extends Event {

static {
EventValues.registerEventValue(ScheduledEvent.class, World.class, ScheduledEvent::getWorld, EventValues.TIME_NOW,
"There's no world in a periodic event if no world is given in the event (e.g. like 'every hour in \"world\"')",
ScheduledNoWorldEvent.class);
}

@Nullable
private final World world;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
import org.skriptlang.skript.addon.AddonModule;
import org.skriptlang.skript.addon.HierarchicalAddonModule;
import org.skriptlang.skript.addon.SkriptAddon;
import org.skriptlang.skript.bukkit.enchantments.elements.EnchantmentEvents;
import org.skriptlang.skript.bukkit.enchantments.elements.conditions.CondIsEnchanted;
import org.skriptlang.skript.bukkit.enchantments.elements.conditions.CondItemEnchantmentGlint;
import org.skriptlang.skript.bukkit.enchantments.elements.effects.EffEnchant;
Expand All @@ -16,6 +17,7 @@
import org.skriptlang.skript.bukkit.enchantments.types.EnchantmentClassInfo;
import org.skriptlang.skript.bukkit.enchantments.types.EnchantmentOfferClassInfo;
import org.skriptlang.skript.bukkit.enchantments.types.EnchantmentTypeClassInfo;
import org.skriptlang.skript.bukkit.lang.eventvalue.EventValueRegistry;
import org.skriptlang.skript.lang.comparator.Comparators;
import org.skriptlang.skript.lang.comparator.Relation;
import org.skriptlang.skript.lang.converter.Converters;
Expand Down Expand Up @@ -55,6 +57,8 @@ private void initConverters() {

@Override
protected void loadSelf(SkriptAddon addon) {
EnchantmentEvents.register(moduleRegistry(addon), addon.registry(EventValueRegistry.class));

register(addon,
CondIsEnchanted::register,
CondItemEnchantmentGlint::register,
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,82 @@
package org.skriptlang.skript.bukkit.enchantments.elements;

import ch.njol.skript.lang.util.SimpleEvent;
import ch.njol.skript.util.EnchantmentType;
import org.bukkit.block.Block;
import org.bukkit.entity.Player;
import org.bukkit.event.enchantment.EnchantItemEvent;
import org.bukkit.event.enchantment.PrepareItemEnchantEvent;
import org.bukkit.inventory.ItemStack;
import org.skriptlang.skript.bukkit.lang.eventvalue.EventValue;
import org.skriptlang.skript.bukkit.lang.eventvalue.EventValueRegistry;
import org.skriptlang.skript.bukkit.registration.BukkitSyntaxInfos;
import org.skriptlang.skript.registration.SyntaxRegistry;

public class EnchantmentEvents {

public static void register(SyntaxRegistry syntaxRegistry, EventValueRegistry eventValueRegistry) {
syntaxRegistry.register(BukkitSyntaxInfos.Event.KEY, BukkitSyntaxInfos.Event.builder(SimpleEvent.class, "Enchant Prepare")
.addEvent(PrepareItemEnchantEvent.class)
.addPatterns("[item] enchant prepare")
.addDescription("""
Called when a player puts an item into enchantment table.
This event may be called multiple times.
See <a href='#ExprEnchantEventsEnchantItem'>enchant item expression</a> for how to get the enchant item.
Comment thread
AnOwlBe marked this conversation as resolved.
Outdated
""")
.addExample("""
on item enchant prepare:
set enchant offer 1 to sharpness 1
set the cost of enchantment offer 1 to 10 levels
""")
.addSince("2.5")
.supplier(() -> new SimpleEvent("item enchant prepare"))
.build());

eventValueRegistry.register(EventValue.builder(PrepareItemEnchantEvent.class, Player.class)
.getter(PrepareItemEnchantEvent::getEnchanter)
.build());

eventValueRegistry.register(EventValue.builder(PrepareItemEnchantEvent.class, ItemStack.class)
.getter(PrepareItemEnchantEvent::getItem)
.build());

eventValueRegistry.register(EventValue.builder(PrepareItemEnchantEvent.class, Block.class)
.getter(PrepareItemEnchantEvent::getEnchantBlock)
.build());
Comment thread
AnOwlBe marked this conversation as resolved.

syntaxRegistry.register(BukkitSyntaxInfos.Event.KEY, BukkitSyntaxInfos.Event.builder(SimpleEvent.class, "Item Enchant")
.addEvent(EnchantItemEvent.class)
.addPatterns("[item] enchant")
.addDescription("""
Called when a player successfully enchants an item.
See <a href='#ExprEnchantEventsEnchantItem'>enchant item expression</a> for how to get the enchanted item.
Comment thread
AnOwlBe marked this conversation as resolved.
Outdated
""")
.addExample("""
on enchant:
if the clicked button is 1:
set the applied enchantments to (sharpness 10 and unbreaking 10)
""")
.addSince("2.5")
.supplier(() -> new SimpleEvent("item enchant"))
.build());

eventValueRegistry.register(EventValue.builder(EnchantItemEvent.class, Player.class)
.getter(EnchantItemEvent::getEnchanter)
.build());

eventValueRegistry.register(EventValue.builder(EnchantItemEvent.class, ItemStack.class)
.getter(EnchantItemEvent::getItem)
.build());

eventValueRegistry.register(EventValue.builder(EnchantItemEvent.class, EnchantmentType[].class)
.getter(event -> event.getEnchantsToAdd().entrySet().stream()
.map(entry -> new EnchantmentType(entry.getKey(), entry.getValue()))
.toArray(EnchantmentType[]::new))
.build());

eventValueRegistry.register(EventValue.builder(EnchantItemEvent.class, Block.class)
.getter(EnchantItemEvent::getEnchantBlock)
.build());
}

}
11 changes: 11 additions & 0 deletions src/main/java/org/skriptlang/skript/bukkit/misc/MiscModule.java
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,9 @@
import org.skriptlang.skript.addon.AddonModule;
import org.skriptlang.skript.addon.HierarchicalAddonModule;
import org.skriptlang.skript.addon.SkriptAddon;
import org.skriptlang.skript.bukkit.lang.eventvalue.EventValueRegistry;
import org.skriptlang.skript.bukkit.misc.elements.effects.EffRotate;
import org.skriptlang.skript.bukkit.misc.elements.events.*;
import org.skriptlang.skript.bukkit.misc.elements.expressions.*;

public class MiscModule extends HierarchicalAddonModule {
Expand All @@ -14,7 +16,16 @@ public MiscModule(AddonModule parentModule) {

@Override
protected void loadSelf(SkriptAddon addon) {
EventValueRegistry eventValueRegistry = addon.registry(EventValueRegistry.class);

MiscEvents.register(moduleRegistry(addon), eventValueRegistry);

register(addon,
EvtAtTime::register,
EvtRealTime::register,
Comment thread
AnOwlBe marked this conversation as resolved.
Outdated
syntaxRegistry -> EvtPeriodical.register(syntaxRegistry, eventValueRegistry),
syntaxRegistry -> EvtScript.register(syntaxRegistry, eventValueRegistry),
syntaxRegistry -> EvtSkript.register(syntaxRegistry, eventValueRegistry),
EffRotate::register,
ExprBroadcastMessage::register,
ExprColorOf::register,
Expand Down
Loading
Loading