mirror of
https://github.com/Multiverse/Multiverse-Core.git
synced 2024-11-29 05:55:48 +01:00
Fix Anchors not being saved proplery, Fix safe spawn disabling, closes #207, Remove server.properties code, that bukkit bug is gone, closes #275
This commit is contained in:
parent
e110b1f6a5
commit
5d2a1e478c
@ -46,6 +46,7 @@ public class MVWorld implements MultiverseWorld {
|
|||||||
|
|
||||||
private Map<String, List<String>> masterList;
|
private Map<String, List<String>> masterList;
|
||||||
private Map<String, MVConfigProperty> propertyList;
|
private Map<String, MVConfigProperty> propertyList;
|
||||||
|
private String generator;
|
||||||
|
|
||||||
private Permission permission;
|
private Permission permission;
|
||||||
private Permission exempt;
|
private Permission exempt;
|
||||||
@ -110,6 +111,7 @@ public class MVWorld implements MultiverseWorld {
|
|||||||
this.propertyList.put("bedrespawn", fac.getNewProperty("bedrespawn", true, "If a player dies in this world, shoudld they go to their bed?"));
|
this.propertyList.put("bedrespawn", fac.getNewProperty("bedrespawn", true, "If a player dies in this world, shoudld they go to their bed?"));
|
||||||
((LocationConfigProperty) this.getKnownProperty("spawn")).setValue(this.readSpawnFromConfig(this.getCBWorld()));
|
((LocationConfigProperty) this.getKnownProperty("spawn")).setValue(this.readSpawnFromConfig(this.getCBWorld()));
|
||||||
|
|
||||||
|
|
||||||
// Set aliases
|
// Set aliases
|
||||||
this.propertyAliases = new HashMap<String, String>();
|
this.propertyAliases = new HashMap<String, String>();
|
||||||
this.propertyAliases.put("curr", "currency");
|
this.propertyAliases.put("curr", "currency");
|
||||||
@ -633,6 +635,7 @@ public class MVWorld implements MultiverseWorld {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private Location readSpawnFromConfig(World w) {
|
private Location readSpawnFromConfig(World w) {
|
||||||
|
|
||||||
Location spawnLocation = w.getSpawnLocation();
|
Location spawnLocation = w.getSpawnLocation();
|
||||||
Location configLocation = this.getSpawnLocation();
|
Location configLocation = this.getSpawnLocation();
|
||||||
|
|
||||||
@ -642,11 +645,11 @@ public class MVWorld implements MultiverseWorld {
|
|||||||
BlockSafety bs = new BlockSafety();
|
BlockSafety bs = new BlockSafety();
|
||||||
// Verify that location was safe
|
// Verify that location was safe
|
||||||
if (!bs.playerCanSpawnHereSafely(configLocation)) {
|
if (!bs.playerCanSpawnHereSafely(configLocation)) {
|
||||||
if (!((BooleanConfigProperty) this.getKnownProperty("adjustspawn")).getValue()) {
|
if (!this.getAdjustSpawn()) {
|
||||||
this.plugin.log(Level.WARNING, "Spawn location from world.dat file was unsafe!!");
|
this.plugin.log(Level.FINE, "Spawn location from world.dat file was unsafe!!");
|
||||||
this.plugin.log(Level.WARNING, "NOT adjusting spawn for '" + this.getAlias() + "' because you told me not to.");
|
this.plugin.log(Level.FINE, "NOT adjusting spawn for '" + this.getAlias() + "' because you told me not to.");
|
||||||
this.plugin.log(Level.WARNING, "To turn on spawn adjustment for this world simply type:");
|
this.plugin.log(Level.FINE, "To turn on spawn adjustment for this world simply type:");
|
||||||
this.plugin.log(Level.WARNING, "/mvm set adjustspawn true " + this.getAlias());
|
this.plugin.log(Level.FINE, "/mvm set adjustspawn true " + this.getAlias());
|
||||||
return configLocation;
|
return configLocation;
|
||||||
}
|
}
|
||||||
// If it's not, find a better one.
|
// If it's not, find a better one.
|
||||||
@ -659,9 +662,20 @@ public class MVWorld implements MultiverseWorld {
|
|||||||
this.setSpawnLocation(newSpawn);
|
this.setSpawnLocation(newSpawn);
|
||||||
configLocation = this.getSpawnLocation();
|
configLocation = this.getSpawnLocation();
|
||||||
this.plugin.log(Level.INFO, "New Spawn for '" + this.getName() + "' is Located at: " + LocationManipulation.locationToString(configLocation));
|
this.plugin.log(Level.INFO, "New Spawn for '" + this.getName() + "' is Located at: " + LocationManipulation.locationToString(configLocation));
|
||||||
|
} else {
|
||||||
|
// If it's a standard end world, let's check in a better place:
|
||||||
|
Location newerSpawn = null;
|
||||||
|
newerSpawn = bs.getTopBlock(new Location(w, 0, 0, 0));
|
||||||
|
if (newerSpawn != null) {
|
||||||
|
this.setSpawnLocation(newerSpawn);
|
||||||
|
configLocation = this.getSpawnLocation();
|
||||||
|
this.plugin.log(Level.INFO, "New Spawn for '" + this.getName() + "' is Located at: " + LocationManipulation.locationToString(configLocation));
|
||||||
} else {
|
} else {
|
||||||
this.plugin.log(Level.SEVERE, "New safe spawn NOT found!!!");
|
this.plugin.log(Level.SEVERE, "New safe spawn NOT found!!!");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return configLocation;
|
return configLocation;
|
||||||
}
|
}
|
||||||
|
@ -164,7 +164,6 @@ public class MultiverseCore extends JavaPlugin implements MVPlugin, Core {
|
|||||||
this.banker = new AllPay(this, tag + " ");
|
this.banker = new AllPay(this, tag + " ");
|
||||||
// Output a little snippet to show it's enabled.
|
// Output a little snippet to show it's enabled.
|
||||||
this.log(Level.INFO, "- Version " + this.getDescription().getVersion() + " (API v" + Protocol + ") Enabled - By " + getAuthors());
|
this.log(Level.INFO, "- Version " + this.getDescription().getVersion() + " (API v" + Protocol + ") Enabled - By " + getAuthors());
|
||||||
this.checkServerProps();
|
|
||||||
// Load the defaultWorldGenerators
|
// Load the defaultWorldGenerators
|
||||||
this.worldManager.getDefaultWorldGenerators();
|
this.worldManager.getDefaultWorldGenerators();
|
||||||
|
|
||||||
@ -569,28 +568,6 @@ public class MultiverseCore extends JavaPlugin implements MVPlugin, Core {
|
|||||||
this.serverFolder = newServerFolder;
|
this.serverFolder = newServerFolder;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void checkServerProps() {
|
|
||||||
File serverProperties = new File(serverFolder, "server.properties");
|
|
||||||
try {
|
|
||||||
FileInputStream fileStream = new FileInputStream(serverProperties);
|
|
||||||
DataInputStream in = new DataInputStream(fileStream);
|
|
||||||
BufferedReader br = new BufferedReader(new InputStreamReader(in));
|
|
||||||
String propLine;
|
|
||||||
while ((propLine = br.readLine()) != null) {
|
|
||||||
// Print the content on the console
|
|
||||||
if (propLine.matches(".*spawn-monsters.*") && !propLine.matches(".*spawn-monsters\\s*=\\s*true.*")) {
|
|
||||||
this.log(Level.SEVERE, "Monster spawning has been DISABLED.");
|
|
||||||
this.log(Level.SEVERE, "In order to let Multiverse fully control your worlds:");
|
|
||||||
this.log(Level.SEVERE, "Please set 'spawn-monsters=true' in your server.properties file!");
|
|
||||||
MultiverseCore.MobsDisabledInDefaultWorld = true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} catch (IOException e) {
|
|
||||||
// This should never happen...
|
|
||||||
this.log(Level.SEVERE, e.getMessage());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setSpout() {
|
public void setSpout() {
|
||||||
this.spoutInterface = new SpoutInterface();
|
this.spoutInterface = new SpoutInterface();
|
||||||
this.commandHandler.registerCommand(new SpoutCommand(this));
|
this.commandHandler.registerCommand(new SpoutCommand(this));
|
||||||
|
@ -32,6 +32,7 @@ public class AnchorCommand extends PaginatedCoreCommand<String> {
|
|||||||
this.addCommandExample("/mv anchor " + ChatColor.GREEN + "awesomething " + ChatColor.RED + "-d");
|
this.addCommandExample("/mv anchor " + ChatColor.GREEN + "awesomething " + ChatColor.RED + "-d");
|
||||||
this.addCommandExample("/mv anchors ");
|
this.addCommandExample("/mv anchors ");
|
||||||
this.setPermission("multiverse.core.anchor", "Allows management of Anchor Destinations.", PermissionDefault.OP);
|
this.setPermission("multiverse.core.anchor", "Allows management of Anchor Destinations.", PermissionDefault.OP);
|
||||||
|
this.setItemsPerPage(8);
|
||||||
}
|
}
|
||||||
|
|
||||||
private List<String> getFancyAnchorList(Player p) {
|
private List<String> getFancyAnchorList(Player p) {
|
||||||
|
@ -9,7 +9,9 @@ package com.onarandombox.MultiverseCore.commands;
|
|||||||
|
|
||||||
import com.onarandombox.MultiverseCore.MultiverseCore;
|
import com.onarandombox.MultiverseCore.MultiverseCore;
|
||||||
import com.onarandombox.MultiverseCore.api.MultiverseWorld;
|
import com.onarandombox.MultiverseCore.api.MultiverseWorld;
|
||||||
|
import com.onarandombox.MultiverseCore.utils.BlockSafety;
|
||||||
import com.onarandombox.MultiverseCore.utils.LocationManipulation;
|
import com.onarandombox.MultiverseCore.utils.LocationManipulation;
|
||||||
|
import org.bukkit.ChatColor;
|
||||||
import org.bukkit.Location;
|
import org.bukkit.Location;
|
||||||
import org.bukkit.World;
|
import org.bukkit.World;
|
||||||
import org.bukkit.command.CommandSender;
|
import org.bukkit.command.CommandSender;
|
||||||
@ -19,7 +21,6 @@ import org.bukkit.permissions.PermissionDefault;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
public class SetSpawnCommand extends MultiverseCommand {
|
public class SetSpawnCommand extends MultiverseCommand {
|
||||||
|
|
||||||
public SetSpawnCommand(MultiverseCore plugin) {
|
public SetSpawnCommand(MultiverseCore plugin) {
|
||||||
super(plugin);
|
super(plugin);
|
||||||
this.setName("Set World Spawn");
|
this.setName("Set World Spawn");
|
||||||
@ -47,6 +48,14 @@ public class SetSpawnCommand extends MultiverseCommand {
|
|||||||
MultiverseWorld foundWorld = this.plugin.getMVWorldManager().getMVWorld(w.getName());
|
MultiverseWorld foundWorld = this.plugin.getMVWorldManager().getMVWorld(w.getName());
|
||||||
if (foundWorld != null) {
|
if (foundWorld != null) {
|
||||||
foundWorld.setSpawnLocation(p.getLocation());
|
foundWorld.setSpawnLocation(p.getLocation());
|
||||||
|
BlockSafety bs = new BlockSafety();
|
||||||
|
if(!bs.playerCanSpawnHereSafely(p.getLocation()) && foundWorld.getAdjustSpawn()) {
|
||||||
|
sender.sendMessage("It looks like that location would normally be unsafe. But I trust you.");
|
||||||
|
sender.sendMessage("I'm turning off the Safe-T-Teleporter for spawns to this world.");
|
||||||
|
sender.sendMessage("If you want this turned back on just do:");
|
||||||
|
sender.sendMessage(ChatColor.AQUA + "/mvm set adjustspawn true " + foundWorld.getAlias());
|
||||||
|
foundWorld.setAdjustSpawn(false);
|
||||||
|
}
|
||||||
sender.sendMessage("Spawn was set to: " + LocationManipulation.strCoords(p.getLocation()));
|
sender.sendMessage("Spawn was set to: " + LocationManipulation.strCoords(p.getLocation()));
|
||||||
} else {
|
} else {
|
||||||
w.setSpawnLocation(l.getBlockX(), l.getBlockY(), l.getBlockZ());
|
w.setSpawnLocation(l.getBlockX(), l.getBlockY(), l.getBlockZ());
|
||||||
|
@ -23,7 +23,9 @@ public class BlockSafety {
|
|||||||
// TODO Auto-generated constructor stub
|
// TODO Auto-generated constructor stub
|
||||||
}
|
}
|
||||||
|
|
||||||
/** This function checks whether the block at the given coordinates are above air or not. */
|
/**
|
||||||
|
* This function checks whether the block at the given coordinates are above air or not.
|
||||||
|
*/
|
||||||
public boolean isBlockAboveAir(Location l) {
|
public boolean isBlockAboveAir(Location l) {
|
||||||
Location downOne = new Location(l.getWorld(), l.getX(), l.getY(), l.getZ());
|
Location downOne = new Location(l.getWorld(), l.getX(), l.getY(), l.getZ());
|
||||||
downOne.setY(downOne.getY() - 1);
|
downOne.setY(downOne.getY() - 1);
|
||||||
@ -79,11 +81,34 @@ public class BlockSafety {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Location getTopBlock(Location l) {
|
||||||
|
Location check = l.clone();
|
||||||
|
check.setY(127);
|
||||||
|
while (check.getY() > 0) {
|
||||||
|
if (this.playerCanSpawnHereSafely(check)) {
|
||||||
|
return check;
|
||||||
|
}
|
||||||
|
check.setY(check.getY() - 1);
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Location getBottomBlock(Location l) {
|
||||||
|
Location check = l.clone();
|
||||||
|
check.setY(0);
|
||||||
|
while (check.getY() <= 126) {
|
||||||
|
if (this.playerCanSpawnHereSafely(check)) {
|
||||||
|
return check;
|
||||||
|
}
|
||||||
|
check.setY(check.getY() + 1);
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* If someone has a better way of this... Please either tell us, or submit a pull request!
|
* If someone has a better way of this... Please either tell us, or submit a pull request!
|
||||||
*
|
*
|
||||||
* @param type
|
* @param type
|
||||||
*
|
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
private boolean isSolidBlock(Material type) {
|
private boolean isSolidBlock(Material type) {
|
||||||
@ -174,7 +199,6 @@ public class BlockSafety {
|
|||||||
* Checks recursively below location L for 2 blocks of water
|
* Checks recursively below location L for 2 blocks of water
|
||||||
*
|
*
|
||||||
* @param l
|
* @param l
|
||||||
*
|
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
public boolean hasTwoBlocksofWaterBelow(Location l) {
|
public boolean hasTwoBlocksofWaterBelow(Location l) {
|
||||||
|
@ -45,7 +45,7 @@ public class LocationManipulation {
|
|||||||
return "";
|
return "";
|
||||||
}
|
}
|
||||||
StringBuilder l = new StringBuilder();
|
StringBuilder l = new StringBuilder();
|
||||||
l.append(location.getWorld() + ":");
|
l.append(location.getWorld().getName() + ":");
|
||||||
l.append(location.getBlockX() + ",");
|
l.append(location.getBlockX() + ",");
|
||||||
l.append(location.getBlockY() + ",");
|
l.append(location.getBlockY() + ",");
|
||||||
l.append(location.getBlockZ() + ":");
|
l.append(location.getBlockZ() + ":");
|
||||||
|
Loading…
Reference in New Issue
Block a user