mirror of
https://github.com/IntellectualSites/PlotSquared.git
synced 2025-07-03 06:04:43 +02:00
Compare commits
13 Commits
Author | SHA1 | Date | |
---|---|---|---|
1ee76bf2d9 | |||
2321831044 | |||
25e98618b9 | |||
5344efd1b7 | |||
68701b6201 | |||
64c610ef37 | |||
931bb90600 | |||
1dfa3b4e66 | |||
8f236a56a6 | |||
e51121960d | |||
cc011de032 | |||
28298ffdd6 | |||
499d3c39bc |
1
.github/renovate.json
vendored
1
.github/renovate.json
vendored
@ -9,7 +9,6 @@
|
||||
"dependencies"
|
||||
],
|
||||
"rebaseWhen": "conflicted",
|
||||
"schedule": ["on the first day of the month"],
|
||||
"ignoreDeps": [
|
||||
"com.google.code.gson:gson",
|
||||
"com.google.guava:guava",
|
||||
|
@ -670,7 +670,11 @@ public class BlockEventListener implements Listener {
|
||||
BlockBreakEvent call = new BlockBreakEvent(block, player);
|
||||
Bukkit.getServer().getPluginManager().callEvent(call);
|
||||
if (!call.isCancelled()) {
|
||||
event.getBlock().breakNaturally();
|
||||
if (Settings.Flags.INSTABREAK_CONSIDER_TOOL) {
|
||||
block.breakNaturally(event.getItemInHand());
|
||||
} else {
|
||||
block.breakNaturally();
|
||||
}
|
||||
}
|
||||
}
|
||||
// == rather than <= as we only care about the "ground level" not being destroyed
|
||||
|
@ -40,6 +40,7 @@ import com.plotsquared.core.plot.PlotArea;
|
||||
import com.plotsquared.core.plot.flag.FlagContainer;
|
||||
import com.plotsquared.core.plot.flag.implementations.BeaconEffectsFlag;
|
||||
import com.plotsquared.core.plot.flag.implementations.DoneFlag;
|
||||
import com.plotsquared.core.plot.flag.implementations.FishingFlag;
|
||||
import com.plotsquared.core.plot.flag.implementations.ProjectilesFlag;
|
||||
import com.plotsquared.core.plot.flag.types.BooleanFlag;
|
||||
import com.plotsquared.core.plot.world.PlotAreaManager;
|
||||
@ -348,6 +349,11 @@ public class PaperListener implements Listener {
|
||||
event.setCancelled(true);
|
||||
}
|
||||
} else if (!plot.isAdded(pp.getUUID())) {
|
||||
if (entity.getType().equals(EntityType.FISHING_HOOK)) {
|
||||
if (plot.getFlag(FishingFlag.class)) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
if (!plot.getFlag(ProjectilesFlag.class)) {
|
||||
if (!pp.hasPermission(Permission.PERMISSION_ADMIN_PROJECTILE_OTHER)) {
|
||||
pp.sendMessage(
|
||||
|
@ -28,12 +28,14 @@ import com.plotsquared.core.player.PlotPlayer;
|
||||
import com.plotsquared.core.plot.Plot;
|
||||
import com.plotsquared.core.plot.PlotArea;
|
||||
import com.plotsquared.core.plot.PlotHandler;
|
||||
import com.plotsquared.core.plot.flag.implementations.FishingFlag;
|
||||
import com.plotsquared.core.plot.flag.implementations.ProjectilesFlag;
|
||||
import com.plotsquared.core.plot.world.PlotAreaManager;
|
||||
import com.plotsquared.core.util.PlotFlagUtil;
|
||||
import net.kyori.adventure.text.minimessage.tag.Tag;
|
||||
import net.kyori.adventure.text.minimessage.tag.resolver.TagResolver;
|
||||
import org.bukkit.entity.Entity;
|
||||
import org.bukkit.entity.EntityType;
|
||||
import org.bukkit.entity.LivingEntity;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.entity.Projectile;
|
||||
@ -132,6 +134,11 @@ public class ProjectileEventListener implements Listener {
|
||||
event.setCancelled(true);
|
||||
}
|
||||
} else if (!plot.isAdded(pp.getUUID())) {
|
||||
if (entity.getType().equals(EntityType.FISHING_HOOK)) {
|
||||
if (plot.getFlag(FishingFlag.class)) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
if (!plot.getFlag(ProjectilesFlag.class)) {
|
||||
if (!pp.hasPermission(Permission.PERMISSION_ADMIN_PROJECTILE_OTHER)) {
|
||||
pp.sendMessage(
|
||||
@ -187,7 +194,8 @@ public class ProjectileEventListener implements Listener {
|
||||
return;
|
||||
}
|
||||
if (plot.isAdded(pp.getUUID()) || pp.hasPermission(Permission.PERMISSION_ADMIN_PROJECTILE_OTHER) || plot.getFlag(
|
||||
ProjectilesFlag.class)) {
|
||||
ProjectilesFlag.class) || (entity.getType().equals(EntityType.FISHING_HOOK) && plot.getFlag(
|
||||
FishingFlag.class))) {
|
||||
return;
|
||||
}
|
||||
entity.remove();
|
||||
|
@ -32,6 +32,7 @@ import com.plotsquared.core.plot.PlotWeather;
|
||||
import com.plotsquared.core.plot.world.PlotAreaManager;
|
||||
import com.plotsquared.core.util.EventDispatcher;
|
||||
import com.plotsquared.core.util.MathMan;
|
||||
import com.plotsquared.core.util.WorldUtil;
|
||||
import com.sk89q.worldedit.bukkit.BukkitAdapter;
|
||||
import com.sk89q.worldedit.extension.platform.Actor;
|
||||
import com.sk89q.worldedit.world.item.ItemType;
|
||||
@ -120,6 +121,9 @@ public class BukkitPlayer extends PlotPlayer<Player> {
|
||||
|
||||
@Override
|
||||
public boolean canTeleport(final @NonNull Location location) {
|
||||
if (!WorldUtil.isValidLocation(location)) {
|
||||
return false;
|
||||
}
|
||||
final org.bukkit.Location to = BukkitUtil.adapt(location);
|
||||
final org.bukkit.Location from = player.getLocation();
|
||||
PlayerTeleportEvent event = new PlayerTeleportEvent(player, from, to);
|
||||
@ -221,7 +225,7 @@ public class BukkitPlayer extends PlotPlayer<Player> {
|
||||
|
||||
@Override
|
||||
public void teleport(final @NonNull Location location, final @NonNull TeleportCause cause) {
|
||||
if (Math.abs(location.getX()) >= 30000000 || Math.abs(location.getZ()) >= 30000000) {
|
||||
if (!WorldUtil.isValidLocation(location)) {
|
||||
return;
|
||||
}
|
||||
final org.bukkit.Location bukkitLocation =
|
||||
|
@ -268,6 +268,7 @@ public class MainCommand extends Command {
|
||||
tp = true;
|
||||
} else {
|
||||
player.sendMessage(TranslatableCaption.of("border.denied"));
|
||||
return CompletableFuture.completedFuture(false);
|
||||
}
|
||||
// Trim command
|
||||
args = Arrays.copyOfRange(args, 1, args.length);
|
||||
|
@ -723,6 +723,12 @@ public class Settings extends Config {
|
||||
|
||||
}
|
||||
|
||||
@Comment("Settings related to flags")
|
||||
public static final class Flags {
|
||||
|
||||
@Comment("If \"instabreak\" should consider the used tool.")
|
||||
public static boolean INSTABREAK_CONSIDER_TOOL = false;
|
||||
}
|
||||
|
||||
@Comment({"Enable or disable parts of the plugin",
|
||||
"Note: A cache will use some memory if enabled"})
|
||||
|
@ -2574,6 +2574,12 @@ public class Plot {
|
||||
*/
|
||||
public void teleportPlayer(final PlotPlayer<?> player, TeleportCause cause, Consumer<Boolean> resultConsumer) {
|
||||
Plot plot = this.getBasePlot(false);
|
||||
if (!WorldUtil.isValidLocation(plot.getBottomAbs())) {
|
||||
// prevent from teleporting into unsafe regions
|
||||
player.sendMessage(TranslatableCaption.of("border.denied"));
|
||||
resultConsumer.accept(false);
|
||||
return;
|
||||
}
|
||||
|
||||
PlayerTeleportToPlotEvent event = this.eventDispatcher.callTeleport(player, player.getLocation(), plot, cause);
|
||||
if (event.getEventResult() == Result.DENY) {
|
||||
|
@ -48,6 +48,7 @@ import com.plotsquared.core.plot.flag.implementations.EntityChangeBlockFlag;
|
||||
import com.plotsquared.core.plot.flag.implementations.ExplosionFlag;
|
||||
import com.plotsquared.core.plot.flag.implementations.FarewellFlag;
|
||||
import com.plotsquared.core.plot.flag.implementations.FeedFlag;
|
||||
import com.plotsquared.core.plot.flag.implementations.FishingFlag;
|
||||
import com.plotsquared.core.plot.flag.implementations.FlyFlag;
|
||||
import com.plotsquared.core.plot.flag.implementations.ForcefieldFlag;
|
||||
import com.plotsquared.core.plot.flag.implementations.GamemodeFlag;
|
||||
@ -158,6 +159,7 @@ public final class GlobalFlagContainer extends FlagContainer {
|
||||
this.addFlag(EditSignFlag.EDIT_SIGN_FALSE);
|
||||
this.addFlag(EntityChangeBlockFlag.ENTITY_CHANGE_BLOCK_FALSE);
|
||||
this.addFlag(ExplosionFlag.EXPLOSION_FALSE);
|
||||
this.addFlag(FishingFlag.FISHING_FALSE);
|
||||
this.addFlag(ForcefieldFlag.FORCEFIELD_FALSE);
|
||||
this.addFlag(GrassGrowFlag.GRASS_GROW_TRUE);
|
||||
this.addFlag(HangingBreakFlag.HANGING_BREAK_FALSE);
|
||||
|
@ -0,0 +1,39 @@
|
||||
/*
|
||||
* PlotSquared, a land and world management plugin for Minecraft.
|
||||
* Copyright (C) IntellectualSites <https://intellectualsites.com>
|
||||
* Copyright (C) IntellectualSites team and contributors
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package com.plotsquared.core.plot.flag.implementations;
|
||||
|
||||
import com.plotsquared.core.configuration.caption.TranslatableCaption;
|
||||
import com.plotsquared.core.plot.flag.types.BooleanFlag;
|
||||
import org.checkerframework.checker.nullness.qual.NonNull;
|
||||
|
||||
public class FishingFlag extends BooleanFlag<FishingFlag> {
|
||||
|
||||
public static final FishingFlag FISHING_TRUE = new FishingFlag(true);
|
||||
public static final FishingFlag FISHING_FALSE = new FishingFlag(false);
|
||||
|
||||
private FishingFlag(boolean value) {
|
||||
super(value, TranslatableCaption.of("flags.flag_description_fishing"));
|
||||
}
|
||||
|
||||
@Override
|
||||
protected FishingFlag flagOf(@NonNull final Boolean value) {
|
||||
return value ? FISHING_TRUE : FISHING_FALSE;
|
||||
}
|
||||
|
||||
}
|
@ -551,6 +551,7 @@ public class EventDispatcher {
|
||||
)
|
||||
);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
default -> {
|
||||
}
|
||||
|
@ -62,6 +62,15 @@ import java.util.zip.ZipOutputStream;
|
||||
|
||||
public abstract class WorldUtil {
|
||||
|
||||
/**
|
||||
* {@return whether the given location is valid in the world}
|
||||
* @param location the location to check
|
||||
* @since 7.3.6
|
||||
*/
|
||||
public static boolean isValidLocation(Location location) {
|
||||
return Math.abs(location.getX()) < 30000000 && Math.abs(location.getZ()) < 30000000;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the biome in a region
|
||||
*
|
||||
|
@ -559,6 +559,7 @@
|
||||
"flags.flag_description_drop_protection": "<gray>Set to `true` to prevent dropped items from being picked up by non-members of the plot.</gray>",
|
||||
"flags.flag_description_edit_sign": "<gray>Set to `true` to allow editing signs in the plot.</gray>",
|
||||
"flags.flag_description_feed": "<gray>Specify an interval in seconds and an optional amount by which the players will be fed (amount is 1 by default).</gray>",
|
||||
"flags.flag_description_fishing": "<gray>Set to `true` to allow guests to use a fishing rod in the plot.</gray>",
|
||||
"flags.flag_description_forcefield": "<gray>Set to `true` to enable member forcefield in the plot.</gray>",
|
||||
"flags.flag_description_grass_grow": "<gray>Set to `false` to prevent grass from growing within the plot.</gray>",
|
||||
"flags.flag_description_hanging_break": "<gray>Set to `true` to allow guests to break hanging objects in the plot.</gray>",
|
||||
|
@ -22,7 +22,7 @@ plugins {
|
||||
}
|
||||
|
||||
group = "com.intellectualsites.plotsquared"
|
||||
version = "7.3.5-SNAPSHOT"
|
||||
version = "7.3.6"
|
||||
|
||||
if (!File("$rootDir/.git").exists()) {
|
||||
logger.lifecycle("""
|
||||
|
@ -7,12 +7,12 @@ checkerqual = "3.42.0"
|
||||
gson = "2.10"
|
||||
guava = "31.1-jre"
|
||||
snakeyaml = "2.0"
|
||||
adventure = "4.15.0"
|
||||
adventure = "4.16.0"
|
||||
adventure-bukkit = "4.3.2"
|
||||
log4j = "2.19.0"
|
||||
|
||||
# Plugins
|
||||
worldedit = "7.2.18"
|
||||
worldedit = "7.2.20"
|
||||
fawe = "2.9.0"
|
||||
placeholderapi = "2.11.5"
|
||||
luckperms = "5.4"
|
||||
|
Reference in New Issue
Block a user