Skip to content

Commit 32b2ad3

Browse files
committed
Add lava-solidification flag
This covers the forming of cobblestone, stone, obsidian and basalt.
1 parent b4914ef commit 32b2ad3

5 files changed

Lines changed: 23 additions & 1 deletion

File tree

CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,9 @@
11
# Changelog
22

3+
## 7.0.17
4+
5+
* Add lava-solidification flag for cobblestone/stone/obsidian/basalt forming
6+
37
## 7.0.16
48

59
* Update to 1.21.11.

worldguard-bukkit/src/main/java/com/sk89q/worldguard/bukkit/BukkitWorldConfiguration.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -286,6 +286,7 @@ public void loadConfiguration() {
286286
disableSoilMoistureChange = getBoolean("dynamics.disable-soil-moisture-change", false);
287287
disableCoralBlockFade = getBoolean("dynamics.disable-coral-block-fade", false);
288288
disableCopperBlockFade = getBoolean("dynamics.disable-copper-block-fade", false);
289+
disableLavaSolidification = getBoolean("dynamics.disable-lava-solidification", false);
289290
allowedSnowFallOver = new HashSet<>(convertLegacyBlocks(getStringList("dynamics.snow-fall-blocks", null)));
290291

291292
useRegions = getBoolean("regions.enable", true);

worldguard-bukkit/src/main/java/com/sk89q/worldguard/bukkit/listener/WorldGuardBlockListener.java

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@
3535
import org.bukkit.Material;
3636
import org.bukkit.World;
3737
import org.bukkit.block.Block;
38+
import org.bukkit.block.BlockState;
3839
import org.bukkit.block.data.Waterlogged;
3940
import org.bukkit.entity.Player;
4041
import org.bukkit.entity.Snowman;
@@ -478,7 +479,8 @@ public void onBlockForm(BlockFormEvent event) {
478479

479480
WorldConfiguration wcfg = getWorldConfig(event.getBlock().getWorld());
480481

481-
Material type = event.getNewState().getType();
482+
BlockState newState = event.getNewState();
483+
Material type = newState.getType();
482484

483485
if (event instanceof EntityBlockFormEvent) {
484486
if (((EntityBlockFormEvent) event).getEntity() instanceof Snowman) {
@@ -533,6 +535,19 @@ public void onBlockForm(BlockFormEvent event) {
533535
return;
534536
}
535537
}
538+
539+
if (event.getBlock().getType() == Material.LAVA && !newState.getBlock().isLiquid()) {
540+
if (wcfg.disableLavaSolidification) {
541+
event.setCancelled(true);
542+
return;
543+
}
544+
545+
if (wcfg.useRegions && !StateFlag.test(WorldGuard.getInstance().getPlatform().getRegionContainer().createQuery()
546+
.queryState(BukkitAdapter.adapt(event.getBlock().getLocation()), (RegionAssociable) null, Flags.LAVA_SOLIDIFICATION))) {
547+
event.setCancelled(true);
548+
return;
549+
}
550+
}
536551
}
537552

538553
/*

worldguard-core/src/main/java/com/sk89q/worldguard/config/WorldConfiguration.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -170,6 +170,7 @@ public abstract class WorldConfiguration {
170170
public boolean disableSoilMoistureChange;
171171
public boolean disableCoralBlockFade;
172172
public boolean disableCopperBlockFade;
173+
public boolean disableLavaSolidification;
173174
public Set<String> allowedSnowFallOver;
174175
public boolean regionInvinciblityRemovesMobs;
175176
public boolean regionCancelEmptyChatEvents;

worldguard-core/src/main/java/com/sk89q/worldguard/protection/flags/Flags.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -131,6 +131,7 @@ public final class Flags {
131131
public static final StateFlag WATER_FLOW = register(new StateFlag("water-flow", true));
132132
public static final StateFlag LAVA_FLOW = register(new StateFlag("lava-flow", true));
133133
public static final StateFlag MOISTURE_CHANGE = register(new StateFlag("moisture-change", true));
134+
public static final StateFlag LAVA_SOLIDIFICATION = register(new StateFlag("lava-solidification", true));
134135

135136
public static final RegistryFlag<WeatherType> WEATHER_LOCK = register(new RegistryFlag<>("weather-lock", WeatherType.REGISTRY));
136137
public static final StringFlag TIME_LOCK = register(new StringFlag("time-lock"));

0 commit comments

Comments
 (0)