package com.thebrokenrail.slightlyvanilla.mixin; import com.thebrokenrail.slightlyvanilla.SlightlyVanilla; import net.minecraft.block.RespawnAnchorBlock; import net.minecraft.server.network.ServerPlayerEntity; import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; 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.Redirect; import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; @SuppressWarnings("unused") @Mixin(RespawnAnchorBlock.class) public class MixinRespawnAnchorBlock { @Inject(at = @At("HEAD"), method = "isNether", cancellable = true) private static void isNether(World world, CallbackInfoReturnable info) { if (SlightlyVanilla.getConfig().useRespawnAnchorInAnyDimension) { info.setReturnValue(true); } } @Redirect(at = @At(value = "INVOKE", target = "Lnet/minecraft/server/network/ServerPlayerEntity;getSpawnPointPosition()Lnet/minecraft/util/math/BlockPos;"), method = "onUse") public BlockPos getSpawnPointPosition(ServerPlayerEntity serverPlayerEntity) { if (SlightlyVanilla.getConfig().useRespawnAnchorInAnyDimension && serverPlayerEntity.getSpawnPointPosition() == null) { return new BlockPos(0, 512, 0); } else { return serverPlayerEntity.getSpawnPointPosition(); } } }