Skip to content
Open
Show file tree
Hide file tree
Changes from 13 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
108 changes: 0 additions & 108 deletions src/main/java/ch/njol/skript/events/EvtPeriodical.java

This file was deleted.

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,
syntaxRegistry -> EvtPeriodical.register(syntaxRegistry, eventValueRegistry),
EvtRealTime::register,
syntaxRegistry -> EvtScript.register(syntaxRegistry, eventValueRegistry),
syntaxRegistry -> EvtSkript.register(syntaxRegistry, eventValueRegistry),
EffRotate::register,
ExprBroadcastMessage::register,
ExprColorOf::register,
Expand Down
Loading
Loading