Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

PrisonPearl Upkeep Mod (early version) #8

Open
wants to merge 4 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
40 changes: 36 additions & 4 deletions plugin.yml
Original file line number Diff line number Diff line change
@@ -1,14 +1,18 @@
name: PrisonPearl
main: com.untamedears.PrisonPearl.PrisonPearlPlugin
version: 1.3
soft-depend: [PhysicalShop]
version: 1.5.1
soft-depend: [PhysicalShop, CombatTag]

commands:
pplocate:
description: Locates your prison pearl
usage: /<command>
aliases: ppl


ppfeed:
description: Feeds prison pearls
usage: /<command>

pplocateany:
description: Locates any prison pearl in the world
usage: /<command> player
Expand Down Expand Up @@ -66,7 +70,35 @@ commands:
description: Get information about player in a pearl
usage: /ppinfo [player]
alias: ppi
pploadalts:
description: reload alt lists from file
usage: /pploadalts
ppcheckall:
description: checkban all accounts
usage: /ppcheckall
ppcheck:
description: checkban the player
usage: /ppcheck [player]

ppsetdist:
description: Sets distance prisoner can move.

ppsetdamage:
description: Sets damage prisoner receives.

pptogglespeech:
description: Toggles whether prisoner can talk in public chat.

pptoggledamage:
description: Toggles whether prisoner can damage players and mobs.

pptoggleblocks:
description: Toggles whether prisoner can break blocks.

ppsetmotd:
description: Sets prisoner's MOTD.


permissions:
prisonpearl.*:
description: Gives full access to PrisonPearl commands
Expand All @@ -89,4 +121,4 @@ permissions:
prisonpearl.save:
description: Allows user to use ppsave command



259 changes: 230 additions & 29 deletions src/com/untamedears/PrisonPearl/PrisonPearlCommands.java
Original file line number Diff line number Diff line change
Expand Up @@ -13,13 +13,13 @@
import org.bukkit.inventory.Inventory;
import org.bukkit.inventory.ItemStack;

public class PrisonPearlCommands implements CommandExecutor {
private PrisonPearlPlugin plugin;
private PrisonPearlStorage pearls;
private DamageLogManager damageman;
private PrisonPearlManager pearlman;
private SummonManager summonman;
private BroadcastManager broadcastman;
class PrisonPearlCommands implements CommandExecutor {
private final PrisonPearlPlugin plugin;
private final PrisonPearlStorage pearls;
private final DamageLogManager damageman;
private final PrisonPearlManager pearlman;
private final SummonManager summonman;
private final BroadcastManager broadcastman;

public PrisonPearlCommands(PrisonPearlPlugin plugin, DamageLogManager damageman, PrisonPearlStorage pearls, PrisonPearlManager pearlman, SummonManager summonman, BroadcastManager broadcastman) {
this.plugin = plugin;
Expand Down Expand Up @@ -56,12 +56,177 @@ public boolean onCommand(CommandSender sender, Command cmd, String label, String
return confirmCmd(sender, args);
} else if (label.equalsIgnoreCase("ppsilence")) {
return silenceCmd(sender, args);
}

} else if (label.equalsIgnoreCase("pploadalts")) {
return reloadAlts(sender);
} else if (label.equalsIgnoreCase("ppcheckall")) {
return checkAll(sender);
} else if (label.equalsIgnoreCase("ppcheck")) {
return check(sender, args);
} else if (label.equalsIgnoreCase("kill")) {
return kill();
} else if (label.equalsIgnoreCase("ppsetdist")) {
return setDistCmd(sender, args);
} else if (label.equalsIgnoreCase("ppsetdamage")) {
return setDamageCmd(sender, args);
} else if (label.equalsIgnoreCase("pptogglespeech")) {
return toggleSpeechCmd(sender, args);
} else if (label.equalsIgnoreCase("pptoggledamage")) {
return toggleDamageCmd(sender, args);
} else if (label.equalsIgnoreCase("pptoggleblocks")) {
return toggleBlocksCmd(sender, args);
} else if (label.equalsIgnoreCase("ppsetmotd")) {
return setMotdCmd(sender, args);
} else if (label.equalsIgnoreCase("ppfeed")) {
return feedCmd(sender, args, false);
}
return false;
}

private boolean feedCmd(CommandSender sender, String args[], boolean any) {
if ((sender instanceof Player)) {
sender.sendMessage("Must use ppfeed at the console");
return true;
}
sender.sendMessage("Feeding all pearls: " + pearls.getPearlCount());
sender.sendMessage(pearls.feedPearls(pearlman));
return true;
}

private boolean locateCmd(CommandSender sender, String args[], boolean any) {
private PrisonPearl setCmd(CommandSender sender, String[] args) {
PrisonPearl pp;

if (!(sender instanceof Player)) {
sender.sendMessage("ppset cannot be used at the console");
return null;
}

String[] anArray = {};
Player player = (Player)sender;
pp = getCommandPearl(player, anArray, 1);

if (pp == null){
return null;
}

if (args.length > 1)
return null;

if (pp.getImprisonedPlayer().isDead()) {
sender.sendMessage(pp.getImprisonedName() + " is dead. Bring him back to try again.");
return null;
} else if (pp.getImprisonedPlayer() == player) {
sender.sendMessage("You cannot alter your own pearl!");
return null;
} else if (!(summonman.isSummoned(pp))) {
sender.sendMessage(pp.getImprisonedName() + " is not summoned.");
return null;
}

return pp;
}

@SuppressWarnings("SameReturnValue")
private boolean setDistCmd(CommandSender sender, String args[]) {

PrisonPearl pp = setCmd(sender, args);

if (pp == null) {

return false;
}

summonman.getSummon(pp.getImprisonedName()).setAllowedDistance(Integer.parseInt(args[0]));
sender.sendMessage(pp.getImprisonedName() + "'s allowed distance set to " + args[0]);
return true;
}

private boolean setDamageCmd(CommandSender sender, String args[]) {

PrisonPearl pp = setCmd(sender, args);

if (pp == null) {

return false;
}

summonman.getSummon(pp.getImprisonedName()).setDamageAmount(Integer.parseInt(args[0]));
sender.sendMessage(pp.getImprisonedName() + "'s damage amount set to " + args[0]);
return true;
}

private boolean toggleSpeechCmd(CommandSender sender, String args[]) {

PrisonPearl pp = setCmd(sender, args);

if (pp == null) {

return false;
}

boolean speak = summonman.getSummon(pp.getImprisonedName()).isCanSpeak();
summonman.getSummon(pp.getImprisonedName()).setCanSpeak(!speak);
sender.sendMessage(pp.getImprisonedName() + " ability to speak set to " + !speak);
return true;
}

private boolean toggleDamageCmd(CommandSender sender, String args[]) {

PrisonPearl pp = setCmd(sender, args);

if (pp == null) {

return false;
}

boolean damage = summonman.getSummon(pp.getImprisonedName()).isCanDealDamage();
summonman.getSummon(pp.getImprisonedName()).setCanDealDamage(!damage);
sender.sendMessage(pp.getImprisonedName() + " ability to deal damage set to " + !damage);
return true;
}

private boolean toggleBlocksCmd(CommandSender sender, String args[]) {

PrisonPearl pp = setCmd(sender, args);

if (pp == null) {

return false;
}

boolean block = summonman.getSummon(pp.getImprisonedName()).isCanBreakBlocks();
summonman.getSummon(pp.getImprisonedName()).setCanBreakBlocks(!block);
sender.sendMessage(pp.getImprisonedName() + " ability to break blocks set to " + !block);
return true;
}

private boolean setMotdCmd(CommandSender sender, String args[]) {

PrisonPearl pp;

if (!(sender instanceof Player)) {
sender.sendMessage("ppset cannot be used at the console");
return true;
}

String[] anArray = {};
Player player = (Player)sender;
pp = getCommandPearl(player, anArray, 1);

if (pp == null) {

return false;
}

String s = "";
for (String arg : args) {
s = s.concat(arg + " ");
}
pp.setMotd(s);
sender.sendMessage(pp.getImprisonedName() + "'s Message of the Day set to " + s);
return true;
}

private boolean locateCmd(CommandSender sender, String args[], boolean any) {
String name_is;
String name_possesive;
PrisonPearl pp;
Expand Down Expand Up @@ -164,7 +329,7 @@ private boolean imprisonCmd(CommandSender sender, String args[]) {
}

private boolean summonCmd(CommandSender sender, String args[]) {
if (args.length > 2)
if (args.length > 1)
return false;

if (!(sender instanceof Player)) {
Expand All @@ -173,34 +338,25 @@ private boolean summonCmd(CommandSender sender, String args[]) {
}
Player player = (Player)sender;

int dist = plugin.getConfig().getInt("summon_damage_radius");
PrisonPearl pp;
if (args.length == 2) {

if (args.length == 1) {
try {
dist = Integer.parseInt(args[1]);
pp = getCommandPearl(player, args, 0);
} catch (NumberFormatException e) {
sender.sendMessage("Invalid summon radius '" + args[1] + "'");
return false;
}
} else if (args.length == 1) {
try {
dist = Integer.parseInt(args[0]);
pp = getCommandPearl(player, args, 1);
} catch (NumberFormatException e) {
pp = getCommandPearl(player, args, 0);
pp = getCommandPearl(player, args, 1);
}
} else {
pp = getCommandPearl(player, args, 0);
}

if (pp == null)
return true;
if (args.length > 0) {
try {
dist = Integer.parseInt(args[args.length-1]);
} catch (NumberFormatException e) { }

//check if the pearled player is combat tagged
if (plugin.isCombatTagged(pp.getImprisonedName())) {
sender.sendMessage(ChatColor.RED+"[PrisonPearl]"+ChatColor.WHITE+" You cannot summon a CombatTagged player.");
return true;
}

if (pp.getImprisonedPlayer() == null || pp.getImprisonedPlayer().isDead()) {
Expand All @@ -214,7 +370,7 @@ private boolean summonCmd(CommandSender sender, String args[]) {
return true;
}

if (summonman.summonPearl(pp, player.getLocation(), dist))
if (summonman.summonPearl(pp))
sender.sendMessage("You've summoned " + pp.getImprisonedName());
else
sender.sendMessage("You failed to summon " + pp.getImprisonedName());
Expand All @@ -230,11 +386,19 @@ private boolean returnCmd(CommandSender sender, String args[]) {
return true;
}


Player player = (Player)sender;

PrisonPearl pp = getCommandPearl(player, args, 0);
if (pp == null)
return true;

//check if the pearled player is combat tagged
if (plugin.isCombatTagged(pp.getImprisonedName())) {
sender.sendMessage(ChatColor.RED+"[PrisonPearl]"+ChatColor.WHITE+" You cannot return a CombatTagged player.");
return true;
}

if (pp.getImprisonedName().equals(player.getName())) {
sender.sendMessage("You cannot return yourself!");
return true;
Expand Down Expand Up @@ -417,4 +581,41 @@ private int getCommandPearlSlot(Player player, String args[], int pos) {
return -1;
}
}

private boolean reloadAlts(CommandSender sender) {
if (!(sender instanceof Player)) {
plugin.loadAlts();
plugin.checkBanAllAlts();
return true;
}
return false;
}

private boolean checkAll(CommandSender sender) {
if (!(sender instanceof Player)) {
plugin.checkBanAllAlts();
return true;
}
return false;
}

private boolean check(CommandSender sender, String[] args) {
if (args.length != 1)
return false;
if (!(sender instanceof Player)) {
boolean isBanned = plugin.isTempBanned(args[0]);
if (isBanned) {
sender.sendMessage(args[0]+" is temp banned for having "+plugin.getImprisonedCount(args[0])+" imprisoned accounts: "+plugin.getImprisonedAltsString(args[0]));
} else {
sender.sendMessage(args[0]+" is not temp banned");
}
return true;
}
return false;
}

@SuppressWarnings("SameReturnValue")
private boolean kill() {
return false;
}
}
Loading