1
0
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:
Tim203
2020-11-26 23:09:17 +01:00
parent 2457ebae6c
commit a92890174e
7 changed files with 24 additions and 12 deletions

View File

@@ -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.

View File

@@ -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.
*

View File

@@ -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));

View File

@@ -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);
}

View File

@@ -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));

View File

@@ -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);

View File

@@ -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);