Last active
December 19, 2015 09:59
-
-
Save azenla/5936667 to your computer and use it in GitHub Desktop.
CommandTpd
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package org.minetweak.debug; | |
import net.minecraft.server.MinecraftServer; | |
import net.minecraft.src.EntityPlayerMP; | |
import net.minecraft.src.Packet9Respawn; | |
import net.minecraft.src.Teleporter; | |
import net.minecraft.src.WorldServer; | |
import org.minetweak.Minetweak; | |
import org.minetweak.command.CommandExecutor; | |
import org.minetweak.command.CommandSender; | |
import org.minetweak.entity.Player; | |
import org.minetweak.util.StringUtils; | |
import org.minetweak.world.TeleportHelper; | |
public class CommandTpd extends CommandExecutor { | |
@Override | |
public void executeCommand(CommandSender sender, String overallCommand, String[] args) { | |
sender.sendMessage("Trying to teleport"); | |
if (args.length!=1) { | |
sender.sendMessage("Usage: /tpd DIMID"); | |
return; | |
} | |
Player player = Minetweak.getPlayerByName(sender.getName()); | |
EntityPlayerMP playerMP = player.getPlayerMP(); | |
Integer integer = Integer.parseInt(args[0]); | |
if (MinecraftServer.getServer().worldServers[integer]==null) { | |
sender.sendMessage("Invalid DIMID " + integer); | |
return; | |
} | |
WorldServer oldServer = playerMP.mcServer.worldServerForDimension(playerMP.dimension); | |
int old = playerMP.dimension; | |
playerMP.dimension = integer; | |
WorldServer newServer = playerMP.mcServer.worldServerForDimension(playerMP.dimension); | |
Packet9Respawn respawnPacket = new Packet9Respawn(playerMP.dimension, (byte) playerMP.worldObj.difficultySetting, newServer.getWorldInfo().getTerrainType(), newServer.getHeight(), playerMP.theItemInWorldManager.getGameType()); | |
playerMP.playerNetServerHandler.sendPacket(respawnPacket); | |
newServer.removePlayerEntityDangerously(playerMP); | |
playerMP.isDead = false; | |
System.out.println("Moving Entity"); | |
TeleportHelper.transferEntityToWorld(playerMP, old, oldServer, newServer); | |
System.out.println("Moved Entity"); | |
oldServer.getPlayerManager().removePlayer(playerMP); | |
newServer.getPlayerManager().addPlayer(playerMP); | |
newServer.theChunkProviderServer.loadChunk((int) playerMP.posX >> 4, (int) playerMP.posZ >> 4); | |
playerMP.playerNetServerHandler.setPlayerLocation(playerMP.posX, playerMP.posY, playerMP.posZ, playerMP.rotationYaw, playerMP.rotationPitch); | |
playerMP.theItemInWorldManager.setWorld(newServer); | |
playerMP.mcServer.getConfigurationManager().updateTimeAndWeatherForPlayer(playerMP, newServer); | |
playerMP.mcServer.getConfigurationManager().syncPlayerInventory(playerMP); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment