1313 * see <http://www.gnu.org/licenses/>.
1414 */
1515
16- package org .enginehub .craftbook .mechanics .area .clipboard ;
16+ package org .enginehub .craftbook .bukkit . mechanics .area .clipboard ;
1717
18- import com .sk89q .util .yaml .YAMLProcessor ;
1918import com .sk89q .worldedit .WorldEditException ;
2019import com .sk89q .worldedit .bukkit .BukkitAdapter ;
21- import com .sk89q .worldedit .extent .clipboard .BlockArrayClipboard ;
20+ import com .sk89q .worldedit .extent .clipboard .Clipboard ;
2221import com .sk89q .worldedit .util .formatting .text .TextComponent ;
2322import com .sk89q .worldedit .util .formatting .text .TranslatableComponent ;
2423import com .sk89q .worldedit .world .World ;
2524import net .kyori .adventure .text .Component ;
26- import net .kyori .adventure .text .TextReplacementConfig ;
2725import net .kyori .adventure .text .format .TextDecoration ;
2826import net .kyori .adventure .text .serializer .plain .PlainTextComponentSerializer ;
2927import org .bukkit .Bukkit ;
3533import org .bukkit .event .Listener ;
3634import org .bukkit .event .block .Action ;
3735import org .bukkit .event .block .SignChangeEvent ;
38- import org .enginehub .craftbook .AbstractCraftBookMechanic ;
3936import org .enginehub .craftbook .ChangedSign ;
4037import org .enginehub .craftbook .CraftBook ;
4138import org .enginehub .craftbook .CraftBookPlayer ;
4239import org .enginehub .craftbook .bukkit .CraftBookPlugin ;
4340import org .enginehub .craftbook .mechanic .CraftBookMechanic ;
4441import org .enginehub .craftbook .mechanic .MechanicCommandRegistrar ;
4542import org .enginehub .craftbook .mechanic .MechanicType ;
43+ import org .enginehub .craftbook .mechanics .area .clipboard .CopyManager ;
44+ import org .enginehub .craftbook .mechanics .area .clipboard .ToggleArea ;
4645import org .enginehub .craftbook .util .EventUtil ;
4746import org .enginehub .craftbook .util .ProtectionUtil ;
4847import org .enginehub .craftbook .util .SignUtil ;
5453import java .util .List ;
5554import java .util .Locale ;
5655import java .util .UUID ;
57- import java .util .regex .Pattern ;
5856
59- public class ToggleArea extends AbstractCraftBookMechanic implements Listener {
57+ public class BukkitToggleArea extends ToggleArea implements Listener {
6058
61- private static final TextReplacementConfig DASH_REMOVER = TextReplacementConfig .builder ().matchLiteral ("-" ).replacement ("" ).build ();
62-
63- public ToggleArea (MechanicType <? extends CraftBookMechanic > mechanicType ) {
59+ public BukkitToggleArea (MechanicType <? extends CraftBookMechanic > mechanicType ) {
6460 super (mechanicType );
6561 }
6662
@@ -200,6 +196,7 @@ public void onRightClick(SignClickEvent event) {
200196 // check if the namespace and area exists
201197 if (!isValidArea (toggleAreaData )) {
202198 player .printError (TranslatableComponent .of ("craftbook.togglearea.missing-area" ));
199+ event .setCancelled (true );
203200 return ;
204201 }
205202
@@ -216,11 +213,11 @@ public void onRightClick(SignClickEvent event) {
216213 }
217214
218215 private boolean isValidArea (ToggleAreaData toggleAreaData ) {
219- if (CopyManager .isExistingArea (CraftBookPlugin . inst (). getDataFolder () , toggleAreaData .namespace , toggleAreaData . areaOn )) {
220- if (toggleAreaData .areaOff == null || toggleAreaData .areaOff .isEmpty () || toggleAreaData .areaOff .equals ("--" )) {
216+ if (CopyManager .isExistingArea (toggleAreaData . namespace () , toggleAreaData .areaOn () )) {
217+ if (toggleAreaData .areaOff () == null || toggleAreaData .areaOff () .isEmpty () || toggleAreaData .areaOff () .equals ("--" )) {
221218 return true ;
222219 }
223- return CopyManager .isExistingArea (CraftBookPlugin . inst (). getDataFolder () , toggleAreaData .namespace , toggleAreaData . areaOff );
220+ return CopyManager .isExistingArea (toggleAreaData . namespace () , toggleAreaData .areaOff () );
224221 }
225222 return false ;
226223 }
@@ -270,20 +267,20 @@ public void onBlockRedstoneChange(SourcedBlockRedstoneEvent event) {
270267
271268 private boolean toggle (ChangedSign sign , ToggleAreaData toggleAreaData , boolean save ) {
272269 try {
273- BlockArrayClipboard copy ;
270+ Clipboard copy ;
274271 World weWorld = BukkitAdapter .adapt (sign .getBlock ().getWorld ());
275272
276273 if (checkToggleState (sign )) {
277- copy = CopyManager .getInstance ().load (toggleAreaData .namespace , toggleAreaData .areaOn );
274+ copy = CopyManager .getInstance ().load (toggleAreaData .namespace () , toggleAreaData .areaOn () );
278275
279276 // if this is a save area save it before toggling off
280277 if (save ) {
281278 copy = CopyManager .getInstance ().copy (copy .getRegion (), weWorld );
282- CopyManager .getInstance ().save (toggleAreaData .namespace , toggleAreaData .areaOn , copy );
279+ CopyManager .getInstance ().save (toggleAreaData .namespace () , toggleAreaData .areaOn () , copy );
283280 }
284281 // if we are toggling to the second area we dont clear the old area
285- if (!toggleAreaData .areaOff .isEmpty () && !toggleAreaData .areaOff .equals ("--" )) {
286- copy = CopyManager .getInstance ().load (toggleAreaData .namespace , toggleAreaData .areaOff );
282+ if (!toggleAreaData .areaOff () .isEmpty () && !toggleAreaData .areaOff () .equals ("--" )) {
283+ copy = CopyManager .getInstance ().load (toggleAreaData .namespace () , toggleAreaData .areaOff () );
287284 CopyManager .getInstance ().paste (copy , weWorld );
288285 } else {
289286 CopyManager .getInstance ().clear (copy , weWorld );
@@ -293,13 +290,13 @@ private boolean toggle(ChangedSign sign, ToggleAreaData toggleAreaData, boolean
293290
294291 // toggle the area on
295292 // if this is a save area save it before toggling off
296- if (save && !toggleAreaData .areaOff .isEmpty () && !toggleAreaData .areaOff .equals ("--" )) {
297- copy = CopyManager .getInstance ().load (toggleAreaData .namespace , toggleAreaData .areaOff );
293+ if (save && !toggleAreaData .areaOff () .isEmpty () && !toggleAreaData .areaOff () .equals ("--" )) {
294+ copy = CopyManager .getInstance ().load (toggleAreaData .namespace () , toggleAreaData .areaOff () );
298295 copy = CopyManager .getInstance ().copy (copy .getRegion (), weWorld );
299- CopyManager .getInstance ().save (toggleAreaData .namespace , toggleAreaData .areaOff , copy );
296+ CopyManager .getInstance ().save (toggleAreaData .namespace () , toggleAreaData .areaOff () , copy );
300297 }
301298
302- copy = CopyManager .getInstance ().load (toggleAreaData .namespace , toggleAreaData .areaOn );
299+ copy = CopyManager .getInstance ().load (toggleAreaData .namespace () , toggleAreaData .areaOn () );
303300 CopyManager .getInstance ().paste (copy , weWorld );
304301 setToggledState (sign , true );
305302 }
@@ -331,9 +328,6 @@ public boolean toggleCold(Block block) {
331328 return toggle (sign , toggleAreaData , save );
332329 }
333330
334- // pattern to check where the markers for on and off state are
335- private static final Pattern TOGGLED_ON_PATTERN = Pattern .compile ("^-[A-Za-z0-9_]*?-$" );
336-
337331 private boolean checkToggleState (ChangedSign sign ) {
338332 String line3 = PlainTextComponentSerializer .plainText ().serialize (sign .getLine (2 )).toLowerCase (Locale .ENGLISH );
339333 String line4 = PlainTextComponentSerializer .plainText ().serialize (sign .getLine (3 )).toLowerCase (Locale .ENGLISH );
@@ -366,27 +360,4 @@ private void updateOwnerName(ChangedSign sign) {
366360 sign .setLine (0 , Component .text ("~" + name , null , TextDecoration .ITALIC ));
367361 }
368362 }
369-
370- private boolean allowRedstone ;
371- boolean removeEntitiesOnToggle ;
372- int maxAreaSize ;
373- int maxAreasPerUser ;
374-
375- @ Override
376- public void loadFromConfiguration (YAMLProcessor config ) {
377- config .setComment ("allow-redstone" , "Allow ToggleAreas to be toggled via redstone." );
378- allowRedstone = config .getBoolean ("allow-redstone" , true );
379-
380- config .setComment ("remove-entities-on-toggle" , "Whether the area toggling will remove entities within it." );
381- removeEntitiesOnToggle = config .getBoolean ("remove-entities-on-toggle" , false );
382-
383- config .setComment ("max-size" , "Sets the max amount of blocks that a ToggleArea can hold." );
384- maxAreaSize = config .getInt ("max-size" , 5000 );
385-
386- config .setComment ("max-per-user" , "Sets the max amount of ToggleAreas that can be within one personal namespace." );
387- maxAreasPerUser = config .getInt ("max-per-user" , 30 );
388- }
389-
390- public record ToggleAreaData (String namespace , String areaOn , String areaOff ) {
391- }
392363}
0 commit comments