getting somewhere

This commit is contained in:
Infinityy committed 2024-08-15 18:41:34 +02:00
1 parent a7ab061ddc
commit bccba2893e
13 files changed
+50 -164

No files matched your search

+9 -37
View File
@@ -1,6 +1,5 @@
plugins {
id 'fabric-loom' version '1.7-SNAPSHOT'
id 'maven-publish'
}
version = project.mod_version
@@ -12,11 +11,6 @@ base {
repositories {
// Add repositories to retrieve artifacts from in here.
// You should only use this when depending on other mods because
// Loom adds the essential maven repositories to download Minecraft and libraries from automatically.
// See https://docs.gradle.org/current/userguide/declaring_repositories.html
// for more information about repositories.
maven { url "https://repo.viaversion.com" }
maven { url "https://libraries.minecraft.net" }
maven { url "https://maven.lenni0451.net/everything" }
@@ -31,19 +25,15 @@ dependencies {
// Fabric API. This is technically optional, but you probably want it anyway.
modImplementation "net.fabricmc.fabric-api:fabric-api:${project.fabric_version}"
include(implementation "com.viaversion:viaversion-common:5.0.2-SNAPSHOT")
include(implementation "com.viaversion:viabackwards-common:5.0.2-SNAPSHOT")
include(implementation "com.viaversion:viarewind-common:4.0.2-SNAPSHOT")
include(implementation "net.raphimc:ViaLegacy:3.0.2-SNAPSHOT")
include(implementation "net.raphimc:viaaprilfools-common:3.0.1-SNAPSHOT")
include(implementation "net.raphimc:ViaBedrock:0.0.10-SNAPSHOT") {
exclude group: "io.netty"
exclude group: "io.jsonwebtoken"
}
include(implementation "net.raphimc:ViaLoader:3.0.2-SNAPSHOT")
implementation "com.viaversion:viaversion-common:5.0.4-SNAPSHOT"
implementation "com.viaversion:viabackwards-common:5.0.4-SNAPSHOT"
modImplementation "net.raphimc:viaaprilfools-common:3.0.2-SNAPSHOT"
implementation "net.raphimc:ViaLoader:3.0.3-SNAPSHOT"
include(implementation "net.raphimc.netminecraft:all:2.5.1-SNAPSHOT")
include(implementation "net.lenni0451:Reflect:1.3.4")
implementation "net.raphimc.netminecraft:all:2.5.1-SNAPSHOT"
implementation "net.lenni0451:Reflect:1.3.4"
implementation "org.slf4j:slf4j-api:2.0.16"
include "org.yaml:snakeyaml:2.2"
}
processResources {
@@ -86,22 +76,4 @@ jar {
from("LICENSE") {
rename { "${it}_${project.archivesBaseName}" }
}
}
// configure the maven publication
publishing {
publications {
create("mavenJava", MavenPublication) {
artifactId = project.archives_base_name
from components.java
}
}
// See https://docs.gradle.org/current/userguide/publishing_maven.html for information on how to set up publishing.
repositories {
// Add repositories to publish to here.
// Notice: This block does NOT have the same function as the block in the top level.
// The repositories here will be used for publishing your artifact, not for
// retrieving dependencies.
}
}
}
+1 -1
View File
@@ -3,7 +3,7 @@ org.gradle.jvmargs=-Xmx1G
# Fabric Properties
# check these on https://modmuss50.me/fabric.html
minecraft_version=1.16_combat-6
loader_version=0.16.0
loader_version=0.14.21
# Mod Properties
mod_version=1.0
maven_group=com.nexia
@@ -1,34 +1,24 @@
package com.nexia.viacombatium;
import com.nexia.viacombatium.impl.ViaCombatiumVLLoader;
import com.nexia.viacombatium.impl.ViaVersionPlatformImpl;
import com.viaversion.viaversion.api.Via;
import com.viaversion.viaversion.api.protocol.version.ProtocolVersion;
import com.viaversion.viaversion.api.protocol.version.VersionType;
import net.fabricmc.api.ModInitializer;
import net.fabricmc.loader.api.FabricLoader;
import net.raphimc.vialoader.ViaLoader;
import net.raphimc.vialoader.impl.platform.ViaAprilFoolsPlatformImpl;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import net.raphimc.vialoader.impl.platform.ViaBackwardsPlatformImpl;
import java.util.logging.Logger;
public class ViaCombatium implements ModInitializer {
public static ProtocolVersion AUTO_DETECT_PROTOCOL = new ProtocolVersion(VersionType.SPECIAL, -2, -1, "Auto Detect (1.7+ servers)", null);
public static Logger logger = LoggerFactory.getLogger("ViaCombatium");
public static final Logger logger = Logger.getLogger("ViaCombatium");
@Override
public void onInitialize() {
ViaVersionPlatformImpl viaVersionPlatform = new ViaVersionPlatformImpl(FabricLoader.getInstance().getConfigDir().toFile());
ViaLoader.init(
viaVersionPlatform,
null,
new ViaCombatiumVLLoader(),
null/*ViaInjector*/,
null/*ViaCommandHandler*/,
ViaBackwardsPlatformImpl::new,
ViaAprilFoolsPlatformImpl::new
);
viaVersionPlatform.init();
ProtocolVersion.register(AUTO_DETECT_PROTOCOL);
System.out.println(Via.getPlatform().getDump());
}
}
@@ -1,30 +1,14 @@
package com.nexia.viacombatium.impl;
import com.nexia.viacombatium.ViaCombatium;
import com.nexia.viacombatium.platform.NativeVersionProvider;
import com.viaversion.viaversion.api.Via;
import com.viaversion.viaversion.api.connection.UserConnection;
import com.viaversion.viaversion.api.protocol.version.ProtocolVersion;
import com.viaversion.viaversion.api.protocol.version.VersionProvider;
import com.viaversion.viaversion.protocol.version.BaseVersionProvider;
import net.raphimc.viaaprilfools.api.VAFServerVersionProvider;
import net.raphimc.vialoader.impl.viaversion.VLLoader;
public class ViaCombatiumVLLoader extends VLLoader {
@Override
public void load() {
super.load();
Via.getManager().getProviders().use(VersionProvider.class, new BaseVersionProvider() {
@Override
public ProtocolVersion getClosestServerProtocol(UserConnection connection) throws Exception {
/*
NativeVersionProvider natProvider = Via.getManager().getProviders().get(NativeVersionProvider.class);
if (natProvider != null) {
return natProvider.getNativeServerProtocolVersion();
}
*/
return super.getClosestServerProtocol(connection);
}
});
Via.getManager().getProviders().use(VersionProvider.class, new VAFServerVersionProvider(new BaseVersionProvider()));
}
}
@@ -1,15 +1,14 @@
package com.nexia.viacombatium.impl;
import com.viaversion.viaversion.api.connection.UserConnection;
import com.viaversion.viaversion.api.protocol.version.ProtocolVersion;
import io.netty.channel.ChannelHandler;
import net.raphimc.netminecraft.constants.MCPipeline;
import net.raphimc.vialoader.netty.VLPipeline;
import net.raphimc.vialoader.netty.ViaCodec;
public class ViaCombatiumVLPipeline extends VLPipeline {
public ViaCombatiumVLPipeline(UserConnection user, ProtocolVersion version) {
super(user, version);
public ViaCombatiumVLPipeline(UserConnection user) {
super(user);
}
@Override
@@ -1,7 +1,5 @@
package com.nexia.viacombatium.impl;
import com.nexia.viacombatium.platform.NativeVersionProvider;
import com.nexia.viacombatium.platform.ViaCombatiumNativeVersionProvider;
import com.viaversion.viaversion.api.Via;
import com.viaversion.viaversion.api.ViaAPI;
import com.viaversion.viaversion.api.command.ViaCommandSender;
@@ -27,7 +25,6 @@ import java.util.concurrent.TimeUnit;
import java.util.logging.Logger;
public class ViaVersionPlatformImpl implements ViaPlatform<UserConnection> {
private static final Logger LOGGER = new JLoggerToSLF4J(LoggerFactory.getLogger("ViaVersion"));
private final File dataFolder;
@@ -35,16 +32,11 @@ public class ViaVersionPlatformImpl implements ViaPlatform<UserConnection> {
private final ViaAPI<UserConnection> api;
public ViaVersionPlatformImpl(final File rootFolder) {
this.dataFolder = new File(rootFolder, "ViaLoader");
this.dataFolder = new File(rootFolder, "ViaCombatium");
this.config = this.createConfig();
this.api = this.createApi();
}
public void init() {
// We'll use it early for ViaInjector
installNativeVersionProvider();
}
@Override
public Logger getLogger() {
return LOGGER;
@@ -52,7 +44,7 @@ public class ViaVersionPlatformImpl implements ViaPlatform<UserConnection> {
@Override
public String getPlatformName() {
return "ViaLoader";
return "ViaCombatium";
}
@Override
@@ -138,10 +130,6 @@ public class ViaVersionPlatformImpl implements ViaPlatform<UserConnection> {
public void onReload() {
}
protected void installNativeVersionProvider() {
Via.getManager().getProviders().use(NativeVersionProvider.class, new ViaCombatiumNativeVersionProvider());
}
@Override
public JsonObject getDump() {
JsonObject platformSpecific = new JsonObject();
@@ -170,10 +158,6 @@ public class ViaVersionPlatformImpl implements ViaPlatform<UserConnection> {
}).forEach(mods::add);
platformSpecific.add("mods", mods);
NativeVersionProvider ver = Via.getManager().getProviders().get(NativeVersionProvider.class);
if (ver != null) {
platformSpecific.addProperty("native version", ver.getNativeServerProtocolVersion().getVersion());
}
return platformSpecific;
}
@@ -1,9 +1,5 @@
package com.nexia.viacombatium.mixin;
import com.nexia.viacombatium.impl.ViaCombatiumVLPipeline;
import com.viaversion.viaversion.api.connection.UserConnection;
import com.viaversion.viaversion.connection.UserConnectionImpl;
import com.viaversion.viaversion.protocol.ProtocolPipelineImpl;
import io.netty.channel.Channel;
import net.minecraft.network.Connection;
import net.raphimc.vialoader.netty.CompressionReorderEvent;
@@ -13,21 +9,12 @@ import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
import java.nio.channels.SocketChannel;
@Mixin(Connection.class)
public class ConnectionMixin {
@Shadow private Channel channel;
@Inject(method = "setupCompression", at = @At("RETURN"))
public void reorderCompression(int i, CallbackInfo ci) {
private void reorderCompression(int i, CallbackInfo ci) {
channel.pipeline().fireUserEventTriggered(CompressionReorderEvent.INSTANCE);
if (channel instanceof SocketChannel) {
UserConnection user = new UserConnectionImpl(channel);
new ProtocolPipelineImpl(user);
channel.pipeline().addLast(new ViaCombatiumVLPipeline(user, user.getProtocolInfo().serverProtocolVersion()));
}
}
}
@@ -0,0 +1,17 @@
package com.nexia.viacombatium.mixin;
import com.viaversion.viaversion.ViaManagerImpl;
import com.viaversion.viaversion.api.Via;
import net.minecraft.server.MinecraftServer;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
@Mixin(MinecraftServer.class)
public class MinecraftServerMixin {
@Inject(method = "stopServer", at = @At("TAIL"))
private void onStop(CallbackInfo ci) {
((ViaManagerImpl) Via.getManager()).destroy();
}
}
@@ -2,10 +2,11 @@ package com.nexia.viacombatium.mixin;
import com.nexia.viacombatium.impl.ViaCombatiumVLPipeline;
import com.viaversion.viaversion.api.connection.UserConnection;
import com.viaversion.viaversion.api.protocol.version.ProtocolVersion;
import com.viaversion.viaversion.connection.UserConnectionImpl;
import com.viaversion.viaversion.protocol.ProtocolPipelineImpl;
import io.netty.channel.Channel;
import io.netty.channel.socket.SocketChannel;
import net.raphimc.netminecraft.netty.codec.PacketCodec;
import net.raphimc.vialoader.netty.VLLegacyPipeline;
import net.raphimc.vialoader.netty.ViaDecoder;
import net.raphimc.vialoader.netty.ViaEncoder;
@@ -14,19 +15,21 @@ import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
import java.nio.channels.SocketChannel;
import static com.nexia.viacombatium.ViaCombatium.logger;
@Mixin(targets = "net.minecraft.server.network.ServerConnectionListener$1")
public class ServerConnectionMixin {
@Inject(method = "initChannel", at = @At(value = "TAIL"), remap = false)
private void onInitChannel(Channel channel, CallbackInfo ci) {
if (channel instanceof SocketChannel) {
UserConnection user = new UserConnectionImpl(channel);
logger.info("Initializing channel: " + channel);
UserConnection user = new UserConnectionImpl(channel, true);
new ProtocolPipelineImpl(user);
//channel.pipeline().addLast(new ViaCombatiumVLPipeline(user, ProtocolVersion.getProtocol(803)));
logger.info("Adding VLLegacyPipeline");
channel.pipeline().addBefore("encoder", VLLegacyPipeline.VIA_ENCODER_NAME, new ViaEncoder(user));
channel.pipeline().addBefore("decoder", VLLegacyPipeline.VIA_DECODER_NAME, new ViaDecoder(user));
//channel.pipeline().addLast(new ViaCombatiumVLPipeline(user));
}
}
}
@@ -1,12 +0,0 @@
package com.nexia.viacombatium.platform;
import com.viaversion.viaversion.api.platform.providers.Provider;
import com.viaversion.viaversion.api.protocol.version.ProtocolVersion;
public interface NativeVersionProvider extends Provider {
int getNativeServerVersion();
default ProtocolVersion getNativeServerProtocolVersion() {
return ProtocolVersion.getProtocol(getNativeServerVersion());
}
}
@@ -1,10 +0,0 @@
package com.nexia.viacombatium.platform;
import net.minecraft.SharedConstants;
public class ViaCombatiumNativeVersionProvider implements NativeVersionProvider {
@Override
public int getNativeServerVersion() {
return SharedConstants.getCurrentVersion().getProtocolVersion();
}
}
@@ -1,31 +0,0 @@
package com.nexia.viacombatium.util;
import com.nexia.viacombatium.ViaCombatium;
import net.fabricmc.loader.api.FabricLoader;
import net.lenni0451.reflect.ClassLoaders;
import java.io.File;
public class ClassLoaderPriorityUtil {
public static void loadOverridingJars() {
final File jarsFolder = new File(FabricLoader.getInstance().getConfigDir().toAbsolutePath() + "/jars");
if (!jarsFolder.exists()) {
jarsFolder.mkdir();
return;
}
if (jarsFolder.isDirectory()) {
for (File file : jarsFolder.listFiles()) {
try {
if (file.getName().endsWith(".jar")) {
ClassLoaders.loadToFront(file.toURI().toURL());
ViaCombatium.logger.warn("Loaded overriding jar {}", file.getName());
}
} catch (Throwable e) {
ViaCombatium.logger.error("Failed to load overriding jar {}", file.getName(), e);
}
}
}
}
}
+4 -1
View File
@@ -2,11 +2,14 @@
"required": true,
"minVersion": "0.8",
"package": "com.nexia.viacombatium.mixin",
"compatibilityLevel": "JAVA_21",
"compatibilityLevel": "JAVA_17",
"mixins": [
"ConnectionMixin",
"ServerConnectionMixin"
],
"server": [
"MinecraftServerMixin"
],
"injectors": {
"defaultRequire": 1
}