Core/src/main/java/eu/univento/core/api/gui/sign/SignInput.java

67 lines
1.9 KiB
Java

/*
* Copyright (c) 2017 univento.eu - All rights reserved
* You are not allowed to use, distribute or modify this code
*/
package eu.univento.core.api.gui.sign;
import eu.univento.core.api.player.CustomPlayer;
import lombok.Getter;
import net.minecraft.server.v1_12_R1.BlockPosition;
import net.minecraft.server.v1_12_R1.PacketPlayOutOpenSignEditor;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import java.util.HashMap;
import java.util.Map;
import java.util.UUID;
import java.util.concurrent.CompletableFuture;
/**
* @author joethei
* @version 1.0
*/
class SignInput implements Listener{
@Getter private CustomPlayer player;
@Getter private String[] lines;
public SignInput(CustomPlayer player, String[] lines) {
this.player = player;
this.lines = lines;
}
private static Map<UUID, CompletableFuture<SignInput>> futures = new HashMap<>();
public static CompletableFuture<SignInput> openSignInput(CustomPlayer p) {
CompletableFuture<SignInput> future = new CompletableFuture<>();
p.sendPacket(new PacketPlayOutOpenSignEditor(new BlockPosition(p.getHandle())));
SignInputHandler.injectNetty(p);
futures.put(p.getUniqueId(), future);
return future;
}
@EventHandler
public void onSignInput(PlayerSignInputEvent e) {
if(futures.get(e.getPlayer().getUniqueId()) != null) {
futures.get(e.getPlayer().getUniqueId()).complete(new SignInput(CustomPlayer.getPlayer(e.getPlayer()), e.getLines()));
SignInputHandler.ejectNetty(e.getPlayer());
}
}
/*
public static void openSignInput(CustomPlayer p) {
EntityPlayer player = p.getHandle();
BlockPosition bp = new BlockPosition(p.getHandle());
PacketPlayOutOpenSignEditor packet = new PacketPlayOutOpenSignEditor(bp);
player.playerConnection.sendPacket(packet);
SignInputHandler.injectNetty(p);
}
*/
}