mirror of
https://github.com/bloodmc/GriefDefender.git
synced 2024-09-29 04:47:33 +02:00
Add command completions.
* Fix accessor trust not affecting block collisions. * Fix tools in config not supporting mod ids. * Fix lava placement bug. * Fix flag default tab permission. Fixes #3, Fixes #5, Fixes #7, Fixes #10
This commit is contained in:
parent
ba39de90ab
commit
96c90fcd7b
@ -31,13 +31,16 @@
|
|||||||
import co.aikar.timings.lib.MCTiming;
|
import co.aikar.timings.lib.MCTiming;
|
||||||
import co.aikar.timings.lib.TimingManager;
|
import co.aikar.timings.lib.TimingManager;
|
||||||
|
|
||||||
|
import com.google.common.collect.ImmutableList;
|
||||||
import com.google.common.reflect.TypeToken;
|
import com.google.common.reflect.TypeToken;
|
||||||
import com.google.inject.Guice;
|
import com.google.inject.Guice;
|
||||||
import com.google.inject.Stage;
|
import com.google.inject.Stage;
|
||||||
import com.griefdefender.api.Tristate;
|
import com.griefdefender.api.Tristate;
|
||||||
import com.griefdefender.api.claim.ClaimBlockSystem;
|
import com.griefdefender.api.claim.ClaimBlockSystem;
|
||||||
import com.griefdefender.api.claim.ClaimType;
|
import com.griefdefender.api.claim.ClaimType;
|
||||||
|
import com.griefdefender.api.claim.TrustType;
|
||||||
import com.griefdefender.api.permission.flag.Flag;
|
import com.griefdefender.api.permission.flag.Flag;
|
||||||
|
import com.griefdefender.api.permission.option.Option;
|
||||||
import com.griefdefender.cache.PermissionHolderCache;
|
import com.griefdefender.cache.PermissionHolderCache;
|
||||||
import com.griefdefender.claim.GDClaim;
|
import com.griefdefender.claim.GDClaim;
|
||||||
import com.griefdefender.claim.GDClaimManager;
|
import com.griefdefender.claim.GDClaimManager;
|
||||||
@ -109,11 +112,12 @@
|
|||||||
import com.griefdefender.configuration.type.ConfigBase;
|
import com.griefdefender.configuration.type.ConfigBase;
|
||||||
import com.griefdefender.configuration.type.GlobalConfig;
|
import com.griefdefender.configuration.type.GlobalConfig;
|
||||||
import com.griefdefender.inject.GriefDefenderImplModule;
|
import com.griefdefender.inject.GriefDefenderImplModule;
|
||||||
import com.griefdefender.internal.material.GDMaterials;
|
|
||||||
import com.griefdefender.internal.provider.WorldEditProvider;
|
import com.griefdefender.internal.provider.WorldEditProvider;
|
||||||
import com.griefdefender.internal.provider.WorldGuardProvider;
|
import com.griefdefender.internal.provider.WorldGuardProvider;
|
||||||
import com.griefdefender.internal.registry.BlockTypeRegistryModule;
|
import com.griefdefender.internal.registry.BlockTypeRegistryModule;
|
||||||
import com.griefdefender.internal.registry.EntityTypeRegistryModule;
|
import com.griefdefender.internal.registry.EntityTypeRegistryModule;
|
||||||
|
import com.griefdefender.internal.registry.GDEntityType;
|
||||||
|
import com.griefdefender.internal.registry.GDItemType;
|
||||||
import com.griefdefender.internal.registry.ItemTypeRegistryModule;
|
import com.griefdefender.internal.registry.ItemTypeRegistryModule;
|
||||||
import com.griefdefender.internal.util.NMSUtil;
|
import com.griefdefender.internal.util.NMSUtil;
|
||||||
import com.griefdefender.internal.util.VecHelper;
|
import com.griefdefender.internal.util.VecHelper;
|
||||||
@ -142,6 +146,7 @@
|
|||||||
import com.griefdefender.text.ComponentConfigSerializer;
|
import com.griefdefender.text.ComponentConfigSerializer;
|
||||||
import com.griefdefender.text.TextTemplate;
|
import com.griefdefender.text.TextTemplate;
|
||||||
import com.griefdefender.text.TextTemplateConfigSerializer;
|
import com.griefdefender.text.TextTemplateConfigSerializer;
|
||||||
|
import com.griefdefender.util.PermissionUtil;
|
||||||
|
|
||||||
import me.lucko.luckperms.api.LuckPermsApi;
|
import me.lucko.luckperms.api.LuckPermsApi;
|
||||||
import me.lucko.luckperms.api.User;
|
import me.lucko.luckperms.api.User;
|
||||||
@ -159,7 +164,6 @@
|
|||||||
import org.apache.commons.lang3.LocaleUtils;
|
import org.apache.commons.lang3.LocaleUtils;
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.Location;
|
import org.bukkit.Location;
|
||||||
import org.bukkit.Material;
|
|
||||||
import org.bukkit.OfflinePlayer;
|
import org.bukkit.OfflinePlayer;
|
||||||
import org.bukkit.World;
|
import org.bukkit.World;
|
||||||
import org.bukkit.command.CommandSender;
|
import org.bukkit.command.CommandSender;
|
||||||
@ -174,6 +178,7 @@
|
|||||||
import java.nio.file.Path;
|
import java.nio.file.Path;
|
||||||
import java.nio.file.Paths;
|
import java.nio.file.Paths;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
import java.util.Collection;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
@ -227,8 +232,8 @@ public class GriefDefenderPlugin {
|
|||||||
|
|
||||||
private boolean isEconomyModeEnabled = false;
|
private boolean isEconomyModeEnabled = false;
|
||||||
|
|
||||||
public Material modificationTool;
|
public GDItemType modificationTool;
|
||||||
public Material investigationTool;
|
public GDItemType investigationTool;
|
||||||
public int maxInspectionDistance = 100;
|
public int maxInspectionDistance = 100;
|
||||||
|
|
||||||
public static boolean debugLogging = false;
|
public static boolean debugLogging = false;
|
||||||
@ -630,7 +635,60 @@ public void registerBaseCommands() {
|
|||||||
ID_MAP.add("griefdefender:claimflag");
|
ID_MAP.add("griefdefender:claimflag");
|
||||||
ID_MAP.add("griefdefender:claimflaggroup");
|
ID_MAP.add("griefdefender:claimflaggroup");
|
||||||
ID_MAP.add("griefdefender:claimflagplayer");
|
ID_MAP.add("griefdefender:claimflagplayer");
|
||||||
//ID_MAP.add("unknown");
|
|
||||||
|
manager.getCommandCompletions().registerCompletion("gdplayers", c -> {
|
||||||
|
return ImmutableList.copyOf(PermissionUtil.getInstance().getAllLoadedPlayerNames());
|
||||||
|
});
|
||||||
|
manager.getCommandCompletions().registerCompletion("gdgroups", c -> {
|
||||||
|
return ImmutableList.copyOf(PermissionUtil.getInstance().getAllLoadedGroupNames());
|
||||||
|
});
|
||||||
|
manager.getCommandCompletions().registerCompletion("gdclaimtypes", c -> {
|
||||||
|
List<String> tabList = new ArrayList<>();
|
||||||
|
for (ClaimType type : ClaimTypeRegistryModule.getInstance().getAll()) {
|
||||||
|
tabList.add(type.getName());
|
||||||
|
}
|
||||||
|
return ImmutableList.copyOf(tabList);
|
||||||
|
});
|
||||||
|
manager.getCommandCompletions().registerCompletion("gdtrusttypes", c -> {
|
||||||
|
List<String> tabList = new ArrayList<>();
|
||||||
|
for (TrustType type : TrustTypeRegistryModule.getInstance().getAll()) {
|
||||||
|
tabList.add(type.getName());
|
||||||
|
}
|
||||||
|
return ImmutableList.copyOf(tabList);
|
||||||
|
});
|
||||||
|
manager.getCommandCompletions().registerCompletion("gdflags", c -> {
|
||||||
|
List<String> tabList = new ArrayList<>();
|
||||||
|
for (Flag type : FlagRegistryModule.getInstance().getAll()) {
|
||||||
|
tabList.add(type.getName());
|
||||||
|
}
|
||||||
|
return ImmutableList.copyOf(tabList);
|
||||||
|
});
|
||||||
|
manager.getCommandCompletions().registerCompletion("gdoptions", c -> {
|
||||||
|
List<String> tabList = new ArrayList<>();
|
||||||
|
for (Option type : OptionRegistryModule.getInstance().getAll()) {
|
||||||
|
tabList.add(type.getName());
|
||||||
|
}
|
||||||
|
return ImmutableList.copyOf(tabList);
|
||||||
|
});
|
||||||
|
manager.getCommandCompletions().registerCompletion("gdmcids", c -> {
|
||||||
|
List<String> tabList = new ArrayList<>();
|
||||||
|
for (GDItemType type : ItemTypeRegistryModule.getInstance().getAll()) {
|
||||||
|
tabList.add(type.getName());
|
||||||
|
}
|
||||||
|
for (GDEntityType type : EntityTypeRegistryModule.getInstance().getAll()) {
|
||||||
|
tabList.add(type.getName());
|
||||||
|
}
|
||||||
|
return ImmutableList.copyOf(tabList);
|
||||||
|
});
|
||||||
|
manager.getCommandCompletions().registerCompletion("gdtristates", c -> {
|
||||||
|
return ImmutableList.of("true", "false", "undefined");
|
||||||
|
});
|
||||||
|
manager.getCommandCompletions().registerCompletion("gdcontexts", c -> {
|
||||||
|
return ImmutableList.of("context[<override|default|used_item|source|world|server|player|group>]");
|
||||||
|
});
|
||||||
|
manager.getCommandCompletions().registerCompletion("gddummy", c -> {
|
||||||
|
return ImmutableList.of();
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
public PaperCommandManager getCommandManager() {
|
public PaperCommandManager getCommandManager() {
|
||||||
@ -675,10 +733,8 @@ public void loadConfig() {
|
|||||||
GDFlags.populateFlagStatus();
|
GDFlags.populateFlagStatus();
|
||||||
PermissionHolderCache.getInstance().getOrCreatePermissionCache(GriefDefenderPlugin.DEFAULT_HOLDER).invalidateAll();
|
PermissionHolderCache.getInstance().getOrCreatePermissionCache(GriefDefenderPlugin.DEFAULT_HOLDER).invalidateAll();
|
||||||
CLAIM_BLOCK_SYSTEM = BaseStorage.globalConfig.getConfig().playerdata.claimBlockSystem;
|
CLAIM_BLOCK_SYSTEM = BaseStorage.globalConfig.getConfig().playerdata.claimBlockSystem;
|
||||||
final Material modTool = Material.getMaterial(BaseStorage.globalConfig.getConfig().claim.modificationTool);
|
this.modificationTool = ItemTypeRegistryModule.getInstance().getById(BaseStorage.globalConfig.getConfig().claim.modificationTool).orElse(ItemTypeRegistryModule.getInstance().getById("minecraft:golden_shovel").get());
|
||||||
final Material invTool = Material.getMaterial(BaseStorage.globalConfig.getConfig().claim.investigationTool);
|
this.investigationTool = ItemTypeRegistryModule.getInstance().getById(BaseStorage.globalConfig.getConfig().claim.investigationTool).orElse(ItemTypeRegistryModule.getInstance().getById("minecraft:stick").get());
|
||||||
this.modificationTool = modTool == null ? GDMaterials.GOLDEN_SHOVEL : modTool;
|
|
||||||
this.investigationTool = invTool == null? Material.STICK : invTool;
|
|
||||||
this.maxInspectionDistance = BaseStorage.globalConfig.getConfig().general.maxClaimInspectionDistance;
|
this.maxInspectionDistance = BaseStorage.globalConfig.getConfig().general.maxClaimInspectionDistance;
|
||||||
if (this.dataStore != null) {
|
if (this.dataStore != null) {
|
||||||
for (World world : Bukkit.getServer().getWorlds()) {
|
for (World world : Bukkit.getServer().getWorlds()) {
|
||||||
|
@ -32,8 +32,8 @@ public class GDTrustType implements TrustType {
|
|||||||
private final String name;
|
private final String name;
|
||||||
|
|
||||||
public GDTrustType(String id, String name) {
|
public GDTrustType(String id, String name) {
|
||||||
this.id = id;
|
this.id = id.toLowerCase();
|
||||||
this.name = name;
|
this.name = name.toLowerCase();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -48,6 +48,6 @@ public String getName() {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String toString() {
|
public String toString() {
|
||||||
return this.id + ":" + this.name;
|
return this.id;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -913,8 +913,7 @@ private Component getClickableText(CommandSender src, GDClaim claim, Set<Context
|
|||||||
hoverEventText = TextComponent.of("You do not have permission to change flag defaults.").color(TextColor.RED);
|
hoverEventText = TextComponent.of("You do not have permission to change flag defaults.").color(TextColor.RED);
|
||||||
hasPermission = false;
|
hasPermission = false;
|
||||||
}
|
}
|
||||||
}
|
} else if (flagType == FlagType.OVERRIDE) {
|
||||||
if (flagType == FlagType.OVERRIDE) {
|
|
||||||
flagColor = TextColor.RED;
|
flagColor = TextColor.RED;
|
||||||
if (!src.hasPermission(GDPermissions.MANAGE_FLAG_OVERRIDES)) {
|
if (!src.hasPermission(GDPermissions.MANAGE_FLAG_OVERRIDES)) {
|
||||||
hoverEventText = TextComponent.of("This flag has been forced by an admin and cannot be changed.").color(TextColor.RED);
|
hoverEventText = TextComponent.of("This flag has been forced by an admin and cannot be changed.").color(TextColor.RED);
|
||||||
|
@ -26,6 +26,7 @@
|
|||||||
|
|
||||||
import co.aikar.commands.BaseCommand;
|
import co.aikar.commands.BaseCommand;
|
||||||
import co.aikar.commands.annotation.CommandAlias;
|
import co.aikar.commands.annotation.CommandAlias;
|
||||||
|
import co.aikar.commands.annotation.CommandCompletion;
|
||||||
import co.aikar.commands.annotation.CommandPermission;
|
import co.aikar.commands.annotation.CommandPermission;
|
||||||
import co.aikar.commands.annotation.Description;
|
import co.aikar.commands.annotation.Description;
|
||||||
import co.aikar.commands.annotation.Optional;
|
import co.aikar.commands.annotation.Optional;
|
||||||
@ -51,6 +52,7 @@
|
|||||||
@CommandPermission(GDPermissions.COMMAND_SET_ACCRUED_CLAIM_BLOCKS)
|
@CommandPermission(GDPermissions.COMMAND_SET_ACCRUED_CLAIM_BLOCKS)
|
||||||
public class CommandAdjustBonusClaimBlocks extends BaseCommand {
|
public class CommandAdjustBonusClaimBlocks extends BaseCommand {
|
||||||
|
|
||||||
|
@CommandCompletion("@gdplayers @gddummy")
|
||||||
@CommandAlias("acb|adjustclaimblocks")
|
@CommandAlias("acb|adjustclaimblocks")
|
||||||
@Description("Updates a player's accrued claim block total")
|
@Description("Updates a player's accrued claim block total")
|
||||||
@Syntax("<player> <amount>")
|
@Syntax("<player> <amount>")
|
||||||
|
@ -26,6 +26,7 @@
|
|||||||
|
|
||||||
import co.aikar.commands.BaseCommand;
|
import co.aikar.commands.BaseCommand;
|
||||||
import co.aikar.commands.annotation.CommandAlias;
|
import co.aikar.commands.annotation.CommandAlias;
|
||||||
|
import co.aikar.commands.annotation.CommandCompletion;
|
||||||
import co.aikar.commands.annotation.CommandPermission;
|
import co.aikar.commands.annotation.CommandPermission;
|
||||||
import co.aikar.commands.annotation.Description;
|
import co.aikar.commands.annotation.Description;
|
||||||
import co.aikar.commands.annotation.Subcommand;
|
import co.aikar.commands.annotation.Subcommand;
|
||||||
@ -49,6 +50,7 @@
|
|||||||
@CommandPermission(GDPermissions.COMMAND_DELETE_CLAIMS)
|
@CommandPermission(GDPermissions.COMMAND_DELETE_CLAIMS)
|
||||||
public class CommandClaimDeleteAll extends BaseCommand {
|
public class CommandClaimDeleteAll extends BaseCommand {
|
||||||
|
|
||||||
|
@CommandCompletion("@gdplayers @gddummy")
|
||||||
@CommandAlias("deleteall")
|
@CommandAlias("deleteall")
|
||||||
@Description("Delete all of another player's claims.")
|
@Description("Delete all of another player's claims.")
|
||||||
@Subcommand("delete all")
|
@Subcommand("delete all")
|
||||||
|
@ -26,6 +26,7 @@
|
|||||||
|
|
||||||
import co.aikar.commands.InvalidCommandArgument;
|
import co.aikar.commands.InvalidCommandArgument;
|
||||||
import co.aikar.commands.annotation.CommandAlias;
|
import co.aikar.commands.annotation.CommandAlias;
|
||||||
|
import co.aikar.commands.annotation.CommandCompletion;
|
||||||
import co.aikar.commands.annotation.CommandPermission;
|
import co.aikar.commands.annotation.CommandPermission;
|
||||||
import co.aikar.commands.annotation.Description;
|
import co.aikar.commands.annotation.Description;
|
||||||
import co.aikar.commands.annotation.Optional;
|
import co.aikar.commands.annotation.Optional;
|
||||||
@ -43,6 +44,7 @@ public CommandClaimFlag() {
|
|||||||
super(ClaimSubjectType.GLOBAL);
|
super(ClaimSubjectType.GLOBAL);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@CommandCompletion("@gdflags @gdmcids @gdtristates @gdcontexts @gddummy")
|
||||||
@CommandAlias("cf|claimflag")
|
@CommandAlias("cf|claimflag")
|
||||||
@Description("Gets/Sets claim flags in the claim you are standing in.")
|
@Description("Gets/Sets claim flags in the claim you are standing in.")
|
||||||
@Syntax("<flag> <target> <value> [context[key=value]]")
|
@Syntax("<flag> <target> <value> [context[key=value]]")
|
||||||
|
@ -26,6 +26,7 @@
|
|||||||
|
|
||||||
import co.aikar.commands.InvalidCommandArgument;
|
import co.aikar.commands.InvalidCommandArgument;
|
||||||
import co.aikar.commands.annotation.CommandAlias;
|
import co.aikar.commands.annotation.CommandAlias;
|
||||||
|
import co.aikar.commands.annotation.CommandCompletion;
|
||||||
import co.aikar.commands.annotation.CommandPermission;
|
import co.aikar.commands.annotation.CommandPermission;
|
||||||
import co.aikar.commands.annotation.Description;
|
import co.aikar.commands.annotation.Description;
|
||||||
import co.aikar.commands.annotation.Optional;
|
import co.aikar.commands.annotation.Optional;
|
||||||
@ -48,6 +49,7 @@ public CommandClaimFlagGroup() {
|
|||||||
super(ClaimSubjectType.GROUP);
|
super(ClaimSubjectType.GROUP);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@CommandCompletion("@gdgroups @gdflags @gdmcids @gdtristates @gdcontexts @gddummy")
|
||||||
@CommandAlias("cfg")
|
@CommandAlias("cfg")
|
||||||
@Description("Gets/Sets flag permission for a group in claim you are standing in.")
|
@Description("Gets/Sets flag permission for a group in claim you are standing in.")
|
||||||
@Syntax("<group> <flag> <target> <value> [context[key=value]]")
|
@Syntax("<group> <flag> <target> <value> [context[key=value]]")
|
||||||
|
@ -26,6 +26,7 @@
|
|||||||
|
|
||||||
import co.aikar.commands.InvalidCommandArgument;
|
import co.aikar.commands.InvalidCommandArgument;
|
||||||
import co.aikar.commands.annotation.CommandAlias;
|
import co.aikar.commands.annotation.CommandAlias;
|
||||||
|
import co.aikar.commands.annotation.CommandCompletion;
|
||||||
import co.aikar.commands.annotation.CommandPermission;
|
import co.aikar.commands.annotation.CommandPermission;
|
||||||
import co.aikar.commands.annotation.Description;
|
import co.aikar.commands.annotation.Description;
|
||||||
import co.aikar.commands.annotation.Optional;
|
import co.aikar.commands.annotation.Optional;
|
||||||
@ -48,6 +49,7 @@ public CommandClaimFlagPlayer() {
|
|||||||
super(ClaimSubjectType.PLAYER);
|
super(ClaimSubjectType.PLAYER);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@CommandCompletion("@gdplayers @gdflags @gdmcids @gdtristates @gdcontexts @gddummy")
|
||||||
@CommandAlias("cfp")
|
@CommandAlias("cfp")
|
||||||
@Description("Gets/Sets flag permission for a player in claim you are standing in.")
|
@Description("Gets/Sets flag permission for a player in claim you are standing in.")
|
||||||
@Syntax("<player> <flag> <target> <value> [context[key=value]]")
|
@Syntax("<player> <flag> <target> <value> [context[key=value]]")
|
||||||
|
@ -26,6 +26,7 @@
|
|||||||
|
|
||||||
import co.aikar.commands.BaseCommand;
|
import co.aikar.commands.BaseCommand;
|
||||||
import co.aikar.commands.annotation.CommandAlias;
|
import co.aikar.commands.annotation.CommandAlias;
|
||||||
|
import co.aikar.commands.annotation.CommandCompletion;
|
||||||
import co.aikar.commands.annotation.CommandPermission;
|
import co.aikar.commands.annotation.CommandPermission;
|
||||||
import co.aikar.commands.annotation.Subcommand;
|
import co.aikar.commands.annotation.Subcommand;
|
||||||
import co.aikar.commands.annotation.Syntax;
|
import co.aikar.commands.annotation.Syntax;
|
||||||
|
@ -27,6 +27,7 @@
|
|||||||
import co.aikar.commands.BaseCommand;
|
import co.aikar.commands.BaseCommand;
|
||||||
import co.aikar.commands.InvalidCommandArgument;
|
import co.aikar.commands.InvalidCommandArgument;
|
||||||
import co.aikar.commands.annotation.CommandAlias;
|
import co.aikar.commands.annotation.CommandAlias;
|
||||||
|
import co.aikar.commands.annotation.CommandCompletion;
|
||||||
import co.aikar.commands.annotation.CommandPermission;
|
import co.aikar.commands.annotation.CommandPermission;
|
||||||
import co.aikar.commands.annotation.Description;
|
import co.aikar.commands.annotation.Description;
|
||||||
import co.aikar.commands.annotation.Optional;
|
import co.aikar.commands.annotation.Optional;
|
||||||
@ -70,6 +71,7 @@ public class CommandClaimOption extends BaseCommand {
|
|||||||
private ClaimSubjectType subjectType = ClaimSubjectType.GLOBAL;
|
private ClaimSubjectType subjectType = ClaimSubjectType.GLOBAL;
|
||||||
private String friendlySubjectName;
|
private String friendlySubjectName;
|
||||||
|
|
||||||
|
@CommandCompletion("@gdoptions @gddummy")
|
||||||
@CommandAlias("cop|claimoption")
|
@CommandAlias("cop|claimoption")
|
||||||
@Description("Gets/Sets claim options in the claim you are standing in.")
|
@Description("Gets/Sets claim options in the claim you are standing in.")
|
||||||
@Syntax("[<option> <value> [context[key=value]]")
|
@Syntax("[<option> <value> [context[key=value]]")
|
||||||
|
@ -27,6 +27,7 @@
|
|||||||
import co.aikar.commands.BaseCommand;
|
import co.aikar.commands.BaseCommand;
|
||||||
import co.aikar.commands.InvalidCommandArgument;
|
import co.aikar.commands.InvalidCommandArgument;
|
||||||
import co.aikar.commands.annotation.CommandAlias;
|
import co.aikar.commands.annotation.CommandAlias;
|
||||||
|
import co.aikar.commands.annotation.CommandCompletion;
|
||||||
import co.aikar.commands.annotation.CommandPermission;
|
import co.aikar.commands.annotation.CommandPermission;
|
||||||
import co.aikar.commands.annotation.Description;
|
import co.aikar.commands.annotation.Description;
|
||||||
import co.aikar.commands.annotation.Optional;
|
import co.aikar.commands.annotation.Optional;
|
||||||
@ -63,6 +64,7 @@
|
|||||||
@CommandPermission(GDPermissions.COMMAND_CLAIM_PERMISSION_GROUP)
|
@CommandPermission(GDPermissions.COMMAND_CLAIM_PERMISSION_GROUP)
|
||||||
public class CommandClaimPermissionGroup extends BaseCommand {
|
public class CommandClaimPermissionGroup extends BaseCommand {
|
||||||
|
|
||||||
|
@CommandCompletion("@gdgroups @gddummy")
|
||||||
@CommandAlias("cpg")
|
@CommandAlias("cpg")
|
||||||
@Description("Sets a permission on a group with a claim context.")
|
@Description("Sets a permission on a group with a claim context.")
|
||||||
@Syntax("<group> [<permission> <value>]")
|
@Syntax("<group> [<permission> <value>]")
|
||||||
|
@ -27,6 +27,7 @@
|
|||||||
import co.aikar.commands.BaseCommand;
|
import co.aikar.commands.BaseCommand;
|
||||||
import co.aikar.commands.InvalidCommandArgument;
|
import co.aikar.commands.InvalidCommandArgument;
|
||||||
import co.aikar.commands.annotation.CommandAlias;
|
import co.aikar.commands.annotation.CommandAlias;
|
||||||
|
import co.aikar.commands.annotation.CommandCompletion;
|
||||||
import co.aikar.commands.annotation.CommandPermission;
|
import co.aikar.commands.annotation.CommandPermission;
|
||||||
import co.aikar.commands.annotation.Description;
|
import co.aikar.commands.annotation.Description;
|
||||||
import co.aikar.commands.annotation.Optional;
|
import co.aikar.commands.annotation.Optional;
|
||||||
@ -63,6 +64,7 @@
|
|||||||
@CommandPermission(GDPermissions.COMMAND_CLAIM_PERMISSION_PLAYER)
|
@CommandPermission(GDPermissions.COMMAND_CLAIM_PERMISSION_PLAYER)
|
||||||
public class CommandClaimPermissionPlayer extends BaseCommand {
|
public class CommandClaimPermissionPlayer extends BaseCommand {
|
||||||
|
|
||||||
|
@CommandCompletion("@gdplayers @gddummy")
|
||||||
@CommandAlias("cpp")
|
@CommandAlias("cpp")
|
||||||
@Description("Sets a permission on a player with a claim context.")
|
@Description("Sets a permission on a player with a claim context.")
|
||||||
@Syntax("<player> [<permission> <value>]")
|
@Syntax("<player> [<permission> <value>]")
|
||||||
|
@ -2,6 +2,7 @@
|
|||||||
|
|
||||||
import co.aikar.commands.BaseCommand;
|
import co.aikar.commands.BaseCommand;
|
||||||
import co.aikar.commands.annotation.CommandAlias;
|
import co.aikar.commands.annotation.CommandAlias;
|
||||||
|
import co.aikar.commands.annotation.CommandCompletion;
|
||||||
import co.aikar.commands.annotation.CommandPermission;
|
import co.aikar.commands.annotation.CommandPermission;
|
||||||
import co.aikar.commands.annotation.Description;
|
import co.aikar.commands.annotation.Description;
|
||||||
import co.aikar.commands.annotation.Subcommand;
|
import co.aikar.commands.annotation.Subcommand;
|
||||||
@ -26,6 +27,7 @@
|
|||||||
@CommandPermission(GDPermissions.COMMAND_TRANSFER_CLAIM)
|
@CommandPermission(GDPermissions.COMMAND_TRANSFER_CLAIM)
|
||||||
public class CommandClaimTransfer extends BaseCommand {
|
public class CommandClaimTransfer extends BaseCommand {
|
||||||
|
|
||||||
|
@CommandCompletion("@gdplayers @gddummy")
|
||||||
@CommandAlias("claimtransfer|transferclaim")
|
@CommandAlias("claimtransfer|transferclaim")
|
||||||
@Description("Transfers a basic or admin claim to another player.")
|
@Description("Transfers a basic or admin claim to another player.")
|
||||||
@Subcommand("claim transfer")
|
@Subcommand("claim transfer")
|
||||||
|
@ -27,6 +27,7 @@
|
|||||||
import co.aikar.commands.BaseCommand;
|
import co.aikar.commands.BaseCommand;
|
||||||
import co.aikar.commands.InvalidCommandArgument;
|
import co.aikar.commands.InvalidCommandArgument;
|
||||||
import co.aikar.commands.annotation.CommandAlias;
|
import co.aikar.commands.annotation.CommandAlias;
|
||||||
|
import co.aikar.commands.annotation.CommandCompletion;
|
||||||
import co.aikar.commands.annotation.CommandPermission;
|
import co.aikar.commands.annotation.CommandPermission;
|
||||||
import co.aikar.commands.annotation.Description;
|
import co.aikar.commands.annotation.Description;
|
||||||
import co.aikar.commands.annotation.Optional;
|
import co.aikar.commands.annotation.Optional;
|
||||||
@ -67,6 +68,7 @@
|
|||||||
@CommandPermission(GDPermissions.COMMAND_PLAYER_INFO_BASE)
|
@CommandPermission(GDPermissions.COMMAND_PLAYER_INFO_BASE)
|
||||||
public class CommandPlayerInfo extends BaseCommand {
|
public class CommandPlayerInfo extends BaseCommand {
|
||||||
|
|
||||||
|
@CommandCompletion("@gdplayers @gddummy")
|
||||||
@CommandAlias("playerinfo")
|
@CommandAlias("playerinfo")
|
||||||
@Description("Gets information about a player.")
|
@Description("Gets information about a player.")
|
||||||
@Syntax("[<player>|<player> <world>]")
|
@Syntax("[<player>|<player> <world>]")
|
||||||
|
@ -56,7 +56,7 @@ public void execute(Player player) {
|
|||||||
if (!NMSUtil.getInstance().hasItemInOneHand(player, GriefDefenderPlugin.getInstance().modificationTool)) {
|
if (!NMSUtil.getInstance().hasItemInOneHand(player, GriefDefenderPlugin.getInstance().modificationTool)) {
|
||||||
TextAdapter.sendComponent(player, TextComponent.builder("")
|
TextAdapter.sendComponent(player, TextComponent.builder("")
|
||||||
.append("You do not have ", TextColor.RED)
|
.append("You do not have ", TextColor.RED)
|
||||||
.append(GriefDefenderPlugin.getInstance().modificationTool.name().toLowerCase(), TextColor.GREEN)
|
.append(GriefDefenderPlugin.getInstance().modificationTool.getName().toLowerCase(), TextColor.GREEN)
|
||||||
.append(" equipped.", TextColor.RED).build());
|
.append(" equipped.", TextColor.RED).build());
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -27,6 +27,7 @@
|
|||||||
import co.aikar.commands.BaseCommand;
|
import co.aikar.commands.BaseCommand;
|
||||||
import co.aikar.commands.InvalidCommandArgument;
|
import co.aikar.commands.InvalidCommandArgument;
|
||||||
import co.aikar.commands.annotation.CommandAlias;
|
import co.aikar.commands.annotation.CommandAlias;
|
||||||
|
import co.aikar.commands.annotation.CommandCompletion;
|
||||||
import co.aikar.commands.annotation.CommandPermission;
|
import co.aikar.commands.annotation.CommandPermission;
|
||||||
import co.aikar.commands.annotation.Description;
|
import co.aikar.commands.annotation.Description;
|
||||||
import co.aikar.commands.annotation.Subcommand;
|
import co.aikar.commands.annotation.Subcommand;
|
||||||
@ -49,6 +50,7 @@
|
|||||||
@CommandPermission(GDPermissions.COMMAND_SET_ACCRUED_CLAIM_BLOCKS)
|
@CommandPermission(GDPermissions.COMMAND_SET_ACCRUED_CLAIM_BLOCKS)
|
||||||
public class CommandSetAccruedClaimBlocks extends BaseCommand {
|
public class CommandSetAccruedClaimBlocks extends BaseCommand {
|
||||||
|
|
||||||
|
@CommandCompletion("@gdplayers @gddummy")
|
||||||
@CommandAlias("setaccruedblocks")
|
@CommandAlias("setaccruedblocks")
|
||||||
@Description("Updates a player's accrued claim block total.")
|
@Description("Updates a player's accrued claim block total.")
|
||||||
@Syntax("<amount>")
|
@Syntax("<amount>")
|
||||||
|
@ -26,6 +26,7 @@
|
|||||||
|
|
||||||
import co.aikar.commands.BaseCommand;
|
import co.aikar.commands.BaseCommand;
|
||||||
import co.aikar.commands.annotation.CommandAlias;
|
import co.aikar.commands.annotation.CommandAlias;
|
||||||
|
import co.aikar.commands.annotation.CommandCompletion;
|
||||||
import co.aikar.commands.annotation.CommandPermission;
|
import co.aikar.commands.annotation.CommandPermission;
|
||||||
import co.aikar.commands.annotation.Description;
|
import co.aikar.commands.annotation.Description;
|
||||||
import co.aikar.commands.annotation.Subcommand;
|
import co.aikar.commands.annotation.Subcommand;
|
||||||
@ -64,6 +65,7 @@
|
|||||||
@CommandPermission(GDPermissions.COMMAND_TRUST_GROUP)
|
@CommandPermission(GDPermissions.COMMAND_TRUST_GROUP)
|
||||||
public class CommandTrustGroup extends BaseCommand {
|
public class CommandTrustGroup extends BaseCommand {
|
||||||
|
|
||||||
|
@CommandCompletion("@gdgroups @gdtrusttypes @gddummy")
|
||||||
@CommandAlias("trustgroup")
|
@CommandAlias("trustgroup")
|
||||||
@Description("Grants a group access to your claim."
|
@Description("Grants a group access to your claim."
|
||||||
+ "\nAccessor: access to interact with all blocks except inventory."
|
+ "\nAccessor: access to interact with all blocks except inventory."
|
||||||
|
@ -26,6 +26,7 @@
|
|||||||
|
|
||||||
import co.aikar.commands.BaseCommand;
|
import co.aikar.commands.BaseCommand;
|
||||||
import co.aikar.commands.annotation.CommandAlias;
|
import co.aikar.commands.annotation.CommandAlias;
|
||||||
|
import co.aikar.commands.annotation.CommandCompletion;
|
||||||
import co.aikar.commands.annotation.CommandPermission;
|
import co.aikar.commands.annotation.CommandPermission;
|
||||||
import co.aikar.commands.annotation.Description;
|
import co.aikar.commands.annotation.Description;
|
||||||
import co.aikar.commands.annotation.Subcommand;
|
import co.aikar.commands.annotation.Subcommand;
|
||||||
@ -59,6 +60,7 @@
|
|||||||
@CommandPermission(GDPermissions.COMMAND_TRUSTALL_GROUP)
|
@CommandPermission(GDPermissions.COMMAND_TRUSTALL_GROUP)
|
||||||
public class CommandTrustGroupAll extends BaseCommand {
|
public class CommandTrustGroupAll extends BaseCommand {
|
||||||
|
|
||||||
|
@CommandCompletion("@gdgroups @gdtrusttypes @gddummy")
|
||||||
@CommandAlias("trustallgroup")
|
@CommandAlias("trustallgroup")
|
||||||
@Description("Grants a group access to all your claims."
|
@Description("Grants a group access to all your claims."
|
||||||
+ "\nAccessor: access to interact with all blocks except inventory."
|
+ "\nAccessor: access to interact with all blocks except inventory."
|
||||||
|
@ -26,6 +26,7 @@
|
|||||||
|
|
||||||
import co.aikar.commands.BaseCommand;
|
import co.aikar.commands.BaseCommand;
|
||||||
import co.aikar.commands.annotation.CommandAlias;
|
import co.aikar.commands.annotation.CommandAlias;
|
||||||
|
import co.aikar.commands.annotation.CommandCompletion;
|
||||||
import co.aikar.commands.annotation.CommandPermission;
|
import co.aikar.commands.annotation.CommandPermission;
|
||||||
import co.aikar.commands.annotation.Description;
|
import co.aikar.commands.annotation.Description;
|
||||||
import co.aikar.commands.annotation.Optional;
|
import co.aikar.commands.annotation.Optional;
|
||||||
@ -60,6 +61,7 @@
|
|||||||
@CommandPermission(GDPermissions.COMMAND_TRUST_PLAYER)
|
@CommandPermission(GDPermissions.COMMAND_TRUST_PLAYER)
|
||||||
public class CommandTrustPlayer extends BaseCommand {
|
public class CommandTrustPlayer extends BaseCommand {
|
||||||
|
|
||||||
|
@CommandCompletion("@gdplayers @gdtrusttypes @gddummy")
|
||||||
@CommandAlias("trust")
|
@CommandAlias("trust")
|
||||||
@Description("Grants a player access to your claim."
|
@Description("Grants a player access to your claim."
|
||||||
+ "\nAccessor: access to interact with all blocks except inventory."
|
+ "\nAccessor: access to interact with all blocks except inventory."
|
||||||
|
@ -26,6 +26,7 @@
|
|||||||
|
|
||||||
import co.aikar.commands.BaseCommand;
|
import co.aikar.commands.BaseCommand;
|
||||||
import co.aikar.commands.annotation.CommandAlias;
|
import co.aikar.commands.annotation.CommandAlias;
|
||||||
|
import co.aikar.commands.annotation.CommandCompletion;
|
||||||
import co.aikar.commands.annotation.CommandPermission;
|
import co.aikar.commands.annotation.CommandPermission;
|
||||||
import co.aikar.commands.annotation.Description;
|
import co.aikar.commands.annotation.Description;
|
||||||
import co.aikar.commands.annotation.Optional;
|
import co.aikar.commands.annotation.Optional;
|
||||||
@ -62,6 +63,7 @@
|
|||||||
@CommandPermission(GDPermissions.COMMAND_TRUSTALL_PLAYER)
|
@CommandPermission(GDPermissions.COMMAND_TRUSTALL_PLAYER)
|
||||||
public class CommandTrustPlayerAll extends BaseCommand {
|
public class CommandTrustPlayerAll extends BaseCommand {
|
||||||
|
|
||||||
|
@CommandCompletion("@gdplayers @gdtrusttypes @gddummy")
|
||||||
@CommandAlias("trustall")
|
@CommandAlias("trustall")
|
||||||
@Description("Grants a player access to all your claims."
|
@Description("Grants a player access to all your claims."
|
||||||
+ "\nAccessor: access to interact with all blocks except inventory."
|
+ "\nAccessor: access to interact with all blocks except inventory."
|
||||||
|
@ -26,6 +26,7 @@
|
|||||||
|
|
||||||
import co.aikar.commands.BaseCommand;
|
import co.aikar.commands.BaseCommand;
|
||||||
import co.aikar.commands.annotation.CommandAlias;
|
import co.aikar.commands.annotation.CommandAlias;
|
||||||
|
import co.aikar.commands.annotation.CommandCompletion;
|
||||||
import co.aikar.commands.annotation.CommandPermission;
|
import co.aikar.commands.annotation.CommandPermission;
|
||||||
import co.aikar.commands.annotation.Description;
|
import co.aikar.commands.annotation.Description;
|
||||||
import co.aikar.commands.annotation.Subcommand;
|
import co.aikar.commands.annotation.Subcommand;
|
||||||
@ -54,6 +55,7 @@
|
|||||||
@CommandPermission(GDPermissions.COMMAND_UNTRUST_GROUP)
|
@CommandPermission(GDPermissions.COMMAND_UNTRUST_GROUP)
|
||||||
public class CommandUntrustGroup extends BaseCommand {
|
public class CommandUntrustGroup extends BaseCommand {
|
||||||
|
|
||||||
|
@CommandCompletion("@gdgroups @gddummy")
|
||||||
@CommandAlias("untrustgroup")
|
@CommandAlias("untrustgroup")
|
||||||
@Description("Revokes group access to your claim.")
|
@Description("Revokes group access to your claim.")
|
||||||
@Subcommand("untrust group")
|
@Subcommand("untrust group")
|
||||||
|
@ -26,6 +26,7 @@
|
|||||||
|
|
||||||
import co.aikar.commands.BaseCommand;
|
import co.aikar.commands.BaseCommand;
|
||||||
import co.aikar.commands.annotation.CommandAlias;
|
import co.aikar.commands.annotation.CommandAlias;
|
||||||
|
import co.aikar.commands.annotation.CommandCompletion;
|
||||||
import co.aikar.commands.annotation.CommandPermission;
|
import co.aikar.commands.annotation.CommandPermission;
|
||||||
import co.aikar.commands.annotation.Description;
|
import co.aikar.commands.annotation.Description;
|
||||||
import co.aikar.commands.annotation.Subcommand;
|
import co.aikar.commands.annotation.Subcommand;
|
||||||
@ -58,6 +59,7 @@
|
|||||||
@CommandPermission(GDPermissions.COMMAND_UNTRUSTALL_GROUP)
|
@CommandPermission(GDPermissions.COMMAND_UNTRUSTALL_GROUP)
|
||||||
public class CommandUntrustGroupAll extends BaseCommand {
|
public class CommandUntrustGroupAll extends BaseCommand {
|
||||||
|
|
||||||
|
@CommandCompletion("@gdgroups @gdtrusttypes @gddummy")
|
||||||
@CommandAlias("untrustallgroup")
|
@CommandAlias("untrustallgroup")
|
||||||
@Description("Revokes group access to all your claims")
|
@Description("Revokes group access to all your claims")
|
||||||
@Syntax("<group>")
|
@Syntax("<group>")
|
||||||
|
@ -26,6 +26,7 @@
|
|||||||
|
|
||||||
import co.aikar.commands.BaseCommand;
|
import co.aikar.commands.BaseCommand;
|
||||||
import co.aikar.commands.annotation.CommandAlias;
|
import co.aikar.commands.annotation.CommandAlias;
|
||||||
|
import co.aikar.commands.annotation.CommandCompletion;
|
||||||
import co.aikar.commands.annotation.CommandPermission;
|
import co.aikar.commands.annotation.CommandPermission;
|
||||||
import co.aikar.commands.annotation.Description;
|
import co.aikar.commands.annotation.Description;
|
||||||
import co.aikar.commands.annotation.Subcommand;
|
import co.aikar.commands.annotation.Subcommand;
|
||||||
@ -55,6 +56,7 @@
|
|||||||
@CommandPermission(GDPermissions.COMMAND_UNTRUST_PLAYER)
|
@CommandPermission(GDPermissions.COMMAND_UNTRUST_PLAYER)
|
||||||
public class CommandUntrustPlayer extends BaseCommand {
|
public class CommandUntrustPlayer extends BaseCommand {
|
||||||
|
|
||||||
|
@CommandCompletion("@gdplayers @gddummy")
|
||||||
@CommandAlias("untrust")
|
@CommandAlias("untrust")
|
||||||
@Description("Revokes player access to your claim.")
|
@Description("Revokes player access to your claim.")
|
||||||
@Syntax("<player>")
|
@Syntax("<player>")
|
||||||
|
@ -26,6 +26,7 @@
|
|||||||
|
|
||||||
import co.aikar.commands.BaseCommand;
|
import co.aikar.commands.BaseCommand;
|
||||||
import co.aikar.commands.annotation.CommandAlias;
|
import co.aikar.commands.annotation.CommandAlias;
|
||||||
|
import co.aikar.commands.annotation.CommandCompletion;
|
||||||
import co.aikar.commands.annotation.CommandPermission;
|
import co.aikar.commands.annotation.CommandPermission;
|
||||||
import co.aikar.commands.annotation.Description;
|
import co.aikar.commands.annotation.Description;
|
||||||
import co.aikar.commands.annotation.Subcommand;
|
import co.aikar.commands.annotation.Subcommand;
|
||||||
@ -58,6 +59,7 @@
|
|||||||
@CommandPermission(GDPermissions.COMMAND_UNTRUSTALL_PLAYER)
|
@CommandPermission(GDPermissions.COMMAND_UNTRUSTALL_PLAYER)
|
||||||
public class CommandUntrustPlayerAll extends BaseCommand {
|
public class CommandUntrustPlayerAll extends BaseCommand {
|
||||||
|
|
||||||
|
@CommandCompletion("@gdplayers @gddummy")
|
||||||
@CommandAlias("untrustall")
|
@CommandAlias("untrustall")
|
||||||
@Description("Revokes player access to all your claims.")
|
@Description("Revokes player access to all your claims.")
|
||||||
@Syntax("<player>")
|
@Syntax("<player>")
|
||||||
|
@ -78,6 +78,8 @@
|
|||||||
import org.bukkit.World;
|
import org.bukkit.World;
|
||||||
import org.bukkit.block.Block;
|
import org.bukkit.block.Block;
|
||||||
import org.bukkit.block.BlockState;
|
import org.bukkit.block.BlockState;
|
||||||
|
import org.bukkit.entity.ArmorStand;
|
||||||
|
import org.bukkit.entity.Entity;
|
||||||
import org.bukkit.entity.HumanEntity;
|
import org.bukkit.entity.HumanEntity;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.event.Event.Result;
|
import org.bukkit.event.Event.Result;
|
||||||
@ -87,10 +89,12 @@
|
|||||||
import org.bukkit.event.block.Action;
|
import org.bukkit.event.block.Action;
|
||||||
import org.bukkit.event.inventory.InventoryClickEvent;
|
import org.bukkit.event.inventory.InventoryClickEvent;
|
||||||
import org.bukkit.event.inventory.InventoryOpenEvent;
|
import org.bukkit.event.inventory.InventoryOpenEvent;
|
||||||
|
import org.bukkit.event.player.PlayerArmorStandManipulateEvent;
|
||||||
import org.bukkit.event.player.PlayerBucketEmptyEvent;
|
import org.bukkit.event.player.PlayerBucketEmptyEvent;
|
||||||
import org.bukkit.event.player.PlayerBucketEvent;
|
import org.bukkit.event.player.PlayerBucketEvent;
|
||||||
import org.bukkit.event.player.PlayerBucketFillEvent;
|
import org.bukkit.event.player.PlayerBucketFillEvent;
|
||||||
import org.bukkit.event.player.PlayerDropItemEvent;
|
import org.bukkit.event.player.PlayerDropItemEvent;
|
||||||
|
import org.bukkit.event.player.PlayerInteractEntityEvent;
|
||||||
import org.bukkit.event.player.PlayerInteractEvent;
|
import org.bukkit.event.player.PlayerInteractEvent;
|
||||||
import org.bukkit.event.player.PlayerItemHeldEvent;
|
import org.bukkit.event.player.PlayerItemHeldEvent;
|
||||||
import org.bukkit.event.player.PlayerJoinEvent;
|
import org.bukkit.event.player.PlayerJoinEvent;
|
||||||
@ -206,7 +210,7 @@ public void onPlayerChangeHeldItem(PlayerItemHeldEvent event) {
|
|||||||
|
|
||||||
int newSlot = event.getNewSlot();
|
int newSlot = event.getNewSlot();
|
||||||
ItemStack newItemStack = player.getInventory().getItem(newSlot);
|
ItemStack newItemStack = player.getInventory().getItem(newSlot);
|
||||||
if(newItemStack != null && newItemStack.getType().equals(GriefDefenderPlugin.getInstance().modificationTool)) {
|
if(newItemStack != null && NMSUtil.getInstance().itemsEqual(newItemStack, GriefDefenderPlugin.getInstance().modificationTool)) {
|
||||||
playerData.lastShovelLocation = null;
|
playerData.lastShovelLocation = null;
|
||||||
playerData.endShovelLocation = null;
|
playerData.endShovelLocation = null;
|
||||||
playerData.claimResizing = null;
|
playerData.claimResizing = null;
|
||||||
@ -398,8 +402,8 @@ public void onPlayerInteractItem(PlayerInteractEvent event) {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (itemInHand.getType().equals(GriefDefenderPlugin.getInstance().modificationTool) ||
|
if (NMSUtil.getInstance().itemsEqual(itemInHand, GriefDefenderPlugin.getInstance().modificationTool) ||
|
||||||
itemInHand.getType().equals(GriefDefenderPlugin.getInstance().investigationTool)) {
|
NMSUtil.getInstance().itemsEqual(itemInHand, GriefDefenderPlugin.getInstance().investigationTool)) {
|
||||||
if (investigateClaim(event, player, clickedBlock, itemInHand)) {
|
if (investigateClaim(event, player, clickedBlock, itemInHand)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -420,6 +424,66 @@ public void onPlayerInteractItem(PlayerInteractEvent event) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@EventHandler(priority = EventPriority.LOWEST)
|
||||||
|
public void onPlayerArmorStandManipulateEvent(PlayerArmorStandManipulateEvent event) {
|
||||||
|
onPlayerInteractEntity(event);
|
||||||
|
}
|
||||||
|
|
||||||
|
@EventHandler(priority = EventPriority.LOWEST)
|
||||||
|
public void onPlayerInteractEntity(PlayerInteractEntityEvent event) {
|
||||||
|
final Player player = event.getPlayer();
|
||||||
|
final World world = player.getWorld();
|
||||||
|
if (!GDFlags.INTERACT_ENTITY_SECONDARY || !GriefDefenderPlugin.getInstance().claimsEnabledForWorld(player.getWorld().getUID())) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
final Entity targetEntity = event.getRightClicked();
|
||||||
|
final Location location = targetEntity.getLocation();
|
||||||
|
final ItemStack activeItem = NMSUtil.getInstance().getActiveItem(player, event);
|
||||||
|
if (activeItem != null && activeItem.getType() != Material.AIR) {
|
||||||
|
// handle item usage
|
||||||
|
if (!GDFlags.INTERACT_ITEM_SECONDARY || !GriefDefenderPlugin.getInstance().claimsEnabledForWorld(world.getUID())) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (GriefDefenderPlugin.isTargetIdBlacklisted(Flags.INTERACT_ITEM_SECONDARY.getName(), activeItem, world.getUID())) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
final GDClaim claim = this.dataStore.getClaimAt(location);
|
||||||
|
if (GDPermissionManager.getInstance().getFinalPermission(event, location, claim, GDPermissions.INTERACT_ITEM_SECONDARY, player, activeItem, player, TrustTypes.ACCESSOR, true) == Tristate.FALSE) {
|
||||||
|
Component message = GriefDefenderPlugin.getInstance().messageData.getMessage(MessageStorage.PERMISSION_INTERACT_ITEM,
|
||||||
|
ImmutableMap.of(
|
||||||
|
"player", claim.getOwnerName(),
|
||||||
|
"item", NMSUtil.getInstance().getMaterialKey(activeItem.getType())));
|
||||||
|
GriefDefenderPlugin.sendClaimDenyMessage(claim, player, message);
|
||||||
|
Thread.dumpStack();
|
||||||
|
event.setCancelled(true);
|
||||||
|
lastInteractItemCancelled = true;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Item permission checks passed, check entity
|
||||||
|
final Object source = activeItem != null && activeItem.getType() != Material.AIR ? activeItem : player;
|
||||||
|
if (GriefDefenderPlugin.isTargetIdBlacklisted(Flags.INTERACT_ENTITY_SECONDARY.getName(), targetEntity, player.getWorld().getUID())) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
GDTimings.PLAYER_INTERACT_ENTITY_SECONDARY_EVENT.startTiming();
|
||||||
|
final GDClaim claim = this.dataStore.getClaimAt(location);
|
||||||
|
|
||||||
|
Tristate result = GDPermissionManager.getInstance().getFinalPermission(event, location, claim, GDPermissions.INTERACT_ENTITY_SECONDARY, source, targetEntity, player, TrustTypes.ACCESSOR, true);
|
||||||
|
if (result == Tristate.TRUE && targetEntity instanceof ArmorStand) {
|
||||||
|
result = GDPermissionManager.getInstance().getFinalPermission(event, location, claim, GDPermissions.INVENTORY_OPEN, source, targetEntity, player, TrustTypes.CONTAINER, false);
|
||||||
|
}
|
||||||
|
if (result == Tristate.FALSE) {
|
||||||
|
event.setCancelled(true);
|
||||||
|
this.sendInteractEntityDenyMessage(activeItem, targetEntity, claim, player);
|
||||||
|
}
|
||||||
|
GDTimings.PLAYER_INTERACT_ENTITY_SECONDARY_EVENT.stopTiming();
|
||||||
|
}
|
||||||
|
|
||||||
@EventHandler(priority = EventPriority.LOWEST)
|
@EventHandler(priority = EventPriority.LOWEST)
|
||||||
public void onPlayerBucketEmptyEvent(PlayerBucketEmptyEvent event) {
|
public void onPlayerBucketEmptyEvent(PlayerBucketEmptyEvent event) {
|
||||||
onPlayerBucketEvent(event);
|
onPlayerBucketEvent(event);
|
||||||
@ -507,7 +571,7 @@ public void onPlayerInteractBlockPrimary(PlayerInteractEvent event, Player playe
|
|||||||
@EventHandler(priority = EventPriority.LOWEST)
|
@EventHandler(priority = EventPriority.LOWEST)
|
||||||
public void onPlayerInteractBlockSecondary(PlayerInteractEvent event) {
|
public void onPlayerInteractBlockSecondary(PlayerInteractEvent event) {
|
||||||
final Player player = event.getPlayer();
|
final Player player = event.getPlayer();
|
||||||
if (event.getAction() != Action.RIGHT_CLICK_AIR && event.getAction() != Action.RIGHT_CLICK_BLOCK) {
|
if (event.getAction() != Action.RIGHT_CLICK_AIR && event.getAction() != Action.RIGHT_CLICK_BLOCK && event.getAction() != Action.PHYSICAL) {
|
||||||
onPlayerInteractBlockPrimary(event, player);
|
onPlayerInteractBlockPrimary(event, player);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -532,7 +596,7 @@ public void onPlayerInteractBlockSecondary(PlayerInteractEvent event) {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (itemInHand != null && (itemInHand.getType().equals(GriefDefenderPlugin.getInstance().modificationTool))) {
|
if (itemInHand != null && NMSUtil.getInstance().itemsEqual(itemInHand, GriefDefenderPlugin.getInstance().modificationTool)) {
|
||||||
onPlayerHandleShovelAction(event, clickedBlock, player, itemInHand, playerData);
|
onPlayerHandleShovelAction(event, clickedBlock, player, itemInHand, playerData);
|
||||||
// avoid changing blocks after using a shovel
|
// avoid changing blocks after using a shovel
|
||||||
event.setUseInteractedBlock(Result.DENY);
|
event.setUseInteractedBlock(Result.DENY);
|
||||||
@ -546,7 +610,7 @@ public void onPlayerInteractBlockSecondary(PlayerInteractEvent event) {
|
|||||||
}
|
}
|
||||||
final GDClaim claim = this.dataStore.getClaimAt(location);
|
final GDClaim claim = this.dataStore.getClaimAt(location);
|
||||||
//GriefDefender.getPermissionManager().getFinalPermission(claim, Flags.ENTITY_SPAWN, source, target, user)
|
//GriefDefender.getPermissionManager().getFinalPermission(claim, Flags.ENTITY_SPAWN, source, target, user)
|
||||||
final TrustType trustType = NMSUtil.getInstance().isBlockContainer(clickedBlock) ? TrustTypes.CONTAINER : TrustTypes.ACCESSOR;
|
final TrustType trustType = NMSUtil.getInstance().isBlockContainer(clickedBlock) ? TrustTypes.CONTAINER : event.hasBlock() ? TrustTypes.BUILDER : TrustTypes.ACCESSOR;
|
||||||
if (GDFlags.INTERACT_BLOCK_SECONDARY && playerData != null) {
|
if (GDFlags.INTERACT_BLOCK_SECONDARY && playerData != null) {
|
||||||
String permission = GDPermissions.INTERACT_BLOCK_SECONDARY;
|
String permission = GDPermissions.INTERACT_BLOCK_SECONDARY;
|
||||||
if (event.getAction() == Action.PHYSICAL) {
|
if (event.getAction() == Action.PHYSICAL) {
|
||||||
@ -573,13 +637,13 @@ public void onPlayerInteractBlockSecondary(PlayerInteractEvent event) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
event.setUseInteractedBlock(Result.DENY);
|
event.setCancelled(true);
|
||||||
GDTimings.PLAYER_INTERACT_BLOCK_SECONDARY_EVENT.stopTiming();
|
GDTimings.PLAYER_INTERACT_BLOCK_SECONDARY_EVENT.stopTiming();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (itemInHand != null && (itemInHand.getType() == GriefDefenderPlugin.getInstance().modificationTool)) {
|
if (itemInHand != null && (NMSUtil.getInstance().itemsEqual(itemInHand, GriefDefenderPlugin.getInstance().modificationTool))) {
|
||||||
onPlayerHandleShovelAction(event, clickedBlock, player, itemInHand, playerData);
|
onPlayerHandleShovelAction(event, clickedBlock, player, itemInHand, playerData);
|
||||||
// avoid changing blocks after using a shovel
|
// avoid changing blocks after using a shovel
|
||||||
event.setUseInteractedBlock(Result.DENY);
|
event.setUseInteractedBlock(Result.DENY);
|
||||||
@ -893,7 +957,7 @@ public void onPlayerMove(PlayerMoveEvent event){
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void onPlayerHandleShovelAction(PlayerInteractEvent event, Block clickedBlock, Player player, ItemStack itemInHand, GDPlayerData playerData) {
|
private void onPlayerHandleShovelAction(PlayerInteractEvent event, Block clickedBlock, Player player, ItemStack itemInHand, GDPlayerData playerData) {
|
||||||
if (itemInHand == null || !itemInHand.getType().equals(GriefDefenderPlugin.getInstance().modificationTool)) {
|
if (itemInHand == null || !NMSUtil.getInstance().itemsEqual(itemInHand, GriefDefenderPlugin.getInstance().modificationTool)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1389,7 +1453,7 @@ private void handleResizeFinish(PlayerInteractEvent event, Player player, Locati
|
|||||||
}
|
}
|
||||||
|
|
||||||
private boolean investigateClaim(PlayerInteractEvent event, Player player, Block clickedBlock, ItemStack itemInHand) {
|
private boolean investigateClaim(PlayerInteractEvent event, Player player, Block clickedBlock, ItemStack itemInHand) {
|
||||||
if (itemInHand == null || itemInHand.getType() != GriefDefenderPlugin.getInstance().investigationTool) {
|
if (itemInHand == null || !NMSUtil.getInstance().itemsEqual(itemInHand, GriefDefenderPlugin.getInstance().investigationTool)){
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1508,6 +1572,25 @@ private GDClaim findNearbyClaim(Player player) {
|
|||||||
return claim;
|
return claim;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void sendInteractEntityDenyMessage(ItemStack playerItem, Entity entity, GDClaim claim, Player player) {
|
||||||
|
if (entity instanceof Player || (claim.getData() != null && !claim.getData().allowDenyMessages())) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
final String entityId = entity.getType().getName() == null ? entity.getType().name().toLowerCase() : entity.getType().getName();
|
||||||
|
if (playerItem == null || playerItem.getType() == Material.AIR) {
|
||||||
|
final Component message = GriefDefenderPlugin.getInstance().messageData.getMessage(MessageStorage.PERMISSION_INTERACT_ENTITY, ImmutableMap.of(
|
||||||
|
"player", claim.getOwnerName(),
|
||||||
|
"entity", entityId));
|
||||||
|
GriefDefenderPlugin.sendClaimDenyMessage(claim, player, message);
|
||||||
|
} else {
|
||||||
|
final Component message = GriefDefenderPlugin.getInstance().messageData.getMessage(MessageStorage.PERMISSION_INTERACT_ITEM_ENTITY, ImmutableMap.of(
|
||||||
|
"item", NMSUtil.getInstance().getMaterialKey(playerItem.getType()),
|
||||||
|
"entity", entityId));
|
||||||
|
GriefDefenderPlugin.sendClaimDenyMessage(claim, player, message);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private void sendInteractBlockDenyMessage(ItemStack playerItem, Block block, GDClaim claim, Player player, GDPlayerData playerData) {
|
private void sendInteractBlockDenyMessage(ItemStack playerItem, Block block, GDClaim claim, Player player, GDPlayerData playerData) {
|
||||||
if (claim.getData() != null && !claim.getData().allowDenyMessages()) {
|
if (claim.getData() != null && !claim.getData().allowDenyMessages()) {
|
||||||
return;
|
return;
|
||||||
|
@ -146,7 +146,7 @@ public Tristate getFinalPermission(Event event, Location location, Claim claim,
|
|||||||
final Set<Context> contexts = new HashSet<>();
|
final Set<Context> contexts = new HashSet<>();
|
||||||
if (permissionHolder instanceof GDPermissionUser) {
|
if (permissionHolder instanceof GDPermissionUser) {
|
||||||
GDPermissionUser user = (GDPermissionUser) permissionHolder;
|
GDPermissionUser user = (GDPermissionUser) permissionHolder;
|
||||||
if (user.getOnlinePlayer() != null && NMSUtil.getInstance().getActiveItem(user.getOnlinePlayer()) != null) {
|
if (user.getOnlinePlayer() != null && NMSUtil.getInstance().getActiveItem(user.getOnlinePlayer(), event) != null) {
|
||||||
contexts.add(new Context("used_item", getPermissionIdentifier(NMSUtil.getInstance().getActiveItem(user.getOnlinePlayer()))));
|
contexts.add(new Context("used_item", getPermissionIdentifier(NMSUtil.getInstance().getActiveItem(user.getOnlinePlayer()))));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -682,7 +682,7 @@ public CompletableFuture<PermissionResult> setPermission(Claim claim, GDPermissi
|
|||||||
CompletableFuture<PermissionResult> result = new CompletableFuture<>();
|
CompletableFuture<PermissionResult> result = new CompletableFuture<>();
|
||||||
if (flag != Flags.COMMAND_EXECUTE && flag != Flags.COMMAND_EXECUTE_PVP) {
|
if (flag != Flags.COMMAND_EXECUTE && flag != Flags.COMMAND_EXECUTE_PVP) {
|
||||||
String[] parts = target.split(":");
|
String[] parts = target.split(":");
|
||||||
if (parts.length > 1) {
|
if (parts.length > 1 && parts[0].equalsIgnoreCase("minecraft")) {
|
||||||
target = parts[1];
|
target = parts[1];
|
||||||
}
|
}
|
||||||
if (target != null && !GriefDefenderPlugin.ID_MAP.contains(target)) {
|
if (target != null && !GriefDefenderPlugin.ID_MAP.contains(target)) {
|
||||||
|
@ -51,8 +51,10 @@
|
|||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.OfflinePlayer;
|
import org.bukkit.OfflinePlayer;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
@ -143,6 +145,34 @@ public User getUserSubject(UUID uuid) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public List<String> getAllLoadedPlayerNames() {
|
||||||
|
List<String> subjectList = new ArrayList<>();
|
||||||
|
for (User user : this.luckPermsApi.getUserManager().getLoadedUsers()) {
|
||||||
|
final String name = user.getName();
|
||||||
|
if (name != null) {
|
||||||
|
subjectList.add(name);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (!subjectList.contains("public")) {
|
||||||
|
subjectList.add("public");
|
||||||
|
}
|
||||||
|
return subjectList;
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<String> getAllLoadedGroupNames() {
|
||||||
|
List<String> subjectList = new ArrayList<>();
|
||||||
|
for (Group group : this.luckPermsApi.getGroupManager().getLoadedGroups()) {
|
||||||
|
final String name = group.getName();
|
||||||
|
if (name != null) {
|
||||||
|
subjectList.add(name);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (!subjectList.contains("public")) {
|
||||||
|
subjectList.add("public");
|
||||||
|
}
|
||||||
|
return subjectList;
|
||||||
|
}
|
||||||
|
|
||||||
public MutableContextSet getActiveContexts(GDPermissionHolder permissionHolder) {
|
public MutableContextSet getActiveContexts(GDPermissionHolder permissionHolder) {
|
||||||
return getActiveContexts(permissionHolder, null, null);
|
return getActiveContexts(permissionHolder, null, null);
|
||||||
}
|
}
|
||||||
|
@ -250,7 +250,7 @@ GriefDefender {
|
|||||||
town-tag-clear="&aThe town tag has been cleared."
|
town-tag-clear="&aThe town tag has been cleared."
|
||||||
town-tax-no-claims="&cYou must own property in this town in order to be taxed."
|
town-tax-no-claims="&cYou must own property in this town in order to be taxed."
|
||||||
trust-already-has="&c{target} already has {type} permission."
|
trust-already-has="&c{target} already has {type} permission."
|
||||||
trust-current-claim="&aGranted &b{target} &apermission to {type} in current claim."
|
trust-grant="&aGranted &b{target} &apermission to {type} in current claim."
|
||||||
trust-individual-all-claims="&aGranted &b{player}'s&a full trust to all your claims. To unset permissions for ALL your claims, use /untrustall."
|
trust-individual-all-claims="&aGranted &b{player}'s&a full trust to all your claims. To unset permissions for ALL your claims, use /untrustall."
|
||||||
trust-invalid="&cInvalid trust type entered.\nThe allowed types are : accessor, builder, container, and manager."
|
trust-invalid="&cInvalid trust type entered.\nThe allowed types are : accessor, builder, container, and manager."
|
||||||
trust-list-header="Explicit permissions here:"
|
trust-list-header="Explicit permissions here:"
|
||||||
|
@ -3,5 +3,5 @@ main: com.griefdefender.GDBootstrap
|
|||||||
softdepend: [WorldEdit, WorldGuard, Vault]
|
softdepend: [WorldEdit, WorldGuard, Vault]
|
||||||
depend: [LuckPerms]
|
depend: [LuckPerms]
|
||||||
load: STARTUP
|
load: STARTUP
|
||||||
version: '1.0.1'
|
version: '1.0.2'
|
||||||
api-version: 1.13
|
api-version: 1.13
|
||||||
|
Loading…
Reference in New Issue
Block a user