mirror of
https://github.com/IntellectualSites/PlotSquared.git
synced 2024-11-26 07:06:44 +01:00
Use InteractBlockEvent
For some reason sponge was calling the event twice, the second with a relative location, which makes no sense. Switching to a different event works.
This commit is contained in:
parent
38a33248e7
commit
93717e670c
@ -1,6 +1,5 @@
|
|||||||
package com.plotsquared.sponge.listener;
|
package com.plotsquared.sponge.listener;
|
||||||
|
|
||||||
import com.flowpowered.math.vector.Vector3d;
|
|
||||||
import com.intellectualcrafters.plot.PS;
|
import com.intellectualcrafters.plot.PS;
|
||||||
import com.intellectualcrafters.plot.config.C;
|
import com.intellectualcrafters.plot.config.C;
|
||||||
import com.intellectualcrafters.plot.flag.Flags;
|
import com.intellectualcrafters.plot.flag.Flags;
|
||||||
@ -21,6 +20,14 @@ import com.intellectualcrafters.plot.util.UUIDHandler;
|
|||||||
import com.plotsquared.listener.PlotListener;
|
import com.plotsquared.listener.PlotListener;
|
||||||
import com.plotsquared.sponge.object.SpongePlayer;
|
import com.plotsquared.sponge.object.SpongePlayer;
|
||||||
import com.plotsquared.sponge.util.SpongeUtil;
|
import com.plotsquared.sponge.util.SpongeUtil;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.HashSet;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map.Entry;
|
||||||
|
import java.util.Optional;
|
||||||
|
import java.util.UUID;
|
||||||
|
import java.util.concurrent.atomic.AtomicBoolean;
|
||||||
|
import java.util.function.Predicate;
|
||||||
import org.spongepowered.api.block.BlockSnapshot;
|
import org.spongepowered.api.block.BlockSnapshot;
|
||||||
import org.spongepowered.api.block.BlockState;
|
import org.spongepowered.api.block.BlockState;
|
||||||
import org.spongepowered.api.data.Transaction;
|
import org.spongepowered.api.data.Transaction;
|
||||||
@ -34,8 +41,8 @@ import org.spongepowered.api.entity.living.player.Player;
|
|||||||
import org.spongepowered.api.entity.vehicle.Boat;
|
import org.spongepowered.api.entity.vehicle.Boat;
|
||||||
import org.spongepowered.api.entity.vehicle.minecart.Minecart;
|
import org.spongepowered.api.entity.vehicle.minecart.Minecart;
|
||||||
import org.spongepowered.api.event.Listener;
|
import org.spongepowered.api.event.Listener;
|
||||||
import org.spongepowered.api.event.action.InteractEvent;
|
|
||||||
import org.spongepowered.api.event.block.ChangeBlockEvent;
|
import org.spongepowered.api.event.block.ChangeBlockEvent;
|
||||||
|
import org.spongepowered.api.event.block.InteractBlockEvent;
|
||||||
import org.spongepowered.api.event.block.NotifyNeighborBlockEvent;
|
import org.spongepowered.api.event.block.NotifyNeighborBlockEvent;
|
||||||
import org.spongepowered.api.event.entity.BreedEntityEvent;
|
import org.spongepowered.api.event.entity.BreedEntityEvent;
|
||||||
import org.spongepowered.api.event.entity.MoveEntityEvent;
|
import org.spongepowered.api.event.entity.MoveEntityEvent;
|
||||||
@ -47,15 +54,6 @@ import org.spongepowered.api.event.world.ExplosionEvent.Detonate;
|
|||||||
import org.spongepowered.api.text.Text;
|
import org.spongepowered.api.text.Text;
|
||||||
import org.spongepowered.api.world.World;
|
import org.spongepowered.api.world.World;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.HashSet;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Map.Entry;
|
|
||||||
import java.util.Optional;
|
|
||||||
import java.util.UUID;
|
|
||||||
import java.util.concurrent.atomic.AtomicBoolean;
|
|
||||||
import java.util.function.Predicate;
|
|
||||||
|
|
||||||
@SuppressWarnings("Guava")
|
@SuppressWarnings("Guava")
|
||||||
public class MainListener {
|
public class MainListener {
|
||||||
|
|
||||||
@ -300,17 +298,17 @@ public class MainListener {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Listener
|
@Listener
|
||||||
public void onInteract(InteractEvent event) {
|
public void onInteract(InteractBlockEvent event) {
|
||||||
Player player = SpongeUtil.getCause(event.getCause(), Player.class);
|
Player player = SpongeUtil.getCause(event.getCause(), Player.class);
|
||||||
if (player == null) {
|
if (player == null) {
|
||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
Optional<Vector3d> target = event.getInteractionPoint();
|
BlockSnapshot block = event.getTargetBlock();
|
||||||
if (!target.isPresent()) {
|
if (block == null) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
Location loc = SpongeUtil.getLocation(player.getWorld().getName(), target.get());
|
Location loc = SpongeUtil.getLocation(player.getWorld().getName(), block.getLocation().get());
|
||||||
PlotArea area = loc.getPlotArea();
|
PlotArea area = loc.getPlotArea();
|
||||||
if (area == null) {
|
if (area == null) {
|
||||||
return;
|
return;
|
||||||
@ -318,7 +316,7 @@ public class MainListener {
|
|||||||
Plot plot = area.getPlot(loc);
|
Plot plot = area.getPlot(loc);
|
||||||
PlotPlayer pp = SpongeUtil.getPlayer(player);
|
PlotPlayer pp = SpongeUtil.getPlayer(player);
|
||||||
if (plot == null) {
|
if (plot == null) {
|
||||||
if (!Permissions.hasPermission(pp, C.PERMISSION_ADMIN_INTERACT_ROAD)) {
|
if (!Permissions.hasPermission(pp, C.PERMISSION_ADMIN_INTERACT_ROAD, true)) {
|
||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -519,8 +517,7 @@ public class MainListener {
|
|||||||
}
|
}
|
||||||
Plot plot = area.getPlot(loc);
|
Plot plot = area.getPlot(loc);
|
||||||
if (plot == null) {
|
if (plot == null) {
|
||||||
if (!Permissions.hasPermission(pp, C.PERMISSION_ADMIN_BUILD_ROAD)) {
|
if (!Permissions.hasPermission(pp, C.PERMISSION_ADMIN_BUILD_ROAD, true)) {
|
||||||
MainUtil.sendMessage(pp, C.PERMISSION_ADMIN_BUILD_ROAD);
|
|
||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -555,10 +552,9 @@ public class MainListener {
|
|||||||
return loc.getPlotArea() != null && !Permissions.hasPermission(pp, C.PERMISSION_ADMIN_BUILD_ROAD, true);
|
return loc.getPlotArea() != null && !Permissions.hasPermission(pp, C.PERMISSION_ADMIN_BUILD_ROAD, true);
|
||||||
}
|
}
|
||||||
if (!plot.hasOwner()) {
|
if (!plot.hasOwner()) {
|
||||||
if (Permissions.hasPermission(pp, C.PERMISSION_ADMIN_BUILD_UNOWNED)) {
|
if (Permissions.hasPermission(pp, C.PERMISSION_ADMIN_BUILD_UNOWNED, true)) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
MainUtil.sendMessage(pp, C.NO_PERMISSION_EVENT, C.PERMISSION_ADMIN_BUILD_UNOWNED);
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
if (plot.isAdded(pp.getUUID()) || Permissions.hasPermission(pp, C.PERMISSION_ADMIN_BUILD_OTHER, true)) {
|
if (plot.isAdded(pp.getUUID()) || Permissions.hasPermission(pp, C.PERMISSION_ADMIN_BUILD_OTHER, true)) {
|
||||||
|
Loading…
Reference in New Issue
Block a user