Port UseFlag

This commit is contained in:
Hannes Greule 2020-02-17 19:10:10 +01:00
parent 55cfb7600d
commit a00d07e1be
6 changed files with 34 additions and 13 deletions

View File

@ -42,6 +42,7 @@ import com.github.intellectualsites.plotsquared.plot.flags.implementations.SoilD
import com.github.intellectualsites.plotsquared.plot.flags.implementations.TamedAttackFlag;
import com.github.intellectualsites.plotsquared.plot.flags.implementations.TamedInteractFlag;
import com.github.intellectualsites.plotsquared.plot.flags.implementations.UntrustedVisitFlag;
import com.github.intellectualsites.plotsquared.plot.flags.implementations.UseFlag;
import com.github.intellectualsites.plotsquared.plot.flags.implementations.VehicleBreakFlag;
import com.github.intellectualsites.plotsquared.plot.flags.implementations.VehicleUseFlag;
import com.github.intellectualsites.plotsquared.plot.flags.implementations.VillagerInteractFlag;
@ -2297,7 +2298,8 @@ import java.util.regex.Pattern;
Captions.PERMISSION_ADMIN_BUILD_UNOWNED);
event.setCancelled(true);
} else if (!plot.isAdded(pp.getUUID())) {
if (Flags.USE.contains(plot, BukkitAdapter.asItemType(block.getType()))) {
List<BlockType> use = plot.getFlag(UseFlag.class);
if (use.contains(BukkitAdapter.asBlockType(block.getType()))) {
return;
}
if (Permissions.hasPermission(pp, Captions.PERMISSION_ADMIN_BUILD_OTHER)) {
@ -2357,9 +2359,9 @@ import java.util.regex.Pattern;
Captions.PERMISSION_ADMIN_BUILD_UNOWNED);
event.setCancelled(true);
} else if (!plot.isAdded(plotPlayer.getUUID())) {
Optional<Set<BlockType>> use = plot.getFlag(Flags.USE);
List<BlockType> use = plot.getFlag(UseFlag.class);
Block block = event.getBlockClicked();
if (use.isPresent() && use.get().contains(BukkitAdapter.asBlockType(block.getType()))) {
if (use.contains(BukkitAdapter.asBlockType(block.getType()))) {
return;
}
if (Permissions.hasPermission(plotPlayer, Captions.PERMISSION_ADMIN_BUILD_OTHER)) {

View File

@ -622,6 +622,7 @@ public enum Captions implements Caption {
FLAG_DESCRIPTION_TAMED_ATTACK("Set to `true` to allow guests to attack tamed animals in the plot.", "Flags"),
FLAG_DESCRIPTION_TAMED_INTERACT("Set to `true` to allow guests to interact with tamed animals in the plot.", "Flags"),
FLAG_DESCRIPTION_TITLES("Set to `false` to disable plot titles.", "Flags"),
FLAG_DESCRIPTION_USE("Define a list of materials players should be able to interact with in the plot.", "Flags"),
FLAG_DESCRIPTION_VEHICLE_BREAK("Set to `true` to allow guests to break vehicles in the plot.", "Flags"),
FLAG_DESCRIPTION_VEHICLE_CAP("Set to an integer value to limit the amount of vehicles on the plot.", "Flags"),
FLAG_DESCRIPTION_VEHICLE_PLACE("Set to `true` to allow guests to place vehicles in the plot.", "Flags"),

View File

@ -63,6 +63,7 @@ import com.github.intellectualsites.plotsquared.plot.flags.implementations.Tamed
import com.github.intellectualsites.plotsquared.plot.flags.implementations.TamedInteractFlag;
import com.github.intellectualsites.plotsquared.plot.flags.implementations.TitlesFlag;
import com.github.intellectualsites.plotsquared.plot.flags.implementations.UntrustedVisitFlag;
import com.github.intellectualsites.plotsquared.plot.flags.implementations.UseFlag;
import com.github.intellectualsites.plotsquared.plot.flags.implementations.VehicleBreakFlag;
import com.github.intellectualsites.plotsquared.plot.flags.implementations.VehicleCapFlag;
import com.github.intellectualsites.plotsquared.plot.flags.implementations.VehicleUseFlag;
@ -163,7 +164,7 @@ public final class GlobalFlagContainer extends FlagContainer {
// Block type list flags
this.addFlag(BreakFlag.BREAK_NONE);
this.addFlag(PlaceFlag.PLACE_NONE);
this.addFlag(UseFlag.USE_NONE);
// Misc
this.addFlag(GamemodeFlag.GAMEMODE_FLAG_DEFAULT);

View File

@ -0,0 +1,21 @@
package com.github.intellectualsites.plotsquared.plot.flags.implementations;
import com.github.intellectualsites.plotsquared.plot.config.Captions;
import com.github.intellectualsites.plotsquared.plot.flags.types.BlockTypeListFlag;
import com.sk89q.worldedit.world.block.BlockType;
import org.jetbrains.annotations.NotNull;
import java.util.Collections;
import java.util.List;
public class UseFlag extends BlockTypeListFlag<UseFlag> {
public static final UseFlag USE_NONE = new UseFlag(Collections.emptyList());
protected UseFlag(List<BlockType> blockTypeList) {
super(blockTypeList, Captions.FLAG_DESCRIPTION_USE);
}
@Override protected UseFlag flagOf(@NotNull List<BlockType> value) {
return new UseFlag(value);
}
}

View File

@ -9,6 +9,7 @@ import com.github.intellectualsites.plotsquared.plot.flags.implementations.Devic
import com.github.intellectualsites.plotsquared.plot.flags.implementations.MiscPlaceFlag;
import com.github.intellectualsites.plotsquared.plot.flags.implementations.MobPlaceFlag;
import com.github.intellectualsites.plotsquared.plot.flags.implementations.PlaceFlag;
import com.github.intellectualsites.plotsquared.plot.flags.implementations.UseFlag;
import com.github.intellectualsites.plotsquared.plot.flags.implementations.VehiclePlaceFlag;
import com.github.intellectualsites.plotsquared.plot.listener.PlayerBlockEventType;
import com.github.intellectualsites.plotsquared.plot.object.Location;
@ -132,10 +133,8 @@ public abstract class EventUtil {
Captions.PERMISSION_ADMIN_INTERACT_UNOWNED.getTranslated(),
notifyPerms);
}
Optional<Set<BlockType>> flagValue = plot.getFlag(Flags.USE);
Set<BlockType> value = flagValue.orElse(null);
if (value == null || !value.contains(BlockTypes.AIR) && !value
.contains(blockType)) {
List<BlockType> use = plot.getFlag(UseFlag.class);
if (!use.contains(BlockTypes.AIR) && !use.contains(blockType)) {
return Permissions.hasPermission(player,
Captions.PERMISSION_ADMIN_INTERACT_OTHER.getTranslated(), false)
|| !(!notifyPerms || MainUtil
@ -157,10 +156,8 @@ public abstract class EventUtil {
if (plot.getFlag(DeviceInteractFlag.class)) {
return true;
}
Optional<Set<BlockType>> flagValue = plot.getFlag(Flags.USE);
Set<BlockType> value = flagValue.orElse(null);
if (value == null || !value.contains(BlockTypes.AIR) && !value
.contains(blockType)) {
List<BlockType> use = plot.getFlag(UseFlag.class);
if (!use.contains(BlockTypes.AIR) && !use.contains(blockType)) {
if (Permissions.hasPermission(player,
Captions.PERMISSION_ADMIN_INTERACT_OTHER.getTranslated(),
false)) {

View File

@ -25,7 +25,6 @@ import static org.junit.Assert.assertEquals;
public class FlagTest {
private ItemType testBlock;
private Flag<? extends Collection<?>> use = Flags.USE;
@Before public void setUp() throws Exception {
EventUtil.manager = new EventUtilTest();