make sure monoliths will teleport people to limbo regardless of dimension.

This commit is contained in:
Waterpicker 2024-02-04 00:39:56 -06:00
parent 1f6c71ec1b
commit 96ce1a8243

View file

@ -11,6 +11,7 @@ import net.minecraft.world.entity.ai.goal.Goal;
import net.minecraft.world.entity.ai.targeting.TargetingConditions; import net.minecraft.world.entity.ai.targeting.TargetingConditions;
import net.minecraft.world.entity.player.Player; import net.minecraft.world.entity.player.Player;
import org.dimdev.dimdoors.DimensionalDoors; import org.dimdev.dimdoors.DimensionalDoors;
import org.dimdev.dimdoors.api.util.TeleportUtil;
import org.dimdev.dimdoors.entity.MonolithEntity; import org.dimdev.dimdoors.entity.MonolithEntity;
import org.dimdev.dimdoors.entity.stat.ModStats; import org.dimdev.dimdoors.entity.stat.ModStats;
import org.dimdev.dimdoors.item.ModItems; import org.dimdev.dimdoors.item.ModItems;
@ -19,6 +20,7 @@ import org.dimdev.dimdoors.network.packet.s2c.MonolithAggroParticlesPacket;
import org.dimdev.dimdoors.network.packet.s2c.MonolithTeleportParticlesPacket; import org.dimdev.dimdoors.network.packet.s2c.MonolithTeleportParticlesPacket;
import org.dimdev.dimdoors.sound.ModSoundEvents; import org.dimdev.dimdoors.sound.ModSoundEvents;
import org.dimdev.dimdoors.tag.ModItemTags; import org.dimdev.dimdoors.tag.ModItemTags;
import org.dimdev.dimdoors.world.ModDimensions;
import java.util.EnumSet; import java.util.EnumSet;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@ -112,7 +114,7 @@ public class MonolithAggroGoal extends Goal {
// Teleport the target player if various conditions are met // Teleport the target player if various conditions are met
if (this.mob.getAggro() >= MAX_AGGRO && DimensionalDoors.getConfig().getMonolithsConfig().monolithTeleportation && !this.target.isCreative() && this.mob.isDangerous()) { if (this.mob.getAggro() >= MAX_AGGRO && DimensionalDoors.getConfig().getMonolithsConfig().monolithTeleportation && !this.target.isCreative() && this.mob.isDangerous()) {
this.mob.setAggro(0); this.mob.setAggro(0);
this.target.teleportTo(this.target.getX(), this.target.getY() + 256, this.target.getZ()); TeleportUtil.teleport(this.target, DimensionalDoors.getWorld(ModDimensions.LIMBO), this.target.position().add(0, 256, 0f), this.target.getVisualRotationYInDegrees());
this.target.level().playSound(null, new BlockPos(new Vec3i((int) this.target.position().x, (int) this.target.position().y, (int) this.target.position().z)), ModSoundEvents.CRACK.get(), SoundSource.HOSTILE, 13, 1); this.target.level().playSound(null, new BlockPos(new Vec3i((int) this.target.position().x, (int) this.target.position().y, (int) this.target.position().z)), ModSoundEvents.CRACK.get(), SoundSource.HOSTILE, 13, 1);
this.target.awardStat(ModStats.TIMES_TELEPORTED_BY_MONOLITH); this.target.awardStat(ModStats.TIMES_TELEPORTED_BY_MONOLITH);
ServerPacketHandler.get((ServerPlayer) this.target).sendPacket(new MonolithTeleportParticlesPacket()); ServerPacketHandler.get((ServerPlayer) this.target).sendPacket(new MonolithTeleportParticlesPacket());