packets, fancydialogs: Refactor custom action handling to use a map for additional data

This commit is contained in:
Oliver
2025-06-17 21:50:34 +02:00
parent 31f03ae252
commit d61b3af90b
10 changed files with 65 additions and 29 deletions

View File

@@ -245,7 +245,7 @@ public class ClientboundShowDialogPacketImpl extends FS_ClientboundShowDialogPac
Optional<CompoundTag> additions;
if (customAction.getAdditions() != null) {
CompoundTag tag = new CompoundTag();
tag.putString("data", customAction.getAdditions());
customAction.getAdditions().forEach(tag::putString);
additions = Optional.of(tag);
} else {
additions = Optional.empty();

View File

@@ -13,8 +13,9 @@ import net.minecraft.server.level.ServerPlayer;
import org.bukkit.craftbukkit.entity.CraftPlayer;
import org.bukkit.entity.Player;
import java.util.HashMap;
import java.util.List;
import java.util.Optional;
import java.util.Map;
public class PacketListenerImpl extends FS_PacketListener {
@@ -75,12 +76,16 @@ public class PacketListenerImpl extends FS_PacketListener {
switch (type) {
case CUSTOM_CLICK_ACTION -> {
ServerboundCustomClickActionPacket customClickActionPacket = (ServerboundCustomClickActionPacket) packet;
Map<String, String> payload = new HashMap<>();
customClickActionPacket.payload().get().asCompound().get().forEach((k, t) -> {
payload.put(k, t.asString().get());
});
return new FS_ServerboundCustomClickActionPacket(
type,
PaperAdventure.asAdventure(customClickActionPacket.id()),
customClickActionPacket.payload().isPresent() ?
customClickActionPacket.payload().get().asCompound().get().getString("data") :
Optional.empty()
payload
);
}
// Add more cases for other packet types as needed

View File

@@ -3,12 +3,14 @@ package de.oliver.fancysitula.api.dialogs.actions;
import org.intellij.lang.annotations.Subst;
import org.jetbrains.annotations.Nullable;
import java.util.Map;
public class FS_DialogCustomAction implements FS_DialogActionButtonAction {
private String id;
private @Nullable String additions;
private Map<String, String> additions;
public FS_DialogCustomAction(String id, String additions) {
public FS_DialogCustomAction(String id, Map<String, String> additions) {
this.id = id;
this.additions = additions;
}
@@ -22,11 +24,11 @@ public class FS_DialogCustomAction implements FS_DialogActionButtonAction {
this.id = id;
}
public @Nullable String getAdditions() {
public @Nullable Map<String, String> getAdditions() {
return additions;
}
public void setAdditions(@Nullable String additions) {
public void setAdditions(@Nullable Map<String, String> additions) {
this.additions = additions;
}
}

View File

@@ -2,14 +2,14 @@ package de.oliver.fancysitula.api.packets;
import net.kyori.adventure.key.Key;
import java.util.Optional;
import java.util.Map;
public class FS_ServerboundCustomClickActionPacket extends FS_ServerboundPacket {
private final Key id;
private final Optional<String> payload;
private final Map<String, String> payload;
public FS_ServerboundCustomClickActionPacket(Type type, Key id, Optional<String> payload) {
public FS_ServerboundCustomClickActionPacket(Type type, Key id, Map<String, String> payload) {
super(type);
this.id = id;
this.payload = payload;
@@ -19,7 +19,7 @@ public class FS_ServerboundCustomClickActionPacket extends FS_ServerboundPacket
return id;
}
public Optional<String> getPayload() {
public Map<String, String> getPayload() {
return payload;
}

View File

@@ -26,6 +26,7 @@ import org.jetbrains.annotations.NotNull;
import java.util.EnumSet;
import java.util.List;
import java.util.Map;
import java.util.UUID;
public class FancySitulaCMD extends Command {
@@ -105,7 +106,7 @@ public class FancySitulaCMD extends Command {
),
new FS_DialogCustomAction(
"my-custom-action-1",
"someAdditionalData1"
Map.of("foo", "bar")
)
)
);