Optimize villager bed chunk loads (#719)

This commit is contained in:
IzzelAliz 2022-09-10 22:04:14 +08:00
parent 03610b4bf6
commit b038f4d254
No known key found for this signature in database
GPG Key ID: EE50E123A11D8338
2 changed files with 24 additions and 0 deletions

View File

@ -0,0 +1,23 @@
package io.izzel.arclight.common.mixin.optimization.general.chunkload;
import net.minecraft.core.GlobalPos;
import net.minecraft.server.level.ServerLevel;
import net.minecraft.world.entity.LivingEntity;
import net.minecraft.world.entity.ai.Brain;
import net.minecraft.world.entity.ai.behavior.SleepInBed;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
import org.spongepowered.asm.mixin.injection.callback.LocalCapture;
@Mixin(SleepInBed.class)
public class SleepInBedMixin_Optimize {
@Inject(method = "checkExtraStartConditions",cancellable = true, locals = LocalCapture.CAPTURE_FAILHARD, at = @At(value = "INVOKE", target = "Lnet/minecraft/server/level/ServerLevel;getBlockState(Lnet/minecraft/core/BlockPos;)Lnet/minecraft/world/level/block/state/BlockState;"))
private void arclight$returnIfNotLoaded(ServerLevel level, LivingEntity entity, CallbackInfoReturnable<Boolean> cir, Brain<?> brain, GlobalPos pos) {
if (!level.isLoaded(pos.pos())) {
cir.setReturnValue(false);
}
}
}

View File

@ -22,6 +22,7 @@
"activationrange.entity.ItemEntityMixin_ActivationRange",
"activationrange.entity.LivingEntityMixin_ActivationRange",
"activationrange.entity.VillagerEntityMixin_ActivationRange",
"chunkload.SleepInBedMixin_Optimize",
"network.ChunkMapMixin_Optimize",
"network.ChunkMapMixin_Optimize$TrackedEntityMixin",
"network.ConnectionMixin_Optimize",