Implemented User Overrides
This commit is contained in:
@@ -2,7 +2,9 @@ package com.majinnaibu.bukkitplugins.metropolis;
|
|||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
|
import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Set;
|
||||||
import java.util.logging.Logger;
|
import java.util.logging.Logger;
|
||||||
|
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
@@ -15,6 +17,7 @@ import org.bukkit.command.CommandExecutor;
|
|||||||
import org.bukkit.command.CommandSender;
|
import org.bukkit.command.CommandSender;
|
||||||
import org.bukkit.command.PluginCommand;
|
import org.bukkit.command.PluginCommand;
|
||||||
import org.bukkit.configuration.Configuration;
|
import org.bukkit.configuration.Configuration;
|
||||||
|
import org.bukkit.configuration.ConfigurationSection;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.plugin.Plugin;
|
import org.bukkit.plugin.Plugin;
|
||||||
import org.bukkit.plugin.PluginDescriptionFile;
|
import org.bukkit.plugin.PluginDescriptionFile;
|
||||||
@@ -60,6 +63,8 @@ public class MetropolisPlugin extends JavaPlugin {
|
|||||||
public RegionManager regionManager = null;
|
public RegionManager regionManager = null;
|
||||||
|
|
||||||
private List<Plot> _occupiedPlots;
|
private List<Plot> _occupiedPlots;
|
||||||
|
private HashMap<String, List<Plot>> _ownedPlots;
|
||||||
|
private HashMap<String, UserOverride> _userOverrides;
|
||||||
|
|
||||||
private PlayerJoinListener _playerJoinListener = null;
|
private PlayerJoinListener _playerJoinListener = null;
|
||||||
|
|
||||||
@@ -90,6 +95,8 @@ public class MetropolisPlugin extends JavaPlugin {
|
|||||||
private boolean generateWall = false;
|
private boolean generateWall = false;
|
||||||
private Material wallMaterial = Material.GLASS;
|
private Material wallMaterial = Material.GLASS;
|
||||||
private int wallHeight = 128;
|
private int wallHeight = 128;
|
||||||
|
int _maxPlots = 1;
|
||||||
|
int _plotMultiplier = 1;
|
||||||
|
|
||||||
private Cuboid _spawnCuboid = null;
|
private Cuboid _spawnCuboid = null;
|
||||||
private Cuboid _cityCuboid = null;
|
private Cuboid _cityCuboid = null;
|
||||||
@@ -106,6 +113,9 @@ public class MetropolisPlugin extends JavaPlugin {
|
|||||||
public void onEnable() {
|
public void onEnable() {
|
||||||
pdf = getDescription();
|
pdf = getDescription();
|
||||||
|
|
||||||
|
_ownedPlots = new HashMap<String, List<Plot>>();
|
||||||
|
_userOverrides = new HashMap<String, UserOverride>();
|
||||||
|
|
||||||
if(DEBUG){log.info("Checking config");}
|
if(DEBUG){log.info("Checking config");}
|
||||||
Configuration config = getConfig();
|
Configuration config = getConfig();
|
||||||
if(!config.contains("version")){
|
if(!config.contains("version")){
|
||||||
@@ -113,6 +123,7 @@ public class MetropolisPlugin extends JavaPlugin {
|
|||||||
if(DEBUG){log.info("No config exists. Assuming new installation.");}
|
if(DEBUG){log.info("No config exists. Assuming new installation.");}
|
||||||
}else{
|
}else{
|
||||||
int configVersion = safeGetIntFromConfig(config, "version");
|
int configVersion = safeGetIntFromConfig(config, "version");
|
||||||
|
if(configVersion < version){
|
||||||
if(DEBUG){log.info(String.format("Updating config from version v%s to v%s.", configVersion, version));}
|
if(DEBUG){log.info(String.format("Updating config from version v%s to v%s.", configVersion, version));}
|
||||||
if(configVersion != version){
|
if(configVersion != version){
|
||||||
//upgrade config
|
//upgrade config
|
||||||
@@ -121,6 +132,7 @@ public class MetropolisPlugin extends JavaPlugin {
|
|||||||
saveConfig();
|
saveConfig();
|
||||||
if(DEBUG){log.info("Config updated");}
|
if(DEBUG){log.info("Config updated");}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
config.set("version", version);
|
config.set("version", version);
|
||||||
saveConfig();
|
saveConfig();
|
||||||
@@ -149,6 +161,11 @@ public class MetropolisPlugin extends JavaPlugin {
|
|||||||
wallMaterial = safeGetMaterialFromConfig(config, "wall.material");
|
wallMaterial = safeGetMaterialFromConfig(config, "wall.material");
|
||||||
wallHeight = safeGetIntFromConfig(config, "wall.material");
|
wallHeight = safeGetIntFromConfig(config, "wall.material");
|
||||||
worldName = safeGetStringFromConfig(config, "worldname");
|
worldName = safeGetStringFromConfig(config, "worldname");
|
||||||
|
_maxPlots = safeGetIntFromConfig(config, "plot.multiplier");
|
||||||
|
_plotMultiplier = safeGetIntFromConfig(config, "plot.maxPerPlayer");
|
||||||
|
|
||||||
|
buildUserOverrides();
|
||||||
|
|
||||||
saveConfig();
|
saveConfig();
|
||||||
if(DEBUG){log.info("Done reading config.");}
|
if(DEBUG){log.info("Done reading config.");}
|
||||||
|
|
||||||
@@ -268,6 +285,44 @@ public class MetropolisPlugin extends JavaPlugin {
|
|||||||
RegisterCommandHandler("metropolis-plot-reserve", new MetropolisPlotReserveCommand(this));
|
RegisterCommandHandler("metropolis-plot-reserve", new MetropolisPlotReserveCommand(this));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void buildUserOverrides() {
|
||||||
|
if(getConfig().isList("userOverrides")){
|
||||||
|
List<?> list = getConfig().getList("userOverrides");
|
||||||
|
|
||||||
|
for(Object o2 : list){
|
||||||
|
if(o2 instanceof HashMap<?, ?>){
|
||||||
|
HashMap<?, ?>map = (HashMap<?, ?>)o2;
|
||||||
|
String username = "";
|
||||||
|
if(map.containsKey("username")){
|
||||||
|
Object o3 = map.get("username");
|
||||||
|
if(o3 instanceof String){
|
||||||
|
username = (String)o3;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
int plotMultiplier = _plotMultiplier;
|
||||||
|
if(map.containsKey("plotMultiplier")){
|
||||||
|
Object o3 = map.get("plotMultiplier");
|
||||||
|
if(o3 instanceof Integer){
|
||||||
|
plotMultiplier = (Integer)o3;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
int maxPlots = _maxPlots;
|
||||||
|
if(map.containsKey("maxPlots")){
|
||||||
|
Object o3 = map.get("maxPlots");
|
||||||
|
if(o3 instanceof Integer){
|
||||||
|
maxPlots = (Integer)o3;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
UserOverride override = new UserOverride(username, plotMultiplier, maxPlots);
|
||||||
|
_userOverrides.put(username, override);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private Cuboid getCuboid(int row, int col) {
|
private Cuboid getCuboid(int row, int col) {
|
||||||
BlockVector min = getPlotMin(row, col);
|
BlockVector min = getPlotMin(row, col);
|
||||||
BlockVector max = getPlotMax(row, col);
|
BlockVector max = getPlotMax(row, col);
|
||||||
@@ -362,6 +417,7 @@ public class MetropolisPlugin extends JavaPlugin {
|
|||||||
|
|
||||||
private void fillOccupiedPlots(){
|
private void fillOccupiedPlots(){
|
||||||
_occupiedPlots.clear();
|
_occupiedPlots.clear();
|
||||||
|
_ownedPlots.clear();
|
||||||
|
|
||||||
for(ProtectedRegion region: regionManager.getRegions().values()){
|
for(ProtectedRegion region: regionManager.getRegions().values()){
|
||||||
if(region instanceof ProtectedCuboidRegion){
|
if(region instanceof ProtectedCuboidRegion){
|
||||||
@@ -375,9 +431,42 @@ public class MetropolisPlugin extends JavaPlugin {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
for(ProtectedRegion region: regionManager.getRegions().values()){
|
||||||
|
if(region instanceof ProtectedCuboidRegion){
|
||||||
|
ProtectedCuboidRegion cuboidRegion = (ProtectedCuboidRegion) region;
|
||||||
|
if(cuboidRegion.getId().startsWith("h_")){
|
||||||
|
int homeNum = 0;
|
||||||
|
String regionId = cuboidRegion.getId();
|
||||||
|
try{
|
||||||
|
if(regionId.indexOf('_', 2) > 2){
|
||||||
|
homeNum = Integer.parseInt(regionId.substring(2, regionId.indexOf('_', 2)));
|
||||||
|
}
|
||||||
|
}catch(NumberFormatException ex){
|
||||||
|
homeNum = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(homeNum > 0){
|
||||||
|
addOwnedPlot(regionId.substring(regionId.indexOf('_',2)), Plot.get(cuboidRegion));
|
||||||
|
}
|
||||||
|
}else if(cuboidRegion.getId().startsWith("r_")){
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
size=calculateCitySize();
|
size=calculateCitySize();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void addOwnedPlot(String substring, Plot plot) {
|
||||||
|
if(_ownedPlots.containsKey(substring)){
|
||||||
|
List<Plot> plots = _ownedPlots.get(substring);
|
||||||
|
plots.add(plot);
|
||||||
|
}else{
|
||||||
|
List<Plot> plots = new ArrayList<Plot>();
|
||||||
|
plots.add(plot);
|
||||||
|
_ownedPlots.put(substring, plots);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
|
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
|
||||||
return super.onCommand(sender, command, label, args);
|
return super.onCommand(sender, command, label, args);
|
||||||
@@ -836,13 +925,24 @@ public class MetropolisPlugin extends JavaPlugin {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public int getNumPlots(String name) {
|
public int getNumPlots(String name) {
|
||||||
// TODO Auto-generated method stub
|
if(_ownedPlots.containsKey(name)){
|
||||||
|
List<Plot> plots = _ownedPlots.get(name);
|
||||||
|
if(plots == null){
|
||||||
return 0;
|
return 0;
|
||||||
|
}else{
|
||||||
|
return plots.size();
|
||||||
|
}
|
||||||
|
}else{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public int getMaxPlots(String name) {
|
public int getMaxPlots(String name) {
|
||||||
// TODO Auto-generated method stub
|
if(_userOverrides.containsKey(name)){
|
||||||
return 0;
|
return _userOverrides.get(name).getMaxPlots();
|
||||||
|
}else{
|
||||||
|
return _maxPlots;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void assignPlot(Player player) {
|
public void assignPlot(Player player) {
|
||||||
@@ -864,4 +964,14 @@ public class MetropolisPlugin extends JavaPlugin {
|
|||||||
// TODO Auto-generated method stub
|
// TODO Auto-generated method stub
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public boolean homeExists(String name, int newHomeNumber) {
|
||||||
|
// TODO Auto-generated method stub
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setHome(String name, int newHomeNumber) {
|
||||||
|
// TODO Auto-generated method stub
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,17 @@
|
|||||||
|
package com.majinnaibu.bukkitplugins.metropolis;
|
||||||
|
|
||||||
|
public class UserOverride {
|
||||||
|
private String _username;
|
||||||
|
private int _plotMultiplier;
|
||||||
|
private int _maxPlots;
|
||||||
|
|
||||||
|
public String getUsername(){return _username;}
|
||||||
|
public int getPlotMultiplier(){return _plotMultiplier;}
|
||||||
|
public int getMaxPlots(){return _maxPlots;}
|
||||||
|
|
||||||
|
public UserOverride(String username, int plotMultiplier, int maxPlots){
|
||||||
|
_username = username;
|
||||||
|
_plotMultiplier = plotMultiplier;
|
||||||
|
_maxPlots = maxPlots;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,5 +1,6 @@
|
|||||||
package com.majinnaibu.bukkitplugins.metropolis.commands;
|
package com.majinnaibu.bukkitplugins.metropolis.commands;
|
||||||
|
|
||||||
|
import org.bukkit.OfflinePlayer;
|
||||||
import org.bukkit.command.Command;
|
import org.bukkit.command.Command;
|
||||||
import org.bukkit.command.CommandExecutor;
|
import org.bukkit.command.CommandExecutor;
|
||||||
import org.bukkit.command.CommandSender;
|
import org.bukkit.command.CommandSender;
|
||||||
@@ -15,10 +16,38 @@ public class MetropolisHomeMoveCommand implements CommandExecutor {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
|
public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
|
||||||
|
OfflinePlayer player = null;
|
||||||
|
int newHomeNumber = 0;
|
||||||
|
|
||||||
|
if(sender instanceof OfflinePlayer){
|
||||||
|
player = (OfflinePlayer)sender;
|
||||||
|
}
|
||||||
|
|
||||||
// TODO Auto-generated method stub
|
if(args.length == 1){
|
||||||
|
try{
|
||||||
|
newHomeNumber = Integer.parseInt(args[0]);
|
||||||
|
}catch(NumberFormatException ex){
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}else if(args.length >= 2){
|
||||||
|
try{
|
||||||
|
newHomeNumber = Integer.parseInt(args[0]);
|
||||||
|
}catch(NumberFormatException ex){
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
player = _plugin.getPlayer(args[1]);
|
||||||
|
}else{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(player == null || !_plugin.homeExists(player.getName(), newHomeNumber)){
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
_plugin.setHome(player.getName(), newHomeNumber);
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
plot:
|
plot:
|
||||||
sizeX: 32
|
sizeX: 32
|
||||||
sizeY: 256
|
sizeY: 256
|
||||||
sizeZ: 32
|
sizeZ: 32
|
||||||
ovvsetX: 0
|
ovvsetX: 0
|
||||||
offsetY: 0
|
offsetY: 0
|
||||||
@@ -9,8 +9,7 @@ plot:
|
|||||||
maxPerPlayer: 1
|
maxPerPlayer: 1
|
||||||
initial: 1
|
initial: 1
|
||||||
floor:
|
floor:
|
||||||
generate: true
|
generate: true
|
||||||
clearSpaceAbove: 66
|
|
||||||
clearSpaceAbove: 66
|
clearSpaceAbove: 66
|
||||||
material: 2
|
material: 2
|
||||||
supports:
|
supports:
|
||||||
@@ -27,3 +26,10 @@ wall:
|
|||||||
generate: true
|
generate: true
|
||||||
material: 1
|
material: 1
|
||||||
spawn:
|
spawn:
|
||||||
|
generate: true
|
||||||
|
setAsWorldSpawn: true
|
||||||
|
material: 2
|
||||||
|
wall:
|
||||||
|
generate: true
|
||||||
|
material: 7
|
||||||
|
height: 66
|
||||||
|
|||||||
@@ -7,4 +7,4 @@ database: false
|
|||||||
commands:
|
commands:
|
||||||
metropolis:
|
metropolis:
|
||||||
description: This command displays the current metropolis version.
|
description: This command displays the current metropolis version.
|
||||||
usage: /metropolis
|
usage: /metropolis
|
||||||
Reference in New Issue
Block a user