From c5a43fd480a3f5adcc0f789274414653fea60c03 Mon Sep 17 00:00:00 2001 From: Joseph Tarbit Date: Sat, 5 Mar 2022 16:54:32 +0000 Subject: [PATCH] Update to 1.18.2 (#510) Update dependencies and upstream --- README.md | 2 +- arclight-common/build.gradle | 7 +-- .../common/mixin/bukkit/CraftBlockMixin.java | 16 ++---- .../synchronization/ArgumentTypesMixin.java | 2 +- .../network/ServerLoginNetHandlerMixin.java | 2 +- .../network/ServerPlayNetHandlerMixin.java | 2 +- .../protocol/PacketThreadUtilMixin.java | 2 +- .../core/server/MinecraftServerMixin.java | 50 ++++++++++++------- .../{MainMixin.java => WorldStemMixin.java} | 8 +-- .../core/server/level/ServerLevelMixin.java | 9 ++-- .../server/management/PlayerListMixin.java | 6 +-- .../mixin/core/world/entity/EntityMixin.java | 3 +- .../core/world/entity/LivingEntityMixin.java | 1 - .../mixin/core/world/entity/MobMixin.java | 2 +- .../boss/enderdragon/EnderDragonMixin.java | 3 +- .../phases/EnderDragonPhaseManagerMixin.java | 2 +- .../entity/item/FallingBlockEntityMixin.java | 8 +++ .../entity/player/ServerPlayerMixin.java | 6 +-- .../inventory/EnchantmentContainerMixin.java | 20 ++------ .../item/crafting/RecipeManagerMixin.java | 6 +-- .../FrostWalkerEnchantmentMixin.java | 2 +- .../mixin/core/world/level/LevelMixin.java | 9 ++-- .../level/storage/loot/LootTableMixin.java | 2 +- .../spawner/WorldEntitySpawnerMixin.java | 3 +- .../core/world/storage/PlayerDataMixin.java | 2 +- .../common/mod/server/BukkitRegistry.java | 5 +- .../resources/META-INF/accesstransformer.cfg | 5 ++ .../main/resources/mixins.arclight.core.json | 2 +- arclight-forge/build.gradle | 8 +-- .../arclight/boot/AbstractBootstrap.java | 2 +- build.gradle | 8 +-- .../forgeinstaller/ForgeInstaller.java | 2 +- 32 files changed, 107 insertions(+), 100 deletions(-) rename arclight-common/src/main/java/io/izzel/arclight/common/mixin/core/server/{MainMixin.java => WorldStemMixin.java} (86%) diff --git a/README.md b/README.md index 317c5f0f..a417f970 100644 --- a/README.md +++ b/README.md @@ -6,7 +6,7 @@ A Bukkit server implementation utilizing Mixin. | Minecraft | Forge | Status | Build | | :----: |:-------:| :---: | :---: | -| 1.18.x | 39.1.2 | ACTIVE | [![1.18 Status](https://img.shields.io/appveyor/build/IzzelAliz/arclight-18?style=flat-square)](https://ci.appveyor.com/project/IzzelAliz/arclight-18) | +| 1.18.x | 40.0.12 | ACTIVE | [![1.18 Status](https://img.shields.io/appveyor/build/IzzelAliz/arclight-18?style=flat-square)](https://ci.appveyor.com/project/IzzelAliz/arclight-18) | | 1.17.x | 37.1.0 | [LEGACY](https://github.com/IzzelAliz/Arclight/releases/tag/1.17/1.0.2) | [![1.17 Status](https://img.shields.io/appveyor/build/IzzelAliz/arclight-17?style=flat-square)](https://ci.appveyor.com/project/IzzelAliz/arclight-17) | | 1.16.x | 36.2.26 | ACTIVE | [![1.16 Status](https://img.shields.io/appveyor/build/IzzelAliz/arclight-16?style=flat-square)](https://ci.appveyor.com/project/IzzelAliz/arclight-16) | | 1.15.x | 31.2.48 | [LEGACY](https://github.com/IzzelAliz/Arclight/releases/tag/1.15/1.0.19) | [![1.15 Status](https://img.shields.io/appveyor/build/IzzelAliz/arclight-15?style=flat-square)](https://ci.appveyor.com/project/IzzelAliz/arclight-15) | diff --git a/arclight-common/build.gradle b/arclight-common/build.gradle index 99804e08..8f449116 100644 --- a/arclight-common/build.gradle +++ b/arclight-common/build.gradle @@ -24,7 +24,7 @@ apply plugin: 'io.izzel.arclight' arclight { mcVersion = minecraftVersion forgeVersion = project.ext.forgeVersion - bukkitVersion = 'v1_18_R1' + bukkitVersion = 'v1_18_R2' wipeVersion = true reobfVersion = true accessTransformer = project.file('bukkit.at') @@ -50,12 +50,13 @@ repositories { maven { url = 'https://files.minecraftforge.net/maven/' } maven { url = 'https://jitpack.io/' } maven { url = 'https://maven.izzel.io/releases' } + mavenCentral() } dependencies { minecraft "net.minecraftforge:forge:$minecraftVersion-$forgeVersion" implementation "org.spigotmc:spigot-api:$minecraftVersion-R0.1-SNAPSHOT@jar" - implementation 'org.jetbrains:annotations:22.0.0' + implementation 'org.jetbrains:annotations:23.0.0' implementation "org.spongepowered:mixin:$mixinVersion" annotationProcessor 'org.spongepowered:mixin:0.8.3:processor' @@ -68,7 +69,7 @@ dependencies { implementation 'org.apache.logging.log4j:log4j-jul:2.15.0' implementation 'net.md-5:bungeecord-chat:1.16-R0.4' implementation 'mysql:mysql-connector-java:5.1.49' - implementation 'org.yaml:snakeyaml:1.27' + implementation 'org.yaml:snakeyaml:1.30' implementation "io.izzel:tools:$toolsVersion" implementation "io.izzel.arclight:arclight-api:$apiVersion" implementation project(':i18n-config') diff --git a/arclight-common/src/main/java/io/izzel/arclight/common/mixin/bukkit/CraftBlockMixin.java b/arclight-common/src/main/java/io/izzel/arclight/common/mixin/bukkit/CraftBlockMixin.java index bbc4bf24..67e46df7 100644 --- a/arclight-common/src/main/java/io/izzel/arclight/common/mixin/bukkit/CraftBlockMixin.java +++ b/arclight-common/src/main/java/io/izzel/arclight/common/mixin/bukkit/CraftBlockMixin.java @@ -2,13 +2,12 @@ package io.izzel.arclight.common.mixin.bukkit; import io.izzel.arclight.common.bridge.bukkit.MaterialBridge; import io.izzel.arclight.common.mod.util.ResourceLocationUtil; +import net.minecraft.core.Holder; import net.minecraft.core.Registry; -import net.minecraftforge.registries.ForgeRegistries; import org.bukkit.Material; import org.bukkit.block.Biome; import org.bukkit.block.BlockState; import org.bukkit.craftbukkit.v.block.CraftBlock; -import org.bukkit.craftbukkit.v.util.CraftNamespacedKey; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Overwrite; import org.spongepowered.asm.mixin.Shadow; @@ -36,16 +35,7 @@ public abstract class CraftBlockMixin { * @reason */ @Overwrite - public static Biome biomeBaseToBiome(Registry registry, net.minecraft.world.level.biome.Biome base) { - return Biome.valueOf(ResourceLocationUtil.standardize(base.getRegistryName())); - } - - /** - * @author IzzelAliz - * @reason - */ - @Overwrite - public static net.minecraft.world.level.biome.Biome biomeToBiomeBase(Registry registry, Biome bio) { - return ForgeRegistries.BIOMES.getValue(CraftNamespacedKey.toMinecraft(bio.getKey())); + public static Biome biomeBaseToBiome(Registry registry, Holder base) { + return Biome.valueOf(ResourceLocationUtil.standardize(base.value().getRegistryName())); } } diff --git a/arclight-common/src/main/java/io/izzel/arclight/common/mixin/core/commands/synchronization/ArgumentTypesMixin.java b/arclight-common/src/main/java/io/izzel/arclight/common/mixin/core/commands/synchronization/ArgumentTypesMixin.java index de827365..3f580872 100644 --- a/arclight-common/src/main/java/io/izzel/arclight/common/mixin/core/commands/synchronization/ArgumentTypesMixin.java +++ b/arclight-common/src/main/java/io/izzel/arclight/common/mixin/core/commands/synchronization/ArgumentTypesMixin.java @@ -5,7 +5,7 @@ import io.netty.buffer.Unpooled; import net.minecraft.commands.synchronization.ArgumentTypes; import net.minecraft.network.FriendlyByteBuf; import net.minecraft.resources.ResourceLocation; -import org.apache.logging.log4j.Logger; +import org.slf4j.Logger; import org.spigotmc.SpigotConfig; import org.spongepowered.asm.mixin.Final; import org.spongepowered.asm.mixin.Mixin; diff --git a/arclight-common/src/main/java/io/izzel/arclight/common/mixin/core/network/ServerLoginNetHandlerMixin.java b/arclight-common/src/main/java/io/izzel/arclight/common/mixin/core/network/ServerLoginNetHandlerMixin.java index 17bbf753..4f8daab7 100644 --- a/arclight-common/src/main/java/io/izzel/arclight/common/mixin/core/network/ServerLoginNetHandlerMixin.java +++ b/arclight-common/src/main/java/io/izzel/arclight/common/mixin/core/network/ServerLoginNetHandlerMixin.java @@ -26,12 +26,12 @@ import net.minecraft.util.CryptException; import net.minecraft.world.entity.player.Player; import net.minecraftforge.fml.util.thread.SidedThreadGroups; import org.apache.commons.lang3.Validate; -import org.apache.logging.log4j.Logger; import org.bukkit.Bukkit; import org.bukkit.craftbukkit.v.CraftServer; import org.bukkit.craftbukkit.v.util.Waitable; import org.bukkit.event.player.AsyncPlayerPreLoginEvent; import org.bukkit.event.player.PlayerPreLoginEvent; +import org.slf4j.Logger; import org.spongepowered.asm.mixin.Final; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Overwrite; diff --git a/arclight-common/src/main/java/io/izzel/arclight/common/mixin/core/network/ServerPlayNetHandlerMixin.java b/arclight-common/src/main/java/io/izzel/arclight/common/mixin/core/network/ServerPlayNetHandlerMixin.java index 4e7ad3d4..f61ba95d 100644 --- a/arclight-common/src/main/java/io/izzel/arclight/common/mixin/core/network/ServerPlayNetHandlerMixin.java +++ b/arclight-common/src/main/java/io/izzel/arclight/common/mixin/core/network/ServerPlayNetHandlerMixin.java @@ -71,7 +71,7 @@ import net.minecraft.world.phys.HitResult; import net.minecraft.world.phys.Vec3; import net.minecraftforge.common.ForgeHooks; import org.apache.commons.lang3.StringUtils; -import org.apache.logging.log4j.Logger; +import org.slf4j.Logger; import org.bukkit.Bukkit; import org.bukkit.ChatColor; import org.bukkit.Location; diff --git a/arclight-common/src/main/java/io/izzel/arclight/common/mixin/core/network/protocol/PacketThreadUtilMixin.java b/arclight-common/src/main/java/io/izzel/arclight/common/mixin/core/network/protocol/PacketThreadUtilMixin.java index dcdd71d1..a32ba002 100644 --- a/arclight-common/src/main/java/io/izzel/arclight/common/mixin/core/network/protocol/PacketThreadUtilMixin.java +++ b/arclight-common/src/main/java/io/izzel/arclight/common/mixin/core/network/protocol/PacketThreadUtilMixin.java @@ -8,7 +8,7 @@ import net.minecraft.network.protocol.PacketUtils; import net.minecraft.server.RunningOnDifferentThreadException; import net.minecraft.server.network.ServerGamePacketListenerImpl; import net.minecraft.util.thread.BlockableEventLoop; -import org.apache.logging.log4j.Logger; +import org.slf4j.Logger; import org.bukkit.Bukkit; import org.bukkit.craftbukkit.v.CraftServer; import org.spongepowered.asm.mixin.Final; diff --git a/arclight-common/src/main/java/io/izzel/arclight/common/mixin/core/server/MinecraftServerMixin.java b/arclight-common/src/main/java/io/izzel/arclight/common/mixin/core/server/MinecraftServerMixin.java index db008687..353314b2 100644 --- a/arclight-common/src/main/java/io/izzel/arclight/common/mixin/core/server/MinecraftServerMixin.java +++ b/arclight-common/src/main/java/io/izzel/arclight/common/mixin/core/server/MinecraftServerMixin.java @@ -4,6 +4,7 @@ import com.google.common.collect.ImmutableList; import com.mojang.authlib.GameProfileRepository; import com.mojang.authlib.minecraft.MinecraftSessionService; import com.mojang.datafixers.DataFixer; +import com.mojang.serialization.DynamicOps; import io.izzel.arclight.common.bridge.core.command.ICommandSourceBridge; import io.izzel.arclight.common.bridge.core.server.MinecraftServerBridge; import io.izzel.arclight.common.bridge.core.world.WorldBridge; @@ -28,19 +29,23 @@ import net.minecraft.nbt.Tag; import net.minecraft.network.chat.TextComponent; import net.minecraft.network.protocol.status.ServerStatus; import net.minecraft.obfuscate.DontObfuscate; -import net.minecraft.resources.RegistryReadOps; +import net.minecraft.resources.RegistryOps; import net.minecraft.resources.ResourceKey; import net.minecraft.server.MinecraftServer; +import net.minecraft.server.ReloadableServerResources; import net.minecraft.server.ServerFunctionManager; -import net.minecraft.server.ServerResources; import net.minecraft.server.TickTask; +import net.minecraft.server.WorldStem; import net.minecraft.server.level.ServerChunkCache; import net.minecraft.server.level.ServerLevel; import net.minecraft.server.level.TicketType; import net.minecraft.server.level.progress.ChunkProgressListener; import net.minecraft.server.level.progress.ChunkProgressListenerFactory; +import net.minecraft.server.packs.PackType; import net.minecraft.server.packs.repository.Pack; import net.minecraft.server.packs.repository.PackRepository; +import net.minecraft.server.packs.resources.CloseableResourceManager; +import net.minecraft.server.packs.resources.MultiPackResourceManager; import net.minecraft.server.players.GameProfileCache; import net.minecraft.server.players.PlayerList; import net.minecraft.util.Unit; @@ -58,10 +63,8 @@ import net.minecraft.world.level.storage.LevelStorageSource; import net.minecraft.world.level.storage.ServerLevelData; import net.minecraft.world.level.storage.WorldData; import net.minecraftforge.common.MinecraftForge; -import net.minecraftforge.common.world.StructureSpawnManager; import net.minecraftforge.internal.BrandingControl; import net.minecraftforge.server.ServerLifecycleHooks; -import org.apache.logging.log4j.Logger; import org.bukkit.Bukkit; import org.bukkit.command.CommandSender; import org.bukkit.command.ConsoleCommandSender; @@ -72,6 +75,7 @@ import org.bukkit.event.server.ServerLoadEvent; import org.bukkit.event.world.WorldInitEvent; import org.bukkit.event.world.WorldLoadEvent; import org.bukkit.plugin.PluginLoadOrder; +import org.slf4j.Logger; import org.spigotmc.WatchdogThread; import org.spongepowered.asm.mixin.Final; import org.spongepowered.asm.mixin.Mixin; @@ -140,11 +144,11 @@ public abstract class MinecraftServerMixin extends ReentrantBlockableEventLoop registryreadops; + public DynamicOps registryreadops; private boolean forceTicks; public CraftServer server; public OptionSet options; @@ -186,7 +190,7 @@ public abstract class MinecraftServerMixin extends ReentrantBlockableEventLoop reloadResources(Collection p_129862_) { + RegistryAccess.Frozen registryaccess$frozen = this.registryAccess(); CompletableFuture completablefuture = CompletableFuture.supplyAsync(() -> { return p_129862_.stream().map(this.packRepository::getPack).filter(Objects::nonNull).map(Pack::open).collect(ImmutableList.toImmutableList()); - }, this).thenCompose((p_199990_) -> { - return ServerResources.loadResources(p_199990_, this.registryHolder, this.isDedicatedServer() ? Commands.CommandSelection.DEDICATED : Commands.CommandSelection.INTEGRATED, this.getFunctionCompilationLevel(), this.executor, this); - }).thenAcceptAsync((p_199996_) -> { + }, this).thenCompose((p_212913_) -> { + CloseableResourceManager closeableresourcemanager = new MultiPackResourceManager(PackType.SERVER_DATA, p_212913_); + return ReloadableServerResources.loadResources(closeableresourcemanager, registryaccess$frozen, this.isDedicatedServer() ? Commands.CommandSelection.DEDICATED : Commands.CommandSelection.INTEGRATED, this.getFunctionCompilationLevel(), this.executor, this).whenComplete((p_212907_, p_212908_) -> { + if (p_212908_ != null) { + closeableresourcemanager.close(); + } + + }).thenApply((p_212904_) -> { + return new MinecraftServer.ReloadableResources(closeableresourcemanager, p_212904_); + }); + }).thenAcceptAsync((p_212919_) -> { this.resources.close(); - this.resources = p_199996_; + this.resources= p_212919_; this.server.syncCommands(); this.packRepository.setSelected(p_129862_); this.worldData.setDataPackConfig(getSelectedPacks(this.packRepository)); - p_199996_.updateGlobals(); + this.resources.managers().updateRegistryTags(this.registryAccess()); this.getPlayerList().saveAll(); this.getPlayerList().reloadResources(); - this.functionManager.replaceLibrary(this.resources.getFunctionLibrary()); - this.structureManager.onResourceManagerReload(this.resources.getResourceManager()); + this.functionManager.replaceLibrary(this.resources.managers().getFunctionLibrary()); + this.structureManager.onResourceManagerReload(this.resources.resourceManager()); this.getPlayerList().getPlayers().forEach(this.getPlayerList()::sendPlayerPermissionLevel); //Forge: Fix newly added/modified commands not being sent to the client when commands reload. }, this); if (this.isSameThread()) { diff --git a/arclight-common/src/main/java/io/izzel/arclight/common/mixin/core/server/MainMixin.java b/arclight-common/src/main/java/io/izzel/arclight/common/mixin/core/server/WorldStemMixin.java similarity index 86% rename from arclight-common/src/main/java/io/izzel/arclight/common/mixin/core/server/MainMixin.java rename to arclight-common/src/main/java/io/izzel/arclight/common/mixin/core/server/WorldStemMixin.java index d873b280..c92c4c4e 100644 --- a/arclight-common/src/main/java/io/izzel/arclight/common/mixin/core/server/MainMixin.java +++ b/arclight-common/src/main/java/io/izzel/arclight/common/mixin/core/server/WorldStemMixin.java @@ -1,18 +1,18 @@ package io.izzel.arclight.common.mixin.core.server; import io.izzel.arclight.common.mod.util.ArclightCaptures; -import net.minecraft.server.Main; import net.minecraft.server.MinecraftServer; +import net.minecraft.server.WorldStem; import net.minecraft.server.packs.repository.PackRepository; import net.minecraft.world.level.DataPackConfig; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Redirect; -@Mixin(Main.class) -public class MainMixin { +@Mixin(WorldStem.class) +public class WorldStemMixin { - @Redirect(method = "main", at = @At(value = "INVOKE", target = "Lnet/minecraft/server/MinecraftServer;configurePackRepository(Lnet/minecraft/server/packs/repository/PackRepository;Lnet/minecraft/world/level/DataPackConfig;Z)Lnet/minecraft/world/level/DataPackConfig;")) + @Redirect(method = "load", at = @At(value = "INVOKE", target = "Lnet/minecraft/server/MinecraftServer;configurePackRepository(Lnet/minecraft/server/packs/repository/PackRepository;Lnet/minecraft/world/level/DataPackConfig;Z)Lnet/minecraft/world/level/DataPackConfig;")) private static DataPackConfig arclight$captureDatapackCodec(PackRepository p_240772_0_, DataPackConfig p_240772_1_, boolean p_240772_2_) { DataPackConfig datapackCodec = MinecraftServer.configurePackRepository(p_240772_0_, p_240772_1_, p_240772_2_); ArclightCaptures.captureDatapackConfig(datapackCodec); diff --git a/arclight-common/src/main/java/io/izzel/arclight/common/mixin/core/server/level/ServerLevelMixin.java b/arclight-common/src/main/java/io/izzel/arclight/common/mixin/core/server/level/ServerLevelMixin.java index 36a48753..ba80acd6 100644 --- a/arclight-common/src/main/java/io/izzel/arclight/common/mixin/core/server/level/ServerLevelMixin.java +++ b/arclight-common/src/main/java/io/izzel/arclight/common/mixin/core/server/level/ServerLevelMixin.java @@ -20,6 +20,7 @@ import io.izzel.arclight.common.mod.util.DelegateWorldInfo; import io.izzel.arclight.common.mod.util.DistValidate; import io.izzel.arclight.i18n.ArclightConfig; import net.minecraft.core.BlockPos; +import net.minecraft.core.Holder; import net.minecraft.core.Registry; import net.minecraft.core.particles.ParticleOptions; import net.minecraft.network.protocol.Packet; @@ -119,11 +120,11 @@ public abstract class ServerLevelMixin extends LevelMixin implements ServerWorld return this.typeKey; } - public void arclight$constructor(MinecraftServer server, Executor backgroundExecutor, LevelStorageSource.LevelStorageAccess levelSave, ServerLevelData serverWorldInfo, ResourceKey dimension, DimensionType dimensionType, ChunkProgressListener statusListener, ChunkGenerator chunkGenerator, boolean isDebug, long seed, List specialSpawners, boolean shouldBeTicking) { + public void arclight$constructor(MinecraftServer server, Executor backgroundExecutor, LevelStorageSource.LevelStorageAccess levelSave, ServerLevelData serverWorldInfo, ResourceKey dimension, Holder dimensionType, ChunkProgressListener statusListener, ChunkGenerator chunkGenerator, boolean isDebug, long seed, List specialSpawners, boolean shouldBeTicking) { throw new RuntimeException(); } - public void arclight$constructor(MinecraftServer server, Executor backgroundExecutor, LevelStorageSource.LevelStorageAccess levelSave, ServerLevelData serverWorldInfo, ResourceKey dimension, DimensionType dimensionType, ChunkProgressListener statusListener, ChunkGenerator chunkGenerator, boolean isDebug, long seed, List specialSpawners, boolean shouldBeTicking, org.bukkit.World.Environment env, org.bukkit.generator.ChunkGenerator gen, org.bukkit.generator.BiomeProvider biomeProvider) { + public void arclight$constructor(MinecraftServer server, Executor backgroundExecutor, LevelStorageSource.LevelStorageAccess levelSave, ServerLevelData serverWorldInfo, ResourceKey dimension, Holder dimensionType, ChunkProgressListener statusListener, ChunkGenerator chunkGenerator, boolean isDebug, long seed, List specialSpawners, boolean shouldBeTicking, org.bukkit.World.Environment env, org.bukkit.generator.ChunkGenerator gen, org.bukkit.generator.BiomeProvider biomeProvider) { arclight$constructor(server, backgroundExecutor, levelSave, serverWorldInfo, dimension, dimensionType, statusListener, chunkGenerator, isDebug, seed, specialSpawners, shouldBeTicking); this.generator = gen; this.environment = env; @@ -135,8 +136,8 @@ public abstract class ServerLevelMixin extends LevelMixin implements ServerWorld bridge$getWorld(); } - @Inject(method = "(Lnet/minecraft/server/MinecraftServer;Ljava/util/concurrent/Executor;Lnet/minecraft/world/level/storage/LevelStorageSource$LevelStorageAccess;Lnet/minecraft/world/level/storage/ServerLevelData;Lnet/minecraft/resources/ResourceKey;Lnet/minecraft/world/level/dimension/DimensionType;Lnet/minecraft/server/level/progress/ChunkProgressListener;Lnet/minecraft/world/level/chunk/ChunkGenerator;ZJLjava/util/List;Z)V", at = @At("RETURN")) - private void arclight$init(MinecraftServer minecraftServer, Executor backgroundExecutor, LevelStorageSource.LevelStorageAccess levelSave, ServerLevelData worldInfo, ResourceKey dimension, DimensionType dimensionType, ChunkProgressListener statusListener, ChunkGenerator chunkGenerator, boolean isDebug, long seed, List specialSpawners, boolean shouldBeTicking, CallbackInfo ci) { + @Inject(method = "(Lnet/minecraft/server/MinecraftServer;Ljava/util/concurrent/Executor;Lnet/minecraft/world/level/storage/LevelStorageSource$LevelStorageAccess;Lnet/minecraft/world/level/storage/ServerLevelData;Lnet/minecraft/resources/ResourceKey;Lnet/minecraft/core/Holder;Lnet/minecraft/server/level/progress/ChunkProgressListener;Lnet/minecraft/world/level/chunk/ChunkGenerator;ZJLjava/util/List;Z)V", at = @At("RETURN")) + private void arclight$init(MinecraftServer minecraftServer, Executor backgroundExecutor, LevelStorageSource.LevelStorageAccess levelSave, ServerLevelData worldInfo, ResourceKey dimension, Holder dimensionType, ChunkProgressListener statusListener, ChunkGenerator chunkGenerator, boolean isDebug, long seed, List specialSpawners, boolean shouldBeTicking, CallbackInfo ci) { this.pvpMode = minecraftServer.isPvpAllowed(); this.convertable = levelSave; var typeKey = ((LevelStorageSourceBridge.LevelStorageAccessBridge) levelSave).bridge$getTypeKey(); 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 74157200..3050d4b4 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 @@ -134,7 +134,7 @@ public abstract class PlayerListMixin implements PlayerListBridge { } @Inject(method = "", at = @At("RETURN")) - private void arclight$loadServer(MinecraftServer minecraftServer, RegistryAccess.RegistryHolder p_i231425_2_, PlayerDataStorage p_i231425_3_, int p_i231425_4_, CallbackInfo ci) { + private void arclight$loadServer(MinecraftServer minecraftServer, RegistryAccess.Frozen p_i231425_2_, PlayerDataStorage p_i231425_3_, int p_i231425_4_, CallbackInfo ci) { cserver = ArclightServer.createOrLoad((DedicatedServer) minecraftServer, (PlayerList) (Object) this); } @@ -324,7 +324,7 @@ public abstract class PlayerListMixin implements PlayerListBridge { playerIn.setPos(playerIn.getX(), playerIn.getY() + 1.0, playerIn.getZ()); } LevelData worlddata = serverWorld.getLevelData(); - playerIn.connection.send(new ClientboundRespawnPacket(serverWorld.dimensionType(), serverWorld.dimension(), BiomeManager.obfuscateSeed(serverWorld.getSeed()), playerIn.gameMode.getGameModeForPlayer(), playerIn.gameMode.getPreviousGameModeForPlayer(), serverWorld.isDebug(), serverWorld.isFlat(), flag)); + playerIn.connection.send(new ClientboundRespawnPacket(serverWorld.dimensionTypeRegistration(), serverWorld.dimension(), BiomeManager.obfuscateSeed(serverWorld.getSeed()), playerIn.gameMode.getGameModeForPlayer(), playerIn.gameMode.getPreviousGameModeForPlayer(), serverWorld.isDebug(), serverWorld.isFlat(), flag)); playerIn.connection.send(new ClientboundSetChunkCacheRadiusPacket(((WorldBridge) serverWorld).bridge$spigotConfig().viewDistance)); playerIn.connection.send(new ClientboundSetSimulationDistancePacket(((WorldBridge) serverWorld).bridge$spigotConfig().simulationDistance)); playerIn.setLevel(serverWorld); @@ -469,7 +469,7 @@ public abstract class PlayerListMixin implements PlayerListBridge { } LevelData iworldinfo = serverplayerentity.level.getLevelData(); - serverplayerentity.connection.send(new ClientboundRespawnPacket(serverplayerentity.level.dimensionType(), serverplayerentity.level.dimension(), BiomeManager.obfuscateSeed(serverplayerentity.getLevel().getSeed()), serverplayerentity.gameMode.getGameModeForPlayer(), serverplayerentity.gameMode.getPreviousGameModeForPlayer(), serverplayerentity.getLevel().isDebug(), serverplayerentity.getLevel().isFlat(), conqueredEnd)); + serverplayerentity.connection.send(new ClientboundRespawnPacket(serverplayerentity.level.dimensionTypeRegistration(), serverplayerentity.level.dimension(), BiomeManager.obfuscateSeed(serverplayerentity.getLevel().getSeed()), serverplayerentity.gameMode.getGameModeForPlayer(), serverplayerentity.gameMode.getPreviousGameModeForPlayer(), serverplayerentity.getLevel().isDebug(), serverplayerentity.getLevel().isFlat(), conqueredEnd)); serverplayerentity.connection.send(new ClientboundSetChunkCacheRadiusPacket(((WorldBridge) serverWorld).bridge$spigotConfig().viewDistance)); serverplayerentity.connection.send(new ClientboundSetSimulationDistancePacket(((WorldBridge) serverWorld).bridge$spigotConfig().simulationDistance)); serverplayerentity.setLevel(serverWorld); diff --git a/arclight-common/src/main/java/io/izzel/arclight/common/mixin/core/world/entity/EntityMixin.java b/arclight-common/src/main/java/io/izzel/arclight/common/mixin/core/world/entity/EntityMixin.java index 0e56ef79..3d343930 100644 --- a/arclight-common/src/main/java/io/izzel/arclight/common/mixin/core/world/entity/EntityMixin.java +++ b/arclight-common/src/main/java/io/izzel/arclight/common/mixin/core/world/entity/EntityMixin.java @@ -27,6 +27,7 @@ import net.minecraft.server.level.ServerPlayer; import net.minecraft.sounds.SoundEvent; import net.minecraft.tags.FluidTags; import net.minecraft.tags.Tag; +import net.minecraft.tags.TagKey; import net.minecraft.util.Mth; import net.minecraft.world.damagesource.DamageSource; import net.minecraft.world.entity.Entity; @@ -391,7 +392,7 @@ public abstract class EntityMixin implements InternalEntityBridge, EntityBridge, } @Redirect(method = "updateFluidHeightAndDoFluidPushing", at = @At(value = "INVOKE", target = "Lnet/minecraft/world/level/material/FluidState;getFlow(Lnet/minecraft/world/level/BlockGetter;Lnet/minecraft/core/BlockPos;)Lnet/minecraft/world/phys/Vec3;")) - private Vec3 arclight$setLava(FluidState instance, BlockGetter level, BlockPos pos, Tag tag) { + private Vec3 arclight$setLava(FluidState instance, BlockGetter level, BlockPos pos, TagKey tag) { if (tag == FluidTags.LAVA) { lastLavaContact = pos.immutable(); } diff --git a/arclight-common/src/main/java/io/izzel/arclight/common/mixin/core/world/entity/LivingEntityMixin.java b/arclight-common/src/main/java/io/izzel/arclight/common/mixin/core/world/entity/LivingEntityMixin.java index 5edc01bf..15ece004 100644 --- a/arclight-common/src/main/java/io/izzel/arclight/common/mixin/core/world/entity/LivingEntityMixin.java +++ b/arclight-common/src/main/java/io/izzel/arclight/common/mixin/core/world/entity/LivingEntityMixin.java @@ -127,7 +127,6 @@ public abstract class LivingEntityMixin extends EntityMixin implements LivingEnt @Shadow public int hurtTime; @Shadow public float hurtDir; @Shadow public abstract void setLastHurtByMob(@Nullable LivingEntity livingBase); - @Shadow protected abstract void markHurt(); @Shadow @Nullable protected abstract SoundEvent getDeathSound(); @Shadow protected abstract float getSoundVolume(); @Shadow public abstract float getVoicePitch(); diff --git a/arclight-common/src/main/java/io/izzel/arclight/common/mixin/core/world/entity/MobMixin.java b/arclight-common/src/main/java/io/izzel/arclight/common/mixin/core/world/entity/MobMixin.java index 409d01fc..b1298ff5 100644 --- a/arclight-common/src/main/java/io/izzel/arclight/common/mixin/core/world/entity/MobMixin.java +++ b/arclight-common/src/main/java/io/izzel/arclight/common/mixin/core/world/entity/MobMixin.java @@ -119,7 +119,7 @@ public abstract class MobMixin extends LivingEntityMixin implements MobEntityBri reason = (this.getTarget().isAlive() ? EntityTargetEvent.TargetReason.FORGOT_TARGET : EntityTargetEvent.TargetReason.TARGET_DIED); } if (reason == EntityTargetEvent.TargetReason.UNKNOWN) { - ArclightMod.LOGGER.log(Level.WARN, "Unknown target reason setting {} target to {}", this, livingEntity); + ArclightMod.LOGGER.warn("Unknown target reason setting {} target to {}", this, livingEntity); } CraftLivingEntity ctarget = null; if (livingEntity != null) { diff --git a/arclight-common/src/main/java/io/izzel/arclight/common/mixin/core/world/entity/boss/enderdragon/EnderDragonMixin.java b/arclight-common/src/main/java/io/izzel/arclight/common/mixin/core/world/entity/boss/enderdragon/EnderDragonMixin.java index 6e726c27..2822666b 100644 --- a/arclight-common/src/main/java/io/izzel/arclight/common/mixin/core/world/entity/boss/enderdragon/EnderDragonMixin.java +++ b/arclight-common/src/main/java/io/izzel/arclight/common/mixin/core/world/entity/boss/enderdragon/EnderDragonMixin.java @@ -71,9 +71,8 @@ public abstract class EnderDragonMixin extends MobMixin { for (int i3 = k; i3 <= j2; ++i3) { final BlockPos blockposition = new BlockPos(k2, l2, i3); final BlockState iblockdata = this.level.getBlockState(blockposition); - final net.minecraft.world.level.block.Block block = iblockdata.getBlock(); if (!iblockdata.isAir() && iblockdata.getMaterial() != Material.FIRE) { - if (net.minecraftforge.common.ForgeHooks.canEntityDestroy(this.level, blockposition, (EnderDragon) (Object) this) && !BlockTags.DRAGON_IMMUNE.contains(block)) { + if (net.minecraftforge.common.ForgeHooks.canEntityDestroy(this.level, blockposition, (EnderDragon) (Object) this) && !iblockdata.is(BlockTags.DRAGON_IMMUNE)) { flag2 = true; destroyedBlocks.add(CraftBlock.at(this.level, blockposition)); } else { diff --git a/arclight-common/src/main/java/io/izzel/arclight/common/mixin/core/world/entity/boss/enderdragon/phases/EnderDragonPhaseManagerMixin.java b/arclight-common/src/main/java/io/izzel/arclight/common/mixin/core/world/entity/boss/enderdragon/phases/EnderDragonPhaseManagerMixin.java index 0f902463..78adb861 100644 --- a/arclight-common/src/main/java/io/izzel/arclight/common/mixin/core/world/entity/boss/enderdragon/phases/EnderDragonPhaseManagerMixin.java +++ b/arclight-common/src/main/java/io/izzel/arclight/common/mixin/core/world/entity/boss/enderdragon/phases/EnderDragonPhaseManagerMixin.java @@ -5,7 +5,7 @@ import net.minecraft.world.entity.boss.enderdragon.EnderDragon; import net.minecraft.world.entity.boss.enderdragon.phases.DragonPhaseInstance; import net.minecraft.world.entity.boss.enderdragon.phases.EnderDragonPhase; import net.minecraft.world.entity.boss.enderdragon.phases.EnderDragonPhaseManager; -import org.apache.logging.log4j.Logger; +import org.slf4j.Logger; import org.bukkit.Bukkit; import org.bukkit.craftbukkit.v.entity.CraftEnderDragon; import org.bukkit.event.entity.EnderDragonChangePhaseEvent; diff --git a/arclight-common/src/main/java/io/izzel/arclight/common/mixin/core/world/entity/item/FallingBlockEntityMixin.java b/arclight-common/src/main/java/io/izzel/arclight/common/mixin/core/world/entity/item/FallingBlockEntityMixin.java index 6d32a76d..d6f1560c 100644 --- a/arclight-common/src/main/java/io/izzel/arclight/common/mixin/core/world/entity/item/FallingBlockEntityMixin.java +++ b/arclight-common/src/main/java/io/izzel/arclight/common/mixin/core/world/entity/item/FallingBlockEntityMixin.java @@ -4,6 +4,7 @@ import io.izzel.arclight.common.mixin.core.world.entity.EntityMixin; import net.minecraft.core.BlockPos; import net.minecraft.world.damagesource.DamageSource; import net.minecraft.world.entity.item.FallingBlockEntity; +import net.minecraft.world.level.Level; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.state.BlockState; import org.bukkit.craftbukkit.v.event.CraftEventFactory; @@ -36,4 +37,11 @@ public abstract class FallingBlockEntityMixin extends EntityMixin { private void arclight$damageSourceReset(float distance, float damageMultiplier, DamageSource source, CallbackInfoReturnable cir) { CraftEventFactory.entityDamage = null; } + + @Inject(method = "fall", cancellable = true, locals = LocalCapture.CAPTURE_FAILHARD, at = @At(value = "INVOKE", target = "Lnet/minecraft/world/level/Level;setBlock(Lnet/minecraft/core/BlockPos;Lnet/minecraft/world/level/block/state/BlockState;I)Z")) + private static void arclight$entityFall(Level level, BlockPos pos, BlockState state, CallbackInfoReturnable cir, FallingBlockEntity entity) { + if (CraftEventFactory.callEntityChangeBlockEvent(entity, pos, state.getFluidState().createLegacyBlock()).isCancelled()) { + cir.setReturnValue(entity); + } + } } diff --git a/arclight-common/src/main/java/io/izzel/arclight/common/mixin/core/world/entity/player/ServerPlayerMixin.java b/arclight-common/src/main/java/io/izzel/arclight/common/mixin/core/world/entity/player/ServerPlayerMixin.java index 6ad470bb..99284e91 100644 --- a/arclight-common/src/main/java/io/izzel/arclight/common/mixin/core/world/entity/player/ServerPlayerMixin.java +++ b/arclight-common/src/main/java/io/izzel/arclight/common/mixin/core/world/entity/player/ServerPlayerMixin.java @@ -80,7 +80,7 @@ import net.minecraftforge.common.ForgeHooks; import net.minecraftforge.common.util.ITeleporter; import net.minecraftforge.event.ForgeEventFactory; import net.minecraftforge.server.ServerLifecycleHooks; -import org.apache.logging.log4j.Logger; +import org.slf4j.Logger; import org.bukkit.Bukkit; import org.bukkit.Location; import org.bukkit.WeatherType; @@ -490,7 +490,7 @@ public abstract class ServerPlayerMixin extends PlayerMixin implements ServerPla } ServerLevel[] exitWorld = new ServerLevel[]{server}; LevelData iworldinfo = server.getLevelData(); - this.connection.send(new ClientboundRespawnPacket(server.dimensionType(), server.dimension(), BiomeManager.obfuscateSeed(server.getSeed()), this.gameMode.getGameModeForPlayer(), this.gameMode.getPreviousGameModeForPlayer(), server.isDebug(), server.isFlat(), true)); + this.connection.send(new ClientboundRespawnPacket(server.dimensionTypeRegistration(), server.dimension(), BiomeManager.obfuscateSeed(server.getSeed()), this.gameMode.getGameModeForPlayer(), this.gameMode.getPreviousGameModeForPlayer(), server.isDebug(), server.isFlat(), true)); this.connection.send(new ClientboundChangeDifficultyPacket(iworldinfo.getDifficulty(), iworldinfo.isDifficultyLocked())); PlayerList playerlist = this.server.getPlayerList(); playerlist.sendPlayerPermissionLevel((ServerPlayer) (Object) this); @@ -524,7 +524,7 @@ public abstract class ServerPlayerMixin extends PlayerMixin implements ServerPla if (newWorld != exitWorld[0]) { exitWorld[0] = newWorld; LevelData newWorldInfo = exitWorld[0].getLevelData(); - this.connection.send(new ClientboundRespawnPacket(exitWorld[0].dimensionType(), exitWorld[0].dimension(), BiomeManager.obfuscateSeed(exitWorld[0].getSeed()), this.gameMode.getGameModeForPlayer(), this.gameMode.getPreviousGameModeForPlayer(), exitWorld[0].isDebug(), exitWorld[0].isFlat(), true)); + this.connection.send(new ClientboundRespawnPacket(exitWorld[0].dimensionTypeRegistration(), exitWorld[0].dimension(), BiomeManager.obfuscateSeed(exitWorld[0].getSeed()), this.gameMode.getGameModeForPlayer(), this.gameMode.getPreviousGameModeForPlayer(), exitWorld[0].isDebug(), exitWorld[0].isFlat(), true)); this.connection.send(new ClientboundChangeDifficultyPacket(newWorldInfo.getDifficulty(), newWorldInfo.isDifficultyLocked())); } diff --git a/arclight-common/src/main/java/io/izzel/arclight/common/mixin/core/world/inventory/EnchantmentContainerMixin.java b/arclight-common/src/main/java/io/izzel/arclight/common/mixin/core/world/inventory/EnchantmentContainerMixin.java index 2e6a7566..33f0d124 100644 --- a/arclight-common/src/main/java/io/izzel/arclight/common/mixin/core/world/inventory/EnchantmentContainerMixin.java +++ b/arclight-common/src/main/java/io/izzel/arclight/common/mixin/core/world/inventory/EnchantmentContainerMixin.java @@ -24,6 +24,7 @@ import net.minecraft.world.item.Items; import net.minecraft.world.item.enchantment.EnchantmentHelper; import net.minecraft.world.item.enchantment.EnchantmentInstance; import net.minecraft.world.level.Level; +import net.minecraft.world.level.block.EnchantmentTableBlock; import net.minecraftforge.event.ForgeEventFactory; import net.minecraftforge.registries.ForgeRegistries; import org.bukkit.Bukkit; @@ -56,7 +57,6 @@ public abstract class EnchantmentContainerMixin extends AbstractContainerMenuMix // @formatter:off @Shadow @Final private Container enchantSlots; @Shadow @Final private ContainerLevelAccess access; - @Shadow(remap = false) protected abstract float getPower(Level world, BlockPos pos); @Shadow @Final private Random random; @Shadow @Final private DataSlot enchantmentSeed; @Shadow @Final public int[] costs; @@ -90,21 +90,11 @@ public abstract class EnchantmentContainerMixin extends AbstractContainerMenuMix this.access.execute((p_217002_2_, p_217002_3_) -> { float power = 0; - for (int k = -1; k <= 1; ++k) { - for (int l = -1; l <= 1; ++l) { - if ((k != 0 || l != 0) && p_217002_2_.isEmptyBlock(p_217002_3_.offset(l, 0, k)) && p_217002_2_.isEmptyBlock(p_217002_3_.offset(l, 1, k))) { - power += getPower(p_217002_2_, p_217002_3_.offset(l * 2, 0, k * 2)); - power += getPower(p_217002_2_, p_217002_3_.offset(l * 2, 1, k * 2)); - - if (l != 0 && k != 0) { - power += getPower(p_217002_2_, p_217002_3_.offset(l * 2, 0, k)); - power += getPower(p_217002_2_, p_217002_3_.offset(l * 2, 1, k)); - power += getPower(p_217002_2_, p_217002_3_.offset(l, 0, k * 2)); - power += getPower(p_217002_2_, p_217002_3_.offset(l, 1, k * 2)); - } - } + for(BlockPos blockpos : EnchantmentTableBlock.BOOKSHELF_OFFSETS) { + if (EnchantmentTableBlock.isValidBookShelf(p_217002_2_, p_217002_3_, blockpos)) { + power += p_217002_2_.getBlockState(p_217002_3_.offset(blockpos)).getEnchantPowerBonus(p_217002_2_, p_217002_3_.offset(blockpos)); } - } + } this.random.setSeed(this.enchantmentSeed.get()); diff --git a/arclight-common/src/main/java/io/izzel/arclight/common/mixin/core/world/item/crafting/RecipeManagerMixin.java b/arclight-common/src/main/java/io/izzel/arclight/common/mixin/core/world/item/crafting/RecipeManagerMixin.java index 035c1d1b..a815c1bb 100644 --- a/arclight-common/src/main/java/io/izzel/arclight/common/mixin/core/world/item/crafting/RecipeManagerMixin.java +++ b/arclight-common/src/main/java/io/izzel/arclight/common/mixin/core/world/item/crafting/RecipeManagerMixin.java @@ -20,7 +20,7 @@ import net.minecraft.world.item.crafting.RecipeManager; import net.minecraft.world.item.crafting.RecipeType; import net.minecraft.world.level.Level; import net.minecraftforge.common.crafting.CraftingHelper; -import org.apache.logging.log4j.Logger; +import org.slf4j.Logger; import org.spongepowered.asm.mixin.Final; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Overwrite; @@ -91,8 +91,8 @@ public abstract class RecipeManagerMixin implements RecipeManagerBridge { */ @Overwrite public > Optional getRecipeFor(RecipeType recipeTypeIn, C inventoryIn, Level worldIn) { - Optional optional = this.byType(recipeTypeIn).values().stream().flatMap((recipe) -> { - return Util.toStream(recipeTypeIn.tryMatch(recipe, worldIn, inventoryIn)); + Optional optional = this.byType(recipeTypeIn).values().stream().flatMap((p_44064_) -> { + return recipeTypeIn.tryMatch(p_44064_, worldIn, inventoryIn).stream(); }).findFirst(); ((IInventoryBridge) inventoryIn).setCurrentRecipe(optional.orElse(null)); return optional; diff --git a/arclight-common/src/main/java/io/izzel/arclight/common/mixin/core/world/item/enchantment/FrostWalkerEnchantmentMixin.java b/arclight-common/src/main/java/io/izzel/arclight/common/mixin/core/world/item/enchantment/FrostWalkerEnchantmentMixin.java index a730be9e..2aedee94 100644 --- a/arclight-common/src/main/java/io/izzel/arclight/common/mixin/core/world/item/enchantment/FrostWalkerEnchantmentMixin.java +++ b/arclight-common/src/main/java/io/izzel/arclight/common/mixin/core/world/item/enchantment/FrostWalkerEnchantmentMixin.java @@ -29,7 +29,7 @@ public class FrostWalkerEnchantmentMixin { BlockPos.MutableBlockPos blockpos$mutable = new BlockPos.MutableBlockPos(); for (BlockPos blockpos : BlockPos.betweenClosed(pos.offset((double) (-f), -1.0D, (double) (-f)), pos.offset((double) f, -1.0D, (double) f))) { - if (blockpos.closerThan(living.position(), (double) f)) { + if (blockpos.closerToCenterThan(living.position(), (double) f)) { blockpos$mutable.set(blockpos.getX(), blockpos.getY() + 1, blockpos.getZ()); BlockState blockstate1 = worldIn.getBlockState(blockpos$mutable); if (blockstate1.isAir()) { diff --git a/arclight-common/src/main/java/io/izzel/arclight/common/mixin/core/world/level/LevelMixin.java b/arclight-common/src/main/java/io/izzel/arclight/common/mixin/core/world/level/LevelMixin.java index b0f3b9d0..f54bae6a 100644 --- a/arclight-common/src/main/java/io/izzel/arclight/common/mixin/core/world/level/LevelMixin.java +++ b/arclight-common/src/main/java/io/izzel/arclight/common/mixin/core/world/level/LevelMixin.java @@ -11,6 +11,7 @@ import io.izzel.arclight.common.mod.server.world.WrappedWorlds; import io.izzel.arclight.common.mod.util.ArclightCaptures; import it.unimi.dsi.fastutil.objects.Object2LongOpenHashMap; import net.minecraft.core.BlockPos; +import net.minecraft.core.Holder; import net.minecraft.core.Registry; import net.minecraft.resources.ResourceKey; import net.minecraft.server.MinecraftServer; @@ -94,11 +95,11 @@ public abstract class LevelMixin implements WorldBridge, LevelWriter { private static BlockPos lastPhysicsProblem; // Spigot public boolean preventPoiUpdated = false; - public void arclight$constructor(WritableLevelData worldInfo, ResourceKey dimension, final DimensionType dimensionType, Supplier profiler, boolean isRemote, boolean isDebug, long seed) { + public void arclight$constructor(WritableLevelData worldInfo, ResourceKey dimension, final Holder dimensionType, Supplier profiler, boolean isRemote, boolean isDebug, long seed) { throw new RuntimeException(); } - public void arclight$constructor(WritableLevelData worldInfo, ResourceKey dimension, final DimensionType dimensionType, Supplier profiler, boolean isRemote, boolean isDebug, long seed, org.bukkit.generator.ChunkGenerator gen, org.bukkit.generator.BiomeProvider biomeProvider, org.bukkit.World.Environment env) { + public void arclight$constructor(WritableLevelData worldInfo, ResourceKey dimension, final Holder dimensionType, Supplier profiler, boolean isRemote, boolean isDebug, long seed, org.bukkit.generator.ChunkGenerator gen, org.bukkit.generator.BiomeProvider biomeProvider, org.bukkit.World.Environment env) { arclight$constructor(worldInfo, dimension, dimensionType, profiler, isRemote, isDebug, seed); this.generator = gen; this.environment = env; @@ -106,8 +107,8 @@ public abstract class LevelMixin implements WorldBridge, LevelWriter { bridge$getWorld(); } - @Inject(method = "(Lnet/minecraft/world/level/storage/WritableLevelData;Lnet/minecraft/resources/ResourceKey;Lnet/minecraft/world/level/dimension/DimensionType;Ljava/util/function/Supplier;ZZJ)V", at = @At("RETURN")) - private void arclight$init(WritableLevelData info, ResourceKey dimension, DimensionType dimType, Supplier profiler, boolean isRemote, boolean isDebug, long seed, CallbackInfo ci) { + @Inject(method = "(Lnet/minecraft/world/level/storage/WritableLevelData;Lnet/minecraft/resources/ResourceKey;Lnet/minecraft/core/Holder;Ljava/util/function/Supplier;ZZJ)V", at = @At("RETURN")) + private void arclight$init(WritableLevelData info, ResourceKey dimension, Holder dimType, Supplier profiler, boolean isRemote, boolean isDebug, long seed, CallbackInfo ci) { ((WorldBorderBridge) this.worldBorder).bridge$setWorld((Level) (Object) this); for (SpawnCategory spawnCategory : SpawnCategory.values()) { if (CraftSpawnCategory.isValidForLimits(spawnCategory)) { diff --git a/arclight-common/src/main/java/io/izzel/arclight/common/mixin/core/world/level/storage/loot/LootTableMixin.java b/arclight-common/src/main/java/io/izzel/arclight/common/mixin/core/world/level/storage/loot/LootTableMixin.java index ea35a300..c1ae3d09 100644 --- a/arclight-common/src/main/java/io/izzel/arclight/common/mixin/core/world/level/storage/loot/LootTableMixin.java +++ b/arclight-common/src/main/java/io/izzel/arclight/common/mixin/core/world/level/storage/loot/LootTableMixin.java @@ -7,7 +7,7 @@ import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.storage.loot.LootContext; import net.minecraft.world.level.storage.loot.LootTable; import net.minecraft.world.level.storage.loot.parameters.LootContextParams; -import org.apache.logging.log4j.Logger; +import org.slf4j.Logger; import org.bukkit.craftbukkit.v.event.CraftEventFactory; import org.bukkit.craftbukkit.v.inventory.CraftItemStack; import org.bukkit.event.world.LootGenerateEvent; diff --git a/arclight-common/src/main/java/io/izzel/arclight/common/mixin/core/world/spawner/WorldEntitySpawnerMixin.java b/arclight-common/src/main/java/io/izzel/arclight/common/mixin/core/world/spawner/WorldEntitySpawnerMixin.java index c910df89..34b177d5 100644 --- a/arclight-common/src/main/java/io/izzel/arclight/common/mixin/core/world/spawner/WorldEntitySpawnerMixin.java +++ b/arclight-common/src/main/java/io/izzel/arclight/common/mixin/core/world/spawner/WorldEntitySpawnerMixin.java @@ -4,6 +4,7 @@ import io.izzel.arclight.common.bridge.core.world.IWorldWriterBridge; import io.izzel.arclight.common.bridge.core.world.WorldBridge; import io.izzel.arclight.common.bridge.core.world.spawner.WorldEntitySpawnerBridge; import net.minecraft.core.BlockPos; +import net.minecraft.core.Holder; import net.minecraft.server.level.ServerLevel; import net.minecraft.world.entity.Mob; import net.minecraft.world.entity.MobCategory; @@ -90,7 +91,7 @@ public abstract class WorldEntitySpawnerMixin { } @Inject(method = "spawnMobsForChunkGeneration", at = @At(value = "INVOKE", target = "Lnet/minecraft/world/level/ServerLevelAccessor;addFreshEntityWithPassengers(Lnet/minecraft/world/entity/Entity;)V")) - private static void arclight$worldGenSpawn(ServerLevelAccessor accessor, Biome p_151618_, ChunkPos p_151619_, Random p_151620_, CallbackInfo ci) { + private static void arclight$worldGenSpawn(ServerLevelAccessor accessor, Holder p_151618_, ChunkPos p_151619_, Random p_151620_, CallbackInfo ci) { ((IWorldWriterBridge) accessor).bridge$pushAddEntityReason(CreatureSpawnEvent.SpawnReason.CHUNK_GEN); } } diff --git a/arclight-common/src/main/java/io/izzel/arclight/common/mixin/core/world/storage/PlayerDataMixin.java b/arclight-common/src/main/java/io/izzel/arclight/common/mixin/core/world/storage/PlayerDataMixin.java index b63f2735..963e3e6a 100644 --- a/arclight-common/src/main/java/io/izzel/arclight/common/mixin/core/world/storage/PlayerDataMixin.java +++ b/arclight-common/src/main/java/io/izzel/arclight/common/mixin/core/world/storage/PlayerDataMixin.java @@ -7,7 +7,7 @@ import net.minecraft.nbt.NbtIo; import net.minecraft.server.level.ServerPlayer; import net.minecraft.world.entity.player.Player; import net.minecraft.world.level.storage.PlayerDataStorage; -import org.apache.logging.log4j.Logger; +import org.slf4j.Logger; import org.bukkit.craftbukkit.v.entity.CraftPlayer; import org.spongepowered.asm.mixin.Final; import org.spongepowered.asm.mixin.Mixin; diff --git a/arclight-common/src/main/java/io/izzel/arclight/common/mod/server/BukkitRegistry.java b/arclight-common/src/main/java/io/izzel/arclight/common/mod/server/BukkitRegistry.java index 62908fdb..30406dd6 100644 --- a/arclight-common/src/main/java/io/izzel/arclight/common/mod/server/BukkitRegistry.java +++ b/arclight-common/src/main/java/io/izzel/arclight/common/mod/server/BukkitRegistry.java @@ -16,7 +16,6 @@ import io.izzel.arclight.common.mod.util.types.ArclightPotionEffect; import io.izzel.arclight.i18n.ArclightConfig; import io.izzel.arclight.i18n.conf.EntityPropertySpec; import io.izzel.arclight.i18n.conf.MaterialPropertySpec; -import net.minecraft.core.MappedRegistry; import net.minecraft.core.Registry; import net.minecraft.resources.ResourceKey; import net.minecraft.resources.ResourceLocation; @@ -207,10 +206,10 @@ public class BukkitRegistry { ArclightMod.LOGGER.info("registry.villager-profession", newTypes.size()); } - public static void registerEnvironments(MappedRegistry dimensions) { + public static void registerEnvironments(Registry registry) { int i = World.Environment.values().length; List newTypes = new ArrayList<>(); - for (Map.Entry, LevelStem> entry : dimensions.entrySet()) { + for (Map.Entry, LevelStem> entry : registry.entrySet()) { ResourceKey key = entry.getKey(); World.Environment environment = DIM_MAP.get(key); if (environment == null) { diff --git a/arclight-common/src/main/resources/META-INF/accesstransformer.cfg b/arclight-common/src/main/resources/META-INF/accesstransformer.cfg index 8543f5e4..2ac630ba 100644 --- a/arclight-common/src/main/resources/META-INF/accesstransformer.cfg +++ b/arclight-common/src/main/resources/META-INF/accesstransformer.cfg @@ -1,3 +1,8 @@ +# Arclight 1.18.2 +public-f net.minecraft.server.ReloadableServerResources f_206847_ # commands +public net.minecraft.world.level.chunk.ChunkGenerator f_212255_ +public net.minecraft.world.level.chunk.ChunkGenerator f_207956_ +public net.minecraft.world.level.chunk.ChunkGenerator f_207955_ # Arclight 1.18 public net.minecraft.server.level.PlayerRespawnLogic m_183928_(Lnet/minecraft/server/level/ServerLevel;II)Lnet/minecraft/core/BlockPos; public net.minecraft.world.entity.npc.Villager m_35524_()V # releaseAllPois diff --git a/arclight-common/src/main/resources/mixins.arclight.core.json b/arclight-common/src/main/resources/mixins.arclight.core.json index b8f3d6c9..92d9410b 100644 --- a/arclight-common/src/main/resources/mixins.arclight.core.json +++ b/arclight-common/src/main/resources/mixins.arclight.core.json @@ -48,7 +48,7 @@ "network.rcon.RConConsoleSourceMixin", "server.BootstrapMixin", "server.CustomServerBossInfoMixin", - "server.MainMixin", + "server.WorldStemMixin", "server.MinecraftServerMixin", "server.PlayerAdvancementsMixin", "server.ServerFunctionManagerMixin", diff --git a/arclight-forge/build.gradle b/arclight-forge/build.gradle index 57cf50a8..2f123be6 100644 --- a/arclight-forge/build.gradle +++ b/arclight-forge/build.gradle @@ -44,7 +44,7 @@ repositories { def embedLibs = [/*"org.spongepowered:mixin:$mixinVersion", */ 'org.yaml:snakeyaml:1.30', 'org.xerial:sqlite-jdbc:3.36.0.3', 'mysql:mysql-connector-java:8.0.27', /*'commons-lang:commons-lang:2.6',*/ 'com.googlecode.json-simple:json-simple:1.1.1', - 'org.apache.logging.log4j:log4j-jul:2.15.0', 'net.md-5:SpecialSource:1.10.0', + 'org.apache.logging.log4j:log4j-jul:2.17.0', 'net.md-5:SpecialSource:1.10.0', 'org.jline:jline-terminal-jansi:3.12.1', 'org.fusesource.jansi:jansi:1.18', /*'org.jline:jline-terminal:3.12.1', 'org.jline:jline-reader:3.12.1',*/ 'jline:jline:2.12.1', 'org.apache.maven:maven-resolver-provider:3.8.1', @@ -68,11 +68,11 @@ dependencies { implementation 'cpw.mods:securejarhandler:0.9.45' implementation 'net.minecraftforge:forgespi:4.0.9' gson 'com.google.code.gson:gson:2.8.9' - implementation 'org.apache.logging.log4j:log4j-api:2.15.0' - implementation 'org.apache.logging.log4j:log4j-core:2.15.0' + implementation 'org.apache.logging.log4j:log4j-api:2.17.0' + implementation 'org.apache.logging.log4j:log4j-core:2.17.0' implementation 'org.jetbrains:annotations:22.0.0' implementation 'org.spongepowered:mixin:0.8.3' - implementation 'org.apache.logging.log4j:log4j-jul:2.15.0' + implementation 'org.apache.logging.log4j:log4j-jul:2.17.0' for (def lib : embedLibs) { installer lib } diff --git a/arclight-forge/src/main/java/io/izzel/arclight/boot/AbstractBootstrap.java b/arclight-forge/src/main/java/io/izzel/arclight/boot/AbstractBootstrap.java index 3e87ca63..b5665f15 100644 --- a/arclight-forge/src/main/java/io/izzel/arclight/boot/AbstractBootstrap.java +++ b/arclight-forge/src/main/java/io/izzel/arclight/boot/AbstractBootstrap.java @@ -90,7 +90,7 @@ public class AbstractBootstrap { } protected void setupMod() throws Exception { - ArclightVersion.setVersion(ArclightVersion.v1_18_R1); + ArclightVersion.setVersion(ArclightVersion.v1_18_R2); try (InputStream stream = getClass().getModule().getResourceAsStream("/META-INF/MANIFEST.MF")) { Manifest manifest = new Manifest(stream); Attributes attributes = manifest.getMainAttributes(); diff --git a/build.gradle b/build.gradle index 08aa36e3..860ecd37 100644 --- a/build.gradle +++ b/build.gradle @@ -1,6 +1,6 @@ allprojects { group 'io.izzel.arclight' - version '1.0.1' + version '1.0.2-SNAPSHOT' def getGitHash = { -> def stdout = new ByteArrayOutputStream() @@ -13,9 +13,9 @@ allprojects { ext { agpVersion = '1.22' - minecraftVersion = '1.18.1' - forgeVersion = '39.1.2' - apiVersion = '1.2.5' + minecraftVersion = '1.18.2' + forgeVersion = '40.0.12' + apiVersion = '1.2.6' toolsVersion = '1.3.+' mixinVersion = '0.8.5' gitHash = getGitHash() diff --git a/forge-installer/src/main/java/io/izzel/arclight/forgeinstaller/ForgeInstaller.java b/forge-installer/src/main/java/io/izzel/arclight/forgeinstaller/ForgeInstaller.java index ccd01065..626e2295 100644 --- a/forge-installer/src/main/java/io/izzel/arclight/forgeinstaller/ForgeInstaller.java +++ b/forge-installer/src/main/java/io/izzel/arclight/forgeinstaller/ForgeInstaller.java @@ -59,7 +59,7 @@ public class ForgeInstaller { private static final String INSTALLER_URL = "https://arclight.mcxk.net/net/minecraftforge/forge/%s-%s/forge-%s-%s-installer.jar"; private static final String SERVER_URL = "https://arclight.mcxk.net/net/minecraft/server/minecraft_server.%s.jar"; private static final Map VERSION_HASH = Map.of( - "1.18.1", "125e5adf40c659fd3bce3e66e67a16bb49ecc1b9" + "1.18.2", "c8f83c5655308435b3dcf03c06d9fe8740a77469" ); public static List modInstall(Consumer logger) throws Throwable {