Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
22 commits
Select commit Hold shift + click to select a range
f13aab0
build.gradle.kts - update Hytale to pre-release
ShaneBeee Mar 6, 2026
6d60e6a
EvtPlayerSetupConnect - switch to message
ShaneBeee Mar 6, 2026
f22b9a3
EffKick - switch to message
ShaneBeee Mar 6, 2026
7404367
EffBan - switch to message for kick
ShaneBeee Mar 6, 2026
fadc52a
Deprecate Inventory stuff
ShaneBeee Mar 6, 2026
76b7759
ExprInventory - decided to keep this, and just have it return an item…
ShaneBeee Mar 6, 2026
97b3fff
ExprInventory - forgot to remove warning
ShaneBeee Mar 6, 2026
d405ae1
ExprActiveSlot - more deprecation stuff
ShaneBeee Mar 6, 2026
a903365
ExprInventory - change again
ShaneBeee Mar 7, 2026
db3102f
Merge branch 'dev/feature' into dev/update-4-prep
ShaneBeee Mar 7, 2026
206301f
Update to next pre-release and fix some changes
ShaneBeee Mar 12, 2026
724f8a7
build.gradle.kts - update pre-release
ShaneBeee Mar 12, 2026
cfbeffd
Merge branch 'dev/feature' into dev/update-4-prep
ShaneBeee Mar 12, 2026
a77c4d6
build.gradle.kts - fix version - good gravy github
ShaneBeee Mar 12, 2026
05086f1
build.gradle.kts - fix parser - jesus christ github
ShaneBeee Mar 12, 2026
412f67d
EntityReferenceUtils - fix missing import
ShaneBeee Mar 12, 2026
b3d0ffe
Merge branch 'dev/feature' into dev/update-4-prep
ShaneBeee Mar 13, 2026
c48edc2
Update pre-release and remove a bunch of stuff
ShaneBeee Mar 19, 2026
80dd261
Merge branch 'dev/feature' into dev/update-4-prep
ShaneBeee Mar 21, 2026
cbe53a3
Merge pull request #22 from SkriptDev/dev/update-4-prep
ShaneBeee Mar 26, 2026
16be680
build.gradle.kts - update to Hytale release
ShaneBeee Mar 26, 2026
5dea895
Add player functions
ShaneBeee Mar 26, 2026
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 @@ -9,7 +9,7 @@ java.sourceCompatibility = JavaVersion.VERSION_25

group = "com.github.SkriptDev"
val projectVersion = "1.5.0"
val hytaleVersion = "2026.02.19-1a311a592"
val hytaleVersion = "2026.03.26-89796e57b"
// You can find Hytale versions on their maven repo:
// https://maven.hytale.com/release/com/hypixel/hytale/Server/maven-metadata.xml
// https://maven.hytale.com/pre-release/com/hypixel/hytale/Server/maven-metadata.xml
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,13 +5,13 @@
import com.hypixel.hytale.component.spatial.SpatialResource;
import com.hypixel.hytale.math.vector.Location;
import com.hypixel.hytale.math.vector.Vector3d;
import com.hypixel.hytale.server.core.NameMatching;
import com.hypixel.hytale.server.core.entity.entities.Player;
import com.hypixel.hytale.server.core.modules.entity.EntityModule;
import com.hypixel.hytale.server.core.universe.PlayerRef;
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.storage.EntityStore;
import it.unimi.dsi.fastutil.objects.ObjectList;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;

Expand Down Expand Up @@ -87,6 +87,10 @@ public static List<PlayerRef> getPlayerRefs(@Nullable World world) {
return store.getComponent(reference, PlayerRef.getComponentType());
}

public static @Nullable PlayerRef getPlayerRef(String name) {
return Universe.get().getPlayerByUsername(name, NameMatching.EXACT_IGNORE_CASE);
}

/**
* Get a Player from a PlayerRef.
*
Expand Down Expand Up @@ -116,7 +120,7 @@ public static List<PlayerRef> getPlayerRefs(@Nullable World world) {
Store<EntityStore> store = world.getEntityStore().getStore();
if (store == null) return List.of();

ObjectList<Ref<EntityStore>> results = SpatialResource.getThreadLocalReferenceList();
List<Ref<EntityStore>> results = SpatialResource.getThreadLocalReferenceList();
SpatialResource<Ref<EntityStore>, EntityStore> playerSpatialResource = store.getResource(EntityModule.get()
.getPlayerSpatialResourceType());
playerSpatialResource.getSpatialStructure().collect(location.getPosition(), (float) radius, results);
Expand Down Expand Up @@ -146,7 +150,7 @@ public static List<PlayerRef> getPlayerRefs(@Nullable World world) {
Vector3d min = Vector3d.min(loc1.getPosition(), loc2.getPosition());
Vector3d max = Vector3d.max(loc1.getPosition(), loc2.getPosition());

ObjectList<Ref<EntityStore>> results = SpatialResource.getThreadLocalReferenceList();
List<Ref<EntityStore>> results = SpatialResource.getThreadLocalReferenceList();
SpatialResource<Ref<EntityStore>, EntityStore> playerSpatialResource = store.getResource(EntityModule.get()
.getPlayerSpatialResourceType());
playerSpatialResource.getSpatialStructure().collectBox(min, max, results);
Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
package com.github.skriptdev.skript.plugin.elements.conditions.item;

import com.github.skriptdev.skript.api.skript.registration.SkriptRegistration;
import com.hypixel.hytale.server.core.inventory.Inventory;
import com.hypixel.hytale.server.core.inventory.ItemStack;
import com.hypixel.hytale.server.core.inventory.container.ItemContainer;
import io.github.syst3ms.skriptparser.lang.Expression;
Expand All @@ -14,23 +13,23 @@ public class CondInventoryCanHold extends ConditionalExpression {

public static void register(SkriptRegistration reg) {
reg.newExpression(CondInventoryCanHold.class, Boolean.class, true,
"%inventory/itemcontainer% can hold %itemstacks%",
"%inventory/itemcontainer% (can't|cannot) hold %itemstacks%")
.name("Inventory Can Hold")
.description("Checks if the inventory can hold the given items.")
"%itemcontainer% can hold %itemstacks%",
"%itemcontainer% (can't|cannot) hold %itemstacks%")
.name("ItemContainer Can Hold")
.description("Checks if the ItemContainer can hold the given items.")
.examples("if inventory of player can hold itemstack of ingredient_poop:",
"if inventory of player can hold {_itemstack}:")
.since("1.0.0")
.register();
}

private Expression<?> holders;
private Expression<ItemContainer> holders;
private Expression<ItemStack> items;

@SuppressWarnings("unchecked")
@Override
public boolean init(Expression<?>[] expressions, int matchedPattern, @NotNull ParseContext parseContext) {
this.holders = expressions[0];
this.holders = (Expression<ItemContainer>) expressions[0];
this.items = (Expression<ItemStack>) expressions[1];
setNegated(matchedPattern == 1);
return true;
Expand All @@ -39,14 +38,7 @@ public boolean init(Expression<?>[] expressions, int matchedPattern, @NotNull Pa
@Override
public boolean check(@NotNull TriggerContext ctx) {
return this.holders.check(ctx, holder ->
this.items.check(ctx, item -> {
if (holder instanceof Inventory inventory) {
return inventory.getCombinedEverything().canAddItemStack(item);
} else if (holder instanceof ItemContainer container) {
return container.canAddItemStack(item);
}
return false;
}), isNegated());
this.items.check(ctx, holder::canAddItemStack), isNegated());
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

import com.github.skriptdev.skript.api.utils.ReflectionUtils;
import com.github.skriptdev.skript.api.utils.Utils;
import com.hypixel.hytale.server.core.Message;
import com.hypixel.hytale.server.core.command.system.CommandSender;
import com.hypixel.hytale.server.core.console.ConsoleSender;
import com.hypixel.hytale.server.core.entity.entities.Player;
Expand Down Expand Up @@ -147,7 +148,7 @@ protected void execute(@NotNull TriggerContext ctx) {
}

bans.put(target, ban);
EffKick.kick(o, reason);
EffKick.kick(o, Message.raw(reason));
}

// Put them all in at once
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package com.github.skriptdev.skript.plugin.elements.effects.player;

import com.hypixel.hytale.server.core.Message;
import com.hypixel.hytale.server.core.entity.entities.Player;
import com.hypixel.hytale.server.core.universe.PlayerRef;
import io.github.syst3ms.skriptparser.lang.Effect;
Expand All @@ -15,7 +16,7 @@ public class EffKick extends Effect {

public static void register(SkriptRegistration registration) {
registration.newEffect(EffKick.class, "kick %players/playerrefs%",
"kick %players/playerrefs% (for reason|due to|because) %string%")
"kick %players/playerrefs% (for reason|due to|because) %string/message%")
.name("Kick Player")
.description("Kicks the specified players with an optional reason.")
.examples("kick all players due to \"Cheating!\"",
Expand All @@ -26,24 +27,30 @@ public static void register(SkriptRegistration registration) {
}

private Expression<?> players;
private Expression<String> reason;
private Expression<?> reason;

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

@Override
protected void execute(@NotNull TriggerContext ctx) {
String reason = "You were kicked.";
Message reason = Message.raw("You were kicked.");
if (this.reason != null) {
Optional<? extends String> single = this.reason.getSingle(ctx);
if (single.isPresent()) reason = single.get();
Optional<?> single = this.reason.getSingle(ctx);
if (single.isPresent()) {
Object o = single.get();
if (o instanceof Message message) {
reason = message;
} else if (o instanceof String s) {
reason = Message.raw(s);
}
}
}

for (Object o : this.players.getArray(ctx)) {
Expand All @@ -58,7 +65,7 @@ public String toString(@NotNull TriggerContext ctx, boolean debug) {
}

@SuppressWarnings("removal")
public static void kick(Object player, String reason) {
public static void kick(Object player, Message reason) {
if (player instanceof PlayerRef ref) {
ref.getPacketHandler().disconnect(reason);
} else if (player instanceof Player p) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,6 @@
import io.github.syst3ms.skriptparser.lang.Expression;
import io.github.syst3ms.skriptparser.lang.TriggerContext;
import io.github.syst3ms.skriptparser.parsing.ParseContext;
import it.unimi.dsi.fastutil.objects.ObjectList;
import org.jetbrains.annotations.NotNull;

import java.util.ArrayList;
Expand Down Expand Up @@ -96,7 +95,7 @@ protected void execute(@NotNull TriggerContext ctx) {
if (receivers.isEmpty()) {
SpatialResource<Ref<EntityStore>, EntityStore> playerSpatialResource = store.getResource(EntityModule.get()
.getPlayerSpatialResourceType());
ObjectList<Ref<EntityStore>> playerRefs = SpatialResource.getThreadLocalReferenceList();
List<Ref<EntityStore>> playerRefs = SpatialResource.getThreadLocalReferenceList();
playerSpatialResource.getSpatialStructure().collect(pos, 75.0F, playerRefs);
receivers.addAll(playerRefs);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@
import com.github.skriptdev.skript.api.skript.event.PlayerContext;
import com.github.skriptdev.skript.api.skript.event.PlayerRefContext;
import com.github.skriptdev.skript.api.skript.event.RefContext;
import com.github.skriptdev.skript.api.skript.event.SlotTransactionContext;
import com.github.skriptdev.skript.api.skript.event.WorldContext;
import com.github.skriptdev.skript.api.skript.registration.SkriptRegistration;
import com.github.skriptdev.skript.plugin.elements.events.entity.EvtEntityDamage;
Expand All @@ -18,8 +17,8 @@
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.EvtItemStackTransaction;
import com.github.skriptdev.skript.plugin.elements.events.inventory.EvtSlotTransaction;
import com.github.skriptdev.skript.plugin.elements.events.inventory.InventoryListener;
import com.github.skriptdev.skript.plugin.elements.events.player.EvtPlayerAddToWorld;
import com.github.skriptdev.skript.plugin.elements.events.player.EvtPlayerBreakBlock;
import com.github.skriptdev.skript.plugin.elements.events.player.EvtPlayerChangeGameMode;
Expand Down Expand Up @@ -47,12 +46,8 @@
import com.hypixel.hytale.component.Ref;
import com.hypixel.hytale.math.vector.Location;
import com.hypixel.hytale.server.core.entity.entities.Player;
import com.hypixel.hytale.server.core.inventory.ItemStack;
import com.hypixel.hytale.server.core.inventory.container.ItemContainer;
import com.hypixel.hytale.server.core.inventory.transaction.ActionType;
import com.hypixel.hytale.server.core.universe.PlayerRef;
import com.hypixel.hytale.server.core.universe.world.World;
import io.github.syst3ms.skriptparser.registration.context.ContextValue;
import io.github.syst3ms.skriptparser.registration.context.ContextValue.Usage;

public class EventHandler {
Expand All @@ -67,9 +62,9 @@ public static void register(SkriptRegistration registration) {
EvtTeleport.register(registration);

// INVENTORY
InventoryListener.registerListener(registration);
EvtInventoryMove.register(registration);
EvtItemStackSlotTransaction.register(registration);
EvtItemStackTransaction.register(registration);
EvtSlotTransaction.register(registration);

// PLAYER
Expand Down Expand Up @@ -106,7 +101,6 @@ public static void register(SkriptRegistration registration) {

// CONTEXT
registerGlobalContexts(registration);
registerInventoryContexts(registration);
}

public static void shutdown() {
Expand All @@ -131,33 +125,11 @@ private static void registerGlobalContexts(SkriptRegistration reg) {
reg.addSingleContextValue(PlayerRefContext.class, PlayerRef.class,
"player-ref", PlayerRefContext::getPlayerRef);
reg.addSingleContextValue(RefContext.class, Ref.class,
"ref", RefContext::getRef);
"ref", RefContext::getRef);
reg.newSingleContextValue(WorldContext.class, World.class,
"world", WorldContext::getWorld)
.setUsage(Usage.EXPRESSION_OR_ALONE)
.register();
}

private static void registerInventoryContexts(SkriptRegistration reg) {
reg.newSingleContextValue(SlotTransactionContext.class, ItemContainer.class,
"item-container", SlotTransactionContext::getContainer)
.register();
reg.newSingleContextValue(SlotTransactionContext.class, ActionType.class,
"action-type", SlotTransactionContext::getActionType)
.register();
reg.newSingleContextValue(SlotTransactionContext.class, Number.class,
"slot", SlotTransactionContext::getSlot)
.register();
reg.newSingleContextValue(SlotTransactionContext.class, ItemStack.class,
"itemstack", SlotTransactionContext::getSlotBefore)
.setState(ContextValue.State.PAST)
.register();
reg.newSingleContextValue(SlotTransactionContext.class, ItemStack.class,
"itemstack", SlotTransactionContext::getSlotAfter)
.register();
reg.newSingleContextValue(SlotTransactionContext.class, ItemStack.class,
"output", SlotTransactionContext::getOutput)
.register();
}

}
Loading
Loading