mirror of
https://github.com/GeyserMC/Floodgate.git
synced 2025-12-19 14:59:20 +00:00
Update to latest Forms Api changes
This commit is contained in:
@@ -27,6 +27,7 @@ package org.geysermc.floodgate.api;
|
||||
|
||||
import java.util.UUID;
|
||||
import org.geysermc.common.form.Form;
|
||||
import org.geysermc.common.form.FormBuilder;
|
||||
import org.geysermc.floodgate.api.link.PlayerLink;
|
||||
import org.geysermc.floodgate.api.player.FloodgatePlayer;
|
||||
|
||||
@@ -72,7 +73,9 @@ public interface FloodgateApi {
|
||||
*/
|
||||
boolean isFloodgateId(UUID uuid);
|
||||
|
||||
boolean sendForm(UUID uuid, Form form);
|
||||
boolean sendForm(UUID uuid, Form<?> form);
|
||||
|
||||
boolean sendForm(UUID uuid, FormBuilder<?, ?> formBuilder);
|
||||
|
||||
/**
|
||||
* Returns the instance that manages all the linking.
|
||||
|
||||
@@ -27,6 +27,7 @@ package org.geysermc.floodgate.api.player;
|
||||
|
||||
import java.util.UUID;
|
||||
import org.geysermc.common.form.Form;
|
||||
import org.geysermc.common.form.FormBuilder;
|
||||
import org.geysermc.floodgate.api.FloodgateApi;
|
||||
import org.geysermc.floodgate.util.DeviceOs;
|
||||
import org.geysermc.floodgate.util.InputMode;
|
||||
@@ -106,10 +107,14 @@ public interface FloodgatePlayer {
|
||||
*/
|
||||
RawSkin getRawSkin();
|
||||
|
||||
default boolean sendForm(Form form) {
|
||||
default boolean sendForm(Form<?> form) {
|
||||
return FloodgateApi.getInstance().sendForm(getCorrectUniqueId(), form);
|
||||
}
|
||||
|
||||
default boolean sendForm(FormBuilder<?, ?> formBuilder) {
|
||||
return sendForm(formBuilder.build());
|
||||
}
|
||||
|
||||
/**
|
||||
* Casts the FloodgatePlayer instance to a class that extends FloodgatePlayer.
|
||||
*
|
||||
|
||||
@@ -104,7 +104,7 @@ public final class BungeePluginMessageHandler extends PluginMessageHandler imple
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean sendForm(UUID uuid, Form form) {
|
||||
public boolean sendForm(UUID uuid, Form<?> form) {
|
||||
ProxiedPlayer player = proxy.getPlayer(uuid);
|
||||
if (player != null) {
|
||||
player.sendData(formChannel, createFormData(form));
|
||||
|
||||
@@ -31,6 +31,7 @@ import java.util.UUID;
|
||||
import javax.annotation.Nullable;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.geysermc.common.form.Form;
|
||||
import org.geysermc.common.form.FormBuilder;
|
||||
import org.geysermc.floodgate.FloodgatePlayerImpl;
|
||||
import org.geysermc.floodgate.api.player.FloodgatePlayer;
|
||||
import org.geysermc.floodgate.platform.pluginmessage.PluginMessageHandler;
|
||||
@@ -74,12 +75,15 @@ public class SimpleFloodgateApi implements FloodgateApi {
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean sendForm(UUID uuid, Form form) {
|
||||
// the most easy way is to add the sendForm method to something that has to be implemented
|
||||
// to every platform anyway, not the most elegant solution though.
|
||||
public boolean sendForm(UUID uuid, Form<?> form) {
|
||||
return pluginMessageHandler.sendForm(uuid, form);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean sendForm(UUID uuid, FormBuilder<?, ?> formBuilder) {
|
||||
return sendForm(uuid, formBuilder.build());
|
||||
}
|
||||
|
||||
public FloodgatePlayer addPlayer(UUID uuid, FloodgatePlayer player) {
|
||||
return players.put(uuid, player);
|
||||
}
|
||||
|
||||
@@ -35,7 +35,7 @@ import org.geysermc.floodgate.config.FloodgateConfigHolder;
|
||||
import org.geysermc.floodgate.util.RawSkin;
|
||||
|
||||
public abstract class PluginMessageHandler {
|
||||
protected final Short2ObjectMap<Form> storedForms = new Short2ObjectOpenHashMap<>();
|
||||
protected final Short2ObjectMap<Form<?>> storedForms = new Short2ObjectOpenHashMap<>();
|
||||
private final AtomicInteger nextFormId = new AtomicInteger(0);
|
||||
private final FloodgateConfigHolder configHolder;
|
||||
|
||||
@@ -43,13 +43,13 @@ public abstract class PluginMessageHandler {
|
||||
this.configHolder = configHolder;
|
||||
}
|
||||
|
||||
public abstract boolean sendForm(UUID player, Form form);
|
||||
public abstract boolean sendForm(UUID player, Form<?> form);
|
||||
|
||||
public abstract boolean sendSkinRequest(UUID player, RawSkin skin);
|
||||
|
||||
public abstract void sendSkinResponse(UUID player, String response);
|
||||
|
||||
protected byte[] createFormData(Form form) {
|
||||
protected byte[] createFormData(Form<?> form) {
|
||||
short formId = getNextFormId();
|
||||
if (configHolder.isProxy()) {
|
||||
formId |= 0x8000;
|
||||
@@ -67,7 +67,7 @@ public abstract class PluginMessageHandler {
|
||||
}
|
||||
|
||||
protected boolean callResponseConsumer(byte[] data) {
|
||||
Form storedForm = storedForms.remove(getFormId(data));
|
||||
Form<?> storedForm = storedForms.remove(getFormId(data));
|
||||
if (storedForm != null) {
|
||||
storedForm.getResponseHandler().accept(
|
||||
new String(data, 2, data.length - 2, Charsets.UTF_8));
|
||||
|
||||
@@ -69,7 +69,7 @@ public class SpigotPluginMessageHandler extends PluginMessageHandler {
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean sendForm(UUID playerId, Form form) {
|
||||
public boolean sendForm(UUID playerId, Form<?> form) {
|
||||
try {
|
||||
byte[] formData = createFormData(form);
|
||||
Bukkit.getPlayer(playerId).sendPluginMessage(plugin, formChannel, formData);
|
||||
|
||||
@@ -109,7 +109,7 @@ public class VelocityPluginMessageHandler extends PluginMessageHandler {
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean sendForm(UUID uuid, Form form) {
|
||||
public boolean sendForm(UUID uuid, Form<?> form) {
|
||||
return proxy.getPlayer(uuid)
|
||||
.map(value -> value.sendPluginMessage(formChannel, createFormData(form)))
|
||||
.orElse(false);
|
||||
|
||||
Reference in New Issue
Block a user