initial commit

This commit is contained in:
Sebastian Seedorf
2020-12-06 18:26:17 +01:00
commit aae3d62a41
44 changed files with 4553 additions and 0 deletions

17
.classpath Normal file
View 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
View 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
View 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>

View 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();
}
}
}

View File

@@ -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;
}
}

View File

@@ -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;
}
}

View 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;
}
}

View 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;
}
}

View File

@@ -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;
}
}

View 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);
}
}

View 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);
}
}
}

View 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;
}
}

View 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;
}
}

View 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;
}
}

View 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);
}
}

View File

@@ -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);
}
}

View 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;
}
}

View File

@@ -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;
}
}

View File

@@ -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);
}
}
}

View 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;
}
}

View 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;
}
}

View File

@@ -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;
}
}

View 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);
}
}

View 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;
}
}

View 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;
}
}

View 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.");
}
}
}

View 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();
}
}

View 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;
}
}
}

View 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;
}
}

View 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();
}
}

View 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);
}
}

View 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)");
}
}
}

View 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;
}
}

View 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
}
}

View 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);
}
}

View 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
}
}

View 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 + " ");
}
}

View 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;
}
}

View 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;
}
}

View 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;
}
}

View 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
}
}

View 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);
}
}

View 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
View 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.'