mirror of
https://github.com/ViaVersion/ViaFabric.git
synced 2024-09-30 04:27:33 +02:00
cleanup, deduplicate some code
This commit is contained in:
parent
b38d518214
commit
745818e62b
98
build.gradle
98
build.gradle
@ -14,9 +14,6 @@ description = "Client-side and server-side ViaVersion implementation for Fabric"
|
||||
version = "0.4.0" + "+" + ENV.GITHUB_RUN_NUMBER + "-" + getBranch()
|
||||
logger.lifecycle("Building ViaFabric: " + version)
|
||||
|
||||
import net.fabricmc.loom.task.RunClientTask
|
||||
import net.fabricmc.loom.task.RunServerTask
|
||||
|
||||
def getBranch() {
|
||||
def ENV = System.getenv()
|
||||
if (ENV.GITHUB_REF) {
|
||||
@ -32,32 +29,6 @@ def getBranch() {
|
||||
return branch.substring(branch.lastIndexOf("/") + 1)
|
||||
}
|
||||
|
||||
def moduleDependencies(project, List<String> depNames) {
|
||||
def deps = depNames.iterator().collect { project.dependencies.project(path: ":$it", configuration: 'dev') }
|
||||
project.dependencies {
|
||||
deps.each {
|
||||
compile it
|
||||
}
|
||||
}
|
||||
project.publishing {
|
||||
publications {
|
||||
mavenJava(MavenPublication) {
|
||||
pom.withXml {
|
||||
def depsNode = asNode().appendNode("dependencies")
|
||||
deps.each {
|
||||
def depNode = depsNode.appendNode("dependency")
|
||||
depNode.appendNode("groupId", it.group)
|
||||
depNode.appendNode("artifactId", it.name)
|
||||
depNode.appendNode("version", it.version)
|
||||
depNode.appendNode("scope", "compile")
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
allprojects {
|
||||
apply plugin: "maven-publish"
|
||||
apply plugin: "fabric-loom"
|
||||
@ -93,6 +64,8 @@ allprojects {
|
||||
// transitive = false because Guava is conflicting on runClient
|
||||
implementation("com.viaversion:viaversion:$vvVer") { transitive = false }
|
||||
implementation("org.yaml:snakeyaml:1.28")
|
||||
|
||||
modImplementation("net.fabricmc:fabric-loader:0.11.3")
|
||||
}
|
||||
|
||||
jar {
|
||||
@ -108,14 +81,14 @@ allprojects {
|
||||
artifacts {
|
||||
dev file: file("${project.buildDir}/libs/$archivesBaseName-${version}-dev.jar"), type: "jar", builtBy: jar
|
||||
}
|
||||
}
|
||||
|
||||
processResources {
|
||||
filesMatching("fabric.mod.json") {
|
||||
filter(org.apache.tools.ant.filters.ReplaceTokens, tokens: [
|
||||
version : rootProject.version,
|
||||
description: rootProject.description
|
||||
])
|
||||
}
|
||||
processResources {
|
||||
filesMatching("fabric.mod.json") {
|
||||
filter(org.apache.tools.ant.filters.ReplaceTokens, tokens: [
|
||||
version : rootProject.version,
|
||||
description: rootProject.description
|
||||
])
|
||||
}
|
||||
}
|
||||
|
||||
@ -132,43 +105,11 @@ allprojects {
|
||||
}
|
||||
}
|
||||
|
||||
javadoc {
|
||||
options {
|
||||
source = "8"
|
||||
encoding = "UTF-8"
|
||||
charSet = "UTF-8"
|
||||
memberLevel = JavadocMemberLevel.PACKAGE
|
||||
links(
|
||||
"https://guava.dev/releases/21.0/api/docs/",
|
||||
"https://asm.ow2.io/javadoc/",
|
||||
"https://docs.oracle.com/javase/8/docs/api/",
|
||||
"http://jenkins.liteloader.com/job/Mixin/javadoc/",
|
||||
"https://logging.apache.org/log4j/2.x/log4j-api/apidocs/"
|
||||
// Need to add minecraft jd publication etc once there is one available
|
||||
)
|
||||
// Disable the crazy super-strict doclint tool in Java 8
|
||||
addStringOption("Xdoclint:none", "-quiet")
|
||||
}
|
||||
|
||||
allprojects.each {
|
||||
source(it.sourceSets.main.allJava.srcDirs)
|
||||
}
|
||||
|
||||
classpath = sourceSets.main.compileClasspath
|
||||
include("**/api/**")
|
||||
failOnError false
|
||||
}
|
||||
|
||||
task javadocJar(type: Jar) {
|
||||
dependsOn javadoc
|
||||
from javadoc.destinationDir
|
||||
//Set as `fatjavadoc` to prevent an ide form trying to use this javadoc, over using the modules javadoc
|
||||
archiveClassifier = "fatjavadoc"
|
||||
}
|
||||
|
||||
build.dependsOn javadocJar
|
||||
|
||||
subprojects {
|
||||
dependencies {
|
||||
implementation rootProject
|
||||
}
|
||||
|
||||
task remapMavenJar(type: Copy, dependsOn: remapJar) {
|
||||
afterEvaluate {
|
||||
from("${project.buildDir}/libs/$archivesBaseName-${version}.jar")
|
||||
@ -194,8 +135,6 @@ subprojects {
|
||||
|
||||
setupRepositories(repositories)
|
||||
}
|
||||
|
||||
javadoc.enabled = false
|
||||
}
|
||||
|
||||
task remapMavenJar(type: net.fabricmc.loom.task.RemapJarTask, dependsOn: jar) {
|
||||
@ -217,8 +156,6 @@ publishing {
|
||||
builtBy remapSourcesJar
|
||||
}
|
||||
|
||||
artifact javadocJar
|
||||
|
||||
pom.withXml {
|
||||
def depsNode = asNode().appendNode("dependencies")
|
||||
subprojects.each {
|
||||
@ -254,16 +191,13 @@ subprojects.each { remapJar.dependsOn("${it.path}:remapJar") }
|
||||
dependencies {
|
||||
minecraft("com.mojang:minecraft:1.8.9")
|
||||
mappings("net.fabricmc:yarn:1.8.9+build.202103291533:v2")
|
||||
modImplementation("net.fabricmc:fabric-loader:0.10.5+build.213")
|
||||
|
||||
include("com.viaversion:viaversion:$vvVer")
|
||||
include("org.yaml:snakeyaml:1.28")
|
||||
|
||||
afterEvaluate {
|
||||
subprojects.each {
|
||||
//implementation project(path: ":${it.name}", configuration: "dev")
|
||||
include project("${it.name}:")
|
||||
}
|
||||
subprojects.each {
|
||||
//implementation project(path: ":${it.name}", configuration: "dev")
|
||||
include project("${it.name}:")
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1,7 +0,0 @@
|
||||
#!/bin/sh
|
||||
git checkout mc-1.8 && ./gradlew clean build \
|
||||
&& git checkout mc-1.14 && ./gradlew clean build \
|
||||
&& git checkout mc-1.15 && ./gradlew clean build \
|
||||
&& git checkout mc-1.16 && ./gradlew clean build \
|
||||
&& git checkout mc-1.17 && ./gradlew clean build \
|
||||
&& git push origin mc-1.8 mc-1.14 mc-1.15 mc-1.16 mc-1.17
|
@ -1,15 +1,15 @@
|
||||
package com.viaversion.fabric.mc18;
|
||||
package com.viaversion.fabric.common;
|
||||
|
||||
import com.viaversion.viaversion.api.protocol.version.ProtocolVersion;
|
||||
|
||||
import java.util.Locale;
|
||||
|
||||
public class ViaFabricAddress {
|
||||
public class VFAddressParser {
|
||||
public int protocol = 0;
|
||||
public String viaSuffix = null;
|
||||
public String realAddress = null;
|
||||
|
||||
public ViaFabricAddress parse(String address) {
|
||||
public VFAddressParser parse(String address) {
|
||||
if (address == null) return null;
|
||||
String[] parts = address.split("\\.");
|
||||
|
@ -1,4 +1,4 @@
|
||||
package com.viaversion.fabric.mc116.commands;
|
||||
package com.viaversion.fabric.common.commands;
|
||||
|
||||
import com.viaversion.viaversion.api.Via;
|
||||
import com.viaversion.viaversion.api.command.ViaCommandSender;
|
@ -1,4 +1,4 @@
|
||||
package com.viaversion.fabric.mc114.commands.subs;
|
||||
package com.viaversion.fabric.common.commands.subs;
|
||||
|
||||
import io.netty.util.ResourceLeakDetector;
|
||||
import com.viaversion.viaversion.api.command.ViaCommandSender;
|
@ -1,4 +1,4 @@
|
||||
package com.viaversion.fabric.mc115.config;
|
||||
package com.viaversion.fabric.common.config;
|
||||
|
||||
import com.viaversion.viaversion.util.Config;
|
||||
|
||||
@ -9,13 +9,13 @@ import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
public class VRConfig extends Config {
|
||||
public class VFConfig extends Config {
|
||||
public static final String ENABLE_CLIENT_SIDE = "enable-client-side";
|
||||
public static final String CLIENT_SIDE_VERSION = "client-side-version";
|
||||
public static final String CLIENT_SIDE_FORCE_DISABLE = "client-side-force-disable";
|
||||
public static final String HIDE_BUTTON = "hide-button";
|
||||
|
||||
public VRConfig(File configFile) {
|
||||
public VFConfig(File configFile) {
|
||||
super(configFile);
|
||||
reloadConfig();
|
||||
}
|
@ -1,4 +1,4 @@
|
||||
package com.viaversion.fabric.mc115.handler;
|
||||
package com.viaversion.fabric.common.handler;
|
||||
|
||||
import io.netty.buffer.ByteBuf;
|
||||
import io.netty.channel.ChannelHandler;
|
@ -0,0 +1,8 @@
|
||||
package com.viaversion.fabric.common.platform;
|
||||
|
||||
import com.viaversion.viaversion.ViaAPIBase;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
public class FabricViaAPI extends ViaAPIBase<UUID> {
|
||||
}
|
@ -1,4 +1,4 @@
|
||||
package com.viaversion.fabric.mc116.platform;
|
||||
package com.viaversion.fabric.common.platform;
|
||||
|
||||
import com.viaversion.viaversion.configuration.AbstractViaConfig;
|
||||
|
||||
@ -8,14 +8,14 @@ import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
public class VRViaConfig extends AbstractViaConfig {
|
||||
public class FabricViaConfig extends AbstractViaConfig {
|
||||
// Based on Sponge ViaVersion
|
||||
private static List<String> UNSUPPORTED = Arrays.asList("anti-xray-patch", "bungee-ping-interval",
|
||||
"bungee-ping-save", "bungee-servers", "quick-move-action-fix", "nms-player-ticking",
|
||||
"velocity-ping-interval", "velocity-ping-save", "velocity-servers",
|
||||
"blockconnection-method", "change-1_9-hitbox", "change-1_14-hitbox");
|
||||
|
||||
public VRViaConfig(File configFile) {
|
||||
public FabricViaConfig(File configFile) {
|
||||
super(configFile);
|
||||
// Load config
|
||||
reloadConfig();
|
@ -1,6 +1,6 @@
|
||||
package com.viaversion.fabric.mc18.protocol;
|
||||
package com.viaversion.fabric.common.protocol;
|
||||
|
||||
import com.viaversion.fabric.mc18.ViaFabricAddress;
|
||||
import com.viaversion.fabric.common.VFAddressParser;
|
||||
import com.viaversion.viaversion.api.protocol.AbstractSimpleProtocol;
|
||||
import com.viaversion.viaversion.api.protocol.packet.PacketWrapper;
|
||||
import com.viaversion.viaversion.api.protocol.remapper.PacketRemapper;
|
||||
@ -8,8 +8,8 @@ import com.viaversion.viaversion.api.protocol.remapper.ValueTransformer;
|
||||
import com.viaversion.viaversion.api.type.Type;
|
||||
import com.viaversion.viaversion.api.protocol.packet.State;
|
||||
|
||||
public class ViaFabricHostnameProtocol extends AbstractSimpleProtocol {
|
||||
public static final ViaFabricHostnameProtocol INSTANCE = new ViaFabricHostnameProtocol();
|
||||
public class HostnameParserProtocol extends AbstractSimpleProtocol {
|
||||
public static final HostnameParserProtocol INSTANCE = new HostnameParserProtocol();
|
||||
|
||||
@Override
|
||||
protected void registerPackets() {
|
||||
@ -20,7 +20,7 @@ public class ViaFabricHostnameProtocol extends AbstractSimpleProtocol {
|
||||
map(Type.STRING, new ValueTransformer<String, String>(Type.STRING) {
|
||||
@Override
|
||||
public String transform(PacketWrapper packetWrapper, String s) {
|
||||
return new ViaFabricAddress().parse(s).realAddress;
|
||||
return new VFAddressParser().parse(s).realAddress;
|
||||
}
|
||||
});
|
||||
}
|
@ -1,4 +1,4 @@
|
||||
package com.viaversion.fabric.mc114.util;
|
||||
package com.viaversion.fabric.common.util;
|
||||
|
||||
import com.viaversion.viaversion.api.platform.PlatformTask;
|
||||
|
@ -1,4 +1,4 @@
|
||||
package com.viaversion.fabric.mc116.util;
|
||||
package com.viaversion.fabric.common.util;
|
||||
|
||||
import java.text.MessageFormat;
|
||||
import java.util.logging.Level;
|
@ -1,4 +1,4 @@
|
||||
package com.viaversion.fabric.mc116.util;
|
||||
package com.viaversion.fabric.common.util;
|
||||
|
||||
import com.viaversion.viaversion.api.Via;
|
||||
import com.viaversion.viaversion.api.protocol.version.ProtocolVersion;
|
@ -11,6 +11,10 @@
|
||||
"sources": "https://github.com/ViaVersion/ViaFabric",
|
||||
"discord": "https://discord.gg/viaversion"
|
||||
},
|
||||
"depends": {
|
||||
"fabricloader": ">=0.10.0",
|
||||
"minecraft": ["1.8.x", "1.14.x", "1.15.x", "1.16.x", "1.17.x"]
|
||||
},
|
||||
"environment": "*",
|
||||
"authors": [
|
||||
{
|
||||
|
@ -3,7 +3,6 @@ version = rootProject.version
|
||||
dependencies {
|
||||
minecraft("com.mojang:minecraft:1.14.4")
|
||||
mappings("net.fabricmc:yarn:1.14.4+build.16:v2")
|
||||
modImplementation("net.fabricmc:fabric-loader:0.8.2+build.194")
|
||||
|
||||
modImplementation("net.fabricmc.fabric-api:fabric-api:0.13.1+build.257-1.14")
|
||||
modImplementation("io.github.prospector:modmenu:1.7.16.1.14.4+build.128")
|
||||
|
@ -1,12 +1,12 @@
|
||||
package com.viaversion.fabric.mc114;
|
||||
|
||||
import com.viaversion.fabric.common.config.VFConfig;
|
||||
import com.viaversion.fabric.mc114.commands.VRCommandHandler;
|
||||
import com.viaversion.fabric.mc114.config.VRConfig;
|
||||
import com.viaversion.fabric.mc114.platform.VRInjector;
|
||||
import com.viaversion.fabric.mc114.platform.FabricInjector;
|
||||
import com.viaversion.fabric.mc114.platform.VRLoader;
|
||||
import com.viaversion.fabric.mc114.platform.VRPlatform;
|
||||
import com.viaversion.fabric.mc114.protocol.ViaFabricHostnameProtocol;
|
||||
import com.viaversion.fabric.mc114.util.JLoggerToLog4j;
|
||||
import com.viaversion.fabric.mc114.platform.FabricPlatform;
|
||||
import com.viaversion.fabric.common.protocol.HostnameParserProtocol;
|
||||
import com.viaversion.fabric.common.util.JLoggerToLog4j;
|
||||
import com.google.common.collect.Range;
|
||||
import com.google.common.util.concurrent.ThreadFactoryBuilder;
|
||||
import com.mojang.brigadier.arguments.StringArgumentType;
|
||||
@ -36,7 +36,7 @@ public class ViaFabric implements ModInitializer {
|
||||
public static final ExecutorService ASYNC_EXECUTOR;
|
||||
public static final EventLoop EVENT_LOOP;
|
||||
public static CompletableFuture<Void> INIT_FUTURE = new CompletableFuture<>();
|
||||
public static VRConfig config;
|
||||
public static VFConfig config;
|
||||
|
||||
static {
|
||||
ThreadFactory factory = new ThreadFactoryBuilder().setDaemon(true).setNameFormat("ViaFabric-%d").build();
|
||||
@ -64,16 +64,16 @@ public class ViaFabric implements ModInitializer {
|
||||
@Override
|
||||
public void onInitialize() {
|
||||
Via.init(ViaManagerImpl.builder()
|
||||
.injector(new VRInjector())
|
||||
.injector(new FabricInjector())
|
||||
.loader(new VRLoader())
|
||||
.commandHandler(new VRCommandHandler())
|
||||
.platform(new VRPlatform()).build());
|
||||
.platform(new FabricPlatform()).build());
|
||||
|
||||
FabricLoader.getInstance().getModContainer("viabackwards").ifPresent(mod -> MappingDataLoader.enableMappingsCache());
|
||||
|
||||
((ViaManagerImpl) Via.getManager()).init();
|
||||
|
||||
Via.getManager().getProtocolManager().registerBaseProtocol(ViaFabricHostnameProtocol.INSTANCE, Range.lessThan(Integer.MIN_VALUE));
|
||||
Via.getManager().getProtocolManager().registerBaseProtocol(HostnameParserProtocol.INSTANCE, Range.lessThan(Integer.MIN_VALUE));
|
||||
ProtocolVersion.register(-2, "AUTO");
|
||||
|
||||
FabricLoader.getInstance().getEntrypoints("viafabric:via_api_initialized", Runnable.class).forEach(Runnable::run);
|
||||
@ -89,7 +89,7 @@ public class ViaFabric implements ModInitializer {
|
||||
}
|
||||
}
|
||||
|
||||
config = new VRConfig(FabricLoader.getInstance().getConfigDir().resolve("ViaFabric")
|
||||
config = new VFConfig(FabricLoader.getInstance().getConfigDir().resolve("ViaFabric")
|
||||
.resolve("viafabric.yml").toFile());
|
||||
|
||||
INIT_FUTURE.complete(null);
|
||||
|
@ -1,77 +0,0 @@
|
||||
package com.viaversion.fabric.mc114;
|
||||
|
||||
import com.viaversion.viaversion.api.protocol.version.ProtocolVersion;
|
||||
|
||||
import java.util.Locale;
|
||||
|
||||
public class ViaFabricAddress {
|
||||
public int protocol = 0;
|
||||
public String viaSuffix = null;
|
||||
public String realAddress = null;
|
||||
|
||||
public ViaFabricAddress parse(String address) {
|
||||
if (address == null) return null;
|
||||
String[] parts = address.split("\\.");
|
||||
|
||||
boolean foundDomain = false;
|
||||
boolean foundOptions = false;
|
||||
|
||||
StringBuilder ourParts = new StringBuilder();
|
||||
StringBuilder realAddrBuilder = new StringBuilder();
|
||||
|
||||
for (int i = parts.length - 1; i >= 0; i--) {
|
||||
String part = parts[i];
|
||||
boolean realAddrPart = false;
|
||||
if (foundDomain) {
|
||||
if (!foundOptions) {
|
||||
if (part.startsWith("_")) {
|
||||
String arg = part.substring(2);
|
||||
if (part.toLowerCase(Locale.ROOT).startsWith("_v")) {
|
||||
try {
|
||||
protocol = Integer.parseInt(arg);
|
||||
} catch (NumberFormatException e) {
|
||||
ProtocolVersion closest = ProtocolVersion.getClosest(arg.replace("_", "."));
|
||||
if (closest != null) {
|
||||
protocol = closest.getVersion();
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
foundOptions = true;
|
||||
}
|
||||
}
|
||||
if (foundOptions) {
|
||||
realAddrPart = true;
|
||||
}
|
||||
} else if (part.equalsIgnoreCase("viafabric")) {
|
||||
foundDomain = true;
|
||||
}
|
||||
if (realAddrPart) {
|
||||
realAddrBuilder.insert(0, part + ".");
|
||||
} else {
|
||||
ourParts.insert(0, part + ".");
|
||||
}
|
||||
}
|
||||
|
||||
String realAddr = realAddrBuilder.toString().replaceAll("\\.$", "");
|
||||
String suffix = ourParts.toString().replaceAll("\\.$", "");
|
||||
|
||||
if (realAddr.isEmpty()) {
|
||||
this.realAddress = address;
|
||||
} else {
|
||||
this.realAddress = realAddr;
|
||||
this.viaSuffix = suffix;
|
||||
}
|
||||
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "ViaFabricAddress{" +
|
||||
"protocol=" + protocol +
|
||||
", viaSuffix='" + viaSuffix + '\'' +
|
||||
", realAddress='" + realAddress + '\'' +
|
||||
'}';
|
||||
}
|
||||
}
|
@ -1,35 +0,0 @@
|
||||
package com.viaversion.fabric.mc114.commands;
|
||||
|
||||
import com.viaversion.viaversion.api.Via;
|
||||
import com.viaversion.viaversion.api.command.ViaCommandSender;
|
||||
import com.viaversion.viaversion.api.connection.UserConnection;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
public class UserCommandSender implements ViaCommandSender {
|
||||
private UserConnection con;
|
||||
|
||||
public UserCommandSender(UserConnection con) {
|
||||
this.con = con;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean hasPermission(String s) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void sendMessage(String s) {
|
||||
Via.getPlatform().sendMessage(getUUID(), s);
|
||||
}
|
||||
|
||||
@Override
|
||||
public UUID getUUID() {
|
||||
return con.getProtocolInfo().getUuid();
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getName() {
|
||||
return con.getProtocolInfo().getUsername();
|
||||
}
|
||||
}
|
@ -5,7 +5,7 @@ import com.mojang.brigadier.CommandDispatcher;
|
||||
import io.github.cottonmc.clientcommands.ClientCommandPlugin;
|
||||
import io.github.cottonmc.clientcommands.CottonClientCommandSource;
|
||||
|
||||
public class VRClientCommands implements ClientCommandPlugin {
|
||||
public class VFClientCommands implements ClientCommandPlugin {
|
||||
@Override
|
||||
public void registerCommands(CommandDispatcher<CottonClientCommandSource> commandDispatcher) {
|
||||
commandDispatcher.register(ViaFabric.command("viafabricclient"));
|
@ -1,6 +1,6 @@
|
||||
package com.viaversion.fabric.mc114.commands;
|
||||
|
||||
import com.viaversion.fabric.mc114.commands.subs.LeakDetectSubCommand;
|
||||
import com.viaversion.fabric.common.commands.subs.LeakDetectSubCommand;
|
||||
import com.mojang.brigadier.arguments.StringArgumentType;
|
||||
import com.mojang.brigadier.context.CommandContext;
|
||||
import com.mojang.brigadier.suggestion.Suggestions;
|
||||
|
@ -1,68 +0,0 @@
|
||||
package com.viaversion.fabric.mc114.config;
|
||||
|
||||
import com.viaversion.viaversion.util.Config;
|
||||
|
||||
import java.io.File;
|
||||
import java.net.URL;
|
||||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
public class VRConfig extends Config {
|
||||
public static final String ENABLE_CLIENT_SIDE = "enable-client-side";
|
||||
public static final String CLIENT_SIDE_VERSION = "client-side-version";
|
||||
public static final String CLIENT_SIDE_FORCE_DISABLE = "client-side-force-disable";
|
||||
public static final String HIDE_BUTTON = "hide-button";
|
||||
|
||||
public VRConfig(File configFile) {
|
||||
super(configFile);
|
||||
reloadConfig();
|
||||
}
|
||||
|
||||
@Override
|
||||
public URL getDefaultConfigURL() {
|
||||
return getClass().getClassLoader().getResource("assets/viafabric/config.yml");
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void handleConfig(Map<String, Object> map) {
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<String> getUnsupportedOptions() {
|
||||
return Collections.emptyList();
|
||||
}
|
||||
|
||||
public boolean isClientSideEnabled() {
|
||||
return getBoolean(ENABLE_CLIENT_SIDE, false);
|
||||
}
|
||||
|
||||
public void setClientSideEnabled(boolean val) {
|
||||
set(ENABLE_CLIENT_SIDE, val);
|
||||
}
|
||||
|
||||
public int getClientSideVersion() {
|
||||
return getInt(CLIENT_SIDE_VERSION, -1);
|
||||
}
|
||||
|
||||
public void setClientSideVersion(int val) {
|
||||
set(CLIENT_SIDE_VERSION, val);
|
||||
}
|
||||
|
||||
public Collection<?> getClientSideForceDisable() {
|
||||
return (List<?>) get(CLIENT_SIDE_FORCE_DISABLE, List.class, Collections.emptyList());
|
||||
}
|
||||
|
||||
public void setHideButton(boolean val) {
|
||||
set(HIDE_BUTTON, val);
|
||||
}
|
||||
|
||||
public boolean isHideButton() {
|
||||
return getBoolean(HIDE_BUTTON, false);
|
||||
}
|
||||
|
||||
public boolean isForcedDisable(String line) {
|
||||
return getClientSideForceDisable().contains(line);
|
||||
}
|
||||
}
|
@ -1,7 +1,7 @@
|
||||
package com.viaversion.fabric.mc114.gui;
|
||||
|
||||
import com.viaversion.fabric.mc114.ViaFabric;
|
||||
import com.viaversion.fabric.mc114.util.ProtocolUtils;
|
||||
import com.viaversion.fabric.common.util.ProtocolUtils;
|
||||
import com.viaversion.viaversion.api.Via;
|
||||
import net.fabricmc.api.EnvType;
|
||||
import net.fabricmc.api.Environment;
|
||||
|
@ -1,38 +0,0 @@
|
||||
package com.viaversion.fabric.mc114.handler;
|
||||
|
||||
import io.netty.buffer.ByteBuf;
|
||||
import io.netty.channel.ChannelHandler;
|
||||
import io.netty.channel.ChannelHandlerContext;
|
||||
import io.netty.handler.codec.ByteToMessageDecoder;
|
||||
import io.netty.handler.codec.MessageToByteEncoder;
|
||||
import io.netty.handler.codec.MessageToMessageDecoder;
|
||||
import com.viaversion.viaversion.util.PipelineUtil;
|
||||
|
||||
import java.lang.reflect.InvocationTargetException;
|
||||
|
||||
public class CommonTransformer {
|
||||
public static final String HANDLER_DECODER_NAME = "via-decoder";
|
||||
public static final String HANDLER_ENCODER_NAME = "via-encoder";
|
||||
|
||||
public static void decompress(ChannelHandlerContext ctx, ByteBuf buf) throws InvocationTargetException {
|
||||
ChannelHandler handler = ctx.pipeline().get("decompress");
|
||||
ByteBuf decompressed = handler instanceof MessageToMessageDecoder
|
||||
? (ByteBuf) PipelineUtil.callDecode((MessageToMessageDecoder<?>) handler, ctx, buf).get(0)
|
||||
: (ByteBuf) PipelineUtil.callDecode((ByteToMessageDecoder) handler, ctx, buf).get(0);
|
||||
try {
|
||||
buf.clear().writeBytes(decompressed);
|
||||
} finally {
|
||||
decompressed.release();
|
||||
}
|
||||
}
|
||||
|
||||
public static void compress(ChannelHandlerContext ctx, ByteBuf buf) throws Exception {
|
||||
ByteBuf compressed = ctx.alloc().buffer();
|
||||
try {
|
||||
PipelineUtil.callEncode((MessageToByteEncoder<?>) ctx.pipeline().get("compress"), ctx, buf, compressed);
|
||||
buf.clear().writeBytes(compressed);
|
||||
} finally {
|
||||
compressed.release();
|
||||
}
|
||||
}
|
||||
}
|
@ -1,5 +1,6 @@
|
||||
package com.viaversion.fabric.mc114.handler;
|
||||
|
||||
import com.viaversion.fabric.common.handler.CommonTransformer;
|
||||
import io.netty.buffer.ByteBuf;
|
||||
import io.netty.channel.ChannelHandler;
|
||||
import io.netty.channel.ChannelHandlerContext;
|
||||
|
@ -1,5 +1,6 @@
|
||||
package com.viaversion.fabric.mc114.handler;
|
||||
|
||||
import com.viaversion.fabric.common.handler.CommonTransformer;
|
||||
import io.netty.buffer.ByteBuf;
|
||||
import io.netty.channel.ChannelHandler;
|
||||
import io.netty.channel.ChannelHandlerContext;
|
||||
|
@ -1,6 +1,6 @@
|
||||
package com.viaversion.fabric.mc114.mixin.address.client;
|
||||
|
||||
import com.viaversion.fabric.mc114.ViaFabricAddress;
|
||||
import com.viaversion.fabric.common.VFAddressParser;
|
||||
import org.spongepowered.asm.mixin.Mixin;
|
||||
import org.spongepowered.asm.mixin.injection.At;
|
||||
import org.spongepowered.asm.mixin.injection.Redirect;
|
||||
@ -13,7 +13,7 @@ public class MixinConnectScreenThread {
|
||||
@Redirect(method = "run()V", at = @At(value = "INVOKE",
|
||||
target = "Ljava/net/InetAddress;getByName(Ljava/lang/String;)Ljava/net/InetAddress;"))
|
||||
private InetAddress resolveViaFabricAddr(String address) throws UnknownHostException {
|
||||
ViaFabricAddress viaAddr = new ViaFabricAddress().parse(address);
|
||||
VFAddressParser viaAddr = new VFAddressParser().parse(address);
|
||||
if (viaAddr.viaSuffix == null) {
|
||||
return InetAddress.getByName(address);
|
||||
}
|
||||
|
@ -1,6 +1,6 @@
|
||||
package com.viaversion.fabric.mc114.mixin.address.client;
|
||||
|
||||
import com.viaversion.fabric.mc114.ViaFabricAddress;
|
||||
import com.viaversion.fabric.common.VFAddressParser;
|
||||
import net.minecraft.network.ServerAddress;
|
||||
import org.spongepowered.asm.mixin.Mixin;
|
||||
import org.spongepowered.asm.mixin.Shadow;
|
||||
@ -16,7 +16,7 @@ public abstract class MixinServerAddress {
|
||||
|
||||
@Redirect(method = "parse", at = @At(value = "INVOKE", target = "Lnet/minecraft/network/ServerAddress;resolveSrv(Ljava/lang/String;)[Ljava/lang/String;"))
|
||||
private static String[] modifySrvAddr(String address) {
|
||||
ViaFabricAddress viaAddr = new ViaFabricAddress().parse(address);
|
||||
VFAddressParser viaAddr = new VFAddressParser().parse(address);
|
||||
if (viaAddr.viaSuffix == null) {
|
||||
return resolveSrv(address);
|
||||
}
|
||||
|
@ -1,6 +1,6 @@
|
||||
package com.viaversion.fabric.mc114.mixin.address.client;
|
||||
|
||||
import com.viaversion.fabric.mc114.ViaFabricAddress;
|
||||
import com.viaversion.fabric.common.VFAddressParser;
|
||||
import net.minecraft.client.network.MultiplayerServerListPinger;
|
||||
import org.spongepowered.asm.mixin.Mixin;
|
||||
import org.spongepowered.asm.mixin.injection.At;
|
||||
@ -14,7 +14,7 @@ public class MixinServerPinger {
|
||||
@Redirect(method = "add", at = @At(value = "INVOKE",
|
||||
target = "Ljava/net/InetAddress;getByName(Ljava/lang/String;)Ljava/net/InetAddress;"))
|
||||
private InetAddress resolveViaFabricAddr(String address) throws UnknownHostException {
|
||||
ViaFabricAddress viaAddr = new ViaFabricAddress().parse(address);
|
||||
VFAddressParser viaAddr = new VFAddressParser().parse(address);
|
||||
if (viaAddr.viaSuffix == null) {
|
||||
return InetAddress.getByName(address);
|
||||
}
|
||||
|
@ -1,6 +1,6 @@
|
||||
package com.viaversion.fabric.mc114.mixin.debug.client;
|
||||
|
||||
import com.viaversion.fabric.mc114.handler.CommonTransformer;
|
||||
import com.viaversion.fabric.common.handler.CommonTransformer;
|
||||
import com.viaversion.fabric.mc114.handler.FabricDecodeHandler;
|
||||
import com.viaversion.viaversion.api.connection.ProtocolInfo;
|
||||
import io.netty.channel.ChannelHandler;
|
||||
|
@ -1,6 +1,6 @@
|
||||
package com.viaversion.fabric.mc114.mixin.pipeline;
|
||||
|
||||
import com.viaversion.fabric.mc114.handler.CommonTransformer;
|
||||
import com.viaversion.fabric.common.handler.CommonTransformer;
|
||||
import com.viaversion.fabric.mc114.handler.FabricDecodeHandler;
|
||||
import com.viaversion.fabric.mc114.handler.FabricEncodeHandler;
|
||||
import com.viaversion.viaversion.connection.UserConnectionImpl;
|
||||
|
@ -1,11 +1,11 @@
|
||||
package com.viaversion.fabric.mc114.mixin.pipeline.client;
|
||||
|
||||
import com.viaversion.fabric.mc114.ViaFabric;
|
||||
import com.viaversion.fabric.mc114.handler.CommonTransformer;
|
||||
import com.viaversion.fabric.common.handler.CommonTransformer;
|
||||
import com.viaversion.fabric.mc114.handler.FabricDecodeHandler;
|
||||
import com.viaversion.fabric.mc114.handler.FabricEncodeHandler;
|
||||
import com.viaversion.fabric.mc114.handler.clientside.ProtocolDetectionHandler;
|
||||
import com.viaversion.fabric.mc114.protocol.ViaFabricHostnameProtocol;
|
||||
import com.viaversion.fabric.common.protocol.HostnameParserProtocol;
|
||||
import com.viaversion.viaversion.connection.UserConnectionImpl;
|
||||
import com.viaversion.viaversion.protocol.ProtocolPipelineImpl;
|
||||
import io.netty.channel.Channel;
|
||||
@ -22,7 +22,7 @@ public class MixinClientConnectionChInit {
|
||||
private void onInitChannel(Channel channel, CallbackInfo ci) {
|
||||
if (channel instanceof SocketChannel) {
|
||||
UserConnection user = new UserConnectionImpl(channel, true);
|
||||
new ProtocolPipelineImpl(user).add(ViaFabricHostnameProtocol.INSTANCE);
|
||||
new ProtocolPipelineImpl(user).add(HostnameParserProtocol.INSTANCE);
|
||||
|
||||
channel.pipeline()
|
||||
.addBefore("encoder", CommonTransformer.HANDLER_ENCODER_NAME, new FabricEncodeHandler(user))
|
||||
|
@ -1,6 +1,6 @@
|
||||
package com.viaversion.fabric.mc114.platform;
|
||||
|
||||
import com.viaversion.fabric.mc114.handler.CommonTransformer;
|
||||
import com.viaversion.fabric.common.handler.CommonTransformer;
|
||||
import net.fabricmc.api.EnvType;
|
||||
import net.fabricmc.loader.api.FabricLoader;
|
||||
import net.minecraft.SharedConstants;
|
||||
@ -11,7 +11,7 @@ import com.viaversion.viaversion.libs.gson.JsonObject;
|
||||
import java.lang.reflect.Method;
|
||||
import java.util.Arrays;
|
||||
|
||||
public class VRInjector implements ViaInjector {
|
||||
public class FabricInjector implements ViaInjector {
|
||||
@Override
|
||||
public void inject() {
|
||||
// *looks at Mixins*
|
@ -1,12 +1,13 @@
|
||||
package com.viaversion.fabric.mc114.platform;
|
||||
|
||||
import com.viaversion.fabric.common.platform.FabricViaAPI;
|
||||
import com.viaversion.fabric.common.platform.FabricViaConfig;
|
||||
import com.viaversion.fabric.mc114.ViaFabric;
|
||||
import com.viaversion.fabric.mc114.commands.NMSCommandSender;
|
||||
import com.viaversion.fabric.mc114.commands.UserCommandSender;
|
||||
import com.viaversion.fabric.mc114.util.FutureTaskId;
|
||||
import com.viaversion.fabric.mc114.util.JLoggerToLog4j;
|
||||
import com.viaversion.fabric.common.commands.UserCommandSender;
|
||||
import com.viaversion.fabric.common.util.FutureTaskId;
|
||||
import com.viaversion.fabric.common.util.JLoggerToLog4j;
|
||||
import com.viaversion.viaversion.api.configuration.ViaVersionConfig;
|
||||
import com.viaversion.viaversion.api.platform.PlatformTask;
|
||||
import io.netty.util.concurrent.Future;
|
||||
import io.netty.util.concurrent.GenericFutureListener;
|
||||
import net.fabricmc.api.EnvType;
|
||||
@ -46,17 +47,17 @@ import java.util.logging.Level;
|
||||
import java.util.logging.Logger;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
public class VRPlatform implements ViaPlatform<UUID> {
|
||||
public class FabricPlatform implements ViaPlatform<UUID> {
|
||||
private final Logger logger = new JLoggerToLog4j(LogManager.getLogger("ViaVersion"));
|
||||
private final VRViaConfig config;
|
||||
private final FabricViaConfig config;
|
||||
private final File dataFolder;
|
||||
private final ViaAPI<UUID> api;
|
||||
|
||||
public VRPlatform() {
|
||||
public FabricPlatform() {
|
||||
Path configDir = FabricLoader.getInstance().getConfigDirectory().toPath().resolve("ViaFabric");
|
||||
config = new VRViaConfig(configDir.resolve("viaversion.yml").toFile());
|
||||
config = new FabricViaConfig(configDir.resolve("viaversion.yml").toFile());
|
||||
dataFolder = configDir.toFile();
|
||||
api = new VRViaAPI();
|
||||
api = new FabricViaAPI();
|
||||
}
|
||||
|
||||
public static MinecraftServer getServer() {
|
||||
@ -132,7 +133,7 @@ public class VRPlatform implements ViaPlatform<UUID> {
|
||||
}
|
||||
|
||||
@Override
|
||||
public PlatformTask runSync(Runnable runnable, long ticks) {
|
||||
public FutureTaskId runSync(Runnable runnable, long ticks) {
|
||||
// ViaVersion seems to not need to run delayed tasks on main thread
|
||||
return new FutureTaskId(
|
||||
ViaFabric.EVENT_LOOP
|
||||
@ -142,7 +143,7 @@ public class VRPlatform implements ViaPlatform<UUID> {
|
||||
}
|
||||
|
||||
@Override
|
||||
public PlatformTask runRepeatingSync(Runnable runnable, long ticks) {
|
||||
public FutureTaskId runRepeatingSync(Runnable runnable, long ticks) {
|
||||
// ViaVersion seems to not need to run repeating tasks on main thread
|
||||
return new FutureTaskId(
|
||||
ViaFabric.EVENT_LOOP
|
@ -1,8 +0,0 @@
|
||||
package com.viaversion.fabric.mc114.platform;
|
||||
|
||||
import com.viaversion.viaversion.ViaAPIBase;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
public class VRViaAPI extends ViaAPIBase<UUID> {
|
||||
}
|
@ -1,68 +0,0 @@
|
||||
package com.viaversion.fabric.mc114.platform;
|
||||
|
||||
import com.viaversion.viaversion.configuration.AbstractViaConfig;
|
||||
|
||||
import java.io.File;
|
||||
import java.net.URL;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
public class VRViaConfig extends AbstractViaConfig {
|
||||
// Based on Sponge ViaVersion
|
||||
private static List<String> UNSUPPORTED = Arrays.asList("anti-xray-patch", "bungee-ping-interval",
|
||||
"bungee-ping-save", "bungee-servers", "quick-move-action-fix", "nms-player-ticking",
|
||||
"velocity-ping-interval", "velocity-ping-save", "velocity-servers",
|
||||
"blockconnection-method", "change-1_9-hitbox", "change-1_14-hitbox");
|
||||
|
||||
public VRViaConfig(File configFile) {
|
||||
super(configFile);
|
||||
// Load config
|
||||
reloadConfig();
|
||||
}
|
||||
|
||||
@Override
|
||||
public URL getDefaultConfigURL() {
|
||||
return getClass().getClassLoader().getResource("assets/viaversion/config.yml");
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void handleConfig(Map<String, Object> config) {
|
||||
// Nothing Currently
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<String> getUnsupportedOptions() {
|
||||
return UNSUPPORTED;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isAntiXRay() {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isNMSPlayerTicking() {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean is1_12QuickMoveActionFix() {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getBlockConnectionMethod() {
|
||||
return "packet";
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean is1_9HitboxFix() {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean is1_14HitboxFix() {
|
||||
return false;
|
||||
}
|
||||
}
|
@ -1,34 +0,0 @@
|
||||
package com.viaversion.fabric.mc114.protocol;
|
||||
|
||||
import com.viaversion.fabric.mc114.ViaFabricAddress;
|
||||
import com.viaversion.viaversion.api.protocol.AbstractSimpleProtocol;
|
||||
import com.viaversion.viaversion.api.protocol.packet.PacketWrapper;
|
||||
import com.viaversion.viaversion.api.protocol.remapper.PacketRemapper;
|
||||
import com.viaversion.viaversion.api.protocol.remapper.ValueTransformer;
|
||||
import com.viaversion.viaversion.api.type.Type;
|
||||
import com.viaversion.viaversion.api.protocol.packet.State;
|
||||
|
||||
public class ViaFabricHostnameProtocol extends AbstractSimpleProtocol {
|
||||
public static final ViaFabricHostnameProtocol INSTANCE = new ViaFabricHostnameProtocol();
|
||||
|
||||
@Override
|
||||
protected void registerPackets() {
|
||||
registerServerbound(State.HANDSHAKE, 0, 0, new PacketRemapper() {
|
||||
@Override
|
||||
public void registerMap() {
|
||||
map(Type.VAR_INT); // Protocol version
|
||||
map(Type.STRING, new ValueTransformer<String, String>(Type.STRING) {
|
||||
@Override
|
||||
public String transform(PacketWrapper packetWrapper, String s) {
|
||||
return new ViaFabricAddress().parse(s).realAddress;
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isBaseProtocol() {
|
||||
return true;
|
||||
}
|
||||
}
|
@ -1,9 +1,9 @@
|
||||
package com.viaversion.fabric.mc114.providers;
|
||||
|
||||
import com.viaversion.fabric.common.VFAddressParser;
|
||||
import com.viaversion.fabric.mc114.ViaFabric;
|
||||
import com.viaversion.fabric.mc114.ViaFabricAddress;
|
||||
import com.viaversion.fabric.mc114.service.ProtocolAutoDetector;
|
||||
import com.viaversion.fabric.mc114.util.ProtocolUtils;
|
||||
import com.viaversion.fabric.common.util.ProtocolUtils;
|
||||
import com.google.common.primitives.Ints;
|
||||
import com.viaversion.viaversion.api.connection.ProtocolInfo;
|
||||
import net.fabricmc.loader.api.FabricLoader;
|
||||
@ -68,7 +68,7 @@ public class VRVersionProvider extends BaseVersionProvider {
|
||||
SocketAddress addr = connection.getChannel().remoteAddress();
|
||||
|
||||
if (addr instanceof InetSocketAddress) {
|
||||
int addrVersion = new ViaFabricAddress().parse(((InetSocketAddress) addr).getHostName()).protocol;
|
||||
int addrVersion = new VFAddressParser().parse(((InetSocketAddress) addr).getHostName()).protocol;
|
||||
if (addrVersion != 0) serverVer = addrVersion;
|
||||
|
||||
try {
|
||||
|
@ -1,7 +1,7 @@
|
||||
package com.viaversion.fabric.mc114.service;
|
||||
|
||||
import com.viaversion.fabric.common.VFAddressParser;
|
||||
import com.viaversion.fabric.mc114.ViaFabric;
|
||||
import com.viaversion.fabric.mc114.ViaFabricAddress;
|
||||
import com.google.common.cache.CacheBuilder;
|
||||
import com.google.common.cache.CacheLoader;
|
||||
import com.google.common.cache.LoadingCache;
|
||||
@ -114,7 +114,7 @@ public class ProtocolAutoDetector {
|
||||
public static CompletableFuture<ProtocolVersion> detectVersion(InetSocketAddress address) {
|
||||
try {
|
||||
InetSocketAddress real = new InetSocketAddress(InetAddress.getByAddress
|
||||
(new ViaFabricAddress().parse(address.getHostString()).realAddress,
|
||||
(new VFAddressParser().parse(address.getHostString()).realAddress,
|
||||
address.getAddress().getAddress()), address.getPort());
|
||||
return SERVER_VER.get(real);
|
||||
} catch (UnknownHostException | ExecutionException e) {
|
||||
|
@ -1,68 +0,0 @@
|
||||
package com.viaversion.fabric.mc114.util;
|
||||
|
||||
import java.text.MessageFormat;
|
||||
import java.util.logging.Level;
|
||||
import java.util.logging.LogRecord;
|
||||
import java.util.logging.Logger;
|
||||
|
||||
public class JLoggerToLog4j extends Logger {
|
||||
private final org.apache.logging.log4j.Logger base;
|
||||
|
||||
public JLoggerToLog4j(org.apache.logging.log4j.Logger logger) {
|
||||
super("logger", null);
|
||||
this.base = logger;
|
||||
}
|
||||
|
||||
public void log(LogRecord record) {
|
||||
this.log(record.getLevel(), record.getMessage());
|
||||
}
|
||||
|
||||
public void log(Level level, String msg) {
|
||||
if (level == Level.FINE) {
|
||||
this.base.debug(msg);
|
||||
} else if (level == Level.WARNING) {
|
||||
this.base.warn(msg);
|
||||
} else if (level == Level.SEVERE) {
|
||||
this.base.error(msg);
|
||||
} else if (level == Level.INFO) {
|
||||
this.base.info(msg);
|
||||
} else {
|
||||
this.base.trace(msg);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public void log(Level level, String msg, Object param1) {
|
||||
if (level == Level.FINE) {
|
||||
this.base.debug(msg, param1);
|
||||
} else if (level == Level.WARNING) {
|
||||
this.base.warn(msg, param1);
|
||||
} else if (level == Level.SEVERE) {
|
||||
this.base.error(msg, param1);
|
||||
} else if (level == Level.INFO) {
|
||||
this.base.info(msg, param1);
|
||||
} else {
|
||||
this.base.trace(msg, param1);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public void log(Level level, String msg, Object[] params) {
|
||||
log(level, MessageFormat.format(msg, params));
|
||||
}
|
||||
|
||||
public void log(Level level, String msg, Throwable params) {
|
||||
if (level == Level.FINE) {
|
||||
this.base.debug(msg, params);
|
||||
} else if (level == Level.WARNING) {
|
||||
this.base.warn(msg, params);
|
||||
} else if (level == Level.SEVERE) {
|
||||
this.base.error(msg, params);
|
||||
} else if (level == Level.INFO) {
|
||||
this.base.info(msg, params);
|
||||
} else {
|
||||
this.base.trace(msg, params);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
@ -1,60 +0,0 @@
|
||||
package com.viaversion.fabric.mc114.util;
|
||||
|
||||
import com.viaversion.viaversion.api.Via;
|
||||
import com.viaversion.viaversion.api.protocol.version.ProtocolVersion;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.stream.Stream;
|
||||
|
||||
public class ProtocolUtils {
|
||||
public static boolean isSupported(int server, int client) {
|
||||
return server == client || Via.getManager().getProtocolManager().getProtocolPath(client, server) != null;
|
||||
}
|
||||
|
||||
public static String getProtocolName(int id) {
|
||||
if (!ProtocolVersion.isRegistered(id)) return Integer.toString(id);
|
||||
return ProtocolVersion.getProtocol(id).getName();
|
||||
}
|
||||
|
||||
public static boolean isStartOfProtocolText(String s) {
|
||||
try {
|
||||
Integer.parseInt(s);
|
||||
return true;
|
||||
} catch (NumberFormatException e) {
|
||||
try {
|
||||
Integer.parseInt(s + '0');
|
||||
return true;
|
||||
} catch (NumberFormatException e2) {
|
||||
return ProtocolVersion.getProtocols().stream()
|
||||
.map(ProtocolVersion::getName)
|
||||
.flatMap(str -> Stream.concat(
|
||||
Arrays.stream(str.split("-")),
|
||||
Arrays.stream(new String[]{str})
|
||||
))
|
||||
.anyMatch(ver -> ver.startsWith(s));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static Integer parseProtocolId(String s) {
|
||||
try {
|
||||
return Integer.parseInt(s);
|
||||
} catch (NumberFormatException ignored) {
|
||||
ProtocolVersion closest = ProtocolVersion.getClosest(s);
|
||||
if (closest == null) return null;
|
||||
return closest.getVersion();
|
||||
}
|
||||
}
|
||||
|
||||
public static String[] getProtocolSuggestions(String text) {
|
||||
return ProtocolVersion.getProtocols().stream()
|
||||
.map(ProtocolVersion::getName)
|
||||
.flatMap(str -> Stream.concat(
|
||||
Arrays.stream(str.split("-")),
|
||||
Arrays.stream(new String[]{str})
|
||||
))
|
||||
.distinct()
|
||||
.filter(ver -> ver.startsWith(text))
|
||||
.toArray(String[]::new);
|
||||
}
|
||||
}
|
@ -32,26 +32,21 @@
|
||||
"com.viaversion.fabric.mc114.ViaFabric"
|
||||
],
|
||||
"cotton-client-commands": [
|
||||
"com.viaversion.fabric.mc114.commands.VRClientCommands"
|
||||
"com.viaversion.fabric.mc114.commands.VFClientCommands"
|
||||
],
|
||||
"modmenu": [
|
||||
"com.viaversion.fabric.mc114.gui.ModMenuConfig"
|
||||
]
|
||||
},
|
||||
"depends": {
|
||||
"fabricloader": ">=0.4.0",
|
||||
"fabric-resource-loader-v0": "*",
|
||||
"minecraft": "1.14.x",
|
||||
"viaversion": ">3.0.1"
|
||||
},
|
||||
"conflicts": {
|
||||
"fabric-registry-sync-v0": "*"
|
||||
},
|
||||
"recommends": {
|
||||
"fabric-command-api-v1": "*",
|
||||
"cotton-client-commands": "*"
|
||||
},
|
||||
"icon": "assets/viafabric/textures/logo.png",
|
||||
"mixins": [
|
||||
"mixins.viafabric114.address.json",
|
||||
"mixins.viafabric114.gui.json",
|
||||
|
@ -3,7 +3,6 @@ version = rootProject.version
|
||||
dependencies {
|
||||
minecraft("com.mojang:minecraft:1.15.2")
|
||||
mappings("net.fabricmc:yarn:1.15.2+build.17:v2")
|
||||
modImplementation("net.fabricmc:fabric-loader:0.9.3+build.207")
|
||||
|
||||
modImplementation("net.fabricmc.fabric-api:fabric-api:0.19.0+build.325-1.15")
|
||||
modImplementation("io.github.prospector:modmenu:1.10.2+build.32")
|
||||
|
@ -1,17 +1,21 @@
|
||||
package com.viaversion.fabric.mc115;
|
||||
|
||||
import com.viaversion.fabric.mc115.commands.VRCommandHandler;
|
||||
import com.viaversion.fabric.mc115.config.VRConfig;
|
||||
import com.viaversion.fabric.mc115.platform.VRInjector;
|
||||
import com.viaversion.fabric.mc115.platform.VRLoader;
|
||||
import com.viaversion.fabric.mc115.platform.VRPlatform;
|
||||
import com.viaversion.fabric.mc115.protocol.ViaFabricHostnameProtocol;
|
||||
import com.viaversion.fabric.mc115.util.JLoggerToLog4j;
|
||||
import com.google.common.collect.Range;
|
||||
import com.google.common.util.concurrent.ThreadFactoryBuilder;
|
||||
import com.mojang.brigadier.arguments.StringArgumentType;
|
||||
import com.mojang.brigadier.builder.LiteralArgumentBuilder;
|
||||
import com.mojang.brigadier.builder.RequiredArgumentBuilder;
|
||||
import com.viaversion.fabric.common.config.VFConfig;
|
||||
import com.viaversion.fabric.common.protocol.HostnameParserProtocol;
|
||||
import com.viaversion.fabric.common.util.JLoggerToLog4j;
|
||||
import com.viaversion.fabric.mc115.commands.VRCommandHandler;
|
||||
import com.viaversion.fabric.mc115.platform.FabricInjector;
|
||||
import com.viaversion.fabric.mc115.platform.VRLoader;
|
||||
import com.viaversion.fabric.mc115.platform.FabricPlatform;
|
||||
import com.viaversion.viaversion.ViaManagerImpl;
|
||||
import com.viaversion.viaversion.api.Via;
|
||||
import com.viaversion.viaversion.api.data.MappingDataLoader;
|
||||
import com.viaversion.viaversion.api.protocol.version.ProtocolVersion;
|
||||
import io.netty.channel.DefaultEventLoop;
|
||||
import io.netty.channel.EventLoop;
|
||||
import net.fabricmc.api.ModInitializer;
|
||||
@ -20,10 +24,6 @@ import net.fabricmc.fabric.api.registry.CommandRegistry;
|
||||
import net.fabricmc.loader.api.FabricLoader;
|
||||
import net.minecraft.server.command.CommandSource;
|
||||
import org.apache.logging.log4j.LogManager;
|
||||
import com.viaversion.viaversion.ViaManagerImpl;
|
||||
import com.viaversion.viaversion.api.Via;
|
||||
import com.viaversion.viaversion.api.data.MappingDataLoader;
|
||||
import com.viaversion.viaversion.api.protocol.version.ProtocolVersion;
|
||||
|
||||
import java.util.concurrent.CompletableFuture;
|
||||
import java.util.concurrent.ExecutorService;
|
||||
@ -36,7 +36,7 @@ public class ViaFabric implements ModInitializer {
|
||||
public static final ExecutorService ASYNC_EXECUTOR;
|
||||
public static final EventLoop EVENT_LOOP;
|
||||
public static CompletableFuture<Void> INIT_FUTURE = new CompletableFuture<>();
|
||||
public static VRConfig config;
|
||||
public static VFConfig config;
|
||||
|
||||
static {
|
||||
ThreadFactory factory = new ThreadFactoryBuilder().setDaemon(true).setNameFormat("ViaFabric-%d").build();
|
||||
@ -64,16 +64,16 @@ public class ViaFabric implements ModInitializer {
|
||||
@Override
|
||||
public void onInitialize() {
|
||||
Via.init(ViaManagerImpl.builder()
|
||||
.injector(new VRInjector())
|
||||
.injector(new FabricInjector())
|
||||
.loader(new VRLoader())
|
||||
.commandHandler(new VRCommandHandler())
|
||||
.platform(new VRPlatform()).build());
|
||||
.platform(new FabricPlatform()).build());
|
||||
|
||||
FabricLoader.getInstance().getModContainer("viabackwards").ifPresent(mod -> MappingDataLoader.enableMappingsCache());
|
||||
|
||||
((ViaManagerImpl) Via.getManager()).init();
|
||||
|
||||
Via.getManager().getProtocolManager().registerBaseProtocol(ViaFabricHostnameProtocol.INSTANCE, Range.lessThan(Integer.MIN_VALUE));
|
||||
Via.getManager().getProtocolManager().registerBaseProtocol(HostnameParserProtocol.INSTANCE, Range.lessThan(Integer.MIN_VALUE));
|
||||
ProtocolVersion.register(-2, "AUTO");
|
||||
|
||||
FabricLoader.getInstance().getEntrypoints("viafabric:via_api_initialized", Runnable.class).forEach(Runnable::run);
|
||||
@ -89,7 +89,7 @@ public class ViaFabric implements ModInitializer {
|
||||
}
|
||||
}
|
||||
|
||||
config = new VRConfig(FabricLoader.getInstance().getConfigDir().resolve("ViaFabric")
|
||||
config = new VFConfig(FabricLoader.getInstance().getConfigDir().resolve("ViaFabric")
|
||||
.resolve("viafabric.yml").toFile());
|
||||
|
||||
INIT_FUTURE.complete(null);
|
||||
|
@ -1,77 +0,0 @@
|
||||
package com.viaversion.fabric.mc115;
|
||||
|
||||
import com.viaversion.viaversion.api.protocol.version.ProtocolVersion;
|
||||
|
||||
import java.util.Locale;
|
||||
|
||||
public class ViaFabricAddress {
|
||||
public int protocol = 0;
|
||||
public String viaSuffix = null;
|
||||
public String realAddress = null;
|
||||
|
||||
public ViaFabricAddress parse(String address) {
|
||||
if (address == null) return null;
|
||||
String[] parts = address.split("\\.");
|
||||
|
||||
boolean foundDomain = false;
|
||||
boolean foundOptions = false;
|
||||
|
||||
StringBuilder ourParts = new StringBuilder();
|
||||
StringBuilder realAddrBuilder = new StringBuilder();
|
||||
|
||||
for (int i = parts.length - 1; i >= 0; i--) {
|
||||
String part = parts[i];
|
||||
boolean realAddrPart = false;
|
||||
if (foundDomain) {
|
||||
if (!foundOptions) {
|
||||
if (part.startsWith("_")) {
|
||||
String arg = part.substring(2);
|
||||
if (part.toLowerCase(Locale.ROOT).startsWith("_v")) {
|
||||
try {
|
||||
protocol = Integer.parseInt(arg);
|
||||
} catch (NumberFormatException e) {
|
||||
ProtocolVersion closest = ProtocolVersion.getClosest(arg.replace("_", "."));
|
||||
if (closest != null) {
|
||||
protocol = closest.getVersion();
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
foundOptions = true;
|
||||
}
|
||||
}
|
||||
if (foundOptions) {
|
||||
realAddrPart = true;
|
||||
}
|
||||
} else if (part.equalsIgnoreCase("viafabric")) {
|
||||
foundDomain = true;
|
||||
}
|
||||
if (realAddrPart) {
|
||||
realAddrBuilder.insert(0, part + ".");
|
||||
} else {
|
||||
ourParts.insert(0, part + ".");
|
||||
}
|
||||
}
|
||||
|
||||
String realAddr = realAddrBuilder.toString().replaceAll("\\.$", "");
|
||||
String suffix = ourParts.toString().replaceAll("\\.$", "");
|
||||
|
||||
if (realAddr.isEmpty()) {
|
||||
this.realAddress = address;
|
||||
} else {
|
||||
this.realAddress = realAddr;
|
||||
this.viaSuffix = suffix;
|
||||
}
|
||||
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "ViaFabricAddress{" +
|
||||
"protocol=" + protocol +
|
||||
", viaSuffix='" + viaSuffix + '\'' +
|
||||
", realAddress='" + realAddress + '\'' +
|
||||
'}';
|
||||
}
|
||||
}
|
@ -1,35 +0,0 @@
|
||||
package com.viaversion.fabric.mc115.commands;
|
||||
|
||||
import com.viaversion.viaversion.api.Via;
|
||||
import com.viaversion.viaversion.api.command.ViaCommandSender;
|
||||
import com.viaversion.viaversion.api.connection.UserConnection;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
public class UserCommandSender implements ViaCommandSender {
|
||||
private UserConnection con;
|
||||
|
||||
public UserCommandSender(UserConnection con) {
|
||||
this.con = con;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean hasPermission(String s) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void sendMessage(String s) {
|
||||
Via.getPlatform().sendMessage(getUUID(), s);
|
||||
}
|
||||
|
||||
@Override
|
||||
public UUID getUUID() {
|
||||
return con.getProtocolInfo().getUuid();
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getName() {
|
||||
return con.getProtocolInfo().getUsername();
|
||||
}
|
||||
}
|
@ -5,7 +5,7 @@ import com.mojang.brigadier.CommandDispatcher;
|
||||
import io.github.cottonmc.clientcommands.ClientCommandPlugin;
|
||||
import io.github.cottonmc.clientcommands.CottonClientCommandSource;
|
||||
|
||||
public class VRClientCommands implements ClientCommandPlugin {
|
||||
public class VFClientCommands implements ClientCommandPlugin {
|
||||
@Override
|
||||
public void registerCommands(CommandDispatcher<CottonClientCommandSource> commandDispatcher) {
|
||||
commandDispatcher.register(ViaFabric.command("viafabricclient"));
|
@ -1,6 +1,6 @@
|
||||
package com.viaversion.fabric.mc115.commands;
|
||||
|
||||
import com.viaversion.fabric.mc115.commands.subs.LeakDetectSubCommand;
|
||||
import com.viaversion.fabric.common.commands.subs.LeakDetectSubCommand;
|
||||
import com.mojang.brigadier.arguments.StringArgumentType;
|
||||
import com.mojang.brigadier.context.CommandContext;
|
||||
import com.mojang.brigadier.suggestion.Suggestions;
|
||||
|
@ -1,48 +0,0 @@
|
||||
package com.viaversion.fabric.mc115.commands.subs;
|
||||
|
||||
import io.netty.util.ResourceLeakDetector;
|
||||
import com.viaversion.viaversion.api.command.ViaCommandSender;
|
||||
import com.viaversion.viaversion.api.command.ViaSubCommand;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
public class LeakDetectSubCommand extends ViaSubCommand {
|
||||
@Override
|
||||
public String name() {
|
||||
return "leakdetect";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String description() {
|
||||
return "Sets ResourceLeakDetector level";
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean execute(ViaCommandSender viaCommandSender, String[] strings) {
|
||||
if (strings.length == 1) {
|
||||
try {
|
||||
ResourceLeakDetector.Level level = ResourceLeakDetector.Level.valueOf(strings[0]);
|
||||
ResourceLeakDetector.setLevel(level);
|
||||
viaCommandSender.sendMessage("Set leak detector level to " + level);
|
||||
} catch (IllegalArgumentException e) {
|
||||
viaCommandSender.sendMessage("Invalid level (" + Arrays.toString(ResourceLeakDetector.Level.values()) + ")");
|
||||
}
|
||||
} else {
|
||||
viaCommandSender.sendMessage("Current leak detection level is " + ResourceLeakDetector.getLevel());
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<String> onTabComplete(ViaCommandSender sender, String[] args) {
|
||||
if (args.length == 1) {
|
||||
return Arrays.stream(ResourceLeakDetector.Level.values())
|
||||
.map(Enum::name)
|
||||
.filter(it -> it.startsWith(args[0]))
|
||||
.collect(Collectors.toList());
|
||||
}
|
||||
return super.onTabComplete(sender, args);
|
||||
}
|
||||
}
|
@ -1,7 +1,7 @@
|
||||
package com.viaversion.fabric.mc115.gui;
|
||||
|
||||
import com.viaversion.fabric.mc115.ViaFabric;
|
||||
import com.viaversion.fabric.mc115.util.ProtocolUtils;
|
||||
import com.viaversion.fabric.common.util.ProtocolUtils;
|
||||
import com.viaversion.viaversion.api.Via;
|
||||
import net.fabricmc.api.EnvType;
|
||||
import net.fabricmc.api.Environment;
|
||||
|
@ -1,5 +1,6 @@
|
||||
package com.viaversion.fabric.mc115.handler;
|
||||
|
||||
import com.viaversion.fabric.common.handler.CommonTransformer;
|
||||
import io.netty.buffer.ByteBuf;
|
||||
import io.netty.channel.ChannelHandler;
|
||||
import io.netty.channel.ChannelHandlerContext;
|
||||
|
@ -1,5 +1,6 @@
|
||||
package com.viaversion.fabric.mc115.handler;
|
||||
|
||||
import com.viaversion.fabric.common.handler.CommonTransformer;
|
||||
import io.netty.buffer.ByteBuf;
|
||||
import io.netty.channel.ChannelHandler;
|
||||
import io.netty.channel.ChannelHandlerContext;
|
||||
|
@ -1,6 +1,6 @@
|
||||
package com.viaversion.fabric.mc115.mixin.address.client;
|
||||
|
||||
import com.viaversion.fabric.mc115.ViaFabricAddress;
|
||||
import com.viaversion.fabric.common.VFAddressParser;
|
||||
import org.spongepowered.asm.mixin.Mixin;
|
||||
import org.spongepowered.asm.mixin.injection.At;
|
||||
import org.spongepowered.asm.mixin.injection.Redirect;
|
||||
@ -13,7 +13,7 @@ public class MixinConnectScreenThread {
|
||||
@Redirect(method = "run()V", at = @At(value = "INVOKE",
|
||||
target = "Ljava/net/InetAddress;getByName(Ljava/lang/String;)Ljava/net/InetAddress;"))
|
||||
private InetAddress resolveViaFabricAddr(String address) throws UnknownHostException {
|
||||
ViaFabricAddress viaAddr = new ViaFabricAddress().parse(address);
|
||||
VFAddressParser viaAddr = new VFAddressParser().parse(address);
|
||||
if (viaAddr.viaSuffix == null) {
|
||||
return InetAddress.getByName(address);
|
||||
}
|
||||
|
@ -1,6 +1,6 @@
|
||||
package com.viaversion.fabric.mc115.mixin.address.client;
|
||||
|
||||
import com.viaversion.fabric.mc115.ViaFabricAddress;
|
||||
import com.viaversion.fabric.common.VFAddressParser;
|
||||
import net.minecraft.network.ServerAddress;
|
||||
import org.spongepowered.asm.mixin.Mixin;
|
||||
import org.spongepowered.asm.mixin.Shadow;
|
||||
@ -16,7 +16,7 @@ public abstract class MixinServerAddress {
|
||||
|
||||
@Redirect(method = "parse", at = @At(value = "INVOKE", target = "Lnet/minecraft/network/ServerAddress;resolveSrv(Ljava/lang/String;)[Ljava/lang/String;"))
|
||||
private static String[] modifySrvAddr(String address) {
|
||||
ViaFabricAddress viaAddr = new ViaFabricAddress().parse(address);
|
||||
VFAddressParser viaAddr = new VFAddressParser().parse(address);
|
||||
if (viaAddr.viaSuffix == null) {
|
||||
return resolveSrv(address);
|
||||
}
|
||||
|
@ -1,6 +1,6 @@
|
||||
package com.viaversion.fabric.mc115.mixin.address.client;
|
||||
|
||||
import com.viaversion.fabric.mc115.ViaFabricAddress;
|
||||
import com.viaversion.fabric.common.VFAddressParser;
|
||||
import net.minecraft.client.network.MultiplayerServerListPinger;
|
||||
import org.spongepowered.asm.mixin.Mixin;
|
||||
import org.spongepowered.asm.mixin.injection.At;
|
||||
@ -14,7 +14,7 @@ public class MixinServerPinger {
|
||||
@Redirect(method = "add", at = @At(value = "INVOKE",
|
||||
target = "Ljava/net/InetAddress;getByName(Ljava/lang/String;)Ljava/net/InetAddress;"))
|
||||
private InetAddress resolveViaFabricAddr(String address) throws UnknownHostException {
|
||||
ViaFabricAddress viaAddr = new ViaFabricAddress().parse(address);
|
||||
VFAddressParser viaAddr = new VFAddressParser().parse(address);
|
||||
if (viaAddr.viaSuffix == null) {
|
||||
return InetAddress.getByName(address);
|
||||
}
|
||||
|
@ -1,6 +1,6 @@
|
||||
package com.viaversion.fabric.mc115.mixin.debug.client;
|
||||
|
||||
import com.viaversion.fabric.mc115.handler.CommonTransformer;
|
||||
import com.viaversion.fabric.common.handler.CommonTransformer;
|
||||
import com.viaversion.fabric.mc115.handler.FabricDecodeHandler;
|
||||
import com.viaversion.viaversion.api.connection.ProtocolInfo;
|
||||
import io.netty.channel.ChannelHandler;
|
||||
|
@ -1,6 +1,6 @@
|
||||
package com.viaversion.fabric.mc115.mixin.pipeline;
|
||||
|
||||
import com.viaversion.fabric.mc115.handler.CommonTransformer;
|
||||
import com.viaversion.fabric.common.handler.CommonTransformer;
|
||||
import com.viaversion.fabric.mc115.handler.FabricDecodeHandler;
|
||||
import com.viaversion.fabric.mc115.handler.FabricEncodeHandler;
|
||||
import com.viaversion.viaversion.connection.UserConnectionImpl;
|
||||
|
@ -1,11 +1,11 @@
|
||||
package com.viaversion.fabric.mc115.mixin.pipeline.client;
|
||||
|
||||
import com.viaversion.fabric.mc115.ViaFabric;
|
||||
import com.viaversion.fabric.mc115.handler.CommonTransformer;
|
||||
import com.viaversion.fabric.common.handler.CommonTransformer;
|
||||
import com.viaversion.fabric.mc115.handler.FabricDecodeHandler;
|
||||
import com.viaversion.fabric.mc115.handler.FabricEncodeHandler;
|
||||
import com.viaversion.fabric.mc115.handler.clientside.ProtocolDetectionHandler;
|
||||
import com.viaversion.fabric.mc115.protocol.ViaFabricHostnameProtocol;
|
||||
import com.viaversion.fabric.common.protocol.HostnameParserProtocol;
|
||||
import com.viaversion.viaversion.connection.UserConnectionImpl;
|
||||
import com.viaversion.viaversion.protocol.ProtocolPipelineImpl;
|
||||
import io.netty.channel.Channel;
|
||||
@ -22,7 +22,7 @@ public class MixinClientConnectionChInit {
|
||||
private void onInitChannel(Channel channel, CallbackInfo ci) {
|
||||
if (channel instanceof SocketChannel) {
|
||||
UserConnection user = new UserConnectionImpl(channel, true);
|
||||
new ProtocolPipelineImpl(user).add(ViaFabricHostnameProtocol.INSTANCE);
|
||||
new ProtocolPipelineImpl(user).add(HostnameParserProtocol.INSTANCE);
|
||||
|
||||
channel.pipeline()
|
||||
.addBefore("encoder", CommonTransformer.HANDLER_ENCODER_NAME, new FabricEncodeHandler(user))
|
||||
|
@ -1,6 +1,6 @@
|
||||
package com.viaversion.fabric.mc115.platform;
|
||||
|
||||
import com.viaversion.fabric.mc115.handler.CommonTransformer;
|
||||
import com.viaversion.fabric.common.handler.CommonTransformer;
|
||||
import net.fabricmc.api.EnvType;
|
||||
import net.fabricmc.loader.api.FabricLoader;
|
||||
import net.minecraft.SharedConstants;
|
||||
@ -11,7 +11,7 @@ import com.viaversion.viaversion.libs.gson.JsonObject;
|
||||
import java.lang.reflect.Method;
|
||||
import java.util.Arrays;
|
||||
|
||||
public class VRInjector implements ViaInjector {
|
||||
public class FabricInjector implements ViaInjector {
|
||||
@Override
|
||||
public void inject() {
|
||||
// *looks at Mixins*
|
@ -1,12 +1,23 @@
|
||||
package com.viaversion.fabric.mc115.platform;
|
||||
|
||||
import com.viaversion.fabric.common.commands.UserCommandSender;
|
||||
import com.viaversion.fabric.common.platform.FabricViaAPI;
|
||||
import com.viaversion.fabric.common.platform.FabricViaConfig;
|
||||
import com.viaversion.fabric.common.util.FutureTaskId;
|
||||
import com.viaversion.fabric.common.util.JLoggerToLog4j;
|
||||
import com.viaversion.fabric.mc115.ViaFabric;
|
||||
import com.viaversion.fabric.mc115.commands.NMSCommandSender;
|
||||
import com.viaversion.fabric.mc115.commands.UserCommandSender;
|
||||
import com.viaversion.fabric.mc115.util.FutureTaskId;
|
||||
import com.viaversion.fabric.mc115.util.JLoggerToLog4j;
|
||||
import com.viaversion.viaversion.api.Via;
|
||||
import com.viaversion.viaversion.api.ViaAPI;
|
||||
import com.viaversion.viaversion.api.command.ViaCommandSender;
|
||||
import com.viaversion.viaversion.api.configuration.ConfigurationProvider;
|
||||
import com.viaversion.viaversion.api.configuration.ViaVersionConfig;
|
||||
import com.viaversion.viaversion.api.platform.PlatformTask;
|
||||
import com.viaversion.viaversion.api.platform.ViaPlatform;
|
||||
import com.viaversion.viaversion.dump.PluginInfo;
|
||||
import com.viaversion.viaversion.libs.gson.JsonObject;
|
||||
import com.viaversion.viaversion.libs.kyori.adventure.text.serializer.gson.GsonComponentSerializer;
|
||||
import com.viaversion.viaversion.libs.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer;
|
||||
import com.viaversion.viaversion.util.GsonUtil;
|
||||
import io.netty.util.concurrent.Future;
|
||||
import io.netty.util.concurrent.GenericFutureListener;
|
||||
import net.fabricmc.api.EnvType;
|
||||
@ -22,16 +33,6 @@ import net.minecraft.server.MinecraftServer;
|
||||
import net.minecraft.server.network.ServerPlayerEntity;
|
||||
import net.minecraft.text.Text;
|
||||
import org.apache.logging.log4j.LogManager;
|
||||
import com.viaversion.viaversion.api.Via;
|
||||
import com.viaversion.viaversion.api.ViaAPI;
|
||||
import com.viaversion.viaversion.api.command.ViaCommandSender;
|
||||
import com.viaversion.viaversion.api.configuration.ConfigurationProvider;
|
||||
import com.viaversion.viaversion.api.platform.ViaPlatform;
|
||||
import com.viaversion.viaversion.dump.PluginInfo;
|
||||
import com.viaversion.viaversion.util.GsonUtil;
|
||||
import com.viaversion.viaversion.libs.gson.JsonObject;
|
||||
import com.viaversion.viaversion.libs.kyori.adventure.text.serializer.gson.GsonComponentSerializer;
|
||||
import com.viaversion.viaversion.libs.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer;
|
||||
|
||||
import java.io.File;
|
||||
import java.nio.file.Path;
|
||||
@ -46,17 +47,17 @@ import java.util.logging.Level;
|
||||
import java.util.logging.Logger;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
public class VRPlatform implements ViaPlatform<UUID> {
|
||||
public class FabricPlatform implements ViaPlatform<UUID> {
|
||||
private final Logger logger = new JLoggerToLog4j(LogManager.getLogger("ViaVersion"));
|
||||
private final VRViaConfig config;
|
||||
private final FabricViaConfig config;
|
||||
private final File dataFolder;
|
||||
private final ViaAPI<UUID> api;
|
||||
|
||||
public VRPlatform() {
|
||||
public FabricPlatform() {
|
||||
Path configDir = FabricLoader.getInstance().getConfigDirectory().toPath().resolve("ViaFabric");
|
||||
config = new VRViaConfig(configDir.resolve("viaversion.yml").toFile());
|
||||
config = new FabricViaConfig(configDir.resolve("viaversion.yml").toFile());
|
||||
dataFolder = configDir.toFile();
|
||||
api = new VRViaAPI();
|
||||
api = new FabricViaAPI();
|
||||
}
|
||||
|
||||
public static MinecraftServer getServer() {
|
||||
@ -132,7 +133,7 @@ public class VRPlatform implements ViaPlatform<UUID> {
|
||||
}
|
||||
|
||||
@Override
|
||||
public PlatformTask runSync(Runnable runnable, long ticks) {
|
||||
public FutureTaskId runSync(Runnable runnable, long ticks) {
|
||||
// ViaVersion seems to not need to run delayed tasks on main thread
|
||||
return new FutureTaskId(
|
||||
ViaFabric.EVENT_LOOP
|
||||
@ -142,7 +143,7 @@ public class VRPlatform implements ViaPlatform<UUID> {
|
||||
}
|
||||
|
||||
@Override
|
||||
public PlatformTask runRepeatingSync(Runnable runnable, long ticks) {
|
||||
public FutureTaskId runRepeatingSync(Runnable runnable, long ticks) {
|
||||
// ViaVersion seems to not need to run repeating tasks on main thread
|
||||
return new FutureTaskId(
|
||||
ViaFabric.EVENT_LOOP
|
@ -1,8 +0,0 @@
|
||||
package com.viaversion.fabric.mc115.platform;
|
||||
|
||||
import com.viaversion.viaversion.ViaAPIBase;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
public class VRViaAPI extends ViaAPIBase<UUID> {
|
||||
}
|
@ -1,68 +0,0 @@
|
||||
package com.viaversion.fabric.mc115.platform;
|
||||
|
||||
import com.viaversion.viaversion.configuration.AbstractViaConfig;
|
||||
|
||||
import java.io.File;
|
||||
import java.net.URL;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
public class VRViaConfig extends AbstractViaConfig {
|
||||
// Based on Sponge ViaVersion
|
||||
private static List<String> UNSUPPORTED = Arrays.asList("anti-xray-patch", "bungee-ping-interval",
|
||||
"bungee-ping-save", "bungee-servers", "quick-move-action-fix", "nms-player-ticking",
|
||||
"velocity-ping-interval", "velocity-ping-save", "velocity-servers",
|
||||
"blockconnection-method", "change-1_9-hitbox", "change-1_14-hitbox");
|
||||
|
||||
public VRViaConfig(File configFile) {
|
||||
super(configFile);
|
||||
// Load config
|
||||
reloadConfig();
|
||||
}
|
||||
|
||||
@Override
|
||||
public URL getDefaultConfigURL() {
|
||||
return getClass().getClassLoader().getResource("assets/viaversion/config.yml");
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void handleConfig(Map<String, Object> config) {
|
||||
// Nothing Currently
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<String> getUnsupportedOptions() {
|
||||
return UNSUPPORTED;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isAntiXRay() {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isNMSPlayerTicking() {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean is1_12QuickMoveActionFix() {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getBlockConnectionMethod() {
|
||||
return "packet";
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean is1_9HitboxFix() {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean is1_14HitboxFix() {
|
||||
return false;
|
||||
}
|
||||
}
|
@ -1,34 +0,0 @@
|
||||
package com.viaversion.fabric.mc115.protocol;
|
||||
|
||||
import com.viaversion.fabric.mc115.ViaFabricAddress;
|
||||
import com.viaversion.viaversion.api.protocol.AbstractSimpleProtocol;
|
||||
import com.viaversion.viaversion.api.protocol.packet.PacketWrapper;
|
||||
import com.viaversion.viaversion.api.protocol.remapper.PacketRemapper;
|
||||
import com.viaversion.viaversion.api.protocol.remapper.ValueTransformer;
|
||||
import com.viaversion.viaversion.api.type.Type;
|
||||
import com.viaversion.viaversion.api.protocol.packet.State;
|
||||
|
||||
public class ViaFabricHostnameProtocol extends AbstractSimpleProtocol {
|
||||
public static final ViaFabricHostnameProtocol INSTANCE = new ViaFabricHostnameProtocol();
|
||||
|
||||
@Override
|
||||
protected void registerPackets() {
|
||||
registerServerbound(State.HANDSHAKE, 0, 0, new PacketRemapper() {
|
||||
@Override
|
||||
public void registerMap() {
|
||||
map(Type.VAR_INT); // Protocol version
|
||||
map(Type.STRING, new ValueTransformer<String, String>(Type.STRING) {
|
||||
@Override
|
||||
public String transform(PacketWrapper packetWrapper, String s) {
|
||||
return new ViaFabricAddress().parse(s).realAddress;
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isBaseProtocol() {
|
||||
return true;
|
||||
}
|
||||
}
|
@ -1,20 +1,22 @@
|
||||
package com.viaversion.fabric.mc115.providers;
|
||||
|
||||
import com.viaversion.fabric.mc115.ViaFabric;
|
||||
import com.viaversion.fabric.mc115.ViaFabricAddress;
|
||||
import com.viaversion.fabric.mc115.service.ProtocolAutoDetector;
|
||||
import com.viaversion.fabric.mc115.util.ProtocolUtils;
|
||||
import com.google.common.primitives.Ints;
|
||||
import com.viaversion.fabric.common.VFAddressParser;
|
||||
import com.viaversion.fabric.common.util.ProtocolUtils;
|
||||
import com.viaversion.fabric.mc115.ViaFabric;
|
||||
import com.viaversion.fabric.mc115.service.ProtocolAutoDetector;
|
||||
import com.viaversion.viaversion.api.connection.ProtocolInfo;
|
||||
import net.fabricmc.loader.api.FabricLoader;
|
||||
import net.minecraft.network.ClientConnection;
|
||||
import com.viaversion.viaversion.api.protocol.packet.PacketWrapper;
|
||||
import com.viaversion.viaversion.api.connection.UserConnection;
|
||||
import com.viaversion.viaversion.api.protocol.packet.PacketWrapper;
|
||||
import com.viaversion.viaversion.api.protocol.packet.State;
|
||||
import com.viaversion.viaversion.api.protocol.version.ProtocolVersion;
|
||||
import com.viaversion.viaversion.api.type.Type;
|
||||
import com.viaversion.viaversion.exception.CancelException;
|
||||
import com.viaversion.viaversion.api.protocol.packet.State;
|
||||
import com.viaversion.viaversion.protocols.base.*;
|
||||
import com.viaversion.viaversion.protocols.base.BaseProtocol1_16;
|
||||
import com.viaversion.viaversion.protocols.base.BaseProtocol1_7;
|
||||
import com.viaversion.viaversion.protocols.base.BaseVersionProvider;
|
||||
import net.fabricmc.loader.api.FabricLoader;
|
||||
import net.minecraft.network.ClientConnection;
|
||||
|
||||
import java.lang.reflect.InvocationTargetException;
|
||||
import java.lang.reflect.Method;
|
||||
@ -68,7 +70,7 @@ public class VRVersionProvider extends BaseVersionProvider {
|
||||
SocketAddress addr = connection.getChannel().remoteAddress();
|
||||
|
||||
if (addr instanceof InetSocketAddress) {
|
||||
int addrVersion = new ViaFabricAddress().parse(((InetSocketAddress) addr).getHostName()).protocol;
|
||||
int addrVersion = new VFAddressParser().parse(((InetSocketAddress) addr).getHostName()).protocol;
|
||||
if (addrVersion != 0) serverVer = addrVersion;
|
||||
|
||||
try {
|
||||
|
@ -1,7 +1,7 @@
|
||||
package com.viaversion.fabric.mc115.service;
|
||||
|
||||
import com.viaversion.fabric.common.VFAddressParser;
|
||||
import com.viaversion.fabric.mc115.ViaFabric;
|
||||
import com.viaversion.fabric.mc115.ViaFabricAddress;
|
||||
import com.google.common.cache.CacheBuilder;
|
||||
import com.google.common.cache.CacheLoader;
|
||||
import com.google.common.cache.LoadingCache;
|
||||
@ -114,7 +114,7 @@ public class ProtocolAutoDetector {
|
||||
public static CompletableFuture<ProtocolVersion> detectVersion(InetSocketAddress address) {
|
||||
try {
|
||||
InetSocketAddress real = new InetSocketAddress(InetAddress.getByAddress
|
||||
(new ViaFabricAddress().parse(address.getHostString()).realAddress,
|
||||
(new VFAddressParser().parse(address.getHostString()).realAddress,
|
||||
address.getAddress().getAddress()), address.getPort());
|
||||
return SERVER_VER.get(real);
|
||||
} catch (UnknownHostException | ExecutionException e) {
|
||||
|
@ -1,23 +0,0 @@
|
||||
package com.viaversion.fabric.mc115.util;
|
||||
|
||||
import com.viaversion.viaversion.api.platform.PlatformTask;
|
||||
|
||||
import java.util.concurrent.Future;
|
||||
|
||||
public class FutureTaskId implements PlatformTask<Future<?>> {
|
||||
private final Future<?> object;
|
||||
|
||||
public FutureTaskId(Future<?> object) {
|
||||
this.object = object;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Future<?> getObject() {
|
||||
return object;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void cancel() {
|
||||
object.cancel(false);
|
||||
}
|
||||
}
|
@ -1,68 +0,0 @@
|
||||
package com.viaversion.fabric.mc115.util;
|
||||
|
||||
import java.text.MessageFormat;
|
||||
import java.util.logging.Level;
|
||||
import java.util.logging.LogRecord;
|
||||
import java.util.logging.Logger;
|
||||
|
||||
public class JLoggerToLog4j extends Logger {
|
||||
private final org.apache.logging.log4j.Logger base;
|
||||
|
||||
public JLoggerToLog4j(org.apache.logging.log4j.Logger logger) {
|
||||
super("logger", null);
|
||||
this.base = logger;
|
||||
}
|
||||
|
||||
public void log(LogRecord record) {
|
||||
this.log(record.getLevel(), record.getMessage());
|
||||
}
|
||||
|
||||
public void log(Level level, String msg) {
|
||||
if (level == Level.FINE) {
|
||||
this.base.debug(msg);
|
||||
} else if (level == Level.WARNING) {
|
||||
this.base.warn(msg);
|
||||
} else if (level == Level.SEVERE) {
|
||||
this.base.error(msg);
|
||||
} else if (level == Level.INFO) {
|
||||
this.base.info(msg);
|
||||
} else {
|
||||
this.base.trace(msg);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public void log(Level level, String msg, Object param1) {
|
||||
if (level == Level.FINE) {
|
||||
this.base.debug(msg, param1);
|
||||
} else if (level == Level.WARNING) {
|
||||
this.base.warn(msg, param1);
|
||||
} else if (level == Level.SEVERE) {
|
||||
this.base.error(msg, param1);
|
||||
} else if (level == Level.INFO) {
|
||||
this.base.info(msg, param1);
|
||||
} else {
|
||||
this.base.trace(msg, param1);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public void log(Level level, String msg, Object[] params) {
|
||||
log(level, MessageFormat.format(msg, params));
|
||||
}
|
||||
|
||||
public void log(Level level, String msg, Throwable params) {
|
||||
if (level == Level.FINE) {
|
||||
this.base.debug(msg, params);
|
||||
} else if (level == Level.WARNING) {
|
||||
this.base.warn(msg, params);
|
||||
} else if (level == Level.SEVERE) {
|
||||
this.base.error(msg, params);
|
||||
} else if (level == Level.INFO) {
|
||||
this.base.info(msg, params);
|
||||
} else {
|
||||
this.base.trace(msg, params);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
@ -1,60 +0,0 @@
|
||||
package com.viaversion.fabric.mc115.util;
|
||||
|
||||
import com.viaversion.viaversion.api.Via;
|
||||
import com.viaversion.viaversion.api.protocol.version.ProtocolVersion;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.stream.Stream;
|
||||
|
||||
public class ProtocolUtils {
|
||||
public static boolean isSupported(int server, int client) {
|
||||
return server == client || Via.getManager().getProtocolManager().getProtocolPath(client, server) != null;
|
||||
}
|
||||
|
||||
public static String getProtocolName(int id) {
|
||||
if (!ProtocolVersion.isRegistered(id)) return Integer.toString(id);
|
||||
return ProtocolVersion.getProtocol(id).getName();
|
||||
}
|
||||
|
||||
public static boolean isStartOfProtocolText(String s) {
|
||||
try {
|
||||
Integer.parseInt(s);
|
||||
return true;
|
||||
} catch (NumberFormatException e) {
|
||||
try {
|
||||
Integer.parseInt(s + '0');
|
||||
return true;
|
||||
} catch (NumberFormatException e2) {
|
||||
return ProtocolVersion.getProtocols().stream()
|
||||
.map(ProtocolVersion::getName)
|
||||
.flatMap(str -> Stream.concat(
|
||||
Arrays.stream(str.split("-")),
|
||||
Arrays.stream(new String[]{str})
|
||||
))
|
||||
.anyMatch(ver -> ver.startsWith(s));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static Integer parseProtocolId(String s) {
|
||||
try {
|
||||
return Integer.parseInt(s);
|
||||
} catch (NumberFormatException ignored) {
|
||||
ProtocolVersion closest = ProtocolVersion.getClosest(s);
|
||||
if (closest == null) return null;
|
||||
return closest.getVersion();
|
||||
}
|
||||
}
|
||||
|
||||
public static String[] getProtocolSuggestions(String text) {
|
||||
return ProtocolVersion.getProtocols().stream()
|
||||
.map(ProtocolVersion::getName)
|
||||
.flatMap(str -> Stream.concat(
|
||||
Arrays.stream(str.split("-")),
|
||||
Arrays.stream(new String[]{str})
|
||||
))
|
||||
.distinct()
|
||||
.filter(ver -> ver.startsWith(text))
|
||||
.toArray(String[]::new);
|
||||
}
|
||||
}
|
@ -32,26 +32,21 @@
|
||||
"com.viaversion.fabric.mc115.ViaFabric"
|
||||
],
|
||||
"cotton-client-commands": [
|
||||
"com.viaversion.fabric.mc115.commands.VRClientCommands"
|
||||
"com.viaversion.fabric.mc115.commands.VFClientCommands"
|
||||
],
|
||||
"modmenu": [
|
||||
"com.viaversion.fabric.mc115.gui.ModMenuConfig"
|
||||
]
|
||||
},
|
||||
"depends": {
|
||||
"fabricloader": ">=0.4.0",
|
||||
"fabric-resource-loader-v0": "*",
|
||||
"minecraft": "1.15.x",
|
||||
"viaversion": ">3.0.1"
|
||||
},
|
||||
"conflicts": {
|
||||
"fabric-registry-sync-v0": "*"
|
||||
},
|
||||
"recommends": {
|
||||
"fabric-command-api-v1": "*",
|
||||
"cotton-client-commands": "*"
|
||||
},
|
||||
"icon": "assets/viafabric/textures/logo.png",
|
||||
"mixins": [
|
||||
"mixins.viafabric115.address.json",
|
||||
"mixins.viafabric115.gui.json",
|
||||
|
@ -3,7 +3,6 @@ version = rootProject.version
|
||||
dependencies {
|
||||
minecraft("com.mojang:minecraft:1.16.5")
|
||||
mappings("net.fabricmc:yarn:1.16.5+build.6:v2")
|
||||
modImplementation("net.fabricmc:fabric-loader:0.11.3")
|
||||
|
||||
modImplementation("net.fabricmc.fabric-api:fabric-api:0.32.5+1.16")
|
||||
modImplementation("com.terraformersmc:modmenu:1.16.9")
|
||||
|
@ -1,12 +1,12 @@
|
||||
package com.viaversion.fabric.mc116;
|
||||
|
||||
import com.viaversion.fabric.common.config.VFConfig;
|
||||
import com.viaversion.fabric.mc116.commands.VRCommandHandler;
|
||||
import com.viaversion.fabric.mc116.config.VRConfig;
|
||||
import com.viaversion.fabric.mc116.platform.VRInjector;
|
||||
import com.viaversion.fabric.mc116.platform.FabricInjector;
|
||||
import com.viaversion.fabric.mc116.platform.VRLoader;
|
||||
import com.viaversion.fabric.mc116.platform.VRPlatform;
|
||||
import com.viaversion.fabric.mc116.protocol.ViaFabricHostnameProtocol;
|
||||
import com.viaversion.fabric.mc116.util.JLoggerToLog4j;
|
||||
import com.viaversion.fabric.mc116.platform.FabricPlatform;
|
||||
import com.viaversion.fabric.common.protocol.HostnameParserProtocol;
|
||||
import com.viaversion.fabric.common.util.JLoggerToLog4j;
|
||||
import com.google.common.collect.Range;
|
||||
import com.google.common.util.concurrent.ThreadFactoryBuilder;
|
||||
import com.mojang.brigadier.arguments.StringArgumentType;
|
||||
@ -38,7 +38,7 @@ public class ViaFabric implements ModInitializer {
|
||||
public static final ExecutorService ASYNC_EXECUTOR;
|
||||
public static final EventLoop EVENT_LOOP;
|
||||
public static CompletableFuture<Void> INIT_FUTURE = new CompletableFuture<>();
|
||||
public static VRConfig config;
|
||||
public static VFConfig config;
|
||||
|
||||
static {
|
||||
ThreadFactory factory = new ThreadFactoryBuilder().setDaemon(true).setNameFormat("ViaFabric-%d").build();
|
||||
@ -66,16 +66,16 @@ public class ViaFabric implements ModInitializer {
|
||||
@Override
|
||||
public void onInitialize() {
|
||||
Via.init(ViaManagerImpl.builder()
|
||||
.injector(new VRInjector())
|
||||
.injector(new FabricInjector())
|
||||
.loader(new VRLoader())
|
||||
.commandHandler(new VRCommandHandler())
|
||||
.platform(new VRPlatform()).build());
|
||||
.platform(new FabricPlatform()).build());
|
||||
|
||||
FabricLoader.getInstance().getModContainer("viabackwards").ifPresent(mod -> MappingDataLoader.enableMappingsCache());
|
||||
|
||||
((ViaManagerImpl) Via.getManager()).init();
|
||||
|
||||
Via.getManager().getProtocolManager().registerBaseProtocol(ViaFabricHostnameProtocol.INSTANCE, Range.lessThan(Integer.MIN_VALUE));
|
||||
Via.getManager().getProtocolManager().registerBaseProtocol(HostnameParserProtocol.INSTANCE, Range.lessThan(Integer.MIN_VALUE));
|
||||
ProtocolVersion.register(-2, "AUTO");
|
||||
|
||||
FabricLoader.getInstance().getEntrypoints("viafabric:via_api_initialized", Runnable.class).forEach(Runnable::run);
|
||||
@ -91,7 +91,7 @@ public class ViaFabric implements ModInitializer {
|
||||
}
|
||||
}
|
||||
|
||||
config = new VRConfig(FabricLoader.getInstance().getConfigDir().resolve("ViaFabric")
|
||||
config = new VFConfig(FabricLoader.getInstance().getConfigDir().resolve("ViaFabric")
|
||||
.resolve("viafabric.yml").toFile());
|
||||
|
||||
INIT_FUTURE.complete(null);
|
||||
|
@ -1,77 +0,0 @@
|
||||
package com.viaversion.fabric.mc116;
|
||||
|
||||
import com.viaversion.viaversion.api.protocol.version.ProtocolVersion;
|
||||
|
||||
import java.util.Locale;
|
||||
|
||||
public class ViaFabricAddress {
|
||||
public int protocol = 0;
|
||||
public String viaSuffix = null;
|
||||
public String realAddress = null;
|
||||
|
||||
public ViaFabricAddress parse(String address) {
|
||||
if (address == null) return null;
|
||||
String[] parts = address.split("\\.");
|
||||
|
||||
boolean foundDomain = false;
|
||||
boolean foundOptions = false;
|
||||
|
||||
StringBuilder ourParts = new StringBuilder();
|
||||
StringBuilder realAddrBuilder = new StringBuilder();
|
||||
|
||||
for (int i = parts.length - 1; i >= 0; i--) {
|
||||
String part = parts[i];
|
||||
boolean realAddrPart = false;
|
||||
if (foundDomain) {
|
||||
if (!foundOptions) {
|
||||
if (part.startsWith("_")) {
|
||||
String arg = part.substring(2);
|
||||
if (part.toLowerCase(Locale.ROOT).startsWith("_v")) {
|
||||
try {
|
||||
protocol = Integer.parseInt(arg);
|
||||
} catch (NumberFormatException e) {
|
||||
ProtocolVersion closest = ProtocolVersion.getClosest(arg.replace("_", "."));
|
||||
if (closest != null) {
|
||||
protocol = closest.getVersion();
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
foundOptions = true;
|
||||
}
|
||||
}
|
||||
if (foundOptions) {
|
||||
realAddrPart = true;
|
||||
}
|
||||
} else if (part.equalsIgnoreCase("viafabric")) {
|
||||
foundDomain = true;
|
||||
}
|
||||
if (realAddrPart) {
|
||||
realAddrBuilder.insert(0, part + ".");
|
||||
} else {
|
||||
ourParts.insert(0, part + ".");
|
||||
}
|
||||
}
|
||||
|
||||
String realAddr = realAddrBuilder.toString().replaceAll("\\.$", "");
|
||||
String suffix = ourParts.toString().replaceAll("\\.$", "");
|
||||
|
||||
if (realAddr.isEmpty()) {
|
||||
this.realAddress = address;
|
||||
} else {
|
||||
this.realAddress = realAddr;
|
||||
this.viaSuffix = suffix;
|
||||
}
|
||||
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "ViaFabricAddress{" +
|
||||
"protocol=" + protocol +
|
||||
", viaSuffix='" + viaSuffix + '\'' +
|
||||
", realAddress='" + realAddress + '\'' +
|
||||
'}';
|
||||
}
|
||||
}
|
@ -1,6 +1,6 @@
|
||||
package com.viaversion.fabric.mc116.commands;
|
||||
|
||||
import com.viaversion.fabric.mc116.platform.VRPlatform;
|
||||
import com.viaversion.fabric.mc116.platform.FabricPlatform;
|
||||
import net.fabricmc.fabric.api.client.command.v1.FabricClientCommandSource;
|
||||
import net.minecraft.command.CommandSource;
|
||||
import net.minecraft.entity.Entity;
|
||||
@ -28,9 +28,9 @@ public class NMSCommandSender implements ViaCommandSender {
|
||||
@Override
|
||||
public void sendMessage(String s) {
|
||||
if (source instanceof ServerCommandSource) {
|
||||
((ServerCommandSource) source).sendFeedback(Text.Serializer.fromJson(VRPlatform.legacyToJson(s)), false);
|
||||
((ServerCommandSource) source).sendFeedback(Text.Serializer.fromJson(FabricPlatform.legacyToJson(s)), false);
|
||||
} else if (source instanceof FabricClientCommandSource) {
|
||||
((FabricClientCommandSource) source).sendFeedback(Text.Serializer.fromJson(VRPlatform.legacyToJson(s)));
|
||||
((FabricClientCommandSource) source).sendFeedback(Text.Serializer.fromJson(FabricPlatform.legacyToJson(s)));
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1,6 +1,6 @@
|
||||
package com.viaversion.fabric.mc116.commands;
|
||||
|
||||
import com.viaversion.fabric.mc116.commands.subs.LeakDetectSubCommand;
|
||||
import com.viaversion.fabric.common.commands.subs.LeakDetectSubCommand;
|
||||
import com.mojang.brigadier.arguments.StringArgumentType;
|
||||
import com.mojang.brigadier.context.CommandContext;
|
||||
import com.mojang.brigadier.suggestion.Suggestions;
|
||||
|
@ -1,48 +0,0 @@
|
||||
package com.viaversion.fabric.mc116.commands.subs;
|
||||
|
||||
import io.netty.util.ResourceLeakDetector;
|
||||
import com.viaversion.viaversion.api.command.ViaCommandSender;
|
||||
import com.viaversion.viaversion.api.command.ViaSubCommand;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
public class LeakDetectSubCommand extends ViaSubCommand {
|
||||
@Override
|
||||
public String name() {
|
||||
return "leakdetect";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String description() {
|
||||
return "Sets ResourceLeakDetector level";
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean execute(ViaCommandSender viaCommandSender, String[] strings) {
|
||||
if (strings.length == 1) {
|
||||
try {
|
||||
ResourceLeakDetector.Level level = ResourceLeakDetector.Level.valueOf(strings[0]);
|
||||
ResourceLeakDetector.setLevel(level);
|
||||
viaCommandSender.sendMessage("Set leak detector level to " + level);
|
||||
} catch (IllegalArgumentException e) {
|
||||
viaCommandSender.sendMessage("Invalid level (" + Arrays.toString(ResourceLeakDetector.Level.values()) + ")");
|
||||
}
|
||||
} else {
|
||||
viaCommandSender.sendMessage("Current leak detection level is " + ResourceLeakDetector.getLevel());
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<String> onTabComplete(ViaCommandSender sender, String[] args) {
|
||||
if (args.length == 1) {
|
||||
return Arrays.stream(ResourceLeakDetector.Level.values())
|
||||
.map(Enum::name)
|
||||
.filter(it -> it.startsWith(args[0]))
|
||||
.collect(Collectors.toList());
|
||||
}
|
||||
return super.onTabComplete(sender, args);
|
||||
}
|
||||
}
|
@ -1,68 +0,0 @@
|
||||
package com.viaversion.fabric.mc116.config;
|
||||
|
||||
import com.viaversion.viaversion.util.Config;
|
||||
|
||||
import java.io.File;
|
||||
import java.net.URL;
|
||||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
public class VRConfig extends Config {
|
||||
public static final String ENABLE_CLIENT_SIDE = "enable-client-side";
|
||||
public static final String CLIENT_SIDE_VERSION = "client-side-version";
|
||||
public static final String CLIENT_SIDE_FORCE_DISABLE = "client-side-force-disable";
|
||||
public static final String HIDE_BUTTON = "hide-button";
|
||||
|
||||
public VRConfig(File configFile) {
|
||||
super(configFile);
|
||||
reloadConfig();
|
||||
}
|
||||
|
||||
@Override
|
||||
public URL getDefaultConfigURL() {
|
||||
return getClass().getClassLoader().getResource("assets/viafabric/config.yml");
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void handleConfig(Map<String, Object> map) {
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<String> getUnsupportedOptions() {
|
||||
return Collections.emptyList();
|
||||
}
|
||||
|
||||
public boolean isClientSideEnabled() {
|
||||
return getBoolean(ENABLE_CLIENT_SIDE, false);
|
||||
}
|
||||
|
||||
public void setClientSideEnabled(boolean val) {
|
||||
set(ENABLE_CLIENT_SIDE, val);
|
||||
}
|
||||
|
||||
public int getClientSideVersion() {
|
||||
return getInt(CLIENT_SIDE_VERSION, -1);
|
||||
}
|
||||
|
||||
public void setClientSideVersion(int val) {
|
||||
set(CLIENT_SIDE_VERSION, val);
|
||||
}
|
||||
|
||||
public Collection<?> getClientSideForceDisable() {
|
||||
return (List<?>) get(CLIENT_SIDE_FORCE_DISABLE, List.class, Collections.emptyList());
|
||||
}
|
||||
|
||||
public void setHideButton(boolean val) {
|
||||
set(HIDE_BUTTON, val);
|
||||
}
|
||||
|
||||
public boolean isHideButton() {
|
||||
return getBoolean(HIDE_BUTTON, false);
|
||||
}
|
||||
|
||||
public boolean isForcedDisable(String line) {
|
||||
return getClientSideForceDisable().contains(line);
|
||||
}
|
||||
}
|
@ -1,7 +1,7 @@
|
||||
package com.viaversion.fabric.mc116.gui;
|
||||
|
||||
import com.viaversion.fabric.mc116.ViaFabric;
|
||||
import com.viaversion.fabric.mc116.util.ProtocolUtils;
|
||||
import com.viaversion.fabric.common.util.ProtocolUtils;
|
||||
import com.viaversion.viaversion.api.Via;
|
||||
import net.fabricmc.api.EnvType;
|
||||
import net.fabricmc.api.Environment;
|
||||
|
@ -1,38 +0,0 @@
|
||||
package com.viaversion.fabric.mc116.handler;
|
||||
|
||||
import io.netty.buffer.ByteBuf;
|
||||
import io.netty.channel.ChannelHandler;
|
||||
import io.netty.channel.ChannelHandlerContext;
|
||||
import io.netty.handler.codec.ByteToMessageDecoder;
|
||||
import io.netty.handler.codec.MessageToByteEncoder;
|
||||
import io.netty.handler.codec.MessageToMessageDecoder;
|
||||
import com.viaversion.viaversion.util.PipelineUtil;
|
||||
|
||||
import java.lang.reflect.InvocationTargetException;
|
||||
|
||||
public class CommonTransformer {
|
||||
public static final String HANDLER_DECODER_NAME = "via-decoder";
|
||||
public static final String HANDLER_ENCODER_NAME = "via-encoder";
|
||||
|
||||
public static void decompress(ChannelHandlerContext ctx, ByteBuf buf) throws InvocationTargetException {
|
||||
ChannelHandler handler = ctx.pipeline().get("decompress");
|
||||
ByteBuf decompressed = handler instanceof MessageToMessageDecoder
|
||||
? (ByteBuf) PipelineUtil.callDecode((MessageToMessageDecoder<?>) handler, ctx, buf).get(0)
|
||||
: (ByteBuf) PipelineUtil.callDecode((ByteToMessageDecoder) handler, ctx, buf).get(0);
|
||||
try {
|
||||
buf.clear().writeBytes(decompressed);
|
||||
} finally {
|
||||
decompressed.release();
|
||||
}
|
||||
}
|
||||
|
||||
public static void compress(ChannelHandlerContext ctx, ByteBuf buf) throws Exception {
|
||||
ByteBuf compressed = ctx.alloc().buffer();
|
||||
try {
|
||||
PipelineUtil.callEncode((MessageToByteEncoder<?>) ctx.pipeline().get("compress"), ctx, buf, compressed);
|
||||
buf.clear().writeBytes(compressed);
|
||||
} finally {
|
||||
compressed.release();
|
||||
}
|
||||
}
|
||||
}
|
@ -1,5 +1,6 @@
|
||||
package com.viaversion.fabric.mc116.handler;
|
||||
|
||||
import com.viaversion.fabric.common.handler.CommonTransformer;
|
||||
import io.netty.buffer.ByteBuf;
|
||||
import io.netty.channel.ChannelHandler;
|
||||
import io.netty.channel.ChannelHandlerContext;
|
||||
|
@ -1,5 +1,6 @@
|
||||
package com.viaversion.fabric.mc116.handler;
|
||||
|
||||
import com.viaversion.fabric.common.handler.CommonTransformer;
|
||||
import io.netty.buffer.ByteBuf;
|
||||
import io.netty.channel.ChannelHandler;
|
||||
import io.netty.channel.ChannelHandlerContext;
|
||||
|
@ -1,6 +1,6 @@
|
||||
package com.viaversion.fabric.mc116.mixin.address.client;
|
||||
|
||||
import com.viaversion.fabric.mc116.ViaFabricAddress;
|
||||
import com.viaversion.fabric.common.VFAddressParser;
|
||||
import org.spongepowered.asm.mixin.Mixin;
|
||||
import org.spongepowered.asm.mixin.injection.At;
|
||||
import org.spongepowered.asm.mixin.injection.Redirect;
|
||||
@ -13,7 +13,7 @@ public class MixinConnectScreenThread {
|
||||
@Redirect(method = "run()V", at = @At(value = "INVOKE",
|
||||
target = "Ljava/net/InetAddress;getByName(Ljava/lang/String;)Ljava/net/InetAddress;"))
|
||||
private InetAddress resolveViaFabricAddr(String address) throws UnknownHostException {
|
||||
ViaFabricAddress viaAddr = new ViaFabricAddress().parse(address);
|
||||
VFAddressParser viaAddr = new VFAddressParser().parse(address);
|
||||
if (viaAddr.viaSuffix == null) {
|
||||
return InetAddress.getByName(address);
|
||||
}
|
||||
|
@ -1,7 +1,7 @@
|
||||
package com.viaversion.fabric.mc116.mixin.address.client;
|
||||
|
||||
import com.viaversion.fabric.mc116.ViaFabricAddress;
|
||||
import com.mojang.datafixers.util.Pair;
|
||||
import com.viaversion.fabric.common.VFAddressParser;
|
||||
import net.minecraft.network.ServerAddress;
|
||||
import org.spongepowered.asm.mixin.Mixin;
|
||||
import org.spongepowered.asm.mixin.Shadow;
|
||||
@ -17,7 +17,7 @@ public abstract class MixinServerAddress {
|
||||
|
||||
@Redirect(method = "parse", at = @At(value = "INVOKE", target = "Lnet/minecraft/network/ServerAddress;resolveServer(Ljava/lang/String;)Lcom/mojang/datafixers/util/Pair;"))
|
||||
private static Pair<String, Integer> modifySrvAddr(String address) {
|
||||
ViaFabricAddress viaAddr = new ViaFabricAddress().parse(address);
|
||||
VFAddressParser viaAddr = new VFAddressParser().parse(address);
|
||||
if (viaAddr.viaSuffix == null) {
|
||||
return resolveServer(address);
|
||||
}
|
||||
|
@ -1,6 +1,6 @@
|
||||
package com.viaversion.fabric.mc116.mixin.address.client;
|
||||
|
||||
import com.viaversion.fabric.mc116.ViaFabricAddress;
|
||||
import com.viaversion.fabric.common.VFAddressParser;
|
||||
import net.minecraft.client.network.MultiplayerServerListPinger;
|
||||
import org.spongepowered.asm.mixin.Mixin;
|
||||
import org.spongepowered.asm.mixin.injection.At;
|
||||
@ -14,7 +14,7 @@ public class MixinServerPinger {
|
||||
@Redirect(method = "add", at = @At(value = "INVOKE",
|
||||
target = "Ljava/net/InetAddress;getByName(Ljava/lang/String;)Ljava/net/InetAddress;"))
|
||||
private InetAddress resolveViaFabricAddr(String address) throws UnknownHostException {
|
||||
ViaFabricAddress viaAddr = new ViaFabricAddress().parse(address);
|
||||
VFAddressParser viaAddr = new VFAddressParser().parse(address);
|
||||
if (viaAddr.viaSuffix == null) {
|
||||
return InetAddress.getByName(address);
|
||||
}
|
||||
|
@ -1,6 +1,6 @@
|
||||
package com.viaversion.fabric.mc116.mixin.debug.client;
|
||||
|
||||
import com.viaversion.fabric.mc116.handler.CommonTransformer;
|
||||
import com.viaversion.fabric.common.handler.CommonTransformer;
|
||||
import com.viaversion.fabric.mc116.handler.FabricDecodeHandler;
|
||||
import com.viaversion.viaversion.api.connection.ProtocolInfo;
|
||||
import io.netty.channel.ChannelHandler;
|
||||
|
@ -1,6 +1,6 @@
|
||||
package com.viaversion.fabric.mc116.mixin.pipeline;
|
||||
|
||||
import com.viaversion.fabric.mc116.handler.CommonTransformer;
|
||||
import com.viaversion.fabric.common.handler.CommonTransformer;
|
||||
import com.viaversion.fabric.mc116.handler.FabricDecodeHandler;
|
||||
import com.viaversion.fabric.mc116.handler.FabricEncodeHandler;
|
||||
import com.viaversion.viaversion.connection.UserConnectionImpl;
|
||||
|
@ -1,11 +1,11 @@
|
||||
package com.viaversion.fabric.mc116.mixin.pipeline.client;
|
||||
|
||||
import com.viaversion.fabric.mc116.ViaFabric;
|
||||
import com.viaversion.fabric.mc116.handler.CommonTransformer;
|
||||
import com.viaversion.fabric.common.handler.CommonTransformer;
|
||||
import com.viaversion.fabric.mc116.handler.FabricDecodeHandler;
|
||||
import com.viaversion.fabric.mc116.handler.FabricEncodeHandler;
|
||||
import com.viaversion.fabric.mc116.handler.clientside.ProtocolDetectionHandler;
|
||||
import com.viaversion.fabric.mc116.protocol.ViaFabricHostnameProtocol;
|
||||
import com.viaversion.fabric.common.protocol.HostnameParserProtocol;
|
||||
import com.viaversion.viaversion.connection.UserConnectionImpl;
|
||||
import com.viaversion.viaversion.protocol.ProtocolPipelineImpl;
|
||||
import io.netty.channel.Channel;
|
||||
@ -22,7 +22,7 @@ public class MixinClientConnectionChInit {
|
||||
private void onInitChannel(Channel channel, CallbackInfo ci) {
|
||||
if (channel instanceof SocketChannel) {
|
||||
UserConnection user = new UserConnectionImpl(channel, true);
|
||||
new ProtocolPipelineImpl(user).add(ViaFabricHostnameProtocol.INSTANCE);
|
||||
new ProtocolPipelineImpl(user).add(HostnameParserProtocol.INSTANCE);
|
||||
|
||||
channel.pipeline()
|
||||
.addBefore("encoder", CommonTransformer.HANDLER_ENCODER_NAME, new FabricEncodeHandler(user))
|
||||
|
@ -1,6 +1,6 @@
|
||||
package com.viaversion.fabric.mc116.platform;
|
||||
|
||||
import com.viaversion.fabric.mc116.handler.CommonTransformer;
|
||||
import com.viaversion.fabric.common.handler.CommonTransformer;
|
||||
import net.fabricmc.api.EnvType;
|
||||
import net.fabricmc.loader.api.FabricLoader;
|
||||
import net.minecraft.SharedConstants;
|
||||
@ -11,7 +11,7 @@ import com.viaversion.viaversion.libs.gson.JsonObject;
|
||||
import java.lang.reflect.Method;
|
||||
import java.util.Arrays;
|
||||
|
||||
public class VRInjector implements ViaInjector {
|
||||
public class FabricInjector implements ViaInjector {
|
||||
@Override
|
||||
public void inject() {
|
||||
// *looks at Mixins*
|
@ -1,12 +1,13 @@
|
||||
package com.viaversion.fabric.mc116.platform;
|
||||
|
||||
import com.viaversion.fabric.common.platform.FabricViaAPI;
|
||||
import com.viaversion.fabric.common.platform.FabricViaConfig;
|
||||
import com.viaversion.fabric.common.util.FutureTaskId;
|
||||
import com.viaversion.fabric.mc116.ViaFabric;
|
||||
import com.viaversion.fabric.mc116.commands.NMSCommandSender;
|
||||
import com.viaversion.fabric.mc116.commands.UserCommandSender;
|
||||
import com.viaversion.fabric.mc116.util.FutureTaskId;
|
||||
import com.viaversion.fabric.mc116.util.JLoggerToLog4j;
|
||||
import com.viaversion.fabric.common.commands.UserCommandSender;
|
||||
import com.viaversion.fabric.common.util.JLoggerToLog4j;
|
||||
import com.viaversion.viaversion.api.configuration.ViaVersionConfig;
|
||||
import com.viaversion.viaversion.api.platform.PlatformTask;
|
||||
import io.netty.util.concurrent.Future;
|
||||
import io.netty.util.concurrent.GenericFutureListener;
|
||||
import net.fabricmc.api.EnvType;
|
||||
@ -45,17 +46,17 @@ import java.util.logging.Level;
|
||||
import java.util.logging.Logger;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
public class VRPlatform implements ViaPlatform<UUID> {
|
||||
public class FabricPlatform implements ViaPlatform<UUID> {
|
||||
private final Logger logger = new JLoggerToLog4j(LogManager.getLogger("ViaVersion"));
|
||||
private final VRViaConfig config;
|
||||
private final FabricViaConfig config;
|
||||
private final File dataFolder;
|
||||
private final ViaAPI<UUID> api;
|
||||
|
||||
public VRPlatform() {
|
||||
public FabricPlatform() {
|
||||
Path configDir = FabricLoader.getInstance().getConfigDirectory().toPath().resolve("ViaFabric");
|
||||
config = new VRViaConfig(configDir.resolve("viaversion.yml").toFile());
|
||||
config = new FabricViaConfig(configDir.resolve("viaversion.yml").toFile());
|
||||
dataFolder = configDir.toFile();
|
||||
api = new VRViaAPI();
|
||||
api = new FabricViaAPI();
|
||||
}
|
||||
|
||||
public static MinecraftServer getServer() {
|
||||
@ -131,7 +132,7 @@ public class VRPlatform implements ViaPlatform<UUID> {
|
||||
}
|
||||
|
||||
@Override
|
||||
public PlatformTask runSync(Runnable runnable, long ticks) {
|
||||
public FutureTaskId runSync(Runnable runnable, long ticks) {
|
||||
// ViaVersion seems to not need to run delayed tasks on main thread
|
||||
return new FutureTaskId(
|
||||
ViaFabric.EVENT_LOOP
|
||||
@ -141,7 +142,7 @@ public class VRPlatform implements ViaPlatform<UUID> {
|
||||
}
|
||||
|
||||
@Override
|
||||
public PlatformTask runRepeatingSync(Runnable runnable, long ticks) {
|
||||
public FutureTaskId runRepeatingSync(Runnable runnable, long ticks) {
|
||||
// ViaVersion seems to not need to run repeating tasks on main thread
|
||||
return new FutureTaskId(
|
||||
ViaFabric.EVENT_LOOP
|
@ -1,8 +0,0 @@
|
||||
package com.viaversion.fabric.mc116.platform;
|
||||
|
||||
import com.viaversion.viaversion.ViaAPIBase;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
public class VRViaAPI extends ViaAPIBase<UUID> {
|
||||
}
|
@ -1,34 +0,0 @@
|
||||
package com.viaversion.fabric.mc116.protocol;
|
||||
|
||||
import com.viaversion.fabric.mc116.ViaFabricAddress;
|
||||
import com.viaversion.viaversion.api.protocol.AbstractSimpleProtocol;
|
||||
import com.viaversion.viaversion.api.protocol.packet.PacketWrapper;
|
||||
import com.viaversion.viaversion.api.protocol.remapper.PacketRemapper;
|
||||
import com.viaversion.viaversion.api.protocol.remapper.ValueTransformer;
|
||||
import com.viaversion.viaversion.api.type.Type;
|
||||
import com.viaversion.viaversion.api.protocol.packet.State;
|
||||
|
||||
public class ViaFabricHostnameProtocol extends AbstractSimpleProtocol {
|
||||
public static final ViaFabricHostnameProtocol INSTANCE = new ViaFabricHostnameProtocol();
|
||||
|
||||
@Override
|
||||
protected void registerPackets() {
|
||||
registerServerbound(State.HANDSHAKE, 0, 0, new PacketRemapper() {
|
||||
@Override
|
||||
public void registerMap() {
|
||||
map(Type.VAR_INT); // Protocol version
|
||||
map(Type.STRING, new ValueTransformer<String, String>(Type.STRING) {
|
||||
@Override
|
||||
public String transform(PacketWrapper packetWrapper, String s) {
|
||||
return new ViaFabricAddress().parse(s).realAddress;
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isBaseProtocol() {
|
||||
return true;
|
||||
}
|
||||
}
|
@ -1,9 +1,9 @@
|
||||
package com.viaversion.fabric.mc116.providers;
|
||||
|
||||
import com.viaversion.fabric.common.VFAddressParser;
|
||||
import com.viaversion.fabric.mc116.ViaFabric;
|
||||
import com.viaversion.fabric.mc116.ViaFabricAddress;
|
||||
import com.viaversion.fabric.mc116.service.ProtocolAutoDetector;
|
||||
import com.viaversion.fabric.mc116.util.ProtocolUtils;
|
||||
import com.viaversion.fabric.common.util.ProtocolUtils;
|
||||
import com.google.common.primitives.Ints;
|
||||
import com.viaversion.viaversion.api.connection.ProtocolInfo;
|
||||
import net.fabricmc.loader.api.FabricLoader;
|
||||
@ -68,7 +68,7 @@ public class VRVersionProvider extends BaseVersionProvider {
|
||||
SocketAddress addr = connection.getChannel().remoteAddress();
|
||||
|
||||
if (addr instanceof InetSocketAddress) {
|
||||
int addrVersion = new ViaFabricAddress().parse(((InetSocketAddress) addr).getHostName()).protocol;
|
||||
int addrVersion = new VFAddressParser().parse(((InetSocketAddress) addr).getHostName()).protocol;
|
||||
if (addrVersion != 0) serverVer = addrVersion;
|
||||
|
||||
try {
|
||||
|
@ -1,7 +1,7 @@
|
||||
package com.viaversion.fabric.mc116.service;
|
||||
|
||||
import com.viaversion.fabric.common.VFAddressParser;
|
||||
import com.viaversion.fabric.mc116.ViaFabric;
|
||||
import com.viaversion.fabric.mc116.ViaFabricAddress;
|
||||
import com.google.common.cache.CacheBuilder;
|
||||
import com.google.common.cache.CacheLoader;
|
||||
import com.google.common.cache.LoadingCache;
|
||||
@ -114,7 +114,7 @@ public class ProtocolAutoDetector {
|
||||
public static CompletableFuture<ProtocolVersion> detectVersion(InetSocketAddress address) {
|
||||
try {
|
||||
InetSocketAddress real = new InetSocketAddress(InetAddress.getByAddress
|
||||
(new ViaFabricAddress().parse(address.getHostString()).realAddress,
|
||||
(new VFAddressParser().parse(address.getHostString()).realAddress,
|
||||
address.getAddress().getAddress()), address.getPort());
|
||||
return SERVER_VER.get(real);
|
||||
} catch (UnknownHostException | ExecutionException e) {
|
||||
|
@ -1,23 +0,0 @@
|
||||
package com.viaversion.fabric.mc116.util;
|
||||
|
||||
import com.viaversion.viaversion.api.platform.PlatformTask;
|
||||
|
||||
import java.util.concurrent.Future;
|
||||
|
||||
public class FutureTaskId implements PlatformTask<Future<?>> {
|
||||
private final Future<?> object;
|
||||
|
||||
public FutureTaskId(Future<?> object) {
|
||||
this.object = object;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Future<?> getObject() {
|
||||
return object;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void cancel() {
|
||||
object.cancel(false);
|
||||
}
|
||||
}
|
@ -36,18 +36,13 @@
|
||||
]
|
||||
},
|
||||
"depends": {
|
||||
"fabricloader": ">=0.4.0",
|
||||
"fabric-resource-loader-v0": "*",
|
||||
"minecraft": "1.16.x",
|
||||
"viaversion": ">3.0.1"
|
||||
},
|
||||
"conflicts": {
|
||||
"fabric-registry-sync-v0": "*"
|
||||
},
|
||||
"recommends": {
|
||||
"fabric-command-api-v1": "*"
|
||||
},
|
||||
"icon": "assets/viafabric/textures/logo.png",
|
||||
"mixins": [
|
||||
"mixins.viafabric116.address.json",
|
||||
"mixins.viafabric116.gui.json",
|
||||
|
@ -3,7 +3,6 @@ version = rootProject.version
|
||||
dependencies {
|
||||
minecraft("com.mojang:minecraft:21w15a")
|
||||
mappings("net.fabricmc:yarn:21w15a+build.16:v2")
|
||||
modImplementation("net.fabricmc:fabric-loader:0.10.5+build.213")
|
||||
|
||||
modImplementation("net.fabricmc.fabric-api:fabric-api:0.33.0+1.17")
|
||||
modImplementation("com.terraformersmc:modmenu:1.16.9")
|
||||
|
@ -1,12 +1,12 @@
|
||||
package com.viaversion.fabric.mc117;
|
||||
|
||||
import com.viaversion.fabric.common.config.VFConfig;
|
||||
import com.viaversion.fabric.mc117.commands.VRCommandHandler;
|
||||
import com.viaversion.fabric.mc117.config.VRConfig;
|
||||
import com.viaversion.fabric.mc117.platform.VRInjector;
|
||||
import com.viaversion.fabric.mc117.platform.FabricInjector;
|
||||
import com.viaversion.fabric.mc117.platform.VRLoader;
|
||||
import com.viaversion.fabric.mc117.platform.VRPlatform;
|
||||
import com.viaversion.fabric.mc117.protocol.ViaFabricHostnameProtocol;
|
||||
import com.viaversion.fabric.mc117.util.JLoggerToLog4j;
|
||||
import com.viaversion.fabric.mc117.platform.FabricPlatform;
|
||||
import com.viaversion.fabric.common.protocol.HostnameParserProtocol;
|
||||
import com.viaversion.fabric.common.util.JLoggerToLog4j;
|
||||
import com.google.common.collect.Range;
|
||||
import com.google.common.util.concurrent.ThreadFactoryBuilder;
|
||||
import com.mojang.brigadier.arguments.StringArgumentType;
|
||||
@ -38,7 +38,7 @@ public class ViaFabric implements ModInitializer {
|
||||
public static final ExecutorService ASYNC_EXECUTOR;
|
||||
public static final EventLoop EVENT_LOOP;
|
||||
public static CompletableFuture<Void> INIT_FUTURE = new CompletableFuture<>();
|
||||
public static VRConfig config;
|
||||
public static VFConfig config;
|
||||
|
||||
static {
|
||||
ThreadFactory factory = new ThreadFactoryBuilder().setDaemon(true).setNameFormat("ViaFabric-%d").build();
|
||||
@ -66,16 +66,16 @@ public class ViaFabric implements ModInitializer {
|
||||
@Override
|
||||
public void onInitialize() {
|
||||
Via.init(ViaManagerImpl.builder()
|
||||
.injector(new VRInjector())
|
||||
.injector(new FabricInjector())
|
||||
.loader(new VRLoader())
|
||||
.commandHandler(new VRCommandHandler())
|
||||
.platform(new VRPlatform()).build());
|
||||
.platform(new FabricPlatform()).build());
|
||||
|
||||
FabricLoader.getInstance().getModContainer("viabackwards").ifPresent(mod -> MappingDataLoader.enableMappingsCache());
|
||||
|
||||
((ViaManagerImpl) Via.getManager()).init();
|
||||
|
||||
Via.getManager().getProtocolManager().registerBaseProtocol(ViaFabricHostnameProtocol.INSTANCE, Range.lessThan(Integer.MIN_VALUE));
|
||||
Via.getManager().getProtocolManager().registerBaseProtocol(HostnameParserProtocol.INSTANCE, Range.lessThan(Integer.MIN_VALUE));
|
||||
ProtocolVersion.register(-2, "AUTO");
|
||||
|
||||
FabricLoader.getInstance().getEntrypoints("viafabric:via_api_initialized", Runnable.class).forEach(Runnable::run);
|
||||
@ -91,7 +91,7 @@ public class ViaFabric implements ModInitializer {
|
||||
}
|
||||
}
|
||||
|
||||
config = new VRConfig(FabricLoader.getInstance().getConfigDir().resolve("ViaFabric")
|
||||
config = new VFConfig(FabricLoader.getInstance().getConfigDir().resolve("ViaFabric")
|
||||
.resolve("viafabric.yml").toFile());
|
||||
|
||||
INIT_FUTURE.complete(null);
|
||||
|
@ -1,77 +0,0 @@
|
||||
package com.viaversion.fabric.mc117;
|
||||
|
||||
import com.viaversion.viaversion.api.protocol.version.ProtocolVersion;
|
||||
|
||||
import java.util.Locale;
|
||||
|
||||
public class ViaFabricAddress {
|
||||
public int protocol = 0;
|
||||
public String viaSuffix = null;
|
||||
public String realAddress = null;
|
||||
|
||||
public ViaFabricAddress parse(String address) {
|
||||
if (address == null) return null;
|
||||
String[] parts = address.split("\\.");
|
||||
|
||||
boolean foundDomain = false;
|
||||
boolean foundOptions = false;
|
||||
|
||||
StringBuilder ourParts = new StringBuilder();
|
||||
StringBuilder realAddrBuilder = new StringBuilder();
|
||||
|
||||
for (int i = parts.length - 1; i >= 0; i--) {
|
||||
String part = parts[i];
|
||||
boolean realAddrPart = false;
|
||||
if (foundDomain) {
|
||||
if (!foundOptions) {
|
||||
if (part.startsWith("_")) {
|
||||
String arg = part.substring(2);
|
||||
if (part.toLowerCase(Locale.ROOT).startsWith("_v")) {
|
||||
try {
|
||||
protocol = Integer.parseInt(arg);
|
||||
} catch (NumberFormatException e) {
|
||||
ProtocolVersion closest = ProtocolVersion.getClosest(arg.replace("_", "."));
|
||||
if (closest != null) {
|
||||
protocol = closest.getVersion();
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
foundOptions = true;
|
||||
}
|
||||
}
|
||||
if (foundOptions) {
|
||||
realAddrPart = true;
|
||||
}
|
||||
} else if (part.equalsIgnoreCase("viafabric")) {
|
||||
foundDomain = true;
|
||||
}
|
||||
if (realAddrPart) {
|
||||
realAddrBuilder.insert(0, part + ".");
|
||||
} else {
|
||||
ourParts.insert(0, part + ".");
|
||||
}
|
||||
}
|
||||
|
||||
String realAddr = realAddrBuilder.toString().replaceAll("\\.$", "");
|
||||
String suffix = ourParts.toString().replaceAll("\\.$", "");
|
||||
|
||||
if (realAddr.isEmpty()) {
|
||||
this.realAddress = address;
|
||||
} else {
|
||||
this.realAddress = realAddr;
|
||||
this.viaSuffix = suffix;
|
||||
}
|
||||
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "ViaFabricAddress{" +
|
||||
"protocol=" + protocol +
|
||||
", viaSuffix='" + viaSuffix + '\'' +
|
||||
", realAddress='" + realAddress + '\'' +
|
||||
'}';
|
||||
}
|
||||
}
|
@ -1,6 +1,6 @@
|
||||
package com.viaversion.fabric.mc117.commands;
|
||||
|
||||
import com.viaversion.fabric.mc117.platform.VRPlatform;
|
||||
import com.viaversion.fabric.mc117.platform.FabricPlatform;
|
||||
import net.fabricmc.fabric.api.client.command.v1.FabricClientCommandSource;
|
||||
import net.minecraft.command.CommandSource;
|
||||
import net.minecraft.entity.Entity;
|
||||
@ -26,9 +26,9 @@ public class NMSCommandSender implements ViaCommandSender {
|
||||
@Override
|
||||
public void sendMessage(String s) {
|
||||
if (source instanceof ServerCommandSource) {
|
||||
((ServerCommandSource) source).sendFeedback(Text.Serializer.fromJson(VRPlatform.legacyToJson(s)), false);
|
||||
((ServerCommandSource) source).sendFeedback(Text.Serializer.fromJson(FabricPlatform.legacyToJson(s)), false);
|
||||
} else if (source instanceof FabricClientCommandSource) {
|
||||
((FabricClientCommandSource) source).sendFeedback(Text.Serializer.fromJson(VRPlatform.legacyToJson(s)));
|
||||
((FabricClientCommandSource) source).sendFeedback(Text.Serializer.fromJson(FabricPlatform.legacyToJson(s)));
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1,35 +0,0 @@
|
||||
package com.viaversion.fabric.mc117.commands;
|
||||
|
||||
import com.viaversion.viaversion.api.Via;
|
||||
import com.viaversion.viaversion.api.command.ViaCommandSender;
|
||||
import com.viaversion.viaversion.api.connection.UserConnection;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
public class UserCommandSender implements ViaCommandSender {
|
||||
private UserConnection con;
|
||||
|
||||
public UserCommandSender(UserConnection con) {
|
||||
this.con = con;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean hasPermission(String s) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void sendMessage(String s) {
|
||||
Via.getPlatform().sendMessage(getUUID(), s);
|
||||
}
|
||||
|
||||
@Override
|
||||
public UUID getUUID() {
|
||||
return con.getProtocolInfo().getUuid();
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getName() {
|
||||
return con.getProtocolInfo().getUsername();
|
||||
}
|
||||
}
|
@ -1,6 +1,6 @@
|
||||
package com.viaversion.fabric.mc117.commands;
|
||||
|
||||
import com.viaversion.fabric.mc117.commands.subs.LeakDetectSubCommand;
|
||||
import com.viaversion.fabric.common.commands.subs.LeakDetectSubCommand;
|
||||
import com.mojang.brigadier.arguments.StringArgumentType;
|
||||
import com.mojang.brigadier.context.CommandContext;
|
||||
import com.mojang.brigadier.suggestion.Suggestions;
|
||||
|
@ -1,48 +0,0 @@
|
||||
package com.viaversion.fabric.mc117.commands.subs;
|
||||
|
||||
import io.netty.util.ResourceLeakDetector;
|
||||
import com.viaversion.viaversion.api.command.ViaCommandSender;
|
||||
import com.viaversion.viaversion.api.command.ViaSubCommand;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
public class LeakDetectSubCommand extends ViaSubCommand {
|
||||
@Override
|
||||
public String name() {
|
||||
return "leakdetect";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String description() {
|
||||
return "Sets ResourceLeakDetector level";
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean execute(ViaCommandSender viaCommandSender, String[] strings) {
|
||||
if (strings.length == 1) {
|
||||
try {
|
||||
ResourceLeakDetector.Level level = ResourceLeakDetector.Level.valueOf(strings[0]);
|
||||
ResourceLeakDetector.setLevel(level);
|
||||
viaCommandSender.sendMessage("Set leak detector level to " + level);
|
||||
} catch (IllegalArgumentException e) {
|
||||
viaCommandSender.sendMessage("Invalid level (" + Arrays.toString(ResourceLeakDetector.Level.values()) + ")");
|
||||
}
|
||||
} else {
|
||||
viaCommandSender.sendMessage("Current leak detection level is " + ResourceLeakDetector.getLevel());
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<String> onTabComplete(ViaCommandSender sender, String[] args) {
|
||||
if (args.length == 1) {
|
||||
return Arrays.stream(ResourceLeakDetector.Level.values())
|
||||
.map(Enum::name)
|
||||
.filter(it -> it.startsWith(args[0]))
|
||||
.collect(Collectors.toList());
|
||||
}
|
||||
return super.onTabComplete(sender, args);
|
||||
}
|
||||
}
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user