Fixed compile error better

This commit is contained in:
RaphiMC 2023-09-15 17:44:19 +02:00
parent a1e14e5610
commit 277a845bc8
No known key found for this signature in database
GPG key ID: 0F6BB0657A03AC94
3 changed files with 5 additions and 62 deletions

View file

@ -9,7 +9,7 @@ buildscript {
}
dependencies {
classpath "net.raphimc.javadowngrader:gradle-plugin:1.0.0"
classpath "net.raphimc.javadowngrader:gradle-plugin:1.0.1-SNAPSHOT"
}
}
@ -105,9 +105,9 @@ dependencies {
exclude group: "com.google.code.gson", module: "gson"
exclude group: "org.slf4j", module: "slf4j-api"
}
include("net.raphimc.javadowngrader:impl-classtransform:1.0.0") {
include("net.raphimc.javadowngrader:impl-classtransform:1.0.1-SNAPSHOT") {
exclude group: "org.ow2.asm", module: "asm-commons"
exclude group: "net.lenni0451.classtransform", module: "core"
exclude group: "net.lenni0451.classtransform", module: "additionalclassprovider"
}
include("org.cloudburstmc.netty:netty-transport-raknet:1.0.0.CR1-SNAPSHOT") {
exclude group: "io.netty", module: "netty-common"

View file

@ -20,6 +20,7 @@ package net.raphimc.viaproxy.plugins;
import com.vdurmont.semver4j.Semver;
import net.lenni0451.classtransform.TransformerManager;
import net.lenni0451.classtransform.additionalclassprovider.GuavaClassPathProvider;
import net.lenni0451.classtransform.additionalclassprovider.LazyFileClassProvider;
import net.lenni0451.classtransform.utils.loader.InjectionClassLoader;
import net.lenni0451.classtransform.utils.tree.IClassProvider;
import net.lenni0451.lambdaevents.LambdaManager;
@ -27,7 +28,6 @@ import net.lenni0451.lambdaevents.generator.LambdaMetaFactoryGenerator;
import net.lenni0451.reflect.stream.RStream;
import net.raphimc.javadowngrader.impl.classtransform.JavaDowngraderTransformer;
import net.raphimc.viaproxy.ViaProxy;
import net.raphimc.viaproxy.util.URLClassProvider;
import net.raphimc.viaproxy.util.logging.Logger;
import org.yaml.snakeyaml.Yaml;
@ -90,7 +90,7 @@ public class PluginManager {
private static void loadAndScanJar(final File file) throws Throwable {
final URL url = file.toURI().toURL();
final TransformerManager transformerManager = new TransformerManager(new URLClassProvider(ROOT_CLASS_PROVIDER, url));
final TransformerManager transformerManager = new TransformerManager(new LazyFileClassProvider(Collections.singletonList(file), ROOT_CLASS_PROVIDER));
transformerManager.addBytecodeTransformer(new JavaDowngraderTransformer(transformerManager));
final InjectionClassLoader loader = new InjectionClassLoader(transformerManager, PluginManager.class.getClassLoader(), url);
final InputStream viaproxyYml = loader.getResourceAsStream("viaproxy.yml");

View file

@ -1,57 +0,0 @@
/*
* This file is part of ViaProxy - https://github.com/RaphiMC/ViaProxy
* Copyright (C) 2023 RK_01/RaphiMC and contributors
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package net.raphimc.viaproxy.util;
import net.lenni0451.classtransform.utils.ASMUtils;
import net.lenni0451.classtransform.utils.tree.IClassProvider;
import org.apache.commons.io.IOUtils;
import java.io.InputStream;
import java.net.URL;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.function.Supplier;
public class URLClassProvider implements IClassProvider {
private final IClassProvider parent;
private final List<URL> urls;
public URLClassProvider(final IClassProvider parent, final URL... urls) {
this.parent = parent;
this.urls = Arrays.asList(urls);
}
@Override
public byte[] getClass(String name) throws ClassNotFoundException {
for (URL url : this.urls) {
try (InputStream is = new URL("jar:" + url + "!/" + ASMUtils.slash(name) + ".class").openStream()) {
return IOUtils.toByteArray(is);
} catch (Throwable ignored) {
}
}
return this.parent.getClass(name);
}
@Override
public Map<String, Supplier<byte[]>> getAllClasses() {
return this.parent.getAllClasses();
}
}