Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.crashdbo.firstmod.util.commands;
- import javax.annotation.Nonnull;
- import net.minecraft.entity.Entity;
- import net.minecraft.entity.player.EntityPlayer;
- import net.minecraft.entity.player.EntityPlayerMP;
- import net.minecraft.server.MinecraftServer;
- import net.minecraft.util.math.BlockPos;
- import net.minecraft.world.Teleporter;
- import net.minecraft.world.WorldServer;
- public class DimTeleporter extends Teleporter{
- public DimTeleporter(WorldServer worldIn, double x, double y, double z) {
- super(worldIn);
- this.worldServer = world;
- this.x = x;
- this.y = y;
- this.z = z;
- }
- private final WorldServer worldServer;
- private double x;
- private double y;
- private double z;
- @Override
- public void placeInPortal(@Nonnull Entity entity, float rotationYaw) {
- // The main purpose of this function is to *not* create a nether portal
- this.worldServer.getBlockState(new BlockPos((int) this.x, (int) this.y, (int) this.z));
- entity.setPosition(this.x, this.y, this.z);
- entity.motionX = 0.0f;
- entity.motionY = 0.0f;
- entity.motionZ = 0.0f;
- }
- public static void teleportToDimension(EntityPlayer player, int dimension, double x, double y, double z) {
- int oldDimension = player.getEntityWorld().provider.getDimension();
- if (player.world.isRemote) {
- EntityPlayerMP entityPlayerMP = (EntityPlayerMP) player; //Game crashes here can't cast EntityPlayerSP to EntityPlayerMP
- MinecraftServer server = player.getEntityWorld().getMinecraftServer();
- WorldServer worldServer = server.getWorld(dimension);
- player.addExperienceLevel(0);
- if (worldServer == null || worldServer.getMinecraftServer() == null){ //Dimension doesn't exist
- throw new IllegalArgumentException("Dimension: "+dimension+" doesn't exist!");
- }
- worldServer.getMinecraftServer().getPlayerList().transferPlayerToDimension(entityPlayerMP, dimension, new DimTeleporter(worldServer, x, y, z));
- player.setPositionAndUpdate(x, y, z);
- if (oldDimension == 1) {
- // For some reason teleporting out of the end does weird things. Compensate for that
- player.setPositionAndUpdate(x, y, z);
- worldServer.spawnEntity(player);
- worldServer.updateEntityWithOptionalForce(player, false);
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment