Prevent players from entering vehicles w/0 accesstrust

This commit is contained in:
Len 2022-09-29 18:06:16 +02:00
parent aeec095ff8
commit f34f0161ae

View File

@ -1,96 +1,114 @@
package me.ryanhamshire.GriefPrevention.alttd.listeners; package me.ryanhamshire.GriefPrevention.alttd.listeners;
import com.destroystokyo.paper.event.block.TNTPrimeEvent; import com.destroystokyo.paper.event.block.TNTPrimeEvent;
import me.ryanhamshire.GriefPrevention.Claim; import me.ryanhamshire.GriefPrevention.Claim;
import me.ryanhamshire.GriefPrevention.ClaimPermission; import me.ryanhamshire.GriefPrevention.ClaimPermission;
import me.ryanhamshire.GriefPrevention.CreateClaimResult; import me.ryanhamshire.GriefPrevention.CreateClaimResult;
import me.ryanhamshire.GriefPrevention.DataStore; import me.ryanhamshire.GriefPrevention.DataStore;
import me.ryanhamshire.GriefPrevention.GriefPrevention; import me.ryanhamshire.GriefPrevention.GriefPrevention;
import me.ryanhamshire.GriefPrevention.Messages; import me.ryanhamshire.GriefPrevention.Messages;
import org.bukkit.Bukkit; import org.bukkit.Bukkit;
import org.bukkit.World; import org.bukkit.World;
import org.bukkit.block.Block; import org.bukkit.block.Block;
import org.bukkit.entity.Arrow; import org.bukkit.entity.Arrow;
import org.bukkit.entity.Entity; import org.bukkit.entity.Entity;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.bukkit.entity.Vehicle; import org.bukkit.entity.Vehicle;
import org.bukkit.event.EventHandler; import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority; import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener; import org.bukkit.event.Listener;
import org.bukkit.event.entity.EntityChangeBlockEvent; import org.bukkit.event.entity.EntityChangeBlockEvent;
import org.bukkit.event.vehicle.VehicleEnterEvent;
public class AltitudeListener implements Listener {
public class AltitudeListener implements Listener {
private final GriefPrevention plugin;
private final GriefPrevention plugin;
public AltitudeListener(DataStore dataStore, GriefPrevention plugin) {
this.plugin = plugin; public AltitudeListener(DataStore dataStore, GriefPrevention plugin) {
this.worldInit(); this.plugin = plugin;
} this.worldInit();
}
private void info(String s) {
plugin.getLogger().info(s); private void info(String s) {
} plugin.getLogger().info(s);
}
private void worldInit() {
for(World world : Bukkit.getWorlds()) { private void worldInit() {
// info("Scanning world " + world.getName()); for(World world : Bukkit.getWorlds()) {
if (world.getEnvironment() == World.Environment.THE_END) { // info("Scanning world " + world.getName());
CreateClaimResult result = plugin.dataStore.createClaim(world, if (world.getEnvironment() == World.Environment.THE_END) {
-250, 250, CreateClaimResult result = plugin.dataStore.createClaim(world,
0, 256, -250, 250,
250, -250, 0, 256,
null, null, null, null); 250, -250,
if (!result.succeeded) { null, null, null, null);
if (result.claim != null) { if (!result.succeeded) {
// info(Messages.CreateClaimFailOverlapShort.toString()); if (result.claim != null) {
} else { // info(Messages.CreateClaimFailOverlapShort.toString());
// info(Messages.CreateClaimFailOverlapRegion.toString()); } else {
} // info(Messages.CreateClaimFailOverlapRegion.toString());
} else { }
Claim claim = result.claim; } else {
claim.setPermission("public", ClaimPermission.Build); Claim claim = result.claim;
GriefPrevention.instance.dataStore.saveClaim(claim); claim.setPermission("public", ClaimPermission.Build);
// info(Messages.CreateClaimSuccess.toString()); GriefPrevention.instance.dataStore.saveClaim(claim);
} // info(Messages.CreateClaimSuccess.toString());
} }
} }
} }
}
@EventHandler(ignoreCancelled = true, priority = EventPriority.HIGHEST)
public void onTNTPrime(TNTPrimeEvent event) { @EventHandler(ignoreCancelled = true, priority = EventPriority.HIGHEST)
if(event.getReason() == TNTPrimeEvent.PrimeReason.PROJECTILE) { public void onTNTPrime(TNTPrimeEvent event) {
Entity entity = event.getPrimerEntity(); if(event.getReason() == TNTPrimeEvent.PrimeReason.PROJECTILE) {
if(entity instanceof Arrow) { Entity entity = event.getPrimerEntity();
Arrow arrow = (Arrow) entity; if(entity instanceof Arrow) {
if(arrow.getShooter() instanceof Player) { Arrow arrow = (Arrow) entity;
Player player = (Player) arrow.getShooter(); if(arrow.getShooter() instanceof Player) {
Claim claim = GriefPrevention.instance.dataStore.getClaimAt(event.getBlock().getLocation(), true, null); Player player = (Player) arrow.getShooter();
if (claim != null) { Claim claim = GriefPrevention.instance.dataStore.getClaimAt(event.getBlock().getLocation(), true, null);
if (claim.allowAccess(player) != null) { if (claim != null) {
event.setCancelled(true); if (claim.allowAccess(player) != null) {
} event.setCancelled(true);
} }
} }
} }
} }
} }
}
@EventHandler(ignoreCancelled = true, priority = EventPriority.HIGHEST)
public void onPlayerBoatBlockBreak(EntityChangeBlockEvent event) @EventHandler(ignoreCancelled = true, priority = EventPriority.HIGHEST)
{ public void onPlayerBoatBlockBreak(EntityChangeBlockEvent event)
if (event.getEntity() instanceof Vehicle && !event.getEntity().getPassengers().isEmpty()) {
{ if (event.getEntity() instanceof Vehicle && !event.getEntity().getPassengers().isEmpty())
Entity driver = event.getEntity().getPassengers().get(0); {
if (driver instanceof Player) Entity driver = event.getEntity().getPassengers().get(0);
{ if (driver instanceof Player)
Block block = event.getBlock(); {
if (GriefPrevention.instance.allowBreak((Player) driver, block, block.getLocation()) != null) Block block = event.getBlock();
{ if (GriefPrevention.instance.allowBreak((Player) driver, block, block.getLocation()) != null)
event.setCancelled(true); {
return; event.setCancelled(true);
} return;
} }
} }
} }
}
@EventHandler(ignoreCancelled = true, priority = EventPriority.HIGHEST)
public void onVehicleEnterEvent(VehicleEnterEvent event)
{
if (event.getEntered() instanceof Player player)
{
Claim claim = GriefPrevention.instance.dataStore.getClaimAt(player.getLocation(), true, null);
if (claim != null)
{
if (claim.allowAccess(player) != null)
{
event.setCancelled(true);
}
}
}
}
} }