pose picker

This commit is contained in:
2025-11-27 18:35:41 +01:00
parent 84e0134450
commit 59225e5e11
@@ -6,6 +6,7 @@ import io.papermc.paper.registry.data.dialog.ActionButton;
import io.papermc.paper.registry.data.dialog.DialogBase; import io.papermc.paper.registry.data.dialog.DialogBase;
import io.papermc.paper.registry.data.dialog.action.DialogAction; import io.papermc.paper.registry.data.dialog.action.DialogAction;
import io.papermc.paper.registry.data.dialog.input.DialogInput; import io.papermc.paper.registry.data.dialog.input.DialogInput;
import io.papermc.paper.registry.data.dialog.input.SingleOptionDialogInput;
import io.papermc.paper.registry.data.dialog.type.DialogType; import io.papermc.paper.registry.data.dialog.type.DialogType;
import me.youhavetrouble.standin.converter.EntityConverter; import me.youhavetrouble.standin.converter.EntityConverter;
import me.youhavetrouble.standin.converter.MannequinToArmorStandConverter; import me.youhavetrouble.standin.converter.MannequinToArmorStandConverter;
@@ -15,11 +16,13 @@ import net.kyori.adventure.text.minimessage.MiniMessage;
import org.bukkit.entity.Entity; import org.bukkit.entity.Entity;
import org.bukkit.entity.Mannequin; import org.bukkit.entity.Mannequin;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.bukkit.entity.Pose;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import java.time.Duration; import java.time.Duration;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Locale;
import java.util.UUID; import java.util.UUID;
@SuppressWarnings("UnstableApiUsage") @SuppressWarnings("UnstableApiUsage")
@@ -58,6 +61,15 @@ public class MannequinHandler extends EntityHandler<Mannequin> {
.initial(profileName) .initial(profileName)
.build() .build()
); );
inputs.add(
DialogInput.singleOption("pose", Component.text("Pose"),
List.of(
SingleOptionDialogInput.OptionEntry.create("standing", Component.text("Standing"), mannequin.getPose() == Pose.STANDING),
SingleOptionDialogInput.OptionEntry.create("fall_flying", Component.text("Fall flying"), mannequin.getPose() == Pose.FALL_FLYING),
SingleOptionDialogInput.OptionEntry.create("sleeping", Component.text("Sleeping"), mannequin.getPose() == Pose.SLEEPING)
))
.build()
);
inputs.add( inputs.add(
DialogInput.bool("immovable", Component.text("Immovable")) DialogInput.bool("immovable", Component.text("Immovable"))
.initial(mannequin.isImmovable()) .initial(mannequin.isImmovable())
@@ -105,6 +117,14 @@ public class MannequinHandler extends EntityHandler<Mannequin> {
} catch (IllegalArgumentException e) { } catch (IllegalArgumentException e) {
callbackPlayer.sendRichMessage("<red>Profile name not updated: invalid username."); callbackPlayer.sendRichMessage("<red>Profile name not updated: invalid username.");
} }
String poseString = view.getText("pose");
if (poseString != null) {
try {
Pose newPose = Pose.valueOf(poseString.toUpperCase(Locale.ROOT));
mann.setPose(newPose);
} catch (IllegalArgumentException ignored) {
}
}
}, ClickCallback.Options.builder().lifetime(Duration.ofMinutes(5)).uses(1).build()) }, ClickCallback.Options.builder().lifetime(Duration.ofMinutes(5)).uses(1).build())
).build(); ).build();
actions.add(saveButton); actions.add(saveButton);