mirror of
https://github.com/IntellectualSites/PlotSquared.git
synced 2025-07-03 22:24:43 +02:00
Compare commits
8 Commits
renovate/a
...
refactor/v
Author | SHA1 | Date | |
---|---|---|---|
79121603ee | |||
bbb9965526 | |||
bf646be482 | |||
cc7e17960b | |||
3c75b170f0 | |||
a79c474957 | |||
4bb480a238 | |||
9ffa935c0c |
4
.github/ISSUE_TEMPLATE/bug_report.yml
vendored
4
.github/ISSUE_TEMPLATE/bug_report.yml
vendored
@ -27,14 +27,12 @@ body:
|
|||||||
description: Which server version version you using? If your server version is not listed, it is not supported. Update to a supported version first.
|
description: Which server version version you using? If your server version is not listed, it is not supported. Update to a supported version first.
|
||||||
multiple: false
|
multiple: false
|
||||||
options:
|
options:
|
||||||
|
- '1.19'
|
||||||
- '1.18.2'
|
- '1.18.2'
|
||||||
- '1.18.1'
|
- '1.18.1'
|
||||||
- '1.18'
|
- '1.18'
|
||||||
- '1.17.1'
|
- '1.17.1'
|
||||||
- '1.16.5'
|
- '1.16.5'
|
||||||
- '1.15.2'
|
|
||||||
- '1.14.4'
|
|
||||||
- '1.13.2'
|
|
||||||
validations:
|
validations:
|
||||||
required: true
|
required: true
|
||||||
|
|
||||||
|
@ -21,20 +21,20 @@ dependencies {
|
|||||||
api(projects.plotSquaredCore)
|
api(projects.plotSquaredCore)
|
||||||
|
|
||||||
// Metrics
|
// Metrics
|
||||||
implementation(libs.bstats)
|
implementation("org.bstats:bstats-bukkit")
|
||||||
|
|
||||||
// Paper
|
// Paper
|
||||||
compileOnly(libs.paper)
|
compileOnly(libs.paper)
|
||||||
implementation(libs.paperlib)
|
implementation("io.papermc:paperlib")
|
||||||
|
|
||||||
// Plugins
|
// Plugins
|
||||||
compileOnly(libs.worldeditBukkit) {
|
compileOnly(libs.worldeditBukkit) {
|
||||||
exclude(group = "org.bukkit")
|
exclude(group = "org.bukkit")
|
||||||
exclude(group = "org.spigotmc")
|
exclude(group = "org.spigotmc")
|
||||||
}
|
}
|
||||||
compileOnly(libs.fastasyncworldeditBukkit) { isTransitive = false }
|
compileOnly("com.fastasyncworldedit:FastAsyncWorldEdit-Bukkit") { isTransitive = false }
|
||||||
testImplementation(libs.fastasyncworldeditBukkit) { isTransitive = false }
|
testImplementation("com.fastasyncworldedit:FastAsyncWorldEdit-Bukkit") { isTransitive = false }
|
||||||
compileOnly(libs.vault) {
|
compileOnly("com.github.MilkBowl:VaultAPI") {
|
||||||
exclude(group = "org.bukkit")
|
exclude(group = "org.bukkit")
|
||||||
}
|
}
|
||||||
compileOnly(libs.placeholderapi)
|
compileOnly(libs.placeholderapi)
|
||||||
@ -44,15 +44,15 @@ dependencies {
|
|||||||
|
|
||||||
// Other libraries
|
// Other libraries
|
||||||
implementation(libs.squirrelid) { isTransitive = false }
|
implementation(libs.squirrelid) { isTransitive = false }
|
||||||
implementation(libs.serverlib)
|
implementation("dev.notmyfault.serverlib:ServerLib")
|
||||||
|
|
||||||
// Our libraries
|
// Our libraries
|
||||||
implementation(libs.arkitektonika)
|
implementation(libs.arkitektonika)
|
||||||
implementation(libs.http4j)
|
implementation(libs.http4j)
|
||||||
implementation(libs.paster)
|
implementation("com.intellectualsites.paster:Paster")
|
||||||
|
|
||||||
// Adventure
|
// Adventure
|
||||||
implementation(libs.adventurePlatformBukkit)
|
implementation("net.kyori:adventure-platform-bukkit")
|
||||||
}
|
}
|
||||||
|
|
||||||
tasks.processResources {
|
tasks.processResources {
|
||||||
|
@ -112,30 +112,7 @@ public class BukkitPlotGenerator extends ChunkGenerator
|
|||||||
@Override
|
@Override
|
||||||
public @NonNull List<BlockPopulator> getDefaultPopulators(@NonNull World world) {
|
public @NonNull List<BlockPopulator> getDefaultPopulators(@NonNull World world) {
|
||||||
try {
|
try {
|
||||||
if (!this.loaded) {
|
checkLoaded(world);
|
||||||
String name = world.getName();
|
|
||||||
PlotSquared.get().loadWorld(name, this);
|
|
||||||
final Set<PlotArea> areas = this.plotAreaManager.getPlotAreasSet(name);
|
|
||||||
if (!areas.isEmpty()) {
|
|
||||||
PlotArea area = areas.iterator().next();
|
|
||||||
if (!area.isMobSpawning()) {
|
|
||||||
if (!area.isSpawnEggs()) {
|
|
||||||
world.setSpawnFlags(false, false);
|
|
||||||
}
|
|
||||||
world.setAmbientSpawnLimit(0);
|
|
||||||
world.setAnimalSpawnLimit(0);
|
|
||||||
world.setMonsterSpawnLimit(0);
|
|
||||||
world.setWaterAnimalSpawnLimit(0);
|
|
||||||
} else {
|
|
||||||
world.setSpawnFlags(true, true);
|
|
||||||
world.setAmbientSpawnLimit(-1);
|
|
||||||
world.setAnimalSpawnLimit(-1);
|
|
||||||
world.setMonsterSpawnLimit(-1);
|
|
||||||
world.setWaterAnimalSpawnLimit(-1);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
this.loaded = true;
|
|
||||||
}
|
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
@ -154,6 +131,39 @@ public class BukkitPlotGenerator extends ChunkGenerator
|
|||||||
return toAdd;
|
return toAdd;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private synchronized void checkLoaded(@NonNull World world) {
|
||||||
|
// Do not attempt to load configurations until WorldEdit has a platform ready.
|
||||||
|
if (!PlotSquared.get().isWeInitialised()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (!this.loaded) {
|
||||||
|
String name = world.getName();
|
||||||
|
PlotSquared.get().loadWorld(name, this);
|
||||||
|
final Set<PlotArea> areas = this.plotAreaManager.getPlotAreasSet(name);
|
||||||
|
if (!areas.isEmpty()) {
|
||||||
|
PlotArea area = areas.iterator().next();
|
||||||
|
if (!area.isMobSpawning()) {
|
||||||
|
if (!area.isSpawnEggs()) {
|
||||||
|
world.setSpawnFlags(false, false);
|
||||||
|
}
|
||||||
|
setSpawnLimits(world, 0);
|
||||||
|
} else {
|
||||||
|
world.setSpawnFlags(true, true);
|
||||||
|
setSpawnLimits(world, -1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
this.loaded = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@SuppressWarnings("deprecation")
|
||||||
|
private void setSpawnLimits(@NonNull World world, int limit) {
|
||||||
|
world.setAmbientSpawnLimit(limit);
|
||||||
|
world.setAnimalSpawnLimit(limit);
|
||||||
|
world.setMonsterSpawnLimit(limit);
|
||||||
|
world.setWaterAnimalSpawnLimit(limit);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public @NonNull ChunkData generateChunkData(
|
public @NonNull ChunkData generateChunkData(
|
||||||
@NonNull World world, @NonNull Random random, int x, int z,
|
@NonNull World world, @NonNull Random random, int x, int z,
|
||||||
@ -201,9 +211,7 @@ public class BukkitPlotGenerator extends ChunkGenerator
|
|||||||
private void generate(BlockVector2 loc, World world, ScopedQueueCoordinator result) {
|
private void generate(BlockVector2 loc, World world, ScopedQueueCoordinator result) {
|
||||||
// Load if improperly loaded
|
// Load if improperly loaded
|
||||||
if (!this.loaded) {
|
if (!this.loaded) {
|
||||||
String name = world.getName();
|
checkLoaded(world);
|
||||||
PlotSquared.get().loadWorld(name, this);
|
|
||||||
this.loaded = true;
|
|
||||||
}
|
}
|
||||||
// Process the chunk
|
// Process the chunk
|
||||||
if (ChunkManager.preProcessChunk(loc, result)) {
|
if (ChunkManager.preProcessChunk(loc, result)) {
|
||||||
|
@ -72,6 +72,7 @@ import net.kyori.adventure.text.minimessage.Template;
|
|||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.GameMode;
|
import org.bukkit.GameMode;
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
|
import org.bukkit.Tag;
|
||||||
import org.bukkit.block.Block;
|
import org.bukkit.block.Block;
|
||||||
import org.bukkit.block.BlockFace;
|
import org.bukkit.block.BlockFace;
|
||||||
import org.bukkit.block.BlockState;
|
import org.bukkit.block.BlockState;
|
||||||
@ -113,11 +114,20 @@ import org.checkerframework.checker.nullness.qual.NonNull;
|
|||||||
import java.util.Iterator;
|
import java.util.Iterator;
|
||||||
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 BlockEventListener implements Listener {
|
public class BlockEventListener implements Listener {
|
||||||
|
|
||||||
|
private static final Set<Material> PISTONS = Set.of(
|
||||||
|
Material.PISTON,
|
||||||
|
Material.STICKY_PISTON
|
||||||
|
);
|
||||||
|
private static final Set<Material> PHYSICS_BLOCKS = Set.of(
|
||||||
|
Material.TURTLE_EGG,
|
||||||
|
Material.TURTLE_SPAWN_EGG
|
||||||
|
);
|
||||||
private final PlotAreaManager plotAreaManager;
|
private final PlotAreaManager plotAreaManager;
|
||||||
private final WorldEdit worldEdit;
|
private final WorldEdit worldEdit;
|
||||||
|
|
||||||
@ -223,48 +233,31 @@ public class BlockEventListener implements Listener {
|
|||||||
plot.debug("Prevented block physics and resent block change because disable-physics = true");
|
plot.debug("Prevented block physics and resent block change because disable-physics = true");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
switch (event.getChangedType()) {
|
if (event.getChangedType() == Material.COMPARATOR) {
|
||||||
case COMPARATOR: {
|
if (!plot.getFlag(RedstoneFlag.class)) {
|
||||||
if (!plot.getFlag(RedstoneFlag.class)) {
|
event.setCancelled(true);
|
||||||
event.setCancelled(true);
|
plot.debug("Prevented comparator update because redstone = false");
|
||||||
plot.debug("Prevented comparator update because redstone = false");
|
|
||||||
}
|
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
case ANVIL:
|
return;
|
||||||
case DRAGON_EGG:
|
}
|
||||||
case GRAVEL:
|
if (PHYSICS_BLOCKS.contains(event.getChangedType())) {
|
||||||
case SAND:
|
if (plot.getFlag(DisablePhysicsFlag.class)) {
|
||||||
case TURTLE_EGG:
|
event.setCancelled(true);
|
||||||
case TURTLE_HELMET:
|
plot.debug("Prevented block physics because disable-physics = true");
|
||||||
case TURTLE_SPAWN_EGG: {
|
|
||||||
if (plot.getFlag(DisablePhysicsFlag.class)) {
|
|
||||||
event.setCancelled(true);
|
|
||||||
plot.debug("Prevented block physics because disable-physics = true");
|
|
||||||
}
|
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
default:
|
return;
|
||||||
if (Settings.Redstone.DETECT_INVALID_EDGE_PISTONS) {
|
}
|
||||||
switch (block.getType()) {
|
if (Settings.Redstone.DETECT_INVALID_EDGE_PISTONS) {
|
||||||
case PISTON, STICKY_PISTON -> {
|
if (PISTONS.contains(block.getType())) {
|
||||||
org.bukkit.block.data.Directional piston = (org.bukkit.block.data.Directional) block.getBlockData();
|
org.bukkit.block.data.Directional piston = (org.bukkit.block.data.Directional) block.getBlockData();
|
||||||
switch (piston.getFacing()) {
|
final BlockFace facing = piston.getFacing();
|
||||||
case EAST -> location = location.add(1, 0, 0);
|
location = location.add(facing.getModX(), facing.getModY(), facing.getModZ());
|
||||||
case SOUTH -> location = location.add(-1, 0, 0);
|
Plot newPlot = area.getOwnedPlotAbs(location);
|
||||||
case WEST -> location = location.add(0, 0, 1);
|
if (!plot.equals(newPlot)) {
|
||||||
case NORTH -> location = location.add(0, 0, -1);
|
event.setCancelled(true);
|
||||||
}
|
plot.debug("Prevented piston update because of invalid edge piston detection");
|
||||||
Plot newPlot = area.getOwnedPlotAbs(location);
|
|
||||||
if (!plot.equals(newPlot)) {
|
|
||||||
event.setCancelled(true);
|
|
||||||
plot.debug("Prevented piston update because of invalid edge piston detection");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
break;
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -555,21 +548,18 @@ public class BlockEventListener implements Listener {
|
|||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
switch (event.getNewState().getType()) {
|
if (Tag.SNOW.isTagged(event.getNewState().getType())) {
|
||||||
case SNOW:
|
if (!plot.getFlag(SnowFormFlag.class)) {
|
||||||
case SNOW_BLOCK:
|
plot.debug("Snow could not form because snow-form = false");
|
||||||
if (!plot.getFlag(SnowFormFlag.class)) {
|
event.setCancelled(true);
|
||||||
plot.debug("Snow could not form because snow-form = false");
|
}
|
||||||
event.setCancelled(true);
|
return;
|
||||||
}
|
}
|
||||||
return;
|
if (Tag.ICE.isTagged(event.getNewState().getType())) {
|
||||||
case ICE:
|
if (!plot.getFlag(IceFormFlag.class)) {
|
||||||
case FROSTED_ICE:
|
plot.debug("Ice could not form because ice-form = false");
|
||||||
case PACKED_ICE:
|
event.setCancelled(true);
|
||||||
if (!plot.getFlag(IceFormFlag.class)) {
|
}
|
||||||
plot.debug("Ice could not form because ice-form = false");
|
|
||||||
event.setCancelled(true);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -590,18 +580,12 @@ public class BlockEventListener implements Listener {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
Class<? extends BooleanFlag<?>> flag;
|
Class<? extends BooleanFlag<?>> flag;
|
||||||
switch (event.getNewState().getType()) {
|
if (Tag.SNOW.isTagged(event.getNewState().getType())) {
|
||||||
case SNOW:
|
flag = SnowFormFlag.class;
|
||||||
case SNOW_BLOCK:
|
} else if (Tag.ICE.isTagged(event.getNewState().getType())) {
|
||||||
flag = SnowFormFlag.class;
|
flag = IceFormFlag.class;
|
||||||
break;
|
} else {
|
||||||
case ICE:
|
return;
|
||||||
case FROSTED_ICE:
|
|
||||||
case PACKED_ICE:
|
|
||||||
flag = IceFormFlag.class;
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
return; // other blocks are ignored by this event
|
|
||||||
}
|
}
|
||||||
boolean allowed = plot.getFlag(flag);
|
boolean allowed = plot.getFlag(flag);
|
||||||
Entity entity = event.getEntity();
|
Entity entity = event.getEntity();
|
||||||
@ -705,50 +689,33 @@ public class BlockEventListener implements Listener {
|
|||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
switch (block.getType()) {
|
Material blockType = block.getType();
|
||||||
case ICE:
|
if (Tag.ICE.isTagged(blockType)) {
|
||||||
if (!plot.getFlag(IceMeltFlag.class)) {
|
if (!plot.getFlag(IceMeltFlag.class)) {
|
||||||
plot.debug("Ice could not melt because ice-melt = false");
|
plot.debug("Ice could not melt because ice-melt = false");
|
||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
}
|
}
|
||||||
break;
|
return;
|
||||||
case SNOW:
|
}
|
||||||
if (!plot.getFlag(SnowMeltFlag.class)) {
|
if (Tag.SNOW.isTagged(blockType)) {
|
||||||
plot.debug("Snow could not melt because snow-melt = false");
|
if (!plot.getFlag(SnowMeltFlag.class)) {
|
||||||
event.setCancelled(true);
|
plot.debug("Snow could not melt because snow-melt = false");
|
||||||
}
|
event.setCancelled(true);
|
||||||
break;
|
}
|
||||||
case FARMLAND:
|
return;
|
||||||
if (!plot.getFlag(SoilDryFlag.class)) {
|
}
|
||||||
plot.debug("Soil could not dry because soil-dry = false");
|
if (blockType == Material.FARMLAND) {
|
||||||
event.setCancelled(true);
|
if (!plot.getFlag(SoilDryFlag.class)) {
|
||||||
}
|
plot.debug("Soil could not dry because soil-dry = false");
|
||||||
break;
|
event.setCancelled(true);
|
||||||
case TUBE_CORAL_BLOCK:
|
}
|
||||||
case BRAIN_CORAL_BLOCK:
|
return;
|
||||||
case BUBBLE_CORAL_BLOCK:
|
}
|
||||||
case FIRE_CORAL_BLOCK:
|
if (Tag.CORAL_BLOCKS.isTagged(blockType) || Tag.CORALS.isTagged(blockType)) {
|
||||||
case HORN_CORAL_BLOCK:
|
if (!plot.getFlag(CoralDryFlag.class)) {
|
||||||
case TUBE_CORAL:
|
plot.debug("Coral could not dry because coral-dry = false");
|
||||||
case BRAIN_CORAL:
|
event.setCancelled(true);
|
||||||
case BUBBLE_CORAL:
|
}
|
||||||
case FIRE_CORAL:
|
|
||||||
case HORN_CORAL:
|
|
||||||
case TUBE_CORAL_FAN:
|
|
||||||
case BRAIN_CORAL_FAN:
|
|
||||||
case BUBBLE_CORAL_FAN:
|
|
||||||
case FIRE_CORAL_FAN:
|
|
||||||
case HORN_CORAL_FAN:
|
|
||||||
case BRAIN_CORAL_WALL_FAN:
|
|
||||||
case BUBBLE_CORAL_WALL_FAN:
|
|
||||||
case FIRE_CORAL_WALL_FAN:
|
|
||||||
case HORN_CORAL_WALL_FAN:
|
|
||||||
case TUBE_CORAL_WALL_FAN:
|
|
||||||
if (!plot.getFlag(CoralDryFlag.class)) {
|
|
||||||
plot.debug("Coral could not dry because coral-dry = false");
|
|
||||||
event.setCancelled(true);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -33,6 +33,7 @@ import com.plotsquared.core.plot.Plot;
|
|||||||
import com.plotsquared.core.plot.PlotArea;
|
import com.plotsquared.core.plot.PlotArea;
|
||||||
import com.plotsquared.core.plot.flag.implementations.CopperOxideFlag;
|
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 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;
|
||||||
@ -46,11 +47,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() {
|
||||||
}
|
}
|
||||||
@ -155,27 +176,11 @@ public class BlockEventListener117 implements Listener {
|
|||||||
if (plot == null) {
|
if (plot == null) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
switch (event.getNewState().getType()) {
|
if (COPPER_OXIDIZING.contains(event.getNewState().getType())) {
|
||||||
case COPPER_BLOCK:
|
if (!plot.getFlag(CopperOxideFlag.class)) {
|
||||||
case EXPOSED_COPPER:
|
plot.debug("Copper could not oxide because copper-oxide = false");
|
||||||
case WEATHERED_COPPER:
|
event.setCancelled(true);
|
||||||
case OXIDIZED_COPPER:
|
}
|
||||||
case CUT_COPPER:
|
|
||||||
case EXPOSED_CUT_COPPER:
|
|
||||||
case WEATHERED_CUT_COPPER:
|
|
||||||
case OXIDIZED_CUT_COPPER:
|
|
||||||
case CUT_COPPER_STAIRS:
|
|
||||||
case EXPOSED_CUT_COPPER_STAIRS:
|
|
||||||
case WEATHERED_CUT_COPPER_STAIRS:
|
|
||||||
case OXIDIZED_CUT_COPPER_STAIRS:
|
|
||||||
case CUT_COPPER_SLAB:
|
|
||||||
case EXPOSED_CUT_COPPER_SLAB:
|
|
||||||
case WEATHERED_CUT_COPPER_SLAB:
|
|
||||||
case OXIDIZED_CUT_COPPER_SLAB:
|
|
||||||
if (!plot.getFlag(CopperOxideFlag.class)) {
|
|
||||||
plot.debug("Copper could not oxide because copper-oxide = false");
|
|
||||||
event.setCancelled(true);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -208,7 +208,7 @@ public class EntityEventListener implements Listener {
|
|||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (BukkitEntityUtil.checkEntity(entity, plot)) {
|
if (BukkitEntityUtil.checkEntity(entity, plot.getBasePlot(false))) {
|
||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -131,17 +131,17 @@ public class EntitySpawnListener implements Listener {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
Plot plot = location.getOwnedPlotAbs();
|
Plot plot = location.getOwnedPlotAbs();
|
||||||
|
EntityType type = entity.getType();
|
||||||
if (plot == null) {
|
if (plot == null) {
|
||||||
EntityType type = entity.getType();
|
|
||||||
if (!area.isMobSpawning()) {
|
if (!area.isMobSpawning()) {
|
||||||
switch (type) {
|
if (type == EntityType.PLAYER) {
|
||||||
case DROPPED_ITEM:
|
return;
|
||||||
if (Settings.Enabled_Components.KILL_ROAD_ITEMS) {
|
}
|
||||||
event.setCancelled(true);
|
if (type == EntityType.DROPPED_ITEM) {
|
||||||
return;
|
if (Settings.Enabled_Components.KILL_ROAD_ITEMS) {
|
||||||
}
|
event.setCancelled(true);
|
||||||
case PLAYER:
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (type.isAlive()) {
|
if (type.isAlive()) {
|
||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
@ -155,15 +155,16 @@ public class EntitySpawnListener implements Listener {
|
|||||||
if (Settings.Done.RESTRICT_BUILDING && DoneFlag.isDone(plot)) {
|
if (Settings.Done.RESTRICT_BUILDING && DoneFlag.isDone(plot)) {
|
||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
}
|
}
|
||||||
switch (entity.getType()) {
|
if (type == EntityType.ENDER_CRYSTAL) {
|
||||||
case ENDER_CRYSTAL:
|
if (BukkitEntityUtil.checkEntity(entity, plot)) {
|
||||||
if (BukkitEntityUtil.checkEntity(entity, plot)) {
|
event.setCancelled(true);
|
||||||
event.setCancelled(true);
|
}
|
||||||
}
|
return;
|
||||||
case SHULKER:
|
}
|
||||||
if (!entity.hasMetadata("shulkerPlot")) {
|
if (type == EntityType.SHULKER) {
|
||||||
entity.setMetadata("shulkerPlot", new FixedMetadataValue((Plugin) PlotSquared.platform(), plot.getId()));
|
if (!entity.hasMetadata("shulkerPlot")) {
|
||||||
}
|
entity.setMetadata("shulkerPlot", new FixedMetadataValue((Plugin) PlotSquared.platform(), plot.getId()));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -237,15 +237,15 @@ public class PaperListener implements Listener {
|
|||||||
if (plot == null) {
|
if (plot == null) {
|
||||||
EntityType type = event.getType();
|
EntityType type = event.getType();
|
||||||
if (!area.isMobSpawning()) {
|
if (!area.isMobSpawning()) {
|
||||||
switch (type) {
|
if (type == EntityType.PLAYER) {
|
||||||
case DROPPED_ITEM:
|
return;
|
||||||
if (Settings.Enabled_Components.KILL_ROAD_ITEMS) {
|
}
|
||||||
event.setShouldAbortSpawn(true);
|
if (type == EntityType.DROPPED_ITEM) {
|
||||||
event.setCancelled(true);
|
if (Settings.Enabled_Components.KILL_ROAD_ITEMS) {
|
||||||
return;
|
event.setShouldAbortSpawn(true);
|
||||||
}
|
event.setCancelled(true);
|
||||||
case PLAYER:
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (type.isAlive()) {
|
if (type.isAlive()) {
|
||||||
event.setShouldAbortSpawn(true);
|
event.setShouldAbortSpawn(true);
|
||||||
|
@ -89,6 +89,7 @@ import org.bukkit.Bukkit;
|
|||||||
import org.bukkit.ChatColor;
|
import org.bukkit.ChatColor;
|
||||||
import org.bukkit.FluidCollisionMode;
|
import org.bukkit.FluidCollisionMode;
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
|
import org.bukkit.Tag;
|
||||||
import org.bukkit.block.Block;
|
import org.bukkit.block.Block;
|
||||||
import org.bukkit.block.BlockFace;
|
import org.bukkit.block.BlockFace;
|
||||||
import org.bukkit.block.BlockState;
|
import org.bukkit.block.BlockState;
|
||||||
@ -166,6 +167,20 @@ import java.util.regex.Pattern;
|
|||||||
@SuppressWarnings("unused")
|
@SuppressWarnings("unused")
|
||||||
public class PlayerEventListener extends PlotListener implements Listener {
|
public class PlayerEventListener extends PlotListener implements Listener {
|
||||||
|
|
||||||
|
private static final Set<Material> MINECARTS = Set.of(
|
||||||
|
Material.MINECART,
|
||||||
|
Material.TNT_MINECART,
|
||||||
|
Material.CHEST_MINECART,
|
||||||
|
Material.COMMAND_BLOCK_MINECART,
|
||||||
|
Material.FURNACE_MINECART,
|
||||||
|
Material.HOPPER_MINECART
|
||||||
|
);
|
||||||
|
private static final Set<Material> BOOKS = Set.of(
|
||||||
|
Material.BOOK,
|
||||||
|
Material.KNOWLEDGE_BOOK,
|
||||||
|
Material.WRITABLE_BOOK,
|
||||||
|
Material.WRITTEN_BOOK
|
||||||
|
);
|
||||||
private final EventDispatcher eventDispatcher;
|
private final EventDispatcher eventDispatcher;
|
||||||
private final WorldEdit worldEdit;
|
private final WorldEdit worldEdit;
|
||||||
private final PlotAreaManager plotAreaManager;
|
private final PlotAreaManager plotAreaManager;
|
||||||
@ -837,10 +852,10 @@ public class PlayerEventListener extends PlotListener implements Listener {
|
|||||||
if ((slot > 8) || !event.getEventName().equals("InventoryCreativeEvent")) {
|
if ((slot > 8) || !event.getEventName().equals("InventoryCreativeEvent")) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
ItemStack current = inv.getItemInHand();
|
ItemStack oldItem = inv.getItemInHand();
|
||||||
|
ItemMeta oldMeta = oldItem.getItemMeta();
|
||||||
ItemStack newItem = event.getCursor();
|
ItemStack newItem = event.getCursor();
|
||||||
ItemMeta newMeta = newItem.getItemMeta();
|
ItemMeta newMeta = newItem.getItemMeta();
|
||||||
ItemMeta oldMeta = newItem.getItemMeta();
|
|
||||||
|
|
||||||
if (event.getClick() == ClickType.CREATIVE) {
|
if (event.getClick() == ClickType.CREATIVE) {
|
||||||
final Plot plot = pp.getCurrentPlot();
|
final Plot plot = pp.getCurrentPlot();
|
||||||
@ -880,34 +895,26 @@ public class PlayerEventListener extends PlotListener implements Listener {
|
|||||||
oldLore = lore.toString();
|
oldLore = lore.toString();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (!"[(+NBT)]".equals(newLore) || (current.equals(newItem) && newLore.equals(oldLore))) {
|
Material itemType = newItem.getType();
|
||||||
switch (newItem.getType()) {
|
if (!"[(+NBT)]".equals(newLore) || (oldItem.equals(newItem) && newLore.equals(oldLore))) {
|
||||||
case LEGACY_BANNER:
|
if (newMeta == null || (itemType != Material.LEGACY_BANNER && itemType != Material.PLAYER_HEAD)) {
|
||||||
case PLAYER_HEAD:
|
return;
|
||||||
if (newMeta != null) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
default:
|
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Block block = player.getTargetBlock(null, 7);
|
Block block = player.getTargetBlock(null, 7);
|
||||||
org.bukkit.block.BlockState state = block.getState();
|
org.bukkit.block.BlockState state = block.getState();
|
||||||
Material stateType = state.getType();
|
Material stateType = state.getType();
|
||||||
Material itemType = newItem.getType();
|
|
||||||
if (stateType != itemType) {
|
if (stateType != itemType) {
|
||||||
switch (stateType) {
|
if (stateType == Material.LEGACY_WALL_BANNER || stateType == Material.LEGACY_STANDING_BANNER) {
|
||||||
case LEGACY_STANDING_BANNER:
|
if (itemType != Material.LEGACY_BANNER) {
|
||||||
case LEGACY_WALL_BANNER:
|
|
||||||
if (itemType == Material.LEGACY_BANNER) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case LEGACY_SKULL:
|
|
||||||
if (itemType == Material.LEGACY_SKULL_ITEM) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
default:
|
|
||||||
return;
|
return;
|
||||||
|
}
|
||||||
|
} else if (stateType == Material.LEGACY_SKULL) {
|
||||||
|
if (itemType != Material.LEGACY_SKULL_ITEM) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Location location = BukkitUtil.adapt(state.getLocation());
|
Location location = BukkitUtil.adapt(state.getLocation());
|
||||||
@ -946,7 +953,7 @@ public class PlayerEventListener extends PlotListener implements Listener {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (cancelled) {
|
if (cancelled) {
|
||||||
if ((current.getType() == newItem.getType()) && (current.getDurability() == newItem
|
if ((oldItem.getType() == newItem.getType()) && (oldItem.getDurability() == newItem
|
||||||
.getDurability())) {
|
.getDurability())) {
|
||||||
event.setCursor(
|
event.setCursor(
|
||||||
new ItemStack(newItem.getType(), newItem.getAmount(), newItem.getDurability()));
|
new ItemStack(newItem.getType(), newItem.getAmount(), newItem.getDurability()));
|
||||||
@ -1133,14 +1140,21 @@ public class PlayerEventListener extends PlotListener implements Listener {
|
|||||||
//Allow all players to eat while also allowing the block place event ot be fired
|
//Allow all players to eat while also allowing the block place event ot be fired
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
switch (type) {
|
if (type == Material.ARMOR_STAND) {
|
||||||
case ACACIA_BOAT, BIRCH_BOAT, CHEST_MINECART, COMMAND_BLOCK_MINECART, DARK_OAK_BOAT, FURNACE_MINECART, HOPPER_MINECART, JUNGLE_BOAT, MINECART, OAK_BOAT, SPRUCE_BOAT, TNT_MINECART -> eventType = PlayerBlockEventType.PLACE_VEHICLE;
|
location = BukkitUtil.adapt(block.getRelative(event.getBlockFace()).getLocation());
|
||||||
case FIREWORK_ROCKET, FIREWORK_STAR -> eventType = PlayerBlockEventType.SPAWN_MOB;
|
eventType = PlayerBlockEventType.PLACE_MISC;
|
||||||
case BOOK, KNOWLEDGE_BOOK, WRITABLE_BOOK, WRITTEN_BOOK -> eventType = PlayerBlockEventType.READ;
|
}
|
||||||
case ARMOR_STAND -> {
|
if (Tag.ITEMS_BOATS.isTagged(type) || MINECARTS.contains(type)) {
|
||||||
location = BukkitUtil.adapt(block.getRelative(event.getBlockFace()).getLocation());
|
eventType = PlayerBlockEventType.PLACE_VEHICLE;
|
||||||
eventType = PlayerBlockEventType.PLACE_MISC;
|
break;
|
||||||
}
|
}
|
||||||
|
if (type == Material.FIREWORK_ROCKET || type == Material.FIREWORK_STAR) {
|
||||||
|
eventType = PlayerBlockEventType.SPAWN_MOB;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if (BOOKS.contains(type)) {
|
||||||
|
eventType = PlayerBlockEventType.READ;
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -55,7 +55,7 @@ further defined and clarified by project maintainers.
|
|||||||
## Enforcement
|
## Enforcement
|
||||||
|
|
||||||
Instances of abusive, harassing, or otherwise unacceptable behavior may be
|
Instances of abusive, harassing, or otherwise unacceptable behavior may be
|
||||||
reported by contacting the project team at contact@alexander-soderberg.com. All
|
reported by contacting the project team at contact@intellectualsites.com. All
|
||||||
complaints will be reviewed and investigated and will result in a response that
|
complaints will be reviewed and investigated and will result in a response that
|
||||||
is deemed necessary and appropriate to the circumstances. The project team is
|
is deemed necessary and appropriate to the circumstances. The project team is
|
||||||
obligated to maintain confidentiality with regard to the reporter of an incident.
|
obligated to maintain confidentiality with regard to the reporter of an incident.
|
||||||
|
@ -2,18 +2,18 @@ import java.time.format.DateTimeFormatter
|
|||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
// Expected everywhere.
|
// Expected everywhere.
|
||||||
compileOnlyApi(libs.checkerqual)
|
compileOnlyApi("org.checkerframework:checker-qual")
|
||||||
|
|
||||||
// Minecraft expectations
|
// Minecraft expectations
|
||||||
compileOnlyApi(libs.gson)
|
compileOnlyApi("com.google.code.gson:gson")
|
||||||
compileOnly(libs.guava)
|
compileOnly("com.google.guava:guava")
|
||||||
|
|
||||||
// Platform expectations
|
// Platform expectations
|
||||||
compileOnlyApi(libs.snakeyaml)
|
compileOnlyApi("org.yaml:snakeyaml")
|
||||||
|
|
||||||
// Adventure
|
// Adventure
|
||||||
api(libs.adventure)
|
api("net.kyori:adventure-api")
|
||||||
api(libs.minimessage)
|
api("net.kyori:adventure-text-minimessage")
|
||||||
|
|
||||||
// Guice
|
// Guice
|
||||||
api(libs.guice) {
|
api(libs.guice) {
|
||||||
@ -31,18 +31,18 @@ dependencies {
|
|||||||
exclude(group = "dummypermscompat")
|
exclude(group = "dummypermscompat")
|
||||||
}
|
}
|
||||||
testImplementation(libs.worldeditCore)
|
testImplementation(libs.worldeditCore)
|
||||||
compileOnly(libs.fastasyncworldeditCore) { isTransitive = false }
|
compileOnly("com.fastasyncworldedit:FastAsyncWorldEdit-Core") { isTransitive = false }
|
||||||
testImplementation(libs.fastasyncworldeditCore) { isTransitive = false }
|
testImplementation("com.fastasyncworldedit:FastAsyncWorldEdit-Core") { isTransitive = false }
|
||||||
|
|
||||||
// Logging
|
// Logging
|
||||||
compileOnlyApi(libs.log4j)
|
compileOnlyApi("org.apache.logging.log4j:log4j-api")
|
||||||
|
|
||||||
// Other libraries
|
// Other libraries
|
||||||
api(libs.prtree)
|
api(libs.prtree)
|
||||||
api(libs.aopalliance)
|
api(libs.aopalliance)
|
||||||
api(libs.cloudServices)
|
api(libs.cloudServices)
|
||||||
api(libs.arkitektonika)
|
api(libs.arkitektonika)
|
||||||
api(libs.paster)
|
api("com.intellectualsites.paster:Paster")
|
||||||
}
|
}
|
||||||
|
|
||||||
tasks.processResources {
|
tasks.processResources {
|
||||||
|
@ -72,7 +72,10 @@ import com.plotsquared.core.util.ReflectionUtils;
|
|||||||
import com.plotsquared.core.util.task.TaskManager;
|
import com.plotsquared.core.util.task.TaskManager;
|
||||||
import com.plotsquared.core.uuid.UUIDPipeline;
|
import com.plotsquared.core.uuid.UUIDPipeline;
|
||||||
import com.sk89q.worldedit.WorldEdit;
|
import com.sk89q.worldedit.WorldEdit;
|
||||||
|
import com.sk89q.worldedit.event.platform.PlatformReadyEvent;
|
||||||
import com.sk89q.worldedit.math.BlockVector2;
|
import com.sk89q.worldedit.math.BlockVector2;
|
||||||
|
import com.sk89q.worldedit.util.eventbus.EventHandler;
|
||||||
|
import com.sk89q.worldedit.util.eventbus.Subscribe;
|
||||||
import org.apache.logging.log4j.LogManager;
|
import org.apache.logging.log4j.LogManager;
|
||||||
import org.apache.logging.log4j.Logger;
|
import org.apache.logging.log4j.Logger;
|
||||||
import org.checkerframework.checker.nullness.qual.MonotonicNonNull;
|
import org.checkerframework.checker.nullness.qual.MonotonicNonNull;
|
||||||
@ -153,6 +156,8 @@ public class PlotSquared {
|
|||||||
private EventDispatcher eventDispatcher;
|
private EventDispatcher eventDispatcher;
|
||||||
private PlotListener plotListener;
|
private PlotListener plotListener;
|
||||||
|
|
||||||
|
private boolean weInitialised;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Initialize PlotSquared with the desired Implementation class.
|
* Initialize PlotSquared with the desired Implementation class.
|
||||||
*
|
*
|
||||||
@ -223,6 +228,7 @@ public class PlotSquared {
|
|||||||
}
|
}
|
||||||
|
|
||||||
this.worldedit = WorldEdit.getInstance();
|
this.worldedit = WorldEdit.getInstance();
|
||||||
|
WorldEdit.getInstance().getEventBus().register(new WEPlatformReadyListener());
|
||||||
|
|
||||||
// Create Event utility class
|
// Create Event utility class
|
||||||
this.eventDispatcher = new EventDispatcher(this.worldedit);
|
this.eventDispatcher = new EventDispatcher(this.worldedit);
|
||||||
@ -1574,6 +1580,13 @@ public class PlotSquared {
|
|||||||
return this.plotListener;
|
return this.plotListener;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get if the {@link PlatformReadyEvent} has been sent by WE. There is no way to query this within WE itself.
|
||||||
|
*/
|
||||||
|
public boolean isWeInitialised() {
|
||||||
|
return weInitialised;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Different ways of sorting {@link Plot plots}
|
* Different ways of sorting {@link Plot plots}
|
||||||
*/
|
*/
|
||||||
@ -1596,4 +1609,15 @@ public class PlotSquared {
|
|||||||
DISTANCE_FROM_ORIGIN
|
DISTANCE_FROM_ORIGIN
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private final class WEPlatformReadyListener {
|
||||||
|
|
||||||
|
@SuppressWarnings("unused")
|
||||||
|
@Subscribe(priority = EventHandler.Priority.VERY_EARLY)
|
||||||
|
public void onPlatformReady(PlatformReadyEvent event) {
|
||||||
|
weInitialised = true;
|
||||||
|
WorldEdit.getInstance().getEventBus().unregister(WEPlatformReadyListener.this);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -53,9 +53,15 @@ public abstract class IndependentPlotGenerator {
|
|||||||
*
|
*
|
||||||
* @param result queue
|
* @param result queue
|
||||||
* @param settings PlotArea (settings)
|
* @param settings PlotArea (settings)
|
||||||
|
* @deprecated {@link ScopedQueueCoordinator} will be renamed in v7.
|
||||||
*/
|
*/
|
||||||
|
@Deprecated(forRemoval = true, since = "TODO")
|
||||||
public abstract void generateChunk(ScopedQueueCoordinator result, PlotArea settings);
|
public abstract void generateChunk(ScopedQueueCoordinator result, PlotArea settings);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @deprecated {@link ScopedQueueCoordinator} will be renamed in v7.
|
||||||
|
*/
|
||||||
|
@Deprecated(forRemoval = true, since = "TODO")
|
||||||
public boolean populateChunk(ScopedQueueCoordinator result, PlotArea setting) {
|
public boolean populateChunk(ScopedQueueCoordinator result, PlotArea setting) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
@ -93,7 +93,9 @@ public abstract class QueueCoordinator {
|
|||||||
* @param z chunk z coordinate
|
* @param z chunk z coordinate
|
||||||
* @return a new {@link ScopedQueueCoordinator}
|
* @return a new {@link ScopedQueueCoordinator}
|
||||||
* @since 6.6.0
|
* @since 6.6.0
|
||||||
|
* @deprecated {@link ScopedQueueCoordinator} will be renamed in v7.
|
||||||
*/
|
*/
|
||||||
|
@Deprecated(forRemoval = true, since = "TODO")
|
||||||
public ScopedQueueCoordinator getForChunk(int x, int z, int minY, int maxY) {
|
public ScopedQueueCoordinator getForChunk(int x, int z, int minY, int maxY) {
|
||||||
int bx = x << 4;
|
int bx = x << 4;
|
||||||
int bz = z << 4;
|
int bz = z << 4;
|
||||||
|
@ -42,6 +42,10 @@ public abstract class ChunkManager {
|
|||||||
private static final Map<BlockVector2, RunnableVal<ScopedQueueCoordinator>> forceChunks = new ConcurrentHashMap<>();
|
private static final Map<BlockVector2, RunnableVal<ScopedQueueCoordinator>> forceChunks = new ConcurrentHashMap<>();
|
||||||
private static final Map<BlockVector2, RunnableVal<ScopedQueueCoordinator>> addChunks = new ConcurrentHashMap<>();
|
private static final Map<BlockVector2, RunnableVal<ScopedQueueCoordinator>> addChunks = new ConcurrentHashMap<>();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @deprecated {@link ScopedQueueCoordinator} will be renamed in v7.
|
||||||
|
*/
|
||||||
|
@Deprecated(forRemoval = true, since = "TODO")
|
||||||
public static void setChunkInPlotArea(
|
public static void setChunkInPlotArea(
|
||||||
RunnableVal<ScopedQueueCoordinator> force,
|
RunnableVal<ScopedQueueCoordinator> force,
|
||||||
RunnableVal<ScopedQueueCoordinator> add,
|
RunnableVal<ScopedQueueCoordinator> add,
|
||||||
@ -79,6 +83,10 @@ public abstract class ChunkManager {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @deprecated {@link ScopedQueueCoordinator} will be renamed in v7.
|
||||||
|
*/
|
||||||
|
@Deprecated(forRemoval = true, since = "TODO")
|
||||||
public static boolean preProcessChunk(BlockVector2 loc, ScopedQueueCoordinator queue) {
|
public static boolean preProcessChunk(BlockVector2 loc, ScopedQueueCoordinator queue) {
|
||||||
final RunnableVal<ScopedQueueCoordinator> forceChunk = forceChunks.get(loc);
|
final RunnableVal<ScopedQueueCoordinator> forceChunk = forceChunks.get(loc);
|
||||||
if (forceChunk != null) {
|
if (forceChunk != null) {
|
||||||
@ -89,6 +97,10 @@ public abstract class ChunkManager {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @deprecated {@link ScopedQueueCoordinator} will be renamed in v7.
|
||||||
|
*/
|
||||||
|
@Deprecated(forRemoval = true, since = "TODO")
|
||||||
public static boolean postProcessChunk(BlockVector2 loc, ScopedQueueCoordinator queue) {
|
public static boolean postProcessChunk(BlockVector2 loc, ScopedQueueCoordinator queue) {
|
||||||
final RunnableVal<ScopedQueueCoordinator> addChunk = forceChunks.get(loc);
|
final RunnableVal<ScopedQueueCoordinator> addChunk = forceChunks.get(loc);
|
||||||
if (addChunk != null) {
|
if (addChunk != null) {
|
||||||
|
@ -34,7 +34,7 @@ allprojects {
|
|||||||
|
|
||||||
maven {
|
maven {
|
||||||
name = "Sonatype OSS (S01)"
|
name = "Sonatype OSS (S01)"
|
||||||
url = uri("https://s01.oss.sonatype.org/content/repositories/snapshots")
|
url = uri("https://s01.oss.sonatype.org/content/repositories/snapshots/")
|
||||||
}
|
}
|
||||||
|
|
||||||
maven {
|
maven {
|
||||||
@ -64,6 +64,10 @@ subprojects {
|
|||||||
plugin<EclipsePlugin>()
|
plugin<EclipsePlugin>()
|
||||||
plugin<IdeaPlugin>()
|
plugin<IdeaPlugin>()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
dependencies {
|
||||||
|
implementation(platform("com.intellectualsites.bom:bom-1.18.x:1.2"))
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
allprojects {
|
allprojects {
|
||||||
|
@ -1,15 +1,9 @@
|
|||||||
[versions]
|
[versions]
|
||||||
# Minecraft expectations
|
|
||||||
gson = "2.8.8" # Version set by Minecraft
|
|
||||||
log4j-api = "2.17.1" # Version set by Minecraft
|
|
||||||
guava = "31.0.1-jre" # Version set by Minecraft
|
|
||||||
|
|
||||||
# Platform expectations
|
# Platform expectations
|
||||||
paper = "1.18.1-R0.1-SNAPSHOT"
|
paper = "1.18.1-R0.1-SNAPSHOT"
|
||||||
checker-qual = "3.22.0"
|
checker-qual = "3.22.0"
|
||||||
guice = "5.1.0"
|
guice = "5.1.0"
|
||||||
spotbugs = "4.7.0"
|
spotbugs = "4.7.0"
|
||||||
snakeyaml = "1.30" # Version set by Bukkit
|
|
||||||
|
|
||||||
# Adventure & MiniMessage
|
# Adventure & MiniMessage
|
||||||
adventure-api = "4.9.3"
|
adventure-api = "4.9.3"
|
||||||
@ -18,8 +12,6 @@ adventure-platform-bukkit = "4.0.1"
|
|||||||
|
|
||||||
# Plugins
|
# Plugins
|
||||||
worldedit = "7.2.10"
|
worldedit = "7.2.10"
|
||||||
fawe = "2.2.0"
|
|
||||||
vault = "1.7.1"
|
|
||||||
placeholderapi = "2.11.1"
|
placeholderapi = "2.11.1"
|
||||||
luckperms = "5.4"
|
luckperms = "5.4"
|
||||||
essentialsx = "2.19.4"
|
essentialsx = "2.19.4"
|
||||||
@ -30,11 +22,7 @@ prtree = "2.0.0"
|
|||||||
aopalliance = "1.0"
|
aopalliance = "1.0"
|
||||||
cloud-services = "1.6.2"
|
cloud-services = "1.6.2"
|
||||||
arkitektonika = "2.1.1"
|
arkitektonika = "2.1.1"
|
||||||
paster = "1.1.4"
|
|
||||||
bstats = "3.0.0"
|
|
||||||
paperlib = "1.0.7"
|
|
||||||
squirrelid = "0.3.1"
|
squirrelid = "0.3.1"
|
||||||
serverlib = "2.3.1"
|
|
||||||
http4j = "1.3"
|
http4j = "1.3"
|
||||||
|
|
||||||
# Gradle plugins
|
# Gradle plugins
|
||||||
@ -48,12 +36,7 @@ nexus = "1.1.0"
|
|||||||
paper = { group = "io.papermc.paper", name = "paper-api", version.ref = "paper" }
|
paper = { group = "io.papermc.paper", name = "paper-api", version.ref = "paper" }
|
||||||
checkerqual = { group = "org.checkerframework", name = "checker-qual", version.ref = "checker-qual" }
|
checkerqual = { group = "org.checkerframework", name = "checker-qual", version.ref = "checker-qual" }
|
||||||
|
|
||||||
# Minecraft expectations
|
|
||||||
gson = { group = "com.google.code.gson", name = "gson", version.ref = "gson" }
|
|
||||||
log4j = { group = "org.apache.logging.log4j", name = "log4j-api", version.ref = "log4j-api" }
|
|
||||||
|
|
||||||
# Platform expectations
|
# Platform expectations
|
||||||
snakeyaml = { group = "org.yaml", name = "snakeyaml", version.ref = "snakeyaml" }
|
|
||||||
guice = { group = "com.google.inject", name = "guice", version.ref = "guice" }
|
guice = { group = "com.google.inject", name = "guice", version.ref = "guice" }
|
||||||
guiceassistedinject = { group = "com.google.inject.extensions", name = "guice-assistedinject", version.ref = "guice" }
|
guiceassistedinject = { group = "com.google.inject.extensions", name = "guice-assistedinject", version.ref = "guice" }
|
||||||
spotbugs = { group = "com.github.spotbugs", name = "spotbugs-annotations", version.ref = "spotbugs" }
|
spotbugs = { group = "com.github.spotbugs", name = "spotbugs-annotations", version.ref = "spotbugs" }
|
||||||
@ -66,9 +49,6 @@ adventurePlatformBukkit = { group = "net.kyori", name = "adventure-platform-bukk
|
|||||||
# Plugins
|
# Plugins
|
||||||
worldeditCore = { group = "com.sk89q.worldedit", name = "worldedit-core", version.ref = "worldedit" }
|
worldeditCore = { group = "com.sk89q.worldedit", name = "worldedit-core", version.ref = "worldedit" }
|
||||||
worldeditBukkit = { group = "com.sk89q.worldedit", name = "worldedit-bukkit", version.ref = "worldedit" }
|
worldeditBukkit = { group = "com.sk89q.worldedit", name = "worldedit-bukkit", version.ref = "worldedit" }
|
||||||
fastasyncworldeditBukkit = { group = "com.fastasyncworldedit", name = "FastAsyncWorldEdit-Bukkit", version.ref = "fawe" }
|
|
||||||
fastasyncworldeditCore = { group = "com.fastasyncworldedit", name = "FastAsyncWorldEdit-Core", version.ref = "fawe" }
|
|
||||||
vault = { group = "com.github.MilkBowl", name = "VaultAPI", version.ref = "vault" }
|
|
||||||
placeholderapi = { group = "me.clip", name = "placeholderapi", version.ref = "placeholderapi" }
|
placeholderapi = { group = "me.clip", name = "placeholderapi", version.ref = "placeholderapi" }
|
||||||
luckperms = { group = "net.luckperms", name = "api", version.ref = "luckperms" }
|
luckperms = { group = "net.luckperms", name = "api", version.ref = "luckperms" }
|
||||||
essentialsx = { group = "net.essentialsx", name = "EssentialsX", version.ref = "essentialsx" }
|
essentialsx = { group = "net.essentialsx", name = "EssentialsX", version.ref = "essentialsx" }
|
||||||
@ -79,13 +59,8 @@ aopalliance = { group = "aopalliance", name = "aopalliance", version.ref = "aopa
|
|||||||
cloudServices = { group = "cloud.commandframework", name = "cloud-services", version.ref = "cloud-services" }
|
cloudServices = { group = "cloud.commandframework", name = "cloud-services", version.ref = "cloud-services" }
|
||||||
mvdwapi = { group = "com.intellectualsites.mvdwplaceholderapi", name = "MVdWPlaceholderAPI", version.ref = "mvdwapi" }
|
mvdwapi = { group = "com.intellectualsites.mvdwplaceholderapi", name = "MVdWPlaceholderAPI", version.ref = "mvdwapi" }
|
||||||
squirrelid = { group = "org.enginehub", name = "squirrelid", version.ref = "squirrelid" }
|
squirrelid = { group = "org.enginehub", name = "squirrelid", version.ref = "squirrelid" }
|
||||||
serverlib = { group = "dev.notmyfault.serverlib", name = "ServerLib", version.ref = "serverlib" }
|
|
||||||
bstats = { group = "org.bstats", name = "bstats-bukkit", version.ref = "bstats" }
|
|
||||||
paperlib = { group = "io.papermc", name = "paperlib", version.ref = "paperlib" }
|
|
||||||
arkitektonika = { group = "com.intellectualsites.arkitektonika", name = "Arkitektonika-Client", version.ref = "arkitektonika" }
|
arkitektonika = { group = "com.intellectualsites.arkitektonika", name = "Arkitektonika-Client", version.ref = "arkitektonika" }
|
||||||
http4j = { group = "com.intellectualsites.http", name = "HTTP4J", version.ref = "http4j" }
|
http4j = { group = "com.intellectualsites.http", name = "HTTP4J", version.ref = "http4j" }
|
||||||
paster = { group = "com.intellectualsites.paster", name = "Paster", version.ref = "paster" }
|
|
||||||
guava = { group = "com.google.guava", name = "guava", version.ref = "guava" }
|
|
||||||
|
|
||||||
[plugins]
|
[plugins]
|
||||||
shadow = { id = "com.github.johnrengelman.shadow", version.ref = "shadow" }
|
shadow = { id = "com.github.johnrengelman.shadow", version.ref = "shadow" }
|
||||||
|
Reference in New Issue
Block a user