public void c(OEntityPlayerMP var1) { this.sendPacketToAll((new OPacket201PlayerInfo(var1.v, true, 1000))); this.b.add(var1); OWorldServer var2 = (OWorldServer) ((CanaryDimension) var1.getDimension().getWorld().getDimension(Type.fromId(var1.w))) .getHandle(); var1.bi = var2; // re-set world var2.G.c((int) var1.bm >> 4, (int) var1.bo >> 4); while (var2.a(var1, var1.bw).size() != 0) { var1.c(var1.bm, var1.bn + 1.0D, var1.bo); } var2.b(var1); // CanaryMod var1.getDimension().getPlayerManager().addPlayer(var1.getPlayer()); this.u(); for (int var3 = 0; var3 < this.b.size(); ++var3) { OEntityPlayerMP var4 = (OEntityPlayerMP) this.b.get(var3); var1.a.b((new OPacket201PlayerInfo(var4.v, true, var4.i))); } Canary.hooks().callHook(new LoginHook(var1.getPlayer())); var1.getPlayer().refreshCreativeMode(); }
/** * Send player to another dimension. Was a(OEntityPlayerMP var1, int var2) before * * @param var1 Player * @param var2 Dimension ID * @param createPortal true if a portal needs to be created */ public void switchDimension(OEntityPlayerMP var1, int var2, boolean createPortal) { int var3 = var1.w; // current dimension OWorldServer var4 = (OWorldServer) ((CanaryDimension) var1.getDimension()).getHandle(); var1.w = var2; // set new dimension OWorldServer var5 = (OWorldServer) ((CanaryDimension) this.c .getWorldManager() .getDimension(var1.bi.getCanaryDimension().getName(), var1.w)) .getHandle(); var1.a.b( (new OPacket9Respawn( var1.w, (byte) var1.bi.q, var5.s().getWorldType(), var5.y(), var1.c.a()))); // var4.f(var1); var1.bE = false; double var6 = var1.bm; double var8 = var1.bo; double var10 = 8.0D; if (var1.w == -1) { var6 /= var10; var8 /= var10; var1.c(var6, var1.bn, var8, var1.bs, var1.bt); if (var1.aE()) { var4.a(var1, false); } } else if (var1.w == 0) { var6 *= var10; var8 *= var10; var1.c(var6, var1.bn, var8, var1.bs, var1.bt); if (var1.aE()) { var4.a(var1, false); } } else { OChunkCoordinates var12 = var5.d(); var6 = var12.a; var1.bn = var12.b; var8 = var12.c; var1.c(var6, var1.bn, var8, 90.0F, 0.0F); if (var1.aE()) { var4.a(var1, false); } } if (var3 != 1 && var1.aE()) { var5.b(var1); var1.c(var6, var1.bn, var8, var1.bs, var1.bt); var5.a(var1, false); // CanaryMod - don't create portal if we are not using a portal to teleport. if (createPortal) { var5.G.a = true; (new OTeleporter()).a(var5, var1); var5.G.a = false; } } this.a(var1); var1.a.a( var1.bm, var1.bn, var1.bo, var1.bs, var1.bt, var1.w, var1.bi.getCanaryDimension().getName()); var1.a(var5); var1.c.a(var5); this.a(var1, var5); this.f(var1); }
// Respawn player public OEntityPlayerMP a(OEntityPlayerMP var1, int var2, boolean var3, Location spawnLocation) { var1.getDimension().getEntityTracker().untrackPlayerSymmetrics(var1.getPlayer()); var1.getDimension().getEntityTracker().untrackEntity(var1.getCanaryEntity()); var1.getDimension().getPlayerManager().removePlayer(var1.getPlayer()); this.b.remove(var1); var1.getDimension() .removePlayerFromWorld(var1.getPlayer()); // This calls the despawn method in world! OChunkCoordinates var4 = var1.ab(); var1.w = var2; // Set new dimension CanaryWorld cworld = (CanaryWorld) var1.getDimension().getWorld(); CanaryDimension dim = (CanaryDimension) cworld.getDimension(Type.fromId(var2)); OEntityPlayerMP var5 = new OEntityPlayerMP( this.c, dim.getHandle(), var1.v, new OItemInWorldManager(dim.getHandle())); var5.w = var2; if (var3) { // copy player var5.c((OEntityPlayer) var1); } var5.bd = var1.bd; // Set NetServerHandler var5.a = var1.a; var5.setServerHandler(var5.a.getCanaryNetServerHandler()); var5.a.setUser(var5.getPlayer()); OWorldServer var6 = (OWorldServer) dim.getHandle(); var5.c.a(var1.c.a()); var5.c.b(var6.s().getGameMode()); if (var4 != null) { OChunkCoordinates var7 = OEntityPlayer.a(((CanaryDimension) var1.getDimension()).getHandle(), var4); if (var7 != null) { var5.c((var7.a + 0.5F), (var7.b + 0.1F), (var7.c + 0.5F), 0.0F, 0.0F); var5.a(var4); } else { var5.a.b((new OPacket70Bed(0, 0))); } } // CanaryMod set player location and angle if a spawn location is defined if (spawnLocation != null) { var5.c( spawnLocation.getX(), spawnLocation.getY(), spawnLocation.getZ(), spawnLocation.getRotation(), spawnLocation.getPitch()); } var6.G.c((int) var5.bm >> 4, (int) var5.bo >> 4); while (var6.a(var5, var5.bw).size() != 0) { // This is the checks for canSpawnHere should we do something with this so players // don't end up on roofs? var5.c(var5.bm, var5.bn + 1.0D, var5.bo); } // respawn packet var5.a.b( (new OPacket9Respawn( var5.w, (byte) var5.bi.q, var5.bi.s().getWorldType(), var5.bi.y(), var5.c.a()))); // teleport to spawn location var5.a.a( var5.bm, var5.bn, var5.bo, var5.bs, var5.bt, var5.w, var5.bi.getCanaryDimension().getName()); // something this.a(var5, var6); var5.getDimension().getPlayerManager().addPlayer((Player) var5.getPlayer()); var5.getDimension() .addPlayerToWorld(var5.getPlayer()); // This also calls the spawn method in world! this.b.add(var5); var5.x(); var5.E(); return var5; }