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