From 5f7bb784f02ae43006ca2f6ae81fac69c98f7a10 Mon Sep 17 00:00:00 2001 From: Jordan Date: Wed, 4 Oct 2023 09:41:47 +0100 Subject: [PATCH] feat: add concrete-harden flag (#4184) --- .../bukkit/listener/BlockEventListener.java | 7 ++++ .../core/plot/flag/GlobalFlagContainer.java | 2 + .../implementations/ConcreteHardenFlag.java | 39 +++++++++++++++++++ Core/src/main/resources/lang/messages_en.json | 1 + 4 files changed, 49 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..b68b788b1 --- /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_concrete_harden")); + } + + @Override + protected ConcreteHardenFlag flagOf(@NonNull Boolean value) { + return value ? CONCRETE_HARDEN_TRUE : CONCRETE_HARDEN_FALSE; + } + +} diff --git a/Core/src/main/resources/lang/messages_en.json b/Core/src/main/resources/lang/messages_en.json index 0fde34600..d50fbe4b9 100644 --- a/Core/src/main/resources/lang/messages_en.json +++ b/Core/src/main/resources/lang/messages_en.json @@ -551,6 +551,7 @@ "flags.flag_description_block_burn": "Set to `true` to allow blocks to burn within the plot.", "flags.flag_description_block_ignition": "Set to `false` to prevent blocks from igniting within the plot.", "flags.flag_description_break": "Define a list of materials players should be able to break even when they aren't added to the plot.", + "flags.flag_description_concrete_harden": "Set to `false` to disable concrete powder forming to concrete with water.", "flags.flag_description_device_interact": "Set to `true` to allow devices to be interacted with in the plot.", "flags.flag_description_disable_physics": "Set to `true` to disable block physics in the plot.", "flags.flag_description_drop_protection": "Set to `true` to prevent dropped items from being picked up by non-members of the plot.",