mirror of
https://github.com/IntellectualSites/PlotSquared.git
synced 2025-07-04 22:54:43 +02:00
Compare commits
1 Commits
reproducib
...
fix/avoid-
Author | SHA1 | Date | |
---|---|---|---|
e33f534c33 |
7
.github/ISSUE_TEMPLATE/bug_report.yml
vendored
7
.github/ISSUE_TEMPLATE/bug_report.yml
vendored
@ -30,7 +30,14 @@ body:
|
|||||||
- '1.20.4'
|
- '1.20.4'
|
||||||
- '1.20'
|
- '1.20'
|
||||||
- '1.19.4'
|
- '1.19.4'
|
||||||
|
- '1.19.3'
|
||||||
|
- '1.19.2'
|
||||||
|
- '1.19.1'
|
||||||
|
- '1.19'
|
||||||
- '1.18.2'
|
- '1.18.2'
|
||||||
|
- '1.18.1'
|
||||||
|
- '1.17.1'
|
||||||
|
- '1.16.5'
|
||||||
validations:
|
validations:
|
||||||
required: true
|
required: true
|
||||||
|
|
||||||
|
1
.github/renovate.json
vendored
1
.github/renovate.json
vendored
@ -9,6 +9,7 @@
|
|||||||
"dependencies"
|
"dependencies"
|
||||||
],
|
],
|
||||||
"rebaseWhen": "conflicted",
|
"rebaseWhen": "conflicted",
|
||||||
|
"schedule": ["on the first day of the month"],
|
||||||
"ignoreDeps": [
|
"ignoreDeps": [
|
||||||
"com.google.code.gson:gson",
|
"com.google.code.gson:gson",
|
||||||
"com.google.guava:guava",
|
"com.google.guava:guava",
|
||||||
|
2
.github/workflows/build-pr.yml
vendored
2
.github/workflows/build-pr.yml
vendored
@ -11,7 +11,7 @@ jobs:
|
|||||||
- name: Checkout Repository
|
- name: Checkout Repository
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v4
|
||||||
- name: Validate Gradle Wrapper
|
- name: Validate Gradle Wrapper
|
||||||
uses: gradle/wrapper-validation-action@v3
|
uses: gradle/wrapper-validation-action@v2
|
||||||
- name: Setup Java
|
- name: Setup Java
|
||||||
uses: actions/setup-java@v4
|
uses: actions/setup-java@v4
|
||||||
with:
|
with:
|
||||||
|
2
.github/workflows/build.yml
vendored
2
.github/workflows/build.yml
vendored
@ -11,7 +11,7 @@ jobs:
|
|||||||
- name: Checkout Repository
|
- name: Checkout Repository
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v4
|
||||||
- name: Validate Gradle Wrapper
|
- name: Validate Gradle Wrapper
|
||||||
uses: gradle/wrapper-validation-action@v3
|
uses: gradle/wrapper-validation-action@v2
|
||||||
- name: Setup Java
|
- name: Setup Java
|
||||||
uses: actions/setup-java@v4
|
uses: actions/setup-java@v4
|
||||||
with:
|
with:
|
||||||
|
2
.github/workflows/label-merge-conflicts.yaml
vendored
2
.github/workflows/label-merge-conflicts.yaml
vendored
@ -15,7 +15,7 @@ jobs:
|
|||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- name: Label conflicting PRs
|
- name: Label conflicting PRs
|
||||||
uses: eps1lon/actions-label-merge-conflict@v3.0.0
|
uses: eps1lon/actions-label-merge-conflict@v2.1.0
|
||||||
with:
|
with:
|
||||||
dirtyLabel: "unresolved-merge-conflict"
|
dirtyLabel: "unresolved-merge-conflict"
|
||||||
repoToken: "${{ secrets.GITHUB_TOKEN }}"
|
repoToken: "${{ secrets.GITHUB_TOKEN }}"
|
||||||
|
@ -113,6 +113,5 @@ tasks {
|
|||||||
opt.encoding("UTF-8")
|
opt.encoding("UTF-8")
|
||||||
opt.keyWords()
|
opt.keyWords()
|
||||||
opt.addStringOption("-since", isRelease)
|
opt.addStringOption("-since", isRelease)
|
||||||
opt.noTimestamp()
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -779,8 +779,7 @@ public final class BukkitPlatform extends JavaPlugin implements Listener, PlotPl
|
|||||||
Iterator<Entity> iterator = entities.iterator();
|
Iterator<Entity> iterator = entities.iterator();
|
||||||
while (iterator.hasNext()) {
|
while (iterator.hasNext()) {
|
||||||
Entity entity = iterator.next();
|
Entity entity = iterator.next();
|
||||||
//noinspection ConstantValue - getEntitySpawnReason annotated as NotNull, but is not NotNull. lol.
|
if (PaperLib.isPaper() && "CUSTOM".equals(entity.getEntitySpawnReason().name())) {
|
||||||
if (PaperLib.isPaper() && entity.getEntitySpawnReason() != null && "CUSTOM".equals(entity.getEntitySpawnReason().name())) {
|
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
// Fallback for Spigot not having Entity#getEntitySpawnReason
|
// Fallback for Spigot not having Entity#getEntitySpawnReason
|
||||||
|
@ -670,11 +670,7 @@ public class BlockEventListener implements Listener {
|
|||||||
BlockBreakEvent call = new BlockBreakEvent(block, player);
|
BlockBreakEvent call = new BlockBreakEvent(block, player);
|
||||||
Bukkit.getServer().getPluginManager().callEvent(call);
|
Bukkit.getServer().getPluginManager().callEvent(call);
|
||||||
if (!call.isCancelled()) {
|
if (!call.isCancelled()) {
|
||||||
if (Settings.Flags.INSTABREAK_CONSIDER_TOOL) {
|
event.getBlock().breakNaturally();
|
||||||
block.breakNaturally(event.getItemInHand());
|
|
||||||
} else {
|
|
||||||
block.breakNaturally();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// == rather than <= as we only care about the "ground level" not being destroyed
|
// == rather than <= as we only care about the "ground level" not being destroyed
|
||||||
|
@ -152,13 +152,13 @@ public class EntityEventListener implements Listener {
|
|||||||
}
|
}
|
||||||
case "REINFORCEMENTS", "NATURAL", "MOUNT", "PATROL", "RAID", "SHEARED", "SILVERFISH_BLOCK", "ENDER_PEARL",
|
case "REINFORCEMENTS", "NATURAL", "MOUNT", "PATROL", "RAID", "SHEARED", "SILVERFISH_BLOCK", "ENDER_PEARL",
|
||||||
"TRAP", "VILLAGE_DEFENSE", "VILLAGE_INVASION", "BEEHIVE", "CHUNK_GEN", "NETHER_PORTAL",
|
"TRAP", "VILLAGE_DEFENSE", "VILLAGE_INVASION", "BEEHIVE", "CHUNK_GEN", "NETHER_PORTAL",
|
||||||
"FROZEN", "SPELL", "DEFAULT" -> {
|
"DUPLICATION", "FROZEN", "SPELL", "DEFAULT" -> {
|
||||||
if (!area.isMobSpawning()) {
|
if (!area.isMobSpawning()) {
|
||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
case "BREEDING", "DUPLICATION" -> {
|
case "BREEDING" -> {
|
||||||
if (!area.isSpawnBreeding()) {
|
if (!area.isSpawnBreeding()) {
|
||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
return;
|
return;
|
||||||
|
@ -124,8 +124,7 @@ public class EntitySpawnListener implements Listener {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (PaperLib.isPaper()) {
|
if (PaperLib.isPaper()) {
|
||||||
//noinspection ConstantValue - getEntitySpawnReason annotated as NotNull, but is not NotNull. lol.
|
if (area.isSpawnCustom() && "CUSTOM".equals(entity.getEntitySpawnReason().name())) {
|
||||||
if (area.isSpawnCustom() && entity.getEntitySpawnReason() != null && "CUSTOM".equals(entity.getEntitySpawnReason().name())) {
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -154,7 +153,7 @@ public class EntitySpawnListener implements Listener {
|
|||||||
if (Settings.Done.RESTRICT_BUILDING && DoneFlag.isDone(plot)) {
|
if (Settings.Done.RESTRICT_BUILDING && DoneFlag.isDone(plot)) {
|
||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
}
|
}
|
||||||
if (type == EntityType.ENDER_CRYSTAL || type == EntityType.ARMOR_STAND) {
|
if (type == EntityType.ENDER_CRYSTAL) {
|
||||||
if (BukkitEntityUtil.checkEntity(entity, plot)) {
|
if (BukkitEntityUtil.checkEntity(entity, plot)) {
|
||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
}
|
}
|
||||||
|
@ -19,7 +19,6 @@
|
|||||||
package com.plotsquared.bukkit.listener;
|
package com.plotsquared.bukkit.listener;
|
||||||
|
|
||||||
import com.destroystokyo.paper.event.block.BeaconEffectEvent;
|
import com.destroystokyo.paper.event.block.BeaconEffectEvent;
|
||||||
import com.destroystokyo.paper.event.block.BlockDestroyEvent;
|
|
||||||
import com.destroystokyo.paper.event.entity.EntityPathfindEvent;
|
import com.destroystokyo.paper.event.entity.EntityPathfindEvent;
|
||||||
import com.destroystokyo.paper.event.entity.PlayerNaturallySpawnCreaturesEvent;
|
import com.destroystokyo.paper.event.entity.PlayerNaturallySpawnCreaturesEvent;
|
||||||
import com.destroystokyo.paper.event.entity.PreCreatureSpawnEvent;
|
import com.destroystokyo.paper.event.entity.PreCreatureSpawnEvent;
|
||||||
@ -41,9 +40,7 @@ import com.plotsquared.core.plot.PlotArea;
|
|||||||
import com.plotsquared.core.plot.flag.FlagContainer;
|
import com.plotsquared.core.plot.flag.FlagContainer;
|
||||||
import com.plotsquared.core.plot.flag.implementations.BeaconEffectsFlag;
|
import com.plotsquared.core.plot.flag.implementations.BeaconEffectsFlag;
|
||||||
import com.plotsquared.core.plot.flag.implementations.DoneFlag;
|
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.implementations.ProjectilesFlag;
|
||||||
import com.plotsquared.core.plot.flag.implementations.TileDropFlag;
|
|
||||||
import com.plotsquared.core.plot.flag.types.BooleanFlag;
|
import com.plotsquared.core.plot.flag.types.BooleanFlag;
|
||||||
import com.plotsquared.core.plot.world.PlotAreaManager;
|
import com.plotsquared.core.plot.world.PlotAreaManager;
|
||||||
import com.plotsquared.core.util.PlotFlagUtil;
|
import com.plotsquared.core.util.PlotFlagUtil;
|
||||||
@ -86,19 +83,6 @@ public class PaperListener implements Listener {
|
|||||||
this.plotAreaManager = plotAreaManager;
|
this.plotAreaManager = plotAreaManager;
|
||||||
}
|
}
|
||||||
|
|
||||||
@EventHandler(ignoreCancelled = true, priority = EventPriority.LOWEST)
|
|
||||||
public void onBlockDestroy(final BlockDestroyEvent event) {
|
|
||||||
Location location = BukkitUtil.adapt(event.getBlock().getLocation());
|
|
||||||
PlotArea area = location.getPlotArea();
|
|
||||||
if (area == null) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
Plot plot = area.getPlot(location);
|
|
||||||
if (plot != null) {
|
|
||||||
event.setWillDrop(plot.getFlag(TileDropFlag.class));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@EventHandler
|
@EventHandler
|
||||||
public void onEntityPathfind(EntityPathfindEvent event) {
|
public void onEntityPathfind(EntityPathfindEvent event) {
|
||||||
if (!Settings.Paper_Components.ENTITY_PATHING) {
|
if (!Settings.Paper_Components.ENTITY_PATHING) {
|
||||||
@ -364,11 +348,6 @@ public class PaperListener implements Listener {
|
|||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
}
|
}
|
||||||
} else if (!plot.isAdded(pp.getUUID())) {
|
} 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 (!plot.getFlag(ProjectilesFlag.class)) {
|
||||||
if (!pp.hasPermission(Permission.PERMISSION_ADMIN_PROJECTILE_OTHER)) {
|
if (!pp.hasPermission(Permission.PERMISSION_ADMIN_PROJECTILE_OTHER)) {
|
||||||
pp.sendMessage(
|
pp.sendMessage(
|
||||||
|
@ -61,7 +61,6 @@ import com.plotsquared.core.plot.flag.implementations.MiscInteractFlag;
|
|||||||
import com.plotsquared.core.plot.flag.implementations.PlayerInteractFlag;
|
import com.plotsquared.core.plot.flag.implementations.PlayerInteractFlag;
|
||||||
import com.plotsquared.core.plot.flag.implementations.PreventCreativeCopyFlag;
|
import com.plotsquared.core.plot.flag.implementations.PreventCreativeCopyFlag;
|
||||||
import com.plotsquared.core.plot.flag.implementations.TamedInteractFlag;
|
import com.plotsquared.core.plot.flag.implementations.TamedInteractFlag;
|
||||||
import com.plotsquared.core.plot.flag.implementations.TileDropFlag;
|
|
||||||
import com.plotsquared.core.plot.flag.implementations.UntrustedVisitFlag;
|
import com.plotsquared.core.plot.flag.implementations.UntrustedVisitFlag;
|
||||||
import com.plotsquared.core.plot.flag.implementations.VehicleBreakFlag;
|
import com.plotsquared.core.plot.flag.implementations.VehicleBreakFlag;
|
||||||
import com.plotsquared.core.plot.flag.implementations.VehicleUseFlag;
|
import com.plotsquared.core.plot.flag.implementations.VehicleUseFlag;
|
||||||
@ -108,7 +107,6 @@ 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.block.Action;
|
import org.bukkit.event.block.Action;
|
||||||
import org.bukkit.event.block.BlockBreakEvent;
|
|
||||||
import org.bukkit.event.entity.EntityPickupItemEvent;
|
import org.bukkit.event.entity.EntityPickupItemEvent;
|
||||||
import org.bukkit.event.entity.EntityPlaceEvent;
|
import org.bukkit.event.entity.EntityPlaceEvent;
|
||||||
import org.bukkit.event.entity.EntityPotionEffectEvent;
|
import org.bukkit.event.entity.EntityPotionEffectEvent;
|
||||||
@ -238,19 +236,6 @@ public class PlayerEventListener implements Listener {
|
|||||||
this.plotListener = plotListener;
|
this.plotListener = plotListener;
|
||||||
}
|
}
|
||||||
|
|
||||||
@EventHandler(ignoreCancelled = true, priority = EventPriority.LOWEST)
|
|
||||||
public void onBlockBreak(final BlockBreakEvent event) {
|
|
||||||
Location location = BukkitUtil.adapt(event.getBlock().getLocation());
|
|
||||||
PlotArea area = location.getPlotArea();
|
|
||||||
if (area == null) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
Plot plot = area.getPlot(location);
|
|
||||||
if (plot != null) {
|
|
||||||
event.setDropItems(plot.getFlag(TileDropFlag.class));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
|
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
|
||||||
public void onPlayerDyeSign(PlayerInteractEvent event) {
|
public void onPlayerDyeSign(PlayerInteractEvent event) {
|
||||||
ItemStack itemStack = event.getItem();
|
ItemStack itemStack = event.getItem();
|
||||||
@ -1936,9 +1921,7 @@ public class PlayerEventListener implements Listener {
|
|||||||
|
|
||||||
@EventHandler
|
@EventHandler
|
||||||
public void onPlayerTakeLecternBook(PlayerTakeLecternBookEvent event) {
|
public void onPlayerTakeLecternBook(PlayerTakeLecternBookEvent event) {
|
||||||
Player player = event.getPlayer();
|
Location location = BukkitUtil.adapt(event.getPlayer().getLocation());
|
||||||
BukkitPlayer pp = BukkitUtil.adapt(player);
|
|
||||||
Location location = pp.getLocation();
|
|
||||||
PlotArea area = location.getPlotArea();
|
PlotArea area = location.getPlotArea();
|
||||||
if (area == null) {
|
if (area == null) {
|
||||||
return;
|
return;
|
||||||
@ -1950,12 +1933,10 @@ public class PlayerEventListener implements Listener {
|
|||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (!plot.isAdded(pp.getUUID())) {
|
|
||||||
if (plot.getFlag(LecternReadBookFlag.class)) {
|
if (plot.getFlag(LecternReadBookFlag.class)) {
|
||||||
plot.debug(event.getPlayer().getName() + " could not take the book because of lectern-read-book = true");
|
plot.debug(event.getPlayer().getName() + " could not take the book because of lectern-read-book = true");
|
||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -28,14 +28,12 @@ import com.plotsquared.core.player.PlotPlayer;
|
|||||||
import com.plotsquared.core.plot.Plot;
|
import com.plotsquared.core.plot.Plot;
|
||||||
import com.plotsquared.core.plot.PlotArea;
|
import com.plotsquared.core.plot.PlotArea;
|
||||||
import com.plotsquared.core.plot.PlotHandler;
|
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.flag.implementations.ProjectilesFlag;
|
||||||
import com.plotsquared.core.plot.world.PlotAreaManager;
|
import com.plotsquared.core.plot.world.PlotAreaManager;
|
||||||
import com.plotsquared.core.util.PlotFlagUtil;
|
import com.plotsquared.core.util.PlotFlagUtil;
|
||||||
import net.kyori.adventure.text.minimessage.tag.Tag;
|
import net.kyori.adventure.text.minimessage.tag.Tag;
|
||||||
import net.kyori.adventure.text.minimessage.tag.resolver.TagResolver;
|
import net.kyori.adventure.text.minimessage.tag.resolver.TagResolver;
|
||||||
import org.bukkit.entity.Entity;
|
import org.bukkit.entity.Entity;
|
||||||
import org.bukkit.entity.EntityType;
|
|
||||||
import org.bukkit.entity.LivingEntity;
|
import org.bukkit.entity.LivingEntity;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.entity.Projectile;
|
import org.bukkit.entity.Projectile;
|
||||||
@ -134,11 +132,6 @@ public class ProjectileEventListener implements Listener {
|
|||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
}
|
}
|
||||||
} else if (!plot.isAdded(pp.getUUID())) {
|
} 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 (!plot.getFlag(ProjectilesFlag.class)) {
|
||||||
if (!pp.hasPermission(Permission.PERMISSION_ADMIN_PROJECTILE_OTHER)) {
|
if (!pp.hasPermission(Permission.PERMISSION_ADMIN_PROJECTILE_OTHER)) {
|
||||||
pp.sendMessage(
|
pp.sendMessage(
|
||||||
@ -194,8 +187,7 @@ public class ProjectileEventListener implements Listener {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (plot.isAdded(pp.getUUID()) || pp.hasPermission(Permission.PERMISSION_ADMIN_PROJECTILE_OTHER) || plot.getFlag(
|
if (plot.isAdded(pp.getUUID()) || pp.hasPermission(Permission.PERMISSION_ADMIN_PROJECTILE_OTHER) || plot.getFlag(
|
||||||
ProjectilesFlag.class) || (entity.getType().equals(EntityType.FISHING_HOOK) && plot.getFlag(
|
ProjectilesFlag.class)) {
|
||||||
FishingFlag.class))) {
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
entity.remove();
|
entity.remove();
|
||||||
|
@ -20,8 +20,6 @@ package com.plotsquared.bukkit.placeholder;
|
|||||||
|
|
||||||
import com.plotsquared.core.PlotSquared;
|
import com.plotsquared.core.PlotSquared;
|
||||||
import com.plotsquared.core.player.PlotPlayer;
|
import com.plotsquared.core.player.PlotPlayer;
|
||||||
import com.plotsquared.core.plot.flag.implementations.DoneFlag;
|
|
||||||
import com.plotsquared.core.util.query.PlotQuery;
|
|
||||||
import me.clip.placeholderapi.PlaceholderAPIPlugin;
|
import me.clip.placeholderapi.PlaceholderAPIPlugin;
|
||||||
import me.clip.placeholderapi.expansion.PlaceholderExpansion;
|
import me.clip.placeholderapi.expansion.PlaceholderExpansion;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
@ -85,20 +83,6 @@ public class PAPIPlaceholders extends PlaceholderExpansion {
|
|||||||
return String.valueOf(pl.getPlotCount(identifier));
|
return String.valueOf(pl.getPlotCount(identifier));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (identifier.startsWith("base_plot_count_")) {
|
|
||||||
identifier = identifier.substring("base_plot_count_".length());
|
|
||||||
if (identifier.isEmpty()) {
|
|
||||||
return "";
|
|
||||||
}
|
|
||||||
|
|
||||||
return String.valueOf(PlotQuery.newQuery()
|
|
||||||
.ownedBy(pl)
|
|
||||||
.inWorld(identifier)
|
|
||||||
.whereBasePlot()
|
|
||||||
.thatPasses(plot -> !DoneFlag.isDone(plot))
|
|
||||||
.count());
|
|
||||||
}
|
|
||||||
|
|
||||||
// PlotSquared placeholders
|
// PlotSquared placeholders
|
||||||
return PlotSquared.platform().placeholderRegistry().getPlaceholderValue(identifier, pl);
|
return PlotSquared.platform().placeholderRegistry().getPlaceholderValue(identifier, pl);
|
||||||
}
|
}
|
||||||
|
@ -32,7 +32,6 @@ import com.plotsquared.core.plot.PlotWeather;
|
|||||||
import com.plotsquared.core.plot.world.PlotAreaManager;
|
import com.plotsquared.core.plot.world.PlotAreaManager;
|
||||||
import com.plotsquared.core.util.EventDispatcher;
|
import com.plotsquared.core.util.EventDispatcher;
|
||||||
import com.plotsquared.core.util.MathMan;
|
import com.plotsquared.core.util.MathMan;
|
||||||
import com.plotsquared.core.util.WorldUtil;
|
|
||||||
import com.sk89q.worldedit.bukkit.BukkitAdapter;
|
import com.sk89q.worldedit.bukkit.BukkitAdapter;
|
||||||
import com.sk89q.worldedit.extension.platform.Actor;
|
import com.sk89q.worldedit.extension.platform.Actor;
|
||||||
import com.sk89q.worldedit.world.item.ItemType;
|
import com.sk89q.worldedit.world.item.ItemType;
|
||||||
@ -121,9 +120,6 @@ public class BukkitPlayer extends PlotPlayer<Player> {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean canTeleport(final @NonNull Location location) {
|
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 to = BukkitUtil.adapt(location);
|
||||||
final org.bukkit.Location from = player.getLocation();
|
final org.bukkit.Location from = player.getLocation();
|
||||||
PlayerTeleportEvent event = new PlayerTeleportEvent(player, from, to);
|
PlayerTeleportEvent event = new PlayerTeleportEvent(player, from, to);
|
||||||
@ -225,7 +221,7 @@ public class BukkitPlayer extends PlotPlayer<Player> {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void teleport(final @NonNull Location location, final @NonNull TeleportCause cause) {
|
public void teleport(final @NonNull Location location, final @NonNull TeleportCause cause) {
|
||||||
if (!WorldUtil.isValidLocation(location)) {
|
if (Math.abs(location.getX()) >= 30000000 || Math.abs(location.getZ()) >= 30000000) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
final org.bukkit.Location bukkitLocation =
|
final org.bukkit.Location bukkitLocation =
|
||||||
@ -326,7 +322,7 @@ public class BukkitPlayer extends PlotPlayer<Player> {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
this.player.playSound(BukkitUtil.adapt(location), Sound.valueOf(BukkitAdapter.adapt(id).name()),
|
this.player.playSound(BukkitUtil.adapt(location), Sound.valueOf(BukkitAdapter.adapt(id).name()),
|
||||||
SoundCategory.MUSIC, Float.MAX_VALUE, 1f
|
SoundCategory.MUSIC, 1f, 1f
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -78,6 +78,5 @@ tasks {
|
|||||||
opt.encoding("UTF-8")
|
opt.encoding("UTF-8")
|
||||||
opt.keyWords()
|
opt.keyWords()
|
||||||
opt.addStringOption("-since", isRelease)
|
opt.addStringOption("-since", isRelease)
|
||||||
opt.noTimestamp()
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -20,6 +20,7 @@ package com.plotsquared.core.command;
|
|||||||
|
|
||||||
import com.google.inject.Inject;
|
import com.google.inject.Inject;
|
||||||
import com.plotsquared.core.configuration.Settings;
|
import com.plotsquared.core.configuration.Settings;
|
||||||
|
import com.plotsquared.core.configuration.caption.StaticCaption;
|
||||||
import com.plotsquared.core.configuration.caption.TranslatableCaption;
|
import com.plotsquared.core.configuration.caption.TranslatableCaption;
|
||||||
import com.plotsquared.core.permissions.Permission;
|
import com.plotsquared.core.permissions.Permission;
|
||||||
import com.plotsquared.core.player.PlotPlayer;
|
import com.plotsquared.core.player.PlotPlayer;
|
||||||
@ -201,6 +202,7 @@ public class Download extends SubCommand {
|
|||||||
.tag("delete", Tag.preProcessParsed("Not available"))
|
.tag("delete", Tag.preProcessParsed("Not available"))
|
||||||
.build()
|
.build()
|
||||||
);
|
);
|
||||||
|
player.sendMessage(StaticCaption.of(value.toString()));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
));
|
));
|
||||||
|
@ -268,7 +268,6 @@ public class MainCommand extends Command {
|
|||||||
tp = true;
|
tp = true;
|
||||||
} else {
|
} else {
|
||||||
player.sendMessage(TranslatableCaption.of("border.denied"));
|
player.sendMessage(TranslatableCaption.of("border.denied"));
|
||||||
return CompletableFuture.completedFuture(false);
|
|
||||||
}
|
}
|
||||||
// Trim command
|
// Trim command
|
||||||
args = Arrays.copyOfRange(args, 1, args.length);
|
args = Arrays.copyOfRange(args, 1, args.length);
|
||||||
|
@ -77,7 +77,6 @@ public class Visit extends Command {
|
|||||||
query.whereBasePlot();
|
query.whereBasePlot();
|
||||||
}
|
}
|
||||||
|
|
||||||
// without specified argument
|
|
||||||
if (page == Integer.MIN_VALUE) {
|
if (page == Integer.MIN_VALUE) {
|
||||||
page = 1;
|
page = 1;
|
||||||
}
|
}
|
||||||
@ -95,15 +94,10 @@ public class Visit extends Command {
|
|||||||
|
|
||||||
final List<Plot> plots = query.asList();
|
final List<Plot> plots = query.asList();
|
||||||
|
|
||||||
// Conversion of reversed page argument
|
|
||||||
if (page < 0) {
|
|
||||||
page = (plots.size() + 1) + page;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (plots.isEmpty()) {
|
if (plots.isEmpty()) {
|
||||||
player.sendMessage(TranslatableCaption.of("invalid.found_no_plots"));
|
player.sendMessage(TranslatableCaption.of("invalid.found_no_plots"));
|
||||||
return;
|
return;
|
||||||
} else if (page > plots.size() || page < 1) {
|
} else if (plots.size() < page || page < 1) {
|
||||||
player.sendMessage(
|
player.sendMessage(
|
||||||
TranslatableCaption.of("invalid.number_not_in_range"),
|
TranslatableCaption.of("invalid.number_not_in_range"),
|
||||||
TagResolver.builder()
|
TagResolver.builder()
|
||||||
@ -194,22 +188,34 @@ public class Visit extends Command {
|
|||||||
int page = Integer.MIN_VALUE;
|
int page = Integer.MIN_VALUE;
|
||||||
|
|
||||||
switch (args.length) {
|
switch (args.length) {
|
||||||
// /p v <player> <area> <page>
|
// /p v <user> <area> <page>
|
||||||
case 3:
|
case 3:
|
||||||
if (isInvalidPageNr(args[2])) {
|
if (!MathMan.isInteger(args[2])) {
|
||||||
sendInvalidPageNrMsg(player);
|
player.sendMessage(
|
||||||
|
TranslatableCaption.of("invalid.not_valid_number"),
|
||||||
|
TagResolver.resolver("value", Tag.inserting(Component.text("(1, ∞)")))
|
||||||
|
);
|
||||||
|
player.sendMessage(
|
||||||
|
TranslatableCaption.of("commandconfig.command_syntax"),
|
||||||
|
TagResolver.resolver("value", Tag.inserting(Component.text(getUsage())))
|
||||||
|
);
|
||||||
return CompletableFuture.completedFuture(false);
|
return CompletableFuture.completedFuture(false);
|
||||||
}
|
}
|
||||||
page = getPageNr(args[2]);
|
page = Integer.parseInt(args[2]);
|
||||||
// /p v <player> <area> [page]
|
// /p v <name> <area> [page]
|
||||||
// /p v <player> [page]
|
// /p v <name> [page]
|
||||||
case 2:
|
case 2:
|
||||||
// If "case 3" is already through or the argument is not a page number:
|
if (page != Integer.MIN_VALUE || !MathMan.isInteger(args[1])) {
|
||||||
// -> /p v <player> <area> [page]
|
|
||||||
if (page != Integer.MIN_VALUE || isInvalidPageNr(args[1])) {
|
|
||||||
sortByArea = this.plotAreaManager.getPlotAreaByString(args[1]);
|
sortByArea = this.plotAreaManager.getPlotAreaByString(args[1]);
|
||||||
if (sortByArea == null) {
|
if (sortByArea == null) {
|
||||||
sendInvalidPageNrMsg(player);
|
player.sendMessage(
|
||||||
|
TranslatableCaption.of("invalid.not_valid_number"),
|
||||||
|
TagResolver.resolver("value", Tag.inserting(Component.text("(1, ∞)")))
|
||||||
|
);
|
||||||
|
player.sendMessage(
|
||||||
|
TranslatableCaption.of("commandconfig.command_syntax"),
|
||||||
|
TagResolver.resolver("value", Tag.inserting(Component.text(getUsage())))
|
||||||
|
);
|
||||||
return CompletableFuture.completedFuture(false);
|
return CompletableFuture.completedFuture(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -243,13 +249,16 @@ public class Visit extends Command {
|
|||||||
});
|
});
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
// -> /p v <player> <page>
|
try {
|
||||||
if (isInvalidPageNr(args[1])) {
|
page = Integer.parseInt(args[1]);
|
||||||
sendInvalidPageNrMsg(player);
|
} catch (NumberFormatException ignored) {
|
||||||
|
player.sendMessage(
|
||||||
|
TranslatableCaption.of("invalid.not_a_number"),
|
||||||
|
TagResolver.resolver("value", Tag.inserting(Component.text(args[1])))
|
||||||
|
);
|
||||||
return CompletableFuture.completedFuture(false);
|
return CompletableFuture.completedFuture(false);
|
||||||
}
|
}
|
||||||
page = getPageNr(args[1]);
|
// /p v <name> [page]
|
||||||
// /p v <player> [page]
|
|
||||||
// /p v <uuid> [page]
|
// /p v <uuid> [page]
|
||||||
// /p v <plot> [page]
|
// /p v <plot> [page]
|
||||||
// /p v <alias>
|
// /p v <alias>
|
||||||
@ -317,35 +326,6 @@ public class Visit extends Command {
|
|||||||
return CompletableFuture.completedFuture(true);
|
return CompletableFuture.completedFuture(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
private boolean isInvalidPageNr(String arg) {
|
|
||||||
if (MathMan.isInteger(arg)) {
|
|
||||||
return false;
|
|
||||||
} else if (arg.equals("last") || arg.equals("n")) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
private int getPageNr(String arg) {
|
|
||||||
if (MathMan.isInteger(arg)) {
|
|
||||||
return Integer.parseInt(arg);
|
|
||||||
} else if (arg.equals("last") || arg.equals("n")) {
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
return Integer.MIN_VALUE;
|
|
||||||
}
|
|
||||||
|
|
||||||
private void sendInvalidPageNrMsg(PlotPlayer<?> player) {
|
|
||||||
player.sendMessage(
|
|
||||||
TranslatableCaption.of("invalid.not_valid_number"),
|
|
||||||
TagResolver.resolver("value", Tag.inserting(Component.text("(1, ∞)")))
|
|
||||||
);
|
|
||||||
player.sendMessage(
|
|
||||||
TranslatableCaption.of("commandconfig.command_syntax"),
|
|
||||||
TagResolver.resolver("value", Tag.inserting(Component.text(getUsage())))
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Collection<Command> tab(PlotPlayer<?> player, String[] args, boolean space) {
|
public Collection<Command> tab(PlotPlayer<?> player, String[] args, boolean space) {
|
||||||
final List<Command> completions = new ArrayList<>();
|
final List<Command> completions = new ArrayList<>();
|
||||||
@ -354,7 +334,6 @@ public class Visit extends Command {
|
|||||||
case 1 -> {
|
case 1 -> {
|
||||||
completions.addAll(
|
completions.addAll(
|
||||||
TabCompletions.completeAreas(args[1]));
|
TabCompletions.completeAreas(args[1]));
|
||||||
completions.addAll(TabCompletions.asCompletions("last"));
|
|
||||||
if (args[1].isEmpty()) {
|
if (args[1].isEmpty()) {
|
||||||
// if no input is given, only suggest 1 - 3
|
// if no input is given, only suggest 1 - 3
|
||||||
completions.addAll(
|
completions.addAll(
|
||||||
@ -365,7 +344,6 @@ public class Visit extends Command {
|
|||||||
TabCompletions.completeNumbers(args[1], 10, 999));
|
TabCompletions.completeNumbers(args[1], 10, 999));
|
||||||
}
|
}
|
||||||
case 2 -> {
|
case 2 -> {
|
||||||
completions.addAll(TabCompletions.asCompletions("last"));
|
|
||||||
if (args[2].isEmpty()) {
|
if (args[2].isEmpty()) {
|
||||||
// if no input is given, only suggest 1 - 3
|
// if no input is given, only suggest 1 - 3
|
||||||
completions.addAll(
|
completions.addAll(
|
||||||
|
@ -723,12 +723,6 @@ 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",
|
@Comment({"Enable or disable parts of the plugin",
|
||||||
"Note: A cache will use some memory if enabled"})
|
"Note: A cache will use some memory if enabled"})
|
||||||
|
@ -2574,12 +2574,6 @@ public class Plot {
|
|||||||
*/
|
*/
|
||||||
public void teleportPlayer(final PlotPlayer<?> player, TeleportCause cause, Consumer<Boolean> resultConsumer) {
|
public void teleportPlayer(final PlotPlayer<?> player, TeleportCause cause, Consumer<Boolean> resultConsumer) {
|
||||||
Plot plot = this.getBasePlot(false);
|
Plot plot = this.getBasePlot(false);
|
||||||
if ((getArea() == null || !(getArea() instanceof SinglePlotArea)) && !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);
|
PlayerTeleportToPlotEvent event = this.eventDispatcher.callTeleport(player, player.getLocation(), plot, cause);
|
||||||
if (event.getEventResult() == Result.DENY) {
|
if (event.getEventResult() == Result.DENY) {
|
||||||
|
@ -1455,7 +1455,7 @@ public abstract class PlotArea implements ComponentLike {
|
|||||||
/**
|
/**
|
||||||
* Get the maximum height that changes to plot components (wall filling, air, all etc.) may operate to
|
* Get the maximum height that changes to plot components (wall filling, air, all etc.) may operate to
|
||||||
*
|
*
|
||||||
* @since 7.3.4
|
* @since TODO
|
||||||
*/
|
*/
|
||||||
public int getMaxComponentHeight() {
|
public int getMaxComponentHeight() {
|
||||||
return this.maxBuildHeight;
|
return this.maxBuildHeight;
|
||||||
@ -1464,7 +1464,7 @@ public abstract class PlotArea implements ComponentLike {
|
|||||||
/**
|
/**
|
||||||
* Get the minimum height that changes to plot components (wall filling, air, all etc.) may operate to
|
* Get the minimum height that changes to plot components (wall filling, air, all etc.) may operate to
|
||||||
*
|
*
|
||||||
* @since 7.3.4
|
* @since TODO
|
||||||
*/
|
*/
|
||||||
public int getMinComponentHeight() {
|
public int getMinComponentHeight() {
|
||||||
return this.minBuildHeight;
|
return this.minBuildHeight;
|
||||||
|
@ -48,7 +48,6 @@ import com.plotsquared.core.plot.flag.implementations.EntityChangeBlockFlag;
|
|||||||
import com.plotsquared.core.plot.flag.implementations.ExplosionFlag;
|
import com.plotsquared.core.plot.flag.implementations.ExplosionFlag;
|
||||||
import com.plotsquared.core.plot.flag.implementations.FarewellFlag;
|
import com.plotsquared.core.plot.flag.implementations.FarewellFlag;
|
||||||
import com.plotsquared.core.plot.flag.implementations.FeedFlag;
|
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.FlyFlag;
|
||||||
import com.plotsquared.core.plot.flag.implementations.ForcefieldFlag;
|
import com.plotsquared.core.plot.flag.implementations.ForcefieldFlag;
|
||||||
import com.plotsquared.core.plot.flag.implementations.GamemodeFlag;
|
import com.plotsquared.core.plot.flag.implementations.GamemodeFlag;
|
||||||
@ -102,7 +101,6 @@ import com.plotsquared.core.plot.flag.implementations.SnowMeltFlag;
|
|||||||
import com.plotsquared.core.plot.flag.implementations.SoilDryFlag;
|
import com.plotsquared.core.plot.flag.implementations.SoilDryFlag;
|
||||||
import com.plotsquared.core.plot.flag.implementations.TamedAttackFlag;
|
import com.plotsquared.core.plot.flag.implementations.TamedAttackFlag;
|
||||||
import com.plotsquared.core.plot.flag.implementations.TamedInteractFlag;
|
import com.plotsquared.core.plot.flag.implementations.TamedInteractFlag;
|
||||||
import com.plotsquared.core.plot.flag.implementations.TileDropFlag;
|
|
||||||
import com.plotsquared.core.plot.flag.implementations.TimeFlag;
|
import com.plotsquared.core.plot.flag.implementations.TimeFlag;
|
||||||
import com.plotsquared.core.plot.flag.implementations.TitlesFlag;
|
import com.plotsquared.core.plot.flag.implementations.TitlesFlag;
|
||||||
import com.plotsquared.core.plot.flag.implementations.UntrustedVisitFlag;
|
import com.plotsquared.core.plot.flag.implementations.UntrustedVisitFlag;
|
||||||
@ -160,7 +158,6 @@ public final class GlobalFlagContainer extends FlagContainer {
|
|||||||
this.addFlag(EditSignFlag.EDIT_SIGN_FALSE);
|
this.addFlag(EditSignFlag.EDIT_SIGN_FALSE);
|
||||||
this.addFlag(EntityChangeBlockFlag.ENTITY_CHANGE_BLOCK_FALSE);
|
this.addFlag(EntityChangeBlockFlag.ENTITY_CHANGE_BLOCK_FALSE);
|
||||||
this.addFlag(ExplosionFlag.EXPLOSION_FALSE);
|
this.addFlag(ExplosionFlag.EXPLOSION_FALSE);
|
||||||
this.addFlag(FishingFlag.FISHING_FALSE);
|
|
||||||
this.addFlag(ForcefieldFlag.FORCEFIELD_FALSE);
|
this.addFlag(ForcefieldFlag.FORCEFIELD_FALSE);
|
||||||
this.addFlag(GrassGrowFlag.GRASS_GROW_TRUE);
|
this.addFlag(GrassGrowFlag.GRASS_GROW_TRUE);
|
||||||
this.addFlag(HangingBreakFlag.HANGING_BREAK_FALSE);
|
this.addFlag(HangingBreakFlag.HANGING_BREAK_FALSE);
|
||||||
@ -199,7 +196,6 @@ public final class GlobalFlagContainer extends FlagContainer {
|
|||||||
this.addFlag(SoilDryFlag.SOIL_DRY_FALSE);
|
this.addFlag(SoilDryFlag.SOIL_DRY_FALSE);
|
||||||
this.addFlag(TamedAttackFlag.TAMED_ATTACK_FALSE);
|
this.addFlag(TamedAttackFlag.TAMED_ATTACK_FALSE);
|
||||||
this.addFlag(TamedInteractFlag.TAMED_INTERACT_FALSE);
|
this.addFlag(TamedInteractFlag.TAMED_INTERACT_FALSE);
|
||||||
this.addFlag(TileDropFlag.TILE_DROP_TRUE);
|
|
||||||
this.addFlag(UntrustedVisitFlag.UNTRUSTED_VISIT_FLAG_TRUE);
|
this.addFlag(UntrustedVisitFlag.UNTRUSTED_VISIT_FLAG_TRUE);
|
||||||
this.addFlag(VehicleBreakFlag.VEHICLE_BREAK_FALSE);
|
this.addFlag(VehicleBreakFlag.VEHICLE_BREAK_FALSE);
|
||||||
this.addFlag(VehiclePlaceFlag.VEHICLE_PLACE_FALSE);
|
this.addFlag(VehiclePlaceFlag.VEHICLE_PLACE_FALSE);
|
||||||
|
@ -1,39 +0,0 @@
|
|||||||
/*
|
|
||||||
* 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;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
@ -1,43 +0,0 @@
|
|||||||
/*
|
|
||||||
* 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;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @since 7.3.7
|
|
||||||
*/
|
|
||||||
|
|
||||||
public class TileDropFlag extends BooleanFlag<TileDropFlag> {
|
|
||||||
|
|
||||||
public static final TileDropFlag TILE_DROP_TRUE = new TileDropFlag(true);
|
|
||||||
public static final TileDropFlag TILE_DROP_FALSE = new TileDropFlag(false);
|
|
||||||
|
|
||||||
private TileDropFlag(boolean value) {
|
|
||||||
super(value, TranslatableCaption.of("flags.flag_description_tile_drop"));
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected TileDropFlag flagOf(@NonNull Boolean value) {
|
|
||||||
return value ? TILE_DROP_TRUE : TILE_DROP_FALSE;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
@ -37,7 +37,7 @@ import java.util.List;
|
|||||||
|
|
||||||
public class SinglePlotManager extends PlotManager {
|
public class SinglePlotManager extends PlotManager {
|
||||||
|
|
||||||
private static final int MAX_COORDINATE = 20000000;
|
private static final int MAX_COORDINATE = 30000000;
|
||||||
|
|
||||||
public SinglePlotManager(final @NonNull PlotArea plotArea) {
|
public SinglePlotManager(final @NonNull PlotArea plotArea) {
|
||||||
super(plotArea);
|
super(plotArea);
|
||||||
|
@ -551,7 +551,6 @@ public class EventDispatcher {
|
|||||||
)
|
)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
return false;
|
|
||||||
}
|
}
|
||||||
default -> {
|
default -> {
|
||||||
}
|
}
|
||||||
|
@ -62,15 +62,6 @@ import java.util.zip.ZipOutputStream;
|
|||||||
|
|
||||||
public abstract class WorldUtil {
|
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
|
* Set the biome in a region
|
||||||
*
|
*
|
||||||
|
@ -27,17 +27,13 @@ import com.plotsquared.core.PlotSquared;
|
|||||||
import com.plotsquared.core.configuration.Settings;
|
import com.plotsquared.core.configuration.Settings;
|
||||||
import com.plotsquared.core.configuration.caption.LocaleHolder;
|
import com.plotsquared.core.configuration.caption.LocaleHolder;
|
||||||
import com.plotsquared.core.configuration.caption.TranslatableCaption;
|
import com.plotsquared.core.configuration.caption.TranslatableCaption;
|
||||||
import com.plotsquared.core.player.MetaDataAccess;
|
|
||||||
import com.plotsquared.core.player.PlayerMetaDataKeys;
|
|
||||||
import com.plotsquared.core.player.PlotPlayer;
|
import com.plotsquared.core.player.PlotPlayer;
|
||||||
import com.plotsquared.core.plot.Plot;
|
import com.plotsquared.core.plot.Plot;
|
||||||
import com.plotsquared.core.plot.flag.GlobalFlagContainer;
|
import com.plotsquared.core.plot.flag.GlobalFlagContainer;
|
||||||
import com.plotsquared.core.plot.flag.PlotFlag;
|
import com.plotsquared.core.plot.flag.PlotFlag;
|
||||||
import com.plotsquared.core.plot.flag.implementations.DoneFlag;
|
|
||||||
import com.plotsquared.core.plot.flag.implementations.ServerPlotFlag;
|
import com.plotsquared.core.plot.flag.implementations.ServerPlotFlag;
|
||||||
import com.plotsquared.core.util.EventDispatcher;
|
import com.plotsquared.core.util.EventDispatcher;
|
||||||
import com.plotsquared.core.util.PlayerManager;
|
import com.plotsquared.core.util.PlayerManager;
|
||||||
import com.plotsquared.core.util.query.PlotQuery;
|
|
||||||
import net.kyori.adventure.text.Component;
|
import net.kyori.adventure.text.Component;
|
||||||
import org.checkerframework.checker.nullness.qual.NonNull;
|
import org.checkerframework.checker.nullness.qual.NonNull;
|
||||||
import org.checkerframework.checker.nullness.qual.Nullable;
|
import org.checkerframework.checker.nullness.qual.Nullable;
|
||||||
@ -99,12 +95,6 @@ public final class PlaceholderRegistry {
|
|||||||
}
|
}
|
||||||
return Integer.toString(player.getAllowedPlots());
|
return Integer.toString(player.getAllowedPlots());
|
||||||
});
|
});
|
||||||
this.createPlaceholder("base_plot_count", player -> Integer.toString(PlotQuery.newQuery()
|
|
||||||
.ownedBy(player)
|
|
||||||
.whereBasePlot()
|
|
||||||
.thatPasses(plot -> !DoneFlag.isDone(plot))
|
|
||||||
.count())
|
|
||||||
);
|
|
||||||
this.createPlaceholder("plot_count", player -> Integer.toString(player.getPlotCount()));
|
this.createPlaceholder("plot_count", player -> Integer.toString(player.getPlotCount()));
|
||||||
this.createPlaceholder("currentplot_alias", (player, plot) -> {
|
this.createPlaceholder("currentplot_alias", (player, plot) -> {
|
||||||
if (plot.getAlias().isEmpty()) {
|
if (plot.getAlias().isEmpty()) {
|
||||||
@ -199,11 +189,6 @@ public final class PlaceholderRegistry {
|
|||||||
});
|
});
|
||||||
this.createPlaceholder("currentplot_biome", (player, plot) -> plot.getBiomeSynchronous().toString());
|
this.createPlaceholder("currentplot_biome", (player, plot) -> plot.getBiomeSynchronous().toString());
|
||||||
this.createPlaceholder("currentplot_size", (player, plot) -> String.valueOf(plot.getConnectedPlots().size()));
|
this.createPlaceholder("currentplot_size", (player, plot) -> String.valueOf(plot.getConnectedPlots().size()));
|
||||||
this.createPlaceholder("total_grants", player -> {
|
|
||||||
try (final MetaDataAccess<Integer> metaDataAccess = player.accessPersistentMetaData(PlayerMetaDataKeys.PERSISTENT_GRANTED_PLOTS)) {
|
|
||||||
return Integer.toString(metaDataAccess.get().orElse(0));
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -559,7 +559,6 @@
|
|||||||
"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_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_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_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_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_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>",
|
"flags.flag_description_hanging_break": "<gray>Set to `true` to allow guests to break hanging objects in the plot.</gray>",
|
||||||
@ -606,7 +605,6 @@
|
|||||||
"flags.flag_description_tamed_attack": "<gray>Set to `true` to allow guests to attack tamed animals in the plot.</gray>",
|
"flags.flag_description_tamed_attack": "<gray>Set to `true` to allow guests to attack tamed animals in the plot.</gray>",
|
||||||
"flags.flag_description_tamed_interact": "<gray>Set to `true` to allow guests to interact with tamed animals in the plot.</gray>",
|
"flags.flag_description_tamed_interact": "<gray>Set to `true` to allow guests to interact with tamed animals in the plot.</gray>",
|
||||||
"flags.flag_description_time": "<gray>Set the time in the plot to a fixed value.</gray>",
|
"flags.flag_description_time": "<gray>Set the time in the plot to a fixed value.</gray>",
|
||||||
"flags.flag_description_tile_drop": "<gray>Set to `false` to prevent blocks from dropping items in the plot.</gray>",
|
|
||||||
"flags.flag_description_titles": "<gray>Set to `false` to disable plot titles. Can be set to: `none` (to inherit world settings), `true`, or `false`</gray>",
|
"flags.flag_description_titles": "<gray>Set to `false` to disable plot titles. Can be set to: `none` (to inherit world settings), `true`, or `false`</gray>",
|
||||||
"flags.flag_description_title": "<gray>Set the pop-up title's title and subtitle. Format: /plot flag set title \"A title\" \"The subtitle\"</gray>",
|
"flags.flag_description_title": "<gray>Set the pop-up title's title and subtitle. Format: /plot flag set title \"A title\" \"The subtitle\"</gray>",
|
||||||
"flags.flag_description_use": "<gray>Define a list of materials players should be able to interact with in the plot.</gray>",
|
"flags.flag_description_use": "<gray>Define a list of materials players should be able to interact with in the plot.</gray>",
|
||||||
|
@ -22,7 +22,7 @@ plugins {
|
|||||||
}
|
}
|
||||||
|
|
||||||
group = "com.intellectualsites.plotsquared"
|
group = "com.intellectualsites.plotsquared"
|
||||||
version = "7.3.8-SNAPSHOT"
|
version = "7.3.4-SNAPSHOT"
|
||||||
|
|
||||||
if (!File("$rootDir/.git").exists()) {
|
if (!File("$rootDir/.git").exists()) {
|
||||||
logger.lifecycle("""
|
logger.lifecycle("""
|
||||||
@ -209,11 +209,6 @@ subprojects {
|
|||||||
test {
|
test {
|
||||||
useJUnitPlatform()
|
useJUnitPlatform()
|
||||||
}
|
}
|
||||||
|
|
||||||
withType<AbstractArchiveTask>().configureEach {
|
|
||||||
isPreserveFileTimestamps = false
|
|
||||||
isReproducibleFileOrder = true
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -230,7 +225,7 @@ tasks.getByName<Jar>("jar") {
|
|||||||
enabled = false
|
enabled = false
|
||||||
}
|
}
|
||||||
|
|
||||||
val supportedVersions = listOf("1.18.2", "1.19.4", "1.20.1", "1.20.4")
|
val supportedVersions = listOf("1.16.5", "1.17.1", "1.18.2", "1.19.4", "1.20.1", "1.20.4")
|
||||||
tasks {
|
tasks {
|
||||||
register("cacheLatestFaweArtifact") {
|
register("cacheLatestFaweArtifact") {
|
||||||
val lastSuccessfulBuildUrl = uri("https://ci.athion.net/job/FastAsyncWorldEdit/lastSuccessfulBuild/api/json").toURL()
|
val lastSuccessfulBuildUrl = uri("https://ci.athion.net/job/FastAsyncWorldEdit/lastSuccessfulBuild/api/json").toURL()
|
||||||
|
@ -2,18 +2,18 @@
|
|||||||
# Platform expectations
|
# Platform expectations
|
||||||
paper = "1.20.2-R0.1-SNAPSHOT"
|
paper = "1.20.2-R0.1-SNAPSHOT"
|
||||||
guice = "7.0.0"
|
guice = "7.0.0"
|
||||||
spotbugs = "4.8.4"
|
spotbugs = "4.8.3"
|
||||||
checkerqual = "3.42.0"
|
checkerqual = "3.42.0"
|
||||||
gson = "2.10"
|
gson = "2.10"
|
||||||
guava = "31.1-jre"
|
guava = "31.1-jre"
|
||||||
snakeyaml = "2.0"
|
snakeyaml = "2.0"
|
||||||
adventure = "4.16.0"
|
adventure = "4.15.0"
|
||||||
adventure-bukkit = "4.3.2"
|
adventure-bukkit = "4.3.2"
|
||||||
log4j = "2.19.0"
|
log4j = "2.19.0"
|
||||||
|
|
||||||
# Plugins
|
# Plugins
|
||||||
worldedit = "7.2.20"
|
worldedit = "7.2.18"
|
||||||
fawe = "2.9.2"
|
fawe = "2.8.4"
|
||||||
placeholderapi = "2.11.5"
|
placeholderapi = "2.11.5"
|
||||||
luckperms = "5.4"
|
luckperms = "5.4"
|
||||||
essentialsx = "2.20.1"
|
essentialsx = "2.20.1"
|
||||||
@ -36,7 +36,7 @@ serverlib = "2.3.4"
|
|||||||
shadow = "8.1.1"
|
shadow = "8.1.1"
|
||||||
grgit = "4.1.1"
|
grgit = "4.1.1"
|
||||||
spotless = "6.25.0"
|
spotless = "6.25.0"
|
||||||
nexus = "2.0.0"
|
nexus = "1.3.0"
|
||||||
runPaper = "2.2.3"
|
runPaper = "2.2.3"
|
||||||
|
|
||||||
[libraries]
|
[libraries]
|
||||||
|
BIN
gradle/wrapper/gradle-wrapper.jar
vendored
BIN
gradle/wrapper/gradle-wrapper.jar
vendored
Binary file not shown.
2
gradle/wrapper/gradle-wrapper.properties
vendored
2
gradle/wrapper/gradle-wrapper.properties
vendored
@ -1,6 +1,6 @@
|
|||||||
distributionBase=GRADLE_USER_HOME
|
distributionBase=GRADLE_USER_HOME
|
||||||
distributionPath=wrapper/dists
|
distributionPath=wrapper/dists
|
||||||
distributionUrl=https\://services.gradle.org/distributions/gradle-8.7-bin.zip
|
distributionUrl=https\://services.gradle.org/distributions/gradle-8.6-bin.zip
|
||||||
networkTimeout=10000
|
networkTimeout=10000
|
||||||
validateDistributionUrl=true
|
validateDistributionUrl=true
|
||||||
zipStoreBase=GRADLE_USER_HOME
|
zipStoreBase=GRADLE_USER_HOME
|
||||||
|
Reference in New Issue
Block a user