diff --git a/sources/src/main/java/io/akarin/api/internal/Akari.java b/sources/src/main/java/io/akarin/api/internal/Akari.java index cfbe2fed0..9095df37c 100644 --- a/sources/src/main/java/io/akarin/api/internal/Akari.java +++ b/sources/src/main/java/io/akarin/api/internal/Akari.java @@ -7,8 +7,6 @@ import java.util.concurrent.ExecutorCompletionService; import java.util.concurrent.Executors; import java.util.concurrent.ThreadFactory; -import javax.annotation.Nonnull; - import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import com.google.common.collect.Queues; @@ -17,11 +15,7 @@ import com.google.common.util.concurrent.ThreadFactoryBuilder; import co.aikar.timings.Timing; import co.aikar.timings.Timings; import io.akarin.server.core.AkarinGlobalConfig; -import net.minecraft.server.Entity; -import net.minecraft.server.EntityTracker; import net.minecraft.server.MinecraftServer; -import net.minecraft.server.Packet; -import net.minecraft.server.PlayerConnection; @SuppressWarnings("restriction") public abstract class Akari { @@ -40,15 +34,6 @@ public abstract class Akari { */ public static final Queue callbackQueue = Queues.newConcurrentLinkedQueue(); - /** - * Lock-free packet queue for slack service - */ - public static final Queue> slackPackets = Queues.newConcurrentLinkedQueue(); - - public static void sendPacket(PlayerConnection conn, @Nonnull Packet packet) { - if (!conn.processedDisconnect) slackPackets.add(packet); - } - public static class AssignableThread extends Thread { public AssignableThread(Runnable run) { super(run); diff --git a/sources/src/main/java/io/akarin/api/internal/mixin/IMixinWorldData.java b/sources/src/main/java/io/akarin/api/internal/mixin/IMixinWorldData.java deleted file mode 100644 index 1d2f9fe28..000000000 --- a/sources/src/main/java/io/akarin/api/internal/mixin/IMixinWorldData.java +++ /dev/null @@ -1,7 +0,0 @@ -package io.akarin.api.internal.mixin; - -import net.minecraft.server.EnumDifficulty; - -public interface IMixinWorldData { - public void setDifficultyAsync(EnumDifficulty diff); -} \ No newline at end of file diff --git a/sources/src/main/java/io/akarin/server/core/AkarinSlackScheduler.java b/sources/src/main/java/io/akarin/server/core/AkarinSlackScheduler.java index 3299e645e..c279d23ca 100644 --- a/sources/src/main/java/io/akarin/server/core/AkarinSlackScheduler.java +++ b/sources/src/main/java/io/akarin/server/core/AkarinSlackScheduler.java @@ -4,7 +4,6 @@ import com.google.common.base.Predicate; import com.google.common.collect.Iterables; import io.akarin.api.internal.Akari; -import io.akarin.api.internal.mixin.IMixinWorldData; import net.minecraft.server.EntityPlayer; import net.minecraft.server.EnumDifficulty; import net.minecraft.server.MinecraftServer; @@ -46,7 +45,7 @@ public class AkarinSlackScheduler extends Thread { if (++updateTime >= AkarinGlobalConfig.timeUpdateInterval) { for (EntityPlayer player : server.getPlayerList().players) { // Add support for per player time - Akari.sendPacket(player.playerConnection, new PacketPlayOutUpdateTime(player.world.getTime(), player.getPlayerTime(), player.world.getGameRules().getBoolean("doDaylightCycle"))); + player.playerConnection.sendPacket(new PacketPlayOutUpdateTime(player.world.getTime(), player.getPlayerTime(), player.world.getGameRules().getBoolean("doDaylightCycle"))); } updateTime = 0; } @@ -71,7 +70,7 @@ public class AkarinSlackScheduler extends Thread { conn.setPendingPing(true); conn.setLastPing(currentTime); conn.setKeepAliveID(currentTime); - Akari.sendPacket(conn, new PacketPlayOutKeepAlive(conn.getKeepAliveID())); // 15s lagg you should stop your server + conn.sendPacket(new PacketPlayOutKeepAlive(conn.getKeepAliveID())); // 15s lagg you should stop your server } } } @@ -80,14 +79,14 @@ public class AkarinSlackScheduler extends Thread { if (AkarinGlobalConfig.forceHardcoreDifficulty) for (WorldServer world : server.worlds) { if (world.getWorldData().isHardcore() && world.getDifficulty() != EnumDifficulty.HARD) { - ((IMixinWorldData) world.getWorldData()).setDifficultyAsync(EnumDifficulty.HARD); + world.getWorldData().setDifficulty(EnumDifficulty.HARD); } } // Update player info, from PlayerList#tick if (++resendPlayersInfo > AkarinGlobalConfig.playersInfoUpdateInterval) { for (EntityPlayer player : server.getPlayerList().players) { - Akari.sendPacket(player.playerConnection, new PacketPlayOutPlayerInfo(PacketPlayOutPlayerInfo.EnumPlayerInfoAction.UPDATE_LATENCY, Iterables.filter(server.getPlayerList().players, new Predicate() { + player.playerConnection.sendPacket(new PacketPlayOutPlayerInfo(PacketPlayOutPlayerInfo.EnumPlayerInfoAction.UPDATE_LATENCY, Iterables.filter(server.getPlayerList().players, new Predicate() { @Override public boolean apply(EntityPlayer each) { return player.getBukkitEntity().canSee(each.getBukkitEntity()); diff --git a/sources/src/main/java/io/akarin/server/mixin/core/MixinWorldData.java b/sources/src/main/java/io/akarin/server/mixin/core/MixinWorldData.java deleted file mode 100644 index 304265302..000000000 --- a/sources/src/main/java/io/akarin/server/mixin/core/MixinWorldData.java +++ /dev/null @@ -1,32 +0,0 @@ -package io.akarin.server.mixin.core; - -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.Shadow; - -import io.akarin.api.internal.Akari; -import io.akarin.api.internal.mixin.IMixinWorldData; -import net.minecraft.server.EntityHuman; -import net.minecraft.server.EntityPlayer; -import net.minecraft.server.EnumDifficulty; -import net.minecraft.server.PacketPlayOutServerDifficulty; -import net.minecraft.server.WorldData; -import net.minecraft.server.WorldServer; - -@Mixin(value = WorldData.class, remap = false) -public abstract class MixinWorldData implements IMixinWorldData { - @Shadow(aliases = "C") private volatile EnumDifficulty difficulty; - @Shadow public WorldServer world; - - @Shadow abstract public EnumDifficulty getDifficulty(); - @Shadow abstract public boolean isDifficultyLocked(); - - @Override - public void setDifficultyAsync(EnumDifficulty diff) { - difficulty = diff; - - PacketPlayOutServerDifficulty packet = new PacketPlayOutServerDifficulty(this.getDifficulty(), this.isDifficultyLocked()); - for (EntityHuman player : world.players) { - Akari.sendPacket(((EntityPlayer) player).playerConnection, packet); - } - } -} diff --git a/sources/src/main/java/io/akarin/server/mixin/nsc/OptimisticNetworkManager.java b/sources/src/main/java/io/akarin/server/mixin/nsc/OptimisticNetworkManager.java index af279754f..24009def0 100644 --- a/sources/src/main/java/io/akarin/server/mixin/nsc/OptimisticNetworkManager.java +++ b/sources/src/main/java/io/akarin/server/mixin/nsc/OptimisticNetworkManager.java @@ -8,7 +8,6 @@ import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Overwrite; import org.spongepowered.asm.mixin.Shadow; -import io.akarin.api.internal.Akari; import io.akarin.api.internal.collections.CheckedConcurrentLinkedQueue; import io.netty.channel.Channel; import io.netty.util.concurrent.Future; @@ -32,12 +31,6 @@ public abstract class OptimisticNetworkManager { @Overwrite // PAIL: trySendQueue private boolean m() { - // Akarin start - process slack packets - while (!Akari.slackPackets.isEmpty()) { - // Plugins that hook into those packets will notify their listeners later, so keep sync - dispatchPacket(Akari.slackPackets.poll(), null); - } - // Akarin end if (this.channel != null && this.channel.isOpen()) { if (this.packets.isEmpty()) { // return if the packet queue is empty so that the write lock by Anti-Xray doesn't affect the vanilla performance at all return true; diff --git a/sources/src/main/resources/mixins.akarin.core.json b/sources/src/main/resources/mixins.akarin.core.json index 1a13a1a97..cf428281e 100644 --- a/sources/src/main/resources/mixins.akarin.core.json +++ b/sources/src/main/resources/mixins.akarin.core.json @@ -15,7 +15,6 @@ "core.MixinWorld", "core.MixinMCUtil", - "core.MixinWorldData", "core.MixinPlayerList", "core.MixinCommandBan", "core.MixinCommandKick",