mirror of
https://github.com/IntellectualSites/PlotSquared.git
synced 2025-06-25 10:14:42 +02:00
PlotBlock cache / events / flags
This commit is contained in:
@ -1,26 +1,22 @@
|
||||
package com.plotsquared.bukkit.listeners;
|
||||
|
||||
import com.google.common.base.Optional;
|
||||
import com.intellectualcrafters.plot.flag.Flags;
|
||||
import com.intellectualcrafters.plot.object.Location;
|
||||
import com.intellectualcrafters.plot.object.Plot;
|
||||
import com.intellectualcrafters.plot.object.PlotPlayer;
|
||||
import com.plotsquared.bukkit.object.BukkitPlayer;
|
||||
import com.plotsquared.bukkit.util.BukkitUtil;
|
||||
import org.bukkit.entity.Entity;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.Listener;
|
||||
import org.bukkit.event.player.PlayerMoveEvent;
|
||||
import org.bukkit.util.Vector;
|
||||
|
||||
import java.util.HashSet;
|
||||
import java.util.Set;
|
||||
import java.util.UUID;
|
||||
import org.bukkit.entity.Entity;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.Listener;
|
||||
import org.bukkit.util.Vector;
|
||||
|
||||
public class ForceFieldListener implements Listener {
|
||||
|
||||
private Set<PlotPlayer> getNearbyPlayers(Player player, Plot plot) {
|
||||
private static Set<PlotPlayer> getNearbyPlayers(Player player, Plot plot) {
|
||||
Set<PlotPlayer> players = new HashSet<>();
|
||||
for (Entity entity : player.getNearbyEntities(5d, 5d, 5d)) {
|
||||
PlotPlayer plotPlayer;
|
||||
@ -34,7 +30,7 @@ public class ForceFieldListener implements Listener {
|
||||
return players;
|
||||
}
|
||||
|
||||
private PlotPlayer hasNearbyPermitted(Player player, Plot plot) {
|
||||
private static PlotPlayer hasNearbyPermitted(Player player, Plot plot) {
|
||||
for (Entity entity : player.getNearbyEntities(5d, 5d, 5d)) {
|
||||
if (!(entity instanceof Player)) {
|
||||
continue;
|
||||
@ -53,7 +49,7 @@ public class ForceFieldListener implements Listener {
|
||||
return null;
|
||||
}
|
||||
|
||||
private Vector calculateVelocity(PlotPlayer player, PlotPlayer e) {
|
||||
private static Vector calculateVelocity(PlotPlayer player, PlotPlayer e) {
|
||||
Location playerLocation = player.getLocationFull();
|
||||
Location oPlayerLocation = e.getLocation();
|
||||
double playerX = playerLocation.getX();
|
||||
@ -83,16 +79,8 @@ public class ForceFieldListener implements Listener {
|
||||
return new Vector(x, y, z);
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onPlotEntry(PlayerMoveEvent event) {
|
||||
Player player = event.getPlayer();
|
||||
PlotPlayer plotPlayer = BukkitUtil.getPlayer(player);
|
||||
Plot plot = plotPlayer.getCurrentPlot();
|
||||
if (plot == null) {
|
||||
return;
|
||||
}
|
||||
Optional<Boolean> forcefield = plot.getFlag(Flags.FORCEFIELD);
|
||||
if (forcefield.isPresent() && forcefield.get()) {
|
||||
public static void handleForcefield(Player player, PlotPlayer plotPlayer, Plot plot) {
|
||||
if (Flags.FORCEFIELD.isTrue(plot)) {
|
||||
UUID uuid = plotPlayer.getUUID();
|
||||
if (plot.isAdded(uuid)) {
|
||||
Set<PlotPlayer> players = getNearbyPlayers(player, plot);
|
||||
|
@ -498,6 +498,7 @@ public class PlayerEvents extends PlotListener implements Listener {
|
||||
return;
|
||||
}
|
||||
} else if (now.equals(lastPlot)) {
|
||||
ForceFieldListener.handleForcefield(player, pp, now);
|
||||
return;
|
||||
} else if (!plotEntry(pp, now)) {
|
||||
MainUtil.sendMessage(pp, C.NO_PERMISSION_EVENT, C.PERMISSION_ADMIN_ENTRY_DENIED);
|
||||
@ -548,6 +549,7 @@ public class PlayerEvents extends PlotListener implements Listener {
|
||||
return;
|
||||
}
|
||||
} else if (now.equals(lastPlot)) {
|
||||
ForceFieldListener.handleForcefield(player, pp, now);
|
||||
return;
|
||||
} else if (!plotEntry(pp, now)) {
|
||||
MainUtil.sendMessage(pp, C.NO_PERMISSION_EVENT, C.PERMISSION_ADMIN_ENTRY_DENIED);
|
||||
@ -637,7 +639,7 @@ public class PlayerEvents extends PlotListener implements Listener {
|
||||
Optional<HashSet<PlotBlock>> destroy = plot.getFlag(Flags.BREAK);
|
||||
Block block = event.getBlock();
|
||||
if (destroy.isPresent() && destroy.get()
|
||||
.contains(new PlotBlock((short) block.getTypeId(), block.getData()))) {
|
||||
.contains(PlotBlock.get((short) block.getTypeId(), block.getData()))) {
|
||||
return;
|
||||
}
|
||||
if (Permissions.hasPermission(plotPlayer, C.PERMISSION_ADMIN_DESTROY_OTHER)) {
|
||||
@ -834,7 +836,7 @@ public class PlayerEvents extends PlotListener implements Listener {
|
||||
if (!plot.isAdded(plotPlayer.getUUID())) {
|
||||
Optional<HashSet<PlotBlock>> destroy = plot.getFlag(Flags.BREAK);
|
||||
Block block = event.getBlock();
|
||||
if (destroy.isPresent() && destroy.get().contains(new PlotBlock((short) block.getTypeId(), block.getData())) || Permissions
|
||||
if (destroy.isPresent() && destroy.get().contains(PlotBlock.get((short) block.getTypeId(), block.getData())) || Permissions
|
||||
.hasPermission(plotPlayer, C.PERMISSION_ADMIN_DESTROY_OTHER)) {
|
||||
return;
|
||||
}
|
||||
@ -1189,7 +1191,7 @@ public class PlayerEvents extends PlotListener implements Listener {
|
||||
break;
|
||||
}
|
||||
Material handType = hand.getType();
|
||||
lb = new BukkitLazyBlock(new PlotBlock((short) handType.getId(), (byte) 0));
|
||||
lb = new BukkitLazyBlock(PlotBlock.get((short) handType.getId(), (byte) 0));
|
||||
switch (handType) {
|
||||
case MONSTER_EGG:
|
||||
case MONSTER_EGGS:
|
||||
@ -1787,8 +1789,7 @@ public class PlayerEvents extends PlotListener implements Listener {
|
||||
MainUtil.sendMessage(pp, C.NO_PERMISSION_EVENT, C.PERMISSION_ADMIN_BUILD_UNOWNED);
|
||||
event.setCancelled(true);
|
||||
} else if (!plot.isAdded(pp.getUUID())) {
|
||||
Optional<HashSet<PlotBlock>> use = plot.getFlag(Flags.USE);
|
||||
if (use.isPresent() && use.get().contains(new PlotBlock((short) event.getBucket().getId(), (byte) 0))) {
|
||||
if (Flags.USE.contains(plot, PlotBlock.get(event.getBucket().getId(), 0))) {
|
||||
return;
|
||||
}
|
||||
if (Permissions.hasPermission(pp, C.PERMISSION_ADMIN_BUILD_OTHER)) {
|
||||
@ -1858,7 +1859,7 @@ public class PlayerEvents extends PlotListener implements Listener {
|
||||
} else if (!plot.isAdded(plotPlayer.getUUID())) {
|
||||
Optional<HashSet<PlotBlock>> use = plot.getFlag(Flags.USE);
|
||||
Block block = event.getBlockClicked();
|
||||
if (use.isPresent() && use.get().contains(new PlotBlock((short) block.getTypeId(), block.getData()))) {
|
||||
if (use.isPresent() && use.get().contains(PlotBlock.get(block.getTypeId(), block.getData()))) {
|
||||
return;
|
||||
}
|
||||
if (Permissions.hasPermission(plotPlayer, C.PERMISSION_ADMIN_BUILD_OTHER)) {
|
||||
@ -2292,7 +2293,7 @@ public class PlayerEvents extends PlotListener implements Listener {
|
||||
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()))) {
|
||||
if (place.contains(PlotBlock.get((short) block.getTypeId(), block.getData()))) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
@ -88,7 +88,7 @@ public class PlotPlusListener extends PlotListener implements Listener {
|
||||
if (plot == null) {
|
||||
return;
|
||||
}
|
||||
if (plot.getFlag(Flags.INSTABREAK).or(false)) {
|
||||
if (Flags.INSTABREAK.isTrue(plot)) {
|
||||
event.getBlock().breakNaturally();
|
||||
}
|
||||
}
|
||||
@ -103,7 +103,7 @@ public class PlotPlusListener extends PlotListener implements Listener {
|
||||
if (plot == null) {
|
||||
return;
|
||||
}
|
||||
if (plot.getFlag(Flags.INVINCIBLE).or(false)) {
|
||||
if (Flags.INVINCIBLE.isTrue(plot)) {
|
||||
event.setCancelled(true);
|
||||
}
|
||||
}
|
||||
@ -117,7 +117,7 @@ public class PlotPlusListener extends PlotListener implements Listener {
|
||||
return;
|
||||
}
|
||||
UUID uuid = pp.getUUID();
|
||||
if (plot.isAdded(uuid) && plot.getFlag(Flags.DROP_PROTECTION).or(false)) {
|
||||
if (plot.isAdded(uuid) && Flags.DROP_PROTECTION.isTrue(plot)) {
|
||||
event.setCancelled(true);
|
||||
}
|
||||
}
|
||||
|
@ -122,7 +122,7 @@ public class BukkitLazyBlock extends LazyBlock {
|
||||
data = this.block.getData();
|
||||
break;
|
||||
}
|
||||
this.pb = new PlotBlock((short) this.id, data);
|
||||
this.pb = PlotBlock.get((short) this.id, data);
|
||||
return this.pb;
|
||||
|
||||
}
|
||||
|
@ -1066,7 +1066,7 @@ public class BukkitChunkManager extends ChunkManager {
|
||||
if (typeId == 0) {
|
||||
ids[y] = PlotBlock.EVERYTHING;
|
||||
} else {
|
||||
ids[y] = new PlotBlock((short) typeId, block.getData());
|
||||
ids[y] = PlotBlock.get((short) typeId, block.getData());
|
||||
}
|
||||
}
|
||||
if (!id.equals(Material.AIR)) {
|
||||
|
@ -270,7 +270,7 @@ public class BukkitUtil extends WorldUtil {
|
||||
public StringComparison<PlotBlock>.ComparisonResult getClosestBlock(String name) {
|
||||
try {
|
||||
Material material = Material.valueOf(name.toUpperCase());
|
||||
return new StringComparison<PlotBlock>().new ComparisonResult(0, new PlotBlock((short) material.getId(), (byte) 0));
|
||||
return new StringComparison<PlotBlock>().new ComparisonResult(0, PlotBlock.get((short) material.getId(), (byte) 0));
|
||||
} catch (IllegalArgumentException ignored) {}
|
||||
try {
|
||||
byte data;
|
||||
@ -291,7 +291,7 @@ public class BukkitUtil extends WorldUtil {
|
||||
match = comparison.match;
|
||||
id = (short) comparison.best.getId();
|
||||
}
|
||||
PlotBlock block = new PlotBlock(id, data);
|
||||
PlotBlock block = PlotBlock.get(id, data);
|
||||
StringComparison<PlotBlock> outer = new StringComparison<>();
|
||||
return outer.new ComparisonResult(match, block);
|
||||
|
||||
@ -317,7 +317,7 @@ public class BukkitUtil extends WorldUtil {
|
||||
if (block == null) {
|
||||
return PlotBlock.EVERYTHING;
|
||||
}
|
||||
return new PlotBlock((short) block.getTypeId(), block.getData());
|
||||
return PlotBlock.get((short) block.getTypeId(), block.getData());
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -35,7 +35,7 @@ public class SlowChunk extends PlotChunk<Chunk> {
|
||||
if (this.result[y >> 4] == null) {
|
||||
this.result[y >> 4] = new PlotBlock[4096];
|
||||
}
|
||||
this.result[MainUtil.CACHE_I[y][x][z]][MainUtil.CACHE_J[y][x][z]] = new PlotBlock((short) id, data);
|
||||
this.result[MainUtil.CACHE_I[y][x][z]][MainUtil.CACHE_J[y][x][z]] = PlotBlock.get((short) id, data);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
Reference in New Issue
Block a user