mirror of
https://github.com/IntellectualSites/PlotSquared.git
synced 2025-07-17 12:54:43 +02:00
Compare commits
2 Commits
fix/v7/cau
...
fix/4647
Author | SHA1 | Date | |
---|---|---|---|
141444de52 | |||
496b10747e |
@ -252,11 +252,6 @@ public final class BukkitPlatform extends JavaPlugin implements Listener, PlotPl
|
|||||||
return Bukkit.getVersion();
|
return Bukkit.getVersion();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public @NonNull String serverBrand() {
|
|
||||||
return Bukkit.getName();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@SuppressWarnings("deprecation") // Paper deprecation
|
@SuppressWarnings("deprecation") // Paper deprecation
|
||||||
public void onEnable() {
|
public void onEnable() {
|
||||||
|
@ -28,6 +28,7 @@ import com.plotsquared.core.plot.flag.implementations.CopperOxideFlag;
|
|||||||
import com.plotsquared.core.plot.flag.implementations.MiscInteractFlag;
|
import com.plotsquared.core.plot.flag.implementations.MiscInteractFlag;
|
||||||
import com.plotsquared.core.plot.flag.implementations.SculkSensorInteractFlag;
|
import com.plotsquared.core.plot.flag.implementations.SculkSensorInteractFlag;
|
||||||
import com.plotsquared.core.util.PlotFlagUtil;
|
import com.plotsquared.core.util.PlotFlagUtil;
|
||||||
|
import org.bukkit.Material;
|
||||||
import org.bukkit.block.Block;
|
import org.bukkit.block.Block;
|
||||||
import org.bukkit.entity.Entity;
|
import org.bukkit.entity.Entity;
|
||||||
import org.bukkit.entity.Item;
|
import org.bukkit.entity.Item;
|
||||||
@ -41,11 +42,31 @@ import org.bukkit.event.block.BlockReceiveGameEvent;
|
|||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
|
import java.util.Set;
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
||||||
@SuppressWarnings("unused")
|
@SuppressWarnings("unused")
|
||||||
public class BlockEventListener117 implements Listener {
|
public class BlockEventListener117 implements Listener {
|
||||||
|
|
||||||
|
private static final Set<Material> COPPER_OXIDIZING = Set.of(
|
||||||
|
Material.COPPER_BLOCK,
|
||||||
|
Material.EXPOSED_COPPER,
|
||||||
|
Material.WEATHERED_COPPER,
|
||||||
|
Material.OXIDIZED_COPPER,
|
||||||
|
Material.CUT_COPPER,
|
||||||
|
Material.EXPOSED_CUT_COPPER,
|
||||||
|
Material.WEATHERED_CUT_COPPER,
|
||||||
|
Material.OXIDIZED_CUT_COPPER,
|
||||||
|
Material.CUT_COPPER_STAIRS,
|
||||||
|
Material.EXPOSED_CUT_COPPER_STAIRS,
|
||||||
|
Material.WEATHERED_CUT_COPPER_STAIRS,
|
||||||
|
Material.OXIDIZED_CUT_COPPER_STAIRS,
|
||||||
|
Material.CUT_COPPER_SLAB,
|
||||||
|
Material.EXPOSED_CUT_COPPER_SLAB,
|
||||||
|
Material.WEATHERED_CUT_COPPER_SLAB,
|
||||||
|
Material.OXIDIZED_CUT_COPPER_SLAB
|
||||||
|
);
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
public BlockEventListener117() {
|
public BlockEventListener117() {
|
||||||
}
|
}
|
||||||
@ -163,7 +184,7 @@ public class BlockEventListener117 implements Listener {
|
|||||||
if (plot == null) {
|
if (plot == null) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (event.getNewState().getType().name().contains("COPPER")) {
|
if (COPPER_OXIDIZING.contains(event.getNewState().getType())) {
|
||||||
if (!plot.getFlag(CopperOxideFlag.class)) {
|
if (!plot.getFlag(CopperOxideFlag.class)) {
|
||||||
plot.debug("Copper could not oxide because copper-oxide = false");
|
plot.debug("Copper could not oxide because copper-oxide = false");
|
||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
|
@ -29,7 +29,6 @@ import com.destroystokyo.paper.event.player.PlayerLaunchProjectileEvent;
|
|||||||
import com.destroystokyo.paper.event.server.AsyncTabCompleteEvent;
|
import com.destroystokyo.paper.event.server.AsyncTabCompleteEvent;
|
||||||
import com.google.inject.Inject;
|
import com.google.inject.Inject;
|
||||||
import com.plotsquared.bukkit.util.BukkitUtil;
|
import com.plotsquared.bukkit.util.BukkitUtil;
|
||||||
import com.plotsquared.core.PlotSquared;
|
|
||||||
import com.plotsquared.core.command.Command;
|
import com.plotsquared.core.command.Command;
|
||||||
import com.plotsquared.core.command.MainCommand;
|
import com.plotsquared.core.command.MainCommand;
|
||||||
import com.plotsquared.core.configuration.Settings;
|
import com.plotsquared.core.configuration.Settings;
|
||||||
@ -39,7 +38,6 @@ import com.plotsquared.core.permissions.Permission;
|
|||||||
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.PlotArea;
|
import com.plotsquared.core.plot.PlotArea;
|
||||||
import com.plotsquared.core.plot.PlotAreaType;
|
|
||||||
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;
|
||||||
@ -50,7 +48,6 @@ 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;
|
||||||
import io.papermc.paper.event.entity.EntityMoveEvent;
|
import io.papermc.paper.event.entity.EntityMoveEvent;
|
||||||
import io.papermc.paper.event.world.StructuresLocateEvent;
|
|
||||||
import net.kyori.adventure.text.Component;
|
import net.kyori.adventure.text.Component;
|
||||||
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;
|
||||||
@ -461,21 +458,6 @@ public class PaperListener implements Listener {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Don't let the server die when populating cartographers (villager offering maps) in classic plot worlds
|
|
||||||
* (as those don't generate POIs)
|
|
||||||
*/
|
|
||||||
@EventHandler(ignoreCancelled = true, priority = EventPriority.HIGHEST)
|
|
||||||
public void onStructuresLocate(StructuresLocateEvent event) {
|
|
||||||
if (!PlotSquared.get().getPlotAreaManager().hasPlotArea(event.getWorld().getName())) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
final PlotArea area = PlotSquared.get().getPlotAreaManager().getPlotAreaByString(event.getWorld().getName());
|
|
||||||
if (area != null && area.getType() == PlotAreaType.NORMAL) {
|
|
||||||
event.setCancelled(true);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private boolean getBooleanFlagValue(
|
private boolean getBooleanFlagValue(
|
||||||
@NonNull FlagContainer container,
|
@NonNull FlagContainer container,
|
||||||
@NonNull Class<? extends BooleanFlag<?>> flagClass,
|
@NonNull Class<? extends BooleanFlag<?>> flagClass,
|
||||||
|
@ -64,11 +64,9 @@ 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.TileDropFlag;
|
||||||
import com.plotsquared.core.plot.flag.implementations.UntrustedVisitFlag;
|
import com.plotsquared.core.plot.flag.implementations.UntrustedVisitFlag;
|
||||||
import com.plotsquared.core.plot.flag.implementations.UseFlag;
|
|
||||||
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;
|
||||||
import com.plotsquared.core.plot.flag.implementations.VillagerInteractFlag;
|
import com.plotsquared.core.plot.flag.implementations.VillagerInteractFlag;
|
||||||
import com.plotsquared.core.plot.flag.types.BlockTypeWrapper;
|
|
||||||
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;
|
||||||
@ -80,7 +78,6 @@ import com.plotsquared.core.util.task.TaskTime;
|
|||||||
import com.sk89q.worldedit.WorldEdit;
|
import com.sk89q.worldedit.WorldEdit;
|
||||||
import com.sk89q.worldedit.bukkit.BukkitAdapter;
|
import com.sk89q.worldedit.bukkit.BukkitAdapter;
|
||||||
import com.sk89q.worldedit.world.block.BlockType;
|
import com.sk89q.worldedit.world.block.BlockType;
|
||||||
import com.sk89q.worldedit.world.block.BlockTypes;
|
|
||||||
import io.papermc.lib.PaperLib;
|
import io.papermc.lib.PaperLib;
|
||||||
import net.kyori.adventure.text.Component;
|
import net.kyori.adventure.text.Component;
|
||||||
import net.kyori.adventure.text.minimessage.MiniMessage;
|
import net.kyori.adventure.text.minimessage.MiniMessage;
|
||||||
@ -91,8 +88,10 @@ import org.bukkit.Bukkit;
|
|||||||
import org.bukkit.FluidCollisionMode;
|
import org.bukkit.FluidCollisionMode;
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
import org.bukkit.block.Block;
|
import org.bukkit.block.Block;
|
||||||
|
import org.bukkit.block.BlockFace;
|
||||||
import org.bukkit.block.BlockState;
|
import org.bukkit.block.BlockState;
|
||||||
import org.bukkit.block.Sign;
|
import org.bukkit.block.Sign;
|
||||||
|
import org.bukkit.block.data.Waterlogged;
|
||||||
import org.bukkit.command.PluginCommand;
|
import org.bukkit.command.PluginCommand;
|
||||||
import org.bukkit.entity.ArmorStand;
|
import org.bukkit.entity.ArmorStand;
|
||||||
import org.bukkit.entity.Boat;
|
import org.bukkit.entity.Boat;
|
||||||
@ -155,11 +154,9 @@ import org.bukkit.util.Vector;
|
|||||||
import org.checkerframework.checker.nullness.qual.NonNull;
|
import org.checkerframework.checker.nullness.qual.NonNull;
|
||||||
|
|
||||||
import java.lang.reflect.Field;
|
import java.lang.reflect.Field;
|
||||||
import java.util.Collections;
|
|
||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Locale;
|
import java.util.Locale;
|
||||||
import java.util.Optional;
|
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
||||||
@ -184,7 +181,6 @@ public class PlayerEventListener implements Listener {
|
|||||||
Material.WRITTEN_BOOK
|
Material.WRITTEN_BOOK
|
||||||
);
|
);
|
||||||
private static final Set<String> DYES;
|
private static final Set<String> DYES;
|
||||||
|
|
||||||
static {
|
static {
|
||||||
Set<String> mutableDyes = new HashSet<>(Set.of(
|
Set<String> mutableDyes = new HashSet<>(Set.of(
|
||||||
"WHITE_DYE",
|
"WHITE_DYE",
|
||||||
@ -219,7 +215,7 @@ public class PlayerEventListener implements Listener {
|
|||||||
// "temporary" fix for https://hub.spigotmc.org/jira/browse/SPIGOT-7813
|
// "temporary" fix for https://hub.spigotmc.org/jira/browse/SPIGOT-7813
|
||||||
// can (and should) be removed when 1.21 support is dropped
|
// can (and should) be removed when 1.21 support is dropped
|
||||||
// List of all interactable 1.21 materials
|
// List of all interactable 1.21 materials
|
||||||
INTERACTABLE_MATERIALS = Material.CHEST.isInteractable() ? null : Set.of(
|
INTERACTABLE_MATERIALS = Material.CHEST.isInteractable() ? null : Set.of(
|
||||||
"REDSTONE_ORE", "DEEPSLATE_REDSTONE_ORE", "CHISELED_BOOKSHELF", "DECORATED_POT", "CHEST", "CRAFTING_TABLE",
|
"REDSTONE_ORE", "DEEPSLATE_REDSTONE_ORE", "CHISELED_BOOKSHELF", "DECORATED_POT", "CHEST", "CRAFTING_TABLE",
|
||||||
"FURNACE", "JUKEBOX", "OAK_FENCE", "SPRUCE_FENCE", "BIRCH_FENCE", "JUNGLE_FENCE", "ACACIA_FENCE", "CHERRY_FENCE",
|
"FURNACE", "JUKEBOX", "OAK_FENCE", "SPRUCE_FENCE", "BIRCH_FENCE", "JUNGLE_FENCE", "ACACIA_FENCE", "CHERRY_FENCE",
|
||||||
"DARK_OAK_FENCE", "MANGROVE_FENCE", "BAMBOO_FENCE", "CRIMSON_FENCE", "WARPED_FENCE", "PUMPKIN",
|
"DARK_OAK_FENCE", "MANGROVE_FENCE", "BAMBOO_FENCE", "CRIMSON_FENCE", "WARPED_FENCE", "PUMPKIN",
|
||||||
@ -537,14 +533,12 @@ public class PlayerEventListener implements Listener {
|
|||||||
// Delayed
|
// Delayed
|
||||||
|
|
||||||
// Async
|
// Async
|
||||||
TaskManager.runTaskLaterAsync(
|
TaskManager.runTaskLaterAsync(() -> {
|
||||||
() -> {
|
if (!player.hasPlayedBefore() && player.isOnline()) {
|
||||||
if (!player.hasPlayedBefore() && player.isOnline()) {
|
player.saveData();
|
||||||
player.saveData();
|
}
|
||||||
}
|
this.eventDispatcher.doJoinTask(pp);
|
||||||
this.eventDispatcher.doJoinTask(pp);
|
}, TaskTime.seconds(1L));
|
||||||
}, TaskTime.seconds(1L)
|
|
||||||
);
|
|
||||||
|
|
||||||
if (pp.hasPermission(Permission.PERMISSION_ADMIN_UPDATE_NOTIFICATION.toString()) && Settings.Enabled_Components.UPDATE_NOTIFICATIONS
|
if (pp.hasPermission(Permission.PERMISSION_ADMIN_UPDATE_NOTIFICATION.toString()) && Settings.Enabled_Components.UPDATE_NOTIFICATIONS
|
||||||
&& PremiumVerification.isPremium() && UpdateUtility.hasUpdate) {
|
&& PremiumVerification.isPremium() && UpdateUtility.hasUpdate) {
|
||||||
@ -605,9 +599,7 @@ public class PlayerEventListener implements Listener {
|
|||||||
// to is identical to the plot's home location, and untrusted-visit is true
|
// to is identical to the plot's home location, and untrusted-visit is true
|
||||||
// i.e. untrusted-visit can override deny-teleport
|
// i.e. untrusted-visit can override deny-teleport
|
||||||
// this is acceptable, because otherwise it wouldn't make sense to have both flags set
|
// this is acceptable, because otherwise it wouldn't make sense to have both flags set
|
||||||
if (result || (plot.getFlag(UntrustedVisitFlag.class) && plot
|
if (result || (plot.getFlag(UntrustedVisitFlag.class) && plot.getHomeSynchronous().equals(BukkitUtil.adaptComplete(to)))) {
|
||||||
.getHomeSynchronous()
|
|
||||||
.equals(BukkitUtil.adaptComplete(to)))) {
|
|
||||||
// returns false if the player is not allowed to enter the plot (if they are denied, for example)
|
// returns false if the player is not allowed to enter the plot (if they are denied, for example)
|
||||||
// don't let the move event cancel the entry after teleport, but rather catch and cancel early (#4647)
|
// don't let the move event cancel the entry after teleport, but rather catch and cancel early (#4647)
|
||||||
if (!plotListener.plotEntry(pp, plot)) {
|
if (!plotListener.plotEntry(pp, plot)) {
|
||||||
@ -951,15 +943,12 @@ public class PlayerEventListener implements Listener {
|
|||||||
builder.tag("plot_id", Tag.inserting(Component.text(id.toString())));
|
builder.tag("plot_id", Tag.inserting(Component.text(id.toString())));
|
||||||
builder.tag("sender", Tag.inserting(Component.text(sender)));
|
builder.tag("sender", Tag.inserting(Component.text(sender)));
|
||||||
if (plotPlayer.hasPermission("plots.chat.color")) {
|
if (plotPlayer.hasPermission("plots.chat.color")) {
|
||||||
builder.tag(
|
builder.tag("msg", Tag.inserting(MiniMessage.miniMessage().deserialize(
|
||||||
"msg", Tag.inserting(MiniMessage.miniMessage().deserialize(
|
message,
|
||||||
message,
|
TagResolver.resolver(StandardTags.color(), StandardTags.gradient(),
|
||||||
TagResolver.resolver(
|
StandardTags.rainbow(), StandardTags.decorations()
|
||||||
StandardTags.color(), StandardTags.gradient(),
|
)
|
||||||
StandardTags.rainbow(), StandardTags.decorations()
|
)));
|
||||||
)
|
|
||||||
))
|
|
||||||
);
|
|
||||||
} else {
|
} else {
|
||||||
builder.tag("msg", Tag.inserting(Component.text(message)));
|
builder.tag("msg", Tag.inserting(Component.text(message)));
|
||||||
}
|
}
|
||||||
@ -1268,9 +1257,7 @@ public class PlayerEventListener implements Listener {
|
|||||||
eventType = PlayerBlockEventType.INTERACT_BLOCK;
|
eventType = PlayerBlockEventType.INTERACT_BLOCK;
|
||||||
blocktype1 = BukkitAdapter.asBlockType(block.getType());
|
blocktype1 = BukkitAdapter.asBlockType(block.getType());
|
||||||
|
|
||||||
if (INTERACTABLE_MATERIALS != null
|
if (INTERACTABLE_MATERIALS != null ? INTERACTABLE_MATERIALS.contains(blockType.name()) : blockType.isInteractable()) {
|
||||||
? INTERACTABLE_MATERIALS.contains(blockType.name())
|
|
||||||
: blockType.isInteractable()) {
|
|
||||||
if (!player.isSneaking()) {
|
if (!player.isSneaking()) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -1288,7 +1275,7 @@ public class PlayerEventListener implements Listener {
|
|||||||
// in the following, lb needs to have the material of the item in hand i.e. type
|
// in the following, lb needs to have the material of the item in hand i.e. type
|
||||||
switch (type.toString()) {
|
switch (type.toString()) {
|
||||||
case "REDSTONE", "STRING", "PUMPKIN_SEEDS", "MELON_SEEDS", "COCOA_BEANS", "WHEAT_SEEDS", "BEETROOT_SEEDS",
|
case "REDSTONE", "STRING", "PUMPKIN_SEEDS", "MELON_SEEDS", "COCOA_BEANS", "WHEAT_SEEDS", "BEETROOT_SEEDS",
|
||||||
"SWEET_BERRIES", "GLOW_BERRIES" -> {
|
"SWEET_BERRIES", "GLOW_BERRIES" -> {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
default -> {
|
default -> {
|
||||||
@ -1387,7 +1374,22 @@ public class PlayerEventListener implements Listener {
|
|||||||
|
|
||||||
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
|
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
|
||||||
public void onBucketEmpty(PlayerBucketEmptyEvent event) {
|
public void onBucketEmpty(PlayerBucketEmptyEvent event) {
|
||||||
final Block block = event.getBlock();
|
BlockFace bf = event.getBlockFace();
|
||||||
|
// Note: a month after Bukkit 1.14.4 released, they added the API method
|
||||||
|
// PlayerBucketEmptyEvent#getBlock(), which returns the block the
|
||||||
|
// bucket contents is going to be placed at. Currently we determine this
|
||||||
|
// block ourselves to retain compatibility with 1.13.
|
||||||
|
final Block block;
|
||||||
|
// if the block can be waterlogged, the event might waterlog the block
|
||||||
|
// sometimes
|
||||||
|
if (event.getBlockClicked().getBlockData() instanceof Waterlogged waterlogged
|
||||||
|
&& !waterlogged.isWaterlogged() && event.getBucket() != Material.LAVA_BUCKET) {
|
||||||
|
block = event.getBlockClicked();
|
||||||
|
} else {
|
||||||
|
block = event.getBlockClicked().getLocation()
|
||||||
|
.add(bf.getModX(), bf.getModY(), bf.getModZ())
|
||||||
|
.getBlock();
|
||||||
|
}
|
||||||
Location location = BukkitUtil.adapt(block.getLocation());
|
Location location = BukkitUtil.adapt(block.getLocation());
|
||||||
PlotArea area = location.getPlotArea();
|
PlotArea area = location.getPlotArea();
|
||||||
if (area == null) {
|
if (area == null) {
|
||||||
@ -1395,16 +1397,6 @@ public class PlayerEventListener implements Listener {
|
|||||||
}
|
}
|
||||||
BukkitPlayer pp = BukkitUtil.adapt(event.getPlayer());
|
BukkitPlayer pp = BukkitUtil.adapt(event.getPlayer());
|
||||||
Plot plot = area.getPlot(location);
|
Plot plot = area.getPlot(location);
|
||||||
final List<BlockTypeWrapper> use =
|
|
||||||
Optional.ofNullable(plot).map(p -> p.getFlag(UseFlag.class)).orElse(area.isRoadFlags() ?
|
|
||||||
area.getFlag(UseFlag.class) : Collections.emptyList());
|
|
||||||
BlockType type = BukkitAdapter.asBlockType(block.getType());
|
|
||||||
for (final BlockTypeWrapper blockTypeWrapper : use) {
|
|
||||||
if (blockTypeWrapper.accepts(BlockTypes.AIR) || blockTypeWrapper
|
|
||||||
.accepts(type)) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (plot == null) {
|
if (plot == null) {
|
||||||
if (pp.hasPermission(Permission.PERMISSION_ADMIN_BUILD_ROAD)) {
|
if (pp.hasPermission(Permission.PERMISSION_ADMIN_BUILD_ROAD)) {
|
||||||
return;
|
return;
|
||||||
@ -1476,16 +1468,6 @@ public class PlayerEventListener implements Listener {
|
|||||||
Player player = event.getPlayer();
|
Player player = event.getPlayer();
|
||||||
BukkitPlayer plotPlayer = BukkitUtil.adapt(player);
|
BukkitPlayer plotPlayer = BukkitUtil.adapt(player);
|
||||||
Plot plot = area.getPlot(location);
|
Plot plot = area.getPlot(location);
|
||||||
final List<BlockTypeWrapper> use =
|
|
||||||
Optional.ofNullable(plot).map(p -> p.getFlag(UseFlag.class)).orElse(area.isRoadFlags() ?
|
|
||||||
area.getFlag(UseFlag.class) : Collections.emptyList());
|
|
||||||
BlockType type = BukkitAdapter.asBlockType(blockClicked.getType());
|
|
||||||
for (final BlockTypeWrapper blockTypeWrapper : use) {
|
|
||||||
if (blockTypeWrapper.accepts(BlockTypes.AIR) || blockTypeWrapper
|
|
||||||
.accepts(type)) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (plot == null) {
|
if (plot == null) {
|
||||||
if (plotPlayer.hasPermission(Permission.PERMISSION_ADMIN_BUILD_ROAD)) {
|
if (plotPlayer.hasPermission(Permission.PERMISSION_ADMIN_BUILD_ROAD)) {
|
||||||
return;
|
return;
|
||||||
|
@ -120,14 +120,6 @@ public interface PlotPlatform<P> extends LocaleHolder {
|
|||||||
*/
|
*/
|
||||||
@NonNull String serverImplementation();
|
@NonNull String serverImplementation();
|
||||||
|
|
||||||
/**
|
|
||||||
* Gets the server brand name
|
|
||||||
*
|
|
||||||
* @return server brand
|
|
||||||
* @since 7.5.3
|
|
||||||
*/
|
|
||||||
@NonNull String serverBrand();
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Gets the native server code package prefix.
|
* Gets the native server code package prefix.
|
||||||
*
|
*
|
||||||
|
@ -144,7 +144,6 @@ public class Buy extends Command {
|
|||||||
plot.getPlotModificationManager().setSign(player.getName());
|
plot.getPlotModificationManager().setSign(player.getName());
|
||||||
player.sendMessage(
|
player.sendMessage(
|
||||||
TranslatableCaption.of("working.claimed"),
|
TranslatableCaption.of("working.claimed"),
|
||||||
TagResolver.resolver("world", Tag.inserting(Component.text(plot.getArea().getWorldName()))),
|
|
||||||
TagResolver.resolver("plot", Tag.inserting(Component.text(plot.getId().toString())))
|
TagResolver.resolver("plot", Tag.inserting(Component.text(plot.getId().toString())))
|
||||||
);
|
);
|
||||||
this.eventDispatcher.callPostPlayerBuyPlot(player, previousOwner, plot, price);
|
this.eventDispatcher.callPostPlayerBuyPlot(player, previousOwner, plot, price);
|
||||||
|
@ -131,7 +131,6 @@ public class Clear extends Command {
|
|||||||
player.sendMessage(
|
player.sendMessage(
|
||||||
TranslatableCaption.of("working.clearing_done"),
|
TranslatableCaption.of("working.clearing_done"),
|
||||||
TagResolver.builder()
|
TagResolver.builder()
|
||||||
.tag("world", Tag.inserting(Component.text(plot.getArea().getWorldName())))
|
|
||||||
.tag("amount", Tag.inserting(Component.text(System.currentTimeMillis() - start)))
|
.tag("amount", Tag.inserting(Component.text(System.currentTimeMillis() - start)))
|
||||||
.tag("plot", Tag.inserting(Component.text(plot.getId().toString())))
|
.tag("plot", Tag.inserting(Component.text(plot.getId().toString())))
|
||||||
.build()
|
.build()
|
||||||
|
@ -24,7 +24,6 @@ import com.plotsquared.core.configuration.caption.TranslatableCaption;
|
|||||||
import com.plotsquared.core.player.PlotPlayer;
|
import com.plotsquared.core.player.PlotPlayer;
|
||||||
import net.kyori.adventure.text.Component;
|
import net.kyori.adventure.text.Component;
|
||||||
import net.kyori.adventure.text.minimessage.MiniMessage;
|
import net.kyori.adventure.text.minimessage.MiniMessage;
|
||||||
import net.kyori.adventure.text.minimessage.tag.resolver.TagResolver;
|
|
||||||
import org.checkerframework.checker.nullness.qual.NonNull;
|
import org.checkerframework.checker.nullness.qual.NonNull;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
|
||||||
@ -99,14 +98,6 @@ public enum CommandCategory implements Caption {
|
|||||||
return MiniMessage.miniMessage().deserialize(getComponent(localeHolder));
|
return MiniMessage.miniMessage().deserialize(getComponent(localeHolder));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public @NonNull Component toComponent(
|
|
||||||
@NonNull final LocaleHolder localeHolder,
|
|
||||||
final @NonNull TagResolver @NonNull ... tagResolvers
|
|
||||||
) {
|
|
||||||
return MiniMessage.miniMessage().deserialize(getComponent(localeHolder));
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Checks if a player has access to this command category
|
* Checks if a player has access to this command category
|
||||||
*
|
*
|
||||||
|
@ -86,8 +86,7 @@ public class DebugPaste extends SubCommand {
|
|||||||
b.append("# WorldEdit implementation:\n");
|
b.append("# WorldEdit implementation:\n");
|
||||||
b.append(PlotSquared.platform().worldEditImplementations()).append("\n\n");
|
b.append(PlotSquared.platform().worldEditImplementations()).append("\n\n");
|
||||||
b.append("# Server Information\n");
|
b.append("# Server Information\n");
|
||||||
b.append("Server Version: ").append(PlotSquared.platform().serverBrand()).append(": ")
|
b.append("Server Version: ").append(PlotSquared.platform().serverImplementation())
|
||||||
.append(PlotSquared.platform().serverImplementation()).append("\n")
|
|
||||||
.append("\n");
|
.append("\n");
|
||||||
b.append("online_mode: ").append(!Settings.UUID.OFFLINE).append(';')
|
b.append("online_mode: ").append(!Settings.UUID.OFFLINE).append(';')
|
||||||
.append(!Settings.UUID.OFFLINE).append('\n');
|
.append(!Settings.UUID.OFFLINE).append('\n');
|
||||||
|
@ -124,7 +124,6 @@ public class Delete extends SubCommand {
|
|||||||
"amount",
|
"amount",
|
||||||
Tag.inserting(Component.text(String.valueOf(System.currentTimeMillis() - start)))
|
Tag.inserting(Component.text(String.valueOf(System.currentTimeMillis() - start)))
|
||||||
),
|
),
|
||||||
TagResolver.resolver("world", Tag.inserting(Component.text(plotArea.getWorldName()))),
|
|
||||||
TagResolver.resolver("plot", Tag.inserting(Component.text(plot.getId().toString())))
|
TagResolver.resolver("plot", Tag.inserting(Component.text(plot.getId().toString())))
|
||||||
);
|
);
|
||||||
eventDispatcher.callPostDelete(plot);
|
eventDispatcher.callPostDelete(plot);
|
||||||
|
@ -113,34 +113,38 @@ public class Help extends Command {
|
|||||||
}
|
}
|
||||||
if (cat == null && page == 0) {
|
if (cat == null && page == 0) {
|
||||||
TextComponent.Builder builder = Component.text();
|
TextComponent.Builder builder = Component.text();
|
||||||
builder.append(TranslatableCaption.of("help.help_header").toComponent(player));
|
builder.append(MINI_MESSAGE.deserialize(TranslatableCaption.of("help.help_header").getComponent(player)));
|
||||||
for (CommandCategory c : CommandCategory.values()) {
|
for (CommandCategory c : CommandCategory.values()) {
|
||||||
if (!c.canAccess(player)) {
|
if (!c.canAccess(player)) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
builder.append(Component.newline());
|
builder.append(Component.newline()).append(MINI_MESSAGE
|
||||||
builder.append(TranslatableCaption.of("help.help_info_item").toComponent(
|
.deserialize(
|
||||||
player, TagResolver.builder()
|
TranslatableCaption.of("help.help_info_item").getComponent(player),
|
||||||
.tag("command", Tag.inserting(Component.text("/plot help")))
|
TagResolver.builder()
|
||||||
.tag("category", Tag.inserting(Component.text(c.name().toLowerCase())))
|
.tag("command", Tag.inserting(Component.text("/plot help")))
|
||||||
.tag("category_desc", Tag.inserting(c.toComponent(player)))
|
.tag("category", Tag.inserting(Component.text(c.name().toLowerCase())))
|
||||||
.build()
|
.tag("category_desc", Tag.inserting(c.toComponent(player)))
|
||||||
));
|
.build()
|
||||||
|
));
|
||||||
}
|
}
|
||||||
builder.append(Component.newline());
|
builder.append(Component.newline()).append(MINI_MESSAGE
|
||||||
builder.append(TranslatableCaption.of("help.help_info_item").toComponent(
|
.deserialize(
|
||||||
player, TagResolver.builder()
|
TranslatableCaption.of("help.help_info_item").getComponent(player),
|
||||||
.tag("command", Tag.inserting(Component.text("/plot help")))
|
TagResolver.builder()
|
||||||
.tag("category", Tag.inserting(Component.text("all")))
|
.tag("command", Tag.inserting(Component.text("/plot help")))
|
||||||
.tag(
|
.tag("category", Tag.inserting(Component.text("all")))
|
||||||
"category_desc", Tag.inserting(TranslatableCaption
|
.tag(
|
||||||
.of("help.help_display_all_commands")
|
"category_desc",
|
||||||
.toComponent(player))
|
Tag.inserting(TranslatableCaption
|
||||||
)
|
.of("help.help_display_all_commands")
|
||||||
.build()
|
.toComponent(player))
|
||||||
));
|
)
|
||||||
builder.append(Component.newline());
|
.build()
|
||||||
builder.append(TranslatableCaption.of("help.help_footer").toComponent(player));
|
));
|
||||||
|
builder.append(Component.newline()).append(MINI_MESSAGE.deserialize(TranslatableCaption
|
||||||
|
.of("help.help_footer")
|
||||||
|
.getComponent(player)));
|
||||||
player.sendMessage(StaticCaption.of(MINI_MESSAGE.serialize(builder.asComponent())));
|
player.sendMessage(StaticCaption.of(MINI_MESSAGE.serialize(builder.asComponent())));
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -20,7 +20,6 @@ package com.plotsquared.core.configuration.caption;
|
|||||||
|
|
||||||
import net.kyori.adventure.text.Component;
|
import net.kyori.adventure.text.Component;
|
||||||
import net.kyori.adventure.text.ComponentLike;
|
import net.kyori.adventure.text.ComponentLike;
|
||||||
import net.kyori.adventure.text.minimessage.tag.resolver.TagResolver;
|
|
||||||
import org.checkerframework.checker.nullness.qual.NonNull;
|
import org.checkerframework.checker.nullness.qual.NonNull;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -45,16 +44,6 @@ public interface Caption {
|
|||||||
*/
|
*/
|
||||||
@NonNull Component toComponent(@NonNull LocaleHolder localeHolder);
|
@NonNull Component toComponent(@NonNull LocaleHolder localeHolder);
|
||||||
|
|
||||||
/**
|
|
||||||
* Get the Adventure {@link ComponentLike} for this caption while applying custom {@link TagResolver}
|
|
||||||
* (apart from the default {@code core.prefix})
|
|
||||||
* @param localeHolder Local holder
|
|
||||||
* @param tagResolvers custom tag resolvers to replace placeholders / parameters
|
|
||||||
* @return {@link ComponentLike}
|
|
||||||
* @since TODO
|
|
||||||
*/
|
|
||||||
@NonNull Component toComponent(@NonNull LocaleHolder localeHolder, @NonNull TagResolver @NonNull... tagResolvers);
|
|
||||||
|
|
||||||
@NonNull String toString();
|
@NonNull String toString();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -21,7 +21,6 @@ package com.plotsquared.core.configuration.caption;
|
|||||||
import com.google.common.base.Preconditions;
|
import com.google.common.base.Preconditions;
|
||||||
import net.kyori.adventure.text.Component;
|
import net.kyori.adventure.text.Component;
|
||||||
import net.kyori.adventure.text.minimessage.MiniMessage;
|
import net.kyori.adventure.text.minimessage.MiniMessage;
|
||||||
import net.kyori.adventure.text.minimessage.tag.resolver.TagResolver;
|
|
||||||
import org.checkerframework.checker.nullness.qual.NonNull;
|
import org.checkerframework.checker.nullness.qual.NonNull;
|
||||||
|
|
||||||
public final class StaticCaption implements Caption {
|
public final class StaticCaption implements Caption {
|
||||||
@ -52,14 +51,6 @@ public final class StaticCaption implements Caption {
|
|||||||
return MiniMessage.miniMessage().deserialize(this.value);
|
return MiniMessage.miniMessage().deserialize(this.value);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public @NonNull Component toComponent(
|
|
||||||
@NonNull final LocaleHolder localeHolder,
|
|
||||||
final @NonNull TagResolver @NonNull ... tagResolvers
|
|
||||||
) {
|
|
||||||
return MiniMessage.miniMessage().deserialize(this.value, tagResolvers);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public @NonNull String toString() {
|
public @NonNull String toString() {
|
||||||
return "StaticCaption(" + value + ")";
|
return "StaticCaption(" + value + ")";
|
||||||
|
@ -27,7 +27,6 @@ import net.kyori.adventure.text.minimessage.tag.resolver.TagResolver;
|
|||||||
import org.checkerframework.checker.nullness.qual.NonNull;
|
import org.checkerframework.checker.nullness.qual.NonNull;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
|
||||||
import java.util.Arrays;
|
|
||||||
import java.util.Locale;
|
import java.util.Locale;
|
||||||
import java.util.regex.Pattern;
|
import java.util.regex.Pattern;
|
||||||
|
|
||||||
@ -97,23 +96,13 @@ public final class TranslatableCaption implements NamespacedCaption {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public @NonNull Component toComponent(@NonNull final LocaleHolder localeHolder) {
|
public @NonNull Component toComponent(@NonNull final LocaleHolder localeHolder) {
|
||||||
return this.toComponent(localeHolder, new TagResolver[0]);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public @NonNull Component toComponent(
|
|
||||||
@NonNull final LocaleHolder localeHolder,
|
|
||||||
final @NonNull TagResolver @NonNull ... tagResolvers
|
|
||||||
) {
|
|
||||||
if (getKey().equals("core.prefix")) {
|
if (getKey().equals("core.prefix")) {
|
||||||
return MiniMessage.miniMessage().deserialize(getComponent(localeHolder));
|
return MiniMessage.miniMessage().deserialize(getComponent(localeHolder));
|
||||||
}
|
}
|
||||||
TagResolver[] finalResolvers = Arrays.copyOf(tagResolvers, tagResolvers.length + 1);
|
return MiniMessage.miniMessage().deserialize(getComponent(localeHolder), TagResolver.resolver(
|
||||||
finalResolvers[finalResolvers.length - 1] = TagResolver.resolver(
|
|
||||||
"prefix",
|
"prefix",
|
||||||
Tag.inserting(TranslatableCaption.of("core.prefix").toComponent(localeHolder))
|
Tag.inserting(TranslatableCaption.of("core.prefix").toComponent(localeHolder))
|
||||||
);
|
));
|
||||||
return MiniMessage.miniMessage().deserialize(getComponent(localeHolder), finalResolvers);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -1717,7 +1717,6 @@ public class Plot {
|
|||||||
}
|
}
|
||||||
player.sendMessage(
|
player.sendMessage(
|
||||||
TranslatableCaption.of("working.claimed"),
|
TranslatableCaption.of("working.claimed"),
|
||||||
TagResolver.resolver("world", Tag.inserting(Component.text(this.getWorldName()))),
|
|
||||||
TagResolver.resolver("plot", Tag.inserting(Component.text(this.getId().toString())))
|
TagResolver.resolver("plot", Tag.inserting(Component.text(this.getId().toString())))
|
||||||
);
|
);
|
||||||
if (teleport) {
|
if (teleport) {
|
||||||
|
@ -25,24 +25,30 @@ import com.plotsquared.core.player.PlotPlayer;
|
|||||||
import com.plotsquared.core.util.StringMan;
|
import com.plotsquared.core.util.StringMan;
|
||||||
import net.kyori.adventure.text.Component;
|
import net.kyori.adventure.text.Component;
|
||||||
import net.kyori.adventure.text.ComponentLike;
|
import net.kyori.adventure.text.ComponentLike;
|
||||||
|
import net.kyori.adventure.text.minimessage.MiniMessage;
|
||||||
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.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
|
||||||
public class HelpObject implements ComponentLike {
|
public class HelpObject implements ComponentLike {
|
||||||
|
|
||||||
|
static final MiniMessage MINI_MESSAGE = MiniMessage.miniMessage();
|
||||||
|
|
||||||
private final Component rendered;
|
private final Component rendered;
|
||||||
|
|
||||||
public HelpObject(final Command command, final String label, final PlotPlayer<?> audience) {
|
public HelpObject(final Command command, final String label, final PlotPlayer<?> audience) {
|
||||||
this.rendered = TranslatableCaption.of("help.help_item").toComponent(audience, TagResolver.builder()
|
rendered = MINI_MESSAGE.deserialize(
|
||||||
.tag("usage", Tag.inserting(Component.text(command.getUsage().replace("{label}", label))))
|
TranslatableCaption.of("help.help_item").getComponent(audience),
|
||||||
.tag("alias", Tag.inserting(Component.text(
|
TagResolver.builder()
|
||||||
command.getAliases().isEmpty() ? "" : StringMan.join(command.getAliases(), " | ")
|
.tag("usage", Tag.inserting(Component.text(command.getUsage().replace("{label}", label))))
|
||||||
)))
|
.tag("alias", Tag.inserting(Component.text(
|
||||||
.tag("desc", Tag.inserting(command.getDescription().toComponent(audience)))
|
command.getAliases().isEmpty() ? "" : StringMan.join(command.getAliases(), " | ")
|
||||||
.tag("arguments", Tag.inserting(Component.text(buildArgumentList(command.getRequiredArguments()))))
|
)))
|
||||||
.tag("label", Tag.inserting(Component.text(label)))
|
.tag("desc", Tag.inserting(command.getDescription().toComponent(audience)))
|
||||||
.build());
|
.tag("arguments", Tag.inserting(Component.text(buildArgumentList(command.getRequiredArguments()))))
|
||||||
|
.tag("label", Tag.inserting(Component.text(label)))
|
||||||
|
.build()
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
private String buildArgumentList(final Argument<?>[] arguments) {
|
private String buildArgumentList(final Argument<?>[] arguments) {
|
||||||
|
@ -390,11 +390,11 @@
|
|||||||
"info.area_list_tooltip": "<gold>Claimed=</gold><gray><claimed></gray>\n<gold>Usage=</gold><gray><usage></gray>\n<gold>Clusters=</gold><gray><clusters></gray>\n<gold>Region=</gold><gray><region></gray>\n<gold>Generator=</gold><gray><generator></gray>",
|
"info.area_list_tooltip": "<gold>Claimed=</gold><gray><claimed></gray>\n<gold>Usage=</gold><gray><usage></gray>\n<gold>Clusters=</gold><gray><clusters></gray>\n<gold>Region=</gold><gray><region></gray>\n<gold>Generator=</gold><gray><generator></gray>",
|
||||||
"info.area_list_item": "<click:run_command:'<command_tp>'><hover:show_text:'<command_tp>'><dark_gray>[</dark_gray><gold><number></gold><dark_gray>]</dark_gray></hover></click> <click:run_command:'<command_info>'><hover:show_text:'<hover_info>'><gold><area_name></gold></hover></click><gray> - </gray><gray><area_type>:<area_terrain></gray>",
|
"info.area_list_item": "<click:run_command:'<command_tp>'><hover:show_text:'<command_tp>'><dark_gray>[</dark_gray><gold><number></gold><dark_gray>]</dark_gray></hover></click> <click:run_command:'<command_info>'><hover:show_text:'<hover_info>'><gold><area_name></gold></hover></click><gray> - </gray><gray><area_type>:<area_terrain></gray>",
|
||||||
"working.generating_component": "<prefix><gold>Started generating component from your settings.</gold>",
|
"working.generating_component": "<prefix><gold>Started generating component from your settings.</gold>",
|
||||||
"working.clearing_done": "<prefix><dark_aqua>Plot </dark_aqua><gold><world>;<plot></gold><dark_aqua> has been cleared! Took </dark_aqua><gold><amount>ms</gold><dark_aqua>.</dark_aqua>",
|
"working.clearing_done": "<prefix><dark_aqua>Plot </dark_aqua><gold><plot></gold><dark_aqua> has been cleared! Took </dark_aqua><gold><amount>ms</gold><dark_aqua>.</dark_aqua>",
|
||||||
"working.deleting_done": "<prefix><dark_aqua>Plot </dark_aqua><gold><world>;<plot></gold><dark_aqua> has been deleted! Took </dark_aqua><gold><amount>ms</gold><dark_aqua>.</dark_aqua>",
|
"working.deleting_done": "<prefix><dark_aqua>Plot </dark_aqua><gold><plot></gold><dark_aqua> has been deleted! Took </dark_aqua><gold><amount>ms</gold><dark_aqua>.</dark_aqua>",
|
||||||
"working.plot_not_claimed": "<prefix><gray>Plot not claimed.</gray>",
|
"working.plot_not_claimed": "<prefix><gray>Plot not claimed.</gray>",
|
||||||
"working.plot_is_claimed": "<prefix><gray>This plot is already claimed.</gray>",
|
"working.plot_is_claimed": "<prefix><gray>This plot is already claimed.</gray>",
|
||||||
"working.claimed": "<prefix><dark_aqua>You successfully claimed the plot </dark_aqua><gold><world>;<plot></gold><dark_aqua>.</dark_aqua>",
|
"working.claimed": "<prefix><dark_aqua>You successfully claimed the plot </dark_aqua><gold><plot></gold><dark_aqua>.</dark_aqua>",
|
||||||
"working.progress": "<prefix><gray>Current progress: </gray><gold><progress></gold><gray>%</gray>",
|
"working.progress": "<prefix><gray>Current progress: </gray><gold><progress></gold><gray>%</gray>",
|
||||||
"working.component_complete": "<prefix><gold>Component generation has finished for plot <plot>.</gold>",
|
"working.component_complete": "<prefix><gold>Component generation has finished for plot <plot>.</gold>",
|
||||||
"list.comment_list_header_paged": "<gray>(Page </gray><gold><cur></gold><gray>/</gray><gold><max></gold><gray>) </gray><gold>List of <amount> comment(s):</gold>",
|
"list.comment_list_header_paged": "<gray>(Page </gray><gold><cur></gold><gray>/</gray><gold><max></gold><gray>) </gray><gold>List of <amount> comment(s):</gold>",
|
||||||
|
@ -22,7 +22,7 @@ plugins {
|
|||||||
}
|
}
|
||||||
|
|
||||||
group = "com.intellectualsites.plotsquared"
|
group = "com.intellectualsites.plotsquared"
|
||||||
version = "7.5.4-SNAPSHOT"
|
version = "7.5.3-SNAPSHOT"
|
||||||
|
|
||||||
if (!File("$rootDir/.git").exists()) {
|
if (!File("$rootDir/.git").exists()) {
|
||||||
logger.lifecycle("""
|
logger.lifecycle("""
|
||||||
@ -69,8 +69,8 @@ subprojects {
|
|||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
// Tests
|
// Tests
|
||||||
testImplementation("org.junit.jupiter:junit-jupiter:5.13.1")
|
testImplementation("org.junit.jupiter:junit-jupiter:5.12.2")
|
||||||
testRuntimeOnly("org.junit.platform:junit-platform-launcher:1.13.1")
|
testRuntimeOnly("org.junit.platform:junit-platform-launcher:1.12.2")
|
||||||
}
|
}
|
||||||
|
|
||||||
plugins.withId("java") {
|
plugins.withId("java") {
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
paper = "1.20.4-R0.1-SNAPSHOT"
|
paper = "1.20.4-R0.1-SNAPSHOT"
|
||||||
guice = "7.0.0"
|
guice = "7.0.0"
|
||||||
spotbugs = "4.9.3"
|
spotbugs = "4.9.3"
|
||||||
checkerqual = "3.49.4"
|
checkerqual = "3.49.3"
|
||||||
gson = "2.10"
|
gson = "2.10"
|
||||||
guava = "31.1-jre"
|
guava = "31.1-jre"
|
||||||
snakeyaml = "2.0"
|
snakeyaml = "2.0"
|
||||||
@ -15,8 +15,8 @@ log4j = "2.19.0"
|
|||||||
worldedit = "7.2.20"
|
worldedit = "7.2.20"
|
||||||
fawe = "2.13.0"
|
fawe = "2.13.0"
|
||||||
placeholderapi = "2.11.6"
|
placeholderapi = "2.11.6"
|
||||||
luckperms = "5.5"
|
luckperms = "5.4"
|
||||||
essentialsx = "2.21.1"
|
essentialsx = "2.21.0"
|
||||||
mvdwapi = "3.1.1"
|
mvdwapi = "3.1.1"
|
||||||
|
|
||||||
# Third party
|
# Third party
|
||||||
@ -35,7 +35,7 @@ serverlib = "2.3.7"
|
|||||||
# Gradle plugins
|
# Gradle plugins
|
||||||
shadow = "8.3.6"
|
shadow = "8.3.6"
|
||||||
grgit = "4.1.1"
|
grgit = "4.1.1"
|
||||||
spotless = "7.0.4"
|
spotless = "7.0.3"
|
||||||
publish = "0.32.0"
|
publish = "0.32.0"
|
||||||
runPaper = "2.3.1"
|
runPaper = "2.3.1"
|
||||||
|
|
||||||
|
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.14.2-bin.zip
|
distributionUrl=https\://services.gradle.org/distributions/gradle-8.14-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