This commit is contained in:
MattBDev
2016-05-12 15:43:44 -04:00
9 changed files with 158 additions and 114 deletions

View File

@ -196,14 +196,9 @@ public class PlayerEvents extends PlotListener implements Listener {
if (plot == null) {
return;
}
Optional<Boolean> flag = plot.getFlag(Flags.REDSTONE);
if (flag.isPresent()) {
if (flag.get()) {
return;
} else {
event.setNewCurrent(0);
return;
}
if (Flags.REDSTONE.isFalse(plot)) {
event.setNewCurrent(0);
return;
}
if (Settings.REDSTONE_DISABLER) {
if (UUIDHandler.getPlayer(plot.owner) == null) {
@ -246,8 +241,7 @@ public class PlayerEvents extends PlotListener implements Listener {
if (plot == null) {
return;
}
Optional<Boolean> flag = plot.getFlag(Flags.REDSTONE);
if (flag.isPresent() && !flag.get()) {
if (Flags.REDSTONE.isFalse(plot)) {
event.setCancelled(true);
}
return;
@ -263,10 +257,12 @@ public class PlayerEvents extends PlotListener implements Listener {
return;
}
Plot plot = area.getOwnedPlotAbs(loc);
if (plot != null && plot.getFlag(Flags.DISABLE_PHYSICS).or(false)) {
event.setCancelled(true);
if (plot == null) {
return;
}
if (Flags.DISABLE_PHYSICS.isFalse(plot)) {
event.setCancelled(true);
}
return;
default:
break;
@ -691,8 +687,7 @@ public class PlayerEvents extends PlotListener implements Listener {
}
Plot plot = area.getOwnedPlot(location);
if (plot != null) {
Optional<Boolean> flag = plot.getFlag(Flags.EXPLOSION);
if (flag.isPresent() && flag.get()) {
if (Flags.EXPLOSION.isTrue(plot)) {
List<MetadataValue> meta = event.getEntity().getMetadata("plot");
Plot origin;
if (meta.isEmpty()) {
@ -789,20 +784,17 @@ public class PlayerEvents extends PlotListener implements Listener {
Optional<Boolean> flag;
switch (block.getType()) {
case GRASS:
flag = plot.getFlag(Flags.GRASS_GROW);
if (flag.isPresent() && flag.get()) {
if (Flags.GRASS_GROW.isFalse(plot)) {
event.setCancelled(true);
}
break;
case MYCEL:
flag = plot.getFlag(Flags.MYCEL_GROW);
if (flag.isPresent() && flag.get()) {
if (Flags.MYCEL_GROW.isFalse(plot)) {
event.setCancelled(true);
}
break;
case VINE:
flag = plot.getFlag(Flags.VINE_GROW);
if (flag.isPresent() && flag.get()) {
if (Flags.VINE_GROW.isFalse(plot)) {
event.setCancelled(true);
}
break;
@ -872,27 +864,18 @@ public class PlayerEvents extends PlotListener implements Listener {
}
switch (b.getType()) {
case ICE:
Optional<Boolean> ice_melt = plot.getFlag(Flags.ICE_MELT);
if (ice_melt.isPresent()) {
if (!ice_melt.get()) {
event.setCancelled(true);
}
if (Flags.ICE_MELT.isFalse(plot)) {
event.setCancelled(true);
}
break;
case SNOW:
Optional<Boolean> snow_melt = plot.getFlag(Flags.SNOW_MELT);
if (snow_melt.isPresent()) {
if (!snow_melt.get()) {
event.setCancelled(true);
}
if (Flags.SNOW_MELT.isFalse(plot)) {
event.setCancelled(true);
}
break;
case SOIL:
Optional<Boolean> soil_dry = plot.getFlag(Flags.SOIL_DRY);
if (soil_dry.isPresent()) {
if (!soil_dry.get()) {
event.setCancelled(true);
}
if (Flags.SOIL_DRY.isFalse(plot)) {
event.setCancelled(true);
}
break;
}
@ -910,8 +893,9 @@ public class PlayerEvents extends PlotListener implements Listener {
Plot plot = area.getOwnedPlot(tLocation);
Location fLocation = BukkitUtil.getLocation(from.getLocation());
if (plot != null) {
if (plot.getFlag(Flags.DISABLE_PHYSICS).or(false) || !area.contains(fLocation.getX(), fLocation.getZ()) || !Objects
.equals(plot, area.getOwnedPlot(fLocation))) {
if (Flags.DISABLE_PHYSICS.isFalse(plot)) {
event.setCancelled(true);
} else if (!area.contains(fLocation.getX(), fLocation.getZ()) || !Objects.equals(plot, area.getOwnedPlot(fLocation))) {
event.setCancelled(true);
}
} else if (!area.contains(fLocation.getX(), fLocation.getZ()) || !Objects.equals(plot, area.getOwnedPlot(fLocation))) {
@ -1349,7 +1333,7 @@ public class PlayerEvents extends PlotListener implements Listener {
return;
}
Plot plot = area.getOwnedPlotAbs(location);
if (plot == null || plot.getFlag(Flags.DISABLE_PHYSICS).or(false)) {
if (plot == null || plot.getFlag(Flags.DISABLE_PHYSICS, false)) {
event.setCancelled(true);
return;
}
@ -1400,14 +1384,14 @@ public class PlayerEvents extends PlotListener implements Listener {
default:
i = 0;
}
Optional<Integer> plotFlag = plot.getFlag(flag);
if (!plotFlag.isPresent()) {
int cap = plot.getFlag(flag, Integer.MAX_VALUE);
if (cap != Integer.MAX_VALUE) {
continue;
}
if (mobs == null) {
mobs = plot.countEntities();
}
if (mobs[i] >= plotFlag.get()) {
if (mobs[i] >= cap) {
return true;
}
}
@ -1535,8 +1519,9 @@ public class PlayerEvents extends PlotListener implements Listener {
}
Plot plot = location.getOwnedPlot();
if (plot == null || !plot.getFlag(Flags.BLOCK_BURN).or(false)) {
if (plot == null || !plot.getFlag(Flags.BLOCK_BURN, false)) {
event.setCancelled(true);
return;
}
}
@ -1584,7 +1569,7 @@ public class PlayerEvents extends PlotListener implements Listener {
MainUtil.sendMessage(pp, C.NO_PERMISSION_EVENT, C.PERMISSION_ADMIN_BUILD_OTHER);
event.setCancelled(true);
}
} else if (!plot.getFlag(Flags.BLOCK_IGNITION).or(false)) {
} else if (Flags.BLOCK_IGNITION.isFalse(plot)) {
event.setCancelled(true);
}
} else {
@ -1593,7 +1578,7 @@ public class PlayerEvents extends PlotListener implements Listener {
return;
}
if (ignitingEntity != null) {
if (!plot.getFlag(Flags.BLOCK_IGNITION).or(false)) {
if (!plot.getFlag(Flags.BLOCK_IGNITION,false)) {
event.setCancelled(true);
return;
}
@ -1617,7 +1602,7 @@ public class PlayerEvents extends PlotListener implements Listener {
} else if (event.getIgnitingBlock() != null) {
Block ignitingBlock = event.getIgnitingBlock();
Plot plotIgnited = BukkitUtil.getLocation(ignitingBlock.getLocation()).getPlot();
if (igniteCause == BlockIgniteEvent.IgniteCause.FLINT_AND_STEEL && (!plot.getFlag(Flags.BLOCK_IGNITION).or(false)
if (igniteCause == BlockIgniteEvent.IgniteCause.FLINT_AND_STEEL && (!plot.getFlag(Flags.BLOCK_IGNITION,false)
|| plotIgnited == null || !plotIgnited.equals(plot))
|| (igniteCause == BlockIgniteEvent.IgniteCause.SPREAD || igniteCause == BlockIgniteEvent.IgniteCause.LAVA) && (
!plot.getFlag(Flags.BLOCK_IGNITION).or(false) || plotIgnited == null || !plotIgnited.equals(plot))) {
@ -1923,7 +1908,7 @@ public class PlayerEvents extends PlotListener implements Listener {
return;
}
if (!plot.isAdded(pp.getUUID())) {
if (!plot.getFlag(Flags.HANGING_PLACE).or(false)) {
if (!plot.getFlag(Flags.HANGING_PLACE,false)) {
if (!Permissions.hasPermission(pp, C.PERMISSION_ADMIN_BUILD_OTHER)) {
MainUtil.sendMessage(pp, C.NO_PERMISSION_EVENT, C.PERMISSION_ADMIN_BUILD_OTHER);
event.setCancelled(true);
@ -1961,7 +1946,7 @@ public class PlayerEvents extends PlotListener implements Listener {
event.setCancelled(true);
}
} else if (!plot.isAdded(pp.getUUID())) {
if (plot.getFlag(Flags.HANGING_BREAK).or(false)) {
if (plot.getFlag(Flags.HANGING_BREAK, false)) {
return;
}
if (!Permissions.hasPermission(pp, C.PERMISSION_ADMIN_DESTROY_OTHER)) {
@ -1987,7 +1972,7 @@ public class PlayerEvents extends PlotListener implements Listener {
event.setCancelled(true);
}
} else if (!plot.isAdded(player.getUUID())) {
if (!plot.getFlag(Flags.HANGING_BREAK).or(false)) {
if (!plot.getFlag(Flags.HANGING_BREAK, false)) {
if (!Permissions.hasPermission(player, C.PERMISSION_ADMIN_DESTROY_OTHER)) {
MainUtil.sendMessage(player, C.NO_PERMISSION_EVENT, C.PERMISSION_ADMIN_DESTROY_OTHER);
event.setCancelled(true);
@ -2023,19 +2008,19 @@ public class PlayerEvents extends PlotListener implements Listener {
}
} else if (!plot.isAdded(pp.getUUID())) {
Entity entity = event.getRightClicked();
if (entity instanceof Monster && plot.getFlag(Flags.HOSTILE_INTERACT).or(false)) {
if (entity instanceof Monster && plot.getFlag(Flags.HOSTILE_INTERACT, false)) {
return;
}
if (entity instanceof Animals && plot.getFlag(Flags.ANIMAL_INTERACT).or(false)) {
if (entity instanceof Animals && plot.getFlag(Flags.ANIMAL_INTERACT, false)) {
return;
}
if (entity instanceof Tameable && ((Tameable) entity).isTamed() && plot.getFlag(Flags.TAMED_INTERACT).or(false)) {
if (entity instanceof Tameable && ((Tameable) entity).isTamed() && plot.getFlag(Flags.TAMED_INTERACT, false)) {
return;
}
if (entity instanceof Vehicle && plot.getFlag(Flags.VEHICLE_USE).or(false)) {
if (entity instanceof Vehicle && plot.getFlag(Flags.VEHICLE_USE, false)) {
return;
}
if (entity instanceof Player && plot.getFlag(Flags.PLAYER_INTERACT).or(false)) {
if (entity instanceof Player && plot.getFlag(Flags.PLAYER_INTERACT, false)) {
return;
}
if (!Permissions.hasPermission(pp, C.PERMISSION_ADMIN_INTERACT_OTHER)) {
@ -2072,7 +2057,7 @@ public class PlayerEvents extends PlotListener implements Listener {
return;
}
if (!plot.isAdded(pp.getUUID())) {
if (plot.getFlag(Flags.VEHICLE_BREAK).or(false)) {
if (plot.getFlag(Flags.VEHICLE_BREAK, false)) {
return;
}
if (!Permissions.hasPermission(pp, "plots.admin.vehicle.break.other")) {
@ -2183,7 +2168,7 @@ public class PlayerEvents extends PlotListener implements Listener {
if (player != null) {
PlotPlayer pp = BukkitUtil.getPlayer(player);
if (victim instanceof Hanging) { // hanging
if (plot != null && (plot.getFlag(Flags.HANGING_BREAK).or(false) || plot.isAdded(pp.getUUID()))) {
if (plot != null && (plot.getFlag(Flags.HANGING_BREAK, false) || plot.isAdded(pp.getUUID()))) {
return true;
}
if (!Permissions.hasPermission(pp, "plots.admin.destroy." + stub)) {
@ -2191,7 +2176,7 @@ public class PlayerEvents extends PlotListener implements Listener {
return false;
}
} else if (victim.getEntityId() == 30) {
if (plot != null && (plot.getFlag(Flags.MISC_BREAK).or(false) || plot.isAdded(pp.getUUID()))) {
if (plot != null && (plot.getFlag(Flags.MISC_BREAK, false) || plot.isAdded(pp.getUUID()))) {
return true;
}
if (!Permissions.hasPermission(pp, "plots.admin.destroy." + stub)) {
@ -2199,7 +2184,7 @@ public class PlayerEvents extends PlotListener implements Listener {
return false;
}
} else if (victim instanceof Monster || victim instanceof EnderDragon) { // victim is monster
if (plot != null && (plot.getFlag(Flags.HOSTILE_ATTACK).or(false) || plot.getFlag(Flags.PVE).or(false) || plot
if (plot != null && (plot.getFlag(Flags.HOSTILE_ATTACK, false) || plot.getFlag(Flags.PVE, false) || plot
.isAdded(pp.getUUID()))) {
return true;
}
@ -2208,7 +2193,7 @@ public class PlayerEvents extends PlotListener implements Listener {
return false;
}
} else if (victim instanceof Tameable) { // victim is tameable
if (plot != null && (plot.getFlag(Flags.TAMED_ATTACK).or(false) || plot.getFlag(Flags.PVE).or(false) || plot.isAdded(pp.getUUID()))) {
if (plot != null && (plot.getFlag(Flags.TAMED_ATTACK, false) || plot.getFlag(Flags.PVE, false) || plot.isAdded(pp.getUUID()))) {
return true;
}
if (!Permissions.hasPermission(pp, "plots.admin.pve." + stub)) {
@ -2217,12 +2202,9 @@ public class PlayerEvents extends PlotListener implements Listener {
}
} else if (victim instanceof Player) {
if (plot != null) {
Optional<Boolean> pvp = plot.getFlag(Flags.PVP);
if (pvp.isPresent() && !pvp.get()) {
if (!Permissions.hasPermission(pp, "plots.admin.pve." + stub)) {
MainUtil.sendMessage(pp, C.NO_PERMISSION_EVENT, "plots.admin.pve." + stub);
return false;
}
if (Flags.PVP.isFalse(plot) && !Permissions.hasPermission(pp, "plots.admin.pvp." + stub)) {
MainUtil.sendMessage(pp, C.NO_PERMISSION_EVENT, "plots.admin.pvp." + stub);
return false;
} else {
return true;
}
@ -2232,7 +2214,7 @@ public class PlayerEvents extends PlotListener implements Listener {
return false;
}
} else if (victim instanceof Creature) { // victim is animal
if (plot != null && (plot.getFlag(Flags.ANIMAL_ATTACK).or(false) || plot.getFlag(Flags.PVE).or(false) || plot
if (plot != null && (plot.getFlag(Flags.ANIMAL_ATTACK, false) || plot.getFlag(Flags.PVE, false) || plot
.isAdded(pp.getUUID()))) {
return true;
}
@ -2243,7 +2225,7 @@ public class PlayerEvents extends PlotListener implements Listener {
} else if (victim instanceof Vehicle) { // Vehicles are managed in vehicle destroy event
return true;
} else { // victim is something else
if (plot != null && (plot.getFlag(Flags.PVE).or(false) || plot.isAdded(pp.getUUID()))) {
if (plot != null && (plot.getFlag(Flags.PVE, false) || plot.isAdded(pp.getUUID()))) {
return true;
}
if (!Permissions.hasPermission(pp, "plots.admin.pve." + stub)) {
@ -2303,10 +2285,14 @@ public class PlayerEvents extends PlotListener implements Listener {
return;
}
} else if (!plot.isAdded(pp.getUUID())) {
Optional<HashSet<PlotBlock>> place = plot.getFlag(Flags.PLACE);
Block block = event.getBlock();
if ((place.isPresent() && !place.get().contains(new PlotBlock((short) block.getTypeId(), block.getData()))) && !Permissions
.hasPermission(pp, C.PERMISSION_ADMIN_BUILD_OTHER)) {
Set<PlotBlock> place = plot.getFlag(Flags.PLACE, null);
if (place != null) {
Block block = event.getBlock();
if (place.contains(new PlotBlock((short) block.getTypeId(), block.getData()))) {
return;
}
}
if (!Permissions.hasPermission(pp, C.PERMISSION_ADMIN_BUILD_OTHER)) {
MainUtil.sendMessage(pp, C.NO_PERMISSION_EVENT, C.PERMISSION_ADMIN_BUILD_OTHER);
event.setCancelled(true);
return;
@ -2318,7 +2304,7 @@ public class PlayerEvents extends PlotListener implements Listener {
return;
}
}
if (plot.getFlag(Flags.DISABLE_PHYSICS).or(false)) {
if (plot.getFlag(Flags.DISABLE_PHYSICS, false)) {
Block block = event.getBlockPlaced();
if (block.getType().hasGravity()) {
sendBlockChange(block.getLocation(), block.getType(), block.getData());

View File

@ -1,7 +1,5 @@
package com.plotsquared.bukkit.util.block;
import static com.intellectualcrafters.plot.util.ReflectionUtils.getRefClass;
import com.intellectualcrafters.plot.object.ChunkLoc;
import com.intellectualcrafters.plot.object.PseudoRandom;
import com.intellectualcrafters.plot.util.ChunkManager;
@ -13,23 +11,23 @@ import com.intellectualcrafters.plot.util.ReflectionUtils.RefField;
import com.intellectualcrafters.plot.util.ReflectionUtils.RefMethod;
import com.intellectualcrafters.plot.util.ReflectionUtils.RefMethod.RefExecutor;
import com.intellectualcrafters.plot.util.SetQueue.ChunkWrapper;
import com.intellectualcrafters.plot.util.TaskManager;
import com.plotsquared.bukkit.util.BukkitUtil;
import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map.Entry;
import java.util.Set;
import org.bukkit.Chunk;
import org.bukkit.Material;
import org.bukkit.World;
import org.bukkit.World.Environment;
import org.bukkit.block.Biome;
import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.Collection;
import java.util.Collections;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map.Entry;
import java.util.Set;
import static com.intellectualcrafters.plot.util.ReflectionUtils.getRefClass;
public class FastQueue_1_9 extends SlowQueue {
@ -220,12 +218,7 @@ public class FastQueue_1_9 extends SlowQueue {
}
}
}
TaskManager.runTaskLater(new Runnable() {
@Override
public void run() {
sendChunk(fs.getChunkWrapper().world, Collections.singletonList(new ChunkLoc(fs.getX(), fs.getZ())));
}
}, 1);
world.refreshChunk(fs.getX(), fs.getZ());
}
public Object newChunkSection(int i, boolean flag, char[] ids) {