From 59854ef3f0d0b4e0cfed9ad1d2742c00b17fe906 Mon Sep 17 00:00:00 2001 From: yoyosource Date: Sun, 25 Dec 2022 11:53:41 +0100 Subject: [PATCH] Add SWScriptSyntaxForwarder --- src/de/steamwar/bungeecore/BungeeCore.java | 3 ++ .../network/SWScriptSyntaxForwarder.java | 48 +++++++++++++++++++ 2 files changed, 51 insertions(+) create mode 100644 src/de/steamwar/bungeecore/network/SWScriptSyntaxForwarder.java diff --git a/src/de/steamwar/bungeecore/BungeeCore.java b/src/de/steamwar/bungeecore/BungeeCore.java index b627d99..d07ce13 100644 --- a/src/de/steamwar/bungeecore/BungeeCore.java +++ b/src/de/steamwar/bungeecore/BungeeCore.java @@ -27,6 +27,7 @@ import de.steamwar.bungeecore.listeners.mods.*; import de.steamwar.bungeecore.listeners.ping.PingListener; import de.steamwar.bungeecore.network.BungeeNetworkHandler; import de.steamwar.bungeecore.network.NetworkReceiver; +import de.steamwar.bungeecore.network.SWScriptSyntaxForwarder; import de.steamwar.bungeecore.sql.*; import de.steamwar.bungeecore.tablist.TablistManager; import de.steamwar.command.SWCommandUtils; @@ -79,6 +80,7 @@ public class BungeeCore extends Plugin { getProxy().registerChannel("sw:bridge"); getProxy().registerChannel("fabricmodsender:mods"); getProxy().registerChannel("nochatreports:sync"); + getProxy().registerChannel("sw:script_syntax"); setInstance(this); MAIN_SERVER = ProxyServer.getInstance().getConfig().getListeners().stream().anyMatch(info -> ((InetSocketAddress) info.getSocketAddress()).getPort() == 25565); @@ -99,6 +101,7 @@ public class BungeeCore extends Plugin { }); BungeeCord.getInstance().getScheduler().schedule(this, TabCompletionCache::invalidateOldEntries, 1, 1, TimeUnit.SECONDS); + new SWScriptSyntaxForwarder(); new ConnectionListener(); new Forge(); new Forge12(); diff --git a/src/de/steamwar/bungeecore/network/SWScriptSyntaxForwarder.java b/src/de/steamwar/bungeecore/network/SWScriptSyntaxForwarder.java new file mode 100644 index 0000000..b604d54 --- /dev/null +++ b/src/de/steamwar/bungeecore/network/SWScriptSyntaxForwarder.java @@ -0,0 +1,48 @@ +/* + * This file is a part of the SteamWar software. + * + * Copyright (C) 2022 SteamWar.de-Serverteam + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + */ + +package de.steamwar.bungeecore.network; + +import de.steamwar.bungeecore.commands.TeamCommand; +import de.steamwar.bungeecore.listeners.BasicListener; +import net.md_5.bungee.api.connection.ProxiedPlayer; +import net.md_5.bungee.api.connection.Server; +import net.md_5.bungee.api.event.PluginMessageEvent; +import net.md_5.bungee.event.EventHandler; +import net.md_5.bungee.event.EventPriority; + +import java.net.InetSocketAddress; + +public class SWScriptSyntaxForwarder extends BasicListener { + + @EventHandler(priority = EventPriority.HIGHEST) + public void onPluginMessage(PluginMessageEvent event) { + if (!event.getTag().equals("sw:script_syntax")) { + return; + } + event.setCancelled(true); + if (!(event.getSender() instanceof Server)) { + return; + } + if (!TeamCommand.isLocalhost(((InetSocketAddress) event.getSender().getSocketAddress()).getAddress())) { + return; + } + ((ProxiedPlayer) event.getReceiver()).sendData("sw:script_syntax", event.getData()); + } +}