Skip to content

Commit a76fe2d

Browse files
authored
Merge pull request #24 from SkriptDev/dev/feature
Dev/feature - Future Feature Update
2 parents 840b23a + 5dea895 commit a76fe2d

27 files changed

Lines changed: 396 additions & 616 deletions

build.gradle.kts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ java.sourceCompatibility = JavaVersion.VERSION_25
99

1010
group = "com.github.SkriptDev"
1111
val projectVersion = "1.5.0"
12-
val hytaleVersion = "2026.02.19-1a311a592"
12+
val hytaleVersion = "2026.03.26-89796e57b"
1313
// You can find Hytale versions on their maven repo:
1414
// https://maven.hytale.com/release/com/hypixel/hytale/Server/maven-metadata.xml
1515
// https://maven.hytale.com/pre-release/com/hypixel/hytale/Server/maven-metadata.xml

src/main/java/com/github/skriptdev/skript/api/hytale/utils/PlayerUtils.java

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,13 @@
55
import com.hypixel.hytale.component.spatial.SpatialResource;
66
import com.hypixel.hytale.math.vector.Location;
77
import com.hypixel.hytale.math.vector.Vector3d;
8+
import com.hypixel.hytale.server.core.NameMatching;
89
import com.hypixel.hytale.server.core.entity.entities.Player;
910
import com.hypixel.hytale.server.core.modules.entity.EntityModule;
1011
import com.hypixel.hytale.server.core.universe.PlayerRef;
1112
import com.hypixel.hytale.server.core.universe.Universe;
1213
import com.hypixel.hytale.server.core.universe.world.World;
1314
import com.hypixel.hytale.server.core.universe.world.storage.EntityStore;
14-
import it.unimi.dsi.fastutil.objects.ObjectList;
1515
import org.jetbrains.annotations.NotNull;
1616
import org.jetbrains.annotations.Nullable;
1717

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

90+
public static @Nullable PlayerRef getPlayerRef(String name) {
91+
return Universe.get().getPlayerByUsername(name, NameMatching.EXACT_IGNORE_CASE);
92+
}
93+
9094
/**
9195
* Get a Player from a PlayerRef.
9296
*
@@ -116,7 +120,7 @@ public static List<PlayerRef> getPlayerRefs(@Nullable World world) {
116120
Store<EntityStore> store = world.getEntityStore().getStore();
117121
if (store == null) return List.of();
118122

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

149-
ObjectList<Ref<EntityStore>> results = SpatialResource.getThreadLocalReferenceList();
153+
List<Ref<EntityStore>> results = SpatialResource.getThreadLocalReferenceList();
150154
SpatialResource<Ref<EntityStore>, EntityStore> playerSpatialResource = store.getResource(EntityModule.get()
151155
.getPlayerSpatialResourceType());
152156
playerSpatialResource.getSpatialStructure().collectBox(min, max, results);

src/main/java/com/github/skriptdev/skript/api/skript/event/SlotTransactionContext.java

Lines changed: 0 additions & 52 deletions
This file was deleted.

src/main/java/com/github/skriptdev/skript/plugin/elements/conditions/item/CondInventoryCanHold.java

Lines changed: 7 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
package com.github.skriptdev.skript.plugin.elements.conditions.item;
22

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

1514
public static void register(SkriptRegistration reg) {
1615
reg.newExpression(CondInventoryCanHold.class, Boolean.class, true,
17-
"%inventory/itemcontainer% can hold %itemstacks%",
18-
"%inventory/itemcontainer% (can't|cannot) hold %itemstacks%")
19-
.name("Inventory Can Hold")
20-
.description("Checks if the inventory can hold the given items.")
16+
"%itemcontainer% can hold %itemstacks%",
17+
"%itemcontainer% (can't|cannot) hold %itemstacks%")
18+
.name("ItemContainer Can Hold")
19+
.description("Checks if the ItemContainer can hold the given items.")
2120
.examples("if inventory of player can hold itemstack of ingredient_poop:",
2221
"if inventory of player can hold {_itemstack}:")
2322
.since("1.0.0")
2423
.register();
2524
}
2625

27-
private Expression<?> holders;
26+
private Expression<ItemContainer> holders;
2827
private Expression<ItemStack> items;
2928

3029
@SuppressWarnings("unchecked")
3130
@Override
3231
public boolean init(Expression<?>[] expressions, int matchedPattern, @NotNull ParseContext parseContext) {
33-
this.holders = expressions[0];
32+
this.holders = (Expression<ItemContainer>) expressions[0];
3433
this.items = (Expression<ItemStack>) expressions[1];
3534
setNegated(matchedPattern == 1);
3635
return true;
@@ -39,14 +38,7 @@ public boolean init(Expression<?>[] expressions, int matchedPattern, @NotNull Pa
3938
@Override
4039
public boolean check(@NotNull TriggerContext ctx) {
4140
return this.holders.check(ctx, holder ->
42-
this.items.check(ctx, item -> {
43-
if (holder instanceof Inventory inventory) {
44-
return inventory.getCombinedEverything().canAddItemStack(item);
45-
} else if (holder instanceof ItemContainer container) {
46-
return container.canAddItemStack(item);
47-
}
48-
return false;
49-
}), isNegated());
41+
this.items.check(ctx, holder::canAddItemStack), isNegated());
5042
}
5143

5244
@Override

src/main/java/com/github/skriptdev/skript/plugin/elements/effects/player/EffBan.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import com.github.skriptdev.skript.api.utils.ReflectionUtils;
44
import com.github.skriptdev.skript.api.utils.Utils;
5+
import com.hypixel.hytale.server.core.Message;
56
import com.hypixel.hytale.server.core.command.system.CommandSender;
67
import com.hypixel.hytale.server.core.console.ConsoleSender;
78
import com.hypixel.hytale.server.core.entity.entities.Player;
@@ -147,7 +148,7 @@ protected void execute(@NotNull TriggerContext ctx) {
147148
}
148149

149150
bans.put(target, ban);
150-
EffKick.kick(o, reason);
151+
EffKick.kick(o, Message.raw(reason));
151152
}
152153

153154
// Put them all in at once

src/main/java/com/github/skriptdev/skript/plugin/elements/effects/player/EffKick.java

Lines changed: 15 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package com.github.skriptdev.skript.plugin.elements.effects.player;
22

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

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

2829
private Expression<?> players;
29-
private Expression<String> reason;
30+
private Expression<?> reason;
3031

31-
@SuppressWarnings("unchecked")
3232
@Override
3333
public boolean init(Expression<?>[] expressions, int matchedPattern, @NotNull ParseContext parseContext) {
3434
this.players = expressions[0];
3535
if (matchedPattern == 1) {
36-
this.reason = (Expression<String>) expressions[1];
36+
this.reason = expressions[1];
3737
}
3838
return true;
3939
}
4040

4141
@Override
4242
protected void execute(@NotNull TriggerContext ctx) {
43-
String reason = "You were kicked.";
43+
Message reason = Message.raw("You were kicked.");
4444
if (this.reason != null) {
45-
Optional<? extends String> single = this.reason.getSingle(ctx);
46-
if (single.isPresent()) reason = single.get();
45+
Optional<?> single = this.reason.getSingle(ctx);
46+
if (single.isPresent()) {
47+
Object o = single.get();
48+
if (o instanceof Message message) {
49+
reason = message;
50+
} else if (o instanceof String s) {
51+
reason = Message.raw(s);
52+
}
53+
}
4754
}
4855

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

6067
@SuppressWarnings("removal")
61-
public static void kick(Object player, String reason) {
68+
public static void kick(Object player, Message reason) {
6269
if (player instanceof PlayerRef ref) {
6370
ref.getPacketHandler().disconnect(reason);
6471
} else if (player instanceof Player p) {

src/main/java/com/github/skriptdev/skript/plugin/elements/effects/world/EffParticle.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@
1919
import io.github.syst3ms.skriptparser.lang.Expression;
2020
import io.github.syst3ms.skriptparser.lang.TriggerContext;
2121
import io.github.syst3ms.skriptparser.parsing.ParseContext;
22-
import it.unimi.dsi.fastutil.objects.ObjectList;
2322
import org.jetbrains.annotations.NotNull;
2423

2524
import java.util.ArrayList;
@@ -96,7 +95,7 @@ protected void execute(@NotNull TriggerContext ctx) {
9695
if (receivers.isEmpty()) {
9796
SpatialResource<Ref<EntityStore>, EntityStore> playerSpatialResource = store.getResource(EntityModule.get()
9897
.getPlayerSpatialResourceType());
99-
ObjectList<Ref<EntityStore>> playerRefs = SpatialResource.getThreadLocalReferenceList();
98+
List<Ref<EntityStore>> playerRefs = SpatialResource.getThreadLocalReferenceList();
10099
playerSpatialResource.getSpatialStructure().collect(pos, 75.0F, playerRefs);
101100
receivers.addAll(playerRefs);
102101
}

src/main/java/com/github/skriptdev/skript/plugin/elements/events/EventHandler.java

Lines changed: 3 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@
77
import com.github.skriptdev.skript.api.skript.event.PlayerContext;
88
import com.github.skriptdev.skript.api.skript.event.PlayerRefContext;
99
import com.github.skriptdev.skript.api.skript.event.RefContext;
10-
import com.github.skriptdev.skript.api.skript.event.SlotTransactionContext;
1110
import com.github.skriptdev.skript.api.skript.event.WorldContext;
1211
import com.github.skriptdev.skript.api.skript.registration.SkriptRegistration;
1312
import com.github.skriptdev.skript.plugin.elements.events.entity.EvtEntityDamage;
@@ -18,8 +17,8 @@
1817
import com.github.skriptdev.skript.plugin.elements.events.entity.EvtTeleport;
1918
import com.github.skriptdev.skript.plugin.elements.events.inventory.EvtInventoryMove;
2019
import com.github.skriptdev.skript.plugin.elements.events.inventory.EvtItemStackSlotTransaction;
20+
import com.github.skriptdev.skript.plugin.elements.events.inventory.EvtItemStackTransaction;
2121
import com.github.skriptdev.skript.plugin.elements.events.inventory.EvtSlotTransaction;
22-
import com.github.skriptdev.skript.plugin.elements.events.inventory.InventoryListener;
2322
import com.github.skriptdev.skript.plugin.elements.events.player.EvtPlayerAddToWorld;
2423
import com.github.skriptdev.skript.plugin.elements.events.player.EvtPlayerBreakBlock;
2524
import com.github.skriptdev.skript.plugin.elements.events.player.EvtPlayerChangeGameMode;
@@ -47,12 +46,8 @@
4746
import com.hypixel.hytale.component.Ref;
4847
import com.hypixel.hytale.math.vector.Location;
4948
import com.hypixel.hytale.server.core.entity.entities.Player;
50-
import com.hypixel.hytale.server.core.inventory.ItemStack;
51-
import com.hypixel.hytale.server.core.inventory.container.ItemContainer;
52-
import com.hypixel.hytale.server.core.inventory.transaction.ActionType;
5349
import com.hypixel.hytale.server.core.universe.PlayerRef;
5450
import com.hypixel.hytale.server.core.universe.world.World;
55-
import io.github.syst3ms.skriptparser.registration.context.ContextValue;
5651
import io.github.syst3ms.skriptparser.registration.context.ContextValue.Usage;
5752

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

6964
// INVENTORY
70-
InventoryListener.registerListener(registration);
7165
EvtInventoryMove.register(registration);
7266
EvtItemStackSlotTransaction.register(registration);
67+
EvtItemStackTransaction.register(registration);
7368
EvtSlotTransaction.register(registration);
7469

7570
// PLAYER
@@ -106,7 +101,6 @@ public static void register(SkriptRegistration registration) {
106101

107102
// CONTEXT
108103
registerGlobalContexts(registration);
109-
registerInventoryContexts(registration);
110104
}
111105

112106
public static void shutdown() {
@@ -131,33 +125,11 @@ private static void registerGlobalContexts(SkriptRegistration reg) {
131125
reg.addSingleContextValue(PlayerRefContext.class, PlayerRef.class,
132126
"player-ref", PlayerRefContext::getPlayerRef);
133127
reg.addSingleContextValue(RefContext.class, Ref.class,
134-
"ref", RefContext::getRef);
128+
"ref", RefContext::getRef);
135129
reg.newSingleContextValue(WorldContext.class, World.class,
136130
"world", WorldContext::getWorld)
137131
.setUsage(Usage.EXPRESSION_OR_ALONE)
138132
.register();
139133
}
140134

141-
private static void registerInventoryContexts(SkriptRegistration reg) {
142-
reg.newSingleContextValue(SlotTransactionContext.class, ItemContainer.class,
143-
"item-container", SlotTransactionContext::getContainer)
144-
.register();
145-
reg.newSingleContextValue(SlotTransactionContext.class, ActionType.class,
146-
"action-type", SlotTransactionContext::getActionType)
147-
.register();
148-
reg.newSingleContextValue(SlotTransactionContext.class, Number.class,
149-
"slot", SlotTransactionContext::getSlot)
150-
.register();
151-
reg.newSingleContextValue(SlotTransactionContext.class, ItemStack.class,
152-
"itemstack", SlotTransactionContext::getSlotBefore)
153-
.setState(ContextValue.State.PAST)
154-
.register();
155-
reg.newSingleContextValue(SlotTransactionContext.class, ItemStack.class,
156-
"itemstack", SlotTransactionContext::getSlotAfter)
157-
.register();
158-
reg.newSingleContextValue(SlotTransactionContext.class, ItemStack.class,
159-
"output", SlotTransactionContext::getOutput)
160-
.register();
161-
}
162-
163135
}

0 commit comments

Comments
 (0)