Merge branch 'master' of git://github.com/nossr50/mcMMO

This commit is contained in:
mcmmoPolish 2011-08-05 18:33:20 +02:00
commit cdcd93dc80
11 changed files with 344 additions and 209 deletions

View File

@ -1,5 +1,9 @@
Changelog:
#Versions without changelogs probably had very small misc fixes, like tweaks to the source code
Version 1.0.51
Converted many big numbers to much smaller numbers reducing memory usage
XP Bars
Version 1.0.50
New /xprate command for those with mcmmo.admin permissions!
mcMMO now uses Spout instead of BukkitContrib

View File

@ -83,7 +83,7 @@ public class Combat
PlayerProfile PPd = Users.getProfile(defender);
if(attacker != null && defender != null && LoadProperties.pvpxp)
{
if(System.currentTimeMillis() >= PPd.getRespawnATS() + 5000
if(System.currentTimeMillis() >= (PPd.getRespawnATS()*1000) + 5000
&& ((PPd.getLastLogin()+5)*1000) < System.currentTimeMillis()
&& defender.getHealth() >= 1)
{

View File

@ -1,10 +1,13 @@
package com.gmail.nossr50.contrib;
import java.util.HashMap;
import org.bukkit.ChatColor;
import org.bukkit.Location;
import org.bukkit.Material;
import org.bukkit.entity.Player;
import org.getspout.spoutapi.SpoutManager;
import org.getspout.spoutapi.gui.GenericTexture;
import org.getspout.spoutapi.player.SpoutPlayer;
import org.getspout.spoutapi.sound.SoundEffect;
import org.getspout.spoutapi.sound.SoundManager;
@ -16,6 +19,9 @@ import com.gmail.nossr50.datatypes.SkillType;
public class SpoutStuff
{
public static HashMap<Player, GenericTexture> xpbars = new HashMap<Player, GenericTexture>();
public static HashMap<Player, GenericTexture> xpicons = new HashMap<Player, GenericTexture>();
public static void playSoundForPlayer(SoundEffect effect, Player player, Location location)
{
//Contrib stuff
@ -256,4 +262,134 @@ public class SpoutStuff
else
return 5;
}
public static Integer getXpInc(int skillxp, int xptolevel)
{
double percentage = (double) skillxp/xptolevel;
double inc = 0.0039370078740157;
return (int) (percentage/inc);
}
public static void updateXpBar(Player player)
{
PlayerProfile PP = Users.getProfile(player);
if(PP.getLastGained() != null)
{
int num = getXpInc(PP.getSkillXpLevel(PP.getLastGained()), PP.getXpToLevel(PP.getLastGained()));
xpbars.get(player).setUrl(getUrlBar(num)).setDirty(true);
xpicons.get(player).setUrl(getUrlIcon(PP.getLastGained())).setDirty(true);
((SpoutPlayer)player).getMainScreen().setDirty(true);
}
}
public static void updateXpBarFill(Player player)
{
PlayerProfile PP = Users.getProfile(player);
if(PP.getLastGained() != null)
{
if(PP.getXpBarInc() < 254)
xpbars.get(player).setUrl(getUrlBar(PP.getXpBarInc()+1)).setDirty(true);
else
xpbars.get(player).setUrl(getUrlBar(0)).setDirty(true);
PP.setXpBarInc(PP.getXpBarInc()+1);
xpicons.get(player).setUrl(getUrlIcon(PP.getLastGained())).setDirty(true);
((SpoutPlayer)player).getMainScreen().setDirty(true);
}
}
public static String getUrlBar(Integer number)
{
if(number.toString().toCharArray().length == 1)
{
return "http://dl.dropbox.com/u/18212134/xpbar/xpbar_inc00"+number+".png";
//return "file:///C:/Users/Rob/Dropbox/Public/xpbar/xpbar_inc00"+number+".png";
} else if (number.toString().toCharArray().length == 2)
{
return "http://dl.dropbox.com/u/18212134/xpbar/xpbar_inc0"+number+".png";
//return "file:///C:/Users/Rob/Dropbox/Public/xpbar/xpbar_inc0"+number+".png";
} else {
return "http://dl.dropbox.com/u/18212134/xpbar/xpbar_inc"+number+".png";
//return "file:///C:/Users/Rob/Dropbox/Public/xpbar/xpbar_inc"+number+".png";
}
}
public static String getUrlIcon(SkillType skillType)
{
String url = "http://dl.dropbox.com/u/18212134/xpbar/";
switch(skillType)
{
case SORCERY:
{
url+="Sorcery";
break;
}
case TAMING:
{
url+="Taming";
break;
}
case MINING:
{
url+="Mining";
break;
}
case WOODCUTTING:
{
url+="Woodcutting";
break;
}
case REPAIR:
{
url+="Repair";
break;
}
case HERBALISM:
{
url+="Herbalism";
break;
}
case ACROBATICS:
{
url+="Acrobatics";
break;
}
case SWORDS:
{
url+="Swords";
break;
}
case ARCHERY:
{
url+="Archery";
break;
}
case UNARMED:
{
url+="Unarmed";
break;
}
case EXCAVATION:
{
url+="Excavation";
break;
}
case AXES:
{
url+="Axes";
break;
}
}
url+=".png";
return url;
}
public static boolean shouldBeFilled(PlayerProfile PP)
{
return PP.getXpBarInc() < getXpInc(PP.getSkillXpLevel(PP.getLastGained()), PP.getXpToLevel(PP.getLastGained()));
}
}

View File

@ -15,6 +15,7 @@ import org.bukkit.entity.Player;
import org.bukkit.plugin.Plugin;
import com.gmail.nossr50.config.LoadProperties;
import com.gmail.nossr50.contrib.SpoutStuff;
import com.gmail.nossr50.m;
import com.gmail.nossr50.mcMMO;
@ -35,12 +36,14 @@ public class PlayerProfile
//TIMESTAMPS
//ATS = (Time of) Activation Time Stamp
//DATS = (Time of) Deactivation Time Stamp
private long recentlyHurt = 0, archeryShotATS = 0, berserkATS = 0, berserkDATS = 0, gigaDrillBreakerATS = 0, gigaDrillBreakerDATS = 0,
private int recentlyHurt = 0, archeryShotATS = 0, berserkATS = 0, berserkDATS = 0, gigaDrillBreakerATS = 0, gigaDrillBreakerDATS = 0,
respawnATS = 0, mySpawnATS = 0, greenTerraATS = 0, greenTerraDATS = 0, superBreakerATS = 0, superBreakerDATS = 0, serratedStrikesATS = 0, serratedStrikesDATS = 0, treeFellerATS = 0, treeFellerDATS = 0,
skullSplitterATS = 0, skullSplitterDATS = 0, hoePreparationATS = 0, axePreparationATS = 0, pickaxePreparationATS = 0, fistsPreparationATS = 0, shovelPreparationATS = 0, swordsPreparationATS = 0;
private SkillType lastgained = null;
//MySQL STUFF
private int lastlogin=0, userid = 0, bleedticks = 0;
private int xpbarinc=0, lastlogin=0, userid = 0, bleedticks = 0;
//MAGIC STUFF
private int mana = 0;
@ -143,13 +146,13 @@ public class PlayerProfile
}
else
{
superBreakerDATS = Long.valueOf(cooldowns.get(1).get(0)) * 1000;
treeFellerDATS = Long.valueOf(cooldowns.get(1).get(1)) * 1000;
berserkDATS = Long.valueOf(cooldowns.get(1).get(2)) * 1000;
greenTerraDATS = Long.valueOf(cooldowns.get(1).get(3)) * 1000;
gigaDrillBreakerDATS = Long.valueOf(cooldowns.get(1).get(4)) * 1000;
serratedStrikesDATS = Long.valueOf(cooldowns.get(1).get(5)) * 1000;
skullSplitterDATS = Long.valueOf(cooldowns.get(1).get(6)) * 1000;
superBreakerDATS = Integer.valueOf(cooldowns.get(1).get(0));
treeFellerDATS = Integer.valueOf(cooldowns.get(1).get(1));
berserkDATS = Integer.valueOf(cooldowns.get(1).get(2));
greenTerraDATS = Integer.valueOf(cooldowns.get(1).get(3));
gigaDrillBreakerDATS = Integer.valueOf(cooldowns.get(1).get(4));
serratedStrikesDATS = Integer.valueOf(cooldowns.get(1).get(5));
skullSplitterDATS = Integer.valueOf(cooldowns.get(1).get(6));
}
HashMap<Integer, ArrayList<String>> stats = mcMMO.database.Read("SELECT taming, mining, repair, woodcutting, unarmed, herbalism, excavation, archery, swords, axes, acrobatics FROM "+LoadProperties.MySQLtablePrefix+"skills WHERE user_id = " + id);
skills.put(SkillType.TAMING, Integer.valueOf(stats.get(1).get(0)));
@ -261,19 +264,19 @@ public class PlayerProfile
if(character.length > 25 && m.isInt(character[25]))
skillsXp.put(SkillType.TAMING, Integer.valueOf(character[25]));
if(character.length > 26)
berserkDATS = Long.valueOf(character[26]) * 1000;
berserkDATS = Integer.valueOf(character[26]);
if(character.length > 27)
gigaDrillBreakerDATS = Long.valueOf(character[27]) * 1000;
gigaDrillBreakerDATS = Integer.valueOf(character[27]);
if(character.length > 28)
treeFellerDATS = Long.valueOf(character[28]) * 1000;
treeFellerDATS = Integer.valueOf(character[28]);
if(character.length > 29)
greenTerraDATS = Long.valueOf(character[29]) * 1000;
greenTerraDATS = Integer.valueOf(character[29]);
if(character.length > 30)
serratedStrikesDATS = Long.valueOf(character[30]) * 1000;
serratedStrikesDATS = Integer.valueOf(character[30]);
if(character.length > 31)
skullSplitterDATS = Long.valueOf(character[31]) * 1000;
skullSplitterDATS = Integer.valueOf(character[31]);
if(character.length > 32)
superBreakerDATS = Long.valueOf(character[32]) * 1000;
superBreakerDATS = Integer.valueOf(character[32]);
in.close();
return true;
}
@ -295,13 +298,13 @@ public class PlayerProfile
mcMMO.database.Write("UPDATE "+LoadProperties.MySQLtablePrefix+"users SET party = '"+this.party+"' WHERE id = " +this.userid);
mcMMO.database.Write("UPDATE "+LoadProperties.MySQLtablePrefix+"spawn SET world = '" + this.myspawnworld + "', x = " +getX()+", y = "+getY()+", z = "+getZ()+" WHERE user_id = "+this.userid);
mcMMO.database.Write("UPDATE "+LoadProperties.MySQLtablePrefix+"cooldowns SET "
+" mining = "+(superBreakerDATS/1000)
+", woodcutting = "+(treeFellerDATS/1000)
+", unarmed = "+(berserkDATS/1000)
+", herbalism = "+(greenTerraDATS/1000)
+", excavation = "+(gigaDrillBreakerDATS/1000)
+", swords = " +(serratedStrikesDATS/1000)
+", axes = "+(skullSplitterDATS/1000)
+" mining = "+(superBreakerDATS)
+", woodcutting = "+(treeFellerDATS)
+", unarmed = "+(berserkDATS)
+", herbalism = "+(greenTerraDATS)
+", excavation = "+(gigaDrillBreakerDATS)
+", swords = " +(serratedStrikesDATS)
+", axes = "+(skullSplitterDATS)
+" WHERE user_id = "+this.userid);
mcMMO.database.Write("UPDATE "+LoadProperties.MySQLtablePrefix+"skills SET "
+" taming = "+skills.get(SkillType.TAMING)
@ -379,13 +382,13 @@ public class PlayerProfile
writer.append(skillsXp.get(SkillType.TAMING) + ":");
//Need to store the DATS of abilities nao
//Berserk, Gigadrillbreaker, Tree Feller, Green Terra, Serrated Strikes, Skull Splitter, Super Breaker
writer.append(String.valueOf(berserkDATS/1000)+":");
writer.append(String.valueOf(gigaDrillBreakerDATS/1000)+":");
writer.append(String.valueOf(treeFellerDATS/1000)+":");
writer.append(String.valueOf(greenTerraDATS/1000)+":");
writer.append(String.valueOf(serratedStrikesDATS/1000)+":");
writer.append(String.valueOf(skullSplitterDATS/1000)+":");
writer.append(String.valueOf(superBreakerDATS/1000)+":");
writer.append(String.valueOf(berserkDATS)+":");
writer.append(String.valueOf(gigaDrillBreakerDATS)+":");
writer.append(String.valueOf(treeFellerDATS)+":");
writer.append(String.valueOf(greenTerraDATS)+":");
writer.append(String.valueOf(serratedStrikesDATS)+":");
writer.append(String.valueOf(skullSplitterDATS)+":");
writer.append(String.valueOf(superBreakerDATS)+":");
writer.append("\r\n");
}
}
@ -449,6 +452,22 @@ public class PlayerProfile
log.log(Level.SEVERE, "Exception while writing to " + location + " (Are you sure you formatted it correctly?)", e);
}
}
public int getXpBarInc()
{
return xpbarinc;
}
public void setXpBarInc(int newvalue)
{
xpbarinc = newvalue;
}
public void setLastGained(SkillType newvalue)
{
lastgained = newvalue;
}
public SkillType getLastGained()
{
return lastgained;
}
public boolean getAdminChatMode() {return adminChatMode;}
public boolean getPartyChatMode() {return partyChatMode;}
@ -549,8 +568,9 @@ public class PlayerProfile
public long getMySpawnATS(){
return mySpawnATS;
}
public void setMySpawnATS(long newvalue){
mySpawnATS = newvalue;
public void setMySpawnATS(long newvalue)
{
mySpawnATS = (int) (newvalue/1000);
}
public void decreaseBleedTicks()
{
@ -569,13 +589,13 @@ public class PlayerProfile
* EXPLOIT PREVENTION
*/
public long getRespawnATS() {return respawnATS;}
public void setRespawnATS(long newvalue) {respawnATS = newvalue;}
public void setRespawnATS(long newvalue) {respawnATS = (int) (newvalue/1000);}
/*
* ARCHERY NERF STUFF
*/
public long getArcheryShotATS() {return archeryShotATS;}
public void setArcheryShotATS(long newvalue) {archeryShotATS = newvalue;}
public void setArcheryShotATS(long newvalue) {archeryShotATS = (int) (newvalue/1000);}
/*
* HOE PREPARATION
@ -590,7 +610,7 @@ public class PlayerProfile
return hoePreparationATS;
}
public void setHoePreparationATS(long newvalue){
hoePreparationATS = newvalue;
hoePreparationATS = (int) (newvalue/1000);
}
/*
@ -606,7 +626,7 @@ public class PlayerProfile
return swordsPreparationATS;
}
public void setSwordsPreparationATS(long newvalue){
swordsPreparationATS = newvalue;
swordsPreparationATS = (int) (newvalue/1000);
}
/*
* SHOVEL PREPARATION
@ -621,7 +641,7 @@ public class PlayerProfile
return shovelPreparationATS;
}
public void setShovelPreparationATS(long newvalue){
shovelPreparationATS = newvalue;
shovelPreparationATS = (int) (newvalue/1000);
}
/*
* FISTS PREPARATION
@ -636,7 +656,7 @@ public class PlayerProfile
return fistsPreparationATS;
}
public void setFistsPreparationATS(long newvalue){
fistsPreparationATS = newvalue;
fistsPreparationATS = (int) (newvalue/1000);
}
/*
* AXE PREPARATION
@ -651,7 +671,7 @@ public class PlayerProfile
return axePreparationATS;
}
public void setAxePreparationATS(long newvalue){
axePreparationATS = newvalue;
axePreparationATS = (int) (newvalue/1000);
}
/*
* PICKAXE PREPARATION
@ -666,7 +686,7 @@ public class PlayerProfile
return pickaxePreparationATS;
}
public void setPickaxePreparationATS(long newvalue){
pickaxePreparationATS = newvalue;
pickaxePreparationATS = (int) (newvalue/1000);
}
/*
* GREEN TERRA MODE
@ -683,11 +703,11 @@ public class PlayerProfile
}
public long getGreenTerraActivatedTimeStamp() {return greenTerraATS;}
public void setGreenTerraActivatedTimeStamp(Long newvalue){
greenTerraATS = newvalue;
greenTerraATS = (int) (newvalue/1000);
}
public long getGreenTerraDeactivatedTimeStamp() {return greenTerraDATS;}
public void setGreenTerraDeactivatedTimeStamp(Long newvalue){
greenTerraDATS = newvalue;
greenTerraDATS = (int) (newvalue/1000);
save();
}
/*
@ -705,11 +725,11 @@ public class PlayerProfile
}
public long getBerserkActivatedTimeStamp() {return berserkATS;}
public void setBerserkActivatedTimeStamp(Long newvalue){
berserkATS = newvalue;
berserkATS = (int) (newvalue/1000);
}
public long getBerserkDeactivatedTimeStamp() {return berserkDATS;}
public void setBerserkDeactivatedTimeStamp(Long newvalue){
berserkDATS = newvalue;
berserkDATS = (int) (newvalue/1000);
save();
}
/*
@ -727,11 +747,11 @@ public class PlayerProfile
}
public long getSkullSplitterActivatedTimeStamp() {return skullSplitterATS;}
public void setSkullSplitterActivatedTimeStamp(Long newvalue){
skullSplitterATS = newvalue;
skullSplitterATS = (int) (newvalue/1000);
}
public long getSkullSplitterDeactivatedTimeStamp() {return skullSplitterDATS;}
public void setSkullSplitterDeactivatedTimeStamp(Long newvalue){
skullSplitterDATS = newvalue;
skullSplitterDATS = (int) (newvalue/1000);
save();
}
/*
@ -749,11 +769,11 @@ public class PlayerProfile
}
public long getSerratedStrikesActivatedTimeStamp() {return serratedStrikesATS;}
public void setSerratedStrikesActivatedTimeStamp(Long newvalue){
serratedStrikesATS = newvalue;
serratedStrikesATS = (int) (newvalue/1000);
}
public long getSerratedStrikesDeactivatedTimeStamp() {return serratedStrikesDATS;}
public void setSerratedStrikesDeactivatedTimeStamp(Long newvalue){
serratedStrikesDATS = newvalue;
serratedStrikesDATS = (int) (newvalue/1000);
save();
}
/*
@ -771,11 +791,11 @@ public class PlayerProfile
}
public long getGigaDrillBreakerActivatedTimeStamp() {return gigaDrillBreakerATS;}
public void setGigaDrillBreakerActivatedTimeStamp(Long newvalue){
gigaDrillBreakerATS = newvalue;
gigaDrillBreakerATS = (int) (newvalue/1000);
}
public long getGigaDrillBreakerDeactivatedTimeStamp() {return gigaDrillBreakerDATS;}
public void setGigaDrillBreakerDeactivatedTimeStamp(Long newvalue){
gigaDrillBreakerDATS = newvalue;
gigaDrillBreakerDATS = (int) (newvalue/1000);
save();
}
/*
@ -793,11 +813,11 @@ public class PlayerProfile
}
public long getTreeFellerActivatedTimeStamp() {return treeFellerATS;}
public void setTreeFellerActivatedTimeStamp(Long newvalue){
treeFellerATS = newvalue;
treeFellerATS = (int) (newvalue/1000);
}
public long getTreeFellerDeactivatedTimeStamp() {return treeFellerDATS;}
public void setTreeFellerDeactivatedTimeStamp(Long newvalue){
treeFellerDATS = newvalue;
treeFellerDATS = (int) (newvalue/1000);
save();
}
/*
@ -815,18 +835,18 @@ public class PlayerProfile
}
public long getSuperBreakerActivatedTimeStamp() {return superBreakerATS;}
public void setSuperBreakerActivatedTimeStamp(Long newvalue){
superBreakerATS = newvalue;
superBreakerATS = (int) (newvalue/1000);
}
public long getSuperBreakerDeactivatedTimeStamp() {return superBreakerDATS;}
public void setSuperBreakerDeactivatedTimeStamp(Long newvalue){
superBreakerDATS = newvalue;
superBreakerDATS = (int) (newvalue/1000);
save();
}
public long getRecentlyHurt(){
return recentlyHurt;
}
public void setRecentlyHurt(long newvalue){
recentlyHurt = newvalue;
recentlyHurt = (int) (newvalue/1000);
}
public void skillUp(SkillType skillType, int newvalue)
{
@ -863,6 +883,14 @@ public class PlayerProfile
skillsXp.put(SkillType.SORCERY, skillsXp.get(SkillType.SORCERY)+newvalue);
} else {
skillsXp.put(skillType, skillsXp.get(skillType)+newvalue);
SkillType prevLastGained = lastgained;
lastgained = skillType;
//In case of an xp bar switch
if(prevLastGained != skillType || prevLastGained == null)
xpbarinc = SpoutStuff.getXpInc(this.getSkillXpLevel(lastgained), this.getXpToLevel(lastgained));
}
//save();
}
@ -885,7 +913,7 @@ public class PlayerProfile
} else {
skillsXp.put(skillType, skillsXp.get(skillType)-newvalue);
}
save();
//save();
}
public void acceptInvite()
{

View File

@ -53,6 +53,7 @@ public class mcBlockListener extends BlockListener {
else if(block.getTypeId() == 17 || block.getTypeId() == 39 || block.getTypeId() == 40 || block.getTypeId() == 91 || block.getTypeId() == 86)
plugin.misc.blockWatchList.add(block);
}
if(block.getTypeId() == 42 && LoadProperties.anvilmessages)
{
PlayerProfile PP = Users.getProfile(player);

View File

@ -25,6 +25,7 @@ import com.gmail.nossr50.m;
import com.gmail.nossr50.mcMMO;
import com.gmail.nossr50.mcPermissions;
import com.gmail.nossr50.config.LoadProperties;
import com.gmail.nossr50.contrib.SpoutStuff;
import com.gmail.nossr50.datatypes.PlayerProfile;
import com.gmail.nossr50.datatypes.SkillType;
import com.gmail.nossr50.locale.mcLocale;
@ -89,6 +90,14 @@ public class mcPlayerListener extends PlayerListener
//Discard the PlayerProfile object
Users.removeUser(event.getPlayer());
if(LoadProperties.spoutEnabled)
{
if(SpoutStuff.xpbars.containsKey(event.getPlayer()))
SpoutStuff.xpbars.remove(event.getPlayer());
if(SpoutStuff.xpicons.containsKey(event.getPlayer()))
SpoutStuff.xpicons.remove(event.getPlayer());
}
}
public void onPlayerJoin(PlayerJoinEvent event)
@ -120,7 +129,7 @@ public class mcPlayerListener extends PlayerListener
//Archery Nerf
if(player.getItemInHand().getTypeId() == 261 && LoadProperties.archeryFireRateLimit)
{
if(System.currentTimeMillis() < PP.getArcheryShotATS() + LoadProperties.archeryLimit)
if(System.currentTimeMillis() < (PP.getArcheryShotATS()*1000) + LoadProperties.archeryLimit)
{
/*
if(m.hasArrows(player))

View File

@ -0,0 +1,53 @@
package com.gmail.nossr50.listeners;
import org.getspout.spoutapi.event.spout.SpoutCraftEnableEvent;
import org.getspout.spoutapi.event.spout.SpoutListener;
import org.getspout.spoutapi.gui.GenericTexture;
import com.gmail.nossr50.mcMMO;
import com.gmail.nossr50.contrib.SpoutStuff;
public class mcSpoutListener extends SpoutListener
{
mcMMO plugin = null;
public mcSpoutListener(mcMMO pluginx)
{
plugin = pluginx;
}
public void onSpoutCraftEnable(SpoutCraftEnableEvent event)
{
if(event.getPlayer().isSpoutCraftEnabled())
{
GenericTexture xpbar = new GenericTexture();
GenericTexture xpicon = new GenericTexture();
xpicon.setUrl("http://dl.dropbox.com/u/18212134/xpbar/icon.png");
xpicon.setHeight(16).setWidth(32).setX(93).setY(2);
xpbar.setUrl("http://dl.dropbox.com/u/18212134/xpbar/xpbar_inc000.png");
xpbar.setX(110).setY(6).setHeight(8).setWidth(256);
SpoutStuff.xpbars.put(event.getPlayer(), xpbar);
SpoutStuff.xpicons.put(event.getPlayer(), xpicon);
event.getPlayer().getMainScreen().attachWidget(SpoutStuff.xpbars.get(event.getPlayer()));
event.getPlayer().getMainScreen().attachWidget(SpoutStuff.xpicons.get(event.getPlayer()));
event.getPlayer().getMainScreen().setDirty(true);
}
}
/*
public void onServerTick(ServerTickEvent event)
{
for(Player x : SpoutStuff.xpbars.keySet())
{
PlayerProfile PP = Users.getProfile(x);
if(PP.getLastGained() != null)
{
if(SpoutStuff.shouldBeFilled(PP))
SpoutStuff.updateXpBarFill(x);
}
}
}
*/
}

View File

@ -7,6 +7,7 @@ import com.gmail.nossr50.config.*;
import com.gmail.nossr50.listeners.mcBlockListener;
import com.gmail.nossr50.listeners.mcEntityListener;
import com.gmail.nossr50.listeners.mcPlayerListener;
import com.gmail.nossr50.listeners.mcSpoutListener;
import com.gmail.nossr50.locale.mcLocale;
import com.gmail.nossr50.party.Party;
import com.gmail.nossr50.skills.*;
@ -66,9 +67,12 @@ public class mcMMO extends JavaPlugin
File file = new File(maindirectory + File.separator + "config.yml");
static File versionFile = new File(maindirectory + File.separator + "VERSION");
public static final Logger log = Logger.getLogger("Minecraft");
private final mcPlayerListener playerListener = new mcPlayerListener(this);
private final mcBlockListener blockListener = new mcBlockListener(this);
private final mcEntityListener entityListener = new mcEntityListener(this);
private final mcSpoutListener spoutListener = new mcSpoutListener(this);
public boolean xpevent = false;
int oldrate = 1;
public static mcPermissions permissionHandler = new mcPermissions();
@ -80,7 +84,6 @@ public class mcMMO extends JavaPlugin
public static Database database = null;
public Mob mob = new Mob();
public Misc misc = new Misc(this);
public Sorcery sorcery = new Sorcery(this);
//Config file stuff
LoadProperties config = new LoadProperties();
@ -145,6 +148,12 @@ public class mcMMO extends JavaPlugin
pm.registerEvent(Event.Type.ENTITY_DEATH, entityListener, Priority.Normal, this);
pm.registerEvent(Event.Type.ENTITY_DAMAGE, entityListener, Priority.Highest, this);
pm.registerEvent(Event.Type.CREATURE_SPAWN, entityListener, Priority.Normal, this);
//Spout Stuff
if(LoadProperties.spoutEnabled)
{
pm.registerEvent(Event.Type.CUSTOM_EVENT, spoutListener, Priority.Normal, this);
}
PluginDescriptionFile pdfFile = this.getDescription();
mcPermissions.initialize(getServer());

View File

@ -61,45 +61,46 @@ public class Skills {
public static void watchCooldowns(Player player){
PlayerProfile PP = Users.getProfile(player);
if(!PP.getGreenTerraInformed() && System.currentTimeMillis() - PP.getGreenTerraDeactivatedTimeStamp() >= (LoadProperties.greenTerraCooldown * 1000)){
if(!PP.getGreenTerraInformed() && System.currentTimeMillis() - (PP.getGreenTerraDeactivatedTimeStamp()*1000) >= (LoadProperties.greenTerraCooldown * 1000)){
PP.setGreenTerraInformed(true);
player.sendMessage(mcLocale.getString("Skills.YourGreenTerra"));
}
if(!PP.getTreeFellerInformed() && System.currentTimeMillis() - PP.getTreeFellerDeactivatedTimeStamp() >= (LoadProperties.greenTerraCooldown * 1000)){
if(!PP.getTreeFellerInformed() && System.currentTimeMillis() - (PP.getTreeFellerDeactivatedTimeStamp()*1000) >= (LoadProperties.greenTerraCooldown * 1000)){
PP.setTreeFellerInformed(true);
player.sendMessage(mcLocale.getString("Skills.YourTreeFeller"));
}
if(!PP.getSuperBreakerInformed() && System.currentTimeMillis() - PP.getSuperBreakerDeactivatedTimeStamp() >= (LoadProperties.superBreakerCooldown * 1000)){
if(!PP.getSuperBreakerInformed() && System.currentTimeMillis() - (PP.getSuperBreakerDeactivatedTimeStamp()*1000) >= (LoadProperties.superBreakerCooldown * 1000)){
PP.setSuperBreakerInformed(true);
player.sendMessage(mcLocale.getString("Skills.YourSuperBreaker"));
}
if(!PP.getSerratedStrikesInformed() && System.currentTimeMillis() - PP.getSerratedStrikesDeactivatedTimeStamp() >= (LoadProperties.serratedStrikeCooldown * 1000)){
if(!PP.getSerratedStrikesInformed() && System.currentTimeMillis() - (PP.getSerratedStrikesDeactivatedTimeStamp()*1000) >= (LoadProperties.serratedStrikeCooldown * 1000)){
PP.setSerratedStrikesInformed(true);
player.sendMessage(mcLocale.getString("Skills.YourSerratedStrikes"));
}
if(!PP.getBerserkInformed() && System.currentTimeMillis() - PP.getBerserkDeactivatedTimeStamp() >= (LoadProperties.berserkCooldown * 1000)){
if(!PP.getBerserkInformed() && System.currentTimeMillis() - (PP.getBerserkDeactivatedTimeStamp()*1000) >= (LoadProperties.berserkCooldown * 1000)){
PP.setBerserkInformed(true);
player.sendMessage(mcLocale.getString("Skills.YourBerserk"));
}
if(!PP.getSkullSplitterInformed() && System.currentTimeMillis() - PP.getSkullSplitterDeactivatedTimeStamp() >= (LoadProperties.skullSplitterCooldown * 1000)){
if(!PP.getSkullSplitterInformed() && System.currentTimeMillis() - (PP.getSkullSplitterDeactivatedTimeStamp()*1000) >= (LoadProperties.skullSplitterCooldown * 1000)){
PP.setSkullSplitterInformed(true);
player.sendMessage(mcLocale.getString("Skills.YourSkullSplitter"));
}
if(!PP.getGigaDrillBreakerInformed() && System.currentTimeMillis() - PP.getGigaDrillBreakerDeactivatedTimeStamp() >= (LoadProperties.gigaDrillBreakerCooldown * 1000)){
if(!PP.getGigaDrillBreakerInformed() && System.currentTimeMillis() - (PP.getGigaDrillBreakerDeactivatedTimeStamp()*1000) >= (LoadProperties.gigaDrillBreakerCooldown * 1000)){
PP.setGigaDrillBreakerInformed(true);
player.sendMessage(mcLocale.getString("Skills.YourGigaDrillBreaker"));
}
}
public static void hoeReadinessCheck(Player player){
public static void hoeReadinessCheck(Player player)
{
PlayerProfile PP = Users.getProfile(player);
if(mcPermissions.getInstance().herbalismAbility(player) && m.isHoe(player.getItemInHand()) && !PP.getHoePreparationMode()){
if(!PP.getGreenTerraMode() && !cooldownOver(player, PP.getGreenTerraDeactivatedTimeStamp(), LoadProperties.greenTerraCooldown)){
if(!PP.getGreenTerraMode() && !cooldownOver(player, (PP.getGreenTerraDeactivatedTimeStamp()*1000), LoadProperties.greenTerraCooldown)){
player.sendMessage(mcLocale.getString("Skills.TooTired")
+ChatColor.YELLOW+" ("+calculateTimeLeft(player, PP.getGreenTerraDeactivatedTimeStamp(), LoadProperties.greenTerraCooldown)+"s)");
+ChatColor.YELLOW+" ("+calculateTimeLeft(player, (PP.getGreenTerraDeactivatedTimeStamp()*1000), LoadProperties.greenTerraCooldown)+"s)");
return;
}
player.sendMessage(mcLocale.getString("Skills.ReadyHoe"));
PP.setHoePreparationATS(System.currentTimeMillis());
PP.setHoePreparationATS(System.currentTimeMillis()/1000);
PP.setHoePreparationMode(true);
}
}
@ -107,27 +108,27 @@ public class Skills {
PlayerProfile PP = Users.getProfile(player);
if(PP != null)
{
if(PP.getHoePreparationMode() && System.currentTimeMillis() - PP.getHoePreparationATS() >= 4000){
if(PP.getHoePreparationMode() && System.currentTimeMillis() - (PP.getHoePreparationATS()*1000) >= 4000){
PP.setHoePreparationMode(false);
player.sendMessage(mcLocale.getString("Skills.LowerHoe"));
}
if(PP.getAxePreparationMode() && System.currentTimeMillis() - PP.getAxePreparationATS() >= 4000){
if(PP.getAxePreparationMode() && System.currentTimeMillis() - (PP.getAxePreparationATS()*1000) >= 4000){
PP.setAxePreparationMode(false);
player.sendMessage(mcLocale.getString("Skills.LowerAxe"));
}
if(PP.getPickaxePreparationMode() && System.currentTimeMillis() - PP.getPickaxePreparationATS() >= 4000){
if(PP.getPickaxePreparationMode() && System.currentTimeMillis() - (PP.getPickaxePreparationATS()*1000) >= 4000){
PP.setPickaxePreparationMode(false);
player.sendMessage(mcLocale.getString("Skills.LowerPickAxe"));
}
if(PP.getSwordsPreparationMode() && System.currentTimeMillis() - PP.getSwordsPreparationATS() >= 4000){
if(PP.getSwordsPreparationMode() && System.currentTimeMillis() - (PP.getSwordsPreparationATS()*1000) >= 4000){
PP.setSwordsPreparationMode(false);
player.sendMessage(mcLocale.getString("Skills.LowerSword"));
}
if(PP.getFistsPreparationMode() && System.currentTimeMillis() - PP.getFistsPreparationATS() >= 4000){
if(PP.getFistsPreparationMode() && System.currentTimeMillis() - (PP.getFistsPreparationATS()*1000) >= 4000){
PP.setFistsPreparationMode(false);
player.sendMessage(mcLocale.getString("Skills.LowerFists"));
}
if(PP.getShovelPreparationMode() && System.currentTimeMillis() - PP.getShovelPreparationATS() >= 4000){
if(PP.getShovelPreparationMode() && System.currentTimeMillis() - (PP.getShovelPreparationATS()*1000) >= 4000){
PP.setShovelPreparationMode(false);
player.sendMessage(mcLocale.getString("Skills.LowerShovel"));
}
@ -136,7 +137,7 @@ public class Skills {
* HERBALISM ABILITY
*/
if(mcPermissions.getInstance().herbalismAbility(player)){
if(PP.getGreenTerraMode() && PP.getGreenTerraDeactivatedTimeStamp() <= System.currentTimeMillis()){
if(PP.getGreenTerraMode() && (PP.getGreenTerraDeactivatedTimeStamp()*1000) <= System.currentTimeMillis()){
PP.setGreenTerraMode(false);
PP.setGreenTerraInformed(false);
player.sendMessage(mcLocale.getString("Skills.GreenTerraOff"));
@ -146,7 +147,7 @@ public class Skills {
* AXES ABILITY
*/
if(mcPermissions.getInstance().axesAbility(player)){
if(PP.getSkullSplitterMode() && PP.getSkullSplitterDeactivatedTimeStamp() <= System.currentTimeMillis()){
if(PP.getSkullSplitterMode() && (PP.getSkullSplitterDeactivatedTimeStamp()*1000) <= System.currentTimeMillis()){
PP.setSkullSplitterMode(false);
PP.setSkullSplitterInformed(false);
player.sendMessage(mcLocale.getString("Skills.SkullSplitterOff"));
@ -156,7 +157,7 @@ public class Skills {
* WOODCUTTING ABILITY
*/
if(mcPermissions.getInstance().woodCuttingAbility(player)){
if(PP.getTreeFellerMode() && PP.getTreeFellerDeactivatedTimeStamp() <= System.currentTimeMillis()){
if(PP.getTreeFellerMode() && (PP.getTreeFellerDeactivatedTimeStamp()*1000) <= System.currentTimeMillis()){
PP.setTreeFellerMode(false);
PP.setTreeFellerInformed(false);
player.sendMessage(mcLocale.getString("Skills.TreeFellerOff"));
@ -166,7 +167,7 @@ public class Skills {
* MINING ABILITY
*/
if(mcPermissions.getInstance().miningAbility(player)){
if(PP.getSuperBreakerMode() && PP.getSuperBreakerDeactivatedTimeStamp() <= System.currentTimeMillis()){
if(PP.getSuperBreakerMode() && (PP.getSuperBreakerDeactivatedTimeStamp()*1000) <= System.currentTimeMillis()){
PP.setSuperBreakerMode(false);
PP.setSuperBreakerInformed(false);
player.sendMessage(mcLocale.getString("Skills.SuperBreakerOff"));
@ -176,7 +177,7 @@ public class Skills {
* EXCAVATION ABILITY
*/
if(mcPermissions.getInstance().excavationAbility(player)){
if(PP.getGigaDrillBreakerMode() && PP.getGigaDrillBreakerDeactivatedTimeStamp() <= System.currentTimeMillis()){
if(PP.getGigaDrillBreakerMode() && (PP.getGigaDrillBreakerDeactivatedTimeStamp()*1000) <= System.currentTimeMillis()){
PP.setGigaDrillBreakerMode(false);
PP.setGigaDrillBreakerInformed(false);
player.sendMessage(mcLocale.getString("Skills.GigaDrillBreakerOff"));
@ -186,7 +187,7 @@ public class Skills {
* SWORDS ABILITY
*/
if(mcPermissions.getInstance().swordsAbility(player)){
if(PP.getSerratedStrikesMode() && PP.getSerratedStrikesDeactivatedTimeStamp() <= System.currentTimeMillis()){
if(PP.getSerratedStrikesMode() && (PP.getSerratedStrikesDeactivatedTimeStamp()*1000) <= System.currentTimeMillis()){
PP.setSerratedStrikesMode(false);
PP.setSerratedStrikesInformed(false);
player.sendMessage(mcLocale.getString("Skills.SerratedStrikesOff"));
@ -196,7 +197,7 @@ public class Skills {
* UNARMED ABILITY
*/
if(mcPermissions.getInstance().unarmedAbility(player)){
if(PP.getBerserkMode() && PP.getBerserkDeactivatedTimeStamp() <= System.currentTimeMillis()){
if(PP.getBerserkMode() && (PP.getBerserkDeactivatedTimeStamp()*1000) <= System.currentTimeMillis()){
PP.setBerserkMode(false);
PP.setBerserkInformed(false);
player.sendMessage(mcLocale.getString("Skills.BerserkOff"));
@ -213,10 +214,10 @@ public class Skills {
return;
if(mcPermissions.getInstance().miningAbility(player) && m.isMiningPick(player.getItemInHand()) && !PP.getPickaxePreparationMode())
{
if(!PP.getSuperBreakerMode() && !cooldownOver(player, PP.getSuperBreakerDeactivatedTimeStamp(), LoadProperties.superBreakerCooldown))
if(!PP.getSuperBreakerMode() && !cooldownOver(player, (PP.getSuperBreakerDeactivatedTimeStamp()*1000), LoadProperties.superBreakerCooldown))
{
player.sendMessage(mcLocale.getString("Skills.TooTired")
+ChatColor.YELLOW+" ("+calculateTimeLeft(player, PP.getSuperBreakerDeactivatedTimeStamp(), LoadProperties.superBreakerCooldown)+"s)");
+ChatColor.YELLOW+" ("+calculateTimeLeft(player, (PP.getSuperBreakerDeactivatedTimeStamp()*1000), LoadProperties.superBreakerCooldown)+"s)");
return;
}
player.sendMessage(mcLocale.getString("Skills.ReadyPickAxe"));
@ -225,10 +226,10 @@ public class Skills {
}
if(mcPermissions.getInstance().excavationAbility(player) && m.isShovel(player.getItemInHand()) && !PP.getShovelPreparationMode())
{
if(!PP.getGigaDrillBreakerMode() && !cooldownOver(player, PP.getGigaDrillBreakerDeactivatedTimeStamp(), LoadProperties.gigaDrillBreakerCooldown))
if(!PP.getGigaDrillBreakerMode() && !cooldownOver(player, (PP.getGigaDrillBreakerDeactivatedTimeStamp()*1000), LoadProperties.gigaDrillBreakerCooldown))
{
player.sendMessage(mcLocale.getString("Skills.TooTired")
+ChatColor.YELLOW+" ("+calculateTimeLeft(player, PP.getGigaDrillBreakerDeactivatedTimeStamp(), LoadProperties.gigaDrillBreakerCooldown)+"s)");
+ChatColor.YELLOW+" ("+calculateTimeLeft(player, (PP.getGigaDrillBreakerDeactivatedTimeStamp()*1000), LoadProperties.gigaDrillBreakerCooldown)+"s)");
return;
}
player.sendMessage(mcLocale.getString("Skills.ReadyShovel"));
@ -237,10 +238,10 @@ public class Skills {
}
if(mcPermissions.getInstance().swordsAbility(player) && m.isSwords(player.getItemInHand()) && !PP.getSwordsPreparationMode())
{
if(!PP.getSerratedStrikesMode() && !cooldownOver(player, PP.getSerratedStrikesDeactivatedTimeStamp(), LoadProperties.serratedStrikeCooldown))
if(!PP.getSerratedStrikesMode() && !cooldownOver(player, (PP.getSerratedStrikesDeactivatedTimeStamp()*1000), LoadProperties.serratedStrikeCooldown))
{
player.sendMessage(mcLocale.getString("Skills.TooTired")
+ChatColor.YELLOW+" ("+calculateTimeLeft(player, PP.getSerratedStrikesDeactivatedTimeStamp(), LoadProperties.serratedStrikeCooldown)+"s)");
+ChatColor.YELLOW+" ("+calculateTimeLeft(player, (PP.getSerratedStrikesDeactivatedTimeStamp()*1000), LoadProperties.serratedStrikeCooldown)+"s)");
return;
}
player.sendMessage(mcLocale.getString("Skills.ReadySword"));
@ -249,10 +250,10 @@ public class Skills {
}
if(mcPermissions.getInstance().unarmedAbility(player) && player.getItemInHand().getTypeId() == 0 && !PP.getFistsPreparationMode())
{
if(!PP.getBerserkMode() && !cooldownOver(player, PP.getBerserkDeactivatedTimeStamp(), LoadProperties.berserkCooldown))
if(!PP.getBerserkMode() && !cooldownOver(player, (PP.getBerserkDeactivatedTimeStamp()*1000), LoadProperties.berserkCooldown))
{
player.sendMessage(mcLocale.getString("Skills.TooTired")
+ChatColor.YELLOW+" ("+calculateTimeLeft(player, PP.getBerserkDeactivatedTimeStamp(), LoadProperties.berserkCooldown)+"s)");
+ChatColor.YELLOW+" ("+calculateTimeLeft(player, (PP.getBerserkDeactivatedTimeStamp()*1000), LoadProperties.berserkCooldown)+"s)");
return;
}
player.sendMessage(mcLocale.getString("Skills.ReadyFists"));
@ -311,10 +312,11 @@ public class Skills {
if(LoadProperties.spoutEnabled && player instanceof SpoutPlayer)
{
SpoutPlayer sPlayer = SpoutManager.getPlayerFromId(player.getEntityId());
SpoutPlayer sPlayer = SpoutManager.getPlayer(player);
if(sPlayer.isSpoutCraftEnabled())
{
SpoutStuff.levelUpNotification(skillType, sPlayer);
PP.setXpBarInc(0);
} else
{
player.sendMessage(mcLocale.getString("Skills."+capitalized+"Up", new Object[] {String.valueOf(skillups), PP.getSkillLevel(skillType)}));
@ -322,7 +324,14 @@ public class Skills {
}
else
player.sendMessage(mcLocale.getString("Skills."+capitalized+"Up", new Object[] {String.valueOf(skillups), PP.getSkillLevel(skillType)}));
}
if(LoadProperties.spoutEnabled)
{
SpoutPlayer sPlayer = SpoutManager.getPlayer(player);
if(sPlayer.isSpoutCraftEnabled())
{
SpoutStuff.updateXpBar(sPlayer);
}
}
}

View File

@ -1,115 +0,0 @@
package com.gmail.nossr50.skills;
import java.util.List;
import org.bukkit.ChatColor;
import org.bukkit.Material;
import org.bukkit.block.Block;
import org.bukkit.entity.Player;
import com.gmail.nossr50.Users;
import com.gmail.nossr50.m;
import com.gmail.nossr50.mcMMO;
import com.gmail.nossr50.mcPermissions;
import com.gmail.nossr50.config.LoadProperties;
import com.gmail.nossr50.datatypes.PlayerProfile;
import com.gmail.nossr50.locale.mcLocale;
public class Sorcery
{
mcMMO plugin = null;
public Sorcery(mcMMO pluginx)
{
plugin = pluginx;
}
public Block getSpellTargetBlock(Player player)
{
List<Block> blocks = player.getLineOfSight(null, 25);
for(Block x : blocks)
{
Material y = Material.AIR;
if(x.getType() != y)
return x;
}
return null;
}
public void informSelected(String spellname, int cost, Player player)
{
player.sendMessage(mcLocale.getString("Sorcery.SpellSelected", new Object[] {spellname, cost}));
}
public void informSpell(String spellname, Player player)
{
PlayerProfile PP = Users.getProfile(player);
player.sendMessage(mcLocale.getString("Sorcery.HasCast") +" "+spellname+" "+ mcLocale.getString("Sorcery.Current_Mana")+ChatColor.YELLOW+"("+ChatColor.GRAY+PP.getCurrentMana()+ChatColor.YELLOW+"/"+ChatColor.GREEN+PP.getMaxMana()+ChatColor.YELLOW+")");
}
public void shoutSpell(String spellname, Player player)
{
for(Player x : plugin.getServer().getOnlinePlayers())
{
if(x == player)
continue;
if(m.getDistance(x.getLocation(), player.getLocation()) < 35)
{
x.sendMessage(ChatColor.GREEN+"-"+ChatColor.DARK_AQUA+"="+ChatColor.GOLD+spellname+ChatColor.DARK_AQUA+"="+ChatColor.GREEN+"-"
+" "+ChatColor.YELLOW+"["+ChatColor.DARK_RED+player.getName()+ChatColor.YELLOW+"]");
}
}
}
public void handleGreenDyeCycle(Player player)
{
PlayerProfile PP = Users.getProfile(player);
//The selector is used to account for permissions removing spells from this order.
//Check if player has access to curative spell
if(!hasCurativeSpellPermission(player))
PP.setDyeChanged(true);
switch(PP.getGreenDyeCycleSel())
{
case 0:
if(mcPermissions.getInstance().sorceryCurativeHealSelf(player))
{
PP.setDyeChanged(true);
PP.setGreenDyeCycleSel(1);
PP.setGreenDyeCycle(0);
informSelected(mcLocale.getString("Sorcery.Curative.Self"), LoadProperties.cure_self, player);
break;
}
else
{
PP.setGreenDyeCycleSel(1);
}
case 1:
if(mcPermissions.getInstance().sorceryCurativeHealOther(player))
{
PP.setDyeChanged(true);
PP.setGreenDyeCycleSel(0);
PP.setGreenDyeCycle(1);
informSelected(mcLocale.getString("Sorcery.Curative.Other"), LoadProperties.cure_other, player);
break;
}
else
{
PP.setGreenDyeCycleSel(0);
}
}
}
public boolean hasCurativeSpellPermission (Player player)
{
if(mcPermissions.getInstance().sorceryCurativeHealOther(player) == false
&& mcPermissions.getInstance().sorceryCurativeHealSelf(player) == false)
return false;
else
return true;
}
}

View File

@ -1,6 +1,7 @@
name: mcMMO
main: com.gmail.nossr50.mcMMO
version: 1.0.50
version: 1.0.51 WIP
softdepend: [Spout]
commands:
xprate:
description: Modify the xp rate or start an event