initial commit
This commit is contained in:
17
.classpath
Normal file
17
.classpath
Normal file
@@ -0,0 +1,17 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<classpath>
|
||||
<classpathentry kind="src" path="src"/>
|
||||
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
|
||||
<classpathentry kind="lib" path="C:/Users/Adminuser/Desktop/Server/craftbukkit.jar" sourcepath="C:/Users/Schulä/Desktop/Dropbox/Server/Bukkit-Bukkit-1.4.7-R1.0-3-g0b494f8.zip">
|
||||
<attributes>
|
||||
<attribute name="javadoc_location" value="http://jd.bukkit.org/apidocs/"/>
|
||||
</attributes>
|
||||
</classpathentry>
|
||||
<classpathentry kind="lib" path="C:/Users/Adminuser/Desktop/Server/plugins/BOSEconomy.jar"/>
|
||||
<classpathentry kind="lib" path="C:/Users/Adminuser/Desktop/Server/plugins/Vault.jar">
|
||||
<attributes>
|
||||
<attribute name="javadoc_location" value="http://mythcraft.dyndns.org/javadoc/vault/"/>
|
||||
</attributes>
|
||||
</classpathentry>
|
||||
<classpathentry kind="output" path="bin"/>
|
||||
</classpath>
|
||||
72
.gitignore
vendored
Normal file
72
.gitignore
vendored
Normal file
@@ -0,0 +1,72 @@
|
||||
|
||||
# Created by https://www.toptal.com/developers/gitignore/api/eclipse
|
||||
# Edit at https://www.toptal.com/developers/gitignore?templates=eclipse
|
||||
|
||||
### Eclipse ###
|
||||
.metadata
|
||||
bin/
|
||||
tmp/
|
||||
*.tmp
|
||||
*.bak
|
||||
*.swp
|
||||
*~.nib
|
||||
local.properties
|
||||
.settings/
|
||||
.loadpath
|
||||
.recommenders
|
||||
|
||||
# External tool builders
|
||||
.externalToolBuilders/
|
||||
|
||||
# Locally stored "Eclipse launch configurations"
|
||||
*.launch
|
||||
|
||||
# PyDev specific (Python IDE for Eclipse)
|
||||
*.pydevproject
|
||||
|
||||
# CDT-specific (C/C++ Development Tooling)
|
||||
.cproject
|
||||
|
||||
# CDT- autotools
|
||||
.autotools
|
||||
|
||||
# Java annotation processor (APT)
|
||||
.factorypath
|
||||
|
||||
# PDT-specific (PHP Development Tools)
|
||||
.buildpath
|
||||
|
||||
# sbteclipse plugin
|
||||
.target
|
||||
|
||||
# Tern plugin
|
||||
.tern-project
|
||||
|
||||
# TeXlipse plugin
|
||||
.texlipse
|
||||
|
||||
# STS (Spring Tool Suite)
|
||||
.springBeans
|
||||
|
||||
# Code Recommenders
|
||||
.recommenders/
|
||||
|
||||
# Annotation Processing
|
||||
.apt_generated/
|
||||
.apt_generated_test/
|
||||
|
||||
# Scala IDE specific (Scala & Java development for Eclipse)
|
||||
.cache-main
|
||||
.scala_dependencies
|
||||
.worksheet
|
||||
|
||||
# Uncomment this line if you wish to ignore the project description file.
|
||||
# Typically, this file would be tracked if it contains build/dependency configurations:
|
||||
#.project
|
||||
|
||||
### Eclipse Patch ###
|
||||
# Spring Boot Tooling
|
||||
.sts4-cache/
|
||||
|
||||
# End of https://www.toptal.com/developers/gitignore/api/eclipse
|
||||
|
||||
17
.project
Normal file
17
.project
Normal file
@@ -0,0 +1,17 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<projectDescription>
|
||||
<name>Mailings</name>
|
||||
<comment></comment>
|
||||
<projects>
|
||||
</projects>
|
||||
<buildSpec>
|
||||
<buildCommand>
|
||||
<name>org.eclipse.jdt.core.javabuilder</name>
|
||||
<arguments>
|
||||
</arguments>
|
||||
</buildCommand>
|
||||
</buildSpec>
|
||||
<natures>
|
||||
<nature>org.eclipse.jdt.core.javanature</nature>
|
||||
</natures>
|
||||
</projectDescription>
|
||||
90
src/me/Caesar2011/Mailings/Commands/Cmd_Help.java
Normal file
90
src/me/Caesar2011/Mailings/Commands/Cmd_Help.java
Normal file
@@ -0,0 +1,90 @@
|
||||
package me.Caesar2011.Mailings.Commands;
|
||||
|
||||
import me.Caesar2011.Mailings.Library.EnumCmdExe;
|
||||
import me.Caesar2011.Mailings.Library.Messenger;
|
||||
|
||||
import org.bukkit.command.CommandSender;
|
||||
|
||||
public class Cmd_Help {
|
||||
CommandSender sender;
|
||||
private String[] args;
|
||||
|
||||
public Cmd_Help(CommandSender sender, String[] args){
|
||||
this.sender = sender;
|
||||
this.args = args;
|
||||
}
|
||||
|
||||
public EnumCmdExe execute(){
|
||||
if (args.length == 0){
|
||||
args = new String[]{"1"};
|
||||
return execute();
|
||||
} else if (args[0].equalsIgnoreCase("1")){
|
||||
Messenger.sendPlyHeader(sender, "Help - Mail - Shortcuts - Page 1");
|
||||
Messenger.sendPlyHelp(sender, "Show help","/mail [Page]");
|
||||
Messenger.sendPlyHelp(sender, "Show mail inbox","/inbox [Player]");
|
||||
Messenger.sendPlyHelp(sender, "Show mail outbox","/outbox [Player]");
|
||||
Messenger.sendPlyHelp(sender, "Read mail","/readmail <id>");
|
||||
Messenger.sendPlyHelp(sender, "Delete mail","/delmail <id>");
|
||||
Messenger.sendPlyHelp(sender, "Send mail","/sendmail <ToPlayer> <Message>");
|
||||
Messenger.sendPlyHelp(sender, "Send mail to everyone","/sendroundmail <Message>");
|
||||
Messenger.sendPlyHelp(sender, "Reload config","/reloadmail");
|
||||
return EnumCmdExe.SUCCESS;
|
||||
} else if (args[0].equalsIgnoreCase("2")){
|
||||
Messenger.sendPlyHeader(sender, "Help - Mail - Longcuts - Page 2");
|
||||
Messenger.sendPlyHelp(sender, "Show help","/mail [Page]");
|
||||
Messenger.sendPlyHelp(sender, "Show mail inbox","/mail inbox [Player]");
|
||||
Messenger.sendPlyHelp(sender, "Show mail outbox","/mail outbox [Player]");
|
||||
Messenger.sendPlyHelp(sender, "Read mail","/mail read [Player]");
|
||||
Messenger.sendPlyHelp(sender, "Delete mail","/mail del [Player]");
|
||||
Messenger.sendPlyHelp(sender, "Send mail","/mail send <ToPlayer> <Message>");
|
||||
Messenger.sendPlyHelp(sender, "Send mail to everyone","/mail sendround <Message>");
|
||||
Messenger.sendPlyHelp(sender, "Reload config","/mail reload");
|
||||
return EnumCmdExe.SUCCESS;
|
||||
} else if (args[0].equalsIgnoreCase("3")){
|
||||
Messenger.sendPlyHeader(sender, "Help - ItemMail - Shortcuts - Page 3");
|
||||
Messenger.sendPlyHelp(sender, "Show help","/imail [Page]");
|
||||
Messenger.sendPlyHelp(sender, "Show item mail inbox","/iinbox [Player]");
|
||||
Messenger.sendPlyHelp(sender, "Show item mail outbox","/ioutbox [Player]");
|
||||
Messenger.sendPlyHelp(sender, "Read item mail","/readimail <id>");
|
||||
Messenger.sendPlyHelp(sender, "Delete item mail and get item","/delimail <id>");
|
||||
Messenger.sendPlyHelp(sender, "Send item mail","/sendimail <ToPlayer> <Message>");
|
||||
Messenger.sendPlyHelp(sender, "Get item from item mail","/getimail <id>");
|
||||
return EnumCmdExe.SUCCESS;
|
||||
} else if (args[0].equalsIgnoreCase("4")){
|
||||
Messenger.sendPlyHeader(sender, "Help - ItemMail - Longcuts - Page 4");
|
||||
Messenger.sendPlyHelp(sender, "Show help","/imail [Page]");
|
||||
Messenger.sendPlyHelp(sender, "Show item mail inbox","/imail inbox [Player]");
|
||||
Messenger.sendPlyHelp(sender, "Show item mail outbox","/imail outbox [Player]");
|
||||
Messenger.sendPlyHelp(sender, "Read item mail","/imail read [Player]");
|
||||
Messenger.sendPlyHelp(sender, "Delete item mail and get item","/imail del [Player]");
|
||||
Messenger.sendPlyHelp(sender, "Send item mail","/imail send <ToPlayer> <Message>");
|
||||
Messenger.sendPlyHelp(sender, "Get item from item mail","/imail get <id>");
|
||||
Messenger.sendPlyHelp(sender, "Reload config","/imail reload");
|
||||
return EnumCmdExe.SUCCESS;
|
||||
} else if (args[0].equalsIgnoreCase("5")){
|
||||
Messenger.sendPlyHeader(sender, "Help - TradeMail - Shortcuts - Page 5");
|
||||
Messenger.sendPlyHelp(sender, "Show help","/tmail [Page]");
|
||||
Messenger.sendPlyHelp(sender, "Show trade mail inbox","/tinbox [Player]");
|
||||
Messenger.sendPlyHelp(sender, "Show trade mail outbox","/toutbox [Player]");
|
||||
Messenger.sendPlyHelp(sender, "Read trade mail","/readtmail <id>");
|
||||
Messenger.sendPlyHelp(sender, "Send trade mail","/sendtmail <ToPlayer> <amount:id:damage> <Message>");
|
||||
Messenger.sendPlyHelp(sender, "Accept trade mail","/accepttmail <id> <Message>");
|
||||
Messenger.sendPlyHelp(sender, "Deny trade mail","/denytmail <id> <Message>");
|
||||
return EnumCmdExe.SUCCESS;
|
||||
} else if (args[0].equalsIgnoreCase("6")){
|
||||
Messenger.sendPlyHeader(sender, "Help - TradeMail - Longcuts - Page 6");
|
||||
Messenger.sendPlyHelp(sender, "Show help","/tmail [Page]");
|
||||
Messenger.sendPlyHelp(sender, "Show trade mail inbox","/tmail inbox [Player]");
|
||||
Messenger.sendPlyHelp(sender, "Show trade mail outbox","/tmail outbox [Player]");
|
||||
Messenger.sendPlyHelp(sender, "Read trade mail","/tmail read [Player]");
|
||||
Messenger.sendPlyHelp(sender, "Send trade mail","/tmail send <ToPlayer> <amount:id:damage> <Message>");
|
||||
Messenger.sendPlyHelp(sender, "Accept trade mail","/tmail accept <id> <Message>");
|
||||
Messenger.sendPlyHelp(sender, "Deny trade mail","/tmail deny <id> <Message>");
|
||||
Messenger.sendPlyHelp(sender, "Reload config","/tmail reload");
|
||||
return EnumCmdExe.SUCCESS;
|
||||
} else {
|
||||
args = new String[]{};
|
||||
return execute();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,71 @@
|
||||
package me.Caesar2011.Mailings.Commands;
|
||||
|
||||
import me.Caesar2011.Mailings.Library.EnumCmdExe;
|
||||
import me.Caesar2011.Mailings.Library.EnumPerm;
|
||||
import me.Caesar2011.Mailings.Library.ItemMail;
|
||||
import me.Caesar2011.Mailings.Library.ItemMailManager;
|
||||
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
|
||||
public class Cmd_ItemMail_Delmail {
|
||||
CommandSender sender;
|
||||
String[] args;
|
||||
|
||||
public Cmd_ItemMail_Delmail(String[] args, CommandSender sender){
|
||||
this.args = args;
|
||||
this.sender = sender;
|
||||
}
|
||||
|
||||
public EnumCmdExe execute(){
|
||||
if (args.length == 0){
|
||||
return EnumCmdExe.TOFEWARGS;
|
||||
}
|
||||
int mailID = 0;
|
||||
try {
|
||||
mailID = Integer.parseInt(args[0]);
|
||||
} catch (NumberFormatException e) {
|
||||
return EnumCmdExe.NONUMBER.addArg("%input%", args[0]);
|
||||
}
|
||||
|
||||
|
||||
if (mailID != 0 && mailID <= ItemMailManager.getLastMailID()) {
|
||||
if (sender instanceof Player){
|
||||
Player p = (Player) sender;
|
||||
String toPlayerName = ItemMailManager.getString(mailID, "ToPlayer");
|
||||
//Permissioncheck
|
||||
if (EnumPerm.IM_DEL_OWN.noPermission(sender) && p.getName().equals(toPlayerName)){
|
||||
return EnumCmdExe.NOPERM;
|
||||
}
|
||||
if (EnumPerm.IM_DEL_OTHER.noPermission(sender) && !p.getName().equals(toPlayerName)){
|
||||
return EnumCmdExe.NOPERM;
|
||||
}
|
||||
ItemMail mail = ItemMailManager.getMail(mailID);
|
||||
if (mail.item != null){
|
||||
if (checkIfFits(p, mail.item)){
|
||||
p.getInventory().addItem(mail.item);
|
||||
} else {
|
||||
return EnumCmdExe.INVFILLED;
|
||||
}
|
||||
}
|
||||
}
|
||||
ItemMailManager.delMail(mailID);
|
||||
return EnumCmdExe.MAILDEL.addArg("%mailid%", new Integer(mailID).toString()).addArg("%type%", ItemMailManager.typeName);
|
||||
} else {
|
||||
return EnumCmdExe.MAILNOTFOUND.addArg("%mailid%", new Integer(mailID).toString()).addArg("%type%", ItemMailManager.typeName);
|
||||
}
|
||||
}
|
||||
|
||||
private boolean checkIfFits(Player p, ItemStack i){
|
||||
int a = i.getAmount();
|
||||
for (ItemStack item : p.getInventory().getContents()) {
|
||||
if(item.isSimilar(i) || (item.getType() == Material.AIR)) {
|
||||
a -= item.getMaxStackSize() - item.getAmount();
|
||||
if (a <= 0) return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,83 @@
|
||||
package me.Caesar2011.Mailings.Commands;
|
||||
|
||||
import me.Caesar2011.Mailings.Library.EnumCmdExe;
|
||||
import me.Caesar2011.Mailings.Library.ItemMail;
|
||||
import me.Caesar2011.Mailings.Library.ItemMailManager;
|
||||
import me.Caesar2011.Mailings.Library.EnumPerm;
|
||||
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
|
||||
public class Cmd_ItemMail_Getmail {
|
||||
CommandSender sender;
|
||||
String[] args;
|
||||
|
||||
public Cmd_ItemMail_Getmail(String[] args, CommandSender sender){
|
||||
this.args = args;
|
||||
this.sender = sender;
|
||||
}
|
||||
|
||||
public EnumCmdExe execute(){
|
||||
if (!(sender instanceof Player)){
|
||||
return EnumCmdExe.NOCONS;
|
||||
}
|
||||
Player p = (Player) sender;
|
||||
|
||||
if (args.length == 0){
|
||||
return EnumCmdExe.TOFEWARGS;
|
||||
}
|
||||
int mailID = 0;
|
||||
try {
|
||||
mailID = Integer.parseInt(args[0]);
|
||||
} catch (NumberFormatException e) {
|
||||
return EnumCmdExe.NONUMBER.addArg("%input%", args[0]);
|
||||
}
|
||||
|
||||
|
||||
if (mailID != 0 && mailID <= ItemMailManager.getLastMailID()) {
|
||||
String toPlayerName = ItemMailManager.getString(mailID, "ToPlayer");
|
||||
//Permissioncheck
|
||||
if (EnumPerm.IM_DEL_OWN.noPermission(p) && p.getName().equals(toPlayerName)){
|
||||
return EnumCmdExe.NOPERM;
|
||||
}
|
||||
if (EnumPerm.IM_DEL_OTHER.noPermission(p) && !p.getName().equals(toPlayerName)){
|
||||
return EnumCmdExe.NOPERM;
|
||||
}
|
||||
|
||||
|
||||
ItemMail mail = ItemMailManager.getMail(mailID);
|
||||
if (mail.item != null){
|
||||
if (checkIfFits(p, mail.item)){
|
||||
p.getInventory().addItem(mail.item);
|
||||
mail.item = null;
|
||||
ItemMailManager.overrideMail(mail);
|
||||
} else {
|
||||
return EnumCmdExe.INVFILLED;
|
||||
}
|
||||
} else {
|
||||
return EnumCmdExe.NOMAILITEM;
|
||||
}
|
||||
|
||||
|
||||
return EnumCmdExe.MAILGET.addArg("%mailid%", new Integer(mailID).toString()).addArg("%type%", ItemMailManager.typeName);
|
||||
} else {
|
||||
return EnumCmdExe.MAILNOTFOUND.addArg("%mailid%", new Integer(mailID).toString()).addArg("%type%", ItemMailManager.typeName);
|
||||
}
|
||||
}
|
||||
|
||||
private boolean checkIfFits(Player p, ItemStack i){
|
||||
int a = i.getAmount();
|
||||
for (ItemStack item : p.getInventory().getContents()) {
|
||||
if(item == null) {
|
||||
return true;
|
||||
}
|
||||
if(item.isSimilar(i) || (item.getType() == Material.AIR)) {
|
||||
a -= item.getMaxStackSize() - item.getAmount();
|
||||
if (a <= 0) return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
134
src/me/Caesar2011/Mailings/Commands/Cmd_ItemMail_Inbox.java
Normal file
134
src/me/Caesar2011/Mailings/Commands/Cmd_ItemMail_Inbox.java
Normal file
@@ -0,0 +1,134 @@
|
||||
package me.Caesar2011.Mailings.Commands;
|
||||
|
||||
import me.Caesar2011.Mailings.Mailings;
|
||||
import me.Caesar2011.Mailings.Library.CastPlayer;
|
||||
import me.Caesar2011.Mailings.Library.ConfigManager.CfgInbox;
|
||||
import me.Caesar2011.Mailings.Library.EnumCmdExe;
|
||||
import me.Caesar2011.Mailings.Library.EnumPerm;
|
||||
import me.Caesar2011.Mailings.Library.ItemMail;
|
||||
import me.Caesar2011.Mailings.Library.ItemMailManager;
|
||||
import me.Caesar2011.Mailings.Library.Messenger;
|
||||
|
||||
import org.bukkit.OfflinePlayer;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
public class Cmd_ItemMail_Inbox {
|
||||
|
||||
String[] args;
|
||||
CommandSender sender; //SenderPlayer
|
||||
String p2; //InboxPlayer
|
||||
Mailings plugin;
|
||||
|
||||
public Cmd_ItemMail_Inbox(String[] args, CommandSender sender, Mailings plugin){
|
||||
this.args = args;
|
||||
this.sender = sender;
|
||||
this.plugin = plugin;
|
||||
}
|
||||
|
||||
public EnumCmdExe execute(){
|
||||
if (!(sender instanceof Player) && args.length == 0){
|
||||
return EnumCmdExe.TOFEWARGS;
|
||||
}
|
||||
|
||||
if (this.args.length == 0) {
|
||||
this.p2 = this.sender.getName();
|
||||
} else if (this.args.length == 1) {
|
||||
this.args = new String[] {this.sender.getName(), this.args[0]};
|
||||
}
|
||||
if (this.args.length >= 2) {
|
||||
this.p2 = this.args[0];
|
||||
}
|
||||
|
||||
boolean showAll = false;
|
||||
if (p2.equals("-a")){
|
||||
showAll = true;
|
||||
} else {
|
||||
//Cast the player with p2 -> toPlayer -RENAME-> p2
|
||||
CastPlayer caster = new CastPlayer(p2, true, plugin);
|
||||
OfflinePlayer toPlayer;
|
||||
try {
|
||||
toPlayer = caster.search();
|
||||
} catch (NullPointerException e){
|
||||
return EnumCmdExe.NOPLAYER.addArg("%player%", p2);
|
||||
}
|
||||
p2 = toPlayer.getName();
|
||||
}
|
||||
|
||||
//Permissioncheck
|
||||
if (EnumPerm.IM_IBOX_OWN.noPermission(sender) && sender.getName().equals(p2)){
|
||||
return EnumCmdExe.NOPERM;
|
||||
}
|
||||
if (EnumPerm.IM_IBOX_OTHER.noPermission(sender) && (!sender.getName().equals(p2) || showAll)){
|
||||
if (args.length > 2) {
|
||||
return EnumCmdExe.NOPERM;
|
||||
} else {
|
||||
args = new String[]{this.sender.getName(), args[0]};
|
||||
}
|
||||
}
|
||||
|
||||
//Buffer every mail to (maybe offline) player -> mailinbox[] {messageCount elements, inboxCount in use}
|
||||
int messageCount = ItemMailManager.getLastMailID();
|
||||
ItemMail mailinbox[] = new ItemMail[messageCount];
|
||||
int inboxCount = 0;
|
||||
String toPlayerName;
|
||||
for (int i = 1; i <= messageCount;i++) {
|
||||
toPlayerName = ItemMailManager.getString(i, "ToPlayer");
|
||||
if (showAll || p2.equals(toPlayerName)) {
|
||||
mailinbox[inboxCount] = ItemMailManager.getMail(i);
|
||||
inboxCount++;
|
||||
}
|
||||
}
|
||||
|
||||
//Calculate fromNr (first mailinbox[fromNr] showed) and toNr (last mailinbox[fromNr] showed) with an optional parameter
|
||||
int fromNr = 1;
|
||||
int toNr = 0;
|
||||
if (args.length >= 2) {
|
||||
try {
|
||||
fromNr = Integer.parseInt(args[1]);
|
||||
} catch (NumberFormatException e) {
|
||||
return EnumCmdExe.NONUMBER.addArg("%input%", args[1]);
|
||||
}
|
||||
}
|
||||
fromNr = Math.max(1, fromNr) - 1;
|
||||
fromNr = Math.min(fromNr, (inboxCount-1) / 10);
|
||||
fromNr = fromNr * 10;
|
||||
toNr = Math.min(inboxCount, fromNr + 10);
|
||||
|
||||
if (showAll) p2 = "@@@";
|
||||
|
||||
//Show the inbox header
|
||||
if (sender.getName().equals(p2)) {
|
||||
Messenger.sendPlyHeader(sender, CfgInbox.TITLE_OWN.getValue().replaceAll("%type%", ItemMailManager.typeName) + " [" + (fromNr/10+1) + "/" + ((inboxCount-1)/10+1) + "]");
|
||||
} else {
|
||||
Messenger.sendPlyHeader(sender, CfgInbox.TITLE_OTHER.getValue().replaceAll("%player%", p2).replaceAll("%type%", ItemMailManager.typeName) + " [" + (fromNr/10+1) + "/" + ((inboxCount-1)/10+1) + "]");
|
||||
}
|
||||
|
||||
//Show a message, if inbox is empty
|
||||
if (inboxCount == 0){
|
||||
if (sender.getName().equals(p2)) {
|
||||
Messenger.sendPlyHeader(sender, CfgInbox.EMPTY_OWN.getValue().replaceAll("%type%", ItemMailManager.typeName) + " [" + (fromNr/10+1) + "/" + ((inboxCount-1)/10+1) + "]");
|
||||
} else {
|
||||
Messenger.sendPlyHeader(sender, CfgInbox.EMPTY_OTHER.getValue().replaceAll("%player%", p2).replaceAll("%type%", ItemMailManager.typeName) + " [" + (fromNr/10+1) + "/" + ((inboxCount-1)/10+1) + "]");
|
||||
}
|
||||
|
||||
//Else list every mail from ID fromNr to ID toNr
|
||||
} else {
|
||||
for (int j = fromNr; j < toNr; j++) {
|
||||
int shortMsgLenght = 40;
|
||||
shortMsgLenght = shortMsgLenght - mailinbox[j].toPlayer.length();
|
||||
shortMsgLenght = shortMsgLenght - new Integer(mailinbox[j].ID).toString().length() / 10 + 1;
|
||||
String shortMsg;
|
||||
if (shortMsgLenght < mailinbox[j].msg.length()) {
|
||||
shortMsg = mailinbox[j].msg.substring(0, shortMsgLenght - 1) + "...";
|
||||
} else {
|
||||
shortMsg = mailinbox[j].msg;
|
||||
}
|
||||
Messenger.sendPlyInOutBox(sender, mailinbox[j].ID, mailinbox[j].fromPlayer, shortMsg, mailinbox[j].read);
|
||||
}
|
||||
}
|
||||
|
||||
//Exit
|
||||
return EnumCmdExe.SUCCESS;
|
||||
}
|
||||
}
|
||||
134
src/me/Caesar2011/Mailings/Commands/Cmd_ItemMail_Outbox.java
Normal file
134
src/me/Caesar2011/Mailings/Commands/Cmd_ItemMail_Outbox.java
Normal file
@@ -0,0 +1,134 @@
|
||||
package me.Caesar2011.Mailings.Commands;
|
||||
|
||||
import me.Caesar2011.Mailings.Mailings;
|
||||
import me.Caesar2011.Mailings.Library.CastPlayer;
|
||||
import me.Caesar2011.Mailings.Library.ConfigManager.CfgOutbox;
|
||||
import me.Caesar2011.Mailings.Library.EnumCmdExe;
|
||||
import me.Caesar2011.Mailings.Library.ItemMail;
|
||||
import me.Caesar2011.Mailings.Library.ItemMailManager;
|
||||
import me.Caesar2011.Mailings.Library.Messenger;
|
||||
import me.Caesar2011.Mailings.Library.EnumPerm;
|
||||
|
||||
import org.bukkit.OfflinePlayer;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
public class Cmd_ItemMail_Outbox {
|
||||
|
||||
String[] args;
|
||||
CommandSender sender; //SenderPlayer
|
||||
String p2; //OutboxPlayer
|
||||
Mailings plugin;
|
||||
|
||||
public Cmd_ItemMail_Outbox(String[] args, CommandSender sender, Mailings plugin){
|
||||
this.args = args;
|
||||
this.sender = sender;
|
||||
this.plugin = plugin;
|
||||
}
|
||||
|
||||
public EnumCmdExe execute(){
|
||||
if (!(sender instanceof Player) && args.length == 0){
|
||||
return EnumCmdExe.TOFEWARGS;
|
||||
}
|
||||
|
||||
if (this.args.length == 0) {
|
||||
this.p2 = this.sender.getName();
|
||||
} else if (this.args.length == 1) {
|
||||
this.args = new String[] {this.sender.getName(), this.args[0]};
|
||||
}
|
||||
if (this.args.length >= 2) {
|
||||
this.p2 = this.args[0];
|
||||
}
|
||||
|
||||
boolean showAll = false;
|
||||
if (p2.equals("-a")){
|
||||
showAll = true;
|
||||
} else {
|
||||
//Cast the player with p2 -> fromPlayer -RENAME-> p2
|
||||
CastPlayer caster = new CastPlayer(p2, true, plugin);
|
||||
OfflinePlayer fromPlayer;
|
||||
try {
|
||||
fromPlayer = caster.search();
|
||||
} catch (NullPointerException e){
|
||||
return EnumCmdExe.NOPLAYER.addArg("%player%", p2);
|
||||
}
|
||||
p2 = fromPlayer.getName();
|
||||
}
|
||||
|
||||
//Permissioncheck
|
||||
if (EnumPerm.IM_OBOX_OWN.noPermission(sender) && sender.getName().equals(p2)){
|
||||
return EnumCmdExe.NOPERM;
|
||||
}
|
||||
if (EnumPerm.IM_OBOX_OTHER.noPermission(sender) && !sender.getName().equals(p2)){
|
||||
if (args.length > 2) {
|
||||
return EnumCmdExe.NOPERM;
|
||||
} else {
|
||||
args = new String[]{this.sender.getName(), args[0]};
|
||||
}
|
||||
}
|
||||
|
||||
//Buffer every mail from (maybe offline) fromPlayer -> mailoutbox[] {messageCount elements, outboxCount in use}
|
||||
int messageCount = ItemMailManager.getLastMailID();
|
||||
ItemMail mailoutbox[] = new ItemMail[messageCount];
|
||||
int outboxCount = 0;
|
||||
String fromPlayerName;
|
||||
for (int i = 1; i <= messageCount;i++) {
|
||||
fromPlayerName = ItemMailManager.getString(i, "FromPlayer");
|
||||
if (showAll || p2.equals(fromPlayerName)) {
|
||||
mailoutbox[outboxCount] = ItemMailManager.getMail(i);
|
||||
outboxCount++;
|
||||
}
|
||||
}
|
||||
|
||||
//Calculate fromNr (first mailoutbox[fromNr] showed) and toNr (last mailoutbox[fromNr] showed) with an optional parameter
|
||||
int fromNr = 1;
|
||||
int toNr = 0;
|
||||
if (args.length >= 2) {
|
||||
try {
|
||||
fromNr = Integer.parseInt(args[1]);
|
||||
} catch (NumberFormatException e) {
|
||||
return EnumCmdExe.NONUMBER.addArg("%input%", args[1]);
|
||||
}
|
||||
}
|
||||
fromNr = Math.max(1, fromNr) - 1;
|
||||
fromNr = Math.min(fromNr, (outboxCount-1) / 10);
|
||||
fromNr = fromNr * 10;
|
||||
toNr = Math.min(outboxCount, fromNr + 10);
|
||||
|
||||
if (showAll) p2 = "@@@";
|
||||
|
||||
//Show the outbox header
|
||||
if (sender.getName().equals(p2)) {
|
||||
Messenger.sendPlyHeader(sender, CfgOutbox.TITLE_OWN.getValue().replaceAll("%type%", ItemMailManager.typeName) + " [" + (fromNr/10+1) + "/" + ((outboxCount-1)/10+1) + "]");
|
||||
} else {
|
||||
Messenger.sendPlyHeader(sender, CfgOutbox.TITLE_OTHER.getValue().replaceAll("%player%", p2).replaceAll("%type%", ItemMailManager.typeName) + " [" + (fromNr/10+1) + "/" + ((outboxCount-1)/10+1) + "]");
|
||||
}
|
||||
|
||||
//Show a message, if outbox is empty
|
||||
if (outboxCount == 0){
|
||||
if (sender.getName().equals(p2)) {
|
||||
Messenger.sendPlyHeader(sender, CfgOutbox.EMPTY_OWN.getValue().replaceAll("%type%", ItemMailManager.typeName) + " [" + (fromNr/10+1) + "/" + ((outboxCount-1)/10+1) + "]");
|
||||
} else {
|
||||
Messenger.sendPlyHeader(sender, CfgOutbox.EMPTY_OTHER.getValue().replaceAll("%player%", p2).replaceAll("%type%", ItemMailManager.typeName) + " [" + (fromNr/10+1) + "/" + ((outboxCount-1)/10+1) + "]");
|
||||
}
|
||||
|
||||
//Else list every mail from ID fromNr to ID toNr
|
||||
} else {
|
||||
for (int j = fromNr; j < toNr; j++) {
|
||||
int shortMsgLenght = 40;
|
||||
shortMsgLenght = shortMsgLenght - mailoutbox[j].fromPlayer.length();
|
||||
shortMsgLenght = shortMsgLenght - new Integer(mailoutbox[j].ID).toString().length() / 10 + 1;
|
||||
String shortMsg;
|
||||
if (shortMsgLenght < mailoutbox[j].msg.length()) {
|
||||
shortMsg = mailoutbox[j].msg.substring(0, shortMsgLenght - 1) + "...";
|
||||
} else {
|
||||
shortMsg = mailoutbox[j].msg;
|
||||
}
|
||||
Messenger.sendPlyInOutBox(sender, mailoutbox[j].ID, mailoutbox[j].toPlayer, shortMsg, mailoutbox[j].read);
|
||||
}
|
||||
}
|
||||
|
||||
//Exit
|
||||
return EnumCmdExe.SUCCESS;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,63 @@
|
||||
package me.Caesar2011.Mailings.Commands;
|
||||
|
||||
import me.Caesar2011.Mailings.Library.EnumCmdExe;
|
||||
import me.Caesar2011.Mailings.Library.EnumPerm;
|
||||
import me.Caesar2011.Mailings.Library.ItemMail;
|
||||
import me.Caesar2011.Mailings.Library.ItemMailManager;
|
||||
import me.Caesar2011.Mailings.Library.Messenger;
|
||||
|
||||
import org.bukkit.command.CommandSender;
|
||||
|
||||
public class Cmd_ItemMail_Readmail {
|
||||
|
||||
String[] args;
|
||||
CommandSender sender; //SenderPlayer
|
||||
|
||||
public Cmd_ItemMail_Readmail(String[] args, CommandSender sender){
|
||||
this.args = args;
|
||||
this.sender = sender;
|
||||
}
|
||||
|
||||
public EnumCmdExe execute(){
|
||||
if (args.length == 0){
|
||||
return EnumCmdExe.TOFEWARGS;
|
||||
}
|
||||
int mailID = 0;
|
||||
|
||||
try {
|
||||
mailID = Integer.parseInt(args[0]);
|
||||
} catch (NumberFormatException e) {
|
||||
return EnumCmdExe.NONUMBER.addArg("%input%", args[0]);
|
||||
}
|
||||
ItemMail mail = new ItemMail();
|
||||
try {
|
||||
mail = ItemMailManager.getMail(mailID);
|
||||
} catch (NullPointerException e) {
|
||||
return EnumCmdExe.MAILNOTFOUND.addArg("%mailid%", new Integer(mailID).toString()).addArg("%type%", ItemMailManager.typeName);
|
||||
}
|
||||
|
||||
//Permissioncheck
|
||||
if (EnumPerm.IM_READ_OWN.noPermission(sender) && sender.getName().equals(mail.toPlayer)){
|
||||
return EnumCmdExe.NOPERM;
|
||||
}
|
||||
if (EnumPerm.IM_READ_OTHER.noPermission(sender) && !sender.getName().equals(mail.toPlayer)){
|
||||
return EnumCmdExe.NOPERM;
|
||||
}
|
||||
|
||||
String itemString;
|
||||
if (mail.item != null){
|
||||
itemString = mail.item.getAmount() + " x " + mail.item.getType().toString().toLowerCase();
|
||||
if (mail.item.getDurability() > 0) {
|
||||
itemString = itemString + " : " + mail.item.getDurability();
|
||||
}
|
||||
} else {
|
||||
itemString = "N/A";
|
||||
}
|
||||
Messenger.sendPlyRead(sender, mail.msg, mail.toPlayer, mail.fromPlayer, mail.ID, mail.read, mail.sendDate, mail.endDate, ItemMailManager.typeName, itemString, null);
|
||||
if (mail.toPlayer.equals(sender.getName())) {
|
||||
mail.read = true;
|
||||
ItemMailManager.overrideMail(mail);
|
||||
}
|
||||
return EnumCmdExe.SUCCESS;
|
||||
}
|
||||
}
|
||||
102
src/me/Caesar2011/Mailings/Commands/Cmd_ItemMail_Sendmail.java
Normal file
102
src/me/Caesar2011/Mailings/Commands/Cmd_ItemMail_Sendmail.java
Normal file
@@ -0,0 +1,102 @@
|
||||
package me.Caesar2011.Mailings.Commands;
|
||||
|
||||
|
||||
import me.Caesar2011.Mailings.Mailings;
|
||||
import me.Caesar2011.Mailings.Library.CastPlayer;
|
||||
import me.Caesar2011.Mailings.Library.ConfigManager.CfgOther;
|
||||
import me.Caesar2011.Mailings.Library.ConfigManager.CfgPropInt;
|
||||
import me.Caesar2011.Mailings.Library.CooldownManager.CooldownType;
|
||||
import me.Caesar2011.Mailings.Library.EnumCmdExe;
|
||||
import me.Caesar2011.Mailings.Library.ItemMail;
|
||||
import me.Caesar2011.Mailings.Library.ItemMailManager;
|
||||
import me.Caesar2011.Mailings.Library.Messenger;
|
||||
import me.Caesar2011.Mailings.Library.EnumPerm;
|
||||
|
||||
import org.bukkit.OfflinePlayer;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
|
||||
public class Cmd_ItemMail_Sendmail {
|
||||
|
||||
String[] args;
|
||||
CommandSender sender; //SenderPlayer
|
||||
String p2; //TargetPlayer
|
||||
String m; //Message
|
||||
ItemStack item;
|
||||
Mailings plugin;
|
||||
|
||||
public Cmd_ItemMail_Sendmail(String[] args, CommandSender sender, Mailings plugin){
|
||||
this.args = args;
|
||||
this.sender = sender;
|
||||
this.plugin = plugin;
|
||||
}
|
||||
|
||||
public EnumCmdExe execute(){
|
||||
if (!(sender instanceof Player)){
|
||||
return EnumCmdExe.NOCONS;
|
||||
}
|
||||
Player p = (Player) sender;
|
||||
|
||||
//Permissioncheck
|
||||
if (EnumPerm.IM_SEND_SINGLE.noPermission(p)){
|
||||
return EnumCmdExe.NOPERM;
|
||||
}
|
||||
|
||||
//Cooldown
|
||||
if (EnumPerm.IM_OVER_COOLDOWN.noPermission(p) && !CooldownType.IMAIL.isCoolDown(p)){
|
||||
return EnumCmdExe.COOLDOWN.addArg("%amount%", CooldownType.IMAIL.getTimeFormat(p));
|
||||
}
|
||||
|
||||
//Check the length of the arguments
|
||||
if (args.length < 2){
|
||||
return EnumCmdExe.TOFEWARGS;
|
||||
}
|
||||
|
||||
//Create message string m and player name p2 to search
|
||||
p2 = args[0];
|
||||
m = args[1];
|
||||
for (int i = 2; i < args.length; i++){
|
||||
m = m + ' ' + args[i];
|
||||
}
|
||||
|
||||
//Get item from hand -> item
|
||||
item = p.getItemInHand();
|
||||
if (item.getAmount() == 0){
|
||||
return EnumCmdExe.NOITEMINHAND;
|
||||
}
|
||||
|
||||
//Cast the player with p2 -> toPlayer
|
||||
CastPlayer caster = new CastPlayer(p2, true, plugin);
|
||||
OfflinePlayer toPlayer;
|
||||
try {
|
||||
toPlayer = caster.search(p);
|
||||
} catch (NullPointerException e){
|
||||
return EnumCmdExe.NOPLAYER.addArg("%player%", p2);
|
||||
}
|
||||
|
||||
//Delete outdated mails/Count inbox of player
|
||||
int mInBox = ItemMailManager.getInboxAmount(toPlayer, true, false);
|
||||
|
||||
//Check, if inbox of player toPlayer is bursting at the seams -> return
|
||||
if (mInBox >= CfgPropInt.IMAIL_MAXINBOX.getValue()){
|
||||
return EnumCmdExe.INBOXFILLED.addArg("%player%", toPlayer.getName()).addArg("%type%", ItemMailManager.typeName);
|
||||
}
|
||||
|
||||
//Send, post message to toPlayer
|
||||
ItemMail mailSended = new ItemMail(p.getName(), toPlayer.getName(), m, item);
|
||||
ItemMailManager.addMail(mailSended);
|
||||
if (toPlayer.isOnline()) {
|
||||
Messenger.sendOtherMsg(toPlayer.getPlayer(), CfgOther.MAILGET, new String[]{"%player%", p.getName()}, new String[]{"%mailid%", new Integer(mailSended.ID).toString()}, new String[]{"%type%", ItemMailManager.typeName});
|
||||
}
|
||||
|
||||
//Remove item in hand
|
||||
ItemStack toDel = p.getItemInHand();
|
||||
toDel.setAmount(0);
|
||||
p.setItemInHand(toDel);
|
||||
|
||||
//Set cooldown and exit
|
||||
CooldownType.IMAIL.setPlayer(p);
|
||||
return EnumCmdExe.MAILSEND.addArg("%player%", toPlayer.getName()).addArg("%mailid%", new Integer(mailSended.ID).toString()).addArg("%type%", ItemMailManager.typeName);
|
||||
}
|
||||
}
|
||||
46
src/me/Caesar2011/Mailings/Commands/Cmd_Mail_Delmail.java
Normal file
46
src/me/Caesar2011/Mailings/Commands/Cmd_Mail_Delmail.java
Normal file
@@ -0,0 +1,46 @@
|
||||
package me.Caesar2011.Mailings.Commands;
|
||||
|
||||
import me.Caesar2011.Mailings.Library.EnumCmdExe;
|
||||
import me.Caesar2011.Mailings.Library.EnumPerm;
|
||||
import me.Caesar2011.Mailings.Library.MailManager;
|
||||
|
||||
import org.bukkit.command.CommandSender;
|
||||
|
||||
public class Cmd_Mail_Delmail {
|
||||
CommandSender sender;
|
||||
String[] args;
|
||||
|
||||
public Cmd_Mail_Delmail(String[] args, CommandSender sender){
|
||||
this.args = args;
|
||||
this.sender = sender;
|
||||
}
|
||||
|
||||
public EnumCmdExe execute(){
|
||||
if (args.length == 0){
|
||||
return EnumCmdExe.TOFEWARGS;
|
||||
}
|
||||
int mailID = 0;
|
||||
try {
|
||||
mailID = Integer.parseInt(args[0]);
|
||||
} catch (NumberFormatException e) {
|
||||
return EnumCmdExe.NONUMBER.addArg("%input%", args[0]);
|
||||
}
|
||||
|
||||
|
||||
|
||||
if (mailID != 0 && mailID <= MailManager.getLastMailID()) {
|
||||
String toPlayerName = MailManager.getString(mailID, "ToPlayer");
|
||||
//Permissioncheck
|
||||
if (EnumPerm.M_DEL_OWN.noPermission(sender) && sender.getName().equals(toPlayerName)){
|
||||
return EnumCmdExe.NOPERM;
|
||||
}
|
||||
if (EnumPerm.M_DEL_OTHER.noPermission(sender) && !sender.getName().equals(toPlayerName)){
|
||||
return EnumCmdExe.NOPERM;
|
||||
}
|
||||
MailManager.delMail(mailID);
|
||||
return EnumCmdExe.MAILDEL.addArg("%mailid%", new Integer(mailID).toString()).addArg("%type%", MailManager.typeName);
|
||||
} else {
|
||||
return EnumCmdExe.MAILNOTFOUND.addArg("%mailid%", new Integer(mailID).toString()).addArg("%type%", MailManager.typeName);
|
||||
}
|
||||
}
|
||||
}
|
||||
131
src/me/Caesar2011/Mailings/Commands/Cmd_Mail_Inbox.java
Normal file
131
src/me/Caesar2011/Mailings/Commands/Cmd_Mail_Inbox.java
Normal file
@@ -0,0 +1,131 @@
|
||||
package me.Caesar2011.Mailings.Commands;
|
||||
|
||||
import me.Caesar2011.Mailings.Mailings;
|
||||
import me.Caesar2011.Mailings.Library.CastPlayer;
|
||||
import me.Caesar2011.Mailings.Library.ConfigManager.CfgInbox;
|
||||
import me.Caesar2011.Mailings.Library.EnumCmdExe;
|
||||
import me.Caesar2011.Mailings.Library.EnumPerm;
|
||||
import me.Caesar2011.Mailings.Library.Mail;
|
||||
import me.Caesar2011.Mailings.Library.MailManager;
|
||||
import me.Caesar2011.Mailings.Library.Messenger;
|
||||
|
||||
import org.bukkit.OfflinePlayer;
|
||||
import org.bukkit.command.CommandSender;
|
||||
//import me.Caesar2011.Mailings.Library.MailManager;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
public class Cmd_Mail_Inbox {
|
||||
|
||||
String[] args;
|
||||
CommandSender sender; //SenderPlayer
|
||||
String p2; //InboxPlayer
|
||||
Mailings plugin;
|
||||
|
||||
public Cmd_Mail_Inbox(String[] args, CommandSender sender, Mailings plugin){
|
||||
this.args = args;
|
||||
this.sender = sender;
|
||||
this.plugin = plugin;
|
||||
}
|
||||
|
||||
public EnumCmdExe execute(){
|
||||
if (!(sender instanceof Player) && args.length == 0){
|
||||
return EnumCmdExe.TOFEWARGS;
|
||||
}
|
||||
|
||||
if (this.args.length == 0) {
|
||||
this.p2 = this.sender.getName();
|
||||
} else if (this.args.length == 1) {
|
||||
this.args = new String[] {this.sender.getName(), this.args[0]};
|
||||
}
|
||||
if (this.args.length >= 2) {
|
||||
this.p2 = this.args[0];
|
||||
}
|
||||
|
||||
boolean showAll = false;
|
||||
if (p2.equals("-a")){
|
||||
showAll = true;
|
||||
} else {
|
||||
//Cast the player with p2 -> toPlayer -RENAME-> p2
|
||||
CastPlayer caster = new CastPlayer(p2, true, plugin);
|
||||
OfflinePlayer toPlayer;
|
||||
try {
|
||||
toPlayer = caster.search();
|
||||
} catch (NullPointerException e){
|
||||
return EnumCmdExe.NOPLAYER.addArg("%player%", p2);
|
||||
}
|
||||
p2 = toPlayer.getName();
|
||||
}
|
||||
|
||||
//Permissioncheck
|
||||
if (EnumPerm.M_IBOX_OWN.noPermission(sender) && sender.getName().equals(p2)){
|
||||
return EnumCmdExe.NOPERM;
|
||||
}
|
||||
if (EnumPerm.M_IBOX_OTHER.noPermission(sender) && (!sender.getName().equals(p2) || showAll)){
|
||||
return EnumCmdExe.NOPERM;
|
||||
}
|
||||
|
||||
//Buffer every mail to (maybe offline) player -> mailinbox[] {messageCount elements, inboxCount in use}
|
||||
int messageCount = MailManager.getLastMailID();
|
||||
Mail mailinbox[] = new Mail[messageCount];
|
||||
int inboxCount = 0;
|
||||
String toPlayerName;
|
||||
for (int i = 1; i <= messageCount;i++) {
|
||||
toPlayerName = MailManager.getString(i, "ToPlayer");
|
||||
if (showAll || p2.equals(toPlayerName)) {
|
||||
mailinbox[inboxCount] = MailManager.getMail(i);
|
||||
inboxCount++;
|
||||
}
|
||||
}
|
||||
|
||||
//Calculate fromNr (first mailinbox[fromNr] showed) and toNr (last mailinbox[fromNr] showed) with an optional parameter
|
||||
int fromNr = 1;
|
||||
int toNr = 0;
|
||||
if (args.length >= 2) {
|
||||
try {
|
||||
fromNr = Integer.parseInt(args[1]);
|
||||
} catch (NumberFormatException e) {
|
||||
return EnumCmdExe.NONUMBER.addArg("%input%", args[1]);
|
||||
}
|
||||
}
|
||||
fromNr = Math.max(1, fromNr) - 1;
|
||||
fromNr = Math.min(fromNr, (inboxCount-1) / 10);
|
||||
fromNr = fromNr * 10;
|
||||
toNr = Math.min(inboxCount, fromNr + 10);
|
||||
|
||||
if (showAll) p2 = "@@@";
|
||||
|
||||
//Show the inbox header
|
||||
if (sender.getName().equals(p2)) {
|
||||
Messenger.sendPlyHeader(sender, CfgInbox.TITLE_OWN.getValue().replaceAll("%type%", MailManager.typeName) + " [" + (fromNr/10+1) + "/" + ((inboxCount-1)/10+1) + "]");
|
||||
} else {
|
||||
Messenger.sendPlyHeader(sender, CfgInbox.TITLE_OTHER.getValue().replaceAll("%player%", p2).replaceAll("%type%", MailManager.typeName) + " [" + (fromNr/10+1) + "/" + ((inboxCount-1)/10+1) + "]");
|
||||
}
|
||||
|
||||
//Show a message, if inbox is empty
|
||||
if (inboxCount == 0){
|
||||
if (sender.getName().equals(p2)) {
|
||||
Messenger.sendPlyHeader(sender, CfgInbox.EMPTY_OWN.getValue().replaceAll("%type%", MailManager.typeName) + " [" + (fromNr/10+1) + "/" + ((inboxCount-1)/10+1) + "]");
|
||||
} else {
|
||||
Messenger.sendPlyHeader(sender, CfgInbox.EMPTY_OTHER.getValue().replaceAll("%player%", p2).replaceAll("%type%", MailManager.typeName) + " [" + (fromNr/10+1) + "/" + ((inboxCount-1)/10+1) + "]");
|
||||
}
|
||||
|
||||
//Else list every mail from ID fromNr to ID toNr
|
||||
} else {
|
||||
for (int j = fromNr; j < toNr; j++) {
|
||||
int shortMsgLenght = 40;
|
||||
shortMsgLenght = shortMsgLenght - mailinbox[j].toPlayer.length();
|
||||
shortMsgLenght = shortMsgLenght - new Integer(mailinbox[j].ID).toString().length() / 10 + 1;
|
||||
String shortMsg;
|
||||
if (shortMsgLenght < mailinbox[j].msg.length()) {
|
||||
shortMsg = mailinbox[j].msg.substring(0, shortMsgLenght - 1) + "...";
|
||||
} else {
|
||||
shortMsg = mailinbox[j].msg;
|
||||
}
|
||||
Messenger.sendPlyInOutBox(sender, mailinbox[j].ID, mailinbox[j].fromPlayer, shortMsg, mailinbox[j].read);
|
||||
}
|
||||
}
|
||||
|
||||
//Exit
|
||||
return EnumCmdExe.SUCCESS;
|
||||
}
|
||||
}
|
||||
134
src/me/Caesar2011/Mailings/Commands/Cmd_Mail_Outbox.java
Normal file
134
src/me/Caesar2011/Mailings/Commands/Cmd_Mail_Outbox.java
Normal file
@@ -0,0 +1,134 @@
|
||||
package me.Caesar2011.Mailings.Commands;
|
||||
|
||||
import me.Caesar2011.Mailings.Mailings;
|
||||
import me.Caesar2011.Mailings.Library.CastPlayer;
|
||||
import me.Caesar2011.Mailings.Library.ConfigManager.CfgOutbox;
|
||||
import me.Caesar2011.Mailings.Library.EnumCmdExe;
|
||||
import me.Caesar2011.Mailings.Library.Mail;
|
||||
import me.Caesar2011.Mailings.Library.MailManager;
|
||||
import me.Caesar2011.Mailings.Library.Messenger;
|
||||
import me.Caesar2011.Mailings.Library.EnumPerm;
|
||||
|
||||
import org.bukkit.OfflinePlayer;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
public class Cmd_Mail_Outbox {
|
||||
|
||||
String[] args;
|
||||
CommandSender sender; //SenderPlayer
|
||||
String p2; //OutboxPlayer
|
||||
Mailings plugin;
|
||||
|
||||
public Cmd_Mail_Outbox(String[] args, CommandSender sender, Mailings plugin){
|
||||
this.args = args;
|
||||
this.sender = sender;
|
||||
this.plugin = plugin;
|
||||
}
|
||||
|
||||
public EnumCmdExe execute(){
|
||||
if (!(sender instanceof Player) && args.length == 0){
|
||||
return EnumCmdExe.TOFEWARGS;
|
||||
}
|
||||
|
||||
if (this.args.length == 0) {
|
||||
this.p2 = this.sender.getName();
|
||||
} else if (this.args.length == 1) {
|
||||
this.args = new String[] {this.sender.getName(), this.args[0]};
|
||||
}
|
||||
if (this.args.length >= 2) {
|
||||
this.p2 = this.args[0];
|
||||
}
|
||||
|
||||
boolean showAll = false;
|
||||
if (p2.equals("-a")){
|
||||
showAll = true;
|
||||
} else {
|
||||
//Cast the player with p2 -> fromPlayer -RENAME-> p2
|
||||
CastPlayer caster = new CastPlayer(p2, true, plugin);
|
||||
OfflinePlayer fromPlayer;
|
||||
try {
|
||||
fromPlayer = caster.search();
|
||||
} catch (NullPointerException e){
|
||||
return EnumCmdExe.NOPLAYER.addArg("%player%", p2);
|
||||
}
|
||||
p2 = fromPlayer.getName();
|
||||
}
|
||||
|
||||
//Permissioncheck
|
||||
if (EnumPerm.M_OBOX_OWN.noPermission(sender) && sender.getName().equals(p2)){
|
||||
return EnumCmdExe.NOPERM;
|
||||
}
|
||||
if (EnumPerm.M_OBOX_OTHER.noPermission(sender) && !sender.getName().equals(p2)){
|
||||
if (args.length > 2) {
|
||||
return EnumCmdExe.NOPERM;
|
||||
} else {
|
||||
args = new String[]{this.sender.getName(), args[0]};
|
||||
}
|
||||
}
|
||||
|
||||
//Buffer every mail from (maybe offline) fromPlayer -> mailoutbox[] {messageCount elements, outboxCount in use}
|
||||
int messageCount = MailManager.getLastMailID();
|
||||
Mail mailoutbox[] = new Mail[messageCount];
|
||||
int outboxCount = 0;
|
||||
String fromPlayerName;
|
||||
for (int i = 1; i <= messageCount;i++) {
|
||||
fromPlayerName = MailManager.getString(i, "FromPlayer");
|
||||
if (showAll || p2.equals(fromPlayerName)) {
|
||||
mailoutbox[outboxCount] = MailManager.getMail(i);
|
||||
outboxCount++;
|
||||
}
|
||||
}
|
||||
|
||||
//Calculate fromNr (first mailoutbox[fromNr] showed) and toNr (last mailoutbox[fromNr] showed) with an optional parameter
|
||||
int fromNr = 1;
|
||||
int toNr = 0;
|
||||
if (args.length >= 2) {
|
||||
try {
|
||||
fromNr = Integer.parseInt(args[1]);
|
||||
} catch (NumberFormatException e) {
|
||||
return EnumCmdExe.NONUMBER.addArg("%input%", args[1]);
|
||||
}
|
||||
}
|
||||
fromNr = Math.max(1, fromNr) - 1;
|
||||
fromNr = Math.min(fromNr, (outboxCount-1) / 10);
|
||||
fromNr = fromNr * 10;
|
||||
toNr = Math.min(outboxCount, fromNr + 10);
|
||||
|
||||
if (showAll) p2 = "@@@";
|
||||
|
||||
//Show the outbox header
|
||||
if (sender.getName().equals(p2)) {
|
||||
Messenger.sendPlyHeader(sender, CfgOutbox.TITLE_OWN.getValue().replaceAll("%type%", MailManager.typeName) + " [" + (fromNr/10+1) + "/" + ((outboxCount-1)/10+1) + "]");
|
||||
} else {
|
||||
Messenger.sendPlyHeader(sender, CfgOutbox.TITLE_OTHER.getValue().replaceAll("%player%", p2).replaceAll("%type%", MailManager.typeName) + " [" + (fromNr/10+1) + "/" + ((outboxCount-1)/10+1) + "]");
|
||||
}
|
||||
|
||||
//Show a message, if outbox is empty
|
||||
if (outboxCount == 0){
|
||||
if (sender.getName().equals(p2)) {
|
||||
Messenger.sendPlyHeader(sender, CfgOutbox.EMPTY_OWN.getValue().replaceAll("%type%", MailManager.typeName) + " [" + (fromNr/10+1) + "/" + ((outboxCount-1)/10+1) + "]");
|
||||
} else {
|
||||
Messenger.sendPlyHeader(sender, CfgOutbox.EMPTY_OTHER.getValue().replaceAll("%player%", p2).replaceAll("%type%", MailManager.typeName) + " [" + (fromNr/10+1) + "/" + ((outboxCount-1)/10+1) + "]");
|
||||
}
|
||||
|
||||
//Else list every mail from ID fromNr to ID toNr
|
||||
} else {
|
||||
for (int j = fromNr; j < toNr; j++) {
|
||||
int shortMsgLenght = 40;
|
||||
shortMsgLenght = shortMsgLenght - mailoutbox[j].fromPlayer.length();
|
||||
shortMsgLenght = shortMsgLenght - new Integer(mailoutbox[j].ID).toString().length() / 10 + 1;
|
||||
String shortMsg;
|
||||
if (shortMsgLenght < mailoutbox[j].msg.length()) {
|
||||
shortMsg = mailoutbox[j].msg.substring(0, shortMsgLenght - 1) + "...";
|
||||
} else {
|
||||
shortMsg = mailoutbox[j].msg;
|
||||
}
|
||||
Messenger.sendPlyInOutBox(sender, mailoutbox[j].ID, mailoutbox[j].toPlayer, shortMsg, mailoutbox[j].read);
|
||||
}
|
||||
}
|
||||
|
||||
//Exit
|
||||
return EnumCmdExe.SUCCESS;
|
||||
}
|
||||
}
|
||||
55
src/me/Caesar2011/Mailings/Commands/Cmd_Mail_Readmail.java
Normal file
55
src/me/Caesar2011/Mailings/Commands/Cmd_Mail_Readmail.java
Normal file
@@ -0,0 +1,55 @@
|
||||
package me.Caesar2011.Mailings.Commands;
|
||||
|
||||
import me.Caesar2011.Mailings.Library.EnumCmdExe;
|
||||
import me.Caesar2011.Mailings.Library.EnumPerm;
|
||||
import me.Caesar2011.Mailings.Library.ItemMailManager;
|
||||
import me.Caesar2011.Mailings.Library.Mail;
|
||||
import me.Caesar2011.Mailings.Library.MailManager;
|
||||
import me.Caesar2011.Mailings.Library.Messenger;
|
||||
|
||||
import org.bukkit.command.CommandSender;
|
||||
|
||||
public class Cmd_Mail_Readmail {
|
||||
|
||||
String[] args;
|
||||
CommandSender sender; //SenderPlayer
|
||||
|
||||
public Cmd_Mail_Readmail(String[] args, CommandSender sender){
|
||||
this.args = args;
|
||||
this.sender = sender;
|
||||
}
|
||||
|
||||
public EnumCmdExe execute(){
|
||||
if (args.length == 0){
|
||||
return EnumCmdExe.TOFEWARGS;
|
||||
}
|
||||
int mailID = 0;
|
||||
|
||||
try {
|
||||
mailID = Integer.parseInt(args[0]);
|
||||
} catch (NumberFormatException e) {
|
||||
return EnumCmdExe.NONUMBER.addArg("%input%", args[0]);
|
||||
}
|
||||
Mail mail = new Mail();
|
||||
try {
|
||||
mail = MailManager.getMail(mailID);
|
||||
} catch (NullPointerException e) {
|
||||
return EnumCmdExe.MAILNOTFOUND.addArg("%mailid%", new Integer(mailID).toString()).addArg("%type%", MailManager.typeName);
|
||||
}
|
||||
|
||||
//Permissioncheck
|
||||
if (EnumPerm.M_READ_OWN.noPermission(sender) && sender.getName().equals(mail.toPlayer)){
|
||||
return EnumCmdExe.NOPERM;
|
||||
}
|
||||
if (EnumPerm.M_READ_OTHER.noPermission(sender) && !sender.getName().equals(mail.toPlayer)){
|
||||
return EnumCmdExe.NOPERM;
|
||||
}
|
||||
|
||||
Messenger.sendPlyRead(sender, mail.msg, mail.toPlayer, mail.fromPlayer, mail.ID, mail.read, mail.sendDate, mail.endDate, ItemMailManager.typeName, null, null);
|
||||
if (mail.toPlayer.equals(sender.getName())) {
|
||||
mail.read = true;
|
||||
MailManager.overrideMail(mail);
|
||||
}
|
||||
return EnumCmdExe.SUCCESS;
|
||||
}
|
||||
}
|
||||
88
src/me/Caesar2011/Mailings/Commands/Cmd_Mail_Sendmail.java
Normal file
88
src/me/Caesar2011/Mailings/Commands/Cmd_Mail_Sendmail.java
Normal file
@@ -0,0 +1,88 @@
|
||||
package me.Caesar2011.Mailings.Commands;
|
||||
|
||||
|
||||
import me.Caesar2011.Mailings.Mailings;
|
||||
import me.Caesar2011.Mailings.Library.CastPlayer;
|
||||
import me.Caesar2011.Mailings.Library.ConfigManager.CfgOther;
|
||||
import me.Caesar2011.Mailings.Library.ConfigManager.CfgPropInt;
|
||||
import me.Caesar2011.Mailings.Library.CooldownManager.CooldownType;
|
||||
import me.Caesar2011.Mailings.Library.EnumCmdExe;
|
||||
import me.Caesar2011.Mailings.Library.EnumPerm;
|
||||
import me.Caesar2011.Mailings.Library.Mail;
|
||||
import me.Caesar2011.Mailings.Library.MailManager;
|
||||
import me.Caesar2011.Mailings.Library.Messenger;
|
||||
|
||||
import org.bukkit.OfflinePlayer;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
public class Cmd_Mail_Sendmail {
|
||||
|
||||
String[] args;
|
||||
CommandSender sender; //SenderPlayer
|
||||
String p2; //TargetPlayer
|
||||
String m; //Message
|
||||
Mailings plugin;
|
||||
|
||||
public Cmd_Mail_Sendmail(String[] args, CommandSender sender, Mailings plugin){
|
||||
this.args = args;
|
||||
this.sender = sender;
|
||||
this.plugin = plugin;
|
||||
}
|
||||
|
||||
public EnumCmdExe execute(){
|
||||
//Permissioncheck
|
||||
if (EnumPerm.M_SEND_SINGLE.noPermission(sender)){
|
||||
return EnumCmdExe.NOPERM;
|
||||
}
|
||||
|
||||
//Cooldown
|
||||
if ((sender instanceof Player) && EnumPerm.M_OVER_COOLDOWN.noPermission((Player) sender) && !CooldownType.MAIL.isCoolDown((Player) sender)){
|
||||
return EnumCmdExe.COOLDOWN.addArg("%amount%", CooldownType.MAIL.getTimeFormat((Player) sender));
|
||||
}
|
||||
|
||||
//Check the length of the arguments
|
||||
if (args.length < 2){
|
||||
return EnumCmdExe.TOFEWARGS;
|
||||
}
|
||||
|
||||
//Create message string m and player name p2 to search
|
||||
p2 = args[0];
|
||||
m = args[1];
|
||||
for (int i = 2; i < args.length; i++){
|
||||
m = m + ' ' + args[i];
|
||||
}
|
||||
|
||||
//Cast the player with p2 -> toPlayer
|
||||
CastPlayer caster = new CastPlayer(p2, true, plugin);
|
||||
OfflinePlayer toPlayer;
|
||||
try {
|
||||
if (sender instanceof Player){
|
||||
toPlayer = caster.search((Player) sender);
|
||||
} else {
|
||||
toPlayer = caster.search();
|
||||
}
|
||||
} catch (NullPointerException e){
|
||||
return EnumCmdExe.NOPLAYER.addArg("%player%", p2);
|
||||
}
|
||||
|
||||
//Delete outdated mails/Count inbox of player
|
||||
int mInBox = MailManager.getInboxAmount(toPlayer, true, false);
|
||||
|
||||
//Check, if inbox of player toPlayer is bursting at the seams -> return
|
||||
if (mInBox >= CfgPropInt.MAIL_MAXINBOX.getValue()){
|
||||
return EnumCmdExe.INBOXFILLED.addArg("%player%", toPlayer.getName()).addArg("%type%", MailManager.typeName);
|
||||
}
|
||||
|
||||
//Send, post message to toPlayer
|
||||
Mail mailSended = new Mail(sender.getName(), toPlayer.getName(), m);
|
||||
MailManager.addMail(mailSended);
|
||||
if (toPlayer.isOnline()) {
|
||||
Messenger.sendOtherMsg(toPlayer.getPlayer(), CfgOther.MAILGET, new String[]{"%player%", sender.getName()}, new String[]{"%mailid%", new Integer(mailSended.ID).toString()}, new String[]{"%type%", MailManager.typeName});
|
||||
}
|
||||
|
||||
//Set cooldown and exit
|
||||
if (sender instanceof Player) {CooldownType.MAIL.setPlayer((Player) sender);}
|
||||
return EnumCmdExe.MAILSEND.addArg("%player%", toPlayer.getName()).addArg("%mailid%", new Integer(mailSended.ID).toString()).addArg("%type%", MailManager.typeName);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,98 @@
|
||||
package me.Caesar2011.Mailings.Commands;
|
||||
|
||||
import me.Caesar2011.Mailings.Mailings;
|
||||
import me.Caesar2011.Mailings.Library.ConfigManager.CfgError;
|
||||
import me.Caesar2011.Mailings.Library.ConfigManager.CfgOther;
|
||||
import me.Caesar2011.Mailings.Library.ConfigManager.CfgPropBool;
|
||||
import me.Caesar2011.Mailings.Library.ConfigManager.CfgPropInt;
|
||||
import me.Caesar2011.Mailings.Library.EnumCmdExe;
|
||||
import me.Caesar2011.Mailings.Library.EnumPerm;
|
||||
import me.Caesar2011.Mailings.Library.Mail;
|
||||
import me.Caesar2011.Mailings.Library.MailManager;
|
||||
import me.Caesar2011.Mailings.Library.Messenger;
|
||||
import me.Caesar2011.Mailings.Library.PlayerInboxSize;
|
||||
|
||||
import org.bukkit.OfflinePlayer;
|
||||
import org.bukkit.command.CommandSender;
|
||||
|
||||
public class Cmd_Mail_Sendroundmail {
|
||||
|
||||
String[] args;
|
||||
CommandSender sender; //SenderPlayer
|
||||
String p2; //TargetPlayer
|
||||
String m; //Message
|
||||
Mailings plugin;
|
||||
|
||||
public Cmd_Mail_Sendroundmail(String[] args, CommandSender sender, Mailings plugin){
|
||||
this.args = args;
|
||||
this.sender = sender;
|
||||
this.plugin = plugin;
|
||||
this.p2 = "";
|
||||
this.m = args[0];
|
||||
for (int i = 1; i < args.length; i++){
|
||||
this.m = this.m + ' ' + args[i];
|
||||
}
|
||||
}
|
||||
|
||||
public EnumCmdExe execute(){
|
||||
|
||||
//Permissioncheck
|
||||
if (EnumPerm.M_SEND_ROUND.noPermission(sender)){
|
||||
return EnumCmdExe.NOPERM;
|
||||
}
|
||||
|
||||
//Check the length of the arguments
|
||||
if (args.length < 1) {
|
||||
return EnumCmdExe.TOFEWARGS;
|
||||
}
|
||||
|
||||
//Create message string m
|
||||
m = args[0];
|
||||
for (int i = 1; i < args.length; i++){
|
||||
m = m + ' ' + args[i];
|
||||
}
|
||||
|
||||
//Get a list with every player ever been on the sever (includes sender)
|
||||
OfflinePlayer[] everyPlayer = plugin.getServer().getOfflinePlayers();
|
||||
Mail mailSended;
|
||||
|
||||
//Delete outdated mails/Count inboxes of players
|
||||
PlayerInboxSize[] pis = MailManager.getInboxAmount(true, false);
|
||||
int j = 0;
|
||||
int pos = -1;
|
||||
|
||||
//Send a mail to every player of the list
|
||||
for (int i = 0; i < everyPlayer.length; i++){
|
||||
|
||||
//Check, if inbox of player everyPlayer[i] is bursting at the seams -> continue
|
||||
pos = -1;
|
||||
for (j = 0; j < pis.length; j++){
|
||||
if (pis[j].Player.equals(everyPlayer[i].getName())){
|
||||
pos = j;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (pos != -1 && pis[j].Size >= CfgPropInt.MAIL_MAXINBOX.getValue()){
|
||||
if(CfgPropBool.MSG_ROUND_FILLED.getValue()){
|
||||
Messenger.sendErrorMsg(sender, CfgError.INBOXFILLED, new String[]{"%player%", everyPlayer[i].getName()});
|
||||
}
|
||||
continue;
|
||||
}
|
||||
|
||||
//Check, if everyPlayer[i] equals sender -> continue
|
||||
if (everyPlayer[i].getName().equals(sender.getName())){
|
||||
continue;
|
||||
}
|
||||
|
||||
//Send, post message to toPlayer
|
||||
mailSended = new Mail(sender.getName(), everyPlayer[i].getName(), m);
|
||||
MailManager.addMail(mailSended);
|
||||
if (everyPlayer[i].isOnline()) {
|
||||
Messenger.sendOtherMsg(everyPlayer[i].getPlayer(), CfgOther.MAILGET, new String[]{"%player%", sender.getName()}, new String[]{"%mailid%", new Integer(mailSended.ID).toString()}, new String[]{"%type%", MailManager.typeName});
|
||||
}
|
||||
}
|
||||
|
||||
//Save and exit
|
||||
return EnumCmdExe.MAILRSEND.addArg("%type%", MailManager.typeName);
|
||||
}
|
||||
}
|
||||
41
src/me/Caesar2011/Mailings/Commands/Cmd_Reload.java
Normal file
41
src/me/Caesar2011/Mailings/Commands/Cmd_Reload.java
Normal file
@@ -0,0 +1,41 @@
|
||||
package me.Caesar2011.Mailings.Commands;
|
||||
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
import me.Caesar2011.Mailings.Mailings;
|
||||
import me.Caesar2011.Mailings.Library.ConfigManager;
|
||||
import me.Caesar2011.Mailings.Library.EnumCmdExe;
|
||||
import me.Caesar2011.Mailings.Library.ItemMailManager;
|
||||
import me.Caesar2011.Mailings.Library.MailManager;
|
||||
import me.Caesar2011.Mailings.Library.Messenger;
|
||||
import me.Caesar2011.Mailings.Library.EnumPerm;
|
||||
import me.Caesar2011.Mailings.Library.TradeMailManager;
|
||||
import me.Caesar2011.Mailings.Listener.Listener_PlayerJoin;
|
||||
|
||||
public class Cmd_Reload {
|
||||
Mailings plugin;
|
||||
CommandSender sender;
|
||||
|
||||
public Cmd_Reload(CommandSender sender, Mailings plugin){
|
||||
this.plugin = plugin;
|
||||
this.sender = sender;
|
||||
}
|
||||
|
||||
public EnumCmdExe execute(){
|
||||
//Permissioncheck
|
||||
if (EnumPerm.RELOAD.noPermission(sender)){
|
||||
return EnumCmdExe.NOPERM;
|
||||
}
|
||||
ConfigManager.onReload();
|
||||
MailManager.onSave();
|
||||
ItemMailManager.onSave();
|
||||
TradeMailManager.onSave();
|
||||
Messenger.onEnable();
|
||||
Player[] everyOnline = plugin.getServer().getOnlinePlayers();
|
||||
for (int i = 0; i < everyOnline.length; i++) {
|
||||
Listener_PlayerJoin.execute(everyOnline[i], plugin);
|
||||
}
|
||||
return EnumCmdExe.RELOAD;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,120 @@
|
||||
package me.Caesar2011.Mailings.Commands;
|
||||
|
||||
import me.Caesar2011.Mailings.Mailings;
|
||||
import me.Caesar2011.Mailings.Library.CastPlayer;
|
||||
import me.Caesar2011.Mailings.Library.ConfigManager.CfgPropInt;
|
||||
import me.Caesar2011.Mailings.Library.EnumCmdExe;
|
||||
import me.Caesar2011.Mailings.Library.ItemMail;
|
||||
import me.Caesar2011.Mailings.Library.ItemMailManager;
|
||||
import me.Caesar2011.Mailings.Library.EnumPerm;
|
||||
import me.Caesar2011.Mailings.Library.StringOperations;
|
||||
import me.Caesar2011.Mailings.Library.TradeMail;
|
||||
import me.Caesar2011.Mailings.Library.TradeMailManager;
|
||||
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
|
||||
public class Cmd_TradeMail_Acceptmail {
|
||||
CommandSender sender;
|
||||
String[] args;
|
||||
Mailings plugin;
|
||||
|
||||
public Cmd_TradeMail_Acceptmail(String[] args, CommandSender sender, Mailings plugin){
|
||||
this.args = args;
|
||||
this.sender = sender;
|
||||
this.plugin = plugin;
|
||||
}
|
||||
|
||||
public EnumCmdExe execute(){
|
||||
//No console
|
||||
if (!(sender instanceof Player)){
|
||||
return EnumCmdExe.NOCONS;
|
||||
}
|
||||
Player p = (Player) sender;
|
||||
|
||||
//Args length >= 2 ? -> else fail
|
||||
if (args.length <= 1){
|
||||
return EnumCmdExe.TOFEWARGS;
|
||||
}
|
||||
|
||||
//try to get ID (mailID) and message (msg)
|
||||
int mailID = 0;
|
||||
try {
|
||||
mailID = Integer.parseInt(args[0]);
|
||||
} catch (NumberFormatException e) {
|
||||
return EnumCmdExe.NONUMBER.addArg("%input%", args[0]);
|
||||
}
|
||||
String[] strArr = new String[args.length-1];
|
||||
for (int i = 1; i < args.length;) {
|
||||
strArr[i-1] = args[i];
|
||||
i++;
|
||||
}
|
||||
String msg = StringOperations.getStringArr(strArr);
|
||||
|
||||
//Try to get TradeMail
|
||||
if (mailID != 0 && mailID <= TradeMailManager.getLastMailID()) {
|
||||
|
||||
String toPlayerName = TradeMailManager.getString(mailID, "ToPlayer");
|
||||
|
||||
//Permissioncheck
|
||||
if (EnumPerm.TM_ACC_OWN.noPermission(p) && p.getName().equals(toPlayerName)){
|
||||
return EnumCmdExe.NOPERM;
|
||||
}
|
||||
if (EnumPerm.TM_ACC_OTHER.noPermission(p) && !p.getName().equals(toPlayerName)){
|
||||
return EnumCmdExe.NOPERM;
|
||||
}
|
||||
|
||||
//Check if can send back
|
||||
TradeMail mail = TradeMailManager.getMail(mailID);
|
||||
CastPlayer caster = new CastPlayer(mail.fromPlayer, true, plugin);
|
||||
if (ItemMailManager.getInboxAmount(caster.search(), true, false) >= CfgPropInt.IMAIL_MAXINBOX.getValue()){
|
||||
return EnumCmdExe.INBOXFILLED.addArg("%player%", mail.fromPlayer).addArg("%type%", ItemMailManager.typeName);
|
||||
}
|
||||
|
||||
//Trade :) and send ItemMail back
|
||||
if (!checkIfHas(p, mail.reqitem)) {
|
||||
return EnumCmdExe.NOTENOUGHINV;
|
||||
}
|
||||
p.getInventory().removeItem(mail.reqitem);
|
||||
if (!checkIfFits(p, mail.getitem)) {
|
||||
p.getInventory().addItem(mail.reqitem);
|
||||
return EnumCmdExe.INVFILLED;
|
||||
}
|
||||
p.getInventory().addItem(mail.getitem);
|
||||
ItemMail backMail = new ItemMail(mail.toPlayer, mail.fromPlayer, msg, mail.reqitem);
|
||||
ItemMailManager.addMail(backMail);
|
||||
|
||||
//Finish and send messages
|
||||
TradeMailManager.delMail(mailID);
|
||||
return EnumCmdExe.TRADEACC.addArg("%mailid%", new Integer(mailID).toString()).addArg("%type%", TradeMailManager.typeName).addArg("%player%", mail.fromPlayer);
|
||||
} else {
|
||||
return EnumCmdExe.MAILNOTFOUND.addArg("%mailid%", new Integer(mailID).toString()).addArg("%type%", TradeMailManager.typeName);
|
||||
}
|
||||
}
|
||||
|
||||
private boolean checkIfFits(Player p, ItemStack i){
|
||||
int a = i.getAmount();
|
||||
for (ItemStack item : p.getInventory().getContents()) {
|
||||
if (item == null) {
|
||||
return true;
|
||||
} else if(item.isSimilar(i) || (item.getType() == Material.AIR)) {
|
||||
a -= i.getMaxStackSize() - item.getAmount();
|
||||
if (a <= 0) return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
private boolean checkIfHas(Player p, ItemStack i){
|
||||
int a = i.getAmount();
|
||||
for (ItemStack item : p.getInventory().getContents()) {
|
||||
if(item != null && item.isSimilar(i)) {
|
||||
a -= item.getAmount();
|
||||
if (a <= 0) return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,78 @@
|
||||
package me.Caesar2011.Mailings.Commands;
|
||||
|
||||
import me.Caesar2011.Mailings.Mailings;
|
||||
import me.Caesar2011.Mailings.Library.CastPlayer;
|
||||
import me.Caesar2011.Mailings.Library.ConfigManager.CfgPropInt;
|
||||
import me.Caesar2011.Mailings.Library.EnumCmdExe;
|
||||
import me.Caesar2011.Mailings.Library.EnumPerm;
|
||||
import me.Caesar2011.Mailings.Library.ItemMail;
|
||||
import me.Caesar2011.Mailings.Library.ItemMailManager;
|
||||
import me.Caesar2011.Mailings.Library.StringOperations;
|
||||
import me.Caesar2011.Mailings.Library.TradeMail;
|
||||
import me.Caesar2011.Mailings.Library.TradeMailManager;
|
||||
|
||||
import org.bukkit.command.CommandSender;
|
||||
|
||||
public class Cmd_TradeMail_Denymail {
|
||||
CommandSender sender;
|
||||
String[] args;
|
||||
Mailings plugin;
|
||||
|
||||
public Cmd_TradeMail_Denymail(String[] args, CommandSender sender, Mailings plugin){
|
||||
this.args = args;
|
||||
this.sender = sender;
|
||||
this.plugin = plugin;
|
||||
}
|
||||
|
||||
public EnumCmdExe execute(){
|
||||
//Args length >= 2 ? -> else fail
|
||||
if (args.length <= 1){
|
||||
return EnumCmdExe.TOFEWARGS;
|
||||
}
|
||||
|
||||
//Try to get ID (mailID) and message (msg)
|
||||
int mailID = 0;
|
||||
try {
|
||||
mailID = Integer.parseInt(args[0]);
|
||||
} catch (NumberFormatException e) {
|
||||
return EnumCmdExe.NONUMBER.addArg("%input%", args[0]);
|
||||
}
|
||||
String[] strArr = new String[args.length-1];
|
||||
for (int i = 1; i < args.length;) {
|
||||
strArr[i-1] = args[i];
|
||||
i++;
|
||||
}
|
||||
String msg = StringOperations.getStringArr(strArr);
|
||||
|
||||
//Try to get TradeMail
|
||||
if (mailID != 0 && mailID <= TradeMailManager.getLastMailID()) {
|
||||
|
||||
String toPlayerName = TradeMailManager.getString(mailID, "ToPlayer");
|
||||
|
||||
//Permissioncheck
|
||||
if (EnumPerm.TM_ACC_OWN.noPermission(sender) && sender.getName().equals(toPlayerName)){
|
||||
return EnumCmdExe.NOPERM;
|
||||
}
|
||||
if (EnumPerm.TM_ACC_OTHER.noPermission(sender) && !sender.getName().equals(toPlayerName)){
|
||||
return EnumCmdExe.NOPERM;
|
||||
}
|
||||
|
||||
//Check if can send back
|
||||
TradeMail mail = TradeMailManager.getMail(mailID);
|
||||
CastPlayer caster = new CastPlayer(mail.fromPlayer, true, plugin);
|
||||
if (ItemMailManager.getInboxAmount(caster.search(), true, false) >= CfgPropInt.IMAIL_MAXINBOX.getValue()){
|
||||
return EnumCmdExe.INBOXFILLED.addArg("%player%", mail.fromPlayer).addArg("%type%", ItemMailManager.typeName);
|
||||
}
|
||||
|
||||
//Do not trade :) and send ItemMail back
|
||||
ItemMail backMail = new ItemMail(mail.toPlayer, mail.fromPlayer, msg, mail.getitem);
|
||||
ItemMailManager.addMail(backMail);
|
||||
|
||||
//Finish and send messages
|
||||
TradeMailManager.delMail(mailID);
|
||||
return EnumCmdExe.TRADEDEN.addArg("%mailid%", new Integer(mailID).toString()).addArg("%type%", TradeMailManager.typeName).addArg("%player%", mail.fromPlayer);
|
||||
} else {
|
||||
return EnumCmdExe.MAILNOTFOUND.addArg("%mailid%", new Integer(mailID).toString()).addArg("%type%", TradeMailManager.typeName);
|
||||
}
|
||||
}
|
||||
}
|
||||
134
src/me/Caesar2011/Mailings/Commands/Cmd_TradeMail_Inbox.java
Normal file
134
src/me/Caesar2011/Mailings/Commands/Cmd_TradeMail_Inbox.java
Normal file
@@ -0,0 +1,134 @@
|
||||
package me.Caesar2011.Mailings.Commands;
|
||||
|
||||
import me.Caesar2011.Mailings.Mailings;
|
||||
import me.Caesar2011.Mailings.Library.CastPlayer;
|
||||
import me.Caesar2011.Mailings.Library.ConfigManager.CfgInbox;
|
||||
import me.Caesar2011.Mailings.Library.EnumCmdExe;
|
||||
import me.Caesar2011.Mailings.Library.Messenger;
|
||||
import me.Caesar2011.Mailings.Library.EnumPerm;
|
||||
import me.Caesar2011.Mailings.Library.TradeMail;
|
||||
import me.Caesar2011.Mailings.Library.TradeMailManager;
|
||||
|
||||
import org.bukkit.OfflinePlayer;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
public class Cmd_TradeMail_Inbox {
|
||||
|
||||
String[] args;
|
||||
CommandSender sender; //SenderPlayer
|
||||
String p2; //InboxPlayer
|
||||
Mailings plugin;
|
||||
|
||||
public Cmd_TradeMail_Inbox(String[] args, CommandSender sender, Mailings plugin){
|
||||
this.args = args;
|
||||
this.sender = sender;
|
||||
this.plugin = plugin;
|
||||
}
|
||||
|
||||
public EnumCmdExe execute(){
|
||||
if (!(sender instanceof Player) && args.length == 0){
|
||||
return EnumCmdExe.TOFEWARGS;
|
||||
}
|
||||
|
||||
if (this.args.length == 0) {
|
||||
this.p2 = this.sender.getName();
|
||||
} else if (this.args.length == 1) {
|
||||
this.args = new String[] {this.sender.getName(), this.args[0]};
|
||||
}
|
||||
if (this.args.length >= 2) {
|
||||
this.p2 = this.args[0];
|
||||
}
|
||||
|
||||
boolean showAll = false;
|
||||
if (p2.equals("-a")){
|
||||
showAll = true;
|
||||
} else {
|
||||
//Cast the player with p2 -> toPlayer -RENAME-> p2
|
||||
CastPlayer caster = new CastPlayer(p2, true, plugin);
|
||||
OfflinePlayer toPlayer;
|
||||
try {
|
||||
toPlayer = caster.search();
|
||||
} catch (NullPointerException e){
|
||||
return EnumCmdExe.NOPLAYER.addArg("%player%", p2);
|
||||
}
|
||||
p2 = toPlayer.getName();
|
||||
}
|
||||
|
||||
//Permissioncheck
|
||||
if (EnumPerm.TM_IBOX_OWN.noPermission(sender) && sender.getName().equals(p2)){
|
||||
return EnumCmdExe.NOPERM;
|
||||
}
|
||||
if (EnumPerm.TM_IBOX_OTHER.noPermission(sender) && (!sender.getName().equals(p2) || showAll)){
|
||||
if (args.length > 2) {
|
||||
return EnumCmdExe.NOPERM;
|
||||
} else {
|
||||
args = new String[]{this.sender.getName(), args[0]};
|
||||
}
|
||||
}
|
||||
|
||||
//Buffer every mail to (maybe offline) player -> mailinbox[] {messageCount elements, inboxCount in use}
|
||||
int messageCount = TradeMailManager.getLastMailID();
|
||||
TradeMail mailinbox[] = new TradeMail[messageCount];
|
||||
int inboxCount = 0;
|
||||
String toPlayerName;
|
||||
for (int i = 1; i <= messageCount;i++) {
|
||||
toPlayerName = TradeMailManager.getString(i, "ToPlayer");
|
||||
if (showAll || p2.equals(toPlayerName)) {
|
||||
mailinbox[inboxCount] = TradeMailManager.getMail(i);
|
||||
inboxCount++;
|
||||
}
|
||||
}
|
||||
|
||||
//Calculate fromNr (first mailinbox[fromNr] showed) and toNr (last mailinbox[fromNr] showed) with an optional parameter
|
||||
int fromNr = 1;
|
||||
int toNr = 0;
|
||||
if (args.length >= 2) {
|
||||
try {
|
||||
fromNr = Integer.parseInt(args[1]);
|
||||
} catch (NumberFormatException e) {
|
||||
return EnumCmdExe.NONUMBER.addArg("%input%", args[1]);
|
||||
}
|
||||
}
|
||||
fromNr = Math.max(1, fromNr) - 1;
|
||||
fromNr = Math.min(fromNr, (inboxCount-1) / 10);
|
||||
fromNr = fromNr * 10;
|
||||
toNr = Math.min(inboxCount, fromNr + 10);
|
||||
|
||||
if (showAll) p2 = "@@@";
|
||||
|
||||
//Show the inbox header
|
||||
if (sender.getName().equals(p2)) {
|
||||
Messenger.sendPlyHeader(sender, CfgInbox.TITLE_OWN.getValue().replaceAll("%type%", TradeMailManager.typeName) + " [" + (fromNr/10+1) + "/" + ((inboxCount-1)/10+1) + "]");
|
||||
} else {
|
||||
Messenger.sendPlyHeader(sender, CfgInbox.TITLE_OTHER.getValue().replaceAll("%player%", p2).replaceAll("%type%", TradeMailManager.typeName) + " [" + (fromNr/10+1) + "/" + ((inboxCount-1)/10+1) + "]");
|
||||
}
|
||||
|
||||
//Show a message, if inbox is empty
|
||||
if (inboxCount == 0){
|
||||
if (sender.getName().equals(p2)) {
|
||||
Messenger.sendPlyHeader(sender, CfgInbox.EMPTY_OWN.getValue().replaceAll("%type%", TradeMailManager.typeName) + " [" + (fromNr/10+1) + "/" + ((inboxCount-1)/10+1) + "]");
|
||||
} else {
|
||||
Messenger.sendPlyHeader(sender, CfgInbox.EMPTY_OTHER.getValue().replaceAll("%player%", p2).replaceAll("%type%", TradeMailManager.typeName) + " [" + (fromNr/10+1) + "/" + ((inboxCount-1)/10+1) + "]");
|
||||
}
|
||||
|
||||
//Else list every mail from ID fromNr to ID toNr
|
||||
} else {
|
||||
for (int j = fromNr; j < toNr; j++) {
|
||||
int shortMsgLenght = 40;
|
||||
shortMsgLenght = shortMsgLenght - mailinbox[j].toPlayer.length();
|
||||
shortMsgLenght = shortMsgLenght - new Integer(mailinbox[j].ID).toString().length() / 10 + 1;
|
||||
String shortMsg;
|
||||
if (shortMsgLenght < mailinbox[j].msg.length()) {
|
||||
shortMsg = mailinbox[j].msg.substring(0, shortMsgLenght - 1) + "...";
|
||||
} else {
|
||||
shortMsg = mailinbox[j].msg;
|
||||
}
|
||||
Messenger.sendPlyInOutBox(sender, mailinbox[j].ID, mailinbox[j].fromPlayer, shortMsg, mailinbox[j].read);
|
||||
}
|
||||
}
|
||||
|
||||
//Exit
|
||||
return EnumCmdExe.SUCCESS;
|
||||
}
|
||||
}
|
||||
134
src/me/Caesar2011/Mailings/Commands/Cmd_TradeMail_Outbox.java
Normal file
134
src/me/Caesar2011/Mailings/Commands/Cmd_TradeMail_Outbox.java
Normal file
@@ -0,0 +1,134 @@
|
||||
package me.Caesar2011.Mailings.Commands;
|
||||
|
||||
import me.Caesar2011.Mailings.Mailings;
|
||||
import me.Caesar2011.Mailings.Library.CastPlayer;
|
||||
import me.Caesar2011.Mailings.Library.ConfigManager.CfgOutbox;
|
||||
import me.Caesar2011.Mailings.Library.EnumCmdExe;
|
||||
import me.Caesar2011.Mailings.Library.Messenger;
|
||||
import me.Caesar2011.Mailings.Library.EnumPerm;
|
||||
import me.Caesar2011.Mailings.Library.TradeMail;
|
||||
import me.Caesar2011.Mailings.Library.TradeMailManager;
|
||||
|
||||
import org.bukkit.OfflinePlayer;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
public class Cmd_TradeMail_Outbox {
|
||||
|
||||
String[] args;
|
||||
CommandSender sender; //SenderPlayer
|
||||
String p2; //OutboxPlayer
|
||||
Mailings plugin;
|
||||
|
||||
public Cmd_TradeMail_Outbox(String[] args, CommandSender sender, Mailings plugin){
|
||||
this.args = args;
|
||||
this.sender = sender;
|
||||
this.plugin = plugin;
|
||||
}
|
||||
|
||||
public EnumCmdExe execute(){
|
||||
if (!(sender instanceof Player) && args.length == 0){
|
||||
return EnumCmdExe.TOFEWARGS;
|
||||
}
|
||||
|
||||
if (this.args.length == 0) {
|
||||
this.p2 = this.sender.getName();
|
||||
} else if (this.args.length == 1) {
|
||||
this.args = new String[] {this.sender.getName(), this.args[0]};
|
||||
}
|
||||
if (this.args.length >= 2) {
|
||||
this.p2 = this.args[0];
|
||||
}
|
||||
|
||||
boolean showAll = false;
|
||||
if (p2.equals("-a")){
|
||||
showAll = true;
|
||||
} else {
|
||||
//Cast the player with p2 -> fromPlayer -RENAME-> p2
|
||||
CastPlayer caster = new CastPlayer(p2, true, plugin);
|
||||
OfflinePlayer fromPlayer;
|
||||
try {
|
||||
fromPlayer = caster.search();
|
||||
} catch (NullPointerException e){
|
||||
return EnumCmdExe.NOPLAYER.addArg("%player%", p2);
|
||||
}
|
||||
p2 = fromPlayer.getName();
|
||||
}
|
||||
|
||||
//Permissioncheck
|
||||
if (EnumPerm.TM_OBOX_OWN.noPermission(sender) && sender.getName().equals(p2)){
|
||||
return EnumCmdExe.NOPERM;
|
||||
}
|
||||
if (EnumPerm.TM_OBOX_OTHER.noPermission(sender) && !sender.getName().equals(p2)){
|
||||
if (args.length > 2) {
|
||||
return EnumCmdExe.NOPERM;
|
||||
} else {
|
||||
args = new String[]{this.sender.getName(), args[0]};
|
||||
}
|
||||
}
|
||||
|
||||
//Buffer every mail from (maybe offline) fromPlayer -> mailoutbox[] {messageCount elements, outboxCount in use}
|
||||
int messageCount = TradeMailManager.getLastMailID();
|
||||
TradeMail mailoutbox[] = new TradeMail[messageCount];
|
||||
int outboxCount = 0;
|
||||
String fromPlayerName;
|
||||
for (int i = 1; i <= messageCount;i++) {
|
||||
fromPlayerName = TradeMailManager.getString(i, "FromPlayer");
|
||||
if (showAll || p2.equals(fromPlayerName)) {
|
||||
mailoutbox[outboxCount] = TradeMailManager.getMail(i);
|
||||
outboxCount++;
|
||||
}
|
||||
}
|
||||
|
||||
//Calculate fromNr (first mailoutbox[fromNr] showed) and toNr (last mailoutbox[fromNr] showed) with an optional parameter
|
||||
int fromNr = 1;
|
||||
int toNr = 0;
|
||||
if (args.length >= 2) {
|
||||
try {
|
||||
fromNr = Integer.parseInt(args[1]);
|
||||
} catch (NumberFormatException e) {
|
||||
return EnumCmdExe.NONUMBER.addArg("%input%", args[1]);
|
||||
}
|
||||
}
|
||||
fromNr = Math.max(1, fromNr) - 1;
|
||||
fromNr = Math.min(fromNr, (outboxCount-1) / 10);
|
||||
fromNr = fromNr * 10;
|
||||
toNr = Math.min(outboxCount, fromNr + 10);
|
||||
|
||||
if (showAll) p2 = "@@@";
|
||||
|
||||
//Show the outbox header
|
||||
if (sender.getName().equals(p2)) {
|
||||
Messenger.sendPlyHeader(sender, CfgOutbox.TITLE_OWN.getValue().replaceAll("%type%", TradeMailManager.typeName) + " [" + (fromNr/10+1) + "/" + ((outboxCount-1)/10+1) + "]");
|
||||
} else {
|
||||
Messenger.sendPlyHeader(sender, CfgOutbox.TITLE_OTHER.getValue().replaceAll("%player%", p2).replaceAll("%type%", TradeMailManager.typeName) + " [" + (fromNr/10+1) + "/" + ((outboxCount-1)/10+1) + "]");
|
||||
}
|
||||
|
||||
//Show a message, if outbox is empty
|
||||
if (outboxCount == 0){
|
||||
if (sender.getName().equals(p2)) {
|
||||
Messenger.sendPlyHeader(sender, CfgOutbox.EMPTY_OWN.getValue().replaceAll("%type%", TradeMailManager.typeName) + " [" + (fromNr/10+1) + "/" + ((outboxCount-1)/10+1) + "]");
|
||||
} else {
|
||||
Messenger.sendPlyHeader(sender, CfgOutbox.EMPTY_OTHER.getValue().replaceAll("%player%", p2).replaceAll("%type%", TradeMailManager.typeName) + " [" + (fromNr/10+1) + "/" + ((outboxCount-1)/10+1) + "]");
|
||||
}
|
||||
|
||||
//Else list every mail from ID fromNr to ID toNr
|
||||
} else {
|
||||
for (int j = fromNr; j < toNr; j++) {
|
||||
int shortMsgLenght = 40;
|
||||
shortMsgLenght = shortMsgLenght - mailoutbox[j].fromPlayer.length();
|
||||
shortMsgLenght = shortMsgLenght - new Integer(mailoutbox[j].ID).toString().length() / 10 + 1;
|
||||
String shortMsg;
|
||||
if (shortMsgLenght < mailoutbox[j].msg.length()) {
|
||||
shortMsg = mailoutbox[j].msg.substring(0, shortMsgLenght - 1) + "...";
|
||||
} else {
|
||||
shortMsg = mailoutbox[j].msg;
|
||||
}
|
||||
Messenger.sendPlyInOutBox(sender, mailoutbox[j].ID, mailoutbox[j].toPlayer, shortMsg, mailoutbox[j].read);
|
||||
}
|
||||
}
|
||||
|
||||
//Exit
|
||||
return EnumCmdExe.SUCCESS;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,73 @@
|
||||
package me.Caesar2011.Mailings.Commands;
|
||||
|
||||
import me.Caesar2011.Mailings.Library.EnumCmdExe;
|
||||
import me.Caesar2011.Mailings.Library.EnumPerm;
|
||||
import me.Caesar2011.Mailings.Library.ItemMailManager;
|
||||
import me.Caesar2011.Mailings.Library.Messenger;
|
||||
import me.Caesar2011.Mailings.Library.TradeMail;
|
||||
import me.Caesar2011.Mailings.Library.TradeMailManager;
|
||||
|
||||
import org.bukkit.command.CommandSender;
|
||||
|
||||
public class Cmd_TradeMail_Readmail {
|
||||
|
||||
String[] args;
|
||||
CommandSender sender; //SenderPlayer
|
||||
|
||||
public Cmd_TradeMail_Readmail(String[] args, CommandSender sender){
|
||||
this.args = args;
|
||||
this.sender = sender;
|
||||
}
|
||||
|
||||
public EnumCmdExe execute(){
|
||||
if (args.length == 0){
|
||||
return EnumCmdExe.TOFEWARGS;
|
||||
}
|
||||
int mailID = 0;
|
||||
|
||||
try {
|
||||
mailID = Integer.parseInt(args[0]);
|
||||
} catch (NumberFormatException e) {
|
||||
return EnumCmdExe.NONUMBER.addArg("%input%", args[0]);
|
||||
}
|
||||
TradeMail mail = new TradeMail();
|
||||
try {
|
||||
mail = TradeMailManager.getMail(mailID);
|
||||
} catch (NullPointerException e) {
|
||||
return EnumCmdExe.MAILNOTFOUND.addArg("%mailid%", new Integer(mailID).toString()).addArg("%type%", TradeMailManager.typeName);
|
||||
}
|
||||
|
||||
//Permissioncheck
|
||||
if (EnumPerm.TM_READ_OWN.noPermission(sender) && sender.getName().equals(mail.toPlayer)){
|
||||
return EnumCmdExe.NOPERM;
|
||||
}
|
||||
if (EnumPerm.TM_READ_OTHER.noPermission(sender) && !sender.getName().equals(mail.toPlayer)){
|
||||
return EnumCmdExe.NOPERM;
|
||||
}
|
||||
|
||||
String getItemString;
|
||||
if (mail.getitem != null){
|
||||
getItemString = mail.getitem.getAmount() + " x " + mail.getitem.getType().toString().toLowerCase();
|
||||
if (mail.getitem.getDurability() > 0) {
|
||||
getItemString = getItemString + " : " + mail.getitem.getDurability();
|
||||
}
|
||||
} else {
|
||||
getItemString = "N/A";
|
||||
}
|
||||
String reqItemString;
|
||||
if (mail.reqitem != null){
|
||||
reqItemString = mail.reqitem.getAmount() + " x " + mail.reqitem.getType().toString().toLowerCase();
|
||||
if (mail.reqitem.getDurability() > 0) {
|
||||
reqItemString = reqItemString + " : " + mail.reqitem.getDurability();
|
||||
}
|
||||
} else {
|
||||
reqItemString = "N/A";
|
||||
}
|
||||
Messenger.sendPlyRead(sender, mail.msg, mail.toPlayer, mail.fromPlayer, mail.ID, mail.read, mail.sendDate, mail.endDate, ItemMailManager.typeName, getItemString, reqItemString);
|
||||
if (mail.toPlayer.equals(sender.getName())) {
|
||||
mail.read = true;
|
||||
TradeMailManager.overrideMail(mail);
|
||||
}
|
||||
return EnumCmdExe.SUCCESS;
|
||||
}
|
||||
}
|
||||
108
src/me/Caesar2011/Mailings/Commands/Cmd_TradeMail_Sendmail.java
Normal file
108
src/me/Caesar2011/Mailings/Commands/Cmd_TradeMail_Sendmail.java
Normal file
@@ -0,0 +1,108 @@
|
||||
package me.Caesar2011.Mailings.Commands;
|
||||
|
||||
|
||||
import me.Caesar2011.Mailings.Mailings;
|
||||
import me.Caesar2011.Mailings.Library.CastPlayer;
|
||||
import me.Caesar2011.Mailings.Library.ConfigManager.CfgOther;
|
||||
import me.Caesar2011.Mailings.Library.ConfigManager.CfgPropInt;
|
||||
import me.Caesar2011.Mailings.Library.CooldownManager.CooldownType;
|
||||
import me.Caesar2011.Mailings.Library.EnumCmdExe;
|
||||
import me.Caesar2011.Mailings.Library.Messenger;
|
||||
import me.Caesar2011.Mailings.Library.EnumPerm;
|
||||
import me.Caesar2011.Mailings.Library.StringOperations;
|
||||
import me.Caesar2011.Mailings.Library.TradeMail;
|
||||
import me.Caesar2011.Mailings.Library.TradeMailManager;
|
||||
|
||||
import org.bukkit.OfflinePlayer;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
|
||||
public class Cmd_TradeMail_Sendmail {
|
||||
|
||||
String[] args;
|
||||
CommandSender sender; //SenderPlayer
|
||||
String p2; //TargetPlayer
|
||||
String m; //Message
|
||||
ItemStack getitem;
|
||||
ItemStack reqitem;
|
||||
Mailings plugin;
|
||||
|
||||
public Cmd_TradeMail_Sendmail(String[] args, CommandSender sender, Mailings plugin){
|
||||
this.args = args;
|
||||
this.sender = sender;
|
||||
this.plugin = plugin;
|
||||
}
|
||||
|
||||
public EnumCmdExe execute(){
|
||||
if (!(sender instanceof Player)){
|
||||
return EnumCmdExe.NOCONS;
|
||||
}
|
||||
Player p = (Player) sender;
|
||||
|
||||
//Permissioncheck
|
||||
if (EnumPerm.TM_SEND_SINGLE.noPermission(p)){
|
||||
return EnumCmdExe.NOPERM;
|
||||
}
|
||||
|
||||
//Cooldown
|
||||
if (EnumPerm.IM_OVER_COOLDOWN.noPermission(p) && !CooldownType.TMAIL.isCoolDown(p)){
|
||||
return EnumCmdExe.COOLDOWN.addArg("%amount%", CooldownType.TMAIL.getTimeFormat(p));
|
||||
}
|
||||
|
||||
//Check the length of the arguments
|
||||
if (args.length < 3){
|
||||
return EnumCmdExe.TOFEWARGS;
|
||||
}
|
||||
|
||||
//Create message string m and player name p2 to search
|
||||
p2 = args[0];
|
||||
reqitem = StringOperations.getItemStack(args[1]);
|
||||
if (reqitem == null) {
|
||||
return EnumCmdExe.NOITEM;
|
||||
}
|
||||
m = args[2];
|
||||
for (int i = 3; i < args.length; i++){
|
||||
m = m + ' ' + args[i];
|
||||
}
|
||||
|
||||
//Get item from hand -> item
|
||||
getitem = p.getItemInHand();
|
||||
if (getitem.getAmount() == 0){
|
||||
return EnumCmdExe.NOITEMINHAND;
|
||||
}
|
||||
|
||||
//Cast the player with p2 -> toPlayer
|
||||
CastPlayer caster = new CastPlayer(p2, true, plugin);
|
||||
OfflinePlayer toPlayer;
|
||||
try {
|
||||
toPlayer = caster.search(p);
|
||||
} catch (NullPointerException e){
|
||||
return EnumCmdExe.NOPLAYER.addArg("%player%", p2);
|
||||
}
|
||||
|
||||
//Delete outdated mails/Count inbox of player
|
||||
int mInBox = TradeMailManager.getInboxAmount(toPlayer, true, false);
|
||||
|
||||
//Check, if inbox of player toPlayer is bursting at the seams -> return
|
||||
if (mInBox >= CfgPropInt.TMAIL_MAXINBOX.getValue()){
|
||||
return EnumCmdExe.INBOXFILLED.addArg("%player%", toPlayer.getName()).addArg("%type%", TradeMailManager.typeName);
|
||||
}
|
||||
|
||||
//Send, post message to toPlayer
|
||||
TradeMail mailSended = new TradeMail(p.getName(), toPlayer.getName(), m, getitem, reqitem);
|
||||
TradeMailManager.addMail(mailSended);
|
||||
if (toPlayer.isOnline()) {
|
||||
Messenger.sendOtherMsg(toPlayer.getPlayer(), CfgOther.MAILGET, new String[]{"%player%", p.getName()}, new String[]{"%mailid%", new Integer(mailSended.ID).toString()}, new String[]{"%type%", TradeMailManager.typeName});
|
||||
}
|
||||
|
||||
//Remove item in hand
|
||||
ItemStack toDel = p.getItemInHand();
|
||||
toDel.setAmount(0);
|
||||
p.setItemInHand(toDel);
|
||||
|
||||
//Set cooldown and exit
|
||||
CooldownType.TMAIL.setPlayer(p);
|
||||
return EnumCmdExe.MAILSEND.addArg("%player%", toPlayer.getName()).addArg("%mailid%", new Integer(mailSended.ID).toString()).addArg("%type%", TradeMailManager.typeName);
|
||||
}
|
||||
}
|
||||
62
src/me/Caesar2011/Mailings/Library/CastPlayer.java
Normal file
62
src/me/Caesar2011/Mailings/Library/CastPlayer.java
Normal file
@@ -0,0 +1,62 @@
|
||||
package me.Caesar2011.Mailings.Library;
|
||||
|
||||
import me.Caesar2011.Mailings.Mailings;
|
||||
|
||||
import org.bukkit.OfflinePlayer;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
public class CastPlayer {
|
||||
public String nameToSearch;
|
||||
public boolean searchOffPlayers;
|
||||
private Mailings plugin;
|
||||
|
||||
public CastPlayer(String nameToSearch, boolean searchOffPlayers, Mailings plugin){
|
||||
this.nameToSearch = nameToSearch;
|
||||
this.searchOffPlayers = searchOffPlayers;
|
||||
this.plugin = plugin;
|
||||
}
|
||||
|
||||
public OfflinePlayer search(){
|
||||
//Search for an online player matching
|
||||
Player[] everyOnline = plugin.getServer().getOnlinePlayers();
|
||||
for(int i = 0;i < everyOnline.length;i++){
|
||||
if (everyOnline[i].getName().toLowerCase().indexOf(nameToSearch.toLowerCase()) >= 0){
|
||||
return everyOnline[i];
|
||||
}
|
||||
}
|
||||
if (!searchOffPlayers){
|
||||
throw (RuntimeException) null;
|
||||
}
|
||||
|
||||
OfflinePlayer[] every = plugin.getServer().getOfflinePlayers();
|
||||
for(int i = 0;i < every.length;i++){
|
||||
if (every[i].getName().toLowerCase().indexOf(nameToSearch.toLowerCase()) >= 0){
|
||||
return every[i];
|
||||
}
|
||||
}
|
||||
|
||||
throw (RuntimeException) null;
|
||||
}
|
||||
|
||||
public OfflinePlayer search(Player except){
|
||||
//Search for an online player matching
|
||||
Player[] everyOnline = plugin.getServer().getOnlinePlayers();
|
||||
for(int i = 0;i < everyOnline.length;i++){
|
||||
if (everyOnline[i].getName().toLowerCase().indexOf(nameToSearch.toLowerCase()) >= 0 && !everyOnline[i].getName().equalsIgnoreCase(except.getName())){
|
||||
return everyOnline[i];
|
||||
}
|
||||
}
|
||||
if (!searchOffPlayers){
|
||||
throw (RuntimeException) null;
|
||||
}
|
||||
|
||||
OfflinePlayer[] every = plugin.getServer().getOfflinePlayers();
|
||||
for(int i = 0;i < every.length;i++){
|
||||
if (every[i].getName().toLowerCase().indexOf(nameToSearch.toLowerCase()) >= 0 && !every[i].getName().equalsIgnoreCase(except.getName())){
|
||||
return every[i];
|
||||
}
|
||||
}
|
||||
|
||||
throw (RuntimeException) null;
|
||||
}
|
||||
}
|
||||
38
src/me/Caesar2011/Mailings/Library/ColorOperations.java
Normal file
38
src/me/Caesar2011/Mailings/Library/ColorOperations.java
Normal file
@@ -0,0 +1,38 @@
|
||||
package me.Caesar2011.Mailings.Library;
|
||||
|
||||
import org.bukkit.ChatColor;
|
||||
|
||||
public class ColorOperations {
|
||||
private static String seperator = "&";
|
||||
private static String strings = "0123456789abcdef";
|
||||
private static ChatColor[] colors = {
|
||||
ChatColor.BLACK,
|
||||
ChatColor.DARK_BLUE,
|
||||
ChatColor.DARK_GREEN,
|
||||
ChatColor.DARK_AQUA,
|
||||
ChatColor.DARK_RED,
|
||||
ChatColor.DARK_PURPLE,
|
||||
ChatColor.GOLD,
|
||||
ChatColor.GRAY,
|
||||
ChatColor.DARK_GRAY,
|
||||
ChatColor.DARK_BLUE,
|
||||
ChatColor.GREEN,
|
||||
ChatColor.AQUA,
|
||||
ChatColor.RED,
|
||||
ChatColor.LIGHT_PURPLE,
|
||||
ChatColor.YELLOW,
|
||||
ChatColor.WHITE
|
||||
};
|
||||
|
||||
public static ChatColor getChatColor(String str){
|
||||
if (str.length() == 2 && str.substring(0, 1).equals(seperator)){
|
||||
char c = str.charAt(1);
|
||||
for (int i = 0; i < strings.length(); i++) {
|
||||
if (c == strings.charAt(i)){
|
||||
return colors[i];
|
||||
}
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
378
src/me/Caesar2011/Mailings/Library/ConfigManager.java
Normal file
378
src/me/Caesar2011/Mailings/Library/ConfigManager.java
Normal file
@@ -0,0 +1,378 @@
|
||||
package me.Caesar2011.Mailings.Library;
|
||||
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.configuration.file.FileConfiguration;
|
||||
|
||||
|
||||
public class ConfigManager {
|
||||
|
||||
interface CfgStr {
|
||||
String getValue();
|
||||
void setValue(String s);
|
||||
}
|
||||
|
||||
interface CfgBool {
|
||||
boolean getValue();
|
||||
void setValue(boolean s);
|
||||
}
|
||||
|
||||
interface CfgInt {
|
||||
int getValue();
|
||||
void setValue(int s);
|
||||
}
|
||||
|
||||
interface CfgCol {
|
||||
ChatColor getValue();
|
||||
}
|
||||
|
||||
public enum CfgError implements CfgStr{
|
||||
NOPLAYER("NoPlayerFound", "The Player %player% could not be found."),
|
||||
NONUMBER("NoNumber", "%input% is not a valid number."),
|
||||
NOITEM("NoItem", "%input% is not a valid item."),
|
||||
TOFEWARGS("ToFewArgs", "You have entered too few arguments."),
|
||||
MAILNOTFOUND("MailNotFound", "The %type% with ID %mailid% is not found."),
|
||||
MAILDAMAGED("DamagedMail", "The %type% with ID %mailid% is damaged. Please notify server admin!"),
|
||||
SENDYORSELF("SendToYourself", "You can not send %type% to yourself."),
|
||||
INBOXFILLED("InboxIsBurstingAtTheSeams", "The %type% inbox of %player% is bursting at the seams. Sending unsuccessful."),
|
||||
NOITEMINHAND("NoItemInHand", "You have to hold an item to send in your hand."),
|
||||
NOPERM("NoPermission", "You have not enough permissions."),
|
||||
INVFILLED("InventoryFilledToCapacity", "You have no empty space to store item."),
|
||||
NOMAILITEM("NoItemInMail", "Item was taken out already."),
|
||||
NOTENOUGHINV("NotEnoughItemsInInv", "You don not have enough items in in your inventory."),
|
||||
NOCONS("NoConsole", "Not from console until now."),
|
||||
COOLDOWN("CooldownTimer", "You have to wait %amount% until entering this command again."),
|
||||
UNKNOWN("UnknownError", "There was an unknown error.");
|
||||
private String path;
|
||||
private String def;
|
||||
CfgError(String path, String def){this.path = path;this.def = def;}
|
||||
public String getValue(){return getStr(getPath());}
|
||||
public void setValue(String s){onGet().set(getPath(), s);}
|
||||
private String getPath(){return ErrorPath + "." + path;}
|
||||
private String getDefault(){return def;}
|
||||
}
|
||||
|
||||
public enum CfgOther implements CfgStr{
|
||||
RELOAD("ReloadConfig", "Config was reloaded."),
|
||||
MAILSEND("SendMail", "The %type% with ID %mailid% was sent to %player%."),
|
||||
MAILRSEND("SendRoundMail", "A %type% round mail was sent."),
|
||||
MAILGET("GetMail", "You got a new %type% with ID %mailid% from %player%."),
|
||||
MAILDEL("DelMail", "The %type% with ID %mailid% deleted successfully."),
|
||||
ITEMGET("GetItem", "You got the item from %type% with ID %mailid%."),
|
||||
TRADEACC("TradeAccepted", "You accepted the %type% %mailid% of %player%."),
|
||||
TRADEDEN("TradeDenied", "You denied the %type% %mailid% of %player%.");
|
||||
private String path;
|
||||
private String def;
|
||||
CfgOther(String path, String def){this.path = path;this.def = def;}
|
||||
public String getValue(){return getStr(getPath());}
|
||||
public void setValue(String s){onGet().set(getPath(), s);}
|
||||
private String getPath(){return OtherPath + "." + path;}
|
||||
private String getDefault(){return def;}
|
||||
}
|
||||
|
||||
public enum CfgInbox implements CfgStr{
|
||||
TITLE_OWN(TitlePath + ".Own", "Your %type% inbox:"),
|
||||
TITLE_OTHER(TitlePath + ".Other", "%player%s %type% inbox:"),
|
||||
EMPTY_OWN(EmptyPath + ".Own", "Your %type% inbox is empty."),
|
||||
EMPTY_OTHER(EmptyPath + ".Other", "%player%s %type% inbox is empty.");
|
||||
private String path;
|
||||
private String def;
|
||||
CfgInbox(String path, String def){this.path = path;this.def = def;}
|
||||
public String getValue(){return getStr(getPath());}
|
||||
public void setValue(String s){onGet().set(getPath(), s);}
|
||||
private String getPath(){return InboxPath + path;}
|
||||
private String getDefault(){return def;}
|
||||
}
|
||||
|
||||
public enum CfgOutbox implements CfgStr{
|
||||
TITLE_OWN(TitlePath + ".Own", "Your %type% outbox:"),
|
||||
TITLE_OTHER(TitlePath + ".Other", "%player%s %type% outbox:"),
|
||||
EMPTY_OWN(EmptyPath + ".Own", "Your %type% outbox is empty."),
|
||||
EMPTY_OTHER(EmptyPath + ".Other", "%player%s %type% outbox is empty.");
|
||||
private String path;
|
||||
private String def;
|
||||
CfgOutbox(String path, String def){this.path = path;this.def = def;}
|
||||
public String getValue(){return getStr(getPath());}
|
||||
public void setValue(String s){onGet().set(getPath(), s);}
|
||||
private String getPath(){return OutboxPath + path;}
|
||||
private String getDefault(){return def;}
|
||||
}
|
||||
|
||||
public enum CfgEntry implements CfgStr{
|
||||
NONEW("NoNewMail", "You have no new %type% messages."),
|
||||
ONENEW("OneNewMail", "You have a new %type% message."),
|
||||
MORENEW("MoreNewMail", "You have %amount% new %type% messages.");
|
||||
private String path;
|
||||
private String def;
|
||||
CfgEntry(String path, String def){this.path = path;this.def = def;}
|
||||
public String getValue(){return getStr(getPath());}
|
||||
public void setValue(String s){onGet().set(getPath(), s);}
|
||||
private String getPath(){return EntryPath + "." + path;}
|
||||
private String getDefault(){return def;}
|
||||
}
|
||||
|
||||
public enum CfgRead implements CfgStr{
|
||||
TO("To", "To"),
|
||||
FROM("From", "From"),
|
||||
READ("Read", "Read"),
|
||||
SENDDATE("SendDate", "SendDate"),
|
||||
ENDDATE("EndDate", "EndDate"),
|
||||
MAILTYPE("Type", "Type"),
|
||||
ITEM("Item", "Item"),
|
||||
REQITEM("ReqItem", "ReqItem"),
|
||||
GETITEM("GetItem", "GetItem"),
|
||||
MESSAGE("Message", "Message");
|
||||
private String path;
|
||||
private String def;
|
||||
CfgRead(String path, String def){this.path = path;this.def = def;}
|
||||
public String getValue(){return getStr(getPath());}
|
||||
public void setValue(String s){onGet().set(getPath(), s);}
|
||||
private String getPath(){return ReadPath + "." + path;}
|
||||
private String getDefault(){return def;}
|
||||
}
|
||||
|
||||
public enum CfgFormat implements CfgBool{
|
||||
ERR_UNDER("ErrorUnderlined", true),
|
||||
ERR_BOLD("ErrorBolded", false),
|
||||
HEAD_UNDER("HeaderUnderlined", true),
|
||||
HEAD_BOLD("HeaderBolded", false);
|
||||
private String path;
|
||||
private boolean def;
|
||||
CfgFormat(String path, boolean def){this.path = path;this.def = def;}
|
||||
public boolean getValue(){return getBool(getPath());}
|
||||
public void setValue(boolean s){onGet().set(getPath(), s);}
|
||||
private String getPath(){return PropertyPath + "." + path;}
|
||||
private boolean getDefault(){return def;}
|
||||
}
|
||||
|
||||
public enum CfgColor implements CfgCol{
|
||||
MSG_FST("FirstMsgColor", "&5"),
|
||||
MSG_SEC("SecoundMsgColor", "&d"),
|
||||
ERR_FST("FirstErrColor", "&4"),
|
||||
ERR_SEC("SecoundErrColor", "&c"),
|
||||
PREFIX("PrefixColor", "&6");
|
||||
private String path;
|
||||
private String def;
|
||||
CfgColor(String path, String def){this.path = path;this.def = def;}
|
||||
public ChatColor getValue(){return ColorOperations.getChatColor(getStr(getPath()));}
|
||||
private String getPath(){return PropertyPath + "." + path;}
|
||||
private String getDefault(){return def;}
|
||||
}
|
||||
|
||||
public enum CfgPropStr implements CfgStr{
|
||||
MAIL_NAME("Mail.Name", "Mail"),
|
||||
IMAIL_NAME("ItemMail.Name", "ItemMail"),
|
||||
TMAIL_NAME("TradeMail.Name", "TradeMail"),
|
||||
PRESTRING("PrefixName", "Mailings");
|
||||
private String path;
|
||||
private String def;
|
||||
CfgPropStr(String path, String def){this.path = path;this.def = def;}
|
||||
public String getValue(){return getStr(getPath());}
|
||||
public void setValue(String s){onGet().set(getPath(), s);}
|
||||
private String getPath(){return PropertyPath + "." + path;}
|
||||
private String getDefault(){return def;}
|
||||
}
|
||||
|
||||
public enum CfgPropBool implements CfgBool{
|
||||
MSG_ROUND_FILLED("BroadcastIfInboxIsBurstingAtTheSeams", false),
|
||||
SHOWLOGIN("ShowOnLogin", true),
|
||||
SHOWLOGINEMPTY("ShowEmptyOnLogin", false);
|
||||
private String path;
|
||||
private boolean def;
|
||||
CfgPropBool(String path, boolean def){this.path = path;this.def = def;}
|
||||
public boolean getValue(){return getBool(getPath());}
|
||||
public void setValue(boolean s){onGet().set(getPath(), s);}
|
||||
private String getPath(){return PropertyPath + "." + path;}
|
||||
private boolean getDefault(){return def;}
|
||||
}
|
||||
|
||||
public enum CfgPropInt implements CfgInt{
|
||||
MAIL_MAXINBOX("Mail.MaxInboxPerPlayer", 20),
|
||||
IMAIL_MAXINBOX("ItemMail.MaxInboxPerPlayer", 20),
|
||||
TMAIL_MAXINBOX("TradeMail.MaxInboxPerPlayer", 20),
|
||||
MAIL_COOLDOWN("Mail.CooldownInMillis", 10000),
|
||||
IMAIL_COOLDOWN("ItemMail.CooldownInMillis", 10000),
|
||||
TMAIL_COOLDOWN("TradeMail.CooldownInMillis", 10000),
|
||||
MAIL_PRICE_SEND("Mail.PriceSend", 10),
|
||||
IMAIL_PRICE_SEND("ItemMail.PriceSend", 10),
|
||||
TMAIL_PRICE_SEND("TradeMail.PriceSend", 10),
|
||||
AUTODEL("DaysUntilAutoDeleting", 28);
|
||||
private String path;
|
||||
private int def;
|
||||
CfgPropInt(String path, int def){this.path = path;this.def = def;}
|
||||
public int getValue(){return getInt(getPath());}
|
||||
public void setValue(int s){onGet().set(getPath(), s);}
|
||||
private String getPath(){return PropertyPath + "." + path;}
|
||||
private int getDefault(){return def;}
|
||||
}
|
||||
|
||||
private static String ConfigPath = "Mailings.Config";
|
||||
private static String MessagePath = ConfigPath + ".Messages";
|
||||
private static String EntryPath = MessagePath + ".Entry";
|
||||
private static String ReadPath = MessagePath + ".Read";
|
||||
private static String ErrorPath = MessagePath + ".Error";
|
||||
private static String OtherPath = MessagePath + ".Other";
|
||||
private static String PropertyPath = ConfigPath + ".Proerties";
|
||||
private static String InboxPath = MessagePath + ".Inbox";
|
||||
private static String OutboxPath = MessagePath + ".Outbox";
|
||||
private static String TitlePath = ".Title";
|
||||
private static String EmptyPath = ".Empty";
|
||||
|
||||
|
||||
public static final String className = "ConfigManager";
|
||||
private static final String fileName = "config.yml";
|
||||
private static FileManager file = new FileManager(className, fileName);
|
||||
|
||||
|
||||
public static void onEnable(){
|
||||
file.onEnable();
|
||||
|
||||
|
||||
for (CfgError e: CfgError.values()){
|
||||
onGet().addDefault(e.getPath(), e.getDefault());
|
||||
}
|
||||
for (CfgOther e: CfgOther.values()){
|
||||
onGet().addDefault(e.getPath(), e.getDefault());
|
||||
}
|
||||
for (CfgInbox e: CfgInbox.values()){
|
||||
onGet().addDefault(e.getPath(), e.getDefault());
|
||||
}
|
||||
for (CfgOutbox e: CfgOutbox.values()){
|
||||
onGet().addDefault(e.getPath(), e.getDefault());
|
||||
}
|
||||
for (CfgEntry e: CfgEntry.values()){
|
||||
onGet().addDefault(e.getPath(), e.getDefault());
|
||||
}
|
||||
for (CfgRead e: CfgRead.values()){
|
||||
onGet().addDefault(e.getPath(), e.getDefault());
|
||||
}
|
||||
for (CfgFormat e: CfgFormat.values()){
|
||||
onGet().addDefault(e.getPath(), e.getDefault());
|
||||
}
|
||||
for (CfgPropStr e: CfgPropStr.values()){
|
||||
onGet().addDefault(e.getPath(), e.getDefault());
|
||||
}
|
||||
for (CfgPropBool e: CfgPropBool.values()){
|
||||
onGet().addDefault(e.getPath(), e.getDefault());
|
||||
}
|
||||
for (CfgPropInt e: CfgPropInt.values()){
|
||||
onGet().addDefault(e.getPath(), e.getDefault());
|
||||
}
|
||||
for (CfgColor e: CfgColor.values()){
|
||||
onGet().addDefault(e.getPath(), e.getDefault());
|
||||
}
|
||||
|
||||
|
||||
onGet().options().copyDefaults(true);
|
||||
onSave();
|
||||
|
||||
//TODO
|
||||
MailManager.typeName = CfgPropStr.MAIL_NAME.getValue();
|
||||
ItemMailManager.typeName = CfgPropStr.IMAIL_NAME.getValue();
|
||||
TradeMailManager.typeName = CfgPropStr.TMAIL_NAME.getValue();
|
||||
|
||||
onRepair();
|
||||
}
|
||||
|
||||
public static void onDisable(){
|
||||
file.onDisable();
|
||||
}
|
||||
|
||||
private static FileConfiguration onGet(){
|
||||
return file.onGet();
|
||||
}
|
||||
|
||||
public static void onSave(){
|
||||
file.onSave();
|
||||
}
|
||||
|
||||
|
||||
|
||||
private static String getStr(String path){
|
||||
if (onGet().contains(path) && onGet().isString(path)){
|
||||
return onGet().getString(path);
|
||||
} else {
|
||||
throw (RuntimeException) null;
|
||||
}
|
||||
}
|
||||
|
||||
private static Integer getInt(String path){
|
||||
if (onGet().contains(path) && onGet().isInt(path)){
|
||||
return onGet().getInt(path);
|
||||
} else {
|
||||
throw (RuntimeException) null;
|
||||
}
|
||||
}
|
||||
|
||||
private static Boolean getBool(String path){
|
||||
if (onGet().contains(path) && onGet().isBoolean(path)){
|
||||
return onGet().getBoolean(path);
|
||||
} else {
|
||||
throw (RuntimeException) null;
|
||||
}
|
||||
}
|
||||
|
||||
public static void onReload(){
|
||||
onEnable();
|
||||
}
|
||||
|
||||
public static void onRepair(){
|
||||
boolean changed = false;
|
||||
if (onGet().contains(PropertyPath + ".ErrColor")){
|
||||
String x = onGet().getString(PropertyPath + ".ErrColor");
|
||||
onGet().set(PropertyPath + ".FirstErrColor", x);
|
||||
onGet().set(PropertyPath + ".ErrColor", null);
|
||||
changed = true;
|
||||
}
|
||||
|
||||
if (onGet().contains(PropertyPath + ".MaxInboxPerPlayer")){
|
||||
int x = onGet().getInt(PropertyPath + ".MaxInboxPerPlayer");
|
||||
CfgPropInt.MAIL_MAXINBOX.setValue(x);
|
||||
CfgPropInt.IMAIL_MAXINBOX.setValue(x);
|
||||
CfgPropInt.TMAIL_MAXINBOX.setValue(x);
|
||||
onGet().set(PropertyPath + ".MaxInboxPerPlayer", null);
|
||||
changed = true;
|
||||
}
|
||||
|
||||
for (String para: new String[]{"%type%", "%mailid%", "%input%", "%player%", "%amount%"}) {
|
||||
for (CfgError c: CfgError.values()) {
|
||||
if (c.getDefault().contains(para) && !onGet().getString(c.getPath()).contains(para)){
|
||||
onGet().set(c.getPath(), null);
|
||||
changed = true;
|
||||
}
|
||||
}
|
||||
for (CfgOther c: CfgOther.values()) {
|
||||
if (c.getDefault().contains(para) && !onGet().getString(c.getPath()).contains(para)){
|
||||
onGet().set(c.getPath(), null);
|
||||
changed = true;
|
||||
}
|
||||
}
|
||||
for (CfgOutbox c: CfgOutbox.values()) {
|
||||
if (c.getDefault().contains(para) && !onGet().getString(c.getPath()).contains(para)){
|
||||
onGet().set(c.getPath(), null);
|
||||
changed = true;
|
||||
}
|
||||
}
|
||||
for (CfgInbox c: CfgInbox.values()) {
|
||||
if (c.getDefault().contains(para) && !onGet().getString(c.getPath()).contains(para)){
|
||||
onGet().set(c.getPath(), null);
|
||||
changed = true;
|
||||
}
|
||||
}
|
||||
for (CfgEntry c: CfgEntry.values()) {
|
||||
if (c.getDefault().contains(para) && !onGet().getString(c.getPath()).contains(para)){
|
||||
onGet().set(c.getPath(), null);
|
||||
changed = true;
|
||||
}
|
||||
}
|
||||
for (CfgRead c: CfgRead.values()) {
|
||||
if (c.getDefault().contains(para) && !onGet().getString(c.getPath()).contains(para)){
|
||||
onGet().set(c.getPath(), null);
|
||||
changed = true;
|
||||
}
|
||||
}
|
||||
|
||||
onSave();
|
||||
if (changed) System.out.println("[" + Messenger.getPreStr() + "] Config updated to latest version.");
|
||||
}
|
||||
}
|
||||
}
|
||||
67
src/me/Caesar2011/Mailings/Library/CooldownManager.java
Normal file
67
src/me/Caesar2011/Mailings/Library/CooldownManager.java
Normal file
@@ -0,0 +1,67 @@
|
||||
package me.Caesar2011.Mailings.Library;
|
||||
|
||||
|
||||
import me.Caesar2011.Mailings.Library.ConfigManager.CfgPropInt;
|
||||
|
||||
import org.bukkit.configuration.file.FileConfiguration;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
public class CooldownManager {
|
||||
|
||||
public enum CooldownType{
|
||||
MAIL("Send.Mail", CfgPropInt.MAIL_COOLDOWN),
|
||||
IMAIL("Send.ItemMail", CfgPropInt.IMAIL_COOLDOWN),
|
||||
TMAIL("Send.TradeMail", CfgPropInt.TMAIL_COOLDOWN);
|
||||
String path;
|
||||
CfgPropInt cooldown;
|
||||
|
||||
CooldownType(String path, CfgPropInt cooldown){this.path = path + ".";this.cooldown = cooldown;}
|
||||
public void setPlayer(Player p) {onGet().set(path + p.getName(), System.currentTimeMillis());onSave();}
|
||||
public boolean isCoolDown(Player p){return (getMillisLeft(p) == 0);}
|
||||
public long getMillisLeft(Player p){return Math.max(0,onGet().getLong(path + p.getName(), 0) + cooldown.getValue() - System.currentTimeMillis());}
|
||||
public String getTimeFormat(Player p){
|
||||
String timeStr= "";
|
||||
long millisLeft = getMillisLeft(p);
|
||||
if (millisLeft > 1000*60*60*24){
|
||||
timeStr = timeStr + (millisLeft/(1000*60*60*24)) + "d";
|
||||
millisLeft = millisLeft%(1000*60*60*24);
|
||||
}
|
||||
if (millisLeft > 1000*60*60){
|
||||
timeStr = timeStr + (millisLeft/(1000*60*60)) + "h";
|
||||
millisLeft = millisLeft%(1000*60*60);
|
||||
}
|
||||
if (millisLeft > 1000*60){
|
||||
timeStr = timeStr + (millisLeft/(1000*60)) + "m";
|
||||
millisLeft = millisLeft%(1000*60);
|
||||
}
|
||||
if (millisLeft > 1000){
|
||||
timeStr = timeStr + (millisLeft/(1000)) + "s";
|
||||
millisLeft = millisLeft%(1000);
|
||||
}
|
||||
if (millisLeft > 0){
|
||||
timeStr = timeStr + millisLeft + "ms";
|
||||
}
|
||||
return timeStr;
|
||||
}
|
||||
}
|
||||
|
||||
public static final String className = "CooldownManager";
|
||||
private static final String fileName = "cooldown.yml";
|
||||
private static FileManager file = new FileManager(className, fileName);
|
||||
|
||||
public static void onEnable(){
|
||||
file.onEnable();
|
||||
}
|
||||
|
||||
public static void onDisable(){
|
||||
file.onDisable();
|
||||
}
|
||||
|
||||
private static FileConfiguration onGet(){
|
||||
return file.onGet();
|
||||
}
|
||||
|
||||
public static void onSave(){
|
||||
file.onSave();
|
||||
}
|
||||
}
|
||||
135
src/me/Caesar2011/Mailings/Library/DateOperations.java
Normal file
135
src/me/Caesar2011/Mailings/Library/DateOperations.java
Normal file
@@ -0,0 +1,135 @@
|
||||
package me.Caesar2011.Mailings.Library;
|
||||
|
||||
import java.text.ParseException;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.Calendar;
|
||||
import java.util.Date;
|
||||
|
||||
public class DateOperations {
|
||||
|
||||
Date d;
|
||||
|
||||
public DateOperations(Date d){
|
||||
Calendar cal = Calendar.getInstance();
|
||||
cal.setTime(d);
|
||||
cal.set(Calendar.MILLISECOND, 0);
|
||||
cal.set(Calendar.MINUTE, 0);
|
||||
cal.set(Calendar.HOUR_OF_DAY, 0);
|
||||
this.d = cal.getTime();
|
||||
}
|
||||
|
||||
public DateOperations(String s){
|
||||
SimpleDateFormat format = new SimpleDateFormat("dd.MM.yyyy");
|
||||
try{
|
||||
this.d = format.parse(s);
|
||||
} catch (ParseException e) {
|
||||
this.d = new Date();
|
||||
}
|
||||
}
|
||||
|
||||
public void addSecounds(int amount){
|
||||
Calendar cal = Calendar.getInstance();
|
||||
cal.setTime(d);
|
||||
cal.add(Calendar.SECOND, amount);
|
||||
d = cal.getTime();
|
||||
}
|
||||
|
||||
public void addMinutes(int amount){
|
||||
Calendar cal = Calendar.getInstance();
|
||||
cal.setTime(d);
|
||||
cal.add(Calendar.MINUTE, amount);
|
||||
d = cal.getTime();
|
||||
}
|
||||
|
||||
public void addHours(int amount){
|
||||
Calendar cal = Calendar.getInstance();
|
||||
cal.setTime(d);
|
||||
cal.add(Calendar.HOUR, amount);
|
||||
d = cal.getTime();
|
||||
}
|
||||
|
||||
public void addDays(int amount){
|
||||
Calendar cal = Calendar.getInstance();
|
||||
cal.setTime(d);
|
||||
cal.add(Calendar.DAY_OF_MONTH, amount);
|
||||
d = cal.getTime();
|
||||
}
|
||||
|
||||
public void addMonth(int amount){
|
||||
Calendar cal = Calendar.getInstance();
|
||||
cal.setTime(d);
|
||||
cal.add(Calendar.MONTH, amount);
|
||||
d = cal.getTime();
|
||||
}
|
||||
|
||||
public void addYears(int amount){
|
||||
Calendar cal = Calendar.getInstance();
|
||||
cal.setTime(d);
|
||||
cal.add(Calendar.YEAR, amount);
|
||||
d = cal.getTime();
|
||||
}
|
||||
|
||||
public Date toDate(){
|
||||
return this.d;
|
||||
}
|
||||
|
||||
public String toString(){
|
||||
Calendar cal = Calendar.getInstance();
|
||||
cal.setTime(d);
|
||||
String buffDay = new Integer(cal.get(Calendar.DAY_OF_MONTH)).toString();
|
||||
if (buffDay.length() == 1){
|
||||
buffDay = "0" + buffDay;
|
||||
}
|
||||
String buffMonth = new Integer(cal.get(Calendar.MONTH) + 1).toString();
|
||||
if (buffMonth.length() == 1){
|
||||
buffMonth = "0" + buffMonth;
|
||||
}
|
||||
String buffYear = new Integer(cal.get(Calendar.YEAR)).toString();
|
||||
return buffDay + "." + buffMonth + "." + buffYear;
|
||||
}
|
||||
|
||||
public boolean isBefore(Date date){
|
||||
DateOperations DateToComp = new DateOperations(date);
|
||||
if(d.compareTo(DateToComp.toDate()) < 0){
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
public boolean isBefore(String string){
|
||||
DateOperations DateToComp = new DateOperations(string);
|
||||
if(d.compareTo(DateToComp.toDate()) < 0){
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
public boolean isAfter(Date date){
|
||||
DateOperations DateToComp = new DateOperations(date);
|
||||
if(d.compareTo(DateToComp.toDate()) > 0){
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
public boolean isAfter(String string) {
|
||||
DateOperations DateToComp = new DateOperations(string);
|
||||
if(d.compareTo(DateToComp.toDate()) > 0){
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
public boolean isAfter(DateOperations endDate) {
|
||||
DateOperations DateToComp = endDate;
|
||||
if(d.compareTo(DateToComp.toDate()) > 0){
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
80
src/me/Caesar2011/Mailings/Library/Economy.java
Normal file
80
src/me/Caesar2011/Mailings/Library/Economy.java
Normal file
@@ -0,0 +1,80 @@
|
||||
/**
|
||||
*
|
||||
*/
|
||||
package me.Caesar2011.Mailings.Library;
|
||||
|
||||
import me.Caesar2011.Mailings.Mailings;
|
||||
|
||||
import org.bukkit.plugin.Plugin;
|
||||
import org.bukkit.plugin.RegisteredServiceProvider;
|
||||
|
||||
import cosine.boseconomy.BOSEconomy;
|
||||
|
||||
|
||||
public class Economy {
|
||||
|
||||
public enum EconPlugin{
|
||||
NONE,
|
||||
BOSECONOMY,
|
||||
VAULT;
|
||||
}
|
||||
|
||||
static boolean isEnabled = false;
|
||||
static EconPlugin EconType = EconPlugin.NONE;
|
||||
static BOSEconomy bose_economy = null;
|
||||
static net.milkbowl.vault.economy.Economy vault_economy = null;
|
||||
|
||||
|
||||
public static void onEnable(Mailings plugin){
|
||||
// BOSEconomy
|
||||
Plugin temp = plugin.getServer().getPluginManager().getPlugin("BOSEconomy");
|
||||
if(temp != null){
|
||||
EconType = EconPlugin.BOSECONOMY;
|
||||
bose_economy = (BOSEconomy) temp;
|
||||
System.out.println("[" + Messenger.getPreStr() + "] BOSEconomy found and loaded.");
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
RegisteredServiceProvider<net.milkbowl.vault.economy.Economy> economyProvider = plugin.getServer().getServicesManager().getRegistration(net.milkbowl.vault.economy.Economy.class);
|
||||
if (economyProvider != null) {
|
||||
vault_economy = economyProvider.getProvider();
|
||||
if (vault_economy != null) {
|
||||
EconType = EconPlugin.VAULT;
|
||||
System.out.println("[" + Messenger.getPreStr() + "] Vault found and loaded.");
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
System.out.println("[" + Messenger.getPreStr() + "] No Economy plugin found. Economy function disabled.");
|
||||
}
|
||||
|
||||
public static boolean addMoney(double x, String name){
|
||||
if (EconType == EconPlugin.NONE) return true;
|
||||
if (EconType == EconPlugin.BOSECONOMY) return bose_economy.addPlayerMoney(name, x, false);
|
||||
if (EconType == EconPlugin.VAULT) return vault_economy.depositPlayer(name, x).transactionSuccess();
|
||||
return false;
|
||||
}
|
||||
|
||||
public static boolean remMoney(double x, String name){
|
||||
if (EconType == EconPlugin.NONE) return true;
|
||||
if (!hasEnough(x, name)) return false;
|
||||
if (EconType == EconPlugin.BOSECONOMY) return bose_economy.addPlayerMoney(name, -x, false);
|
||||
if (EconType == EconPlugin.VAULT) return vault_economy.withdrawPlayer(name, x).transactionSuccess();
|
||||
return false;
|
||||
}
|
||||
|
||||
public static boolean hasEnough(double x, String name){
|
||||
if (EconType == EconPlugin.NONE) return true;
|
||||
if (EconType == EconPlugin.BOSECONOMY) {
|
||||
if (x >= bose_economy.getPlayerMoneyDouble(name)) return true;
|
||||
else return false;
|
||||
}
|
||||
if (EconType == EconPlugin.VAULT) {
|
||||
if (vault_economy.has(name, x)) return true;
|
||||
else return false;
|
||||
}
|
||||
else return false;
|
||||
}
|
||||
}
|
||||
71
src/me/Caesar2011/Mailings/Library/EnumCmdExe.java
Normal file
71
src/me/Caesar2011/Mailings/Library/EnumCmdExe.java
Normal file
@@ -0,0 +1,71 @@
|
||||
package me.Caesar2011.Mailings.Library;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
import me.Caesar2011.Mailings.Library.ConfigManager.CfgError;
|
||||
import me.Caesar2011.Mailings.Library.ConfigManager.CfgOther;
|
||||
import me.Caesar2011.Mailings.Library.ConfigManager.CfgStr;
|
||||
|
||||
|
||||
public enum EnumCmdExe {
|
||||
SUCCESS (true, true, null),
|
||||
RELOAD (true, true, CfgOther.RELOAD),
|
||||
MAILDEL (true, true, CfgOther.MAILDEL),
|
||||
MAILGET (true, true, CfgOther.MAILGET),
|
||||
MAILSEND (true, true, CfgOther.MAILSEND),
|
||||
MAILRSEND (true, true, CfgOther.MAILRSEND),
|
||||
ITEMGET (true, true, CfgOther.ITEMGET),
|
||||
TRADEACC (true, true, CfgOther.TRADEACC),
|
||||
TRADEDEN (true, true, CfgOther.TRADEDEN),
|
||||
|
||||
NOMAILITEM (false, true, CfgError.NOMAILITEM),
|
||||
INVFILLED (false, true, CfgError.INVFILLED),
|
||||
NOPERM (false, true, CfgError.NOPERM),
|
||||
NOCONS (false, true, CfgError.NOCONS),
|
||||
INBOXFILLED (false, true, CfgError.INBOXFILLED),
|
||||
NOITEMINHAND(false, true, CfgError.NOITEMINHAND),
|
||||
NOITEM (false, true, CfgError.NOITEM),
|
||||
NOTENOUGHINV(false, true, CfgError.NOTENOUGHINV),
|
||||
COOLDOWN (false, true, CfgError.COOLDOWN),
|
||||
MAILNOTFOUND(false, false, CfgError.MAILNOTFOUND),
|
||||
NOPLAYER (false, false, CfgError.NOPLAYER),
|
||||
TOFEWARGS (false, false, CfgError.TOFEWARGS),
|
||||
NONUMBER (false, false, CfgError.NONUMBER),
|
||||
UNKNOWN (false, false, CfgError.UNKNOWN);
|
||||
|
||||
private boolean noerror;
|
||||
private boolean ret;
|
||||
private CfgStr msg;
|
||||
private ArrayList<String[]> args = new ArrayList<String[]>();
|
||||
|
||||
EnumCmdExe(boolean noerror, boolean ret, CfgStr msg){
|
||||
this.noerror = noerror;
|
||||
this.ret = ret;
|
||||
this.msg = msg;
|
||||
}
|
||||
|
||||
public boolean isError(){
|
||||
return !noerror;
|
||||
}
|
||||
|
||||
public boolean getReturn(){
|
||||
return ret;
|
||||
}
|
||||
|
||||
public CfgStr getMsg(){
|
||||
return msg;
|
||||
}
|
||||
|
||||
public EnumCmdExe addArg(String match, String replace){
|
||||
args.add(new String[]{match, replace});
|
||||
return this;
|
||||
}
|
||||
|
||||
public String[][] getArgs(){
|
||||
return args.toArray(new String[args.size()][2]);
|
||||
}
|
||||
|
||||
public void delArgs() {
|
||||
args.clear();
|
||||
}
|
||||
}
|
||||
61
src/me/Caesar2011/Mailings/Library/EnumPerm.java
Normal file
61
src/me/Caesar2011/Mailings/Library/EnumPerm.java
Normal file
@@ -0,0 +1,61 @@
|
||||
package me.Caesar2011.Mailings.Library;
|
||||
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
public enum EnumPerm {
|
||||
IM_OVER_COOLDOWN("itemmail.overridecooldown"),
|
||||
IM_DEL_OWN("itemmail.delete.own"),
|
||||
IM_DEL_OTHER("itemmail.delete.other"),
|
||||
IM_IBOX_OWN("itemmail.inbox.own"),
|
||||
IM_IBOX_OTHER("itemmail.inbox.other"),
|
||||
IM_OBOX_OWN("itemmail.outbox.own"),
|
||||
IM_OBOX_OTHER("itemmail.outbox.other"),
|
||||
IM_READ_OWN("itemmail.read.own"),
|
||||
IM_READ_OTHER("itemmail.read.other"),
|
||||
IM_SEND_SINGLE("itemmail.send.single"),
|
||||
M_OVER_COOLDOWN("mail.overridecooldown"),
|
||||
M_DEL_OWN("mail.delete.own"),
|
||||
M_DEL_OTHER("mail.delete.other"),
|
||||
M_IBOX_OWN("mail.inbox.own"),
|
||||
M_IBOX_OTHER("mail.inbox.other"),
|
||||
M_OBOX_OWN("mail.outbox.own"),
|
||||
M_OBOX_OTHER("mail.outbox.other"),
|
||||
M_READ_OWN("mail.read.own"),
|
||||
M_READ_OTHER("mail.read.other"),
|
||||
M_SEND_SINGLE("mail.send.single"),
|
||||
M_SEND_ROUND("mail.send.round"),
|
||||
TM_OVER_COOLDOWN("trademail.overridecooldown"),
|
||||
TM_ACC_OWN("trademail.accept.own"),
|
||||
TM_ACC_OTHER("trademail.accept.other"),
|
||||
TM_IBOX_OWN("trademail.inbox.own"),
|
||||
TM_IBOX_OTHER("trademail.inbox.other"),
|
||||
TM_OBOX_OWN("trademail.outbox.own"),
|
||||
TM_OBOX_OTHER("trademail.outbox.other"),
|
||||
TM_READ_OWN("trademail.read.own"),
|
||||
TM_READ_OTHER("trademail.read.other"),
|
||||
TM_SEND_SINGLE("trademail.send.single"),
|
||||
RELOAD("reload");
|
||||
|
||||
private String perm;
|
||||
private final String main = "mailings.";
|
||||
|
||||
EnumPerm(String perm)
|
||||
{
|
||||
this.perm = perm;
|
||||
}
|
||||
|
||||
public boolean hasPermission(CommandSender sender)
|
||||
{
|
||||
if(!(sender instanceof Player)){
|
||||
return true;
|
||||
}
|
||||
if (((Player)sender).hasPermission(main + perm)) return true;
|
||||
return false;
|
||||
}
|
||||
|
||||
public boolean noPermission(CommandSender sender)
|
||||
{
|
||||
return !hasPermission(sender);
|
||||
}
|
||||
}
|
||||
69
src/me/Caesar2011/Mailings/Library/FileManager.java
Normal file
69
src/me/Caesar2011/Mailings/Library/FileManager.java
Normal file
@@ -0,0 +1,69 @@
|
||||
package me.Caesar2011.Mailings.Library;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.configuration.file.FileConfiguration;
|
||||
import org.bukkit.configuration.file.YamlConfiguration;
|
||||
|
||||
public class FileManager {
|
||||
protected boolean isLoaded = false;
|
||||
protected String className;
|
||||
protected String fileName;
|
||||
protected String filePath;
|
||||
protected FileConfiguration yaml = null;
|
||||
protected File file;
|
||||
|
||||
protected FileManager(String className, String fileName){
|
||||
this.className = className;
|
||||
this.fileName = fileName;
|
||||
this.filePath = "plugins" + File.separator + "Mailings" + File.separator + fileName;
|
||||
this.file = new File(filePath);
|
||||
}
|
||||
|
||||
protected void onEnable(){
|
||||
if (!file.exists()) {
|
||||
try {
|
||||
file.createNewFile();
|
||||
} catch (Exception e) {
|
||||
try {
|
||||
new File(file.getAbsoluteFile().getParentFile().toString()).mkdir();
|
||||
file.createNewFile();
|
||||
} catch (IOException e1) {
|
||||
System.err.println(ChatColor.DARK_RED + "[" + Messenger.getPreStr() + "] " + className + ": Could not create new file. (IOException)");
|
||||
return;
|
||||
}
|
||||
}
|
||||
System.out.println("[" + Messenger.getPreStr() + "] " + className + ": \"" + fileName + "\" did not exist. Created new!");
|
||||
}
|
||||
yaml = YamlConfiguration.loadConfiguration(file);
|
||||
isLoaded = true;
|
||||
System.out.println("[" + Messenger.getPreStr() + "] " + className + ": Loaded.");
|
||||
}
|
||||
|
||||
protected void onDisable(){
|
||||
if (isLoaded) {
|
||||
onSave();
|
||||
}
|
||||
file = null;
|
||||
System.out.println("[" + Messenger.getPreStr() + "] " + className + ": Saved.");
|
||||
}
|
||||
|
||||
protected FileConfiguration onGet(){
|
||||
if (!isLoaded){
|
||||
onEnable();
|
||||
}
|
||||
return yaml;
|
||||
}
|
||||
|
||||
protected void onSave(){
|
||||
try {
|
||||
onGet().save(file);
|
||||
} catch (IOException e) {
|
||||
System.err.println(ChatColor.DARK_RED + "[" + Messenger.getPreStr() + "] " + className + ": Could not save file. (IOException)");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
22
src/me/Caesar2011/Mailings/Library/ItemMail.java
Normal file
22
src/me/Caesar2011/Mailings/Library/ItemMail.java
Normal file
@@ -0,0 +1,22 @@
|
||||
package me.Caesar2011.Mailings.Library;
|
||||
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
|
||||
public class ItemMail extends Mail{
|
||||
public ItemStack item;
|
||||
|
||||
public ItemMail (){
|
||||
super();
|
||||
this.item = null;
|
||||
}
|
||||
|
||||
public ItemMail (String from, String to, String msg, ItemStack item){
|
||||
super(from, to, msg);
|
||||
this.item = item;
|
||||
}
|
||||
|
||||
public ItemMail (String from, String to, String[] msg, ItemStack item){
|
||||
super(from, to, msg);
|
||||
this.item = item;
|
||||
}
|
||||
}
|
||||
202
src/me/Caesar2011/Mailings/Library/ItemMailManager.java
Normal file
202
src/me/Caesar2011/Mailings/Library/ItemMailManager.java
Normal file
@@ -0,0 +1,202 @@
|
||||
package me.Caesar2011.Mailings.Library;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Date;
|
||||
|
||||
import org.bukkit.OfflinePlayer;
|
||||
import org.bukkit.configuration.file.FileConfiguration;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
|
||||
public class ItemMailManager {
|
||||
public static String typeName = "ItemMail";
|
||||
public static final String className = "ItemMailManager";
|
||||
private static final String fileName = "itemmail.yml";
|
||||
private static final String mailPath = "Mails";
|
||||
private static FileManager file = new FileManager(className, fileName);
|
||||
|
||||
public static void onEnable(){
|
||||
file.onEnable();
|
||||
}
|
||||
|
||||
public static void onDisable(){
|
||||
file.onDisable();
|
||||
}
|
||||
|
||||
private static FileConfiguration onGet(){
|
||||
return file.onGet();
|
||||
}
|
||||
|
||||
public static void onSave(){
|
||||
file.onSave();
|
||||
}
|
||||
|
||||
public static void addMail(ItemMail iMail){
|
||||
iMail.ID = getNextMailID();
|
||||
saveMail(iMail);
|
||||
}
|
||||
|
||||
public static void overrideMail(ItemMail iMail){
|
||||
String mailPathInsert = mailPath + "." + iMail.ID;
|
||||
if (onGet().contains(mailPathInsert)){
|
||||
saveMail(iMail);
|
||||
}
|
||||
}
|
||||
|
||||
private static void saveMail(final ItemMail iMail){
|
||||
String mailPathInsert = mailPath + "." + iMail.ID;
|
||||
if (iMail.ID > 0){
|
||||
onGet().set(mailPathInsert + "." + "FromPlayer", iMail.fromPlayer);
|
||||
onGet().set(mailPathInsert + "." + "ToPlayer", iMail.toPlayer);
|
||||
onGet().set(mailPathInsert + "." + "Message", iMail.msg);
|
||||
onGet().set(mailPathInsert + "." + "SendDate", iMail.sendDate.toString());
|
||||
onGet().set(mailPathInsert + "." + "EndDate", iMail.endDate.toString());
|
||||
onGet().set(mailPathInsert + "." + "Read", iMail.read);
|
||||
if (iMail.item != null) {
|
||||
onGet().set(mailPathInsert + "." + "ItemStack.Type", iMail.item.getTypeId());
|
||||
onGet().set(mailPathInsert + "." + "ItemStack.Amount", iMail.item.getAmount());
|
||||
onGet().set(mailPathInsert + "." + "ItemStack.Damage", iMail.item.getDurability());
|
||||
onGet().set(mailPathInsert + "." + "ItemStack.Empty", false);
|
||||
} else {
|
||||
onGet().set(mailPathInsert + "." + "ItemStack.Empty", true);
|
||||
}
|
||||
}
|
||||
onSave();
|
||||
}
|
||||
|
||||
public static ItemMail getMail(final Integer id){
|
||||
ItemMail iMail = new ItemMail();
|
||||
String mailPathInsert = mailPath + "." + id.toString();
|
||||
if (onGet().contains(mailPathInsert)){
|
||||
iMail.ID = id;
|
||||
iMail.fromPlayer = onGet().getString(mailPathInsert + "." + "FromPlayer");
|
||||
iMail.toPlayer = onGet().getString(mailPathInsert + "." + "ToPlayer");
|
||||
iMail.msg = onGet().getString(mailPathInsert + "." + "Message");
|
||||
iMail.sendDate = new DateOperations(onGet().getString(mailPathInsert + "." + "SendDate"));
|
||||
iMail.endDate = new DateOperations(onGet().getString(mailPathInsert + "." + "EndDate"));
|
||||
if (onGet().getBoolean(mailPathInsert + "." + "ItemStack.Empty")){
|
||||
iMail.item = null;
|
||||
} else {
|
||||
iMail.item = new ItemStack(onGet().getInt(mailPathInsert + "." + "ItemStack.Type"),onGet().getInt(mailPathInsert + "." + "ItemStack.Amount"),(short) onGet().getInt(mailPathInsert + "." + "ItemStack.Damage"));
|
||||
}
|
||||
iMail.read = onGet().getBoolean(mailPathInsert + "." + "Read");
|
||||
return iMail;
|
||||
}
|
||||
throw (RuntimeException) null;
|
||||
}
|
||||
|
||||
public static String getString(Integer id, String fieldName){
|
||||
String mailPathGet = mailPath + "." + id.toString() + "." + fieldName;
|
||||
if (onGet().contains(mailPathGet) && onGet().isString(mailPathGet)){
|
||||
return onGet().getString(mailPathGet);
|
||||
}
|
||||
throw (RuntimeException) null;
|
||||
}
|
||||
|
||||
public static Integer getInt(Integer id, String fieldName){
|
||||
String mailPathGet = mailPath + "." + id.toString() + "." + fieldName;
|
||||
if (onGet().contains(mailPathGet) && onGet().isInt(mailPathGet)){
|
||||
return onGet().getInt(mailPathGet);
|
||||
}
|
||||
throw (RuntimeException) null;
|
||||
}
|
||||
|
||||
public static Boolean getBool(Integer id, String fieldName){
|
||||
String mailPathGet = mailPath + "." + id.toString() + "." + fieldName;
|
||||
if (onGet().contains(mailPathGet) && onGet().isBoolean(mailPathGet)){
|
||||
return onGet().getBoolean(mailPathGet);
|
||||
}
|
||||
throw (RuntimeException) null;
|
||||
}
|
||||
|
||||
public static Integer getLastMailID() {
|
||||
try{
|
||||
return onGet().getConfigurationSection(mailPath).getKeys(false).size();
|
||||
} catch(NullPointerException e){
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
public static Integer getNextMailID() {
|
||||
return getLastMailID() + 1;
|
||||
}
|
||||
|
||||
public static void delMail(final Integer id){
|
||||
onRepair();
|
||||
String mailToDel = mailPath + "." + id;
|
||||
String mailLast = mailPath + "." + getLastMailID();
|
||||
if (onGet().contains(mailToDel)){
|
||||
ItemMail iMail = getMail(getLastMailID());
|
||||
iMail.ID = id;
|
||||
overrideMail(iMail);
|
||||
onGet().set(mailLast, null);
|
||||
}
|
||||
onSave();
|
||||
}
|
||||
|
||||
public static Integer getInboxAmount(OfflinePlayer p, boolean DelOld, boolean UnreadOnly){
|
||||
onRepair();
|
||||
int result = 0;
|
||||
if (onGet().contains(mailPath)){
|
||||
int length = onGet().getConfigurationSection(mailPath).getKeys(false).size();
|
||||
ItemMail buffer = null;
|
||||
DateOperations now = new DateOperations(new Date());
|
||||
for(int i = 1; i <= length; i++){
|
||||
if (onGet().contains(mailPath + "." + i)){
|
||||
buffer = getMail(i);
|
||||
if (now.isAfter(buffer.endDate) && DelOld){
|
||||
delMail(i);
|
||||
length--;
|
||||
continue;
|
||||
}
|
||||
if (!buffer.toPlayer.equals(p.getName())){
|
||||
continue;
|
||||
}
|
||||
if (!(buffer.read && UnreadOnly)){
|
||||
result++;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
public static PlayerInboxSize[] getInboxAmount(boolean DelOld, boolean UnreadOnly){
|
||||
onRepair();
|
||||
ArrayList<PlayerInboxSize> result = new ArrayList<PlayerInboxSize>();
|
||||
if (onGet().contains(mailPath)){
|
||||
int length = onGet().getConfigurationSection(mailPath).getKeys(false).size();
|
||||
ItemMail buffer = null;
|
||||
DateOperations now = new DateOperations(new Date());
|
||||
for(int i = 1; i <= length; i++){
|
||||
if (onGet().contains(mailPath + "." + i)){
|
||||
buffer = getMail(i);
|
||||
if (now.isAfter(buffer.endDate) && DelOld){
|
||||
delMail(i);
|
||||
length--;
|
||||
continue;
|
||||
}
|
||||
if (!(buffer.read && UnreadOnly)){
|
||||
boolean found = false;
|
||||
for(int j = 0; j < result.size(); j++){
|
||||
if (result.get(j).Player.equals(buffer.toPlayer)){
|
||||
result.get(j).Size = result.get(j).Size + 1;
|
||||
found = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (!found){
|
||||
result.add(new PlayerInboxSize(buffer.toPlayer));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
PlayerInboxSize[] array = new PlayerInboxSize[result.size()];
|
||||
result.toArray(array);
|
||||
return array;
|
||||
}
|
||||
|
||||
private static void onRepair() {
|
||||
//TODO
|
||||
}
|
||||
}
|
||||
42
src/me/Caesar2011/Mailings/Library/Mail.java
Normal file
42
src/me/Caesar2011/Mailings/Library/Mail.java
Normal file
@@ -0,0 +1,42 @@
|
||||
package me.Caesar2011.Mailings.Library;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
import me.Caesar2011.Mailings.Library.ConfigManager.CfgPropInt;
|
||||
|
||||
public class Mail {
|
||||
public int ID;
|
||||
public String fromPlayer;
|
||||
public String toPlayer;
|
||||
public String msg;
|
||||
public DateOperations sendDate;
|
||||
public DateOperations endDate;
|
||||
public boolean read;
|
||||
|
||||
public Mail () {
|
||||
this.ID = 0;
|
||||
this.fromPlayer = null;
|
||||
this.toPlayer = null;
|
||||
this.msg = "";
|
||||
this.sendDate = new DateOperations(new Date());
|
||||
this.endDate = new DateOperations(new Date());
|
||||
this.endDate.addDays(CfgPropInt.AUTODEL.getValue());
|
||||
this.read = false;
|
||||
}
|
||||
|
||||
public Mail(String from, String to, String msg){
|
||||
this.ID = ItemMailManager.getNextMailID();
|
||||
this.fromPlayer = from;
|
||||
this.toPlayer = to;
|
||||
this.msg = msg;
|
||||
this.sendDate = new DateOperations(new Date());
|
||||
this.endDate = new DateOperations(new Date());
|
||||
this.endDate.addDays(CfgPropInt.AUTODEL.getValue());
|
||||
this.read = false;
|
||||
}
|
||||
|
||||
public Mail(String from, String to, String[] msg){
|
||||
String newMsg = StringOperations.getStringArr(msg);
|
||||
new Mail(from, to, newMsg);
|
||||
}
|
||||
}
|
||||
188
src/me/Caesar2011/Mailings/Library/MailManager.java
Normal file
188
src/me/Caesar2011/Mailings/Library/MailManager.java
Normal file
@@ -0,0 +1,188 @@
|
||||
package me.Caesar2011.Mailings.Library;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Date;
|
||||
|
||||
import org.bukkit.OfflinePlayer;
|
||||
import org.bukkit.configuration.file.FileConfiguration;
|
||||
|
||||
public class MailManager {
|
||||
public static String typeName = "Mail";
|
||||
public static final String className = "MailManager";
|
||||
private static final String fileName = "mail.yml";
|
||||
private static final String mailPath = "Mails";
|
||||
private static FileManager file = new FileManager(className, fileName);
|
||||
|
||||
public static void onEnable(){
|
||||
file.onEnable();
|
||||
}
|
||||
|
||||
public static void onDisable(){
|
||||
file.onDisable();
|
||||
}
|
||||
|
||||
private static FileConfiguration onGet(){
|
||||
return file.onGet();
|
||||
}
|
||||
|
||||
public static void onSave(){
|
||||
file.onSave();
|
||||
}
|
||||
|
||||
public static void addMail(Mail mail){
|
||||
mail.ID = getNextMailID();
|
||||
saveMail(mail);
|
||||
}
|
||||
|
||||
public static void overrideMail(Mail mail){
|
||||
String mailPathInsert = mailPath + "." + mail.ID;
|
||||
if (onGet().contains(mailPathInsert)){
|
||||
saveMail(mail);
|
||||
}
|
||||
}
|
||||
|
||||
private static void saveMail(final Mail mail){
|
||||
String mailPathInsert = mailPath + "." + mail.ID;
|
||||
if (mail.ID > 0){
|
||||
onGet().set(mailPathInsert + "." + "FromPlayer", mail.fromPlayer);
|
||||
onGet().set(mailPathInsert + "." + "ToPlayer", mail.toPlayer);
|
||||
onGet().set(mailPathInsert + "." + "Message", mail.msg);
|
||||
onGet().set(mailPathInsert + "." + "SendDate", mail.sendDate.toString());
|
||||
onGet().set(mailPathInsert + "." + "EndDate", mail.endDate.toString());
|
||||
onGet().set(mailPathInsert + "." + "Read", mail.read);
|
||||
}
|
||||
onSave();
|
||||
}
|
||||
|
||||
public static Mail getMail(final Integer id){
|
||||
Mail mail = new Mail();
|
||||
String mailPathInsert = mailPath + "." + id.toString();
|
||||
if (onGet().contains(mailPathInsert)){
|
||||
mail.ID = id;
|
||||
mail.fromPlayer = onGet().getString(mailPathInsert + "." + "FromPlayer");
|
||||
mail.toPlayer = onGet().getString(mailPathInsert + "." + "ToPlayer");
|
||||
mail.msg = onGet().getString(mailPathInsert + "." + "Message");
|
||||
mail.sendDate = new DateOperations(onGet().getString(mailPathInsert + "." + "SendDate"));
|
||||
mail.endDate = new DateOperations(onGet().getString(mailPathInsert + "." + "EndDate"));
|
||||
mail.read = onGet().getBoolean(mailPathInsert + "." + "Read");
|
||||
return mail;
|
||||
}
|
||||
throw (RuntimeException) null;
|
||||
}
|
||||
|
||||
public static String getString(Integer id, String fieldName){
|
||||
String mailPathGet = mailPath + "." + id.toString() + "." + fieldName;
|
||||
if (onGet().contains(mailPathGet) && onGet().isString(mailPathGet)){
|
||||
return onGet().getString(mailPathGet);
|
||||
}
|
||||
throw (RuntimeException) null;
|
||||
}
|
||||
|
||||
public static Integer getInt(Integer id, String fieldName){
|
||||
String mailPathGet = mailPath + "." + id.toString() + "." + fieldName;
|
||||
if (onGet().contains(mailPathGet) && onGet().isInt(mailPathGet)){
|
||||
return onGet().getInt(mailPathGet);
|
||||
}
|
||||
throw (RuntimeException) null;
|
||||
}
|
||||
|
||||
public static Boolean getBool(Integer id, String fieldName){
|
||||
String mailPathGet = mailPath + "." + id.toString() + "." + fieldName;
|
||||
if (onGet().contains(mailPathGet) && onGet().isBoolean(mailPathGet)){
|
||||
return onGet().getBoolean(mailPathGet);
|
||||
}
|
||||
throw (RuntimeException) null;
|
||||
}
|
||||
|
||||
public static Integer getLastMailID() {
|
||||
try{
|
||||
return onGet().getConfigurationSection(mailPath).getKeys(false).size();
|
||||
} catch(NullPointerException e){
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
public static Integer getNextMailID() {
|
||||
return getLastMailID() + 1;
|
||||
}
|
||||
|
||||
public static void delMail(final Integer id){
|
||||
onRepair();
|
||||
String mailToDel = mailPath + "." + id;
|
||||
String mailLast = mailPath + "." + getLastMailID();
|
||||
if (onGet().contains(mailToDel)){
|
||||
Mail me = getMail(getLastMailID());
|
||||
me.ID = id;
|
||||
overrideMail(me);
|
||||
file.onGet().set(mailLast, null);
|
||||
}
|
||||
onSave();
|
||||
}
|
||||
|
||||
public static Integer getInboxAmount(OfflinePlayer p, boolean DelOld, boolean UnreadOnly){
|
||||
onRepair();
|
||||
int result = 0;
|
||||
if (file.onGet().contains(mailPath)){
|
||||
int length = file.onGet().getConfigurationSection(mailPath).getKeys(false).size();
|
||||
Mail buffer = null;
|
||||
DateOperations now = new DateOperations(new Date());
|
||||
for(int i = 1; i <= length; i++){
|
||||
if (onGet().contains(mailPath + "." + i)){
|
||||
buffer = getMail(i);
|
||||
if (now.isAfter(buffer.endDate) && DelOld){
|
||||
delMail(i);
|
||||
length--;
|
||||
continue;
|
||||
}
|
||||
if (!buffer.toPlayer.equals(p.getName())){
|
||||
continue;
|
||||
}
|
||||
if (!(buffer.read && UnreadOnly)){
|
||||
result++;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
public static PlayerInboxSize[] getInboxAmount(boolean DelOld, boolean UnreadOnly){
|
||||
onRepair();
|
||||
ArrayList<PlayerInboxSize> result = new ArrayList<PlayerInboxSize>();
|
||||
if (file.onGet().contains(mailPath)){
|
||||
int length = file.onGet().getConfigurationSection(mailPath).getKeys(false).size();
|
||||
Mail buffer = null;
|
||||
DateOperations now = new DateOperations(new Date());
|
||||
for(int i = 1; i <= length; i++){
|
||||
if (onGet().contains(mailPath + "." + i)){
|
||||
buffer = getMail(i);
|
||||
if (now.isAfter(buffer.endDate) && DelOld){
|
||||
delMail(i);
|
||||
length--;
|
||||
continue;
|
||||
}
|
||||
if (!(buffer.read && UnreadOnly)){
|
||||
boolean found = false;
|
||||
for(int j = 0; j < result.size(); j++){
|
||||
if (result.get(j).Player.equals(buffer.toPlayer)){
|
||||
result.get(j).Size = result.get(j).Size + 1;
|
||||
found = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (!found){
|
||||
result.add(new PlayerInboxSize(buffer.toPlayer));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
PlayerInboxSize[] array = new PlayerInboxSize[result.size()];
|
||||
result.toArray(array);
|
||||
return array;
|
||||
}
|
||||
|
||||
private static void onRepair() {
|
||||
//TODO
|
||||
}
|
||||
}
|
||||
158
src/me/Caesar2011/Mailings/Library/Messenger.java
Normal file
158
src/me/Caesar2011/Mailings/Library/Messenger.java
Normal file
@@ -0,0 +1,158 @@
|
||||
package me.Caesar2011.Mailings.Library;
|
||||
|
||||
import me.Caesar2011.Mailings.Library.ConfigManager.CfgColor;
|
||||
import me.Caesar2011.Mailings.Library.ConfigManager.CfgFormat;
|
||||
import me.Caesar2011.Mailings.Library.ConfigManager.CfgPropStr;
|
||||
import me.Caesar2011.Mailings.Library.ConfigManager.CfgRead;
|
||||
import me.Caesar2011.Mailings.Library.ConfigManager.CfgStr;
|
||||
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.command.CommandSender;
|
||||
|
||||
public class Messenger {
|
||||
private static ChatColor preColor = ChatColor.GOLD;
|
||||
private static String preString = "Mailings";
|
||||
private static ChatColor msgColor1 = ChatColor.DARK_PURPLE;
|
||||
private static ChatColor msgColor2 = ChatColor.LIGHT_PURPLE;
|
||||
private static ChatColor errColor1 = ChatColor.DARK_RED;
|
||||
private static ChatColor errColor2 = ChatColor.RED;
|
||||
private static boolean errUnderlined = true;
|
||||
private static boolean errBolded = true;
|
||||
private static boolean headUnderlined = true;
|
||||
private static boolean headBolded = true;
|
||||
private static final int pixelPerRow = 27;
|
||||
|
||||
public static void onEnable() {
|
||||
preColor = CfgColor.PREFIX.getValue();
|
||||
preString = CfgPropStr.PRESTRING.getValue();
|
||||
msgColor1 = CfgColor.MSG_FST.getValue();
|
||||
msgColor2 = CfgColor.MSG_SEC.getValue();
|
||||
errColor1 = CfgColor.ERR_FST.getValue();
|
||||
errColor2 = CfgColor.ERR_SEC.getValue();
|
||||
errUnderlined = CfgFormat.ERR_UNDER.getValue();
|
||||
errBolded = CfgFormat.ERR_BOLD.getValue();
|
||||
headUnderlined = CfgFormat.HEAD_UNDER.getValue();
|
||||
headBolded = CfgFormat.HEAD_BOLD.getValue();
|
||||
}
|
||||
|
||||
protected static String getPreStr(){
|
||||
return preString;
|
||||
}
|
||||
|
||||
private static void send(CommandSender sender, String arg) {
|
||||
arg = preColor + "[" + preString + "] " + "" + ChatColor.BOLD + arg;
|
||||
sender.sendMessage(arg);
|
||||
}
|
||||
|
||||
public static void sendOtherMsg(CommandSender sender, CfgStr msg){
|
||||
sendOtherMsg(sender, msg, new String[]{});
|
||||
}
|
||||
|
||||
public static void sendOtherMsg(CommandSender sender, CfgStr msg, String[]... value){
|
||||
String arg = msgColor1 + msg.getValue();
|
||||
for (String[] v: value){
|
||||
arg = arg.replaceAll(v[0], msgColor2 + v[1] + msgColor1);
|
||||
}
|
||||
send(sender, arg);
|
||||
}
|
||||
|
||||
public static void sendErrorMsg(CommandSender sender, CfgStr msg){
|
||||
sendErrorMsg(sender, msg, new String[0][0]);
|
||||
}
|
||||
|
||||
/*public static void sendErrorMsg(CommandSender sender, CfgStr msg, String[]... value){
|
||||
String arg = msg.getValue();
|
||||
for (String[] v: value){
|
||||
arg = arg.replaceAll(v[0], errColor2 + v[1] + errColor1);
|
||||
}
|
||||
if (errUnderlined){
|
||||
arg = ChatColor.UNDERLINE + arg;
|
||||
}
|
||||
if (errBolded){
|
||||
arg = ChatColor.BOLD + arg;
|
||||
}
|
||||
arg = errColor1 + arg;
|
||||
send(sender, arg);
|
||||
}*/
|
||||
|
||||
public static void sendErrorMsg(CommandSender sender, CfgStr msg, String[]... value){
|
||||
String arg = msg.getValue();
|
||||
String color1 = errColor1 + "";
|
||||
String color2 = errColor2 + "";
|
||||
if (errUnderlined){
|
||||
color1 = ChatColor.UNDERLINE + color1;
|
||||
color2 = ChatColor.UNDERLINE + color2;
|
||||
}
|
||||
if (errBolded){
|
||||
color1 = ChatColor.BOLD + color1;
|
||||
color2 = ChatColor.BOLD + color2;
|
||||
}
|
||||
for (String[] v: value){
|
||||
arg = arg.replaceAll(v[0], color2 + v[1] + color1);
|
||||
}
|
||||
arg = color1 + arg;
|
||||
send(sender, arg);
|
||||
}
|
||||
|
||||
|
||||
|
||||
public static void sendPlyHelp(CommandSender sender, String desc, String command){
|
||||
String arg = msgColor1 + desc + preColor + " - " + msgColor2 + command;
|
||||
send(sender, arg);
|
||||
}
|
||||
|
||||
public static void sendPlyHeader(CommandSender sender, String header){
|
||||
if (headUnderlined){
|
||||
header = ChatColor.UNDERLINE + header;
|
||||
}
|
||||
if (headBolded){
|
||||
header = ChatColor.BOLD + header;
|
||||
}
|
||||
header = msgColor1 + header;
|
||||
send(sender, header);
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
|
||||
|
||||
public static void sendPlyInOutBox(CommandSender sender, Integer ID, String FromPlayer, String Message, boolean Read){
|
||||
if (Read){
|
||||
send(sender, msgColor1 + "[" + ChatColor.DARK_GREEN + ID + msgColor1 + "] " + preColor + FromPlayer + msgColor2 + ": " + preColor + Message);
|
||||
} else {
|
||||
send(sender, msgColor1 + "[" + ChatColor.DARK_RED + ID + msgColor1 + "] " + preColor + FromPlayer + msgColor2 + ": " + preColor + Message);
|
||||
}
|
||||
}
|
||||
|
||||
public static void sendPlyHeader(CommandSender sender, CfgStr msg){
|
||||
sendPlyHeader(sender, msg.getValue());
|
||||
}
|
||||
|
||||
public static void sendPlyRead(CommandSender sender, String msg, String toPly, String fromPly, int id, boolean read, DateOperations sDate, DateOperations eDate, String type, String getItem, String reqItem){
|
||||
send(sender, msgColor1 + "" + ChatColor.STRIKETHROUGH + " ");
|
||||
send(sender, msgColor1 + CfgRead.TO.getValue() + ": " + msgColor2 + toPly + StringOperations.getSpace(CfgRead.TO.getValue() + ": " + toPly, pixelPerRow) + msgColor1 + " - " + CfgRead.FROM.getValue() + ": " + msgColor2 + fromPly);
|
||||
send(sender, msgColor1 + "ID: " + msgColor2 + id + StringOperations.getSpace("ID: " + id, pixelPerRow) + msgColor1 + " - " + CfgRead.READ.getValue() + ": " + msgColor2 + read);
|
||||
send(sender, msgColor1 + CfgRead.SENDDATE.getValue() + ": " + msgColor2 + sDate + StringOperations.getSpace(CfgRead.SENDDATE.getValue() + ": " + toPly, pixelPerRow) + msgColor1 + " - " + CfgRead.ENDDATE.getValue() + ": " + msgColor2 + eDate);
|
||||
|
||||
if (getItem == null) {
|
||||
send(sender,msgColor1 + CfgRead.MAILTYPE.getValue() + ": " + msgColor2 + type);
|
||||
} else {
|
||||
if (reqItem == null){
|
||||
send(sender,msgColor1 + CfgRead.MAILTYPE.getValue() + ": " + msgColor2 + type + StringOperations.getSpace(CfgRead.MAILTYPE.getValue() + ": " + type, pixelPerRow) + msgColor1 + " - " + CfgRead.ITEM.getValue() + ": " + msgColor2 + getItem);
|
||||
} else {
|
||||
send(sender,msgColor1 + CfgRead.MAILTYPE.getValue() + ": " + msgColor2 + type);
|
||||
send(sender,msgColor1 + CfgRead.GETITEM.getValue() + ": " + msgColor2 + getItem + StringOperations.getSpace(CfgRead.GETITEM.getValue() + ": " + getItem, pixelPerRow) + msgColor1 + " - " + CfgRead.REQITEM.getValue() + ": " + msgColor2 + reqItem);
|
||||
}
|
||||
}
|
||||
|
||||
String header = CfgRead.MESSAGE.getValue() + ":";
|
||||
if (headUnderlined){
|
||||
header = ChatColor.UNDERLINE + header;
|
||||
}
|
||||
if (headBolded){
|
||||
header = ChatColor.BOLD + header;
|
||||
}
|
||||
header = msgColor1 + header;
|
||||
send(sender, header + ChatColor.RESET + msgColor2 + " " + msg);
|
||||
send(sender, msgColor1 + "" + ChatColor.STRIKETHROUGH + " ");
|
||||
}
|
||||
}
|
||||
16
src/me/Caesar2011/Mailings/Library/PlayerInboxSize.java
Normal file
16
src/me/Caesar2011/Mailings/Library/PlayerInboxSize.java
Normal file
@@ -0,0 +1,16 @@
|
||||
package me.Caesar2011.Mailings.Library;
|
||||
|
||||
public class PlayerInboxSize {
|
||||
public String Player;
|
||||
public Integer Size;
|
||||
|
||||
public PlayerInboxSize(String player){
|
||||
this.Player = player;
|
||||
this.Size = 1;
|
||||
}
|
||||
|
||||
public PlayerInboxSize(String player, Integer size){
|
||||
this.Player = player;
|
||||
this.Size = size;
|
||||
}
|
||||
}
|
||||
158
src/me/Caesar2011/Mailings/Library/StringOperations.java
Normal file
158
src/me/Caesar2011/Mailings/Library/StringOperations.java
Normal file
@@ -0,0 +1,158 @@
|
||||
package me.Caesar2011.Mailings.Library;
|
||||
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
|
||||
public class StringOperations {
|
||||
public static String getStringArr(String[] strArr){
|
||||
String result = "";
|
||||
if (strArr.length > 0) {
|
||||
result = strArr[0]; // start with the first element
|
||||
for (int i=1; i < strArr.length; i++) {
|
||||
result = result + " " + strArr[i];
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
public static int getStringPixLen(String string){
|
||||
final String length5 = "()*<>fk{}";
|
||||
final String length4 = " \"I[]t";
|
||||
final String length3 = "´`l";
|
||||
final String length2 = "!',.:;";
|
||||
int result = 0;
|
||||
boolean found = false;
|
||||
char c;
|
||||
|
||||
for (int i = 0; i < string.length(); i++){
|
||||
c = string.charAt(i);
|
||||
found = false;
|
||||
for (int j = 0; j < length5.length() && !found; j++){
|
||||
if (c == length5.charAt(j)){
|
||||
result += 5;
|
||||
found = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
for (int j = 0; j < length4.length() && !found; j++){
|
||||
if (c == length4.charAt(j)){
|
||||
result += 4;
|
||||
found = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
for (int j = 0; j < length3.length() && !found; j++){
|
||||
if (c == length3.charAt(j)){
|
||||
result += 3;
|
||||
found = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
for (int j = 0; j < length2.length() && !found; j++){
|
||||
if (c == length2.charAt(j)){
|
||||
result += 2;
|
||||
found = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (!found) result += 6;
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
public static String getSpace(String arg, int pixel){
|
||||
int spaces = getStringPixLen(arg);
|
||||
spaces = pixel - (spaces / 4);
|
||||
String spacesAdd = "";
|
||||
for (;spaces >= 0; spaces--){
|
||||
spacesAdd += " ";
|
||||
}
|
||||
return spacesAdd;
|
||||
}
|
||||
|
||||
public static String getMaterial(String material){
|
||||
if(){
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
public static ItemStack getItemStack(String itemString){
|
||||
Material type = null;
|
||||
int amount = 1;
|
||||
short damage = 0;
|
||||
String[] split = itemString.split(":", 3);
|
||||
if (split.length == 1){
|
||||
try {
|
||||
Material m = Material.matchMaterial(split[0]);
|
||||
if (m != null) {
|
||||
type = m;
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
} catch (Exception e) {
|
||||
return null;
|
||||
}
|
||||
} else if (split.length == 2) {
|
||||
try {
|
||||
Material m = Material.matchMaterial(split[0]);
|
||||
if (m != null) {
|
||||
type = m;
|
||||
damage = new Short(split[1]);
|
||||
if (!(damage == 0 || dataIsValid(damage, m))) {
|
||||
return null;
|
||||
}
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
} catch (Exception e) {
|
||||
return null;
|
||||
}
|
||||
} else if (split.length == 3) {
|
||||
try {
|
||||
amount = new Integer(split[0]);
|
||||
Material m = Material.matchMaterial(split[1]);
|
||||
if (m != null) {
|
||||
type = m;
|
||||
damage = new Short(split[2]);
|
||||
if (!(damage == 0 || dataIsValid(damage, m))) {
|
||||
return null;
|
||||
}
|
||||
if (amount <= 0 || amount > m.getMaxStackSize()){
|
||||
return null;
|
||||
}
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
} catch (Exception e) {
|
||||
return null;
|
||||
}
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
return new ItemStack(type, amount, damage);
|
||||
}
|
||||
|
||||
private static boolean dataIsValid(short damage, Material m) {
|
||||
if (damage >= 0) {
|
||||
if (m.equals(Material.WOOD) && damage <= 3) return true;
|
||||
if (m.equals(Material.SAPLING) && damage <= 3) return true;
|
||||
if (m.equals(Material.LOG) && damage <= 3) return true;
|
||||
if (m.equals(Material.LEAVES) && damage <= 3) return true;
|
||||
if (m.equals(Material.SANDSTONE) && damage <= 2) return true;
|
||||
if (m.equals(Material.LONG_GRASS) && damage <= 2) return true;
|
||||
if (m.equals(Material.WOOL) && damage <= 15) return true;
|
||||
if (m.equals(Material.DOUBLE_STEP) && damage <= 6) return true;
|
||||
if (m.equals(Material.STEP) && damage <= 6) return true;
|
||||
if (m.equals(Material.MONSTER_EGGS) && damage <= 3) return true;
|
||||
if (m.equals(Material.SMOOTH_BRICK) && damage <= 3) return true;
|
||||
if (m.equals(Material.WOOD_DOUBLE_STEP) && damage <= 3) return true;
|
||||
if (m.equals(Material.WOOD_STEP) && damage <= 3) return true;
|
||||
//TODO 1.4 if (m.equals(Material.ANVIL) && damage <= 2) return true;
|
||||
if (m.equals(Material.INK_SACK) && damage <= 15) return true;
|
||||
if (m.equals(Material.MONSTER_EGG) && ((damage >= 50 && damage <= 64 && damage != 53) || (damage >= 90 && damage <= 98 && damage != 97) || (damage == 120))) return true;
|
||||
//TODO 1.4 if (m.equals(Material.SKULL_ITEM) && damage <= 4) return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
26
src/me/Caesar2011/Mailings/Library/TradeMail.java
Normal file
26
src/me/Caesar2011/Mailings/Library/TradeMail.java
Normal file
@@ -0,0 +1,26 @@
|
||||
package me.Caesar2011.Mailings.Library;
|
||||
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
|
||||
public class TradeMail extends Mail{
|
||||
public ItemStack getitem;
|
||||
public ItemStack reqitem;
|
||||
|
||||
public TradeMail (){
|
||||
super();
|
||||
this.getitem = null;
|
||||
this.reqitem = null;
|
||||
}
|
||||
|
||||
public TradeMail (String from, String to, String msg, ItemStack getitem, ItemStack reqitem){
|
||||
super(from, to, msg);
|
||||
this.getitem = getitem;
|
||||
this.reqitem = reqitem;
|
||||
}
|
||||
|
||||
public TradeMail (String from, String to, String[] msg, ItemStack getitem, ItemStack reqitem){
|
||||
super(from, to, msg);
|
||||
this.getitem = getitem;
|
||||
this.reqitem = reqitem;
|
||||
}
|
||||
}
|
||||
197
src/me/Caesar2011/Mailings/Library/TradeMailManager.java
Normal file
197
src/me/Caesar2011/Mailings/Library/TradeMailManager.java
Normal file
@@ -0,0 +1,197 @@
|
||||
package me.Caesar2011.Mailings.Library;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Date;
|
||||
|
||||
import org.bukkit.OfflinePlayer;
|
||||
import org.bukkit.configuration.file.FileConfiguration;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
|
||||
public class TradeMailManager {
|
||||
public static String typeName = "TradeMail";
|
||||
public static final String className = "TradeMailManager";
|
||||
private static final String fileName = "trademail.yml";
|
||||
private static final String mailPath = "Mails";
|
||||
private static FileManager file = new FileManager(className, fileName);
|
||||
|
||||
public static void onEnable(){
|
||||
file.onEnable();
|
||||
}
|
||||
|
||||
public static void onDisable(){
|
||||
file.onDisable();
|
||||
}
|
||||
|
||||
private static FileConfiguration onGet(){
|
||||
return file.onGet();
|
||||
}
|
||||
|
||||
public static void onSave(){
|
||||
file.onSave();
|
||||
}
|
||||
|
||||
public static void addMail(final TradeMail tMail){
|
||||
tMail.ID = getNextMailID();
|
||||
saveMail(tMail);
|
||||
}
|
||||
|
||||
public static void overrideMail(final TradeMail tMail){
|
||||
String mailPathInsert = mailPath + "." + tMail.ID;
|
||||
if (onGet().contains(mailPathInsert)){
|
||||
saveMail(tMail);
|
||||
}
|
||||
}
|
||||
|
||||
private static void saveMail(final TradeMail tMail){
|
||||
String mailPathInsert = mailPath + "." + tMail.ID;
|
||||
if (tMail.ID > 0){
|
||||
onGet().set(mailPathInsert + "." + "FromPlayer", tMail.fromPlayer);
|
||||
onGet().set(mailPathInsert + "." + "ToPlayer", tMail.toPlayer);
|
||||
onGet().set(mailPathInsert + "." + "Message", tMail.msg);
|
||||
onGet().set(mailPathInsert + "." + "SendDate", tMail.sendDate.toString());
|
||||
onGet().set(mailPathInsert + "." + "EndDate", tMail.endDate.toString());
|
||||
onGet().set(mailPathInsert + "." + "Read", tMail.read);
|
||||
onGet().set(mailPathInsert + "." + "GetStack.Type", tMail.getitem.getTypeId());
|
||||
onGet().set(mailPathInsert + "." + "GetStack.Amount", tMail.getitem.getAmount());
|
||||
onGet().set(mailPathInsert + "." + "GetStack.Damage", tMail.getitem.getDurability());
|
||||
onGet().set(mailPathInsert + "." + "ReqStack.Type", tMail.reqitem.getTypeId());
|
||||
onGet().set(mailPathInsert + "." + "ReqStack.Amount", tMail.reqitem.getAmount());
|
||||
onGet().set(mailPathInsert + "." + "ReqStack.Damage", tMail.reqitem.getDurability());
|
||||
}
|
||||
onSave();
|
||||
}
|
||||
|
||||
public static TradeMail getMail(final Integer id){
|
||||
TradeMail tMail = new TradeMail();
|
||||
String mailPathInsert = mailPath + "." + id.toString();
|
||||
if (onGet().contains(mailPathInsert)){
|
||||
tMail.ID = id;
|
||||
tMail.fromPlayer = onGet().getString(mailPathInsert + "." + "FromPlayer");
|
||||
tMail.toPlayer = onGet().getString(mailPathInsert + "." + "ToPlayer");
|
||||
tMail.msg = onGet().getString(mailPathInsert + "." + "Message");
|
||||
tMail.sendDate = new DateOperations(onGet().getString(mailPathInsert + "." + "SendDate"));
|
||||
tMail.endDate = new DateOperations(onGet().getString(mailPathInsert + "." + "EndDate"));
|
||||
tMail.getitem = new ItemStack(onGet().getInt(mailPathInsert + "." + "GetStack.Type"),onGet().getInt(mailPathInsert + "." + "GetStack.Amount"),(short) onGet().getInt(mailPathInsert + "." + "GetStack.Damage"));
|
||||
tMail.reqitem = new ItemStack(onGet().getInt(mailPathInsert + "." + "ReqStack.Type"),onGet().getInt(mailPathInsert + "." + "ReqStack.Amount"),(short) onGet().getInt(mailPathInsert + "." + "ReqStack.Damage"));
|
||||
tMail.read = onGet().getBoolean(mailPathInsert + "." + "Read");
|
||||
return tMail;
|
||||
}
|
||||
throw (RuntimeException) null;
|
||||
}
|
||||
|
||||
public static String getString(final Integer id, final String fieldName){
|
||||
String mailPathGet = mailPath + "." + id.toString() + "." + fieldName;
|
||||
if (onGet().contains(mailPathGet) && onGet().isString(mailPathGet)){
|
||||
return onGet().getString(mailPathGet);
|
||||
}
|
||||
throw (RuntimeException) null;
|
||||
}
|
||||
|
||||
public static Integer getInt(Integer id, String fieldName){
|
||||
String mailPathGet = mailPath + "." + id.toString() + "." + fieldName;
|
||||
if (onGet().contains(mailPathGet) && onGet().isInt(mailPathGet)){
|
||||
return onGet().getInt(mailPathGet);
|
||||
}
|
||||
throw (RuntimeException) null;
|
||||
}
|
||||
|
||||
public static Boolean getBool(Integer id, String fieldName){
|
||||
String mailPathGet = mailPath + "." + id.toString() + "." + fieldName;
|
||||
if (onGet().contains(mailPathGet) && onGet().isBoolean(mailPathGet)){
|
||||
return onGet().getBoolean(mailPathGet);
|
||||
}
|
||||
throw (RuntimeException) null;
|
||||
}
|
||||
|
||||
public static Integer getLastMailID() {
|
||||
try{
|
||||
return onGet().getConfigurationSection(mailPath).getKeys(false).size();
|
||||
} catch(NullPointerException e){
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
public static Integer getNextMailID() {
|
||||
return getLastMailID() + 1;
|
||||
}
|
||||
|
||||
public static void delMail(final Integer id){
|
||||
onRepair();
|
||||
String mailToDel = mailPath + "." + id;
|
||||
String mailLast = mailPath + "." + getLastMailID();
|
||||
if (onGet().contains(mailToDel)){
|
||||
TradeMail tMail = getMail(getLastMailID());
|
||||
tMail.ID = id;
|
||||
overrideMail(tMail);
|
||||
onGet().set(mailLast, null);
|
||||
}
|
||||
onSave();
|
||||
}
|
||||
|
||||
public static Integer getInboxAmount(final OfflinePlayer p, final boolean DelOld, final boolean UnreadOnly){
|
||||
onRepair();
|
||||
int result = 0;
|
||||
if (onGet().contains(mailPath)){
|
||||
int length = onGet().getConfigurationSection(mailPath).getKeys(false).size();
|
||||
TradeMail buffer = null;
|
||||
DateOperations now = new DateOperations(new Date());
|
||||
for(int i = 1; i <= length; i++){
|
||||
if (onGet().contains(mailPath + "." + i)){
|
||||
buffer = getMail(i);
|
||||
if (now.isAfter(buffer.endDate) && DelOld){
|
||||
delMail(i);
|
||||
length--;
|
||||
continue;
|
||||
}
|
||||
if (!buffer.toPlayer.equals(p.getName())){
|
||||
continue;
|
||||
}
|
||||
if (!(buffer.read && UnreadOnly)){
|
||||
result++;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
public static PlayerInboxSize[] getInboxAmount(boolean DelOld, boolean UnreadOnly){
|
||||
onRepair();
|
||||
ArrayList<PlayerInboxSize> result = new ArrayList<PlayerInboxSize>();
|
||||
if (onGet().contains(mailPath)){
|
||||
int length = onGet().getConfigurationSection(mailPath).getKeys(false).size();
|
||||
TradeMail buffer = null;
|
||||
DateOperations now = new DateOperations(new Date());
|
||||
for(int i = 1; i <= length; i++){
|
||||
if (onGet().contains(mailPath + "." + i)){
|
||||
buffer = getMail(i);
|
||||
if (now.isAfter(buffer.endDate) && DelOld){
|
||||
delMail(i);
|
||||
length--;
|
||||
continue;
|
||||
}
|
||||
if (!(buffer.read && UnreadOnly)){
|
||||
boolean found = false;
|
||||
for(int j = 0; j < result.size(); j++){
|
||||
if (result.get(j).Player.equals(buffer.toPlayer)){
|
||||
result.get(j).Size = result.get(j).Size + 1;
|
||||
found = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (!found){
|
||||
result.add(new PlayerInboxSize(buffer.toPlayer));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
PlayerInboxSize[] array = new PlayerInboxSize[result.size()];
|
||||
result.toArray(array);
|
||||
return array;
|
||||
}
|
||||
|
||||
private static void onRepair() {
|
||||
//TODO
|
||||
}
|
||||
}
|
||||
89
src/me/Caesar2011/Mailings/Listener/Listener_PlayerJoin.java
Normal file
89
src/me/Caesar2011/Mailings/Listener/Listener_PlayerJoin.java
Normal file
@@ -0,0 +1,89 @@
|
||||
package me.Caesar2011.Mailings.Listener;
|
||||
|
||||
import me.Caesar2011.Mailings.Mailings;
|
||||
import me.Caesar2011.Mailings.Library.ConfigManager.CfgEntry;
|
||||
import me.Caesar2011.Mailings.Library.ConfigManager.CfgPropBool;
|
||||
import me.Caesar2011.Mailings.Library.ItemMailManager;
|
||||
import me.Caesar2011.Mailings.Library.MailManager;
|
||||
import me.Caesar2011.Mailings.Library.Messenger;
|
||||
import me.Caesar2011.Mailings.Library.TradeMailManager;
|
||||
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.EventPriority;
|
||||
import org.bukkit.event.Listener;
|
||||
import org.bukkit.event.player.PlayerJoinEvent;
|
||||
|
||||
public class Listener_PlayerJoin implements Listener {
|
||||
private Mailings plugin;
|
||||
|
||||
public Listener_PlayerJoin(Mailings plugin){
|
||||
this.plugin = plugin;
|
||||
plugin.getServer().getPluginManager().registerEvents(this, plugin);
|
||||
}
|
||||
|
||||
@EventHandler(priority = EventPriority.MONITOR)
|
||||
public void onPlayerJoin(PlayerJoinEvent event){
|
||||
execute(event.getPlayer(), plugin);
|
||||
}
|
||||
|
||||
public static void execute(final Player p, final Mailings plugin){
|
||||
plugin.getServer().getScheduler().scheduleSyncDelayedTask(plugin, new Runnable() {
|
||||
public void run() {
|
||||
if (CfgPropBool.SHOWLOGIN.getValue()) {
|
||||
Integer amount = MailManager.getInboxAmount(p, true, true);
|
||||
if (amount > 0 || CfgPropBool.SHOWLOGINEMPTY.getValue()){
|
||||
switch (amount) {
|
||||
case 0: {
|
||||
Messenger.sendOtherMsg(p, CfgEntry.NONEW, new String[]{"%type%", MailManager.typeName});
|
||||
break;
|
||||
}
|
||||
case 1: {
|
||||
Messenger.sendOtherMsg(p, CfgEntry.ONENEW, new String[]{"%type%", MailManager.typeName});
|
||||
break;
|
||||
}
|
||||
default: {
|
||||
Messenger.sendOtherMsg(p, CfgEntry.MORENEW, new String[]{"%type%", MailManager.typeName}, new String[]{"%amount%", amount.toString()});
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
amount = ItemMailManager.getInboxAmount(p, true, true);
|
||||
if (amount > 0 || CfgPropBool.SHOWLOGINEMPTY.getValue()){
|
||||
switch (amount) {
|
||||
case 0: {
|
||||
Messenger.sendOtherMsg(p, CfgEntry.NONEW, new String[]{"%type%", ItemMailManager.typeName});
|
||||
break;
|
||||
}
|
||||
case 1: {
|
||||
Messenger.sendOtherMsg(p, CfgEntry.ONENEW, new String[]{"%type%", ItemMailManager.typeName});
|
||||
break;
|
||||
}
|
||||
default: {
|
||||
Messenger.sendOtherMsg(p, CfgEntry.MORENEW, new String[]{"%type%", ItemMailManager.typeName}, new String[]{"%amount%", amount.toString()});
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
amount = TradeMailManager.getInboxAmount(p, true, true);
|
||||
if (amount > 0 || CfgPropBool.SHOWLOGINEMPTY.getValue()){
|
||||
switch (amount) {
|
||||
case 0: {
|
||||
Messenger.sendOtherMsg(p, CfgEntry.NONEW, new String[]{"%type%", TradeMailManager.typeName});
|
||||
break;
|
||||
}
|
||||
case 1: {
|
||||
Messenger.sendOtherMsg(p, CfgEntry.ONENEW, new String[]{"%type%", TradeMailManager.typeName});
|
||||
break;
|
||||
}
|
||||
default: {
|
||||
Messenger.sendOtherMsg(p, CfgEntry.MORENEW, new String[]{"%type%", TradeMailManager.typeName}, new String[]{"%amount%", amount.toString()});
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}, 20L);
|
||||
}
|
||||
}
|
||||
186
src/me/Caesar2011/Mailings/Mailings.java
Normal file
186
src/me/Caesar2011/Mailings/Mailings.java
Normal file
@@ -0,0 +1,186 @@
|
||||
package me.Caesar2011.Mailings;
|
||||
|
||||
import me.Caesar2011.Mailings.Commands.Cmd_Help;
|
||||
import me.Caesar2011.Mailings.Commands.Cmd_ItemMail_Delmail;
|
||||
import me.Caesar2011.Mailings.Commands.Cmd_ItemMail_Getmail;
|
||||
import me.Caesar2011.Mailings.Commands.Cmd_ItemMail_Inbox;
|
||||
import me.Caesar2011.Mailings.Commands.Cmd_ItemMail_Outbox;
|
||||
import me.Caesar2011.Mailings.Commands.Cmd_ItemMail_Readmail;
|
||||
import me.Caesar2011.Mailings.Commands.Cmd_ItemMail_Sendmail;
|
||||
import me.Caesar2011.Mailings.Commands.Cmd_Mail_Delmail;
|
||||
import me.Caesar2011.Mailings.Commands.Cmd_Mail_Inbox;
|
||||
import me.Caesar2011.Mailings.Commands.Cmd_Mail_Outbox;
|
||||
import me.Caesar2011.Mailings.Commands.Cmd_Mail_Readmail;
|
||||
import me.Caesar2011.Mailings.Commands.Cmd_Mail_Sendmail;
|
||||
import me.Caesar2011.Mailings.Commands.Cmd_Mail_Sendroundmail;
|
||||
import me.Caesar2011.Mailings.Commands.Cmd_Reload;
|
||||
import me.Caesar2011.Mailings.Commands.Cmd_TradeMail_Acceptmail;
|
||||
import me.Caesar2011.Mailings.Commands.Cmd_TradeMail_Denymail;
|
||||
import me.Caesar2011.Mailings.Commands.Cmd_TradeMail_Inbox;
|
||||
import me.Caesar2011.Mailings.Commands.Cmd_TradeMail_Outbox;
|
||||
import me.Caesar2011.Mailings.Commands.Cmd_TradeMail_Readmail;
|
||||
import me.Caesar2011.Mailings.Commands.Cmd_TradeMail_Sendmail;
|
||||
import me.Caesar2011.Mailings.Library.ConfigManager;
|
||||
import me.Caesar2011.Mailings.Library.CooldownManager;
|
||||
import me.Caesar2011.Mailings.Library.Economy;
|
||||
import me.Caesar2011.Mailings.Library.EnumCmdExe;
|
||||
import me.Caesar2011.Mailings.Library.ItemMailManager;
|
||||
import me.Caesar2011.Mailings.Library.MailManager;
|
||||
import me.Caesar2011.Mailings.Library.Messenger;
|
||||
import me.Caesar2011.Mailings.Library.TradeMailManager;
|
||||
import me.Caesar2011.Mailings.Listener.Listener_PlayerJoin;
|
||||
|
||||
import org.bukkit.command.Command;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.plugin.java.JavaPlugin;
|
||||
|
||||
public class Mailings extends JavaPlugin {
|
||||
|
||||
@Override
|
||||
public void onEnable() {
|
||||
//Enable-Stuff
|
||||
ConfigManager.onEnable();
|
||||
MailManager.onEnable();
|
||||
ItemMailManager.onEnable();
|
||||
TradeMailManager.onEnable();
|
||||
Economy.onEnable(this);
|
||||
CooldownManager.onEnable();
|
||||
Messenger.onEnable();
|
||||
|
||||
new Listener_PlayerJoin(this);
|
||||
|
||||
Player[] everyOnline = this.getServer().getOnlinePlayers();
|
||||
for (int i = 0; i < everyOnline.length; i++) {
|
||||
Listener_PlayerJoin.execute(everyOnline[i], this);
|
||||
}
|
||||
|
||||
System.out.println("[" + this.getName() + "] Plugin activated successfully.");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDisable() {
|
||||
//Disable-Stuff
|
||||
MailManager.onDisable();
|
||||
ItemMailManager.onDisable();
|
||||
TradeMailManager.onDisable();
|
||||
CooldownManager.onDisable();
|
||||
System.out.println("[" + this.getName() + "] Plugin deactivated successfully.");
|
||||
}
|
||||
|
||||
public boolean onCommand(CommandSender sender, Command cmd, String cmdLabel, String[] args){
|
||||
EnumCmdExe result = EnumCmdExe.UNKNOWN;
|
||||
if(cmd.getName().equalsIgnoreCase("mail") || cmd.getName().equalsIgnoreCase("imail") || cmd.getName().equalsIgnoreCase("tmail")){
|
||||
if (args.length == 0){
|
||||
result = new Cmd_Help(sender, args).execute();
|
||||
} else {
|
||||
String[] newargs = new String[args.length-1];
|
||||
for (int i = 1; i < args.length;) {
|
||||
newargs[i-1] = args[i];
|
||||
i++;
|
||||
}
|
||||
if (cmd.getName().equalsIgnoreCase("mail")){
|
||||
if (args[0].equalsIgnoreCase("inbox")){
|
||||
result = new Cmd_Mail_Inbox(newargs, sender, this).execute();
|
||||
} else if (args[0].equalsIgnoreCase("outbox")){
|
||||
result = new Cmd_Mail_Outbox(newargs, sender, this).execute();
|
||||
} else if (args[0].equalsIgnoreCase("read")){
|
||||
result = new Cmd_Mail_Readmail(newargs, sender).execute();
|
||||
} else if (args[0].equalsIgnoreCase("del")){
|
||||
result = new Cmd_Mail_Delmail(newargs, sender).execute();
|
||||
} else if (args[0].equalsIgnoreCase("send")){
|
||||
result = new Cmd_Mail_Sendmail(newargs, sender, this).execute();
|
||||
} else if (args[0].equalsIgnoreCase("sendroundmail")){
|
||||
result = new Cmd_Mail_Sendroundmail(newargs, sender, this).execute();
|
||||
}
|
||||
}
|
||||
if (cmd.getName().equalsIgnoreCase("imail")){
|
||||
if (args[0].equalsIgnoreCase("inbox")){
|
||||
result = new Cmd_ItemMail_Inbox(newargs, sender, this).execute();
|
||||
} else if (args[0].equalsIgnoreCase("outbox")){
|
||||
result = new Cmd_ItemMail_Outbox(newargs, sender, this).execute();
|
||||
} else if (args[0].equalsIgnoreCase("read")){
|
||||
result = new Cmd_ItemMail_Readmail(newargs, sender).execute();
|
||||
} else if (args[0].equalsIgnoreCase("del")){
|
||||
result = new Cmd_ItemMail_Delmail(newargs, sender).execute();
|
||||
} else if (args[0].equalsIgnoreCase("send")){
|
||||
result = new Cmd_ItemMail_Sendmail(newargs, sender, this).execute();
|
||||
} else if (args[0].equalsIgnoreCase("get")){
|
||||
result = new Cmd_ItemMail_Getmail(newargs, sender).execute();
|
||||
}
|
||||
}
|
||||
if (cmd.getName().equalsIgnoreCase("tmail")){
|
||||
if (args[0].equalsIgnoreCase("inbox")){
|
||||
result = new Cmd_TradeMail_Inbox(newargs, sender, this).execute();
|
||||
} else if (args[0].equalsIgnoreCase("outbox")){
|
||||
result = new Cmd_TradeMail_Outbox(newargs, sender, this).execute();
|
||||
} else if (args[0].equalsIgnoreCase("read")){
|
||||
result = new Cmd_TradeMail_Readmail(newargs, sender).execute();
|
||||
} else if (args[0].equalsIgnoreCase("send")){
|
||||
result = new Cmd_TradeMail_Sendmail(newargs, sender, this).execute();
|
||||
} else if (args[0].equalsIgnoreCase("accept")){
|
||||
result = new Cmd_TradeMail_Acceptmail(newargs, sender, this).execute();
|
||||
} else if (args[0].equalsIgnoreCase("deny")){
|
||||
result = new Cmd_TradeMail_Denymail(newargs, sender, this).execute();
|
||||
}
|
||||
}
|
||||
if (args[0].equalsIgnoreCase("reload")){
|
||||
result = new Cmd_Reload(sender, this).execute();
|
||||
}
|
||||
}
|
||||
} else if (cmd.getName().equalsIgnoreCase("inbox")) {
|
||||
result = new Cmd_Mail_Inbox(args, sender, this).execute();
|
||||
} else if (cmd.getName().equalsIgnoreCase("outbox")) {
|
||||
result = new Cmd_Mail_Outbox(args, sender, this).execute();
|
||||
} else if (cmd.getName().equalsIgnoreCase("readmail")) {
|
||||
result = new Cmd_Mail_Readmail(args, sender).execute();
|
||||
} else if (cmd.getName().equalsIgnoreCase("reloadmail")) {
|
||||
result = new Cmd_Reload(sender, this).execute();
|
||||
} else if (cmd.getName().equalsIgnoreCase("sendmail")) {
|
||||
result = new Cmd_Mail_Sendmail(args, sender, this).execute();
|
||||
} else if (cmd.getName().equalsIgnoreCase("sendroundmail")) {
|
||||
result = new Cmd_Mail_Sendroundmail(args, sender, this).execute();
|
||||
} else if (cmd.getName().equalsIgnoreCase("delmail")) {
|
||||
result = new Cmd_Mail_Delmail(args, sender).execute();
|
||||
|
||||
} else if (cmd.getName().equalsIgnoreCase("iinbox")) {
|
||||
result = new Cmd_ItemMail_Inbox(args, sender, this).execute();
|
||||
} else if (cmd.getName().equalsIgnoreCase("ioutbox")) {
|
||||
result = new Cmd_ItemMail_Outbox(args, sender, this).execute();
|
||||
} else if (cmd.getName().equalsIgnoreCase("readimail")) {
|
||||
result = new Cmd_ItemMail_Readmail(args, sender).execute();
|
||||
} else if (cmd.getName().equalsIgnoreCase("sendimail")) {
|
||||
result = new Cmd_ItemMail_Sendmail(args, sender, this).execute();
|
||||
} else if (cmd.getName().equalsIgnoreCase("delimail")) {
|
||||
result = new Cmd_ItemMail_Delmail(args, sender).execute();
|
||||
} else if (cmd.getName().equalsIgnoreCase("getimail")) {
|
||||
result = new Cmd_ItemMail_Getmail(args, sender).execute();
|
||||
|
||||
} else if (cmd.getName().equalsIgnoreCase("tinbox")) {
|
||||
result = new Cmd_TradeMail_Inbox(args, sender, this).execute();
|
||||
} else if (cmd.getName().equalsIgnoreCase("toutbox")) {
|
||||
result = new Cmd_TradeMail_Outbox(args, sender, this).execute();
|
||||
} else if (cmd.getName().equalsIgnoreCase("readtmail")) {
|
||||
result = new Cmd_TradeMail_Readmail(args, sender).execute();
|
||||
} else if (cmd.getName().equalsIgnoreCase("sendtmail")) {
|
||||
result = new Cmd_TradeMail_Sendmail(args, sender, this).execute();
|
||||
} else if (cmd.getName().equalsIgnoreCase("accepttmail")) {
|
||||
result = new Cmd_TradeMail_Acceptmail(args, sender, this).execute();
|
||||
} else if (cmd.getName().equalsIgnoreCase("denytmail")) {
|
||||
result = new Cmd_TradeMail_Denymail(args, sender, this).execute();
|
||||
}
|
||||
|
||||
if (result.equals(EnumCmdExe.UNKNOWN)){
|
||||
result = new Cmd_Help(sender, args).execute();
|
||||
} else if (result.isError()){
|
||||
Messenger.sendErrorMsg(sender, result.getMsg(), result.getArgs());
|
||||
} else if (result != EnumCmdExe.SUCCESS) {
|
||||
Messenger.sendOtherMsg(sender, result.getMsg(), result.getArgs());
|
||||
}
|
||||
result.delArgs();
|
||||
return result.getReturn();
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
285
src/plugin.yml
Normal file
285
src/plugin.yml
Normal file
@@ -0,0 +1,285 @@
|
||||
name: Mailings
|
||||
version: 1.4.4
|
||||
main: me.Caesar2011.Mailings.Mailings
|
||||
author: Caesar2011
|
||||
softdepend: [BOSEconomy, Vault]
|
||||
|
||||
commands:
|
||||
reloadmail:
|
||||
description: Reload config
|
||||
usage: /reloadmail
|
||||
mail:
|
||||
description: Show help menu
|
||||
usage: /mail
|
||||
inbox:
|
||||
description: Show mail inbox
|
||||
usage: /inbox [player] [page]
|
||||
outbox:
|
||||
description: Show mail outbox
|
||||
usage: /outbox [player] [page]
|
||||
readmail:
|
||||
description: Read mail
|
||||
usage: /readmail <id>
|
||||
sendroundmail:
|
||||
description: Send mail to every player (also offline)
|
||||
usage: /sendroundmail <mess ag e>
|
||||
sendmail:
|
||||
description: Send mail to a target
|
||||
usage: /sendmail <target> <mess ag e>
|
||||
delmail:
|
||||
description: Delete mail
|
||||
usage: /delmail <id>
|
||||
|
||||
imail:
|
||||
description: Show help menu
|
||||
usage: /imail
|
||||
aliases: itemmail
|
||||
iinbox:
|
||||
description: Show item mail inbox
|
||||
usage: /iinbox [player] [page]
|
||||
aliases: iteminbox
|
||||
ioutbox:
|
||||
description: Show item mail outbox
|
||||
usage: /ioutbox [player] [page]
|
||||
aliases: itemoutbox
|
||||
readimail:
|
||||
description: Read item mail
|
||||
usage: /readimail <id>
|
||||
aliases: readitemmail
|
||||
sendimail:
|
||||
description: Send item mail to a target
|
||||
usage: /sendimail <target> <mess ag e>
|
||||
aliases: senditemmail
|
||||
delimail:
|
||||
description: Delete item mail
|
||||
usage: /delimail <id>
|
||||
aliases: delitemmail
|
||||
getimail:
|
||||
description: Get item from item mail
|
||||
usage: /getimail <id>
|
||||
aliases: getitemmail
|
||||
|
||||
tmail:
|
||||
description: Show help menu
|
||||
usage: /tmail
|
||||
aliases: trademail
|
||||
tinbox:
|
||||
description: Show trade mail inbox
|
||||
usage: /tinbox [player] [page]
|
||||
aliases: tradeinbox
|
||||
toutbox:
|
||||
description: Show trade mail outbox
|
||||
usage: /toutbox [player] [page]
|
||||
aliases: tradeoutbox
|
||||
readtmail:
|
||||
description: Read trade mail
|
||||
usage: /readtmail <id>
|
||||
aliases: readtrademail
|
||||
sendtmail:
|
||||
description: Send trade mail to a target
|
||||
usage: /sendtmail <target> <amount:id:damage> <mess ag e>
|
||||
aliases: sendtrademail
|
||||
accepttmail:
|
||||
description: Accept trade mail
|
||||
usage: /accepttmail <id> <Message>
|
||||
aliases: accepttrademail
|
||||
denytmail:
|
||||
description: Deny trade mail
|
||||
usage: /getimail <id> <Message>
|
||||
aliases: denytrademail
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
permissions:
|
||||
mailings.*:
|
||||
description: 'Access to all commands.'
|
||||
children:
|
||||
mailings.mail.*: true
|
||||
mailings.itemmail.*: true
|
||||
mailings.trademail.*: true
|
||||
mailings.reload: true
|
||||
default: op
|
||||
|
||||
|
||||
mailings.mail.*:
|
||||
description: 'Access to all mail commands.'
|
||||
children:
|
||||
mailings.mail.overridecooldown: true
|
||||
mailings.mail.inbox.*: true
|
||||
mailings.mail.outbox.*: true
|
||||
mailings.mail.send.*: true
|
||||
mailings.mail.delete.*: true
|
||||
mailings.mail.read.*: true
|
||||
|
||||
mailings.itemmail.*:
|
||||
description: 'Access to all item mail commands.'
|
||||
children:
|
||||
mailings.mail.overridecooldown: true
|
||||
mailings.itemmail.inbox.*: true
|
||||
mailings.itemmail.outbox.*: true
|
||||
mailings.itemmail.send.*: true
|
||||
mailings.itemmail.delete.*: true
|
||||
mailings.itemmail.read.*: true
|
||||
|
||||
mailings.trademail.*:
|
||||
description: 'Access to all trade mail commands.'
|
||||
children:
|
||||
mailings.mail.overridecooldown: true
|
||||
mailings.trademail.inbox.*: true
|
||||
mailings.trademail.outbox.*: true
|
||||
mailings.trademail.send.*: true
|
||||
mailings.trademail.delete.*: true
|
||||
mailings.trademail.read.*: true
|
||||
|
||||
|
||||
mailings.mail.overridecooldown:
|
||||
description: 'No cooldown when sending mails.'
|
||||
mailings.mail.inbox.*:
|
||||
description: 'Access to any mail inbox of any player.'
|
||||
children:
|
||||
mailings.mail.inbox.own: true
|
||||
mailings.mail.inbox.other: true
|
||||
mailings.mail.outbox.*:
|
||||
description: 'Access to any mail outbox of any player.'
|
||||
children:
|
||||
mailings.mail.outbox.own: true
|
||||
mailings.mail.outbox.other: true
|
||||
mailings.mail.send.*:
|
||||
description: 'Send single and circular mail.'
|
||||
children:
|
||||
mailings.mail.send.single: true
|
||||
mailings.mail.send.round: true
|
||||
mailings.mail.delete.*:
|
||||
description: 'Delete any mail.'
|
||||
children:
|
||||
mailings.mail.delete.own: true
|
||||
mailings.mail.delete.other: true
|
||||
mailings.mail.read.*:
|
||||
description: 'Read any mail.'
|
||||
children:
|
||||
mailings.mail.read.own: true
|
||||
mailings.mail.read.other: true
|
||||
|
||||
mailings.itemmail.overridecooldown:
|
||||
description: 'No cooldown when sending item mails.'
|
||||
mailings.itemmail.inbox.*:
|
||||
description: 'Access to any item mail inbox of any player.'
|
||||
children:
|
||||
mailings.itemmail.inbox.own: true
|
||||
mailings.itemmail.inbox.other: true
|
||||
mailings.itemmail.outbox.*:
|
||||
description: 'Access to any item mail outbox of any player.'
|
||||
children:
|
||||
mailings.itemmail.outbox.own: true
|
||||
mailings.itemmail.outbox.other: true
|
||||
mailings.itemmail.send.*:
|
||||
description: 'Send single and circular item mail.'
|
||||
children:
|
||||
mailings.itemmail.send.single: true
|
||||
mailings.itemmail.delete.*:
|
||||
description: 'Delete any item mail.'
|
||||
children:
|
||||
mailings.itemmail.delete.own: true
|
||||
mailings.itemmail.delete.other: true
|
||||
mailings.itemmail.read.*:
|
||||
description: 'Read any item mail.'
|
||||
children:
|
||||
mailings.itemmail.read.own: true
|
||||
mailings.itemmail.read.other: true
|
||||
|
||||
mailings.trademail.overridecooldown:
|
||||
description: 'No cooldown when sending trade mails.'
|
||||
mailings.trademail.inbox.*:
|
||||
description: 'Access to any trade mail inbox of any player.'
|
||||
children:
|
||||
mailings.trademail.inbox.own: true
|
||||
mailings.trademail.inbox.other: true
|
||||
mailings.trademail.outbox.*:
|
||||
description: 'Access to any trade mail outbox of any player.'
|
||||
children:
|
||||
mailings.trademail.outbox.own: true
|
||||
mailings.trademail.outbox.other: true
|
||||
mailings.trademail.send.*:
|
||||
description: 'Send single and circular trade mail.'
|
||||
children:
|
||||
mailings.trademail.send.single: true
|
||||
mailings.trademail.accept.*:
|
||||
description: 'Accept and deny any trade mail.'
|
||||
children:
|
||||
mailings.trademail.accept.own: true
|
||||
mailings.trademail.accept.other: true
|
||||
mailings.trademail.read.*:
|
||||
description: 'Read any trade mail.'
|
||||
children:
|
||||
mailings.trademail.read.own: true
|
||||
mailings.trademail.read.other: true
|
||||
|
||||
|
||||
mailings.mail.inbox.own:
|
||||
description: 'Access to own mail inbox.'
|
||||
mailings.mail.inbox.other:
|
||||
description: 'Access to mail inboxes of other players.'
|
||||
mailings.mail.outbox.own:
|
||||
description: 'Access to own mail outbox.'
|
||||
mailings.mail.outbox.other:
|
||||
description: 'Access to mail outboxes of other players.'
|
||||
mailings.mail.send.single:
|
||||
description: 'Send single mail.'
|
||||
mailings.mail.send.round:
|
||||
description: 'Send cirrcular mail.'
|
||||
mailings.mail.delete.own:
|
||||
description: 'Delete own mail.'
|
||||
mailings.mail.delete.other:
|
||||
description: 'Delete mail sended to other players.'
|
||||
mailings.mail.read.own:
|
||||
description: 'Read own mail.'
|
||||
mailings.mail.read.other:
|
||||
description: 'Read mail sended to other players.'
|
||||
|
||||
mailings.itemmail.inbox.own:
|
||||
description: 'Access to own item mail inbox.'
|
||||
mailings.itemmail.inbox.other:
|
||||
description: 'Access to item mail inboxes of other players.'
|
||||
mailings.itemmail.outbox.own:
|
||||
description: 'Access to own item mail outbox.'
|
||||
mailings.itemmail.outbox.other:
|
||||
description: 'Access to item mail outboxes of other players.'
|
||||
mailings.itemmail.send.single:
|
||||
description: 'Send single item mail.'
|
||||
mailings.itemmail.delete.own:
|
||||
description: 'Delete own item mail.'
|
||||
mailings.itemmail.delete.other:
|
||||
description: 'Delete item mail sended to other players.'
|
||||
mailings.itemmail.read.own:
|
||||
description: 'Read own item mail.'
|
||||
mailings.itemmail.read.other:
|
||||
description: 'Read item mail sended to other players.'
|
||||
|
||||
mailings.trademail.inbox.own:
|
||||
description: 'Access to own trade mail inbox.'
|
||||
mailings.trademail.inbox.other:
|
||||
description: 'Access to trade mail inboxes of other players.'
|
||||
mailings.trademail.outbox.own:
|
||||
description: 'Access to own trade mail outbox.'
|
||||
mailings.trademail.outbox.other:
|
||||
description: 'Access to trade mail outboxes of other players.'
|
||||
mailings.trademail.send.single:
|
||||
description: 'Send single trade mail.'
|
||||
mailings.trademail.accept.own:
|
||||
description: 'Accept and deny own trade mail.'
|
||||
mailings.trademail.accept.other:
|
||||
description: 'Accept and deny trade mail sended to other players.'
|
||||
mailings.trademail.read.own:
|
||||
description: 'Read own trade mail.'
|
||||
mailings.trademail.read.other:
|
||||
description: 'Read trade mail sended to other players.'
|
||||
|
||||
|
||||
|
||||
mailings.reload:
|
||||
description: 'Reload config and save mail files.'
|
||||
Reference in New Issue
Block a user