From 6ba2976f02e16e49d3370c8ff54afcb56153dfec Mon Sep 17 00:00:00 2001 From: IzzelAliz Date: Tue, 9 Jun 2020 14:22:17 +0800 Subject: [PATCH] Initial 1.15 version. --- .../izzel/arclight/common/ArclightMain.java | 26 +++++++----- .../core/entity/player/PlayerEntityMixin.java | 4 ++ .../server/management/PlayerListMixin.java | 9 +++-- .../entity/player/PlayerEntityMixin_1_15.java | 4 +- .../common/mod/ArclightConnector.java | 5 +-- arclight-forge-1.14/build.gradle | 3 +- .../arclight/impl/ArclightConnector_1_14.java | 7 ++-- .../io/izzel/arclight/server/Main_1_14.java | 18 +++++++++ arclight-forge-1.15/build.gradle | 6 ++- .../arclight/impl/ArclightConnector_1_15.java | 3 +- .../java/io/izzel/arclight/server/Main.java | 40 ------------------- .../io/izzel/arclight/server/Main_1_15.java | 18 +++++++++ 12 files changed, 76 insertions(+), 67 deletions(-) rename arclight-forge-1.14/src/main/java/io/izzel/arclight/server/Main.java => arclight-common/src/main/java/io/izzel/arclight/common/ArclightMain.java (75%) create mode 100644 arclight-forge-1.14/src/main/java/io/izzel/arclight/server/Main_1_14.java delete mode 100644 arclight-forge-1.15/src/main/java/io/izzel/arclight/server/Main.java create mode 100644 arclight-forge-1.15/src/main/java/io/izzel/arclight/server/Main_1_15.java diff --git a/arclight-forge-1.14/src/main/java/io/izzel/arclight/server/Main.java b/arclight-common/src/main/java/io/izzel/arclight/common/ArclightMain.java similarity index 75% rename from arclight-forge-1.14/src/main/java/io/izzel/arclight/server/Main.java rename to arclight-common/src/main/java/io/izzel/arclight/common/ArclightMain.java index 4428dde3..bd999a43 100644 --- a/arclight-forge-1.14/src/main/java/io/izzel/arclight/server/Main.java +++ b/arclight-common/src/main/java/io/izzel/arclight/common/ArclightMain.java @@ -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 { + } } diff --git a/arclight-common/src/main/java/io/izzel/arclight/common/mixin/core/entity/player/PlayerEntityMixin.java b/arclight-common/src/main/java/io/izzel/arclight/common/mixin/core/entity/player/PlayerEntityMixin.java index 6001d774..2d866e46 100644 --- a/arclight-common/src/main/java/io/izzel/arclight/common/mixin/core/entity/player/PlayerEntityMixin.java +++ b/arclight-common/src/main/java/io/izzel/arclight/common/mixin/core/entity/player/PlayerEntityMixin.java @@ -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(); diff --git a/arclight-common/src/main/java/io/izzel/arclight/common/mixin/core/server/management/PlayerListMixin.java b/arclight-common/src/main/java/io/izzel/arclight/common/mixin/core/server/management/PlayerListMixin.java index f86c3a73..b5e25980 100644 --- a/arclight-common/src/main/java/io/izzel/arclight/common/mixin/core/server/management/PlayerListMixin.java +++ b/arclight-common/src/main/java/io/izzel/arclight/common/mixin/core/server/management/PlayerListMixin.java @@ -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; diff --git a/arclight-common/src/main/java/io/izzel/arclight/common/mixin/v1_15/entity/player/PlayerEntityMixin_1_15.java b/arclight-common/src/main/java/io/izzel/arclight/common/mixin/v1_15/entity/player/PlayerEntityMixin_1_15.java index 9662ee57..6957827b 100644 --- a/arclight-common/src/main/java/io/izzel/arclight/common/mixin/v1_15/entity/player/PlayerEntityMixin_1_15.java +++ b/arclight-common/src/main/java/io/izzel/arclight/common/mixin/v1_15/entity/player/PlayerEntityMixin_1_15.java @@ -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(); diff --git a/arclight-common/src/main/java/io/izzel/arclight/common/mod/ArclightConnector.java b/arclight-common/src/main/java/io/izzel/arclight/common/mod/ArclightConnector.java index fc1439b4..39a14777 100644 --- a/arclight-common/src/main/java/io/izzel/arclight/common/mod/ArclightConnector.java +++ b/arclight-common/src/main/java/io/izzel/arclight/common/mod/ArclightConnector.java @@ -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 FILTER_PACKAGE = Arrays.asList("com.google.common", "com.google.gson", "ninja.leaping.configurate", "io.izzel.arclight.api"); + private static final List 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() { diff --git a/arclight-forge-1.14/build.gradle b/arclight-forge-1.14/build.gradle index 4b1a9322..4a19892a 100644 --- a/arclight-forge-1.14/build.gradle +++ b/arclight-forge-1.14/build.gradle @@ -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' diff --git a/arclight-forge-1.14/src/main/java/io/izzel/arclight/impl/ArclightConnector_1_14.java b/arclight-forge-1.14/src/main/java/io/izzel/arclight/impl/ArclightConnector_1_14.java index f40594eb..22440c70 100644 --- a/arclight-forge-1.14/src/main/java/io/izzel/arclight/impl/ArclightConnector_1_14.java +++ b/arclight-forge-1.14/src/main/java/io/izzel/arclight/impl/ArclightConnector_1_14.java @@ -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"); } } diff --git a/arclight-forge-1.14/src/main/java/io/izzel/arclight/server/Main_1_14.java b/arclight-forge-1.14/src/main/java/io/izzel/arclight/server/Main_1_14.java new file mode 100644 index 00000000..4a73654d --- /dev/null +++ b/arclight-forge-1.14/src/main/java/io/izzel/arclight/server/Main_1_14.java @@ -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(); + } +} diff --git a/arclight-forge-1.15/build.gradle b/arclight-forge-1.15/build.gradle index 5dcc6b26..26e44d35 100644 --- a/arclight-forge-1.15/build.gradle +++ b/arclight-forge-1.15/build.gradle @@ -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" diff --git a/arclight-forge-1.15/src/main/java/io/izzel/arclight/impl/ArclightConnector_1_15.java b/arclight-forge-1.15/src/main/java/io/izzel/arclight/impl/ArclightConnector_1_15.java index 3a812337..e0ba2341 100644 --- a/arclight-forge-1.15/src/main/java/io/izzel/arclight/impl/ArclightConnector_1_15.java +++ b/arclight-forge-1.15/src/main/java/io/izzel/arclight/impl/ArclightConnector_1_15.java @@ -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."); } } diff --git a/arclight-forge-1.15/src/main/java/io/izzel/arclight/server/Main.java b/arclight-forge-1.15/src/main/java/io/izzel/arclight/server/Main.java deleted file mode 100644 index 504ad251..00000000 --- a/arclight-forge-1.15/src/main/java/io/izzel/arclight/server/Main.java +++ /dev/null @@ -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."); - } - } -} diff --git a/arclight-forge-1.15/src/main/java/io/izzel/arclight/server/Main_1_15.java b/arclight-forge-1.15/src/main/java/io/izzel/arclight/server/Main_1_15.java new file mode 100644 index 00000000..0e31f35e --- /dev/null +++ b/arclight-forge-1.15/src/main/java/io/izzel/arclight/server/Main_1_15.java @@ -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(); + } +}