Starting on converting to 1.8

This commit is contained in:
Shaun Bennett 2015-04-22 16:06:38 -04:00
parent 9ee740d334
commit f4b6d4e44e
3 changed files with 115 additions and 134 deletions

View File

@ -1,11 +1,10 @@
package mineplex.core.common.jsonchat; package mineplex.core.common.jsonchat;
import org.bukkit.craftbukkit.v1_7_R4.entity.CraftPlayer; import org.bukkit.craftbukkit.v1_8_R2.entity.CraftPlayer;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import net.minecraft.server.v1_7_R4.ChatSerializer; import net.minecraft.server.v1_8_R2.IChatBaseComponent;
import net.minecraft.server.v1_7_R4.PacketPlayOutChat; import net.minecraft.server.v1_8_R2.PacketPlayOutChat;
import mineplex.core.common.util.UtilPlayer;
import mineplex.core.common.util.UtilServer; import mineplex.core.common.util.UtilServer;
public class JsonMessage public class JsonMessage
@ -119,25 +118,12 @@ public class JsonMessage
*/ */
public void send(MessageType messageType, Player... players) public void send(MessageType messageType, Player... players)
{ {
send(messageType, false, players); PacketPlayOutChat chatPacket = new PacketPlayOutChat(IChatBaseComponent.ChatSerializer.a(toString()));
}
/**
* Send a message to players using the new 1.8 message types
*
* @param messageType Message type to send
* @param defaultToChat Only applies to MessageType.ABOVE_HOTBAR. If true, it will send this to chat for 1.7 clients
* @param players Players to send to
*/
public void send(MessageType messageType, boolean defaultToChat, Player... players)
{
PacketPlayOutChat chatPacket = new PacketPlayOutChat(ChatSerializer.a(toString()));
chatPacket.setChatType(messageType.getId()); chatPacket.setChatType(messageType.getId());
for (Player player : players) for (Player player : players)
{ {
if (defaultToChat || messageType != MessageType.ABOVE_HOTBAR || UtilPlayer.is1_8(player)) ((CraftPlayer) player).getHandle().playerConnection.sendPacket(chatPacket);
((CraftPlayer) player).getHandle().playerConnection.sendPacket(chatPacket);
} }
} }

View File

@ -7,18 +7,17 @@ import java.util.List;
import java.util.UUID; import java.util.UUID;
import org.bukkit.ChatColor; import org.bukkit.ChatColor;
import org.bukkit.GameMode;
import org.bukkit.Location; import org.bukkit.Location;
import org.bukkit.Material; import org.bukkit.Material;
import org.bukkit.craftbukkit.v1_7_R4.entity.CraftEntity; import org.bukkit.craftbukkit.v1_8_R2.entity.CraftEntity;
import org.bukkit.craftbukkit.v1_7_R4.entity.CraftPlayer; import org.bukkit.craftbukkit.v1_8_R2.entity.CraftPlayer;
import org.bukkit.entity.Entity; import org.bukkit.entity.Entity;
import org.bukkit.entity.LivingEntity; import org.bukkit.entity.LivingEntity;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.bukkit.util.Vector; import org.bukkit.util.Vector;
import net.minecraft.server.v1_7_R4.Packet; import net.minecraft.server.v1_8_R2.Packet;
import net.minecraft.server.v1_7_R4.PlayerConnection; import net.minecraft.server.v1_8_R2.PlayerConnection;
public class UtilPlayer public class UtilPlayer
{ {
@ -587,11 +586,6 @@ public class UtilPlayer
return (((CraftEntity) player).getHandle().getDataWatcher().getByte(0) & 1 << 4) != 0; return (((CraftEntity) player).getHandle().getDataWatcher().getByte(0) & 1 << 4) != 0;
} }
public static boolean is1_8(Player player)
{
return ((CraftPlayer) player).getHandle().playerConnection.networkManager.getVersion() >= 47;
}
public static void sendPacket(Player player, Packet... packets) public static void sendPacket(Player player, Packet... packets)
{ {
PlayerConnection connection = ((CraftPlayer) player).getHandle().playerConnection; PlayerConnection connection = ((CraftPlayer) player).getHandle().playerConnection;

View File

@ -2,23 +2,22 @@ package mineplex.core.common.util;
import java.io.File; import java.io.File;
import net.minecraft.server.v1_7_R4.ConvertProgressUpdater; import net.minecraft.server.v1_8_R2.Convertable;
import net.minecraft.server.v1_7_R4.Convertable; import net.minecraft.server.v1_8_R2.EntityTracker;
import net.minecraft.server.v1_7_R4.EntityTracker; import net.minecraft.server.v1_8_R2.EnumDifficulty;
import net.minecraft.server.v1_7_R4.EnumDifficulty; import net.minecraft.server.v1_8_R2.IWorldAccess;
import net.minecraft.server.v1_7_R4.EnumGamemode; import net.minecraft.server.v1_8_R2.ServerNBTManager;
import net.minecraft.server.v1_7_R4.IWorldAccess; import net.minecraft.server.v1_8_R2.WorldData;
import net.minecraft.server.v1_7_R4.ServerNBTManager; import net.minecraft.server.v1_8_R2.WorldLoaderServer;
import net.minecraft.server.v1_7_R4.WorldLoaderServer; import net.minecraft.server.v1_8_R2.WorldManager;
import net.minecraft.server.v1_7_R4.WorldManager; import net.minecraft.server.v1_8_R2.WorldServer;
import net.minecraft.server.v1_7_R4.WorldServer; import net.minecraft.server.v1_8_R2.WorldSettings;
import net.minecraft.server.v1_7_R4.WorldSettings; import net.minecraft.server.v1_8_R2.WorldType;
import net.minecraft.server.v1_7_R4.WorldType;
import org.bukkit.Bukkit; import org.bukkit.Bukkit;
import org.bukkit.World; import org.bukkit.World;
import org.bukkit.WorldCreator; import org.bukkit.WorldCreator;
import org.bukkit.craftbukkit.v1_7_R4.CraftServer; import org.bukkit.craftbukkit.v1_8_R2.CraftServer;
import org.bukkit.event.world.WorldInitEvent; import org.bukkit.event.world.WorldInitEvent;
import org.bukkit.event.world.WorldLoadEvent; import org.bukkit.event.world.WorldLoadEvent;
import org.bukkit.generator.ChunkGenerator; import org.bukkit.generator.ChunkGenerator;
@ -28,107 +27,109 @@ public class WorldUtil
public static World LoadWorld(WorldCreator creator) public static World LoadWorld(WorldCreator creator)
{ {
CraftServer server = (CraftServer)Bukkit.getServer(); CraftServer server = (CraftServer)Bukkit.getServer();
if (creator == null) if (creator == null)
{ {
throw new IllegalArgumentException("Creator may not be null"); throw new IllegalArgumentException("Creator may not be null");
} }
String name = creator.name(); String name = creator.name();
System.out.println("Loading world '" + name + "'"); System.out.println("Loading world '" + name + "'");
ChunkGenerator generator = creator.generator(); ChunkGenerator generator = creator.generator();
File folder = new File(server.getWorldContainer(), name); File folder = new File(server.getWorldContainer(), name);
World world = server.getWorld(name); World world = server.getWorld(name);
WorldType type = WorldType.getType(creator.type().getName()); WorldType type = WorldType.getType(creator.type().getName());
boolean generateStructures = creator.generateStructures(); boolean generateStructures = creator.generateStructures();
if (world != null) if (world != null)
{ {
return world; return world;
} }
if ((folder.exists()) && (!folder.isDirectory())) if ((folder.exists()) && (!folder.isDirectory()))
{ {
throw new IllegalArgumentException("File exists with the name '" + name + "' and isn't a folder"); throw new IllegalArgumentException("File exists with the name '" + name + "' and isn't a folder");
} }
if (generator == null) if (generator == null)
{ {
generator = server.getGenerator(name); generator = server.getGenerator(name);
} }
Convertable converter = new WorldLoaderServer(server.getWorldContainer()); // TODO -
if (converter.isConvertable(name)) // Convertable converter = new WorldLoaderServer(server.getWorldContainer());
{ // if (converter.isConvertable(name))
server.getLogger().info("Converting world '" + name + "'"); // {
converter.convert(name, new ConvertProgressUpdater(server.getServer())); // server.getLogger().info("Converting world '" + name + "'");
} // converter.convert(name, new ConvertProgressUpdater(server.getServer()));
// }
int dimension = server.getWorlds().size() + 1; int dimension = server.getWorlds().size() + 1;
boolean used = false; boolean used = false;
do do
{ {
for (WorldServer worldServer : server.getServer().worlds) for (WorldServer worldServer : server.getServer().worlds)
{ {
used = worldServer.dimension == dimension; used = worldServer.dimension == dimension;
if (used) if (used)
{ {
dimension++; dimension++;
break; break;
} }
} }
} while(used); } while(used);
boolean hardcore = false; boolean hardcore = false;
System.out.println("Loaded world with dimension : " + dimension); System.out.println("Loaded world with dimension : " + dimension);
WorldServer internal = new WorldServer(server.getServer(), new ServerNBTManager(server.getWorldContainer(), name, true), name, dimension, new WorldSettings(creator.seed(), EnumGamemode.getById(server.getDefaultGameMode().getValue()), generateStructures, hardcore, type), server.getServer().methodProfiler, creator.environment(), generator); WorldData worldData = new WorldData(new WorldSettings(creator.seed(), WorldSettings.EnumGamemode.getById(server.getDefaultGameMode().getValue()), generateStructures, hardcore, type), name);
WorldServer internal = new WorldServer(server.getServer(), new ServerNBTManager(server.getWorldContainer(), name, true), worldData, dimension, server.getServer().methodProfiler, creator.environment(), generator);
boolean containsWorld = false; boolean containsWorld = false;
for (World otherWorld : server.getWorlds()) for (World otherWorld : server.getWorlds())
{ {
if (otherWorld.getName().equalsIgnoreCase(name.toLowerCase())) if (otherWorld.getName().equalsIgnoreCase(name.toLowerCase()))
{ {
containsWorld = true; containsWorld = true;
break; break;
} }
} }
if (!containsWorld) if (!containsWorld)
return null; return null;
System.out.println("Created world with dimension : " + dimension); System.out.println("Created world with dimension : " + dimension);
internal.scoreboard = server.getScoreboardManager().getMainScoreboard().getHandle(); internal.scoreboard = server.getScoreboardManager().getMainScoreboard().getHandle();
internal.worldMaps = server.getServer().worlds.get(0).worldMaps; internal.worldMaps = server.getServer().worlds.get(0).worldMaps;
internal.tracker = new EntityTracker(internal); // CraftBukkit internal.tracker = new EntityTracker(internal); // CraftBukkit
internal.addIWorldAccess((IWorldAccess) new WorldManager(server.getServer(), internal)); internal.addIWorldAccess((IWorldAccess) new WorldManager(server.getServer(), internal));
internal.difficulty = EnumDifficulty.HARD; internal.worldData.setDifficulty(EnumDifficulty.HARD);
internal.setSpawnFlags(true, true); internal.setSpawnFlags(true, true);
internal.savingDisabled = true; internal.savingDisabled = true;
server.getServer().worlds.add(internal); server.getServer().worlds.add(internal);
/* /*
for (WorldServer worlder : server.getServer().worlds) for (WorldServer worlder : server.getServer().worlds)
{ {
System.out.println(worlder.getWorldData().getName() + " with dimension: " + worlder.dimension); System.out.println(worlder.getWorldData().getName() + " with dimension: " + worlder.dimension);
} }
*/ */
if (generator != null) if (generator != null)
{ {
internal.getWorld().getPopulators().addAll(generator.getDefaultPopulators(internal.getWorld())); internal.getWorld().getPopulators().addAll(generator.getDefaultPopulators(internal.getWorld()));
} }
server.getPluginManager().callEvent(new WorldInitEvent(internal.getWorld())); server.getPluginManager().callEvent(new WorldInitEvent(internal.getWorld()));
server.getPluginManager().callEvent(new WorldLoadEvent(internal.getWorld())); server.getPluginManager().callEvent(new WorldLoadEvent(internal.getWorld()));
/* /*
for (WorldServer worlder : server.getServer().worlds) for (WorldServer worlder : server.getServer().worlds)
{ {
System.out.println(worlder.getWorldData().getName() + " with dimension: " + worlder.dimension); System.out.println(worlder.getWorldData().getName() + " with dimension: " + worlder.dimension);
} }
*/ */
return internal.getWorld(); return internal.getWorld();
} }
} }