Skip to content
Merged
Show file tree
Hide file tree
Changes from all 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 build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ dependencies {
implementation("org.bstats:bstats-hytale:3.2.1")

// Skript-Parser
implementation("com.github.SkriptDev:skript-parser:1.0.12") {
implementation("com.github.SkriptDev:skript-parser:1.0.13") {
isTransitive = false
}
implementation("com.github.Zoltus:TinyMessage:2.0.1") {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -78,7 +78,7 @@ public static List<PlayerRef> getPlayerRefs(@Nullable World world) {
*/
public static @Nullable PlayerRef getPlayerRef(Player player) {
World world = player.getWorld();
assert world != null;
if (world == null) return null;

Ref<EntityStore> reference = player.getReference();
assert reference != null;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

import com.github.skriptdev.skript.api.skript.addon.HySkriptAddon;
import com.github.skriptdev.skript.api.skript.event.CancellableContext;
import com.github.skriptdev.skript.api.skript.registration.SkriptRegistration.AssetStoreType;
import com.github.skriptdev.skript.api.utils.Utils;
import com.github.skriptdev.skript.plugin.HySk;
import com.github.skriptdev.skript.plugin.Skript;
Expand Down Expand Up @@ -417,6 +418,13 @@ private void printTypes(BsonDocument mainDocs, SkriptRegistration registration)
for (String s : documentation.getDescription()) {
descriptionArray.add(new BsonString(s));
}
if (registration instanceof com.github.skriptdev.skript.api.skript.registration.SkriptRegistration) {
if (type instanceof AssetStoreType<?, ?>) {
String link = "[Click Here](https://github.com/SkriptDev/HySkript/wiki/_usage-" +
documentation.getName().replace(" ", "-") + ")";
descriptionArray.add(new BsonString("For all values: " + link));
}
}
syntaxDoc.put("description", descriptionArray);

// USAGE
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,11 @@
package com.github.skriptdev.skript.api.skript.docs;

import com.github.skriptdev.skript.api.skript.event.CancellableContext;
import com.github.skriptdev.skript.api.skript.registration.SkriptRegistration.AssetStoreType;
import com.github.skriptdev.skript.api.utils.Utils;
import com.github.skriptdev.skript.plugin.HySk;
import com.github.skriptdev.skript.plugin.Skript;
import com.hypixel.hytale.assetstore.map.DefaultAssetMap;
import io.github.syst3ms.skriptparser.Parser;
import io.github.syst3ms.skriptparser.docs.Documentation;
import io.github.syst3ms.skriptparser.lang.CodeSection;
Expand Down Expand Up @@ -222,7 +224,7 @@ private static void printFunctions(PrintWriter writer, SkriptRegistration reg) {
}
}
Documentation documentation = jf.getDocumentation();
if (documentation.isNoDoc()) return;
if (documentation == null || documentation.isNoDoc()) return;

// Create a pattern for a function
String pattern = String.format("%s(%s)", jf.getName(), String.join(", ", parameterNames));
Expand Down Expand Up @@ -258,6 +260,17 @@ private static void printTypes(PrintWriter writer, SkriptRegistration registrati
Documentation documentation = type.getDocumentation();
if (documentation.isNoDoc()) return;

if (type instanceof AssetStoreType<?,?> assetStoreType) {
List<String> keys = new ArrayList<>();
DefaultAssetMap<?, ?> assetMap = assetStoreType.getAssetMap();
assetMap.getAssetMap().keySet().forEach(key -> {
if (key instanceof String s) {
keys.add(s);
}
});
documentation.setUsage(String.join(", ", keys));

}
printDocumentation("Type", writer, documentation, List.of());
writer.println("- **Can Be Serialized**: " + type.getSerializer().isPresent());
});
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -181,21 +181,28 @@ public <R> AssetStoreRegistrar<C, K> since(String since) {
public void register() {
AssetStoreType<C, K> assetStoreType = new AssetStoreType<>(assetClass, baseName, pattern, literalParser,
toStringFunction, toVariableNameFunction,
defaultChanger, arithmetic, documentation, serializer, this.supplier);
defaultChanger, arithmetic, documentation, serializer, this.supplier, this.assetMap);
newTypes = true;
types.add(assetStoreType);
}
}

public static class AssetStoreType<C extends JsonAsset<K>, K extends String> extends Type<C> {

private final DefaultAssetMap<K, C> assetMap;

public AssetStoreType(Class<C> c, String baseName, String pattern, Function<String, ? extends C> literalParser,
Function<? super C, String> toStringFunction,
Function<? super C, String> toVariableNameFunction, Changer<? super C> defaultChanger,
Arithmetic<C, ?> arithmetic, Documentation documentation, TypeSerializer<C> serializer,
Supplier<Iterator<C>> supplier) {
Supplier<Iterator<C>> supplier, DefaultAssetMap<K, C> assetMap) {
super(c, baseName, pattern, literalParser, toStringFunction, toVariableNameFunction, defaultChanger,
arithmetic, documentation, serializer, supplier);
this.assetMap = assetMap;
}

public DefaultAssetMap<K, C> getAssetMap() {
return this.assetMap;
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@
import com.hypixel.hytale.math.vector.Vector3i;
import com.hypixel.hytale.server.core.HytaleServer;
import com.hypixel.hytale.server.core.Message;
import com.hypixel.hytale.server.core.command.system.CommandManager;
import com.hypixel.hytale.server.core.console.ConsoleSender;
import com.hypixel.hytale.server.core.universe.Universe;
import com.hypixel.hytale.server.core.universe.world.World;
import com.hypixel.hytale.server.core.universe.world.chunk.WorldChunk;
Expand Down Expand Up @@ -49,6 +51,11 @@ public void start() {
loadTests();
Utils.log("Finished loading test scripts!");

// Print docs
CommandManager commandManager = CommandManager.get();
commandManager.handleCommand(ConsoleSender.INSTANCE, "sk docs json");
commandManager.handleCommand(ConsoleSender.INSTANCE, "sk docs md");

// Make sure the world isn't paused
if (this.world.isPaused()) this.world.setPaused(false);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
import com.github.skriptdev.skript.plugin.elements.conditions.other.CondObjectOfType;
import com.github.skriptdev.skript.plugin.elements.conditions.player.CondPlayerHasPermission;
import com.github.skriptdev.skript.plugin.elements.conditions.player.CondPlayerHasPlayedBefore;
import com.github.skriptdev.skript.plugin.elements.conditions.player.CondPlayerIsOnline;
import com.github.skriptdev.skript.plugin.elements.conditions.player.CondPlayerMovementCrouching;
import com.github.skriptdev.skript.plugin.elements.conditions.player.CondPlayerMovementFalling;
import com.github.skriptdev.skript.plugin.elements.conditions.player.CondPlayerMovementFlying;
Expand Down Expand Up @@ -50,6 +51,7 @@ public static void register(SkriptRegistration registration) {
// PLAYER
CondPlayerHasPermission.register(registration);
CondPlayerHasPlayedBefore.register(registration);
CondPlayerIsOnline.register(registration);
CondPlayerMovementCanFly.register(registration);
CondPlayerMovementCrouching.register(registration);
CondPlayerMovementFalling.register(registration);
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
package com.github.skriptdev.skript.plugin.elements.conditions.player;

import com.github.skriptdev.skript.api.hytale.utils.PlayerUtils;
import com.github.skriptdev.skript.api.skript.registration.SkriptRegistration;
import com.hypixel.hytale.server.core.entity.entities.Player;
import com.hypixel.hytale.server.core.universe.PlayerRef;
import io.github.syst3ms.skriptparser.lang.TriggerContext;
import io.github.syst3ms.skriptparser.lang.properties.ConditionalType;
import io.github.syst3ms.skriptparser.lang.properties.PropertyConditional;
import org.jetbrains.annotations.NotNull;

public class CondPlayerIsOnline extends PropertyConditional<Object> {

public static void register(SkriptRegistration reg) {
reg.newPropertyConditional(CondPlayerIsOnline.class, "players/playerrefs",
ConditionalType.BE, "online")
.name("Player is Online")
.description("Check if a player is online.")
.examples("if player is online:",
"if player is not online:",
"while player is online:")
.since("INSERT VERSION")
.register();
}

@Override
public boolean check(@NotNull TriggerContext ctx) {
return getPerformer().check(ctx, o -> {
if (o instanceof Player player) {
PlayerRef playerRef = PlayerUtils.getPlayerRef(player);
return playerRef != null && playerRef.isValid();
} else if (o instanceof PlayerRef playerRef) {
return playerRef.isValid() && playerRef.getReference() != null;
}
return false;
}, isNegated());
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@
import com.github.skriptdev.skript.plugin.elements.effects.other.EffSendMessage;
import com.github.skriptdev.skript.plugin.elements.effects.other.EffSendTitle;
import com.github.skriptdev.skript.plugin.elements.effects.player.EffBan;
import com.github.skriptdev.skript.plugin.elements.effects.player.EffCameraEffect;
import com.github.skriptdev.skript.plugin.elements.effects.player.EffCloseWindows;
import com.github.skriptdev.skript.plugin.elements.effects.player.EffConnect;
import com.github.skriptdev.skript.plugin.elements.effects.player.EffKick;
Expand Down Expand Up @@ -72,6 +73,7 @@ public static void register(SkriptRegistration registration) {

// PLAYER
EffBan.register(registration);
EffCameraEffect.register(registration);
EffCloseWindows.register(registration);
EffConnect.register(registration);
EffKick.register(registration);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ public static void register(SkriptRegistration reg) {
.description("Applies an attack override to NPCs or clears their attack overrides.")
.examples("apply attack override Gun_Shoot to {_e}",
"clear attack overrides of {_e}")
.since("1.3.0")
.register();
}

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,89 @@
package com.github.skriptdev.skript.plugin.elements.effects.player;

import com.github.skriptdev.skript.api.hytale.utils.PlayerUtils;
import com.github.skriptdev.skript.api.skript.registration.SkriptRegistration;
import com.hypixel.hytale.protocol.packets.camera.CameraShakeEffect;
import com.hypixel.hytale.server.core.asset.type.camera.CameraEffect;
import com.hypixel.hytale.server.core.entity.entities.Player;
import com.hypixel.hytale.server.core.io.PacketHandler;
import com.hypixel.hytale.server.core.universe.PlayerRef;
import io.github.syst3ms.skriptparser.lang.Effect;
import io.github.syst3ms.skriptparser.lang.Expression;
import io.github.syst3ms.skriptparser.lang.TriggerContext;
import io.github.syst3ms.skriptparser.parsing.ParseContext;
import org.jetbrains.annotations.NotNull;

public class EffCameraEffect extends Effect {

public static void register(SkriptRegistration reg) {
reg.newEffect(EffCameraEffect.class,
"apply camera effect %cameraeffect% to %players/playerrefs%",
"apply camera effect %cameraeffect% with intensity %number% to %players/playerrefs%")
.name("Apply Camera Effect")
.description("Applies a camera effect to the specified players with an optional intensity.")
.examples("apply camera effect Impact_Strong to player",
"apply camera effect Mace_Explode with intensity 2 to player")
.since("INSERT VERSION")
.register();
}

private Expression<CameraEffect> cameraEffect;
private Expression<Number> intensity;
private Expression<?> players;


@SuppressWarnings("unchecked")
@Override
public boolean init(Expression<?> @NotNull [] expressions, int matchedPattern, @NotNull ParseContext parseContext) {
if (matchedPattern == 0) {
this.cameraEffect = (Expression<CameraEffect>) expressions[0];
this.players = expressions[1];
} else {
this.cameraEffect = (Expression<CameraEffect>) expressions[0];
this.intensity = (Expression<Number>) expressions[1];
this.players = expressions[2];
}
return true;
}

@Override
protected void execute(@NotNull TriggerContext ctx) {
CameraEffect effect = this.cameraEffect.getSingle(ctx).orElse(null);
if (effect == null) return;

CameraShakeEffect cameraShakePacket = null;
if (this.intensity != null) {
Number number = this.intensity.getSingle(ctx).orElse(null);
if (number != null) {
float v = number.floatValue();
cameraShakePacket = effect.createCameraShakePacket(v);
}
}
if (cameraShakePacket == null) {
cameraShakePacket = effect.createCameraShakePacket();
}

for (Object object : this.players.getArray(ctx)) {
PacketHandler packetHandler;
if (object instanceof Player player) {
PlayerRef playerRef = PlayerUtils.getPlayerRef(player);
if (playerRef == null) continue;
packetHandler = playerRef.getPacketHandler();
} else if (object instanceof PlayerRef playerRef) {
packetHandler = playerRef.getPacketHandler();
} else {
continue;
}

packetHandler.writeNoCache(cameraShakePacket);
}
}

@Override
public String toString(@NotNull TriggerContext ctx, boolean debug) {
String intensity = this.intensity != null ? " with intensity " + this.intensity.toString(ctx, debug) : "";
return "apply camera effect " + this.cameraEffect.toString(ctx, debug) + intensity
+ " to " + this.players.toString(ctx, debug);
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
import com.github.skriptdev.skript.plugin.elements.events.entity.EvtEntityPickupItem;
import com.github.skriptdev.skript.plugin.elements.events.entity.EvtEntityRemove;
import com.github.skriptdev.skript.plugin.elements.events.entity.EvtLivingEntityInvChange;
import com.github.skriptdev.skript.plugin.elements.events.entity.EvtTeleport;
import com.github.skriptdev.skript.plugin.elements.events.inventory.EvtInventoryMove;
import com.github.skriptdev.skript.plugin.elements.events.inventory.EvtItemStackSlotTransaction;
import com.github.skriptdev.skript.plugin.elements.events.inventory.EvtSlotTransaction;
Expand Down Expand Up @@ -63,6 +64,7 @@ public static void register(SkriptRegistration registration) {
EvtEntityPickupItem.register(registration);
EvtEntityRemove.register(registration);
EvtLivingEntityInvChange.register(registration);
EvtTeleport.register(registration);

// INVENTORY
InventoryListener.registerListener(registration);
Expand Down
Loading
Loading