diff --git a/sources/src/main/java/io/akarin/server/mixin/core/MonsterEggGuardian.java b/sources/src/main/java/io/akarin/server/mixin/core/MonsterEggGuardian.java index ec05f5c49..fcc1a7a45 100644 --- a/sources/src/main/java/io/akarin/server/mixin/core/MonsterEggGuardian.java +++ b/sources/src/main/java/io/akarin/server/mixin/core/MonsterEggGuardian.java @@ -12,7 +12,6 @@ import net.minecraft.server.ItemMonsterEgg; @Mixin(value = ItemMonsterEgg.class, remap = false) public class MonsterEggGuardian { - @Redirect(method = "a", at = @At( value = "FIELD", target = "net/minecraft/server/Blocks.MOB_SPAWNER:Lnet/minecraft/server/Block;", diff --git a/sources/src/main/java/io/akarin/server/mixin/optimization/MixinPlayerChunk.java b/sources/src/main/java/io/akarin/server/mixin/optimization/MixinPlayerChunk.java new file mode 100644 index 000000000..982806ba4 --- /dev/null +++ b/sources/src/main/java/io/akarin/server/mixin/optimization/MixinPlayerChunk.java @@ -0,0 +1,31 @@ +package io.akarin.server.mixin.optimization; + +import java.util.List; + +import org.spongepowered.asm.lib.Opcodes; +import org.spongepowered.asm.mixin.Final; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Shadow; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.At.Shift; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +import io.akarin.api.Akari; +import net.minecraft.server.EntityPlayer; +import net.minecraft.server.PlayerChunk; + +@Mixin(value = PlayerChunk.class, remap = false) +public class MixinPlayerChunk { + @Shadow @Final public List c; // PAIL: players + + @Inject(method = "b", at = @At( + value = "INVOKE", + target = "net/minecraft/server/PacketPlayOutMapChunk.(Lnet/minecraft/server/Chunk;I)V", + opcode = Opcodes.INVOKESPECIAL, + shift = Shift.BEFORE + )) + private void beforeCreateChunkPacket(CallbackInfo ci) { + if (c.isEmpty()) ci.cancel(); // Akarin - Fixes MC-120780 + } +} diff --git a/sources/src/main/java/net/minecraft/server/Chunk.java b/sources/src/main/java/net/minecraft/server/Chunk.java index fca977485..873673de8 100644 --- a/sources/src/main/java/net/minecraft/server/Chunk.java +++ b/sources/src/main/java/net/minecraft/server/Chunk.java @@ -21,7 +21,8 @@ import org.bukkit.craftbukkit.util.CraftMagicNumbers; // Paper /** * Akarin Changes Note
*
- * 1) Expose private members
+ * 1) Add volatile to fields
+ * 2) Expose private members
* @author cakoyo */ public class Chunk { diff --git a/sources/src/main/resources/mixins.akarin.core.json b/sources/src/main/resources/mixins.akarin.core.json index f5ae76756..7e9b6a19d 100644 --- a/sources/src/main/resources/mixins.akarin.core.json +++ b/sources/src/main/resources/mixins.akarin.core.json @@ -35,6 +35,7 @@ "lighting.MixinChunkProviderServer", "optimization.WeakBigTree", + "optimization.MixinPlayerChunk", "optimization.WeakEnchantmentManager", "optimization.MixinEntityHorseAbstract", "optimization.MixinEntityTameableAnimal",