mirror of
https://github.com/Xiao-MoMi/craft-engine.git
synced 2025-12-28 03:19:14 +00:00
调整事件, 添加ce字段, 避免和sk本身的语法冲突
This commit is contained in:
@@ -1,12 +1,14 @@
|
||||
package net.momirealms.craftengine.bukkit.compatibility.skript;
|
||||
|
||||
import net.momirealms.craftengine.bukkit.compatibility.skript.clazz.CraftEngineClasses;
|
||||
import net.momirealms.craftengine.bukkit.compatibility.skript.condition.CondIsCraftEngineHasBeenLoad;
|
||||
import net.momirealms.craftengine.bukkit.compatibility.skript.condition.CondIsCustomBlock;
|
||||
import net.momirealms.craftengine.bukkit.compatibility.skript.condition.CondIsCustomItem;
|
||||
import net.momirealms.craftengine.bukkit.compatibility.skript.condition.CondIsFurniture;
|
||||
import net.momirealms.craftengine.bukkit.compatibility.skript.effect.EffPlaceCustomBlock;
|
||||
import net.momirealms.craftengine.bukkit.compatibility.skript.effect.EffPlaceFurniture;
|
||||
import net.momirealms.craftengine.bukkit.compatibility.skript.effect.EffRemoveFurniture;
|
||||
import net.momirealms.craftengine.bukkit.compatibility.skript.event.EvtCraftEngineReload;
|
||||
import net.momirealms.craftengine.bukkit.compatibility.skript.event.EvtCustomBlock;
|
||||
import net.momirealms.craftengine.bukkit.compatibility.skript.event.EvtCustomClick;
|
||||
import net.momirealms.craftengine.bukkit.compatibility.skript.event.EvtCustomFurniture;
|
||||
@@ -16,9 +18,11 @@ public class SkriptHook {
|
||||
|
||||
public static void register() {
|
||||
CraftEngineClasses.register();
|
||||
EvtCraftEngineReload.register();
|
||||
EvtCustomBlock.register();
|
||||
EvtCustomFurniture.register();
|
||||
EvtCustomClick.register();
|
||||
CondIsCraftEngineHasBeenLoad.register();
|
||||
CondIsCustomBlock.register();
|
||||
CondIsFurniture.register();
|
||||
CondIsCustomItem.register();
|
||||
|
||||
@@ -0,0 +1,45 @@
|
||||
package net.momirealms.craftengine.bukkit.compatibility.skript.condition;
|
||||
|
||||
import ch.njol.skript.Skript;
|
||||
import ch.njol.skript.doc.Description;
|
||||
import ch.njol.skript.doc.Name;
|
||||
import ch.njol.skript.doc.Since;
|
||||
import ch.njol.skript.lang.Condition;
|
||||
import ch.njol.skript.lang.Expression;
|
||||
import ch.njol.skript.lang.SkriptParser;
|
||||
import ch.njol.util.Kleenean;
|
||||
import net.momirealms.craftengine.bukkit.compatibility.skript.event.EvtCraftEngineReload;
|
||||
import org.bukkit.event.Event;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
@Name("CraftEngine has been load")
|
||||
@Description({"Checks CraftEngine has been load."})
|
||||
@Since("1.0")
|
||||
public class CondIsCraftEngineHasBeenLoad extends Condition {
|
||||
|
||||
public static void register() {
|
||||
Skript.registerCondition(CondIsCraftEngineHasBeenLoad.class,
|
||||
"(ce|craft-engine) has been load[ed]",
|
||||
"(ce|craft-engine) has not been load[ed] [yet]"
|
||||
);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean init(Expression<?>[] expressions, int matchedPattern, Kleenean isDelayed, SkriptParser.ParseResult parseResult) {
|
||||
setNegated(matchedPattern == 1);
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean check(Event event) {
|
||||
boolean beenLoad = EvtCraftEngineReload.hasBeenLoad();
|
||||
return isNegated() ? !beenLoad : beenLoad;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString(@Nullable Event event, boolean debug) {
|
||||
return "craft-engine has " + (isNegated() ? "not " : "") + "been loaded";
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,54 @@
|
||||
package net.momirealms.craftengine.bukkit.compatibility.skript.event;
|
||||
|
||||
import ch.njol.skript.Skript;
|
||||
import ch.njol.skript.doc.Description;
|
||||
import ch.njol.skript.doc.Name;
|
||||
import ch.njol.skript.doc.Since;
|
||||
import ch.njol.skript.lang.Literal;
|
||||
import ch.njol.skript.lang.SkriptEvent;
|
||||
import ch.njol.skript.lang.SkriptParser;
|
||||
import net.momirealms.craftengine.bukkit.api.event.CraftEngineReloadEvent;
|
||||
import org.bukkit.event.Event;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
@Name("On CraftEngine Reload")
|
||||
@Description({"Fires when CraftEngine reload"})
|
||||
@Since("1.0")
|
||||
public class EvtCraftEngineReload extends SkriptEvent {
|
||||
|
||||
public static void register() {
|
||||
Skript.registerEvent("CraftEngine Loaded", EvtCraftEngineReload.class, CraftEngineReloadEvent.class, "(ce|craft(engine|-engine)) [first] (load[ed]|reload)")
|
||||
.description("Called when Craft-Engine resource loaded.");
|
||||
}
|
||||
|
||||
private boolean onlyCheckFirstCall;
|
||||
private static boolean hasBeenCalled = false;
|
||||
|
||||
@Override
|
||||
public boolean init(Literal<?>[] args, int matchedPattern, SkriptParser.ParseResult parser) {
|
||||
// 检查是否包含 "first" 关键词
|
||||
String expr = parser.expr;
|
||||
this.onlyCheckFirstCall = expr.contains("first");
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean check(Event event) {
|
||||
if (event instanceof CraftEngineReloadEvent reloadEvent) return false;
|
||||
if (onlyCheckFirstCall) {
|
||||
if (hasBeenCalled) return false; // 如果 hasBeenCalled 已经为 true,代表已经调用过了, 故返回 false。
|
||||
hasBeenCalled = true;
|
||||
return true;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString(@Nullable Event event, boolean debug) {
|
||||
return onlyCheckFirstCall ? "craftengine first load" : "craftengine reload";
|
||||
}
|
||||
|
||||
public static boolean hasBeenLoad() {
|
||||
return hasBeenCalled;
|
||||
}
|
||||
}
|
||||
@@ -1,6 +1,9 @@
|
||||
package net.momirealms.craftengine.bukkit.compatibility.skript.event;
|
||||
|
||||
import ch.njol.skript.Skript;
|
||||
import ch.njol.skript.doc.Description;
|
||||
import ch.njol.skript.doc.Name;
|
||||
import ch.njol.skript.doc.Since;
|
||||
import ch.njol.skript.lang.Literal;
|
||||
import ch.njol.skript.lang.SkriptEvent;
|
||||
import ch.njol.skript.lang.SkriptParser;
|
||||
@@ -16,12 +19,15 @@ import org.jetbrains.annotations.Nullable;
|
||||
import java.util.Arrays;
|
||||
|
||||
@SuppressWarnings({"unchecked"})
|
||||
@Name("On Custom Block Place And Break")
|
||||
@Description({"Fires when a Custom block gets place and broken"})
|
||||
@Since("1.0")
|
||||
public class EvtCustomBlock extends SkriptEvent {
|
||||
|
||||
public static void register() {
|
||||
Skript.registerEvent("Break Custom Block", EvtCustomBlock.class, CustomBlockBreakEvent.class, "(break[ing]|1¦min(e|ing)) [[of] %-unsafeblockstatematchers%]")
|
||||
Skript.registerEvent("Break Custom Block", EvtCustomBlock.class, CustomBlockBreakEvent.class, "(break[ing]|1¦min(e|ing)) of (custom|ce|craft-engine) block [[of] %-unsafeblockstatematchers%]")
|
||||
.description("Called when a custom block is broken by a player. If you use 'on mine', only events where the broken block dropped something will call the trigger.");
|
||||
Skript.registerEvent("Place Custom Block", EvtCustomBlock.class, CustomBlockPlaceEvent.class, "(plac(e|ing)|build[ing]) [[of] %-unsafeblockstatematchers%]")
|
||||
Skript.registerEvent("Place Custom Block", EvtCustomBlock.class, CustomBlockPlaceEvent.class, "(plac(e|ing)|build[ing]) of (custom|ce|craft-engine) block [[of] %-unsafeblockstatematchers%]")
|
||||
.description("Called when a player places a custom block.");
|
||||
}
|
||||
|
||||
|
||||
@@ -3,6 +3,9 @@ package net.momirealms.craftengine.bukkit.compatibility.skript.event;
|
||||
import ch.njol.skript.Skript;
|
||||
import ch.njol.skript.aliases.ItemType;
|
||||
import ch.njol.skript.bukkitutil.ClickEventTracker;
|
||||
import ch.njol.skript.doc.Description;
|
||||
import ch.njol.skript.doc.Name;
|
||||
import ch.njol.skript.doc.Since;
|
||||
import ch.njol.skript.lang.Literal;
|
||||
import ch.njol.skript.lang.SkriptEvent;
|
||||
import ch.njol.skript.lang.SkriptParser;
|
||||
@@ -17,6 +20,9 @@ import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import java.util.function.Predicate;
|
||||
|
||||
@Name("On Click with Custom Item")
|
||||
@Description({"Fires when click a custom item"})
|
||||
@Since("1.0")
|
||||
public class EvtCustomClick extends SkriptEvent {
|
||||
|
||||
private final static int RIGHT = 1, LEFT = 2, ANY = RIGHT | LEFT;
|
||||
@@ -25,8 +31,8 @@ public class EvtCustomClick extends SkriptEvent {
|
||||
@SuppressWarnings("unchecked")
|
||||
public static void register() {
|
||||
Skript.registerEvent("Interact Custom Block Furniture", EvtCustomClick.class, new Class[]{CustomBlockInteractEvent.class, FurnitureInteractEvent.class},
|
||||
"[(" + RIGHT + ":right|" + LEFT + ":left)(| |-)][mouse(| |-)]click[ing] [on %-unsafeblockstatematchers/strings%] [(with|using|holding) %-itemtype%]",
|
||||
"[(" + RIGHT + ":right|" + LEFT + ":left)(| |-)][mouse(| |-)]click[ing] (with|using|holding) %itemtype% on %unsafeblockstatematchers/strings%");
|
||||
"[(" + RIGHT + ":right|" + LEFT + ":left)(| |-)][mouse(| |-)]click[ing] of (custom|ce|craft-engine) item[s] [on %-unsafeblockstatematchers/strings%] [(with|using|holding) %-itemtype%]",
|
||||
"[(" + RIGHT + ":right|" + LEFT + ":left)(| |-)][mouse(| |-)]click[ing] of (custom|ce|craft-engine) item[s] (with|using|holding) %itemtype% on %unsafeblockstatematchers/strings%");
|
||||
}
|
||||
|
||||
private @Nullable Literal<?> type;
|
||||
|
||||
@@ -1,6 +1,9 @@
|
||||
package net.momirealms.craftengine.bukkit.compatibility.skript.event;
|
||||
|
||||
import ch.njol.skript.Skript;
|
||||
import ch.njol.skript.doc.Description;
|
||||
import ch.njol.skript.doc.Name;
|
||||
import ch.njol.skript.doc.Since;
|
||||
import ch.njol.skript.lang.Literal;
|
||||
import ch.njol.skript.lang.SkriptEvent;
|
||||
import ch.njol.skript.lang.SkriptParser;
|
||||
@@ -12,12 +15,15 @@ import org.jetbrains.annotations.Nullable;
|
||||
import java.util.Arrays;
|
||||
|
||||
@SuppressWarnings({"unchecked"})
|
||||
@Name("On Custom Furniture Place And Break")
|
||||
@Description({"Fires when a Custom furniture gets place and broken"})
|
||||
@Since("1.0")
|
||||
public class EvtCustomFurniture extends SkriptEvent {
|
||||
|
||||
public static void register() {
|
||||
Skript.registerEvent("Break Furniture", EvtCustomFurniture.class, FurnitureBreakEvent.class, "(break[ing]) [[of] %-strings%]")
|
||||
Skript.registerEvent("Break Furniture", EvtCustomFurniture.class, FurnitureBreakEvent.class, "(break[ing]) of (custom|ce|craft-engine) furniture[s] [[of] %-strings%]")
|
||||
.description("Called when a furniture is broken by a player.");
|
||||
Skript.registerEvent("Place Furniture", EvtCustomFurniture.class, FurniturePlaceEvent.class, "(plac(e|ing)|build[ing]) [[of] %-strings%]")
|
||||
Skript.registerEvent("Place Furniture", EvtCustomFurniture.class, FurniturePlaceEvent.class, "(plac(e|ing)|build[ing]) of (custom|ce|craft-engine) furniture[s] [[of] %-strings%]")
|
||||
.description("Called when a player places a furniture.");
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user