diff --git a/sources/src/main/java/io/akarin/server/mixin/core/MixinWorld.java b/sources/src/main/java/io/akarin/server/mixin/core/MixinWorld.java new file mode 100644 index 000000000..bfaf7d016 --- /dev/null +++ b/sources/src/main/java/io/akarin/server/mixin/core/MixinWorld.java @@ -0,0 +1,34 @@ +package io.akarin.server.mixin.core; + +import java.util.List; + +import javax.annotation.Nullable; + +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Shadow; + +import net.minecraft.server.AxisAlignedBB; +import net.minecraft.server.Entity; +import net.minecraft.server.World; + +/** + * Fixes MC-103516(https://bugs.mojang.com/browse/MC-103516) + */ +@Mixin(value = World.class, remap = false) +public abstract class MixinWorld { + @Shadow public abstract List getEntities(@Nullable Entity entity, AxisAlignedBB box); + + /** + * Returns true if there are no solid, live entities in the specified AxisAlignedBB, excluding the given entity + */ + public boolean a(AxisAlignedBB box, @Nullable Entity target) { // PAIL: checkNoEntityCollision + List list = this.getEntities(null, box); + + for (Entity each : list) { + if (!each.dead && each.i && each != target && (target == null || !each.x(target))) { // PAIL: preventEntitySpawning - isRidingSameEntity + return false; + } + } + return true; + } +} diff --git a/sources/src/main/java/io/akarin/server/mixin/lighting/MixinWorld.java b/sources/src/main/java/io/akarin/server/mixin/lighting/MixinWorld.java index 78c2bb908..8d926e016 100644 --- a/sources/src/main/java/io/akarin/server/mixin/lighting/MixinWorld.java +++ b/sources/src/main/java/io/akarin/server/mixin/lighting/MixinWorld.java @@ -34,7 +34,7 @@ import net.minecraft.server.IChunkProvider; import net.minecraft.server.MinecraftServer; import net.minecraft.server.World; -@Mixin(value = World.class, remap = false) +@Mixin(value = World.class, remap = false, priority = 1001) public abstract class MixinWorld { @Shadow protected IChunkProvider chunkProvider; @Shadow int[] J; // PAIL: lightUpdateBlockList diff --git a/sources/src/main/resources/mixins.akarin.core.json b/sources/src/main/resources/mixins.akarin.core.json index 8fed6e538..a1b6ef019 100644 --- a/sources/src/main/resources/mixins.akarin.core.json +++ b/sources/src/main/resources/mixins.akarin.core.json @@ -13,6 +13,7 @@ "bootstrap.MetricsBootstrap", "bootstrap.MixinRestartCommand", + "core.MixinWorld", "core.MixinMCUtil", "core.MixinCommandBan", "core.MixinCommandKick",