mirror of
https://github.com/Xiao-MoMi/craft-engine.git
synced 2025-12-30 20:39:10 +00:00
好玩哦
This commit is contained in:
@@ -0,0 +1,35 @@
|
||||
package net.momirealms.craftengine.bukkit.compatibility.skript.classes;
|
||||
|
||||
import ch.njol.skript.classes.ClassInfo;
|
||||
import ch.njol.skript.classes.Parser;
|
||||
import ch.njol.skript.lang.ParseContext;
|
||||
import ch.njol.skript.registrations.Classes;
|
||||
import net.momirealms.craftengine.core.block.BlockStateParser;
|
||||
import net.momirealms.craftengine.core.block.ImmutableBlockState;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
public class CraftEngineClasses {
|
||||
|
||||
public static void register() {
|
||||
Classes.registerClass(new ClassInfo<>(ImmutableBlockState.class, "customblockstate")
|
||||
.user("custom block state")
|
||||
.name("Custom Block State")
|
||||
.parser(new Parser<>() {
|
||||
@Override
|
||||
public String toString(ImmutableBlockState o, int flags) {
|
||||
return o.toString();
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toVariableNameString(ImmutableBlockState o) {
|
||||
return "customblockstate:" + o.toString();
|
||||
}
|
||||
|
||||
@Override
|
||||
public @Nullable ImmutableBlockState parse(String s, ParseContext context) {
|
||||
return BlockStateParser.deserialize(s);
|
||||
}
|
||||
})
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,41 @@
|
||||
package net.momirealms.craftengine.bukkit.compatibility.skript.condition;
|
||||
|
||||
import ch.njol.skript.Skript;
|
||||
import ch.njol.skript.conditions.base.PropertyCondition;
|
||||
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.api.CraftEngineBlocks;
|
||||
import org.bukkit.block.Block;
|
||||
import org.bukkit.event.Event;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
public class CondIsBlockCustomBlock extends Condition {
|
||||
|
||||
public static void register() {
|
||||
Skript.registerCondition(CondIsBlockCustomBlock.class,
|
||||
"%blocks% (is|are) custom block(s)",
|
||||
"%blocks% (is|are)(n't| not) custom block(s)");
|
||||
}
|
||||
|
||||
private Expression<Block> blocks;
|
||||
|
||||
@Override
|
||||
public boolean check(Event event) {
|
||||
return blocks.check(event, CraftEngineBlocks::isCustomBlock, isNegated());
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString(@Nullable Event event, boolean debug) {
|
||||
return PropertyCondition.toString(this, PropertyCondition.PropertyType.BE, event, debug, blocks, "custom block");
|
||||
}
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
@Override
|
||||
public boolean init(Expression<?>[] expressions, int matchedPattern, Kleenean isDelayed, SkriptParser.ParseResult parseResult) {
|
||||
blocks = (Expression<Block>) expressions[0];
|
||||
setNegated(matchedPattern > 1);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
package net.momirealms.craftengine.bukkit.compatibility.skript;
|
||||
package net.momirealms.craftengine.bukkit.compatibility.skript.event;
|
||||
|
||||
import ch.njol.skript.Skript;
|
||||
import ch.njol.skript.lang.Literal;
|
||||
@@ -20,7 +20,7 @@ public class EvtCustomBlock extends SkriptEvent {
|
||||
public static void register() {
|
||||
Skript.registerEvent("Break Custom Block", EvtCustomBlock.class, CustomBlockBreakEvent.class, "[customblock] (break[ing]|1¦min(e|ing)) [[of] %-strings%]")
|
||||
.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, CustomBlockBreakEvent.class, "[customblock] (plac(e|ing)|build[ing]) [[of] %-strings%]")
|
||||
Skript.registerEvent("Place Custom Block", EvtCustomBlock.class, CustomBlockPlaceEvent.class, "[customblock] (plac(e|ing)|build[ing]) [[of] %-strings%]")
|
||||
.description("Called when a player places a custom block.");
|
||||
}
|
||||
|
||||
@@ -0,0 +1,42 @@
|
||||
package net.momirealms.craftengine.bukkit.compatibility.skript.expression;
|
||||
|
||||
import ch.njol.skript.expressions.base.SimplePropertyExpression;
|
||||
import net.momirealms.craftengine.bukkit.api.CraftEngineBlocks;
|
||||
import net.momirealms.craftengine.core.block.CustomBlock;
|
||||
import net.momirealms.craftengine.core.block.ImmutableBlockState;
|
||||
import org.bukkit.block.Block;
|
||||
import org.bukkit.block.data.BlockData;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import java.util.Optional;
|
||||
|
||||
public class ExprBlockCustomBlockID extends SimplePropertyExpression<Object, String> {
|
||||
|
||||
public static void register() {
|
||||
register(ExprBlockCustomBlockID.class, String.class, "block[ ]custom block id", "blocks/blockdata/customblockstates");
|
||||
}
|
||||
|
||||
@Override
|
||||
public @Nullable String convert(Object object) {
|
||||
System.out.println(object.getClass());
|
||||
if (object instanceof ImmutableBlockState immutableBlockState)
|
||||
return immutableBlockState.owner().value().id().toString();
|
||||
if (object instanceof CustomBlock customBlock)
|
||||
return customBlock.id().toString();
|
||||
if (object instanceof Block block)
|
||||
return Optional.ofNullable(CraftEngineBlocks.getCustomBlockState(block)).map(it -> it.owner().value().id().toString()).orElse(null);
|
||||
if (object instanceof BlockData blockData)
|
||||
return Optional.ofNullable(CraftEngineBlocks.getCustomBlockState(blockData)).map(it -> it.owner().value().id().toString()).orElse(null);
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected String getPropertyName() {
|
||||
return "custom block id";
|
||||
}
|
||||
|
||||
@Override
|
||||
public Class<? extends String> getReturnType() {
|
||||
return String.class;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,38 @@
|
||||
package net.momirealms.craftengine.bukkit.compatibility.skript.expression;
|
||||
|
||||
import ch.njol.skript.expressions.base.SimplePropertyExpression;
|
||||
import net.momirealms.craftengine.bukkit.api.CraftEngineBlocks;
|
||||
import net.momirealms.craftengine.core.block.CustomBlock;
|
||||
import net.momirealms.craftengine.core.block.ImmutableBlockState;
|
||||
import org.bukkit.block.Block;
|
||||
import org.bukkit.block.BlockState;
|
||||
import org.bukkit.block.data.BlockData;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import java.util.Optional;
|
||||
|
||||
public class ExprBlockCustomBlockState extends SimplePropertyExpression<Object, ImmutableBlockState> {
|
||||
|
||||
public static void register() {
|
||||
register(ExprBlockCustomBlockState.class, ImmutableBlockState.class, "block[ ]custom block state", "blocks/blockdata");
|
||||
}
|
||||
|
||||
@Override
|
||||
public @Nullable ImmutableBlockState convert(Object object) {
|
||||
if (object instanceof Block block)
|
||||
return CraftEngineBlocks.getCustomBlockState(block);
|
||||
if (object instanceof BlockData blockData)
|
||||
return CraftEngineBlocks.getCustomBlockState(blockData);
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected String getPropertyName() {
|
||||
return "custom block state";
|
||||
}
|
||||
|
||||
@Override
|
||||
public Class<? extends ImmutableBlockState> getReturnType() {
|
||||
return ImmutableBlockState.class;
|
||||
}
|
||||
}
|
||||
@@ -1,12 +1,17 @@
|
||||
package net.momirealms.craftengine.bukkit.plugin;
|
||||
|
||||
import ch.njol.skript.Skript;
|
||||
import net.momirealms.antigrieflib.AntiGriefLib;
|
||||
import net.momirealms.craftengine.bukkit.advancement.BukkitAdvancementManager;
|
||||
import net.momirealms.craftengine.bukkit.api.event.CraftEngineReloadEvent;
|
||||
import net.momirealms.craftengine.bukkit.block.BukkitBlockManager;
|
||||
import net.momirealms.craftengine.bukkit.block.behavior.BukkitBlockBehaviors;
|
||||
import net.momirealms.craftengine.bukkit.compatibility.papi.PlaceholderAPIUtils;
|
||||
import net.momirealms.craftengine.bukkit.compatibility.skript.EvtCustomBlock;
|
||||
import net.momirealms.craftengine.bukkit.compatibility.skript.classes.CraftEngineClasses;
|
||||
import net.momirealms.craftengine.bukkit.compatibility.skript.condition.CondIsBlockCustomBlock;
|
||||
import net.momirealms.craftengine.bukkit.compatibility.skript.event.EvtCustomBlock;
|
||||
import net.momirealms.craftengine.bukkit.compatibility.skript.expression.ExprBlockCustomBlockID;
|
||||
import net.momirealms.craftengine.bukkit.compatibility.skript.expression.ExprBlockCustomBlockState;
|
||||
import net.momirealms.craftengine.bukkit.entity.furniture.BukkitFurnitureManager;
|
||||
import net.momirealms.craftengine.bukkit.entity.furniture.hitbox.BukkitHitBoxTypes;
|
||||
import net.momirealms.craftengine.bukkit.font.BukkitFontManager;
|
||||
@@ -168,7 +173,11 @@ public class BukkitCraftEngine extends CraftEngine {
|
||||
}
|
||||
// skript
|
||||
if (this.isPluginEnabled("Skript")) {
|
||||
CraftEngineClasses.register();
|
||||
EvtCustomBlock.register();
|
||||
CondIsBlockCustomBlock.register();
|
||||
ExprBlockCustomBlockID.register();
|
||||
ExprBlockCustomBlockState.register();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user