From 80f435bb053ab8f8c643ddd206e42f3f06d9c7b3 Mon Sep 17 00:00:00 2001 From: dordsor21 Date: Sun, 1 Oct 2023 10:32:48 +0100 Subject: [PATCH] feat: add concrete-hard flag - closes #4156 --- .../bukkit/listener/BlockEventListener.java | 7 ++++ .../core/plot/flag/GlobalFlagContainer.java | 2 + .../implementations/ConcreteHardenFlag.java | 39 +++++++++++++++++++ 3 files changed, 48 insertions(+) create mode 100644 Core/src/main/java/com/plotsquared/core/plot/flag/implementations/ConcreteHardenFlag.java diff --git a/Bukkit/src/main/java/com/plotsquared/bukkit/listener/BlockEventListener.java b/Bukkit/src/main/java/com/plotsquared/bukkit/listener/BlockEventListener.java index 4a9e1c9f0..52e8ba623 100644 --- a/Bukkit/src/main/java/com/plotsquared/bukkit/listener/BlockEventListener.java +++ b/Bukkit/src/main/java/com/plotsquared/bukkit/listener/BlockEventListener.java @@ -33,6 +33,7 @@ import com.plotsquared.core.plot.PlotArea; import com.plotsquared.core.plot.flag.implementations.BlockBurnFlag; import com.plotsquared.core.plot.flag.implementations.BlockIgnitionFlag; import com.plotsquared.core.plot.flag.implementations.BreakFlag; +import com.plotsquared.core.plot.flag.implementations.ConcreteHardenFlag; import com.plotsquared.core.plot.flag.implementations.CoralDryFlag; import com.plotsquared.core.plot.flag.implementations.CropGrowFlag; import com.plotsquared.core.plot.flag.implementations.DisablePhysicsFlag; @@ -586,6 +587,12 @@ public class BlockEventListener implements Listener { event.setCancelled(true); } } + if (event.getNewState().getType().toString().endsWith("CONCRETE")) { + if (!plot.getFlag(ConcreteHardenFlag.class)) { + plot.debug("Concrete powder could not harden because concrete-harden = false"); + event.setCancelled(true); + } + } } @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true) diff --git a/Core/src/main/java/com/plotsquared/core/plot/flag/GlobalFlagContainer.java b/Core/src/main/java/com/plotsquared/core/plot/flag/GlobalFlagContainer.java index 25b12d39d..988367c54 100644 --- a/Core/src/main/java/com/plotsquared/core/plot/flag/GlobalFlagContainer.java +++ b/Core/src/main/java/com/plotsquared/core/plot/flag/GlobalFlagContainer.java @@ -29,6 +29,7 @@ import com.plotsquared.core.plot.flag.implementations.BlockIgnitionFlag; import com.plotsquared.core.plot.flag.implementations.BlockedCmdsFlag; import com.plotsquared.core.plot.flag.implementations.BreakFlag; import com.plotsquared.core.plot.flag.implementations.ChatFlag; +import com.plotsquared.core.plot.flag.implementations.ConcreteHardenFlag; import com.plotsquared.core.plot.flag.implementations.CopperOxideFlag; import com.plotsquared.core.plot.flag.implementations.CoralDryFlag; import com.plotsquared.core.plot.flag.implementations.CropGrowFlag; @@ -142,6 +143,7 @@ public final class GlobalFlagContainer extends FlagContainer { this.addFlag(BeaconEffectsFlag.BEACON_EFFECT_TRUE); this.addFlag(BlockIgnitionFlag.BLOCK_IGNITION_TRUE); this.addFlag(ChatFlag.CHAT_FLAG_TRUE); + this.addFlag(ConcreteHardenFlag.CONCRETE_HARDEN_TRUE); this.addFlag(CopperOxideFlag.COPPER_OXIDE_FALSE); this.addFlag(CoralDryFlag.CORAL_DRY_FALSE); this.addFlag(CropGrowFlag.CROP_GROW_TRUE); diff --git a/Core/src/main/java/com/plotsquared/core/plot/flag/implementations/ConcreteHardenFlag.java b/Core/src/main/java/com/plotsquared/core/plot/flag/implementations/ConcreteHardenFlag.java new file mode 100644 index 000000000..fc7517c62 --- /dev/null +++ b/Core/src/main/java/com/plotsquared/core/plot/flag/implementations/ConcreteHardenFlag.java @@ -0,0 +1,39 @@ +/* + * PlotSquared, a land and world management plugin for Minecraft. + * Copyright (C) IntellectualSites + * 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 . + */ +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 ConcreteHardenFlag extends BooleanFlag { + + public static final ConcreteHardenFlag CONCRETE_HARDEN_TRUE = new ConcreteHardenFlag(true); + public static final ConcreteHardenFlag CONCRETE_HARDEN_FALSE = new ConcreteHardenFlag(false); + + private ConcreteHardenFlag(boolean value) { + super(value, TranslatableCaption.of("flags.flag_description_ice_form")); + } + + @Override + protected ConcreteHardenFlag flagOf(@NonNull Boolean value) { + return value ? CONCRETE_HARDEN_TRUE : CONCRETE_HARDEN_FALSE; + } + +}