mirror of
https://github.com/IntellectualSites/PlotSquared.git
synced 2025-07-04 14:44:43 +02:00
Compare commits
1 Commits
6.5.0
...
docs/v6/ja
Author | SHA1 | Date | |
---|---|---|---|
d628aaba34 |
2
.github/ISSUE_TEMPLATE/bug_report.yml
vendored
2
.github/ISSUE_TEMPLATE/bug_report.yml
vendored
@ -7,7 +7,7 @@ body:
|
||||
attributes:
|
||||
value: |
|
||||
Thanks for taking the time to fill out this bug report for PlotSquared! Fill out the following form to your best ability to help us fix the problem.
|
||||
Only use this if you're absolutely sure that you found a bug and can reproduce it. For anything else, use: [our Discord server](https://discord.gg/intellectualsites) or [the wiki](https://intellectualsites.github.io/plotsquared-documentation/).
|
||||
Only use this if you're absolutely sure that you found a bug and can reproduce it. For anything else, use: [our Discord server](https://discord.gg/intellectualsites) or [the wiki](https://github.com/IntellectualSites/PlotSquared-Documentation/wiki).
|
||||
Do NOT use the public issue tracker to report security vulnerabilities! They are disclosed using [this](https://forms.gle/btgdRn9yhGtzEiGW8) form!
|
||||
|
||||
- type: dropdown
|
||||
|
2
.github/ISSUE_TEMPLATE/config.yml
vendored
2
.github/ISSUE_TEMPLATE/config.yml
vendored
@ -4,5 +4,5 @@ contact_links:
|
||||
url: https://discord.gg/intellectualsites
|
||||
about: Our support Discord, please ask questions and seek support here.
|
||||
- name: PlotSquared Wiki
|
||||
url: https://intellectualsites.github.io/plotsquared-documentation/
|
||||
url: https://github.com/IntellectualSites/PlotSquared-Documentation/wiki
|
||||
about: Take a look at the wiki page for instructions how to setup PlotSquared and use its commands.
|
||||
|
2
.github/ISSUE_TEMPLATE/feature_request.yml
vendored
2
.github/ISSUE_TEMPLATE/feature_request.yml
vendored
@ -7,7 +7,7 @@ body:
|
||||
attributes:
|
||||
value: |
|
||||
Thanks for taking the time to fill out this feature request for PlotSquared! Fill out the following form to your best ability to help us understand your feature request and greately improve the change of it getting added.
|
||||
For anything else than a feature request, use: [our Discord server](https://discord.gg/intellectualsites) or [the wiki](https://intellectualsites.github.io/plotsquared-documentation/).
|
||||
For anything else than a feature request, use: [our Discord server](https://discord.gg/intellectualsites) or [the wiki](https://github.com/IntellectualSites/PlotSquared-Documentation/wiki).
|
||||
|
||||
- type: textarea
|
||||
attributes:
|
||||
|
1
.github/workflows/build.yml
vendored
1
.github/workflows/build.yml
vendored
@ -4,7 +4,6 @@ on: [ pull_request, push ]
|
||||
|
||||
jobs:
|
||||
build:
|
||||
if: ${{ github.event_name != 'pull_request' || github.repository != github.event.pull_request.head.repo.full_name }}
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout Repository
|
||||
|
3
.github/workflows/release-drafter.yml
vendored
3
.github/workflows/release-drafter.yml
vendored
@ -11,9 +11,8 @@ on:
|
||||
|
||||
jobs:
|
||||
update_release_draft:
|
||||
if: ${{ github.event_name != 'pull_request' || github.repository != github.event.pull_request.head.repo.full_name }}
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: release-drafter/release-drafter@v5.18.1
|
||||
- uses: release-drafter/release-drafter@v5.17.6
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
13
.whitesource
Normal file
13
.whitesource
Normal file
@ -0,0 +1,13 @@
|
||||
{
|
||||
"scanSettings": {
|
||||
"baseBranches": ["v6"]
|
||||
},
|
||||
"checkRunSettings": {
|
||||
"vulnerableCheckRunConclusionLevel": "success",
|
||||
"displayMode": "diff"
|
||||
},
|
||||
"issueSettings": {
|
||||
"minSeverityLevel": "LOW"
|
||||
},
|
||||
"enableRenovate": "true"
|
||||
}
|
@ -96,10 +96,10 @@ tasks {
|
||||
withType<Javadoc> {
|
||||
val opt = options as StandardJavadocDocletOptions
|
||||
opt.links("https://papermc.io/javadocs/paper/1.18/")
|
||||
opt.links("https://docs.enginehub.org/javadoc/com.sk89q.worldedit/worldedit-bukkit/" + libs.worldeditBukkit.get().versionConstraint.toString())
|
||||
opt.links("https://docs.enginehub.org/javadoc/com.sk89q.worldedit/worldedit-bukkit/7.2.8/")
|
||||
opt.links("https://javadoc.io/doc/com.plotsquared/PlotSquared-Core/latest/")
|
||||
opt.links("https://jd.adventure.kyori.net/api/" + libs.adventure.get().versionConstraint.toString())
|
||||
opt.links("https://google.github.io/guice/api-docs/" + libs.guice.get().versionConstraint.toString() + "/javadoc/")
|
||||
opt.links("https://jd.adventure.kyori.net/api/4.9.3/")
|
||||
opt.links("https://google.github.io/guice/api-docs/5.0.1/javadoc/")
|
||||
opt.links("https://checkerframework.org/api/")
|
||||
}
|
||||
}
|
||||
|
@ -166,7 +166,7 @@ public class BlockEventListener implements Listener {
|
||||
}
|
||||
if (Settings.Redstone.DISABLE_OFFLINE) {
|
||||
boolean disable = false;
|
||||
if (!DBFunc.SERVER.equals(plot.getOwner())) {
|
||||
if (!plot.getOwner().equals(DBFunc.SERVER)) {
|
||||
if (plot.isMerged()) {
|
||||
disable = true;
|
||||
for (UUID owner : plot.getOwners()) {
|
||||
|
@ -42,7 +42,6 @@ import org.bukkit.inventory.InventoryView;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
import org.bukkit.inventory.PlayerInventory;
|
||||
import org.bukkit.inventory.meta.ItemMeta;
|
||||
import org.checkerframework.checker.nullness.qual.Nullable;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
@ -51,15 +50,11 @@ import java.util.stream.IntStream;
|
||||
@Singleton
|
||||
public class BukkitInventoryUtil extends InventoryUtil {
|
||||
|
||||
private static @Nullable ItemStack getItem(PlotItemStack item) {
|
||||
private static ItemStack getItem(PlotItemStack item) {
|
||||
if (item == null) {
|
||||
return null;
|
||||
}
|
||||
Material material = BukkitAdapter.adapt(item.getType());
|
||||
if (material == null) {
|
||||
return null;
|
||||
}
|
||||
ItemStack stack = new ItemStack(material, item.getAmount());
|
||||
ItemStack stack = new ItemStack(BukkitAdapter.adapt(item.getType()), item.getAmount());
|
||||
ItemMeta meta = null;
|
||||
if (item.getName() != null) {
|
||||
meta = stack.getItemMeta();
|
||||
@ -109,19 +104,14 @@ public class BukkitInventoryUtil extends InventoryUtil {
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean setItemChecked(PlotInventory inv, int index, PlotItemStack item) {
|
||||
public void setItem(PlotInventory inv, int index, PlotItemStack item) {
|
||||
BukkitPlayer bp = (BukkitPlayer) inv.getPlayer();
|
||||
InventoryView opened = bp.player.getOpenInventory();
|
||||
ItemStack stack = getItem(item);
|
||||
if (stack == null) {
|
||||
return false;
|
||||
}
|
||||
if (!inv.isOpen()) {
|
||||
return true;
|
||||
return;
|
||||
}
|
||||
opened.setItem(index, stack);
|
||||
opened.setItem(index, getItem(item));
|
||||
bp.player.updateInventory();
|
||||
return true;
|
||||
}
|
||||
|
||||
@SuppressWarnings("deprecation") // Paper deprecation
|
||||
|
@ -58,9 +58,9 @@ tasks.processResources {
|
||||
tasks {
|
||||
withType<Javadoc> {
|
||||
val opt = options as StandardJavadocDocletOptions
|
||||
opt.links("https://docs.enginehub.org/javadoc/com.sk89q.worldedit/worldedit-core/" + libs.worldeditCore.get().versionConstraint.toString())
|
||||
opt.links("https://jd.adventure.kyori.net/api/" + libs.adventure.get().versionConstraint.toString())
|
||||
opt.links("https://google.github.io/guice/api-docs/" + libs.guice.get().versionConstraint.toString() + "/javadoc/")
|
||||
opt.links("https://docs.enginehub.org/javadoc/com.sk89q.worldedit/worldedit-core/7.2.8/")
|
||||
opt.links("https://jd.adventure.kyori.net/api/4.9.3/")
|
||||
opt.links("https://google.github.io/guice/api-docs/5.0.1/javadoc/")
|
||||
opt.links("https://checkerframework.org/api/")
|
||||
}
|
||||
}
|
||||
|
@ -28,7 +28,6 @@ package com.plotsquared.core.command;
|
||||
import com.plotsquared.core.configuration.caption.Caption;
|
||||
import com.plotsquared.core.configuration.caption.LocaleHolder;
|
||||
import com.plotsquared.core.configuration.caption.TranslatableCaption;
|
||||
import com.plotsquared.core.player.PlotPlayer;
|
||||
import org.checkerframework.checker.nullness.qual.NonNull;
|
||||
|
||||
/**
|
||||
@ -96,16 +95,4 @@ public enum CommandCategory implements Caption {
|
||||
public String getComponent(@NonNull LocaleHolder localeHolder) {
|
||||
return this.caption.getComponent(localeHolder);
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks if a player has access to this command category
|
||||
*
|
||||
* @param player The player to check against
|
||||
* @return {@code true} if at least one command of this category can be executed by the player, {@code false} otherwise
|
||||
* @since 6.5.0
|
||||
*/
|
||||
boolean canAccess(PlotPlayer<?> player) {
|
||||
return !MainCommand.getInstance().getCommands(this, player).isEmpty();
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -126,7 +126,7 @@ public class Done extends SubCommand {
|
||||
long flagValue = System.currentTimeMillis() / 1000;
|
||||
PlotFlag<?, ?> plotFlag = plot.getFlagContainer().getFlag(DoneFlag.class)
|
||||
.createFlagInstance(Long.toString(flagValue));
|
||||
PlotFlagAddEvent event = eventDispatcher.callFlagAdd(plotFlag, plot);
|
||||
PlotFlagAddEvent event = new PlotFlagAddEvent(plotFlag, plot);
|
||||
if (event.getEventResult() == Result.DENY) {
|
||||
player.sendMessage(TranslatableCaption.of("events.event_denied"));
|
||||
return;
|
||||
|
@ -25,7 +25,6 @@
|
||||
*/
|
||||
package com.plotsquared.core.command;
|
||||
|
||||
import com.google.inject.Inject;
|
||||
import com.plotsquared.core.PlotSquared;
|
||||
import com.plotsquared.core.configuration.Settings;
|
||||
import com.plotsquared.core.configuration.caption.CaptionUtility;
|
||||
@ -45,7 +44,6 @@ import com.plotsquared.core.plot.flag.InternalFlag;
|
||||
import com.plotsquared.core.plot.flag.PlotFlag;
|
||||
import com.plotsquared.core.plot.flag.types.IntegerFlag;
|
||||
import com.plotsquared.core.plot.flag.types.ListFlag;
|
||||
import com.plotsquared.core.util.EventDispatcher;
|
||||
import com.plotsquared.core.util.MathMan;
|
||||
import com.plotsquared.core.util.Permissions;
|
||||
import com.plotsquared.core.util.StringComparison;
|
||||
@ -81,12 +79,8 @@ import java.util.stream.Stream;
|
||||
@SuppressWarnings("unused")
|
||||
public final class FlagCommand extends Command {
|
||||
|
||||
private final EventDispatcher eventDispatcher;
|
||||
|
||||
@Inject
|
||||
public FlagCommand(final @NonNull EventDispatcher eventDispatcher) {
|
||||
public FlagCommand() {
|
||||
super(MainCommand.getInstance(), true);
|
||||
this.eventDispatcher = eventDispatcher;
|
||||
}
|
||||
|
||||
private static boolean sendMessage(PlotPlayer<?> player) {
|
||||
@ -120,7 +114,7 @@ public final class FlagCommand extends Command {
|
||||
TranslatableCaption.of("permission.no_permission"),
|
||||
Template.of(
|
||||
"node",
|
||||
perm + "." + numeric
|
||||
perm
|
||||
)
|
||||
);
|
||||
}
|
||||
@ -341,7 +335,7 @@ public final class FlagCommand extends Command {
|
||||
return;
|
||||
}
|
||||
Plot plot = player.getLocation().getPlotAbs();
|
||||
PlotFlagAddEvent event = eventDispatcher.callFlagAdd(plotFlag, plot);
|
||||
PlotFlagAddEvent event = new PlotFlagAddEvent(plotFlag, plot);
|
||||
if (event.getEventResult() == Result.DENY) {
|
||||
player.sendMessage(
|
||||
TranslatableCaption.of("events.event_denied"),
|
||||
@ -400,7 +394,7 @@ public final class FlagCommand extends Command {
|
||||
return;
|
||||
}
|
||||
Plot plot = player.getLocation().getPlotAbs();
|
||||
PlotFlagAddEvent event = eventDispatcher.callFlagAdd(plotFlag, plot);
|
||||
PlotFlagAddEvent event = new PlotFlagAddEvent(plotFlag, plot);
|
||||
if (event.getEventResult() == Result.DENY) {
|
||||
player.sendMessage(
|
||||
TranslatableCaption.of("events.event_denied"),
|
||||
@ -469,7 +463,7 @@ public final class FlagCommand extends Command {
|
||||
return;
|
||||
}
|
||||
final Plot plot = player.getLocation().getPlotAbs();
|
||||
PlotFlagRemoveEvent event = eventDispatcher.callFlagRemove(flag, plot);
|
||||
PlotFlagRemoveEvent event = new PlotFlagRemoveEvent(flag, plot);
|
||||
if (event.getEventResult() == Result.DENY) {
|
||||
player.sendMessage(
|
||||
TranslatableCaption.of("events.event_denied"),
|
||||
@ -522,7 +516,7 @@ public final class FlagCommand extends Command {
|
||||
}
|
||||
} else {
|
||||
PlotFlag<?, ?> plotFlag = parsedFlag.createFlagInstance(list);
|
||||
PlotFlagAddEvent addEvent = eventDispatcher.callFlagAdd(plotFlag, plot);
|
||||
PlotFlagAddEvent addEvent = new PlotFlagAddEvent(plotFlag, plot);
|
||||
if (addEvent.getEventResult() == Result.DENY) {
|
||||
player.sendMessage(
|
||||
TranslatableCaption.of("events.event_denied"),
|
||||
|
@ -37,11 +37,11 @@ import net.kyori.adventure.text.Component;
|
||||
import net.kyori.adventure.text.TextComponent;
|
||||
import net.kyori.adventure.text.minimessage.Template;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
import java.util.Locale;
|
||||
import java.util.concurrent.CompletableFuture;
|
||||
import java.util.stream.Collectors;
|
||||
import java.util.stream.Stream;
|
||||
|
||||
@CommandDeclaration(command = "help",
|
||||
aliases = "?",
|
||||
@ -119,9 +119,6 @@ public class Help extends Command {
|
||||
TextComponent.Builder builder = Component.text();
|
||||
builder.append(MINI_MESSAGE.parse(TranslatableCaption.of("help.help_header").getComponent(player)));
|
||||
for (CommandCategory c : CommandCategory.values()) {
|
||||
if (!c.canAccess(player)) {
|
||||
continue;
|
||||
}
|
||||
builder.append(Component.newline()).append(MINI_MESSAGE
|
||||
.parse(
|
||||
TranslatableCaption.of("help.help_info_item").getComponent(player),
|
||||
@ -155,26 +152,12 @@ public class Help extends Command {
|
||||
|
||||
@Override
|
||||
public Collection<Command> tab(PlotPlayer<?> player, String[] args, boolean space) {
|
||||
final String argument = args[0].toLowerCase(Locale.ENGLISH);
|
||||
List<Command> result = new ArrayList<>();
|
||||
|
||||
for (final CommandCategory category : CommandCategory.values()) {
|
||||
if (!category.canAccess(player)) {
|
||||
continue;
|
||||
}
|
||||
String name = category.name().toLowerCase();
|
||||
if (!name.startsWith(argument)) {
|
||||
continue;
|
||||
}
|
||||
result.add(new Command(null, false, name, "", RequiredType.NONE, null) {
|
||||
});
|
||||
}
|
||||
// add the category "all"
|
||||
if ("all".startsWith(argument)) {
|
||||
result.add(new Command(null, false, "all", "", RequiredType.NONE, null) {
|
||||
});
|
||||
}
|
||||
return result;
|
||||
return Stream.of("claiming", "teleport", "settings", "chat", "schematic", "appearance", "info", "debug",
|
||||
"administration", "all"
|
||||
)
|
||||
.filter(value -> value.startsWith(args[0].toLowerCase(Locale.ENGLISH)))
|
||||
.map(value -> new Command(null, false, value, "", RequiredType.NONE, null) {
|
||||
}).collect(Collectors.toList());
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -38,13 +38,10 @@ import com.plotsquared.core.plot.PlotInventory;
|
||||
import com.plotsquared.core.plot.PlotItemStack;
|
||||
import com.plotsquared.core.plot.flag.PlotFlag;
|
||||
import com.plotsquared.core.plot.flag.implementations.MusicFlag;
|
||||
import com.plotsquared.core.util.EventDispatcher;
|
||||
import com.plotsquared.core.util.InventoryUtil;
|
||||
import com.plotsquared.core.util.Permissions;
|
||||
import com.sk89q.worldedit.world.item.ItemType;
|
||||
import com.sk89q.worldedit.world.item.ItemTypes;
|
||||
import net.kyori.adventure.text.minimessage.Template;
|
||||
import org.checkerframework.checker.nullness.qual.NonNull;
|
||||
|
||||
import javax.annotation.Nullable;
|
||||
import java.util.Arrays;
|
||||
@ -66,12 +63,10 @@ public class Music extends SubCommand {
|
||||
);
|
||||
|
||||
private final InventoryUtil inventoryUtil;
|
||||
private final EventDispatcher eventDispatcher;
|
||||
|
||||
@Inject
|
||||
public Music(final @Nullable InventoryUtil inventoryUtil, final @NonNull EventDispatcher eventDispatcher) {
|
||||
public Music(final @Nullable InventoryUtil inventoryUtil) {
|
||||
this.inventoryUtil = inventoryUtil;
|
||||
this.eventDispatcher = eventDispatcher;
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -109,7 +104,7 @@ public class Music extends SubCommand {
|
||||
if (item.getType() == ItemTypes.BEDROCK) {
|
||||
PlotFlag<?, ?> plotFlag = plot.getFlagContainer().getFlag(MusicFlag.class)
|
||||
.createFlagInstance(item.getType());
|
||||
PlotFlagRemoveEvent event = eventDispatcher.callFlagRemove(plotFlag, plot);
|
||||
PlotFlagRemoveEvent event = new PlotFlagRemoveEvent(plotFlag, plot);
|
||||
if (event.getEventResult() == Result.DENY) {
|
||||
getPlayer().sendMessage(
|
||||
TranslatableCaption.of("events.event_denied"),
|
||||
@ -126,7 +121,7 @@ public class Music extends SubCommand {
|
||||
} else if (item.getName().toLowerCase(Locale.ENGLISH).contains("disc")) {
|
||||
PlotFlag<?, ?> plotFlag = plot.getFlagContainer().getFlag(MusicFlag.class)
|
||||
.createFlagInstance(item.getType());
|
||||
PlotFlagAddEvent event = eventDispatcher.callFlagAdd(plotFlag, plot);
|
||||
PlotFlagAddEvent event = new PlotFlagAddEvent(plotFlag, plot);
|
||||
if (event.getEventResult() == Result.DENY) {
|
||||
getPlayer().sendMessage(
|
||||
TranslatableCaption.of("events.event_denied"),
|
||||
@ -149,14 +144,8 @@ public class Music extends SubCommand {
|
||||
for (final String disc : DISCS) {
|
||||
final String name = String.format("<gold>%s</gold>", disc);
|
||||
final String[] lore = {TranslatableCaption.of("plotjukebox.click_to_play").getComponent(player)};
|
||||
ItemType type = ItemTypes.get(disc);
|
||||
if (type == null) {
|
||||
continue;
|
||||
}
|
||||
final PlotItemStack item = new PlotItemStack(type, 1, name, lore);
|
||||
if (inv.setItemChecked(index, item)) {
|
||||
index++;
|
||||
}
|
||||
final PlotItemStack item = new PlotItemStack(disc, 1, name, lore);
|
||||
inv.setItem(index++, item);
|
||||
}
|
||||
|
||||
// Always add the cancel button
|
||||
|
@ -51,7 +51,7 @@ public class PluginCmd extends SubCommand {
|
||||
player.sendMessage(StaticCaption.of(
|
||||
"<gray>>> </gray><gold><bold>Authors<reset><gray>: </gray><gold>Citymonstret </gold><gray>& </gray><gold>Empire92 </gold><gray>& </gray><gold>MattBDev </gold><gray>& </gray><gold>dordsor21 </gold><gray>& </gray><gold>NotMyFault </gold><gray>& </gray><gold>SirYwell</gold>"));
|
||||
player.sendMessage(StaticCaption.of(
|
||||
"<gray>>> </gray><gold><bold>Wiki<reset><gray>: </gray><gold><click:open_url:https://intellectualsites.github.io/plotsquared-documentation/>https://intellectualsites.github.io/plotsquared-documentation/</gold>"));
|
||||
"<gray>>> </gray><gold><bold>Wiki<reset><gray>: </gray><gold><click:open_url:https://github.com/IntellectualSites/PlotSquared-Documentation/wiki>https://github.com/IntellectualSites/PlotSquared-Documentation/wiki</gold>"));
|
||||
player.sendMessage(StaticCaption.of(
|
||||
"<gray>>> </gray><gold><bold>Discord<reset><gray>: </gray><gold><click:open_url:https://discord.gg/intellectualsites>https://discord.gg/intellectualsites</gold>"));
|
||||
player.sendMessage(
|
||||
|
@ -128,7 +128,7 @@ public class ComponentPresetManager {
|
||||
0,
|
||||
"",
|
||||
"<rainbow:2>Disco Floor</rainbow>",
|
||||
List.of("<gold>Spice up your plot floor</gold>"),
|
||||
Arrays.asList("<gold>Spice up your plot floor</gold>"),
|
||||
ItemTypes.YELLOW_WOOL
|
||||
));
|
||||
yamlConfiguration.set("presets", defaultPreset.stream().map(ComponentPreset::serialize).collect(Collectors.toList()));
|
||||
@ -181,10 +181,6 @@ public class ComponentPresetManager {
|
||||
}
|
||||
allowedPresets.add(componentPreset);
|
||||
}
|
||||
if (allowedPresets.isEmpty()) {
|
||||
player.sendMessage(TranslatableCaption.of("preset.empty"));
|
||||
return null;
|
||||
}
|
||||
final int size = (int) Math.ceil((double) allowedPresets.size() / 9.0D);
|
||||
final PlotInventory plotInventory = new PlotInventory(this.inventoryUtil, player, size,
|
||||
TranslatableCaption.of("preset.title").getComponent(player)) {
|
||||
@ -214,13 +210,7 @@ public class ComponentPresetManager {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (componentPreset.getCost() > 0.0D) {
|
||||
if (!econHandler.isEnabled(plot.getArea())) {
|
||||
getPlayer().sendMessage(
|
||||
TranslatableCaption.of("preset.economy_disabled"),
|
||||
Template.of("preset", componentPreset.getDisplayName()));
|
||||
return false;
|
||||
}
|
||||
if (componentPreset.getCost() > 0.0D && econHandler.isEnabled(plot.getArea())) {
|
||||
if (econHandler.getMoney(getPlayer()) < componentPreset.getCost()) {
|
||||
getPlayer().sendMessage(TranslatableCaption.of("preset.preset_cannot_afford"));
|
||||
return false;
|
||||
@ -256,16 +246,11 @@ public class ComponentPresetManager {
|
||||
for (int i = 0; i < allowedPresets.size(); i++) {
|
||||
final ComponentPreset preset = allowedPresets.get(i);
|
||||
final List<String> lore = new ArrayList<>();
|
||||
if (preset.getCost() > 0) {
|
||||
if (!this.econHandler.isEnabled(plot.getArea())) {
|
||||
lore.add(MINI_MESSAGE.serialize(MINI_MESSAGE.parse(
|
||||
TranslatableCaption.of("preset.preset_lore_economy_disabled").getComponent(player))));
|
||||
} else {
|
||||
lore.add(MINI_MESSAGE.serialize(MINI_MESSAGE.parse(
|
||||
TranslatableCaption.of("preset.preset_lore_cost").getComponent(player),
|
||||
Template.of("cost", String.format("%.2f", preset.getCost()))
|
||||
)));
|
||||
}
|
||||
if (preset.getCost() > 0 && this.econHandler.isEnabled(plot.getArea())) {
|
||||
lore.add(MINI_MESSAGE.serialize(MINI_MESSAGE.parse(
|
||||
TranslatableCaption.of("preset.preset_lore_cost").getComponent(player),
|
||||
Template.of("cost", String.format("%.2f", preset.getCost()))
|
||||
)));
|
||||
}
|
||||
lore.add(MINI_MESSAGE.serialize(MINI_MESSAGE.parse(
|
||||
TranslatableCaption.of("preset.preset_lore_component").getComponent(player),
|
||||
|
@ -201,7 +201,7 @@ public class Settings extends Config {
|
||||
public List<String> WORLDS = new ArrayList<>(Collections.singletonList("*"));
|
||||
|
||||
|
||||
@Comment("See: https://intellectualsites.github.io/plotsquared-documentation/optimization/plot-analysis for a description of each value.")
|
||||
@Comment("See: https://github.com/IntellectualSites/PlotSquared-Documentation/wiki/Plot-analysis for a description of each value.")
|
||||
public static final class CALIBRATION {
|
||||
|
||||
public int VARIETY = 0;
|
||||
@ -221,7 +221,7 @@ public class Settings extends Config {
|
||||
|
||||
|
||||
@Comment({"Chunk processor related settings",
|
||||
"See https://intellectualsites.github.io/plotsquared-documentation/optimization/chunk-processor for more information."})
|
||||
"See https://github.com/IntellectualSites/PlotSquared-Documentation/wiki/Chunk-processor for more information."})
|
||||
public static class Chunk_Processor {
|
||||
|
||||
@Comment("Auto trim will not save chunks which aren't claimed")
|
||||
@ -284,7 +284,7 @@ public class Settings extends Config {
|
||||
@Comment("Always show explosion Particles, even if explosion flag is set to false")
|
||||
public static boolean ALWAYS_SHOW_EXPLOSIONS = false;
|
||||
@Comment({"Blocks that may not be used in plot components",
|
||||
"Checkout the wiki article regarding plot components before modifying: https://intellectualsites.github.io/plotsquared-documentation/customization/plot-components"})
|
||||
"Checkout the wiki article regarding plot components before modifying: https://github.com/IntellectualSites/PlotSquared-Documentation/wiki/Plot-Components"})
|
||||
public static List<String>
|
||||
INVALID_BLOCKS = Arrays.asList(
|
||||
// Acacia Stuff
|
||||
@ -406,7 +406,7 @@ public class Settings extends Config {
|
||||
|
||||
|
||||
@Comment({"Schematic Settings",
|
||||
"See https://intellectualsites.github.io/plotsquared-documentation/schematics/schematic-on-claim for more information."})
|
||||
"See https://github.com/IntellectualSites/PlotSquared-Documentation/wiki/Schematic-on-Claim for more information."})
|
||||
public static final class Schematics {
|
||||
|
||||
@Comment(
|
||||
@ -535,7 +535,7 @@ public class Settings extends Config {
|
||||
|
||||
|
||||
@Comment({"Backup related settings",
|
||||
"See https://intellectualsites.github.io/plotsquared-documentation/plot-backups for more information."})
|
||||
"See https://github.com/IntellectualSites/PlotSquared-Documentation/wiki/Backups for more information."})
|
||||
public static final class Backup {
|
||||
|
||||
@Comment("Automatically backup plots when destructive commands are performed, e.g. /plot clear")
|
||||
@ -784,7 +784,7 @@ public class Settings extends Config {
|
||||
public static boolean
|
||||
PERSISTENT_ROAD_REGEN = true;
|
||||
@Comment({"Enable the `/plot component` preset GUI",
|
||||
"Read more about components here: https://intellectualsites.github.io/plotsquared-documentation/customization/plot-components"})
|
||||
"Read more about components here: https://github.com/IntellectualSites/PlotSquared-Documentation/wiki/Plot-Components"})
|
||||
public static boolean COMPONENT_PRESETS = true;
|
||||
@Comment("Enable per user locale")
|
||||
public static boolean PER_USER_LOCALE = false;
|
||||
|
@ -45,7 +45,6 @@ import com.plotsquared.core.queue.ChunkQueueCoordinator;
|
||||
import com.plotsquared.core.queue.GlobalBlockQueue;
|
||||
import com.plotsquared.core.queue.QueueCoordinator;
|
||||
import com.plotsquared.core.util.ChunkManager;
|
||||
import com.plotsquared.core.util.EventDispatcher;
|
||||
import com.plotsquared.core.util.MathMan;
|
||||
import com.plotsquared.core.util.RegionManager;
|
||||
import com.plotsquared.core.util.RegionUtil;
|
||||
@ -94,7 +93,6 @@ public class HybridUtils {
|
||||
private final GlobalBlockQueue blockQueue;
|
||||
private final WorldUtil worldUtil;
|
||||
private final SchematicHandler schematicHandler;
|
||||
private final EventDispatcher eventDispatcher;
|
||||
|
||||
@Inject
|
||||
public HybridUtils(
|
||||
@ -102,15 +100,13 @@ public class HybridUtils {
|
||||
final @NonNull ChunkManager chunkManager,
|
||||
final @NonNull GlobalBlockQueue blockQueue,
|
||||
final @NonNull WorldUtil worldUtil,
|
||||
final @NonNull SchematicHandler schematicHandler,
|
||||
final @NonNull EventDispatcher eventDispatcher
|
||||
final @NonNull SchematicHandler schematicHandler
|
||||
) {
|
||||
this.plotAreaManager = plotAreaManager;
|
||||
this.chunkManager = chunkManager;
|
||||
this.blockQueue = blockQueue;
|
||||
this.worldUtil = worldUtil;
|
||||
this.schematicHandler = schematicHandler;
|
||||
this.eventDispatcher = eventDispatcher;
|
||||
}
|
||||
|
||||
public void regeneratePlotWalls(final PlotArea area) {
|
||||
@ -352,7 +348,7 @@ public class HybridUtils {
|
||||
result.add(whenDone.value.variety_sd);
|
||||
PlotFlag<?, ?> plotFlag = GlobalFlagContainer.getInstance().getFlag(AnalysisFlag.class).createFlagInstance(
|
||||
result);
|
||||
PlotFlagAddEvent event = eventDispatcher.callFlagAdd(plotFlag, origin);
|
||||
PlotFlagAddEvent event = new PlotFlagAddEvent(plotFlag, origin);
|
||||
if (event.getEventResult() == Result.DENY) {
|
||||
return;
|
||||
}
|
||||
|
@ -174,9 +174,21 @@ public class PlotListener {
|
||||
String greeting = plot.getFlag(GreetingFlag.class);
|
||||
if (!greeting.isEmpty()) {
|
||||
if (!Settings.Chat.NOTIFICATION_AS_ACTIONBAR) {
|
||||
plot.format(StaticCaption.of(greeting), player, false).thenAcceptAsync(player::sendMessage);
|
||||
player.sendMessage(
|
||||
TranslatableCaption.of("flags.greeting_flag_format"),
|
||||
Template.of("world", plot.getWorldName()),
|
||||
Template.of("plot_id", plot.getId().toString()),
|
||||
Template.of("alias", plot.getAlias()),
|
||||
Template.of("greeting", greeting)
|
||||
);
|
||||
} else {
|
||||
plot.format(StaticCaption.of(greeting), player, false).thenAcceptAsync(player::sendActionBar);
|
||||
player.sendActionBar(
|
||||
TranslatableCaption.of("flags.greeting_flag_format"),
|
||||
Template.of("world", plot.getWorldName()),
|
||||
Template.of("plot_id", plot.getId().toString()),
|
||||
Template.of("alias", plot.getAlias()),
|
||||
Template.of("greeting", greeting)
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
@ -401,9 +413,21 @@ public class PlotListener {
|
||||
String farewell = plot.getFlag(FarewellFlag.class);
|
||||
if (!farewell.isEmpty()) {
|
||||
if (!Settings.Chat.NOTIFICATION_AS_ACTIONBAR) {
|
||||
plot.format(StaticCaption.of(farewell), player, false).thenAcceptAsync(player::sendMessage);
|
||||
player.sendMessage(
|
||||
TranslatableCaption.of("flags.farewell_flag_format"),
|
||||
Template.of("world", plot.getWorldName()),
|
||||
Template.of("plot_id", plot.getId().toString()),
|
||||
Template.of("alias", plot.getAlias()),
|
||||
Template.of("farewell", farewell)
|
||||
);
|
||||
} else {
|
||||
plot.format(StaticCaption.of(farewell), player, false).thenAcceptAsync(player::sendActionBar);
|
||||
player.sendActionBar(
|
||||
TranslatableCaption.of("flags.farewell_flag_format"),
|
||||
Template.of("world", plot.getWorldName()),
|
||||
Template.of("plot_id", plot.getId().toString()),
|
||||
Template.of("alias", plot.getAlias()),
|
||||
Template.of("farewell", farewell)
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -103,32 +103,9 @@ public class PlotInventory {
|
||||
this.open = false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Put an item into this inventory
|
||||
*
|
||||
* @param index the index (= slot) where to place the item
|
||||
* @param item the item to place
|
||||
* @see #setItemChecked(int, PlotItemStack)
|
||||
*/
|
||||
public void setItem(int index, PlotItemStack item) {
|
||||
setItemChecked(index, item);
|
||||
}
|
||||
|
||||
/**
|
||||
* Put an item into this inventory, while also checking the existence of the material in the current version
|
||||
*
|
||||
* @param index the index (= slot) where to place the item
|
||||
* @param item the item to place
|
||||
* @return {@code true} if the item could be placed, otherwise {@code false}
|
||||
* @see InventoryUtil#setItemChecked(PlotInventory, int, PlotItemStack)
|
||||
* @since 6.5.0
|
||||
*/
|
||||
public boolean setItemChecked(int index, PlotItemStack item) {
|
||||
if (!this.inventoryUtil.setItemChecked(this, index, item)) {
|
||||
return false;
|
||||
}
|
||||
this.items[index] = item;
|
||||
return true;
|
||||
this.inventoryUtil.setItem(this, index, item);
|
||||
}
|
||||
|
||||
public PlotItemStack getItem(int index) {
|
||||
|
@ -46,21 +46,7 @@ public class PlotItemStack {
|
||||
final String id, final int amount, final String name,
|
||||
final String... lore
|
||||
) {
|
||||
this(ItemTypes.get(id), amount, name, lore);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param type The item type
|
||||
* @param amount Amount of items in the stack
|
||||
* @param name The display name of the item stack
|
||||
* @param lore The item stack lore
|
||||
* @since 6.5.0
|
||||
*/
|
||||
public PlotItemStack(
|
||||
final ItemType type, final int amount, final String name,
|
||||
final String... lore
|
||||
) {
|
||||
this.type = type;
|
||||
this.type = ItemTypes.get(id);
|
||||
this.amount = amount;
|
||||
this.name = name;
|
||||
this.lore = lore;
|
||||
|
@ -262,9 +262,7 @@ public final class PlotModificationManager {
|
||||
if (queue.size() > 0) {
|
||||
queue.setCompleteTask(run);
|
||||
queue.enqueue();
|
||||
return;
|
||||
}
|
||||
run.run();
|
||||
return;
|
||||
}
|
||||
Plot current = queue.poll();
|
||||
|
@ -136,18 +136,18 @@ public class ExpireManager {
|
||||
}
|
||||
|
||||
public void confirmExpiry(final PlotPlayer<?> pp) {
|
||||
TaskManager.runTask(() -> {
|
||||
try (final MetaDataAccess<Boolean> metaDataAccess = pp.accessTemporaryMetaData(
|
||||
PlayerMetaDataKeys.TEMPORARY_IGNORE_EXPIRE_TASK)) {
|
||||
if (metaDataAccess.isPresent()) {
|
||||
return;
|
||||
}
|
||||
if (plotsToDelete != null && !plotsToDelete.isEmpty() && pp.hasPermission("plots.admin.command.autoclear")) {
|
||||
final int num = plotsToDelete.size();
|
||||
while (!plotsToDelete.isEmpty()) {
|
||||
Iterator<Plot> iter = plotsToDelete.iterator();
|
||||
final Plot current = iter.next();
|
||||
if (!isExpired(new ArrayDeque<>(tasks), current).isEmpty()) {
|
||||
try (final MetaDataAccess<Boolean> metaDataAccess = pp.accessTemporaryMetaData(
|
||||
PlayerMetaDataKeys.TEMPORARY_IGNORE_EXPIRE_TASK)) {
|
||||
if (metaDataAccess.isPresent()) {
|
||||
return;
|
||||
}
|
||||
if (plotsToDelete != null && !plotsToDelete.isEmpty() && pp.hasPermission("plots.admin.command.autoclear")) {
|
||||
final int num = plotsToDelete.size();
|
||||
while (!plotsToDelete.isEmpty()) {
|
||||
Iterator<Plot> iter = plotsToDelete.iterator();
|
||||
final Plot current = iter.next();
|
||||
if (!isExpired(new ArrayDeque<>(tasks), current).isEmpty()) {
|
||||
TaskManager.runTask(() -> {
|
||||
metaDataAccess.set(true);
|
||||
current.getCenter(pp::teleport);
|
||||
metaDataAccess.remove();
|
||||
@ -171,15 +171,15 @@ public class ExpireManager {
|
||||
cmd_keep,
|
||||
cmd_no_show_expir
|
||||
);
|
||||
return;
|
||||
} else {
|
||||
iter.remove();
|
||||
}
|
||||
});
|
||||
return;
|
||||
} else {
|
||||
iter.remove();
|
||||
}
|
||||
plotsToDelete.clear();
|
||||
}
|
||||
plotsToDelete.clear();
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -307,7 +307,6 @@ public class ExpireManager {
|
||||
this.running = 2;
|
||||
TaskManager.runTaskAsync(new Runnable() {
|
||||
private ConcurrentLinkedDeque<Plot> plots = null;
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
final Runnable task = this;
|
||||
@ -360,7 +359,7 @@ public class ExpireManager {
|
||||
.getFlag(AnalysisFlag.class)
|
||||
.createFlagInstance(changed.asList());
|
||||
PlotFlagAddEvent event =
|
||||
eventDispatcher.callFlagAdd(plotFlag, plot);
|
||||
new PlotFlagAddEvent(plotFlag, newPlot);
|
||||
if (event.getEventResult() == Result.DENY) {
|
||||
return;
|
||||
}
|
||||
@ -452,7 +451,7 @@ public class ExpireManager {
|
||||
plot.getPlotModificationManager().deletePlot(null, whenDone);
|
||||
}
|
||||
|
||||
@Deprecated(forRemoval = true, since = "6.4.0")
|
||||
@Deprecated(forRemoval = true, since = "TODO")
|
||||
public long getAge(UUID uuid) {
|
||||
return getAge(uuid, false);
|
||||
}
|
||||
@ -463,7 +462,7 @@ public class ExpireManager {
|
||||
* @param uuid the uuid of the owner to check against
|
||||
* @param shouldDeleteUnknownOwner {@code true} if an unknown player should be counted as never online
|
||||
* @return the millis since the player was last online, or {@link Long#MAX_VALUE} if player was never online
|
||||
* @since 6.4.0
|
||||
* @since TODO
|
||||
*/
|
||||
public long getAge(UUID uuid, final boolean shouldDeleteUnknownOwner) {
|
||||
if (PlotSquared.platform().playerManager().getPlayerIfExists(uuid) != null) {
|
||||
|
@ -160,7 +160,7 @@ public class ExpiryTask {
|
||||
/**
|
||||
* Returns {@code true} if this task respects unknown owners
|
||||
* @return {@code true} if unknown owners should be counted as never online
|
||||
* @since 6.4.0
|
||||
* @since TODO
|
||||
*/
|
||||
public boolean shouldDeleteForUnknownOwner() {
|
||||
return settings.DELETE_IF_OWNER_IS_UNKNOWN;
|
||||
|
@ -134,28 +134,17 @@ public final class GlobalFlagContainer extends FlagContainer {
|
||||
stringClassMap = new HashMap<>();
|
||||
|
||||
// Register all default flags here
|
||||
// Block type list flags
|
||||
this.addFlag(BreakFlag.BREAK_NONE);
|
||||
this.addFlag(UseFlag.USE_NONE);
|
||||
this.addFlag(PlaceFlag.PLACE_NONE);
|
||||
|
||||
// Boolean flags
|
||||
this.addFlag(ExplosionFlag.EXPLOSION_FALSE);
|
||||
this.addFlag(UntrustedVisitFlag.UNTRUSTED_VISIT_FLAG_TRUE);
|
||||
this.addFlag(DenyExitFlag.DENY_EXIT_FLAG_FALSE);
|
||||
this.addFlag(AnimalAttackFlag.ANIMAL_ATTACK_FALSE);
|
||||
this.addFlag(AnimalInteractFlag.ANIMAL_INTERACT_FALSE);
|
||||
this.addFlag(BlockBurnFlag.BLOCK_BURN_FALSE);
|
||||
this.addFlag(BlockIgnitionFlag.BLOCK_IGNITION_TRUE);
|
||||
this.addFlag(ChatFlag.CHAT_FLAG_TRUE);
|
||||
this.addFlag(CopperOxideFlag.COPPER_OXIDE_FALSE);
|
||||
this.addFlag(CoralDryFlag.CORAL_DRY_FALSE);
|
||||
this.addFlag(CropGrowFlag.CROP_GROW_TRUE);
|
||||
this.addFlag(DenyExitFlag.DENY_EXIT_FLAG_FALSE);
|
||||
this.addFlag(DenyPortalsFlag.DENY_PORTALS_FALSE);
|
||||
this.addFlag(DenyPortalTravelFlag.DENY_PORTAL_TRAVEL_FALSE);
|
||||
this.addFlag(DeviceInteractFlag.DEVICE_INTERACT_FALSE);
|
||||
this.addFlag(DisablePhysicsFlag.DISABLE_PHYSICS_FALSE);
|
||||
this.addFlag(DropProtectionFlag.DROP_PROTECTION_FALSE);
|
||||
this.addFlag(EntityChangeBlockFlag.ENTITY_CHANGE_BLOCK_FALSE);
|
||||
this.addFlag(ExplosionFlag.EXPLOSION_FALSE);
|
||||
this.addFlag(ForcefieldFlag.FORCEFIELD_FALSE);
|
||||
this.addFlag(GrassGrowFlag.GRASS_GROW_TRUE);
|
||||
this.addFlag(HangingBreakFlag.HANGING_BREAK_FALSE);
|
||||
@ -165,53 +154,52 @@ public final class GlobalFlagContainer extends FlagContainer {
|
||||
this.addFlag(HostileInteractFlag.HOSTILE_INTERACT_FALSE);
|
||||
this.addFlag(IceFormFlag.ICE_FORM_FALSE);
|
||||
this.addFlag(IceMeltFlag.ICE_MELT_FALSE);
|
||||
this.addFlag(InstabreakFlag.INSTABREAK_FALSE);
|
||||
this.addFlag(InvincibleFlag.INVINCIBLE_FALSE);
|
||||
this.addFlag(ItemDropFlag.ITEM_DROP_TRUE);
|
||||
this.addFlag(KeepInventoryFlag.KEEP_INVENTORY_FALSE);
|
||||
this.addFlag(KelpGrowFlag.KELP_GROW_TRUE);
|
||||
this.addFlag(LeafDecayFlag.LEAF_DECAY_TRUE);
|
||||
this.addFlag(LecternReadBookFlag.LECTERN_READ_BOOK_FALSE);
|
||||
this.addFlag(RedstoneFlag.REDSTONE_TRUE);
|
||||
this.addFlag(ServerPlotFlag.SERVER_PLOT_FALSE);
|
||||
this.addFlag(MiscBreakFlag.MISC_BREAK_FALSE);
|
||||
this.addFlag(MobBreakFlag.MOB_BREAK_FALSE);
|
||||
this.addFlag(MobPlaceFlag.MOB_PLACE_FALSE);
|
||||
this.addFlag(MiscInteractFlag.MISC_INTERACT_FALSE);
|
||||
this.addFlag(MiscPlaceFlag.MISC_PLACE_FALSE);
|
||||
this.addFlag(MycelGrowFlag.MYCEL_GROW_TRUE);
|
||||
this.addFlag(NotifyEnterFlag.NOTIFY_ENTER_FALSE);
|
||||
this.addFlag(NotifyLeaveFlag.NOTIFY_LEAVE_FALSE);
|
||||
this.addFlag(NoWorldeditFlag.NO_WORLDEDIT_FALSE);
|
||||
this.addFlag(PlayerInteractFlag.PLAYER_INTERACT_FALSE);
|
||||
this.addFlag(PreventCreativeCopyFlag.PREVENT_CREATIVE_COPY_FALSE);
|
||||
this.addFlag(PveFlag.PVE_FALSE);
|
||||
this.addFlag(PvpFlag.PVP_FALSE);
|
||||
this.addFlag(RedstoneFlag.REDSTONE_TRUE);
|
||||
this.addFlag(ServerPlotFlag.SERVER_PLOT_FALSE);
|
||||
this.addFlag(SnowFormFlag.SNOW_FORM_FALSE);
|
||||
this.addFlag(SnowMeltFlag.SNOW_MELT_TRUE);
|
||||
this.addFlag(SoilDryFlag.SOIL_DRY_FALSE);
|
||||
this.addFlag(CoralDryFlag.CORAL_DRY_FALSE);
|
||||
this.addFlag(TamedAttackFlag.TAMED_ATTACK_FALSE);
|
||||
this.addFlag(TamedInteractFlag.TAMED_INTERACT_FALSE);
|
||||
this.addFlag(UntrustedVisitFlag.UNTRUSTED_VISIT_FLAG_TRUE);
|
||||
this.addFlag(VehicleBreakFlag.VEHICLE_BREAK_FALSE);
|
||||
this.addFlag(VehiclePlaceFlag.VEHICLE_PLACE_FALSE);
|
||||
this.addFlag(VehicleUseFlag.VEHICLE_USE_FALSE);
|
||||
this.addFlag(VillagerInteractFlag.VILLAGER_INTERACT_FALSE);
|
||||
this.addFlag(VineGrowFlag.VINE_GROW_TRUE);
|
||||
|
||||
// Double flags
|
||||
this.addFlag(PriceFlag.PRICE_NOT_BUYABLE);
|
||||
this.addFlag(ItemDropFlag.ITEM_DROP_TRUE);
|
||||
this.addFlag(InstabreakFlag.INSTABREAK_FALSE);
|
||||
this.addFlag(InvincibleFlag.INVINCIBLE_FALSE);
|
||||
this.addFlag(ChatFlag.CHAT_FLAG_TRUE);
|
||||
this.addFlag(MiscPlaceFlag.MISC_PLACE_FALSE);
|
||||
this.addFlag(MiscInteractFlag.MISC_INTERACT_FALSE);
|
||||
this.addFlag(KeepInventoryFlag.KEEP_INVENTORY_FALSE);
|
||||
this.addFlag(PreventCreativeCopyFlag.PREVENT_CREATIVE_COPY_FALSE);
|
||||
this.addFlag(LeafDecayFlag.LEAF_DECAY_TRUE);
|
||||
this.addFlag(CropGrowFlag.CROP_GROW_TRUE);
|
||||
this.addFlag(DenyPortalTravelFlag.DENY_PORTAL_TRAVEL_FALSE);
|
||||
this.addFlag(DenyPortalsFlag.DENY_PORTALS_FALSE);
|
||||
this.addFlag(LecternReadBookFlag.LECTERN_READ_BOOK_FALSE);
|
||||
this.addFlag(EntityChangeBlockFlag.ENTITY_CHANGE_BLOCK_FALSE);
|
||||
this.addFlag(CopperOxideFlag.COPPER_OXIDE_FALSE);
|
||||
|
||||
// Enum Flags
|
||||
this.addFlag(WeatherFlag.PLOT_WEATHER_FLAG_OFF);
|
||||
this.addFlag(DenyTeleportFlag.DENY_TELEPORT_FLAG_NONE);
|
||||
this.addFlag(TitlesFlag.TITLES_NONE);
|
||||
this.addFlag(FlyFlag.FLIGHT_FLAG_DEFAULT);
|
||||
this.addFlag(LiquidFlowFlag.LIQUID_FLOW_DEFAULT);
|
||||
this.addFlag(TitlesFlag.TITLES_NONE);
|
||||
this.addFlag(WeatherFlag.PLOT_WEATHER_FLAG_OFF);
|
||||
|
||||
// Internal flags
|
||||
this.addFlag(new AnalysisFlag(Collections.emptyList()));
|
||||
this.addFlag(new DoneFlag(""));
|
||||
|
||||
// Integer flags
|
||||
this.addFlag(AnimalCapFlag.ANIMAL_CAP_UNLIMITED);
|
||||
@ -222,10 +210,22 @@ public final class GlobalFlagContainer extends FlagContainer {
|
||||
this.addFlag(TimeFlag.TIME_DISABLED);
|
||||
this.addFlag(VehicleCapFlag.VEHICLE_CAP_UNLIMITED);
|
||||
|
||||
// Timed flags
|
||||
this.addFlag(FeedFlag.FEED_NOTHING);
|
||||
this.addFlag(HealFlag.HEAL_NOTHING);
|
||||
|
||||
// Double flags
|
||||
this.addFlag(PriceFlag.PRICE_NOT_BUYABLE);
|
||||
|
||||
// Block type list flags
|
||||
this.addFlag(BreakFlag.BREAK_NONE);
|
||||
this.addFlag(PlaceFlag.PLACE_NONE);
|
||||
this.addFlag(UseFlag.USE_NONE);
|
||||
|
||||
// Misc
|
||||
this.addFlag(BlockedCmdsFlag.BLOCKED_CMDS_FLAG_NONE);
|
||||
this.addFlag(GamemodeFlag.GAMEMODE_FLAG_DEFAULT);
|
||||
this.addFlag(GuestGamemodeFlag.GUEST_GAMEMODE_FLAG_DEFAULT);
|
||||
this.addFlag(BlockedCmdsFlag.BLOCKED_CMDS_FLAG_NONE);
|
||||
this.addFlag(KeepFlag.KEEP_FLAG_FALSE);
|
||||
this.addFlag(MusicFlag.MUSIC_FLAG_NONE);
|
||||
|
||||
@ -235,9 +235,9 @@ public final class GlobalFlagContainer extends FlagContainer {
|
||||
this.addFlag(FarewellFlag.FAREWELL_FLAG_EMPTY);
|
||||
this.addFlag(PlotTitleFlag.TITLE_FLAG_DEFAULT);
|
||||
|
||||
// Timed flags
|
||||
this.addFlag(FeedFlag.FEED_NOTHING);
|
||||
this.addFlag(HealFlag.HEAL_NOTHING);
|
||||
// Internal flags
|
||||
this.addFlag(new AnalysisFlag(Collections.emptyList()));
|
||||
this.addFlag(new DoneFlag(""));
|
||||
}
|
||||
|
||||
public static void setup() {
|
||||
|
@ -38,33 +38,11 @@ public abstract class InventoryUtil {
|
||||
|
||||
public abstract void close(final PlotInventory inv);
|
||||
|
||||
/**
|
||||
* Attempts to set an item into a {@link PlotInventory} while also checking the existence of the material
|
||||
*
|
||||
* @param plotInventory The inventory where the item should be placed
|
||||
* @param index The index where to place the item
|
||||
* @param item The item to place into the inventory
|
||||
* @return {@code true} if the item could be placed, {@code false} otherwise (e.g. item not available in current version)
|
||||
* @since 6.5.0
|
||||
*/
|
||||
public abstract boolean setItemChecked(
|
||||
public abstract void setItem(
|
||||
final PlotInventory plotInventory, final int index,
|
||||
final PlotItemStack item
|
||||
);
|
||||
|
||||
/**
|
||||
* Attempts to set an item into a {@link PlotInventory}
|
||||
*
|
||||
* @param plotInventory The inventory where the item should be placed
|
||||
* @param index The index where to place the item
|
||||
* @param item The item to place into the inventory
|
||||
* @see #setItemChecked(PlotInventory, int, PlotItemStack)
|
||||
*/
|
||||
public void setItem(final PlotInventory plotInventory, final int index,
|
||||
final PlotItemStack item) {
|
||||
setItemChecked(plotInventory, index, item);
|
||||
}
|
||||
|
||||
public abstract PlotItemStack[] getItems(final PlotPlayer<?> player);
|
||||
|
||||
public abstract boolean isOpen(final PlotInventory plotInventory);
|
||||
|
@ -166,7 +166,7 @@ public abstract class PlayerManager<P extends PlotPlayer<? extends T>, T> {
|
||||
* @return The player's name, None, Everyone or Unknown
|
||||
* @deprecated Use {@link #resolveName(UUID)}
|
||||
*/
|
||||
@Deprecated(forRemoval = true, since = "6.4.0")
|
||||
@Deprecated(forRemoval = true, since = "TODO")
|
||||
public static @NonNull String getName(final @Nullable UUID owner) {
|
||||
return getName(owner, true);
|
||||
}
|
||||
@ -179,7 +179,7 @@ public abstract class PlayerManager<P extends PlotPlayer<? extends T>, T> {
|
||||
* @return The player's name, None, Everyone or Unknown
|
||||
* @deprecated Use {@link #resolveName(UUID, boolean)}
|
||||
*/
|
||||
@Deprecated(forRemoval = true, since = "6.4.0")
|
||||
@Deprecated(forRemoval = true, since = "TODO")
|
||||
public static @NonNull String getName(final @Nullable UUID owner, final boolean blocking) {
|
||||
if (owner == null) {
|
||||
TranslatableCaption.of("info.none");
|
||||
@ -217,7 +217,7 @@ public abstract class PlayerManager<P extends PlotPlayer<? extends T>, T> {
|
||||
* @param owner The UUID of the owner
|
||||
* @return A caption containing either the name, {@code None}, {@code Everyone} or {@code Unknown}
|
||||
* @see #resolveName(UUID, boolean)
|
||||
* @since 6.4.0
|
||||
* @since TODO
|
||||
*/
|
||||
public static @NonNull Caption resolveName(final @Nullable UUID owner) {
|
||||
return resolveName(owner, true);
|
||||
@ -229,7 +229,7 @@ public abstract class PlayerManager<P extends PlotPlayer<? extends T>, T> {
|
||||
* @param owner The UUID of the owner
|
||||
* @param blocking If the operation should block the current thread for {@link Settings.UUID#BLOCKING_TIMEOUT} milliseconds
|
||||
* @return A caption containing either the name, {@code None}, {@code Everyone} or {@code Unknown}
|
||||
* @since 6.4.0
|
||||
* @since TODO
|
||||
*/
|
||||
public static @NonNull Caption resolveName(final @Nullable UUID owner, final boolean blocking) {
|
||||
if (owner == null) {
|
||||
|
@ -328,7 +328,7 @@ public class StringMan {
|
||||
/**
|
||||
* @param message an input string
|
||||
* @return a list of strings
|
||||
* @since 6.4.0
|
||||
* @since TODO
|
||||
*
|
||||
* <table border="1">
|
||||
* <caption>Converts multiple quoted and single strings into a list of strings</caption>
|
||||
|
@ -52,7 +52,8 @@ public class HelpMenu {
|
||||
}
|
||||
|
||||
public HelpMenu getCommands() {
|
||||
this.commands = MainCommand.getInstance().getCommands(this.commandCategory, this.commandCaller);
|
||||
this.commands =
|
||||
MainCommand.getInstance().getCommands(this.commandCategory, this.commandCaller);
|
||||
return this;
|
||||
}
|
||||
|
||||
|
@ -460,12 +460,9 @@
|
||||
"backups.backup_automatic_failure": "<prefix><red>The automatic backup process failed. Your pending action has been canceled. Reason: </red><gray><reason></gray>",
|
||||
"preset.preset_cannot_afford": "<prefix><red>You cannot afford that preset.</red>",
|
||||
"preset.preset_invalid": "<prefix><red>Could not generate a pattern from that preset.</red>",
|
||||
"preset.preset_lore_cost": "<gray>Cost: </gray><gold><cost></gold>",
|
||||
"preset.preset_lore_economy_disabled": "<gray>Cost: </gray><red>Economy is disabled</red>",
|
||||
"preset.preset_lore_cost": "<prefix><gray>Cost: </gray><gold><cost></gold>",
|
||||
"preset.preset_lore_component": "<gray>Component: </gray><gold><component></gold>",
|
||||
"preset.title": "Plot Components",
|
||||
"preset.empty": "<prefix><red>No plot component presets available.</red>",
|
||||
"preset.economy_disabled": "<prefix><red>The component preset '<preset>' has a price set but economy is disabled.</red>",
|
||||
"generic.generic_other": "<gray>other</gray>",
|
||||
"generic.generic_merged": "<gray>merged</gray>",
|
||||
"generic.generic_unowned": "<gray>unowned</gray>",
|
||||
@ -529,15 +526,15 @@
|
||||
"flags.flag_category_mixed": "<gray>Mixed Value Flags</gray>",
|
||||
"flags.flag_description_entity_cap": "<gray>Set to an integer value to limit the amount of entities on the plot.</gray>",
|
||||
"flags.flag_description_explosion": "<gray>Set to `true` to enable explosions in the plot, and `false` to disable them.</gray>",
|
||||
"flags.flag_description_music": "<gray>Set to a music disk ID (item name) to play the music disc inside the plot.</gray>",
|
||||
"flags.flag_description_music": "<gray>Set to a music disk ID (item name) to play the music disc inside of the plot.</gray>",
|
||||
"flags.flag_description_flight": "<gray>Set to `true` to enable flight within the plot when in survival or adventure mode</gray>\n<gray>set to `default` to use the gamemode default, and `false` to disable flight entirely.</gray>",
|
||||
"flags.flag_description_untrusted": "<gray>Set to `false` to disallow untrusted players from visiting the plot.</gray>",
|
||||
"flags.flag_description_deny_exit": "<gray>Set to `true` to disallow players from exiting the plot.</gray>",
|
||||
"flags.flag_description_chat": "<gray>Set to `false` to prevent plot chat on the plot.</gray>",
|
||||
"flags.flag_description_description": "<gray>Plot description. Supports MiniMessage/Adventure.</gray>",
|
||||
"flags.flag_description_greeting": "<gray>Message sent to players on plot entry.</gray>",
|
||||
"flags.flag_description_farewell": "<gray>Message sent to players when leaving the plot.</gray>",
|
||||
"flags.flag_description_weather": "<gray>Specifies the weather conditions inside the plot.</gray>",
|
||||
"flags.flag_description_greeting": "<gray>Message sent to players on plot entry. Supports '&' color codes.</gray>",
|
||||
"flags.flag_description_farewell": "<gray>Message sent to players when leaving the plot. Supports '&' color codes.</gray>",
|
||||
"flags.flag_description_weather": "<gray>Specifies the weather conditions inside of the plot.</gray>",
|
||||
"flags.flag_description_animal_attack": "<gray>Set to `true` to allow animals to be attacked in the plot.</gray>",
|
||||
"flags.flag_description_animal_cap": "<gray>Set to an integer value to limit the amount of animals on the plot.</gray>",
|
||||
"flags.flag_description_animal_interact": "<gray>Set to `true` to allow animals to be interacted with in the plot.</gray>",
|
||||
@ -560,8 +557,8 @@
|
||||
"flags.flag_description_ice_form": "<gray>Set to `true` to allow ice to form in the plot.</gray>",
|
||||
"flags.flag_description_ice_melt": "<gray>Set to `false` to disable ice melting in the plot.</gray>",
|
||||
"flags.flag_description_instabreak": "<gray>Set to `true` to allow blocks to be instantaneously broken in survival mode.</gray>",
|
||||
"flags.flag_description_invincible": "<gray>Set to `true` to prevent players from taking damage inside the plot.</gray>",
|
||||
"flags.flag_description_item_drop": "<gray>Set to `false` to prevent items from being dropped inside the plot.</gray>",
|
||||
"flags.flag_description_invincible": "<gray>Set to `true` to prevent players from taking damage inside of the plot.</gray>",
|
||||
"flags.flag_description_item_drop": "<gray>Set to `false` to prevent items from being dropped inside of the plot.</gray>",
|
||||
"flags.flag_description_kelp_grow": "<gray>Set to `false` to prevent kelp from growing in the plot.</gray>",
|
||||
"flags.flag_description_liquid_flow": "<gray>Set to `false` to disable liquids from flowing within the plot.</gray>",
|
||||
"flags.flag_description_misc_break": "<gray>Set to `true` to allow guests to break miscellaneous items.</gray>",
|
||||
@ -606,10 +603,10 @@
|
||||
"flags.flag_description_guest_gamemode": "<gray>Determines the guest gamemode in the plot.</gray>",
|
||||
"flags.flag_description_blocked_cmds": "<gray>A list of commands that are blocked in the plot.</gray>",
|
||||
"flags.flag_description_keep": "<gray>Prevents the plot from expiring. Can be set to: true, false, the number of milliseconds to keep the plot for or a timestamp (3w 2d 5h).</gray>",
|
||||
"flags.flag_description_keep_inventory": "<gray>Prevents players from dropping their items when they die inside the plot.</gray>",
|
||||
"flags.flag_description_keep_inventory": "<gray>Prevents players from dropping their items when they die inside of the plot.</gray>",
|
||||
"flags.flag_description_deny_portal_travel": "<gray>Prevents players from travelling across dimensions by using portals.</gray>",
|
||||
"flags.flag_description_deny_portals": "<gray>Prevents players from creating portals of any kind.</gray>",
|
||||
"flags.flag_description_lectern_read_book": "<gray>Prevent players taking books from lecterns.</gray>",
|
||||
"flags.flag_description_lectern_read_book": "<gray>Prevents players taking books from lecterns.</gray>",
|
||||
"flags.flag_description_prevent_creative_copy": "<gray>Prevents people from copying item NBT data in the plot unless they're added as members.</gray>",
|
||||
"flags.flag_description_leaf_decay": "<gray>Set to `false` to prevent leaves from decaying.",
|
||||
"flags.flag_error_boolean": "Flag value must be a boolean (true | false).",
|
||||
@ -623,6 +620,8 @@
|
||||
"flags.flag_error_title": "Flag value must be in the format </red><grey>\"A title\" \"The subtitle\"</grey><red>.",
|
||||
"flags.area_flags": "<prefix><gray>Area flags: </gray><dark_aqua><flags></dark_aqua>",
|
||||
"flags.road_flags": "<prefix><gray>Road flags: </gray><dark_aqua><flags></dark_aqua>",
|
||||
"flags.greeting_flag_format": "<prefix><gold>[<world>;<plot_id>]:</gold> <greeting>",
|
||||
"flags.farewell_flag_format": "<prefix><gold>[<world>;<plot_id>]:</gold> <farewell>",
|
||||
"commands.description.add": "<gray>Allow a user to build in a plot while the plot owner is online.</gray>",
|
||||
"commands.description.alias": "<gray>Set the plot alias.</gray>",
|
||||
"commands.description.area": "<gray>Create a new plot area.</gray>",
|
||||
|
@ -27,15 +27,15 @@ is to provide a lag-free and smooth experience.
|
||||
|
||||
* [Download](https://www.spigotmc.org/resources/77506/)
|
||||
* [Discord](https://discord.gg/intellectualsites)
|
||||
* [Wiki](https://intellectualsites.github.io/plotsquared-documentation/)
|
||||
* [Wiki](https://github.com/IntellectualSites/PlotSquared-Documentation/wiki)
|
||||
* [Issues](https://github.com/IntellectualSites/PlotSquared/issues)
|
||||
* [Translations](https://intellectualsites.crowdin.com/plotsquared/)
|
||||
* [Contributing](https://github.com/IntellectualSites/.github/blob/main/CONTRIBUTING.md)
|
||||
|
||||
### Developer Resources
|
||||
* [API Documentation](https://intellectualsites.github.io/plotsquared-documentation/api/api-documentation)
|
||||
* [Event API](https://intellectualsites.github.io/plotsquared-documentation/api/event-api)
|
||||
* [Flag API](https://intellectualsites.github.io/plotsquared-documentation/api/flag-api)
|
||||
* [API Documentation](https://github.com/IntellectualSites/PlotSquared-Documentation/wiki/API-Documentation)
|
||||
* [Event API](https://github.com/IntellectualSites/PlotSquared-Documentation/wiki/Events)
|
||||
* [Flag API](https://github.com/IntellectualSites/PlotSquared-Documentation/wiki/API-Flag)
|
||||
|
||||
# Official Addons
|
||||
* [Plot2Dynmap](http://www.spigotmc.org/resources/plot2dynmap.1292/)
|
||||
|
@ -18,7 +18,7 @@ plugins {
|
||||
idea
|
||||
}
|
||||
|
||||
version = "6.5.0"
|
||||
version = "6.3.1-SNAPSHOT"
|
||||
|
||||
allprojects {
|
||||
group = "com.plotsquared"
|
||||
@ -77,7 +77,7 @@ allprojects {
|
||||
}
|
||||
|
||||
tasks.compileJava.configure {
|
||||
options.release.set(17)
|
||||
options.release.set(16)
|
||||
}
|
||||
|
||||
configurations.all {
|
||||
|
@ -1,13 +1,13 @@
|
||||
[versions]
|
||||
# Minecraft expectations
|
||||
gson = "2.8.8" # Version set by Minecraft
|
||||
gson = "2.8.9" # Version set by Minecraft
|
||||
log4j-api = "2.17.1" # Version set by Minecraft
|
||||
guava = "31.0.1-jre" # Version set by Minecraft
|
||||
|
||||
# Platform expectations
|
||||
paper = "1.18.1-R0.1-SNAPSHOT"
|
||||
checker-qual = "3.21.2"
|
||||
guice = "5.1.0"
|
||||
checker-qual = "3.21.1"
|
||||
guice = "5.0.1"
|
||||
findbugs = "3.0.1"
|
||||
snakeyaml = "1.30" # Version set by Bukkit
|
||||
|
||||
@ -17,8 +17,8 @@ adventure-text-minimessage = "4.1.0-SNAPSHOT"
|
||||
adventure-platform-bukkit = "4.0.1"
|
||||
|
||||
# Plugins
|
||||
worldedit = "7.2.9"
|
||||
fawe = "2.0.1"
|
||||
worldedit = "7.2.8"
|
||||
fawe = "2.0.0"
|
||||
vault = "1.7.1"
|
||||
placeholderapi = "2.11.1"
|
||||
luckperms = "5.3"
|
||||
@ -30,8 +30,8 @@ prtree = "2.0.0"
|
||||
aopalliance = "1.0"
|
||||
cloud-services = "1.6.1"
|
||||
arkitektonika = "2.1.1"
|
||||
paster = "1.1.4"
|
||||
bstats = "3.0.0"
|
||||
paster = "1.1.3"
|
||||
bstats = "2.2.1"
|
||||
paperlib = "1.0.7"
|
||||
squirrelid = "0.3.0"
|
||||
serverlib = "2.3.1"
|
||||
|
2
gradle/wrapper/gradle-wrapper.properties
vendored
2
gradle/wrapper/gradle-wrapper.properties
vendored
@ -1,5 +1,5 @@
|
||||
distributionBase=GRADLE_USER_HOME
|
||||
distributionPath=wrapper/dists
|
||||
distributionUrl=https\://services.gradle.org/distributions/gradle-7.4-all.zip
|
||||
distributionUrl=https\://services.gradle.org/distributions/gradle-7.3.3-bin.zip
|
||||
zipStoreBase=GRADLE_USER_HOME
|
||||
zipStorePath=wrapper/dists
|
||||
|
Reference in New Issue
Block a user