Fixes and changes to PlayerStructure to make it a lot more accessible

and faster. MalleableBaseQuest fixes. Added Localized API methods for
using material name with data.
dev
sigonasr2 9 years ago
parent a34656f85c
commit b9e31e5f7a
  1. BIN
      TwosideKeeper.jar
  2. 7
      src/plugin.yml
  3. 11
      src/sig/plugin/TwosideKeeper/HelperStructures/Common/GenericFunctions.java
  4. 32
      src/sig/plugin/TwosideKeeper/HelperStructures/MalleableBaseQuest.java
  5. 43
      src/sig/plugin/TwosideKeeper/Party.java
  6. 18
      src/sig/plugin/TwosideKeeper/SpleefGame.java
  7. 352
      src/sig/plugin/TwosideKeeper/TwosideKeeper.java
  8. 7
      src/sig/plugin/TwosideKeeper/TwosideKeeperAPI.java

Binary file not shown.

@ -1,6 +1,6 @@
name: TwosideKeeper
main: sig.plugin.TwosideKeeper.TwosideKeeper
version: 3.4.0b
version: 3.4.1
commands:
money:
description: Tells the player the amount of money they are holding.
@ -46,4 +46,9 @@ commands:
description: Adjusts the debugging log level for TwosideKeeper in the console.
usage: /log
permission: TwosideKeeper.log
permission-message: No permissions!
fix:
description: Does many things depending on what you item is being held. Typically if it's broken, typing this will help.
usage: /fix
permission: TwosideKeeper.fix
permission-message: No permissions!

@ -5,6 +5,7 @@ import java.util.List;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.DyeColor;
import org.bukkit.Material;
import org.bukkit.block.Block;
import org.bukkit.block.Sign;
@ -13,6 +14,8 @@ import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.ItemMeta;
import org.bukkit.inventory.meta.PotionMeta;
import org.bukkit.material.MaterialData;
import org.bukkit.material.Wool;
import sig.plugin.TwosideKeeper.Artifact;
import sig.plugin.TwosideKeeper.TwosideKeeper;
@ -142,6 +145,14 @@ public class GenericFunctions {
return new ItemStack(Material.AIR);
}
}
public static String UserFriendlyMaterialName(Material type) {
return UserFriendlyMaterialName(new ItemStack(type,1,(byte)0));
}
public static String UserFriendlyMaterialName(Material type, byte b) {
return UserFriendlyMaterialName(new ItemStack(type,1,b));
}
public static String UserFriendlyMaterialName(ItemStack type) {
switch (type.getType()) {

@ -84,17 +84,17 @@ public class MalleableBaseQuest {
int amt = base.getAmount();
if (currenttime-starttime<=54000) { //45 min passed. Divine tier.
if (currenttime-starttime<=36000) { //30 min passed. Divine tier.
ItemStack newbase = Artifact.createArtifactItem(ArtifactItem.DIVINE_BASE);
newbase.setAmount(amt);
return newbase;
} else
if (currenttime-starttime<=144000) { //2 hours passed. Lost tier.
if (currenttime-starttime<=72000) { //1 hour passed. Lost tier.
ItemStack newbase = Artifact.createArtifactItem(ArtifactItem.LOST_BASE);
newbase.setAmount(amt);
return newbase;
} else
if (currenttime-starttime<=288000) { //4 hours passed. Ancient tier.
if (currenttime-starttime<=144000) { //2 hours passed. Ancient tier.
ItemStack newbase = Artifact.createArtifactItem(ArtifactItem.ANCIENT_BASE);
newbase.setAmount(amt);
return newbase;
@ -169,10 +169,12 @@ public class MalleableBaseQuest {
blacklisted_items.add(Material.ACACIA_DOOR);
blacklisted_items.add(Material.AIR);
blacklisted_items.add(Material.BARRIER);
blacklisted_items.add(Material.BEACON);
blacklisted_items.add(Material.BED_BLOCK);
blacklisted_items.add(Material.BEDROCK);
blacklisted_items.add(Material.BEETROOT_BLOCK);
blacklisted_items.add(Material.BEETROOT);
blacklisted_items.add(Material.BEETROOT_SEEDS);
blacklisted_items.add(Material.BIRCH_DOOR);
blacklisted_items.add(Material.BREWING_STAND);
blacklisted_items.add(Material.BURNING_FURNACE);
@ -194,6 +196,9 @@ public class MalleableBaseQuest {
blacklisted_items.add(Material.DARK_OAK_DOOR);
blacklisted_items.add(Material.DAYLIGHT_DETECTOR_INVERTED);
blacklisted_items.add(Material.DEAD_BUSH);
blacklisted_items.add(Material.DIAMOND_BARDING);
blacklisted_items.add(Material.IRON_BARDING);
blacklisted_items.add(Material.GOLD_BARDING);
blacklisted_items.add(Material.DIODE_BLOCK_OFF);
blacklisted_items.add(Material.DIODE_BLOCK_ON);
blacklisted_items.add(Material.DOUBLE_PLANT);
@ -201,10 +206,9 @@ public class MalleableBaseQuest {
blacklisted_items.add(Material.DOUBLE_STONE_SLAB2);
blacklisted_items.add(Material.DRAGON_EGG);
blacklisted_items.add(Material.DRAGONS_BREATH);
blacklisted_items.add(Material.EMERALD_ORE);
blacklisted_items.add(Material.COAL_ORE);
blacklisted_items.add(Material.END_CRYSTAL);
blacklisted_items.add(Material.END_GATEWAY);
blacklisted_items.add(Material.ELYTRA);
blacklisted_items.add(Material.ENDER_PORTAL);
blacklisted_items.add(Material.ENDER_PORTAL_FRAME);
blacklisted_items.add(Material.EXP_BOTTLE);
@ -221,11 +225,7 @@ public class MalleableBaseQuest {
blacklisted_items.add(Material.HUGE_MUSHROOM_2);
blacklisted_items.add(Material.JUNGLE_DOOR);
blacklisted_items.add(Material.LAVA);
blacklisted_items.add(Material.LEAVES);
blacklisted_items.add(Material.LEAVES_2);
blacklisted_items.add(Material.LINGERING_POTION);
blacklisted_items.add(Material.LOG);
blacklisted_items.add(Material.LOG_2);
blacklisted_items.add(Material.LONG_GRASS);
blacklisted_items.add(Material.MAP);
blacklisted_items.add(Material.MELON_BLOCK);
@ -236,16 +236,13 @@ public class MalleableBaseQuest {
blacklisted_items.add(Material.MYCEL);
blacklisted_items.add(Material.NAME_TAG);
blacklisted_items.add(Material.NETHER_STALK);
blacklisted_items.add(Material.NETHER_WARTS);
blacklisted_items.add(Material.MYCEL);
blacklisted_items.add(Material.NETHER_STAR);
blacklisted_items.add(Material.POTATO);
blacklisted_items.add(Material.PISTON_EXTENSION);
blacklisted_items.add(Material.PISTON_MOVING_PIECE);
blacklisted_items.add(Material.POISONOUS_POTATO);
blacklisted_items.add(Material.PORTAL);
blacklisted_items.add(Material.POTATO);
blacklisted_items.add(Material.PUMPKIN_STEM);
blacklisted_items.add(Material.PURPUR_DOUBLE_SLAB);
blacklisted_items.add(Material.QUARTZ_ORE);
blacklisted_items.add(Material.RECORD_10);
blacklisted_items.add(Material.RECORD_11);
blacklisted_items.add(Material.RECORD_12);
@ -261,10 +258,15 @@ public class MalleableBaseQuest {
blacklisted_items.add(Material.REDSTONE_COMPARATOR_ON);
blacklisted_items.add(Material.REDSTONE_LAMP_OFF);
blacklisted_items.add(Material.REDSTONE_LAMP_ON);
blacklisted_items.add(Material.REDSTONE_ORE);
blacklisted_items.add(Material.REDSTONE_TORCH_OFF);
blacklisted_items.add(Material.REDSTONE_WIRE);
blacklisted_items.add(Material.COAL_ORE);
blacklisted_items.add(Material.IRON_ORE);
blacklisted_items.add(Material.GOLD_ORE);
blacklisted_items.add(Material.REDSTONE_ORE);
blacklisted_items.add(Material.EMERALD_ORE);
blacklisted_items.add(Material.SAPLING);
blacklisted_items.add(Material.SADDLE);
blacklisted_items.add(Material.SIGN_POST);
blacklisted_items.add(Material.WALL_SIGN);
blacklisted_items.add(Material.SKULL);

@ -92,17 +92,13 @@ public class Party {
public void addPlayer(Player p) {
partyplayers.add(p);
for (int l=0;l<partyplayers.size();l++) {
for (int k=0;k<TwosideKeeper.playerdata.size();k++) {
TwosideKeeper.log("Looking at playerdata structure... "+k+","+l+". Party size is "+partyplayers.size(),4);
if (TwosideKeeper.playerdata.get(k).name.equalsIgnoreCase(partyplayers.get(l).getName())) {
TwosideKeeper.playerdata.get(k).currentparty=TeamNumber();
TwosideKeeper.playerdata.get(k).partybonus=partyplayers.size()-1;
//TwosideKeeper.playerdata.get(k).partybonus=10; //JUST FOR TESTING PURPOSES.
if (partyplayers.size()>=2) {
//partyplayers.get(l).sendMessage(ChatColor.ITALIC+""+ChatColor.GOLD+"Party Bonuses Applied: "+ChatColor.BLUE+"+"+(partyplayers.size()-1)+"0% damage + defense for "+partyplayers.size()+" party members. Drop Rate +"+(partyplayers.size()-1)+"0%");
}
PlayerStructure pd = (PlayerStructure)TwosideKeeper.playerdata.get(partyplayers.get(l).getUniqueId());
pd.currentparty=TeamNumber();
pd.partybonus=partyplayers.size()-1;
//TwosideKeeper.playerdata.get(k).partybonus=10; //JUST FOR TESTING PURPOSES.
if (partyplayers.size()>=2) {
//partyplayers.get(l).sendMessage(ChatColor.ITALIC+""+ChatColor.GOLD+"Party Bonuses Applied: "+ChatColor.BLUE+"+"+(partyplayers.size()-1)+"0% damage + defense for "+partyplayers.size()+" party members. Drop Rate +"+(partyplayers.size()-1)+"0%");
}
}
}
Bukkit.dispatchCommand(Bukkit.getServer().getConsoleSender(), "scoreboard players set "+p.getName().toLowerCase()+" Party"+color+" "+partyplayers.size()*-1);
Bukkit.dispatchCommand(Bukkit.getServer().getConsoleSender(), "scoreboard teams option "+p.getName().toLowerCase()+" color "+ConvertColor(color));
@ -170,26 +166,24 @@ public class Party {
}
public void RemoveStrayMembers() {
int prevsiz=partyplayers.size();
TwosideKeeper.log("Previous party size was "+prevsiz,5);
for (int i=0;i<partyplayers.size();i++) {
if (partyplayers.get(i)==null ||
!partyplayers.get(i).isOnline() ||
partyplayers.get(i).getWorld() != region.getWorld() ||
((int)(partyplayers.get(i).getLocation().getX()/(16*TwosideKeeper.PARTY_CHUNK_SIZE))*(16*TwosideKeeper.PARTY_CHUNK_SIZE)) != (int)region.getX() ||
((int)(partyplayers.get(i).getLocation().getZ()/(16*TwosideKeeper.PARTY_CHUNK_SIZE))*(16*TwosideKeeper.PARTY_CHUNK_SIZE)) != (int)region.getZ()) {
TwosideKeeper.log(((int)(partyplayers.get(i).getLocation().getX()/(16*TwosideKeeper.PARTY_CHUNK_SIZE))*(16*TwosideKeeper.PARTY_CHUNK_SIZE))+" ;; "+((int)(partyplayers.get(i).getLocation().getZ()/(16*TwosideKeeper.PARTY_CHUNK_SIZE))*(16*TwosideKeeper.PARTY_CHUNK_SIZE))+" - DID NOT MATCH",5);
TwosideKeeper.log(((int)(partyplayers.get(i).getLocation().getX()/(16*TwosideKeeper.PARTY_CHUNK_SIZE))*(16*TwosideKeeper.PARTY_CHUNK_SIZE))+" ;; "+((int)(partyplayers.get(i).getLocation().getZ()/(16*TwosideKeeper.PARTY_CHUNK_SIZE))*(16*TwosideKeeper.PARTY_CHUNK_SIZE))+" - DID NOT MATCH",4);
Bukkit.dispatchCommand(Bukkit.getConsoleSender(), "scoreboard players reset "+partyplayers.get(i).getName().toLowerCase()+" Party"+color);
for (int l=0;l<partyplayers.size();l++) {
for (int k=0;k<TwosideKeeper.playerdata.size();k++) {
if (TwosideKeeper.playerdata.get(k).name.equalsIgnoreCase(partyplayers.get(l).getName()) &&
TwosideKeeper.playerdata.get(k).currentparty == TeamNumber()) {
if (partyplayers.size()-2<0) {
TwosideKeeper.playerdata.get(k).partybonus=0;
} else {
TwosideKeeper.playerdata.get(k).partybonus=partyplayers.size()-2;
}
TwosideKeeper.playerdata.get(k).currentparty=-1;
PlayerStructure pd = (PlayerStructure)TwosideKeeper.playerdata.get(partyplayers.get(l).getUniqueId());
if (pd!=null && pd.currentparty == TeamNumber()) {
if (partyplayers.size()-2<0) {
pd.partybonus=0;
} else {
pd.partybonus=partyplayers.size()-2;
}
pd.currentparty=-1;
}
}
if (partyplayers.size()>=2) {
@ -204,11 +198,8 @@ public class Party {
if (partyplayers.size()==1) {
//partyplayers.get(i).sendMessage(ChatColor.DARK_GRAY+""+ChatColor.ITALIC+"Party buffs removed.");
} else {
for (int j=0;j<TwosideKeeper.playerdata.size();j++) {
if (TwosideKeeper.playerdata.get(j).name.equalsIgnoreCase(partyplayers.get(i).getName())) {
TwosideKeeper.playerdata.get(j).partybonus=partyplayers.size()-1;
}
}
PlayerStructure pd = (PlayerStructure)TwosideKeeper.playerdata.get(partyplayers.get(i).getUniqueId());
pd.partybonus=partyplayers.size()-1;
//partyplayers.get(i).sendMessage(ChatColor.ITALIC+""+ChatColor.GOLD+"Party Bonuses Applied: "+ChatColor.BLUE+"+"+(partyplayers.size()-1)+"0% damage + defense for "+partyplayers.size()+" party members. Drop Rate +"+(partyplayers.size()-1)+"0%");
}
}

@ -404,12 +404,8 @@ public class SpleefGame implements Listener {
), TeleportCause.PLUGIN);
if (rs==RemovePlayerReason.OUTOFBOUNDS ||
rs==RemovePlayerReason.QUIT) {
for (int i=0;i<TwosideKeeper.playerdata.size();i++) {
PlayerStructure pd = TwosideKeeper.playerdata.get(i);
if (pd.name.equalsIgnoreCase(p.player)) {
pd.spleef_pts+=registered_players.size()-players.size()-1;
}
}
PlayerStructure pd = (PlayerStructure)TwosideKeeper.playerdata.get(Bukkit.getServer().getPlayer(p.player));
pd.spleef_pts+=registered_players.size()-players.size()-1;
Bukkit.getServer().broadcastMessage(ChatColor.GREEN+p.player+ChatColor.GOLD+" "+ChatColor.ITALIC+"has been knocked out of this round of Spleef!");
}
}
@ -422,13 +418,9 @@ public class SpleefGame implements Listener {
RemovePlayer(players.get(i), RemovePlayerReason.GENERAL);
i--;
}
for (int i=0;i<TwosideKeeper.playerdata.size();i++) {
PlayerStructure pd = TwosideKeeper.playerdata.get(i);
if (pd.name.equalsIgnoreCase(winner.player)) {
pd.spleef_pts+=registered_players.size();
pd.spleef_wins+=1;
}
}
PlayerStructure pd = (PlayerStructure)TwosideKeeper.playerdata.get(Bukkit.getServer().getPlayer(winner.player));
pd.spleef_pts+=registered_players.size();
pd.spleef_wins+=1;
registered_players.clear();
Bukkit.getServer().broadcastMessage(ChatColor.GOLD+"Congratulations to Player "+ChatColor.GREEN+winner.player+ChatColor.GOLD+" for winning this round of Spleef!");
active=false;

@ -7,6 +7,7 @@ import java.lang.reflect.Method;
import java.text.DecimalFormat;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.LogRecord;
@ -30,6 +31,8 @@ import org.bukkit.entity.Creeper;
import org.bukkit.entity.EnderDragon;
import org.bukkit.entity.Entity;
import org.bukkit.entity.EntityType;
import org.bukkit.entity.Horse;
import org.bukkit.entity.Horse.Variant;
import org.bukkit.entity.HumanEntity;
import org.bukkit.entity.Item;
import org.bukkit.entity.LivingEntity;
@ -164,7 +167,7 @@ public class TwosideKeeper extends JavaPlugin implements Listener {
public static int LOGGING_LEVEL=0; //The logging level the server will output in for the console. 0 = No Debug Messages. Toggled with /log.
public static double ARTIFACT_RARITY=1.5; //The multiplier of artifact drops.
public static File filesave;
public static List<PlayerStructure> playerdata;
public static HashMap playerdata;
public static SpleefManager TwosideSpleefGames;
public WorldShopManager TwosideShops;
@ -258,11 +261,12 @@ public class TwosideKeeper extends JavaPlugin implements Listener {
TwosideShops = new WorldShopManager();
//Initialize Player Data structure.
playerdata = new ArrayList<PlayerStructure>();
playerdata = new HashMap();
//Let's not assume there are no players online. Load their data.
for (int i=0;i<Bukkit.getOnlinePlayers().toArray().length;i++) {
playerdata.add(new PlayerStructure((Player)Bukkit.getOnlinePlayers().toArray()[i],getServerTickTime()));
playerdata.put(((Player)Bukkit.getOnlinePlayers().toArray()[i]).getUniqueId(), new PlayerStructure((Player)Bukkit.getOnlinePlayers().toArray()[i],getServerTickTime()));
//playerdata.add(new PlayerStructure((Player)Bukkit.getOnlinePlayers().toArray()[i],getServerTickTime()));
}
//Announce the server has restarted soon after.
@ -347,6 +351,7 @@ public class TwosideKeeper extends JavaPlugin implements Listener {
SERVERTICK=getServerTickTime();
Bukkit.getWorld("world").setTime(0);
Bukkit.getWorld("world").setThundering(false);
STARTTIME=Bukkit.getWorld("world").getFullTime();
LASTSERVERCHECK=getServerTickTime();
//Make sure we keep SERVERTICK in check.
@ -356,9 +361,9 @@ public class TwosideKeeper extends JavaPlugin implements Listener {
}
//See if each player needs to regenerate their health.
for (int i=0;i<playerdata.size();i++) {
PlayerStructure pd = playerdata.get(i);
Player p = Bukkit.getPlayer(pd.name);
for (int i=0;i<Bukkit.getOnlinePlayers().size();i++) {
Player p = (Player)(Bukkit.getOnlinePlayers().toArray()[i]);
PlayerStructure pd = (PlayerStructure)playerdata.get(p.getUniqueId());
if (TwosideShops.PlayerHasPurchases(p)) {
TwosideShops.PlayerSendPurchases(p);
@ -497,9 +502,15 @@ public class TwosideKeeper extends JavaPlugin implements Listener {
if (cmd.getName().equalsIgnoreCase("log")) {
LOGGING_LEVEL = (LOGGING_LEVEL+1) % 6;
sender.sendMessage("Debugging Log Level is now "+ChatColor.RED+LOGGING_LEVEL+".");
return true;
}
if (sender instanceof Player) {
DecimalFormat df = new DecimalFormat("0.00");
if (cmd.getName().equalsIgnoreCase("fix")) {
Player p = (Player)sender;
sender.sendMessage("Localized Name is "+GenericFunctions.UserFriendlyMaterialName(p.getEquipment().getItemInMainHand().getType(),p.getEquipment().getItemInMainHand().getData().getData()));
return true;
} else
if (cmd.getName().equalsIgnoreCase("money")) {
sender.sendMessage("You are currently holding "+ChatColor.GREEN+"$"+df.format(getPlayerMoney((Player)sender)));
return true;
@ -609,15 +620,12 @@ public class TwosideKeeper extends JavaPlugin implements Listener {
} else
if (cmd.getName().equalsIgnoreCase("sound")) {
Player p = (Player)sender;
for (int i=0;i<playerdata.size();i++) {
if (playerdata.get(i).name.equalsIgnoreCase(p.getName())) {
playerdata.get(i).sounds_enabled=!playerdata.get(i).sounds_enabled;
if (playerdata.get(i).sounds_enabled) {
p.sendMessage(ChatColor.DARK_AQUA+"Chat sounds are now enabled.");
} else {
p.sendMessage(ChatColor.DARK_RED+"Chat sounds are now disabled.");
}
}
PlayerStructure pd = (PlayerStructure)playerdata.get(p.getUniqueId());
pd.sounds_enabled=!pd.sounds_enabled;
if (pd.sounds_enabled) {
p.sendMessage(ChatColor.DARK_AQUA+"Chat sounds are now enabled.");
} else {
p.sendMessage(ChatColor.DARK_RED+"Chat sounds are now disabled.");
}
return true;
} else
@ -651,7 +659,7 @@ public class TwosideKeeper extends JavaPlugin implements Listener {
//MESSAGE: Sound.NOTE_STICKS, 0.6f, 0.85f);
}
}
playerdata.add(new PlayerStructure(ev.getPlayer(),getServerTickTime()));
playerdata.put(ev.getPlayer().getUniqueId(), new PlayerStructure(ev.getPlayer(),getServerTickTime()));
log("[TASK] New Player Data has been added. Size of array: "+playerdata.size(),4);
//Update player max health. Check equipment too.
@ -671,16 +679,11 @@ public class TwosideKeeper extends JavaPlugin implements Listener {
}
//Find the player that is getting removed.
for (int i=0;i<playerdata.size();i++) {
PlayerStructure pd = playerdata.get(i);
if (pd.name.equalsIgnoreCase(ev.getPlayer().getName())) {
//Make sure to save the config for this player.
pd.saveConfig();
playerdata.remove(i);
log("[TASK] Player Data for "+ev.getPlayer().getName()+" has been removed. Size of array: "+playerdata.size(),4);
break;
}
}
PlayerStructure pd = (PlayerStructure)playerdata.get(ev.getPlayer().getUniqueId());
//Make sure to save the config for this player.
pd.saveConfig();
playerdata.remove(ev.getPlayer().getUniqueId());
log("[TASK] Player Data for "+ev.getPlayer().getName()+" has been removed. Size of array: "+playerdata.size(),4);
}
@EventHandler(priority=EventPriority.LOW)
@ -946,7 +949,7 @@ public class TwosideKeeper extends JavaPlugin implements Listener {
while (dropAmt>0) {
if (dropAmt>shop.GetItem().getMaxStackSize()) {
drop.setAmount(shop.GetItem().getMaxStackSize());
final ItemStack dropitem = drop;
final ItemStack dropitem = drop.clone();
Bukkit.getScheduler().scheduleSyncDelayedTask(this, new Runnable() {
@Override
public void run() {
@ -956,7 +959,7 @@ public class TwosideKeeper extends JavaPlugin implements Listener {
dropAmt-=shop.GetItem().getMaxStackSize();
} else {
drop.setAmount(dropAmt);
final ItemStack dropitem = drop;
final ItemStack dropitem = drop.clone();
Bukkit.getScheduler().scheduleSyncDelayedTask(this, new Runnable() {
@Override
public void run() {
@ -1011,7 +1014,7 @@ public class TwosideKeeper extends JavaPlugin implements Listener {
while (dropAmt>0) {
if (dropAmt>shop.GetItem().getMaxStackSize()) {
drop.setAmount(shop.GetItem().getMaxStackSize());
final ItemStack dropitem = drop;
final ItemStack dropitem = drop.clone();
Bukkit.getScheduler().scheduleSyncDelayedTask(this, new Runnable() {
@Override
public void run() {
@ -1021,7 +1024,7 @@ public class TwosideKeeper extends JavaPlugin implements Listener {
dropAmt-=shop.GetItem().getMaxStackSize();
} else {
drop.setAmount(dropAmt);
final ItemStack dropitem = drop;
final ItemStack dropitem = drop.clone();
Bukkit.getScheduler().scheduleSyncDelayedTask(this, new Runnable() {
@Override
public void run() {
@ -1103,7 +1106,7 @@ public class TwosideKeeper extends JavaPlugin implements Listener {
while (dropAmt>0) {
if (dropAmt>shop.GetItem().getMaxStackSize()) {
shopItem.setAmount(shop.GetItem().getMaxStackSize());
final ItemStack dropitem = shopItem;
final ItemStack dropitem = shopItem.clone();
Bukkit.getScheduler().scheduleSyncDelayedTask(this, new Runnable() {
@Override
public void run() {
@ -1113,7 +1116,7 @@ public class TwosideKeeper extends JavaPlugin implements Listener {
dropAmt-=shop.GetItem().getMaxStackSize();
} else {
shopItem.setAmount(dropAmt);
final ItemStack dropitem = shopItem;
final ItemStack dropitem = shopItem.clone();
Bukkit.getScheduler().scheduleSyncDelayedTask(this, new Runnable() {
@Override
public void run() {
@ -1196,17 +1199,10 @@ public class TwosideKeeper extends JavaPlugin implements Listener {
ev.setMessage(ev.getMessage().replace("()", "("+ev.getPlayer().getLocation().getBlockX()+","+ev.getPlayer().getLocation().getBlockY()+","+ev.getPlayer().getLocation().getBlockZ()+")"));
for (int i=0;i<Bukkit.getOnlinePlayers().toArray().length;i++) {
Player p = (Player)Bukkit.getOnlinePlayers().toArray()[i];
if (p!=null) {
for (int j=0;j<playerdata.size();j++) {
if (playerdata.get(j).name.equalsIgnoreCase(p.getName())) {
if (playerdata.get(j).sounds_enabled) {
p.playSound(p.getLocation(), Sound.BLOCK_NOTE_BASEDRUM, 0.6f, 0.85f);
}
break;
}
}
}
PlayerStructure pd = (PlayerStructure)playerdata.get(p.getUniqueId());
if (pd.sounds_enabled) {
p.playSound(p.getLocation(), Sound.BLOCK_NOTE_BASEDRUM, 0.6f, 0.85f);
}
}
int pos = -1;
log(ev.getMessage()+" "+ev.getMessage().indexOf("[]"),5);
@ -1473,7 +1469,8 @@ public class TwosideKeeper extends JavaPlugin implements Listener {
if (!depositUser.equalsIgnoreCase(ev.getPlayer().getName()) &&
!conversionUser.equalsIgnoreCase(ev.getPlayer().getName())) {
ev.getPlayer().sendMessage(ChatColor.GOLD+"Say/Type the amount you want to WITHDRAW today.");
ev.getPlayer().sendMessage(" In Bank: "+ChatColor.BLUE+"$"+getPlayerBankMoney(ev.getPlayer()));
DecimalFormat df = new DecimalFormat("0.00");
ev.getPlayer().sendMessage(" In Bank: "+ChatColor.BLUE+"$"+df.format(getPlayerBankMoney(ev.getPlayer())));
//Activate the terminal.
withdrawUser=ev.getPlayer().getName();
withdrawTime=getServerTickTime();
@ -1492,7 +1489,8 @@ public class TwosideKeeper extends JavaPlugin implements Listener {
if (!withdrawUser.equalsIgnoreCase(ev.getPlayer().getName()) &&
!conversionUser.equalsIgnoreCase(ev.getPlayer().getName())) {
ev.getPlayer().sendMessage(ChatColor.GOLD+"Say/Type the amount you want to DEPOSIT today.");
ev.getPlayer().sendMessage(" Currently Holding: "+ChatColor.GREEN+"$"+getPlayerMoney(ev.getPlayer()));
DecimalFormat df = new DecimalFormat("0.00");
ev.getPlayer().sendMessage(" Currently Holding: "+ChatColor.GREEN+"$"+df.format(getPlayerMoney(ev.getPlayer())));
//Activate the terminal.
depositUser=ev.getPlayer().getName();
depositTime=getServerTickTime();
@ -1845,15 +1843,11 @@ public class TwosideKeeper extends JavaPlugin implements Listener {
ev.setCancelled(true);
Player p = (Player)ev.getEntity();
//Find the player that is losing food level.
for (int i=0;i<playerdata.size();i++) {
PlayerStructure pd = playerdata.get(i);
if (pd.name.equalsIgnoreCase(p.getName())) {
if (((Player)ev.getEntity()).getSaturation()>0 && pd.saturation<20) {
pd.saturation+=2;
((Player)ev.getEntity()).setSaturation(((Player)ev.getEntity()).getSaturation()-1);
log("Saturation increased to "+pd.saturation+". Old saturation: "+((Player)ev.getEntity()).getSaturation(),4);
}
}
PlayerStructure pd = (PlayerStructure)playerdata.get(p.getUniqueId());
if (((Player)ev.getEntity()).getSaturation()>0 && pd.saturation<20) {
pd.saturation+=2;
((Player)ev.getEntity()).setSaturation(((Player)ev.getEntity()).getSaturation()-1);
log("Saturation increased to "+pd.saturation+". Old saturation: "+((Player)ev.getEntity()).getSaturation(),4);
}
}
}
@ -2487,6 +2481,15 @@ public class TwosideKeeper extends JavaPlugin implements Listener {
//This spawn was not allowed by the mob height controller.
}
}
if (ev.getLocation().getWorld().getName().equalsIgnoreCase("world") &&
ev.getEntityType()==EntityType.HORSE) {
Horse h = (Horse)ev.getEntity();
if (h.getVariant().equals(Variant.SKELETON_HORSE)) {
//This is a skeleton horse in the overworld. We are going to disable these for now. Future plans for them...
ev.getEntity().remove();
log("Prevented a skeleton horse from spawning at Location "+ev.getLocation().toString()+".",3);
}
}
}
//A fix to make achievemnt announcements not show the healthbar!
@ -2588,7 +2591,7 @@ public class TwosideKeeper extends JavaPlugin implements Listener {
public void onEndermanTeleport(EntityTeleportEvent ev) {
if (ev.getEntityType()==EntityType.ENDERMAN) {
//There is a small chance to drop a Mysterious Essence.
if (Math.random()<=0.0625) {
if (Math.random()<=0.0625*ARTIFACT_RARITY && ((Monster)ev.getEntity()).getTarget()==null) { //We won't drop it when they are targeting a player, only when they are doing their own thing.
ev.getEntity().getLocation().getWorld().dropItemNaturally(ev.getEntity().getLocation(), Artifact.createArtifactItem(ArtifactItem.MYSTERIOUS_ESSENCE));
}
}
@ -2686,31 +2689,26 @@ public class TwosideKeeper extends JavaPlugin implements Listener {
log("Final dmg is "+ev.getFinalDamage(),4);
//Make this monster the player's new target.
for (int i=0;i<playerdata.size();i++) {
PlayerStructure pd = playerdata.get(i);
if (pd.name.equalsIgnoreCase(p.getName())) {
//Found the player structure. Set the target.
pd.target=m;
if (GenericFunctions.isDefender(p)) {
if (pd.saturation<20) {
pd.saturation++;
}
int currentResistanceLevel = -1;
for (int j=0;j<p.getActivePotionEffects().size();j++) {
if (Iterables.get(p.getActivePotionEffects(), j).getType().equals(PotionEffectType.DAMAGE_RESISTANCE)) {
//Get the level.
currentResistanceLevel = Iterables.get(p.getActivePotionEffects(), j).getAmplifier();
p.removePotionEffect(PotionEffectType.DAMAGE_RESISTANCE);
log("Resistance level is "+currentResistanceLevel,5);
break;
}
}
p.addPotionEffect(new PotionEffect(PotionEffectType.DAMAGE_RESISTANCE,100,(currentResistanceLevel+1<5)?currentResistanceLevel+1:4));
}
updateTitle(p);
break;
}
}
PlayerStructure pd = (PlayerStructure)playerdata.get(p.getUniqueId());
//Found the player structure. Set the target.
pd.target=m;
if (GenericFunctions.isDefender(p)) {
if (pd.saturation<20) {
pd.saturation++;
}
int currentResistanceLevel = -1;
for (int j=0;j<p.getActivePotionEffects().size();j++) {
if (Iterables.get(p.getActivePotionEffects(), j).getType().equals(PotionEffectType.DAMAGE_RESISTANCE)) {
//Get the level.
currentResistanceLevel = Iterables.get(p.getActivePotionEffects(), j).getAmplifier();
p.removePotionEffect(PotionEffectType.DAMAGE_RESISTANCE);
log("Resistance level is "+currentResistanceLevel,5);
break;
}
}
p.addPotionEffect(new PotionEffect(PotionEffectType.DAMAGE_RESISTANCE,100,(currentResistanceLevel+1<5)?currentResistanceLevel+1:4));
}
updateTitle(p);
} else
if ((ev.getDamager() instanceof Player &&
ev.getEntity() instanceof LivingEntity)) {
@ -2733,15 +2731,10 @@ public class TwosideKeeper extends JavaPlugin implements Listener {
m.setNoDamageTicks(0);
//Make this monster the player's new target.
for (int i=0;i<playerdata.size();i++) {
PlayerStructure pd = playerdata.get(i);
if (pd.name.equalsIgnoreCase(p.getName())) {
//Found the player structure. Set the target.
pd.target=m;
updateTitle(p);
break;
}
}
PlayerStructure pd = (PlayerStructure)playerdata.get(p.getUniqueId());
//Found the player structure. Set the target.
pd.target=m;
updateTitle(p);
} else
if ((ev.getDamager() instanceof Arrow &&
ev.getEntity() instanceof Player)) {
@ -2780,15 +2773,10 @@ public class TwosideKeeper extends JavaPlugin implements Listener {
//Make this monster the player's new target.
for (int i=0;i<playerdata.size();i++) {
PlayerStructure pd = playerdata.get(i);
if (pd.name.equalsIgnoreCase(p.getName())) {
//Found the player structure. Set the target.
pd.target=m;
updateTitle(p);
break;
}
}
PlayerStructure pd = (PlayerStructure)playerdata.get(p.getUniqueId());
//Found the player structure. Set the target.
pd.target=m;
updateTitle(p);
}
}
else
@ -2827,15 +2815,10 @@ public class TwosideKeeper extends JavaPlugin implements Listener {
}
//Make this monster the player's new target.
for (int i=0;i<playerdata.size();i++) {
PlayerStructure pd = playerdata.get(i);
if (pd.name.equalsIgnoreCase(p.getName())) {
//Found the player structure. Set the target.
pd.target=m;
updateTitle(p,headshot);
break;
}
}
PlayerStructure pd = (PlayerStructure)playerdata.get(p.getUniqueId());
//Found the player structure. Set the target.
pd.target=m;
updateTitle(p,headshot);
}
}
@ -2848,12 +2831,8 @@ public class TwosideKeeper extends JavaPlugin implements Listener {
double dropmult=1;
if (m.getKiller() instanceof Player) {
Player p = (Player)m.getKiller();
for (int i=0;i<playerdata.size();i++) {
if (playerdata.get(i).name.equalsIgnoreCase(p.getName())) {
dropmult+=playerdata.get(i).partybonus*0.1;
break;
}
}
PlayerStructure pd = (PlayerStructure)playerdata.get(p.getUniqueId());
dropmult+=pd.partybonus*0.1;
}
if (Math.random()<0.00390625*dropmult*ARTIFACT_RARITY) {
ev.getDrops().add(Artifact.createArtifactItem(ArtifactItem.ARTIFACT_ESSENCE));
@ -3214,7 +3193,6 @@ public class TwosideKeeper extends JavaPlugin implements Listener {
raresword.addUnsafeEnchantment(Enchantment.KNOCKBACK, 1);
raresword.addUnsafeEnchantment(Enchantment.DURABILITY, 10);
}
raresword.setItemMeta(sword_meta);
ev.getDrops().add(raresword);
}
if (Math.random()<RARE_DROP_RATE*dropmult) {
@ -4207,18 +4185,14 @@ public class TwosideKeeper extends JavaPlugin implements Listener {
public void onTeleportEvent(PlayerTeleportEvent ev) {
if (ev.getCause().equals(TeleportCause.END_PORTAL)) {
Player p = ev.getPlayer();
for (int i=0;i<playerdata.size();i++) {
PlayerStructure pd = playerdata.get(i);
if (pd.name.equalsIgnoreCase(p.getName())) {
//This is the player data structure we are looking for.
if (!pd.enderdragon_spawned) {
pd.enderdragon_spawned=true;
//Spawn an ender dragon...
EnderDragon dragon = (EnderDragon)(ev.getTo().getWorld().spawnEntity(ev.getTo().add(new Location(ev.getTo().getWorld(),0,64,0)), EntityType.ENDER_DRAGON));
dragon.setPhase(Phase.CIRCLING);
}
}
}
PlayerStructure pd = (PlayerStructure)playerdata.get(p.getUniqueId());
//This is the player data structure we are looking for.
if (!pd.enderdragon_spawned) {
pd.enderdragon_spawned=true;
//Spawn an ender dragon...
EnderDragon dragon = (EnderDragon)(ev.getTo().getWorld().spawnEntity(ev.getTo().add(new Location(ev.getTo().getWorld(),0,64,0)), EntityType.ENDER_DRAGON));
dragon.setPhase(Phase.CIRCLING);
}
}
final Player p = ev.getPlayer();
Bukkit.getScheduler().scheduleSyncDelayedTask(this, new Runnable() {
@ -4288,8 +4262,9 @@ public class TwosideKeeper extends JavaPlugin implements Listener {
}
public void saveAllUserConfigs() {
for (int i=0;i<playerdata.size();i++) {
PlayerStructure pd = playerdata.get(i);
for (int i=0;i<Bukkit.getOnlinePlayers().size();i++) {
Player p = (Player)(Bukkit.getOnlinePlayers().toArray()[i]);
PlayerStructure pd = (PlayerStructure)playerdata.get(p.getUniqueId());
pd.saveConfig();
}
}
@ -4628,18 +4603,11 @@ public class TwosideKeeper extends JavaPlugin implements Listener {
///////////////ALL PLAYER RELATED FUNCTIONS GO DOWN HERE.
public static double getPlayerMoney(Player p) {
//Tells a player how much money they have.
for (int i=0;i<playerdata.size();i++) {
PlayerStructure pd = playerdata.get(i);
if (pd.name.equalsIgnoreCase(p.getName())) {
//Found it. Read money and quit.
Double d = Double.valueOf(pd.money);
DecimalFormat df = new DecimalFormat("0.00");
return Double.parseDouble(df.format(d));
}
}
//Something bad happened if we got here.
log("[WARNING] Could not find the correct player data file for "+p.getName()+" to get money data from.",1);
return -1;
PlayerStructure pd = (PlayerStructure)playerdata.get(p.getUniqueId());
//Found it. Read money and quit.
Double d = Double.valueOf(pd.money);
DecimalFormat df = new DecimalFormat("0.00");
return Double.parseDouble(df.format(d));
}
public static double getPlayerMoney(String p) {
//See if the data file exists, open it.
@ -4661,18 +4629,11 @@ public class TwosideKeeper extends JavaPlugin implements Listener {
public static double getPlayerBankMoney(Player p) {
//Tells a player how much money they have.
for (int i=0;i<playerdata.size();i++) {
PlayerStructure pd = playerdata.get(i);
if (pd.name.equalsIgnoreCase(p.getName())) {
//Found it. Read money and quit.
Double d = Double.valueOf(pd.bank_money);
DecimalFormat df = new DecimalFormat("0.00");
return Double.parseDouble(df.format(d));
}
}
//Something bad happened if we got here.
log("[WARNING] Could not find the correct player data file for "+p.getName()+" to get money bank data from.",1);
return -1;
PlayerStructure pd = (PlayerStructure)playerdata.get(p.getUniqueId());
//Found it. Read money and quit.
Double d = Double.valueOf(pd.bank_money);
DecimalFormat df = new DecimalFormat("0.00");
return Double.parseDouble(df.format(d));
}
public static double getPlayerBankMoney(String p) {
@ -4697,19 +4658,9 @@ public class TwosideKeeper extends JavaPlugin implements Listener {
public static void givePlayerMoney(Player p, double amt) {
boolean found=false;
for (int i=0;i<playerdata.size();i++) {
PlayerStructure pd = playerdata.get(i);
if (pd.name.equalsIgnoreCase(p.getName())) {
//Found it. Read money and quit.
pd.money+=amt;
found=true;
break;
}
}
//Something bad happened if we got here.
if (!found) {
log("[WARNING] Could not find the correct player data file for "+p.getName()+" to get money data from.",1);
}
PlayerStructure pd = (PlayerStructure)playerdata.get(p.getUniqueId());
//Found it. Read money and quit.
pd.money+=amt;
}
public static void givePlayerMoney(String p, double amt) {
if (Bukkit.getPlayer(p)!=null) {
@ -4743,18 +4694,9 @@ public class TwosideKeeper extends JavaPlugin implements Listener {
}
public static void givePlayerBankMoney(Player p, double amt) {
boolean found=false;
for (int i=0;i<playerdata.size();i++) {
PlayerStructure pd = playerdata.get(i);
if (pd.name.equalsIgnoreCase(p.getName())) {
//Found it. Read money and quit.
pd.bank_money+=amt;
found=true;
}
}
//Something bad happened if we got here.
if (!found) {
log("[WARNING] Could not find the correct player data file for "+p.getName()+" to get money data from.",1);
}
PlayerStructure pd = (PlayerStructure)playerdata.get(p.getUniqueId());
//Found it. Read money and quit.
pd.bank_money+=amt;
}
public static void givePlayerBankMoney(String p, double amt) {
if (Bukkit.getPlayer(p)!=null) {
@ -4861,13 +4803,7 @@ public class TwosideKeeper extends JavaPlugin implements Listener {
public void updateTitle(final Player p, final String message1) {
//Updates the target title for this player.
PlayerStructure pd=null;
for (int i=0;i<playerdata.size();i++) {
if (playerdata.get(i).name.equalsIgnoreCase(p.getName())) {
pd=playerdata.get(i);
break;
}
}
PlayerStructure pd = (PlayerStructure)playerdata.get(p.getUniqueId());
final PlayerStructure pd2=pd;
String MonsterName = pd.target.getType().toString().toLowerCase();
if (pd.target.getCustomName()!=null) {
@ -4925,13 +4861,7 @@ public class TwosideKeeper extends JavaPlugin implements Listener {
}
pd.title_task=Bukkit.getScheduler().scheduleSyncDelayedTask(this, new Runnable() {
public void run() {
PlayerStructure pd=null;
for (int i=0;i<playerdata.size();i++) {
if (playerdata.get(i).name.equalsIgnoreCase(p.getName())) {
pd=playerdata.get(i);
break;
}
}
PlayerStructure pd = (PlayerStructure)playerdata.get(p.getUniqueId());
pd.title_task=-1;
p.sendTitle("","");
}
@ -5043,26 +4973,17 @@ public class TwosideKeeper extends JavaPlugin implements Listener {
if (weapon.getType()==Material.BOW) {
basedmg = 4.5;
}
PlayerStructure pd = null;
int partylevel = 0;
for (int j=0;j<playerdata.size();j++) {
if (playerdata.get(j).name.equalsIgnoreCase(p.getName())) {
pd = playerdata.get(j);
if (playerdata.get(j).partybonus>0) {
partylevel = playerdata.get(j).partybonus;
log("Party level is "+partylevel,5);
if (partylevel>9) {partylevel=9;}
}
pd.prev_partydmg = partylevel;
}
PlayerStructure pd = (PlayerStructure)playerdata.get(p.getUniqueId());
if (pd.partybonus>0) {
partylevel = pd.partybonus;
log("Party level is "+partylevel,5);
if (partylevel>9) {partylevel=9;}
}
pd.prev_partydmg = partylevel;
int sharpnesslevel=0;
//Apply player enchantments next.
//Each sharpness level increases damage by 0.5.
@ -5332,19 +5253,11 @@ public class TwosideKeeper extends JavaPlugin implements Listener {
}
}
PlayerStructure pd = null;
if (target instanceof Player) {
Player p = (Player)target;
for (int j=0;j<playerdata.size();j++) {
if (playerdata.get(j).name.equalsIgnoreCase(p.getName())) {
pd = playerdata.get(j);
if (playerdata.get(j).partybonus>0) {
partylevel = playerdata.get(j).partybonus;
if (partylevel>9) {partylevel=9;}
}
}
}
PlayerStructure pd = (PlayerStructure)playerdata.get(p.getUniqueId());
partylevel = pd.partybonus;
if (partylevel>9) {partylevel=9;}
}
//Blocking: -((p.isBlocking())?ev.getDamage()*0.33:0) //33% damage will be reduced if we are blocking.
@ -5359,7 +5272,10 @@ public class TwosideKeeper extends JavaPlugin implements Listener {
*((GenericFunctions.isDefender(target))?0.9:(target.getEquipment().getItemInOffHand()!=null && target.getEquipment().getItemInOffHand().getType()==Material.SHIELD)?0.95:1);
log(finaldmg+" damage calculated for: "+target.getName()+".",5);
if (pd!=null) {
if (target instanceof Player) {
Player p = (Player)target;
PlayerStructure pd = (PlayerStructure)playerdata.get(p.getUniqueId());
pd.prev_armordef = finaldmg;
}
return finaldmg;

@ -1,6 +1,7 @@
package sig.plugin.TwosideKeeper;
import org.bukkit.Location;
import org.bukkit.Material;
import org.bukkit.entity.EntityType;
import org.bukkit.entity.LivingEntity;
import org.bukkit.entity.Monster;
@ -85,4 +86,10 @@ public final class TwosideKeeperAPI {
public static String getLocalizedItemName(ItemStack i) {
return GenericFunctions.UserFriendlyMaterialName(i);
}
public static String getLocalizedItemName(Material i) {
return GenericFunctions.UserFriendlyMaterialName(i);
}
public static String getLocalizedItemName(Material i, byte data) {
return GenericFunctions.UserFriendlyMaterialName(i,data);
}
}

Loading…
Cancel
Save