Compare commits

..

9 Commits

Author SHA1 Message Date
936f3a36c5 Add since tags 2023-12-20 16:04:57 +00:00
31b3aca32f Fix typo
Co-authored-by: Hannes Greule <SirYwell@users.noreply.github.com>
2023-12-20 16:04:08 +00:00
8cd92c8ffa Adjust for if plot bedrock is enabled 2023-12-12 14:45:48 +00:00
d85e3f443f feat: configurable accounting for bedrock layer when setting components 2023-12-12 14:41:52 +00:00
4a45729c9e feat: add projectile-change-block flag (#4185)
- closes #4081
2023-12-12 13:53:10 +00:00
7931c0864e Update dependency org.checkerframework:checker-qual to v3.41.0 (#4265)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-12-09 10:26:00 +01:00
1456b29d93 Update fawe to v2.8.3 (#4264)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-12-09 10:25:53 +01:00
761477b76d Update dependency com.diffplug.spotless to v6.23.3 (#4263)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-12-09 10:25:46 +01:00
e61bcf905f Back to snapshot for development 2023-12-09 10:21:05 +01:00
9 changed files with 83 additions and 9 deletions

View File

@ -35,6 +35,7 @@ import com.plotsquared.core.plot.flag.implementations.DisablePhysicsFlag;
import com.plotsquared.core.plot.flag.implementations.EntityChangeBlockFlag; import com.plotsquared.core.plot.flag.implementations.EntityChangeBlockFlag;
import com.plotsquared.core.plot.flag.implementations.ExplosionFlag; import com.plotsquared.core.plot.flag.implementations.ExplosionFlag;
import com.plotsquared.core.plot.flag.implementations.InvincibleFlag; import com.plotsquared.core.plot.flag.implementations.InvincibleFlag;
import com.plotsquared.core.plot.flag.implementations.ProjectileChangeBlockFlag;
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.PlotFlagUtil; import com.plotsquared.core.util.PlotFlagUtil;
@ -358,13 +359,13 @@ public class EntityEventListener implements Listener {
if (shooter instanceof Player) { if (shooter instanceof Player) {
PlotPlayer<?> pp = BukkitUtil.adapt((Player) shooter); PlotPlayer<?> pp = BukkitUtil.adapt((Player) shooter);
if (plot == null) { if (plot == null) {
if (!pp.hasPermission(Permission.PERMISSION_ADMIN_PROJECTILE_UNOWNED)) { if (area.isRoadFlags() && !area.getRoadFlag(ProjectileChangeBlockFlag.class) && !pp.hasPermission(Permission.PERMISSION_ADMIN_PROJECTILE_UNOWNED)) {
entity.remove(); entity.remove();
event.setCancelled(true); event.setCancelled(true);
} }
return; return;
} }
if (plot.isAdded(pp.getUUID()) || pp.hasPermission(Permission.PERMISSION_ADMIN_PROJECTILE_OTHER)) { if (plot.isAdded(pp.getUUID()) || plot.getFlag(ProjectileChangeBlockFlag.class) || pp.hasPermission(Permission.PERMISSION_ADMIN_PROJECTILE_OTHER)) {
return; return;
} }
entity.remove(); entity.remove();

View File

@ -143,7 +143,7 @@ public class ClassicPlotManager extends SquarePlotManager {
classicPlotWorld, classicPlotWorld,
plot.getRegions(), plot.getRegions(),
blocks, blocks,
classicPlotWorld.getMinBuildHeight(), classicPlotWorld.getMinComponentHeight(),
classicPlotWorld.getMaxBuildHeight() - 1, classicPlotWorld.getMaxBuildHeight() - 1,
actor, actor,
queue queue
@ -204,7 +204,7 @@ public class ClassicPlotManager extends SquarePlotManager {
classicPlotWorld, classicPlotWorld,
plot.getRegions(), plot.getRegions(),
blocks, blocks,
classicPlotWorld.getMinBuildHeight(), classicPlotWorld.getMinComponentHeight(),
classicPlotWorld.PLOT_HEIGHT - 1, classicPlotWorld.PLOT_HEIGHT - 1,
actor, actor,
queue queue
@ -379,7 +379,7 @@ public class ClassicPlotManager extends SquarePlotManager {
} }
} }
int yStart = classicPlotWorld.getMinBuildHeight() + (classicPlotWorld.PLOT_BEDROCK ? 1 : 0); int yStart = classicPlotWorld.getMinComponentHeight();
if (!plot.isMerged(Direction.NORTH)) { if (!plot.isMerged(Direction.NORTH)) {
int z = bot.getZ(); int z = bot.getZ();
for (int x = bot.getX(); x < top.getX(); x++) { for (int x = bot.getX(); x < top.getX(); x++) {

View File

@ -52,6 +52,7 @@ public abstract class ClassicPlotWorld extends SquarePlotWorld {
public BlockBucket ROAD_BLOCK = new BlockBucket(BlockTypes.QUARTZ_BLOCK); public BlockBucket ROAD_BLOCK = new BlockBucket(BlockTypes.QUARTZ_BLOCK);
public boolean PLOT_BEDROCK = true; public boolean PLOT_BEDROCK = true;
public boolean PLACE_TOP_BLOCK = true; public boolean PLACE_TOP_BLOCK = true;
public boolean COMPONENT_BELOW_BEDROCK = false;
public ClassicPlotWorld( public ClassicPlotWorld(
final @NonNull String worldName, final @NonNull String worldName,
@ -129,6 +130,9 @@ public abstract class ClassicPlotWorld extends SquarePlotWorld {
), ),
new ConfigurationNode("plot.bedrock", this.PLOT_BEDROCK, TranslatableCaption.of("setup.bedrock_boolean"), new ConfigurationNode("plot.bedrock", this.PLOT_BEDROCK, TranslatableCaption.of("setup.bedrock_boolean"),
ConfigurationUtil.BOOLEAN ConfigurationUtil.BOOLEAN
),
new ConfigurationNode("world.component_below_bedrock", this.COMPONENT_BELOW_BEDROCK, TranslatableCaption.of(
"setup.component_below_bedrock_boolean"), ConfigurationUtil.BOOLEAN
)}; )};
} }
@ -150,6 +154,14 @@ public abstract class ClassicPlotWorld extends SquarePlotWorld {
this.PLACE_TOP_BLOCK = config.getBoolean("wall.place_top_block"); this.PLACE_TOP_BLOCK = config.getBoolean("wall.place_top_block");
this.WALL_HEIGHT = Math.min(getMaxGenHeight() - (PLACE_TOP_BLOCK ? 1 : 0), config.getInt("wall.height")); this.WALL_HEIGHT = Math.min(getMaxGenHeight() - (PLACE_TOP_BLOCK ? 1 : 0), config.getInt("wall.height"));
this.CLAIMED_WALL_BLOCK = createCheckedBlockBucket(config.getString("wall.block_claimed"), CLAIMED_WALL_BLOCK); this.CLAIMED_WALL_BLOCK = createCheckedBlockBucket(config.getString("wall.block_claimed"), CLAIMED_WALL_BLOCK);
this.COMPONENT_BELOW_BEDROCK = config.getBoolean("world.component_below_bedrock");
}
@Override
public int getMinComponentHeight() {
return COMPONENT_BELOW_BEDROCK && getMinGenHeight() >= getMinBuildHeight()
? getMinGenHeight() + (PLOT_BEDROCK ? 1 : 0)
: getMinBuildHeight();
} }
int schematicStartHeight() { int schematicStartHeight() {

View File

@ -1452,6 +1452,24 @@ public abstract class PlotArea implements ComponentLike {
this.defaultHome = defaultHome; this.defaultHome = defaultHome;
} }
/**
* Get the maximum height that changes to plot components (wall filling, air, all etc.) may operate to
*
* @since TODO
*/
public int getMaxComponentHeight() {
return this.maxBuildHeight;
}
/**
* Get the minimum height that changes to plot components (wall filling, air, all etc.) may operate to
*
* @since TODO
*/
public int getMinComponentHeight() {
return this.minBuildHeight;
}
/** /**
* Get the maximum height players may build in. Exclusive. * Get the maximum height players may build in. Exclusive.
*/ */

View File

@ -89,6 +89,7 @@ import com.plotsquared.core.plot.flag.implementations.PlayerInteractFlag;
import com.plotsquared.core.plot.flag.implementations.PlotTitleFlag; import com.plotsquared.core.plot.flag.implementations.PlotTitleFlag;
import com.plotsquared.core.plot.flag.implementations.PreventCreativeCopyFlag; import com.plotsquared.core.plot.flag.implementations.PreventCreativeCopyFlag;
import com.plotsquared.core.plot.flag.implementations.PriceFlag; import com.plotsquared.core.plot.flag.implementations.PriceFlag;
import com.plotsquared.core.plot.flag.implementations.ProjectileChangeBlockFlag;
import com.plotsquared.core.plot.flag.implementations.ProjectilesFlag; import com.plotsquared.core.plot.flag.implementations.ProjectilesFlag;
import com.plotsquared.core.plot.flag.implementations.PveFlag; import com.plotsquared.core.plot.flag.implementations.PveFlag;
import com.plotsquared.core.plot.flag.implementations.PvpFlag; import com.plotsquared.core.plot.flag.implementations.PvpFlag;
@ -185,6 +186,7 @@ public final class GlobalFlagContainer extends FlagContainer {
this.addFlag(NoWorldeditFlag.NO_WORLDEDIT_FALSE); this.addFlag(NoWorldeditFlag.NO_WORLDEDIT_FALSE);
this.addFlag(PlayerInteractFlag.PLAYER_INTERACT_FALSE); this.addFlag(PlayerInteractFlag.PLAYER_INTERACT_FALSE);
this.addFlag(PreventCreativeCopyFlag.PREVENT_CREATIVE_COPY_FALSE); this.addFlag(PreventCreativeCopyFlag.PREVENT_CREATIVE_COPY_FALSE);
this.addFlag(ProjectileChangeBlockFlag.PROJECTILE_CHANGE_BLOCK_FALSE);
this.addFlag(PveFlag.PVE_FALSE); this.addFlag(PveFlag.PVE_FALSE);
this.addFlag(PvpFlag.PVP_FALSE); this.addFlag(PvpFlag.PVP_FALSE);
this.addFlag(RedstoneFlag.REDSTONE_TRUE); this.addFlag(RedstoneFlag.REDSTONE_TRUE);

View File

@ -0,0 +1,39 @@
/*
* PlotSquared, a land and world management plugin for Minecraft.
* Copyright (C) IntellectualSites <https://intellectualsites.com>
* Copyright (C) IntellectualSites team and contributors
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package com.plotsquared.core.plot.flag.implementations;
import com.plotsquared.core.configuration.caption.TranslatableCaption;
import com.plotsquared.core.plot.flag.types.BooleanFlag;
import org.checkerframework.checker.nullness.qual.NonNull;
public class ProjectileChangeBlockFlag extends BooleanFlag<ProjectileChangeBlockFlag> {
public static final ProjectileChangeBlockFlag PROJECTILE_CHANGE_BLOCK_TRUE = new ProjectileChangeBlockFlag(true);
public static final ProjectileChangeBlockFlag PROJECTILE_CHANGE_BLOCK_FALSE = new ProjectileChangeBlockFlag(false);
private ProjectileChangeBlockFlag(boolean value) {
super(value, TranslatableCaption.of("flags.flag_description_projectile_change_block"));
}
@Override
protected ProjectileChangeBlockFlag flagOf(@NonNull Boolean value) {
return value ? PROJECTILE_CHANGE_BLOCK_TRUE : PROJECTILE_CHANGE_BLOCK_FALSE;
}
}

View File

@ -165,6 +165,7 @@
"setup.wall_height": "<gold>Wall height</gold>", "setup.wall_height": "<gold>Wall height</gold>",
"setup.min_gen_height": "<gold>Minimum height from which to generate (for 1.18+ can be negative).</gold>", "setup.min_gen_height": "<gold>Minimum height from which to generate (for 1.18+ can be negative).</gold>",
"setup.bedrock_boolean": "<gold>Whether a bedrock layer under the plot should be generated or not</gold>", "setup.bedrock_boolean": "<gold>Whether a bedrock layer under the plot should be generated or not</gold>",
"setup.component_below_bedrock_boolean": "<gold>Whether a component change e.g. /plot set walls should edit the bedrock layer or below</gold>",
"setup.singleplotarea_void_world": "<gold>Void world</gold>", "setup.singleplotarea_void_world": "<gold>Void world</gold>",
"plotareatype.plot_area_type_normal": "<gray>Standard plot generation</gray>", "plotareatype.plot_area_type_normal": "<gray>Standard plot generation</gray>",
"plotareatype.plot_area_type_augmented": "<gray>Plot generation with vanilla terrain</gray>", "plotareatype.plot_area_type_augmented": "<gray>Plot generation with vanilla terrain</gray>",
@ -589,6 +590,7 @@
"flags.flag_description_place": "<gray>Define a list of materials players should be able to place in the plot.</gray>", "flags.flag_description_place": "<gray>Define a list of materials players should be able to place in the plot.</gray>",
"flags.flag_description_player_interact": "<gray>Set to `true` to allow guests to interact with players in the plot.</gray>", "flags.flag_description_player_interact": "<gray>Set to `true` to allow guests to interact with players in the plot.</gray>",
"flags.flag_description_price": "<gray>Set a price for a plot. Must be a positive decimal number.</gray>", "flags.flag_description_price": "<gray>Set a price for a plot. Must be a positive decimal number.</gray>",
"flags.flag_description_projectile_change_block": "<gray>Set to `true` to allow projectiles to change blocks (tnt, etc.) on the plot.</gray>",
"flags.flag_description_pve": "<gray>Set to `true` to enable PVE inside the plot.</gray>", "flags.flag_description_pve": "<gray>Set to `true` to enable PVE inside the plot.</gray>",
"flags.flag_description_pvp": "<gray>Set to `true` to enable PVP inside the plot.</gray>", "flags.flag_description_pvp": "<gray>Set to `true` to enable PVP inside the plot.</gray>",
"flags.flag_description_redstone": "<gray>Set to `false` to disable redstone in the plot.</gray>", "flags.flag_description_redstone": "<gray>Set to `false` to disable redstone in the plot.</gray>",

View File

@ -22,7 +22,7 @@ plugins {
} }
group = "com.intellectualsites.plotsquared" group = "com.intellectualsites.plotsquared"
version = "7.2.1" version = "7.2.2-SNAPSHOT"
if (!File("$rootDir/.git").exists()) { if (!File("$rootDir/.git").exists()) {
logger.lifecycle(""" logger.lifecycle("""

View File

@ -3,7 +3,7 @@
paper = "1.20.2-R0.1-SNAPSHOT" paper = "1.20.2-R0.1-SNAPSHOT"
guice = "7.0.0" guice = "7.0.0"
spotbugs = "4.8.2" spotbugs = "4.8.2"
checkerqual = "3.40.0" checkerqual = "3.41.0"
gson = "2.10" gson = "2.10"
guava = "31.1-jre" guava = "31.1-jre"
snakeyaml = "2.0" snakeyaml = "2.0"
@ -13,7 +13,7 @@ log4j = "2.19.0"
# Plugins # Plugins
worldedit = "7.2.17" worldedit = "7.2.17"
fawe = "2.8.2" fawe = "2.8.3"
placeholderapi = "2.11.5" placeholderapi = "2.11.5"
luckperms = "5.4" luckperms = "5.4"
essentialsx = "2.20.1" essentialsx = "2.20.1"
@ -35,7 +35,7 @@ serverlib = "2.3.4"
# Gradle plugins # Gradle plugins
shadow = "8.1.1" shadow = "8.1.1"
grgit = "4.1.1" grgit = "4.1.1"
spotless = "6.23.2" spotless = "6.23.3"
nexus = "1.3.0" nexus = "1.3.0"
runPaper = "2.2.2" runPaper = "2.2.2"