Skip to content

Instantly share code, notes, and snippets.

@azenla
Last active December 19, 2015 09:59
Show Gist options
  • Save azenla/5936667 to your computer and use it in GitHub Desktop.
Save azenla/5936667 to your computer and use it in GitHub Desktop.
CommandTpd
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