Fixed Hangover

This commit is contained in:
Sn0wStorm
2013-09-01 23:47:01 +02:00
parent 16bb62c854
commit edfeab1fc8
5 changed files with 51 additions and 19 deletions
+24 -10
View File
@@ -19,12 +19,13 @@ import com.dre.brewery.Brew;
public class BPlayer {
public static Map<String, BPlayer> players = new HashMap<String, BPlayer>();// Players name and BPlayer
public static Map<Material, Integer> drainItems = new HashMap<Material, Integer>();// DrainItem Material and Strength
private static Map<Player, Integer> pTasks = new HashMap<Player, Integer>();// Player and count
private static int taskId;
// Settings
private static int taskId;
public static Map<Material, Integer> drainItems = new HashMap<Material, Integer>();// DrainItem Material and Strength
public static int pukeItemId;
public static int hangoverTime;
public static boolean overdrinkKick;
public static boolean enableHome;
public static boolean enableLoginDisallow;
@@ -144,7 +145,9 @@ public class BPlayer {
// drain the drunkeness by amount, returns true when player has to be removed
public boolean drain(String name, int amount) {
quality -= getQuality() * amount;
if (drunkeness > 0) {
quality -= getQuality() * amount;
}
drunkeness -= amount;
if (drunkeness > 0) {
if (offlineDrunk == 0) {
@@ -152,8 +155,13 @@ public class BPlayer {
offlineDrunk = drunkeness;
}
}
} else if (drunkeness <= (-1) * offlineDrunk) {
return true;
} else {
quality = getQuality();
if (drunkeness <= -offlineDrunk) {
if (drunkeness <= -hangoverTime) {
return true;
}
}
}
return false;
}
@@ -274,6 +282,10 @@ public class BPlayer {
passedOut = false;
}
public void disconnecting() {
offlineDrunk = drunkeness;
}
public void goHome(final Player player) {
if (homeType != null) {
Location home = null;
@@ -505,16 +517,18 @@ public class BPlayer {
P.p.errorLog("drunkeness should not be 0!");
return quality;
}
if (drunkeness < 0) {
return quality;
}
return Math.round(quality / drunkeness);
}
// opposite of quality
public int getHangoverQuality() {
return -getQuality() + 10;
}
public int getHangoverProgress() {
return offlineDrunk + drunkeness;
if (drunkeness < 0) {
return quality + 11;
}
return -getQuality() + 11;
}
}
+1
View File
@@ -137,6 +137,7 @@ public class P extends JavaPlugin {
// various Settings
autosave = config.getInt("autosave", 3);
BPlayer.pukeItemId = Material.matchMaterial(config.getString("pukeItem", "SOUL_SAND")).getId();
BPlayer.hangoverTime = config.getInt("hangoverDays", 0) * 24 * 60;
BPlayer.overdrinkKick = config.getBoolean("enableKickOnOverdrink", false);
BPlayer.enableHome = config.getBoolean("enableHome", false);
BPlayer.enableLoginDisallow = config.getBoolean("enableLoginDisallow", false);
@@ -242,6 +242,9 @@ public class CommandListener implements CommandExecutor {
public void cmdPlayer(CommandSender sender, String[] args) {
int drunkeness = p.parseInt(args[1]);
if (drunkeness < 0) {
return;
}
int quality = -1;
if (args.length > 2) {
quality = p.parseInt(args[2]);
@@ -6,6 +6,7 @@ import org.bukkit.event.player.PlayerItemConsumeEvent;
import org.bukkit.event.player.PlayerMoveEvent;
import org.bukkit.event.player.AsyncPlayerChatEvent;
import org.bukkit.event.player.PlayerLoginEvent;
import org.bukkit.event.player.PlayerQuitEvent;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener;
@@ -165,4 +166,12 @@ public class PlayerListener implements Listener {
}
}
}
@EventHandler
public void onPlayerQuit(PlayerQuitEvent event) {
BPlayer bplayer = BPlayer.get(event.getPlayer().getName());
if (bplayer != null) {
bplayer.disconnecting();
}
}
}