Initial 1.15 version.

This commit is contained in:
IzzelAliz 2020-06-09 14:22:17 +08:00
parent c538046c1a
commit 6ba2976f02
12 changed files with 76 additions and 67 deletions

View File

@ -1,10 +1,12 @@
package io.izzel.arclight.server;
package io.izzel.arclight.common;
import io.izzel.arclight.api.ArclightVersion;
import io.izzel.arclight.api.EnumHelper;
import io.izzel.arclight.api.Unsafe;
import io.izzel.arclight.forgeinstaller.ForgeInstaller;
import io.izzel.arclight.common.mod.util.log.ArclightI18nLogger;
import io.izzel.arclight.common.mod.util.log.ArclightLazyLogManager;
import io.izzel.arclight.common.mod.util.remapper.ArclightRemapper;
import io.izzel.arclight.i18n.ArclightConfig;
import io.izzel.arclight.i18n.ArclightLocale;
import net.minecraftforge.server.ServerMain;
import java.io.InputStream;
@ -12,14 +14,13 @@ import java.util.Objects;
import java.util.jar.Attributes;
import java.util.jar.Manifest;
public class Main {
public abstract class ArclightMain {
public static void main(String[] args) throws Throwable {
public void run(String[] args) throws Throwable {
System.setProperty("java.util.logging.manager", ArclightLazyLogManager.class.getCanonicalName());
System.setProperty("log4j.jul.LoggerAdapter", "io.izzel.arclight.common.mod.util.log.ArclightLoggerAdapter");
ArclightLocale.info("i18n.using-language", ArclightConfig.spec().getLocale().getCurrent(), ArclightConfig.spec().getLocale().getFallback());
ArclightVersion.setVersion(ArclightVersion.v1_14);
ForgeInstaller.install();
this.afterSetup();
try { // Java 9 & Java 兼容性
int javaVersion = (int) Float.parseFloat(System.getProperty("java.class.version"));
if (javaVersion == 53) {
@ -35,6 +36,7 @@ public class Main {
printLogo();
ArclightI18nLogger.getLogger("Arclight").info("loading-mapping");
Objects.requireNonNull(ArclightRemapper.INSTANCE);
this.beforeStart();
ServerMain.main(args);
} catch (Exception e) {
e.printStackTrace();
@ -42,8 +44,8 @@ public class Main {
}
}
private static void printLogo() throws Exception {
try (InputStream stream = Main.class.getResourceAsStream("/META-INF/MANIFEST.MF")) {
private void printLogo() throws Exception {
try (InputStream stream = getClass().getResourceAsStream("/META-INF/MANIFEST.MF")) {
Manifest manifest = new Manifest(stream);
Attributes attributes = manifest.getMainAttributes();
String version = attributes.getValue(Attributes.Name.IMPLEMENTATION_VERSION);
@ -51,4 +53,10 @@ public class Main {
ArclightI18nLogger.getLogger("Arclight").info("logo", version, buildTime);
}
}
protected void afterSetup() throws Throwable {
}
protected void beforeStart() throws Throwable {
}
}

View File

@ -453,6 +453,10 @@ public abstract class PlayerEntityMixin extends LivingEntityMixin implements Pla
}).orElse(true);
}
public CraftHumanEntity getBukkitEntity() {
return (CraftHumanEntity) ((InternalEntityBridge) this).internal$getBukkitEntity();
}
@Override
public CraftHumanEntity bridge$getBukkitEntity() {
return (CraftHumanEntity) ((InternalEntityBridge) this).internal$getBukkitEntity();

View File

@ -5,9 +5,14 @@ import com.mojang.authlib.GameProfile;
import io.izzel.arclight.api.ArclightVersion;
import io.izzel.arclight.common.bridge.entity.player.PlayerEntityBridge;
import io.izzel.arclight.common.bridge.entity.player.ServerPlayerEntityBridge;
import io.izzel.arclight.common.bridge.network.NetworkManagerBridge;
import io.izzel.arclight.common.bridge.network.login.ServerLoginNetHandlerBridge;
import io.izzel.arclight.common.bridge.network.play.ServerPlayNetHandlerBridge;
import io.izzel.arclight.common.bridge.server.MinecraftServerBridge;
import io.izzel.arclight.common.bridge.server.management.PlayerListBridge;
import io.izzel.arclight.common.bridge.world.WorldBridge;
import io.izzel.arclight.common.bridge.world.dimension.DimensionTypeBridge;
import io.izzel.arclight.common.mod.ArclightMod;
import io.izzel.arclight.common.mod.server.BukkitRegistry;
import io.izzel.arclight.common.mod.util.ArclightCaptures;
import net.minecraft.entity.player.PlayerEntity;
@ -18,7 +23,6 @@ import net.minecraft.network.login.ServerLoginNetHandler;
import net.minecraft.network.play.server.SChangeGameStatePacket;
import net.minecraft.network.play.server.SChatPacket;
import net.minecraft.network.play.server.SEntityStatusPacket;
import net.minecraft.network.play.server.SRespawnPacket;
import net.minecraft.network.play.server.SServerDifficultyPacket;
import net.minecraft.network.play.server.SSetExperiencePacket;
import net.minecraft.network.play.server.SSpawnPositionPacket;
@ -70,10 +74,7 @@ import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.Redirect;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
import io.izzel.arclight.common.mod.ArclightMod;
import io.izzel.arclight.common.mod.util.ArclightCaptures;
import javax.annotation.Nullable;
import java.io.File;
import java.net.InetAddress;
import java.net.InetSocketAddress;

View File

@ -36,11 +36,9 @@ public abstract class PlayerEntityMixin_1_15 extends LivingEntityMixin_1_15 impl
@Shadow public abstract void startSleeping(BlockPos p_213342_1_);
@Shadow public int sleepTimer;
@Shadow @Final public PlayerAbilities abilities;
@Shadow public abstract void addStat(ResourceLocation stat);
// @formatter:on
@Shadow
public abstract void addStat(ResourceLocation stat);
@Override
public CraftHumanEntity bridge$getBukkitEntity() {
return (CraftHumanEntity) ((InternalEntityBridge) this).internal$getBukkitEntity();

View File

@ -2,9 +2,7 @@ package io.izzel.arclight.common.mod;
import cpw.mods.modlauncher.api.ITransformingClassLoader;
import io.izzel.arclight.api.ArclightVersion;
import cpw.mods.modlauncher.api.ITransformingClassLoader;
import io.izzel.arclight.common.mod.util.log.ArclightI18nLogger;
import io.izzel.arclight.i18n.ArclightConfig;
import org.apache.logging.log4j.Logger;
import org.spongepowered.asm.mixin.Mixins;
import org.spongepowered.asm.mixin.connect.IMixinConnector;
@ -15,7 +13,8 @@ import java.util.List;
public class ArclightConnector implements IMixinConnector {
public static final Logger LOGGER = ArclightI18nLogger.getLogger("Arclight");
private static final List<String> FILTER_PACKAGE = Arrays.asList("com.google.common", "com.google.gson", "ninja.leaping.configurate", "io.izzel.arclight.api");
private static final List<String> FILTER_PACKAGE = Arrays.asList("com.google.common", "com.google.gson", "ninja.leaping.configurate",
"io.izzel.arclight.api", "io.izzel.arclight.i18n");
@Override
public void connect() {

View File

@ -68,7 +68,6 @@ def embedLibs = ['org.spongepowered:mixin:0.8', 'org.ow2.asm:asm-util:6.2',
dependencies {
minecraft "net.minecraftforge:forge:$minecraftVersion-$forgeVersion"
compile group: 'org.jetbrains', name: 'annotations', version: '19.0.0'
compile project(':arclight-common')
compile(project(':arclight-common')) {
exclude module: 'forge'
}
@ -98,7 +97,7 @@ processResources {
jar {
manifest.attributes 'MixinConnector': 'io.izzel.arclight.impl.ArclightConnector_1_14'
manifest.attributes 'Main-Class': 'io.izzel.arclight.server.Main'
manifest.attributes 'Main-Class': 'io.izzel.arclight.server.Main_1_14'
manifest.attributes 'Implementation-Title': 'Arclight'
manifest.attributes 'Implementation-Version': "arclight-$minecraftVersion-${project.version}-${getGitHash()}"
manifest.attributes 'Implementation-Vendor': 'Arclight Team'

View File

@ -1,9 +1,10 @@
package io.izzel.arclight.impl;
import io.izzel.arclight.common.mod.ArclightConfig;
import io.izzel.arclight.common.mod.ArclightConnector;
import io.izzel.arclight.i18n.ArclightConfig;
import org.spongepowered.asm.mixin.Mixins;
@SuppressWarnings("unused")
public class ArclightConnector_1_14 extends ArclightConnector {
@Override
@ -11,9 +12,9 @@ public class ArclightConnector_1_14 extends ArclightConnector {
super.connect();
Mixins.addConfiguration("mixins.arclight.impl.core.1_14.json");
Mixins.addConfiguration("mixins.arclight.optimization.1_14.json");
if (ArclightConfig.INSTANCE.optimizations.removeStreams) {
if (ArclightConfig.spec().getOptimization().isRemoveStream()) {
Mixins.addConfiguration("mixins.arclight.optimization.stream.1_14.json");
}
LOGGER.info("Arclight optimization mixin added.");
LOGGER.info("mixin-load.optimization");
}
}

View File

@ -0,0 +1,18 @@
package io.izzel.arclight.server;
import io.izzel.arclight.api.ArclightVersion;
import io.izzel.arclight.common.ArclightMain;
import io.izzel.arclight.forgeinstaller.ForgeInstaller;
public class Main_1_14 extends ArclightMain {
public static void main(String[] args) throws Throwable {
new Main_1_14().run(args);
}
@Override
protected void afterSetup() throws Throwable {
ArclightVersion.setVersion(ArclightVersion.v1_14);
ForgeInstaller.install();
}
}

View File

@ -71,6 +71,7 @@ dependencies {
compile(project(':arclight-common')) {
exclude module: 'forge'
}
embed project(':i18n-config')
embed project(':forge-installer')
for (def lib : embedLibs) {
arclight lib
@ -96,10 +97,11 @@ processResources {
jar {
manifest.attributes 'MixinConnector': 'io.izzel.arclight.impl.ArclightConnector_1_15'
manifest.attributes 'Main-Class': 'io.izzel.arclight.server.Main'
manifest.attributes 'Main-Class': 'io.izzel.arclight.server.Main_1_15'
manifest.attributes 'Implementation-Title': 'Arclight'
manifest.attributes 'Implementation-Version': "arclight-${project.version}-${getGitHash()}"
manifest.attributes 'Implementation-Version': "arclight-$minecraftVersion-${project.version}-${getGitHash()}"
manifest.attributes 'Implementation-Vendor': 'Arclight Team'
manifest.attributes 'Implementation-Timestamp': new Date().format("yyyy-MM-dd HH:mm:ss")
from(configurations.embed.collect { it.isDirectory() ? it : zipTree(it) }) {
exclude "META-INF/MANIFEST.MF"
exclude "META-INF/*.SF"

View File

@ -2,6 +2,7 @@ package io.izzel.arclight.impl;
import io.izzel.arclight.common.mod.ArclightConnector;
@SuppressWarnings("unused")
public class ArclightConnector_1_15 extends ArclightConnector {
@Override
@ -13,6 +14,6 @@ public class ArclightConnector_1_15 extends ArclightConnector {
if (ArclightConfig.INSTANCE.optimizations.removeStreams) {
Mixins.addConfiguration("mixins.arclight.optimization.stream.1_14.json");
}*/
LOGGER.info("Arclight optimization mixin added.");
// LOGGER.info("Arclight optimization mixin added.");
}
}

View File

@ -1,40 +0,0 @@
package io.izzel.arclight.server;
import io.izzel.arclight.api.ArclightVersion;
import io.izzel.arclight.api.EnumHelper;
import io.izzel.arclight.api.Unsafe;
import io.izzel.arclight.common.mod.util.remapper.ArclightRemapper;
import io.izzel.arclight.forgeinstaller.ForgeInstaller;
import net.minecraftforge.server.ServerMain;
import org.apache.logging.log4j.LogManager;
import java.util.Objects;
public class Main {
public static void main(String[] args) throws Throwable {
ForgeInstaller.install();
try { // Java 9 & Java 兼容性
int javaVersion = (int) Float.parseFloat(System.getProperty("java.class.version"));
if (javaVersion == 53) {
throw new Exception("Only Java 8 and Java 10+ is supported.");
}
Unsafe.ensureClassInitialized(EnumHelper.class);
} catch (Throwable t) {
System.err.println("Your Java is not compatible with Arclight.");
t.printStackTrace();
return;
}
try {
System.setProperty("java.util.logging.manager", "org.apache.logging.log4j.jul.LogManager");
System.setProperty("log4j.jul.LoggerAdapter", "io.izzel.arclight.common.mod.util.ArclightLoggerAdapter");
ArclightVersion.setVersion(ArclightVersion.v1_15);
LogManager.getLogger("Arclight").info("Loading mappings ...");
Objects.requireNonNull(ArclightRemapper.INSTANCE);
ServerMain.main(args);
} catch (Exception e) {
e.printStackTrace();
System.err.println("Fail to launch Arclight.");
}
}
}

View File

@ -0,0 +1,18 @@
package io.izzel.arclight.server;
import io.izzel.arclight.api.ArclightVersion;
import io.izzel.arclight.common.ArclightMain;
import io.izzel.arclight.forgeinstaller.ForgeInstaller;
public class Main_1_15 extends ArclightMain {
public static void main(String[] args) throws Throwable {
new Main_1_15().run(args);
}
@Override
protected void afterSetup() throws Throwable {
ArclightVersion.setVersion(ArclightVersion.v1_15);
ForgeInstaller.install();
}
}