Add Custom world types to MVWho and MVEnv

This commit is contained in:
Eric Stokes 2011-06-24 21:43:05 -06:00
parent 09b6d72881
commit 63a2fc0f1f
10 changed files with 63 additions and 30 deletions

View File

@ -15,7 +15,7 @@ public class MVWorld {
private Configuration config; // Hold the Configuration File. private Configuration config; // Hold the Configuration File.
public World world; // The World Instance. public World world; // The World Instance.
public Environment environment; // Hold the Environment type EG Environment.NETHER / Environment.NORMAL public String environment; // Hold the Environment type EG Environment.NETHER / Environment.NORMAL
public Long seed; public Long seed;
public String name; // The Worlds Name, EG its folder name. public String name; // The Worlds Name, EG its folder name.
@ -44,7 +44,7 @@ public class MVWorld {
this.world = world; this.world = world;
this.name = world.getName(); this.name = world.getName();
this.environment = world.getEnvironment(); this.environment = env;
this.seed = seed; this.seed = seed;
initLists(); initLists();

View File

@ -3,6 +3,7 @@ package com.onarandombox.MultiverseCore;
import java.io.File; import java.io.File;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Calendar; import java.util.Calendar;
import java.util.Collection;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
@ -97,7 +98,7 @@ public class MultiverseCore extends JavaPlugin {
public HashMap<String, MVWorld> worlds = new HashMap<String, MVWorld>(); public HashMap<String, MVWorld> worlds = new HashMap<String, MVWorld>();
// HashMap to contain all custom generators. Plugins will have to register! // HashMap to contain all custom generators. Plugins will have to register!
public HashMap<String, ChunkGenerator> worldGenerators = new HashMap<String, ChunkGenerator>(); private HashMap<String, ChunkGenerator> worldGenerators = new HashMap<String, ChunkGenerator>();
// HashMap to contain information relating to the Players. // HashMap to contain information relating to the Players.
public HashMap<String, MVPlayerSession> playerSessions = new HashMap<String, MVPlayerSession>(); public HashMap<String, MVPlayerSession> playerSessions = new HashMap<String, MVPlayerSession>();
@ -307,6 +308,7 @@ public class MultiverseCore extends JavaPlugin {
commandManager.addCommand(new InfoCommand(this)); commandManager.addCommand(new InfoCommand(this));
commandManager.addCommand(new ReloadCommand(this)); commandManager.addCommand(new ReloadCommand(this));
commandManager.addCommand(new ModifyCommand(this)); commandManager.addCommand(new ModifyCommand(this));
commandManager.addCommand(new EnvironmentCommand(this));
} }
/** /**
@ -652,19 +654,22 @@ public class MultiverseCore extends JavaPlugin {
try { try {
return Environment.valueOf(env); return Environment.valueOf(env);
} catch (IllegalArgumentException e) { } catch (IllegalArgumentException e) {
// Sender will be null on loadWorlds
return null; return null;
// TODO: Show the player the mvenvironments command.
} }
} }
public ChunkGenerator getChunkGenFromEnv(String env) { private ChunkGenerator getChunkGenFromEnv(String env) {
if (worldGenerators.containsKey(env)) { if (worldGenerators.containsKey(env)) {
return worldGenerators.get(env); return worldGenerators.get(env);
} }
return null; return null;
} }
/**
* Other plugin devs can use this to tell MultiVerse about other environment types
* @param name
* @param generator
* @return
*/
public boolean registerEnvType(String name, ChunkGenerator generator) { public boolean registerEnvType(String name, ChunkGenerator generator) {
if (this.worldGenerators.containsKey(name)) { if (this.worldGenerators.containsKey(name)) {
return false; return false;
@ -725,4 +730,12 @@ public class MultiverseCore extends JavaPlugin {
queuedCommands.remove(c); queuedCommands.remove(c);
} }
} }
public Set<String> getWorldGenerators() {
return this.worldGenerators.keySet();
}
public Collection<MVWorld> getWorlds() {
return this.worlds.values();
}
} }

View File

@ -3,7 +3,6 @@ package com.onarandombox.MultiverseCore.command.commands;
import java.io.File; import java.io.File;
import org.bukkit.ChatColor; import org.bukkit.ChatColor;
import org.bukkit.World.Environment;
import org.bukkit.command.CommandSender; import org.bukkit.command.CommandSender;
import com.onarandombox.MultiverseCore.MultiverseCore; import com.onarandombox.MultiverseCore.MultiverseCore;
@ -48,7 +47,8 @@ public class CreateCommand extends BaseCommand {
} else { } else {
sender.sendMessage(ChatColor.RED + "FAILED."); sender.sendMessage(ChatColor.RED + "FAILED.");
if(plugin.getEnvFromString(env) == null) { if(plugin.getEnvFromString(env) == null) {
sender.sendMessage("I should show the envs I know here..."); sender.sendMessage("That world type did not exist.");
sender.sendMessage("For a list of available world types, type: /mvenv");
} }
} }
return; return;

View File

@ -7,14 +7,14 @@ import com.onarandombox.MultiverseCore.MultiverseCore;
import com.onarandombox.MultiverseCore.command.BaseCommand; import com.onarandombox.MultiverseCore.command.BaseCommand;
public class EnvironmentCommand extends BaseCommand{ public class EnvironmentCommand extends BaseCommand{
public EnvironmentCommand(MultiverseCore plugin) { public EnvironmentCommand(MultiverseCore plugin) {
super(plugin); super(plugin);
this.name = "List Environments"; this.name = "List Environments";
this.description = "Lists valid known environments"; this.description = "Lists valid known environments";
this.usage = "/mvenv"; this.usage = "/mvenv";
this.minArgs = 2; this.minArgs = 0;
this.maxArgs = 2; this.maxArgs = 0;
this.identifiers.add("mvenv"); this.identifiers.add("mvenv");
this.permission = "multiverse.world.list.environments"; this.permission = "multiverse.world.list.environments";
this.requiresOp = false; this.requiresOp = false;
@ -22,10 +22,20 @@ public class EnvironmentCommand extends BaseCommand{
@Override @Override
public void execute(CommandSender sender, String[] args) { public void execute(CommandSender sender, String[] args) {
this.showEnvironments(sender);
}
public void showEnvironments(CommandSender sender) {
sender.sendMessage(ChatColor.YELLOW + "Valid Environments are:"); sender.sendMessage(ChatColor.YELLOW + "Valid Environments are:");
sender.sendMessage(ChatColor.GREEN + "NORMAL"); sender.sendMessage(ChatColor.GREEN + "NORMAL");
sender.sendMessage(ChatColor.RED + "NETHER"); sender.sendMessage(ChatColor.RED + "NETHER");
sender.sendMessage(ChatColor.AQUA + "SKYLANDS"); sender.sendMessage(ChatColor.AQUA + "SKYLANDS");
if(plugin.getWorldGenerators().size() > 0) {
sender.sendMessage(ChatColor.DARK_AQUA + "CUSTOM WORLD TYPES:");
}
for(String s : plugin.getWorldGenerators()) {
sender.sendMessage(ChatColor.GOLD + s);
}
} }
} }

View File

@ -3,7 +3,6 @@ package com.onarandombox.MultiverseCore.command.commands;
import java.io.File; import java.io.File;
import org.bukkit.ChatColor; import org.bukkit.ChatColor;
import org.bukkit.World.Environment;
import org.bukkit.command.CommandSender; import org.bukkit.command.CommandSender;
import com.onarandombox.MultiverseCore.MultiverseCore; import com.onarandombox.MultiverseCore.MultiverseCore;
@ -40,7 +39,8 @@ public class ImportCommand extends BaseCommand {
return; return;
} else if(env == null) { } else if(env == null) {
sender.sendMessage(ChatColor.RED + "FAILED."); sender.sendMessage(ChatColor.RED + "FAILED.");
sender.sendMessage("I should show valid envs here..."); sender.sendMessage("That world type did not exist.");
sender.sendMessage("For a list of available world types, type: /mvenv");
} else { } else {
sender.sendMessage(ChatColor.RED + "FAILED."); sender.sendMessage(ChatColor.RED + "FAILED.");
sender.sendMessage("That world folder does not exist..."); sender.sendMessage("That world folder does not exist...");

View File

@ -25,6 +25,7 @@ public class ListCommand extends BaseCommand {
@Override @Override
public void execute(CommandSender sender, String[] args) { public void execute(CommandSender sender, String[] args) {
//TODO: Show custom worldtypes
Player p = null; Player p = null;
if (sender instanceof Player) { if (sender instanceof Player) {
p = (Player) sender; p = (Player) sender;

View File

@ -6,7 +6,6 @@ import java.util.List;
import org.bukkit.command.CommandSender; import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import com.onarandombox.MultiverseCore.MVCommandHandler;
import com.onarandombox.MultiverseCore.MultiverseCore; import com.onarandombox.MultiverseCore.MultiverseCore;
import com.onarandombox.MultiverseCore.command.BaseCommand; import com.onarandombox.MultiverseCore.command.BaseCommand;
import com.onarandombox.utils.PurgeWorlds; import com.onarandombox.utils.PurgeWorlds;

View File

@ -2,7 +2,6 @@ package com.onarandombox.MultiverseCore.command.commands;
import org.bukkit.command.CommandSender; import org.bukkit.command.CommandSender;
import com.onarandombox.MultiverseCore.MVCommandHandler;
import com.onarandombox.MultiverseCore.MultiverseCore; import com.onarandombox.MultiverseCore.MultiverseCore;
import com.onarandombox.MultiverseCore.command.BaseCommand; import com.onarandombox.MultiverseCore.command.BaseCommand;

View File

@ -9,6 +9,7 @@ import org.bukkit.World.Environment;
import org.bukkit.command.CommandSender; import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import com.onarandombox.MultiverseCore.MVWorld;
import com.onarandombox.MultiverseCore.MultiverseCore; import com.onarandombox.MultiverseCore.MultiverseCore;
import com.onarandombox.MultiverseCore.command.BaseCommand; import com.onarandombox.MultiverseCore.command.BaseCommand;
@ -34,36 +35,42 @@ public class WhoCommand extends BaseCommand {
p = (Player) sender; p = (Player) sender;
} }
List<World> worlds = new ArrayList<World>(); List<MVWorld> worlds = new ArrayList<MVWorld>();
if (args.length > 0) { if (args.length > 0) {
World world = plugin.getServer().getWorld(args[0].toString()); if (plugin.worlds.containsKey(args[0])) {
if (world != null) { worlds.add(plugin.worlds.get(args[0]));
worlds.add(world);
} else { } else {
sender.sendMessage(ChatColor.RED + "World does not exist"); sender.sendMessage(ChatColor.RED + "World does not exist");
return; return;
} }
} else { } else {
worlds = plugin.getServer().getWorlds(); worlds = new ArrayList<MVWorld>(plugin.getWorlds());
} }
for (World world : worlds) { for (MVWorld world : worlds) {
if (!(plugin.worlds.containsKey(world.getName()))) { if (!(plugin.worlds.containsKey(world.name))) {
continue; continue;
} }
if (p != null && (!plugin.ph.canEnterWorld(p, world))) {
World w = plugin.getServer().getWorld(world.name);
if (p != null && (!plugin.ph.canEnterWorld(p, w))) {
continue; continue;
} }
ChatColor color = ChatColor.BLUE;
if (world.getEnvironment() == Environment.NETHER) { ChatColor color = ChatColor.GOLD;
Environment env = plugin.getEnvFromString(world.environment);
if(plugin.getEnvFromString(world.environment) == null) {
color = ChatColor.GOLD;
}
else if (env == Environment.NETHER) {
color = ChatColor.RED; color = ChatColor.RED;
} else if (world.getEnvironment() == Environment.NORMAL) { } else if (env == Environment.NORMAL) {
color = ChatColor.GREEN; color = ChatColor.GREEN;
} else if (world.getEnvironment() == Environment.SKYLANDS) { } else if (env == Environment.SKYLANDS) {
color = ChatColor.AQUA; color = ChatColor.AQUA;
} }
List<Player> players = world.getPlayers(); List<Player> players = w.getPlayers();
String result = ""; String result = "";
if (players.size() <= 0) { if (players.size() <= 0) {
@ -73,7 +80,7 @@ public class WhoCommand extends BaseCommand {
result += player.getName() + " "; result += player.getName() + " ";
} }
} }
sender.sendMessage(color + world.getName() + ChatColor.WHITE + " - " + result); sender.sendMessage(color + world.name + ChatColor.WHITE + " - " + result);
} }
return; return;
} }

View File

@ -83,3 +83,7 @@ commands:
description: Gets world info. description: Gets world info.
usage: | usage: |
/<command> [world] /<command> [world]
mvenv:
description: Tells the user all possible world types.
usage: |
/<command>