mirror of
https://github.com/IntellectualSites/PlotSquared.git
synced 2024-11-25 22:56:45 +01:00
closes #915
This commit is contained in:
parent
780d4e09d5
commit
5c60d69fd1
@ -1132,6 +1132,12 @@ public class PlayerEvents extends com.plotsquared.listener.PlotListener implemen
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
case SPAWNER:
|
||||||
|
if (!area.MOB_SPAWNER_SPAWNING) {
|
||||||
|
event.setCancelled(true);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
final Plot plot = area.getOwnedPlotAbs(loc);
|
final Plot plot = area.getOwnedPlotAbs(loc);
|
||||||
if (plot == null) {
|
if (plot == null) {
|
||||||
|
@ -20,8 +20,6 @@
|
|||||||
////////////////////////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
package com.intellectualcrafters.plot.commands;
|
package com.intellectualcrafters.plot.commands;
|
||||||
|
|
||||||
import java.util.UUID;
|
|
||||||
|
|
||||||
import com.intellectualcrafters.plot.config.C;
|
import com.intellectualcrafters.plot.config.C;
|
||||||
import com.intellectualcrafters.plot.database.DBFunc;
|
import com.intellectualcrafters.plot.database.DBFunc;
|
||||||
import com.intellectualcrafters.plot.object.Location;
|
import com.intellectualcrafters.plot.object.Location;
|
||||||
@ -34,6 +32,8 @@ import com.intellectualcrafters.plot.util.UUIDHandler;
|
|||||||
import com.plotsquared.general.commands.Argument;
|
import com.plotsquared.general.commands.Argument;
|
||||||
import com.plotsquared.general.commands.CommandDeclaration;
|
import com.plotsquared.general.commands.CommandDeclaration;
|
||||||
|
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
@CommandDeclaration(
|
@CommandDeclaration(
|
||||||
command = "trust",
|
command = "trust",
|
||||||
aliases = { "t" },
|
aliases = { "t" },
|
||||||
@ -77,7 +77,6 @@ public class Trust extends SubCommand {
|
|||||||
MainUtil.sendMessage(plr, C.ALREADY_OWNER);
|
MainUtil.sendMessage(plr, C.ALREADY_OWNER);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (plot.getTrusted().contains(uuid)) {
|
if (plot.getTrusted().contains(uuid)) {
|
||||||
MainUtil.sendMessage(plr, C.ALREADY_ADDED);
|
MainUtil.sendMessage(plr, C.ALREADY_ADDED);
|
||||||
return false;
|
return false;
|
||||||
|
@ -208,7 +208,7 @@ public class FlagManager {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static Flag getSettingFlagAbs(final PlotSettings settings, final String flag) {
|
public static Flag getSettingFlagAbs(final PlotSettings settings, final String flag) {
|
||||||
if (settings.flags == null || settings.flags.isEmpty()) {
|
if (settings.flags.isEmpty()) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
return settings.flags.get(flag);
|
return settings.flags.get(flag);
|
||||||
|
@ -54,6 +54,7 @@ public abstract class PlotArea {
|
|||||||
public boolean AUTO_MERGE = false;
|
public boolean AUTO_MERGE = false;
|
||||||
public boolean ALLOW_SIGNS = true;
|
public boolean ALLOW_SIGNS = true;
|
||||||
public boolean MOB_SPAWNING = false;
|
public boolean MOB_SPAWNING = false;
|
||||||
|
public boolean MOB_SPAWNER_SPAWNING = false;
|
||||||
public int PLOT_BIOME = 1;
|
public int PLOT_BIOME = 1;
|
||||||
public boolean PLOT_CHAT = false;
|
public boolean PLOT_CHAT = false;
|
||||||
public boolean SCHEMATIC_CLAIM_SPECIFY = false;
|
public boolean SCHEMATIC_CLAIM_SPECIFY = false;
|
||||||
@ -198,6 +199,7 @@ public abstract class PlotArea {
|
|||||||
TYPE = config.getInt("generator.type");
|
TYPE = config.getInt("generator.type");
|
||||||
}
|
}
|
||||||
MOB_SPAWNING = config.getBoolean("natural_mob_spawning");
|
MOB_SPAWNING = config.getBoolean("natural_mob_spawning");
|
||||||
|
MOB_SPAWNER_SPAWNING = config.getBoolean("mob_spawner_spawning");
|
||||||
AUTO_MERGE = config.getBoolean("plot.auto_merge");
|
AUTO_MERGE = config.getBoolean("plot.auto_merge");
|
||||||
MAX_PLOT_MEMBERS = config.getInt("limits.max-members");
|
MAX_PLOT_MEMBERS = config.getInt("limits.max-members");
|
||||||
ALLOW_SIGNS = config.getBoolean("plot.create_signs");
|
ALLOW_SIGNS = config.getBoolean("plot.create_signs");
|
||||||
@ -292,6 +294,7 @@ public abstract class PlotArea {
|
|||||||
public void saveConfiguration(final ConfigurationSection config) {
|
public void saveConfiguration(final ConfigurationSection config) {
|
||||||
final HashMap<String, Object> options = new HashMap<>();
|
final HashMap<String, Object> options = new HashMap<>();
|
||||||
options.put("natural_mob_spawning", MOB_SPAWNING);
|
options.put("natural_mob_spawning", MOB_SPAWNING);
|
||||||
|
options.put("mob_spawner_spawning", MOB_SPAWNER_SPAWNING);
|
||||||
options.put("plot.auto_merge", AUTO_MERGE);
|
options.put("plot.auto_merge", AUTO_MERGE);
|
||||||
options.put("plot.create_signs", ALLOW_SIGNS);
|
options.put("plot.create_signs", ALLOW_SIGNS);
|
||||||
options.put("plot.biome", "FOREST");
|
options.put("plot.biome", "FOREST");
|
||||||
|
@ -175,114 +175,111 @@ public class MainListener {
|
|||||||
if (plotworld == null) {
|
if (plotworld == null) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
event.filterEntities(new Predicate<Entity>() {
|
event.filterEntities((Predicate<Entity>) entity -> {
|
||||||
@Override
|
if (entity instanceof Player) {
|
||||||
public boolean test(Entity entity) {
|
return true;
|
||||||
if (entity instanceof Player) {
|
}
|
||||||
return true;
|
final Location loc = SpongeUtil.getLocation(entity);
|
||||||
}
|
final Plot plot = loc.getPlot();
|
||||||
final Location loc = SpongeUtil.getLocation(entity);
|
if (plot == null) {
|
||||||
final Plot plot = loc.getPlot();
|
if (loc.isPlotRoad()) {
|
||||||
if (plot == null) {
|
return false;
|
||||||
if (loc.isPlotRoad()) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
// Player player = this.<Player> getCause(event.getCause());
|
|
||||||
// TODO selectively cancel depending on spawn reason
|
|
||||||
// - Not sure if possible to get spawn reason (since there are no callbacks)
|
|
||||||
// if (player != null && !plotworld.SPAWN_EGGS) {
|
|
||||||
// return false;
|
|
||||||
// return true;
|
|
||||||
// }
|
|
||||||
|
|
||||||
if (entity.getType() == EntityTypes.ITEM) {
|
|
||||||
if (FlagManager.isPlotFlagFalse(plot, "item-drop")) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
int[] mobs = null;
|
|
||||||
if (entity instanceof Living) {
|
|
||||||
if (!plotworld.MOB_SPAWNING) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
final Flag mobCap = FlagManager.getPlotFlagRaw(plot, "mob-cap");
|
|
||||||
if (mobCap != null) {
|
|
||||||
final Integer cap = (Integer) mobCap.getValue();
|
|
||||||
if (cap == 0) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
mobs = plot.countEntities();
|
|
||||||
if (mobs[3] >= cap) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if ((entity instanceof Ambient) || (entity instanceof Animal)) {
|
|
||||||
final Flag animalFlag = FlagManager.getPlotFlagRaw(plot, "animal-cap");
|
|
||||||
if (animalFlag != null) {
|
|
||||||
final int cap = ((Integer) animalFlag.getValue());
|
|
||||||
if (cap == 0) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
if (mobs == null) {
|
|
||||||
mobs = plot.countEntities();
|
|
||||||
}
|
|
||||||
if (mobs[1] >= cap) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (entity instanceof Monster) {
|
|
||||||
final Flag monsterFlag = FlagManager.getPlotFlagRaw(plot, "hostile-cap");
|
|
||||||
if (monsterFlag != null) {
|
|
||||||
final int cap = ((Integer) monsterFlag.getValue());
|
|
||||||
if (cap == 0) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
if (mobs == null) {
|
|
||||||
mobs = plot.countEntities();
|
|
||||||
}
|
|
||||||
if (mobs[2] >= cap) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
if ((entity instanceof Minecart) || (entity instanceof Boat)) {
|
|
||||||
final Flag vehicleFlag = FlagManager.getPlotFlagRaw(plot, "vehicle-cap");
|
|
||||||
if (vehicleFlag != null) {
|
|
||||||
final int cap = ((Integer) vehicleFlag.getValue());
|
|
||||||
if (cap == 0) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
mobs = plot.countEntities();
|
|
||||||
if (mobs[4] >= cap) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
final Flag entityCap = FlagManager.getPlotFlagRaw(plot, "entity-cap");
|
|
||||||
if (entityCap != null) {
|
|
||||||
final Integer cap = (Integer) entityCap.getValue();
|
|
||||||
if (cap == 0) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
if (mobs == null) {
|
|
||||||
mobs = plot.countEntities();
|
|
||||||
}
|
|
||||||
if (mobs[0] >= cap) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (entity instanceof PrimedTNT) {
|
|
||||||
Vector3d pos = entity.getLocation().getPosition();
|
|
||||||
entity.setRotation(new Vector3d(MathMan.roundInt(pos.getX()), MathMan.roundInt(pos.getY()), MathMan.roundInt(pos.getZ())));
|
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
// Player player = this.<Player> getCause(event.getCause());
|
||||||
|
// TODO selectively cancel depending on spawn reason
|
||||||
|
// - Not sure if possible to get spawn reason (since there are no callbacks)
|
||||||
|
// if (player != null && !plotworld.SPAWN_EGGS) {
|
||||||
|
// return false;
|
||||||
|
// return true;
|
||||||
|
// }
|
||||||
|
|
||||||
|
if (entity.getType() == EntityTypes.ITEM) {
|
||||||
|
if (FlagManager.isPlotFlagFalse(plot, "item-drop")) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
int[] mobs = null;
|
||||||
|
if (entity instanceof Living) {
|
||||||
|
if (!plotworld.MOB_SPAWNING) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
final Flag mobCap = FlagManager.getPlotFlagRaw(plot, "mob-cap");
|
||||||
|
if (mobCap != null) {
|
||||||
|
final Integer cap = (Integer) mobCap.getValue();
|
||||||
|
if (cap == 0) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
mobs = plot.countEntities();
|
||||||
|
if (mobs[3] >= cap) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if ((entity instanceof Ambient) || (entity instanceof Animal)) {
|
||||||
|
final Flag animalFlag = FlagManager.getPlotFlagRaw(plot, "animal-cap");
|
||||||
|
if (animalFlag != null) {
|
||||||
|
final int cap = ((Integer) animalFlag.getValue());
|
||||||
|
if (cap == 0) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if (mobs == null) {
|
||||||
|
mobs = plot.countEntities();
|
||||||
|
}
|
||||||
|
if (mobs[1] >= cap) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (entity instanceof Monster) {
|
||||||
|
final Flag monsterFlag = FlagManager.getPlotFlagRaw(plot, "hostile-cap");
|
||||||
|
if (monsterFlag != null) {
|
||||||
|
final int cap = ((Integer) monsterFlag.getValue());
|
||||||
|
if (cap == 0) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if (mobs == null) {
|
||||||
|
mobs = plot.countEntities();
|
||||||
|
}
|
||||||
|
if (mobs[2] >= cap) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
if ((entity instanceof Minecart) || (entity instanceof Boat)) {
|
||||||
|
final Flag vehicleFlag = FlagManager.getPlotFlagRaw(plot, "vehicle-cap");
|
||||||
|
if (vehicleFlag != null) {
|
||||||
|
final int cap = ((Integer) vehicleFlag.getValue());
|
||||||
|
if (cap == 0) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
mobs = plot.countEntities();
|
||||||
|
if (mobs[4] >= cap) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
final Flag entityCap = FlagManager.getPlotFlagRaw(plot, "entity-cap");
|
||||||
|
if (entityCap != null) {
|
||||||
|
final Integer cap = (Integer) entityCap.getValue();
|
||||||
|
if (cap == 0) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if (mobs == null) {
|
||||||
|
mobs = plot.countEntities();
|
||||||
|
}
|
||||||
|
if (mobs[0] >= cap) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (entity instanceof PrimedTNT) {
|
||||||
|
Vector3d pos = entity.getLocation().getPosition();
|
||||||
|
entity.setRotation(new Vector3d(MathMan.roundInt(pos.getX()), MathMan.roundInt(pos.getY()), MathMan.roundInt(pos.getZ())));
|
||||||
|
}
|
||||||
|
return true;
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user