Compare commits

...

8 Commits

Author SHA1 Message Date
ae340aeb2a Merge branch 'v6' into feature/v6/auto-merge-merge-cost 2023-01-21 16:39:46 +01:00
c45bbe3ec5 fix: ensure plots are fully unlinked before the clear itself is run (#3933)
* fix: ensure plots are fully unlinked before the clear itself is run

* Update Core/src/main/java/com/plotsquared/core/plot/PlotModificationManager.java

Co-authored-by: Alexander Brandes <mc.cache@web.de>
2023-01-19 09:01:06 +01:00
07e598e48f fix: account for exclusivity of max build height where requires (#3935) 2023-01-16 21:15:35 +00:00
f6f00dfcda fix: Remove chunk#isLoaded call in BukkitChunkCoordinator (#3934) 2023-01-16 17:14:20 +00:00
63a6bdc1d6 Terminate process if .git folder is not a repository (#3937)
Terminate process if folder is not a repository
2023-01-16 00:18:51 +01:00
49be6c0bb9 Merge branch 'v6' into feature/v6/auto-merge-merge-cost 2022-12-19 20:55:11 +01:00
c15e1c066d fix: Don't charge for auto merge if there is no auto merge 2022-12-18 11:00:47 +00:00
35dd4899b9 feat: add cost for the merge when using plot auto-merge
- Closes #3814
2022-10-09 15:27:35 +01:00
7 changed files with 60 additions and 23 deletions

View File

@ -239,9 +239,11 @@ public final class BukkitChunkCoordinator extends ChunkCoordinator {
* server's main thread.
*/
private void processChunk(final @NonNull Chunk chunk) {
/* Chunk#isLoaded does not necessarily return true shortly after PaperLib#getChunkAtAsync completes, but the chunk is
still loaded.
if (!chunk.isLoaded()) {
throw new IllegalArgumentException(String.format("Chunk %d;%d is is not loaded", chunk.getX(), chunk.getZ()));
}
throw new IllegalArgumentException(String.format("Chunk %d;%d is is not loaded", chunk.getX(), chunk.getZ());
}*/
if (finished) {
return;
}

View File

@ -290,10 +290,13 @@ public class Auto extends SubCommand {
}
if (this.econHandler != null && plotarea.useEconomy()) {
PlotExpression costExp = plotarea.getPrices().get("claim");
PlotExpression mergeCostExp = plotarea.getPrices().get("merge");
int size = sizeX * sizeZ;
double mergeCost = size > 1 && mergeCostExp == null ? 0d : mergeCostExp.evaluate(size);
double cost = costExp.evaluate(Settings.Limit.GLOBAL ?
player.getPlotCount() :
player.getPlotCount(plotarea.getWorldName()));
cost = (sizeX * sizeZ) * cost;
cost = size * cost + mergeCost;
if (cost > 0d) {
if (!this.econHandler.isSupported()) {
player.sendMessage(TranslatableCaption.of("economy.vault_or_consumer_null"));

View File

@ -144,7 +144,7 @@ public class ClassicPlotManager extends SquarePlotManager {
plot.getRegions(),
blocks,
classicPlotWorld.getMinBuildHeight(),
classicPlotWorld.getMaxBuildHeight(),
classicPlotWorld.getMaxBuildHeight() - 1,
actor,
queue
);
@ -175,7 +175,7 @@ public class ClassicPlotManager extends SquarePlotManager {
plot.getRegions(),
blocks,
classicPlotWorld.PLOT_HEIGHT + 1,
classicPlotWorld.getMaxBuildHeight(),
classicPlotWorld.getMaxBuildHeight() - 1,
actor,
queue
);
@ -281,7 +281,7 @@ public class ClassicPlotManager extends SquarePlotManager {
}
}
int maxY = classicPlotWorld.getMaxBuildHeight();
int maxY = classicPlotWorld.getMaxBuildHeight() - 1;
if (!plot.isMerged(Direction.NORTH)) {
int z = bottom.getZ();
for (int x = bottom.getX(); x <= top.getX(); x++) {

View File

@ -2506,7 +2506,7 @@ public class Plot {
}
}
int minHeight = getArea().getMinBuildHeight();
int maxHeight = getArea().getMaxBuildHeight();
int maxHeight = getArea().getMaxBuildHeight() - 1;
Location gtopabs = this.area.getPlotAbs(top).getTopAbs();
Location gbotabs = this.area.getPlotAbs(bot).getBottomAbs();
visited.addAll(Lists.newArrayList((Iterable<? extends PlotId>) PlotId.PlotRangeIterator.range(bot, top)));

View File

@ -220,17 +220,6 @@ public final class PlotModificationManager {
if (isDelete) {
this.removeSign();
}
PlotUnlinkEvent event = PlotSquared.get().getEventDispatcher()
.callUnlink(
this.plot.getArea(),
this.plot,
true,
!isDelete,
isDelete ? PlotUnlinkEvent.REASON.DELETE : PlotUnlinkEvent.REASON.CLEAR
);
if (event.getEventResult() != Result.DENY && this.unlinkPlot(event.isCreateRoad(), event.isCreateSign())) {
PlotSquared.get().getEventDispatcher().callPostUnlink(plot, event.getReason());
}
final PlotManager manager = this.plot.getArea().getPlotManager();
Runnable run = new Runnable() {
@Override
@ -281,7 +270,21 @@ public final class PlotModificationManager {
manager.clearPlot(current, this, actor, null);
}
};
run.run();
PlotUnlinkEvent event = PlotSquared.get().getEventDispatcher()
.callUnlink(
this.plot.getArea(),
this.plot,
true,
!isDelete,
isDelete ? PlotUnlinkEvent.REASON.DELETE : PlotUnlinkEvent.REASON.CLEAR
);
if (event.getEventResult() != Result.DENY) {
if (this.unlinkPlot(event.isCreateRoad(), event.isCreateSign(), run)) {
PlotSquared.get().getEventDispatcher().callPostUnlink(plot, event.getReason());
}
} else {
run.run();
}
return true;
}
@ -321,7 +324,23 @@ public final class PlotModificationManager {
* @return success/!cancelled
*/
public boolean unlinkPlot(final boolean createRoad, final boolean createSign) {
return unlinkPlot(createRoad, createSign, null);
}
/**
* Unlink the plot and all connected plots.
*
* @param createRoad whether to recreate road
* @param createSign whether to recreate signs
* @param whenDone Task to run when unlink is complete
* @return success/!cancelled
* @since TODO
*/
public boolean unlinkPlot(final boolean createRoad, final boolean createSign, final Runnable whenDone) {
if (!this.plot.isMerged()) {
if (whenDone != null) {
whenDone.run();
}
return false;
}
final Set<Plot> plots = this.plot.getConnectedPlots();
@ -366,14 +385,17 @@ public final class PlotModificationManager {
current.getPlotModificationManager().setSign(PlayerManager.resolveName(current.getOwnerAbs()).getComponent(
LocaleHolder.console()));
}
if (whenDone != null) {
TaskManager.runTask(whenDone);
}
}));
} else if (whenDone != null) {
queue.setCompleteTask(whenDone);
}
if (createRoad) {
manager.finishPlotUnlink(ids, queue);
}
if (queue != null) {
queue.enqueue();
}
queue.enqueue();
return true;
}

View File

@ -106,7 +106,7 @@ public class WEManager {
.getTrusted().contains(uuid))) && !plot.getFlag(NoWorldeditFlag.class)) {
for (CuboidRegion region : plot.getRegions()) {
BlockVector3 pos1 = region.getMinimumPoint().withY(area.getMinBuildHeight());
BlockVector3 pos2 = region.getMaximumPoint().withY(area.getMaxBuildHeight());
BlockVector3 pos2 = region.getMaximumPoint().withY(area.getMaxBuildHeight() - 1);
CuboidRegion copy = new CuboidRegion(pos1, pos2);
regions.add(copy);
}

View File

@ -20,6 +20,16 @@ plugins {
group = "com.plotsquared"
version = "6.10.9-SNAPSHOT"
if (!File("$rootDir/.git").exists()) {
logger.lifecycle("""
**************************************************************************************
You need to fork and clone this repository! Don't download a .zip file.
If you need assistance, consult the GitHub docs: https://docs.github.com/get-started/quickstart/fork-a-repo
**************************************************************************************
""".trimIndent()
).also { kotlin.system.exitProcess(1) }
}
subprojects {
group = rootProject.group
version = rootProject.version