Skip to content

Commit

Permalink
Velocity support
Browse files Browse the repository at this point in the history
  • Loading branch information
Jo0001 committed Sep 9, 2023
1 parent 8d5cfa4 commit f74b8e5
Show file tree
Hide file tree
Showing 9 changed files with 180 additions and 8 deletions.
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
# ViaTesting
Simple tool to create minecraft servers with Via* preinstalled.
Simple tool to create minecraft servers (Paper, Waterfall, ...) with Via* preinstalled.

For the custom java version you need a folder in the same directory as the jar named java-xx (8,11,17,19) e.g. java-17

Expand Down
12 changes: 8 additions & 4 deletions src/main/java/de/jo0001/viaTesting/core/Controller.java
Original file line number Diff line number Diff line change
Expand Up @@ -81,7 +81,7 @@ public void initialize(URL url, ResourceBundle resourceBundle) {
}
});
proxyCB.setOnAction(actionEvent -> {
if (proxyCB.getValue().toString().equalsIgnoreCase("Waterfall with Via")) {
if (proxyCB.getValue().toString().equalsIgnoreCase("Waterfall with Via") || proxyCB.getValue().toString().equalsIgnoreCase("Bungee with Via") || proxyCB.getValue().toString().equalsIgnoreCase("Velocity with Via")) {
vRSup.setSelected(false);
vRSup.setDisable(true);
} else {
Expand Down Expand Up @@ -150,11 +150,15 @@ private void create() throws IOException {
AssetUtil.createStartBat("paper-" + version, java, splitDir);
pluginsDir = new File(splitDir.getPath() + "/plugins");
pluginsDir.mkdir();
splitDir = proxySettings.contains("Bungee") ? new File(dir.getAbsolutePath() + "/Bungee-Server") : new File(dir.getAbsolutePath() + "/Waterfall-Server");
splitDir = proxySettings.contains("Bungee") ? new File(dir.getAbsolutePath() + "/Bungee-Server") : proxySettings.contains("Velocity") ? new File(dir.getAbsolutePath() + "/Velocity-Server") : new File(dir.getAbsolutePath() + "/Waterfall-Server");
splitDir.mkdir();
pluginsDir = new File(splitDir.getPath() + "/plugins");
AssetUtil.loadServerAssets("waterfall", splitDir);
AssetUtil.createStartBat(proxySettings.contains("Bungee") ? "bungee-latest" : "waterfall-latest", java, splitDir);
if(proxySettings.contains("Velocity")){
AssetUtil.loadServerAssets("velocity", splitDir);
}else {
AssetUtil.loadServerAssets("waterfall", splitDir);
}
AssetUtil.createStartBat(proxySettings.contains("Bungee") ? "bungee-latest" : proxySettings.contains("Velocity") ? "velocity-latest" : "waterfall-latest", java, splitDir);
} else {
AssetUtil.loadServerAssets(serverAssets, allowNether, allowEnd, dir);
AssetUtil.createStartBat("paper-" + version, java, dir);
Expand Down
9 changes: 8 additions & 1 deletion src/main/java/de/jo0001/viaTesting/core/Downloader.java
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,9 @@ public void run() {
if (proxySettings.contains("Bungee")) {
root = new File(defaultRoot.getAbsolutePath() + "/Bungee-Server");
downloadBungee();
} else if (proxySettings.contains("Velocity")) {
root = new File(defaultRoot.getAbsolutePath() + "/Velocity-Server");
downloadVelocityServer();
} else {
root = new File(defaultRoot.getAbsolutePath() + "/Waterfall-Server");
downloadWaterfallServer();
Expand Down Expand Up @@ -87,7 +90,11 @@ private void downloadPaperServer() throws IOException {
}

private void downloadWaterfallServer() throws IOException {
downloadFile(DownloadUtil.getDownloadURL("waterfall", DownloadUtil.getLatestWaterfallMCVersion()), "/waterfall-latest.jar");
downloadFile(DownloadUtil.getDownloadURL("waterfall", DownloadUtil.getLatestProxyMCVersion("waterfall")), "/waterfall-latest.jar");
}

private void downloadVelocityServer() throws IOException {
downloadFile(DownloadUtil.getDownloadURL("velocity", DownloadUtil.getLatestProxyMCVersion("velocity")), "/velocity-latest.jar");
}

private void downloadBungee() throws IOException {
Expand Down
3 changes: 3 additions & 0 deletions src/main/java/de/jo0001/viaTesting/util/AssetUtil.java
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,7 @@ public static void loadServerAssets(String asset, boolean nether, boolean end, F
String[] paperBase = {"bukkit.yml", "commands.yml", "eula.txt", "paper.yml", "server.properties", "server-icon.png"};
String[] paperWaterfall = {"spigot.yml"};
String[] waterfall = {"config.yml", "server-icon.png", "waterfall.yml"};
String[] velocity = {"server-icon.png", "velocity.toml", "forwarding.secret"};

if (asset.startsWith("paper")) {
copyFiles(paperBase, "paper", dir);
Expand All @@ -58,6 +59,8 @@ public static void loadServerAssets(String asset, boolean nether, boolean end, F
}
} else if (asset.equalsIgnoreCase("waterfall")) {
copyFiles(waterfall, "waterfall", dir);
} else if (asset.equalsIgnoreCase("velocity")) {
copyFiles(velocity, "velocity", dir);
}
}

Expand Down
4 changes: 2 additions & 2 deletions src/main/java/de/jo0001/viaTesting/util/DownloadUtil.java
Original file line number Diff line number Diff line change
Expand Up @@ -21,8 +21,8 @@ private static int getLatestBuild(String type, String version) throws IOExceptio
return builds.get(builds.size() - 1).getAsInt();
}

public static String getLatestWaterfallMCVersion() throws IOException {
JsonArray versions = fetchData("https://papermc.io/api/v2/projects/waterfall").getAsJsonArray("versions");
public static String getLatestProxyMCVersion(String proxy) throws IOException {
JsonArray versions = fetchData("https://papermc.io/api/v2/projects/"+proxy).getAsJsonArray("versions");
return versions.get(versions.size() - 1).getAsString();
}

Expand Down
1 change: 1 addition & 0 deletions src/main/resources/assets/velocity/forwarding.secret
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
not_used-but_required
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
155 changes: 155 additions & 0 deletions src/main/resources/assets/velocity/velocity.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,155 @@
# Config version. Do not change this
config-version = "2.6"

# What port should the proxy be bound to? By default, we'll bind to all addresses on port 25577.
bind = "0.0.0.0:25565"

# What should be the MOTD? This gets displayed when the player adds your server to
# their server list. Only MiniMessage format is accepted.
motd = "<b><gold>ViaTesting</gold> </b><blue>(Proxy)Testserver</blue> "

# What should we display for the maximum number of players? (Velocity does not support a cap
# on the number of players online.)
show-max-players = 500

# Should we authenticate players with Mojang? By default, this is on.
online-mode = true

# Should the proxy enforce the new public key security standard? By default, this is on.
force-key-authentication = false

# If client's ISP/AS sent from this proxy is different from the one from Mojang's
# authentication server, the player is kicked. This disallows some VPN and proxy
# connections but is a weak form of protection.
prevent-client-proxy-connections = false

# Should we forward IP addresses and other data to backend servers?
# Available options:
# - "none": No forwarding will be done. All players will appear to be connecting
# from the proxy and will have offline-mode UUIDs.
# - "legacy": Forward player IPs and UUIDs in a BungeeCord-compatible format. Use this
# if you run servers using Minecraft 1.12 or lower.
# - "bungeeguard": Forward player IPs and UUIDs in a format supported by the BungeeGuard
# plugin. Use this if you run servers using Minecraft 1.12 or lower, and are
# unable to implement network level firewalling (on a shared host).
# - "modern": Forward player IPs and UUIDs as part of the login process using
# Velocity's native forwarding. Only applicable for Minecraft 1.13 or higher.
player-info-forwarding-mode = "legacy"

# If you are using modern or BungeeGuard IP forwarding, configure a file that contains a unique secret here.
# The file is expected to be UTF-8 encoded and not empty.
forwarding-secret-file = "forwarding.secret"

# Announce whether or not your server supports Forge. If you run a modded server, we
# suggest turning this on.
#
# If your network runs one modpack consistently, consider using ping-passthrough = "mods"
# instead for a nicer display in the server list.
announce-forge = false

# If enabled (default is false) and the proxy is in online mode, Velocity will kick
# any existing player who is online if a duplicate connection attempt is made.
kick-existing-players = false

# Should Velocity pass server list ping requests to a backend server?
# Available options:
# - "disabled": No pass-through will be done. The velocity.toml and server-icon.png
# will determine the initial server list ping response.
# - "mods": Passes only the mod list from your backend server into the response.
# The first server in your try list (or forced host) with a mod list will be
# used. If no backend servers can be contacted, Velocity won't display any
# mod information.
# - "description": Uses the description and mod list from the backend server. The first
# server in the try (or forced host) list that responds is used for the
# description and mod list.
# - "all": Uses the backend server's response as the proxy response. The Velocity
# configuration is used if no servers could be contacted.
ping-passthrough = "DISABLED"

# If not enabled (default is true) player IP addresses will be replaced by <ip address withheld> in logs
enable-player-address-logging = true

[servers]
# Configure your servers here. Each key represents the server's name, and the value
# represents the IP address of the server to connect to.
lobby = "127.0.0.1:25566"
factions = "127.0.0.1:30067"
minigames = "127.0.0.1:30068"

# In what order we should try servers when a player logs in or is kicked from a server.
try = [
"lobby"
]

[forced-hosts]
# Configure your forced hosts here.
"lobby.example.com" = [
"lobby"
]
"factions.example.com" = [
"factions"
]
"minigames.example.com" = [
"minigames"
]

[advanced]
# How large a Minecraft packet has to be before we compress it. Setting this to zero will
# compress all packets, and setting it to -1 will disable compression entirely.
compression-threshold = 256

# How much compression should be done (from 0-9). The default is -1, which uses the
# default level of 6.
compression-level = -1

# How fast (in milliseconds) are clients allowed to connect after the last connection? By
# default, this is three seconds. Disable this by setting this to 0.
login-ratelimit = 3000

# Specify a custom timeout for connection timeouts here. The default is five seconds.
connection-timeout = 5000

# Specify a read timeout for connections here. The default is 30 seconds.
read-timeout = 30000

# Enables compatibility with HAProxy's PROXY protocol. If you don't know what this is for, then
# don't enable it.
haproxy-protocol = false

# Enables TCP fast open support on the proxy. Requires the proxy to run on Linux.
tcp-fast-open = false

# Enables BungeeCord plugin messaging channel support on Velocity.
bungee-plugin-message-channel = true

# Shows ping requests to the proxy from clients.
show-ping-requests = false

# By default, Velocity will attempt to gracefully handle situations where the user unexpectedly
# loses connection to the server without an explicit disconnect message by attempting to fall the
# user back, except in the case of read timeouts. BungeeCord will disconnect the user instead. You
# can disable this setting to use the BungeeCord behavior.
failover-on-unexpected-server-disconnect = true

# Declares the proxy commands to 1.13+ clients.
announce-proxy-commands = true

# Enables the logging of commands
log-command-executions = false

# Enables logging of player connections when connecting to the proxy, switching servers
# and disconnecting from the proxy.
log-player-connections = true

[query]
# Whether to enable responding to GameSpy 4 query responses or not.
enabled = false

# If query is enabled, on what port should the query protocol listen on?
port = 25577

# This is the map name that is reported to the query services.
map = "Velocity"

# Whether plugins should be shown in query response by default or not
show-plugins = false
2 changes: 2 additions & 0 deletions src/main/resources/core.fxml
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,8 @@
<String fx:value="Waterfall with Via"/>
<String fx:value="Bungee with Via"/>
<String fx:value="Bungee"/>
<String fx:value="Velocity"/>
<String fx:value="Velocity with Via"/>
</FXCollections>
</items>
</ChoiceBox>
Expand Down

0 comments on commit f74b8e5

Please sign in to comment.