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