mirror of
https://github.com/IntellectualSites/PlotSquared.git
synced 2025-07-13 10:54:43 +02:00
Compare commits
1 Commits
main
...
renovate/a
Author | SHA1 | Date | |
---|---|---|---|
57bd9721bc |
3
.github/renovate.json
vendored
3
.github/renovate.json
vendored
@ -2,8 +2,7 @@
|
|||||||
"$schema": "https://docs.renovatebot.com/renovate-schema.json",
|
"$schema": "https://docs.renovatebot.com/renovate-schema.json",
|
||||||
"extends": [
|
"extends": [
|
||||||
"config:recommended",
|
"config:recommended",
|
||||||
":semanticCommitsDisabled",
|
":semanticCommitsDisabled"
|
||||||
"schedule:earlyMondays"
|
|
||||||
],
|
],
|
||||||
"automerge": true,
|
"automerge": true,
|
||||||
"labels": [
|
"labels": [
|
||||||
|
@ -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;
|
||||||
@ -155,11 +152,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 +179,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 +213,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 +531,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 +597,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 +941,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 +1255,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 +1273,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 -> {
|
||||||
@ -1313,17 +1298,6 @@ public class PlayerEventListener implements Listener {
|
|||||||
//Allow all players to eat while also allowing the block place event to be fired
|
//Allow all players to eat while also allowing the block place event to be fired
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
// Process creature spawning of armor stands & end crystals here if spawned by the player in order to be able to
|
|
||||||
// reset the player's hand item if spawning needs to be cancelled.
|
|
||||||
if (type == Material.ARMOR_STAND || type == Material.END_CRYSTAL) {
|
|
||||||
Plot plot = location.getOwnedPlotAbs();
|
|
||||||
if (BukkitEntityUtil.checkEntity(type == Material.ARMOR_STAND ? EntityType.ARMOR_STAND : EntityType.ENDER_CRYSTAL,
|
|
||||||
plot)) {
|
|
||||||
event.setCancelled(true);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// Continue with normal place event checks
|
|
||||||
if (type == Material.ARMOR_STAND) {
|
if (type == Material.ARMOR_STAND) {
|
||||||
location = BukkitUtil.adapt(block.getRelative(event.getBlockFace()).getLocation());
|
location = BukkitUtil.adapt(block.getRelative(event.getBlockFace()).getLocation());
|
||||||
eventType = PlayerBlockEventType.PLACE_MISC;
|
eventType = PlayerBlockEventType.PLACE_MISC;
|
||||||
@ -1406,16 +1380,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;
|
||||||
@ -1487,16 +1451,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;
|
||||||
|
@ -354,17 +354,13 @@ public class BukkitEntityUtil {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static boolean checkEntity(Entity entity, Plot plot) {
|
public static boolean checkEntity(Entity entity, Plot plot) {
|
||||||
return checkEntity(entity.getType(), plot);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static boolean checkEntity(EntityType type, Plot plot) {
|
|
||||||
if (plot == null || !plot.hasOwner() || plot.getFlags().isEmpty() && plot.getArea()
|
if (plot == null || !plot.hasOwner() || plot.getFlags().isEmpty() && plot.getArea()
|
||||||
.getFlagContainer().getFlagMap().isEmpty()) {
|
.getFlagContainer().getFlagMap().isEmpty()) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
final com.sk89q.worldedit.world.entity.EntityType entityType =
|
final com.sk89q.worldedit.world.entity.EntityType entityType =
|
||||||
BukkitAdapter.adapt(type);
|
BukkitAdapter.adapt(entity.getType());
|
||||||
|
|
||||||
if (EntityCategories.PLAYER.contains(entityType)) {
|
if (EntityCategories.PLAYER.contains(entityType)) {
|
||||||
return false;
|
return false;
|
||||||
|
@ -51,7 +51,7 @@ public interface Caption {
|
|||||||
* @param localeHolder Local holder
|
* @param localeHolder Local holder
|
||||||
* @param tagResolvers custom tag resolvers to replace placeholders / parameters
|
* @param tagResolvers custom tag resolvers to replace placeholders / parameters
|
||||||
* @return {@link ComponentLike}
|
* @return {@link ComponentLike}
|
||||||
* @since 7.5.4
|
* @since TODO
|
||||||
*/
|
*/
|
||||||
@NonNull Component toComponent(@NonNull LocaleHolder localeHolder, @NonNull TagResolver @NonNull... tagResolvers);
|
@NonNull Component toComponent(@NonNull LocaleHolder localeHolder, @NonNull TagResolver @NonNull... tagResolvers);
|
||||||
|
|
||||||
|
@ -22,7 +22,7 @@ plugins {
|
|||||||
}
|
}
|
||||||
|
|
||||||
group = "com.intellectualsites.plotsquared"
|
group = "com.intellectualsites.plotsquared"
|
||||||
version = "7.5.5-SNAPSHOT"
|
version = "7.5.4-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.3")
|
testImplementation("org.junit.jupiter:junit-jupiter:5.13.1")
|
||||||
testRuntimeOnly("org.junit.platform:junit-platform-launcher:1.13.3")
|
testRuntimeOnly("org.junit.platform:junit-platform-launcher:1.13.1")
|
||||||
}
|
}
|
||||||
|
|
||||||
plugins.withId("java") {
|
plugins.withId("java") {
|
||||||
|
@ -3,11 +3,11 @@
|
|||||||
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.5"
|
checkerqual = "3.49.4"
|
||||||
gson = "2.10"
|
gson = "2.10"
|
||||||
guava = "31.1-jre"
|
guava = "31.1-jre"
|
||||||
snakeyaml = "2.0"
|
snakeyaml = "2.0"
|
||||||
adventure = "4.21.0"
|
adventure = "4.23.0"
|
||||||
adventure-bukkit = "4.4.0"
|
adventure-bukkit = "4.4.0"
|
||||||
log4j = "2.19.0"
|
log4j = "2.19.0"
|
||||||
|
|
||||||
@ -33,9 +33,9 @@ vault = "1.7.1"
|
|||||||
serverlib = "2.3.7"
|
serverlib = "2.3.7"
|
||||||
|
|
||||||
# Gradle plugins
|
# Gradle plugins
|
||||||
shadow = "8.3.8"
|
shadow = "8.3.6"
|
||||||
grgit = "4.1.1"
|
grgit = "4.1.1"
|
||||||
spotless = "7.1.0"
|
spotless = "7.0.4"
|
||||||
publish = "0.33.0"
|
publish = "0.33.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.3-bin.zip
|
distributionUrl=https\://services.gradle.org/distributions/gradle-8.14.2-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