mirror of
https://github.com/exituser/Brewery.git
synced 2026-09-17 05:28:59 +00:00
Fixed Hangover
This commit is contained in:
+14
-9
@@ -2,11 +2,13 @@
|
|||||||
|
|
||||||
|
|
||||||
# Verschiedene Einstellungen
|
# Verschiedene Einstellungen
|
||||||
|
# Standardeinstellungen sind in [] angegeben
|
||||||
|
# Löschen einzelner Einstellungen deaktiviert sie
|
||||||
|
|
||||||
# Ob der Spieler beim nächsten Einloggen nach starker Trunkenheit am nächsten morgen Zuhause "aufwacht" (Ein home Plugin muss installiert sein!)
|
# Ob der Spieler beim nächsten Einloggen nach starker Trunkenheit am nächsten morgen Zuhause "aufwacht" (Ein home Plugin muss installiert sein!) [true]
|
||||||
enableHome: true
|
enableHome: true
|
||||||
|
|
||||||
# Art des Nachhause-teleports:
|
# Art des Nachhause-teleports: ['cmd: home']
|
||||||
# bed = Spieler wird zu seinem Spawn Bett teleportiert
|
# bed = Spieler wird zu seinem Spawn Bett teleportiert
|
||||||
# SamplePlugin = installiertes home plugin. Unterstützt: ManagerXL. Wenn dies nicht geht:
|
# SamplePlugin = installiertes home plugin. Unterstützt: ManagerXL. Wenn dies nicht geht:
|
||||||
# 'cmd: home' = /home wird vom Spieler ausgelöst. Es sollte kein Verzögerungs, etc. plugin installiert sein!
|
# 'cmd: home' = /home wird vom Spieler ausgelöst. Es sollte kein Verzögerungs, etc. plugin installiert sein!
|
||||||
@@ -15,23 +17,23 @@ enableHome: true
|
|||||||
homeType: 'cmd: home'
|
homeType: 'cmd: home'
|
||||||
|
|
||||||
# Ob der Spieler nach etwas kürzerem Ausloggen an einem zufälligen Ort "aufwacht" (diese müssen durch '/br Wakeup add' von einem Admin festgelegt werden)
|
# Ob der Spieler nach etwas kürzerem Ausloggen an einem zufälligen Ort "aufwacht" (diese müssen durch '/br Wakeup add' von einem Admin festgelegt werden)
|
||||||
# Der Spieler wacht an dem nähesten zweier zufälliger Orte aus seiner Welt auf.
|
# Der Spieler wacht an dem nähesten zweier zufälliger Orte aus seiner Welt auf. [true]
|
||||||
enableWake: true
|
enableWake: true
|
||||||
|
|
||||||
# Der Text, den der Spieler beim Aufwachen sieht
|
# Der Text, den der Spieler beim Aufwachen sieht
|
||||||
wakeString: 'Ohh nein! Ich kann mich nicht erinnern, wie ich hier hergekommen bin... *hicks*'
|
wakeString: 'Ohh nein! Ich kann mich nicht erinnern, wie ich hier hergekommen bin... *hicks*'
|
||||||
|
|
||||||
# Ob der Spieler sich bei großer Trunkenheit teilweise nicht einloggen kann und kurz warten muss, da sein Charakter nicht reagiert
|
# Ob der Spieler sich bei großer Trunkenheit teilweise nicht einloggen kann und kurz warten muss, da sein Charakter nicht reagiert [true]
|
||||||
enableLoginDisallow: true
|
enableLoginDisallow: true
|
||||||
|
|
||||||
# Ob der Spieler sich übertrinken kann und dann in Ohnmacht fällt (gekickt wird) und sich für einige Minuten nicht einloggen kann
|
# Ob der Spieler sich übertrinken kann und dann in Ohnmacht fällt (gekickt wird) und sich für einige Minuten nicht einloggen kann [true]
|
||||||
enableKickOnOverdrink: true
|
enableKickOnOverdrink: true
|
||||||
|
|
||||||
# Ob der Spieler sich bei großer Trunkenheit übergibt (unten definiertes Item aus dem Mund fallen lässt)
|
# Ob der Spieler sich bei großer Trunkenheit übergibt (unten definiertes Item aus dem Mund fallen lässt) [true]
|
||||||
# Das Item kann nicht aufgesammelt werden und bleibt bis zum Despawnen liegen. (Achtung: Kann nach Serverrestart, oder durch Hopper aufgesammelt werden.)
|
# Das Item kann nicht aufgesammelt werden und bleibt bis zum Despawnen liegen. (Achtung: Kann nach Serverrestart, oder durch Hopper aufgesammelt werden.)
|
||||||
enablePuke: true
|
enablePuke: true
|
||||||
|
|
||||||
# Item das beim Erbrechen mehrfach unaufsammelbar fallen gelassen wird
|
# Item das beim Erbrechen mehrfach unaufsammelbar fallen gelassen wird [SOUL_SAND]
|
||||||
pukeItem: SOUL_SAND
|
pukeItem: SOUL_SAND
|
||||||
|
|
||||||
# Konsumierbares Item/Stärke. Senkt den Alkoholpegel um <Stärke> wenn konsumiert.
|
# Konsumierbares Item/Stärke. Senkt den Alkoholpegel um <Stärke> wenn konsumiert.
|
||||||
@@ -39,11 +41,14 @@ drainItems:
|
|||||||
- BREAD/4
|
- BREAD/4
|
||||||
- MILK_BUCKET/2
|
- MILK_BUCKET/2
|
||||||
|
|
||||||
# Färben der Iteminformationen je nach Qualität während sie sich 1. im Fass und/oder 2. im Braustand befinden
|
# Zeit (in Tagen) die Trunkenheitsdaten nach offlinegehen eines Spielers im Speicher verbleiben, um z.B. Kater-Effekte anzuwenden. [7]
|
||||||
|
hangoverDays: 7
|
||||||
|
|
||||||
|
# Färben der Iteminformationen je nach Qualität während sie sich 1. im Fass und/oder 2. im Braustand befinden [true, false]
|
||||||
colorInBarrels: true
|
colorInBarrels: true
|
||||||
colorInBrewer: false
|
colorInBrewer: false
|
||||||
|
|
||||||
# Autosave Intervall in Minuten
|
# Autosave Intervall in Minuten [3]
|
||||||
autosave: 3
|
autosave: 3
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -19,12 +19,13 @@ import com.dre.brewery.Brew;
|
|||||||
|
|
||||||
public class BPlayer {
|
public class BPlayer {
|
||||||
public static Map<String, BPlayer> players = new HashMap<String, BPlayer>();// Players name and 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 Map<Player, Integer> pTasks = new HashMap<Player, Integer>();// Player and count
|
||||||
|
private static int taskId;
|
||||||
|
|
||||||
// Settings
|
// 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 pukeItemId;
|
||||||
|
public static int hangoverTime;
|
||||||
public static boolean overdrinkKick;
|
public static boolean overdrinkKick;
|
||||||
public static boolean enableHome;
|
public static boolean enableHome;
|
||||||
public static boolean enableLoginDisallow;
|
public static boolean enableLoginDisallow;
|
||||||
@@ -144,7 +145,9 @@ public class BPlayer {
|
|||||||
|
|
||||||
// drain the drunkeness by amount, returns true when player has to be removed
|
// drain the drunkeness by amount, returns true when player has to be removed
|
||||||
public boolean drain(String name, int amount) {
|
public boolean drain(String name, int amount) {
|
||||||
quality -= getQuality() * amount;
|
if (drunkeness > 0) {
|
||||||
|
quality -= getQuality() * amount;
|
||||||
|
}
|
||||||
drunkeness -= amount;
|
drunkeness -= amount;
|
||||||
if (drunkeness > 0) {
|
if (drunkeness > 0) {
|
||||||
if (offlineDrunk == 0) {
|
if (offlineDrunk == 0) {
|
||||||
@@ -152,8 +155,13 @@ public class BPlayer {
|
|||||||
offlineDrunk = drunkeness;
|
offlineDrunk = drunkeness;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else if (drunkeness <= (-1) * offlineDrunk) {
|
} else {
|
||||||
return true;
|
quality = getQuality();
|
||||||
|
if (drunkeness <= -offlineDrunk) {
|
||||||
|
if (drunkeness <= -hangoverTime) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@@ -274,6 +282,10 @@ public class BPlayer {
|
|||||||
passedOut = false;
|
passedOut = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void disconnecting() {
|
||||||
|
offlineDrunk = drunkeness;
|
||||||
|
}
|
||||||
|
|
||||||
public void goHome(final Player player) {
|
public void goHome(final Player player) {
|
||||||
if (homeType != null) {
|
if (homeType != null) {
|
||||||
Location home = null;
|
Location home = null;
|
||||||
@@ -505,16 +517,18 @@ public class BPlayer {
|
|||||||
P.p.errorLog("drunkeness should not be 0!");
|
P.p.errorLog("drunkeness should not be 0!");
|
||||||
return quality;
|
return quality;
|
||||||
}
|
}
|
||||||
|
if (drunkeness < 0) {
|
||||||
|
return quality;
|
||||||
|
}
|
||||||
return Math.round(quality / drunkeness);
|
return Math.round(quality / drunkeness);
|
||||||
}
|
}
|
||||||
|
|
||||||
// opposite of quality
|
// opposite of quality
|
||||||
public int getHangoverQuality() {
|
public int getHangoverQuality() {
|
||||||
return -getQuality() + 10;
|
if (drunkeness < 0) {
|
||||||
}
|
return quality + 11;
|
||||||
|
}
|
||||||
public int getHangoverProgress() {
|
return -getQuality() + 11;
|
||||||
return offlineDrunk + drunkeness;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -137,6 +137,7 @@ public class P extends JavaPlugin {
|
|||||||
// various Settings
|
// various Settings
|
||||||
autosave = config.getInt("autosave", 3);
|
autosave = config.getInt("autosave", 3);
|
||||||
BPlayer.pukeItemId = Material.matchMaterial(config.getString("pukeItem", "SOUL_SAND")).getId();
|
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.overdrinkKick = config.getBoolean("enableKickOnOverdrink", false);
|
||||||
BPlayer.enableHome = config.getBoolean("enableHome", false);
|
BPlayer.enableHome = config.getBoolean("enableHome", false);
|
||||||
BPlayer.enableLoginDisallow = config.getBoolean("enableLoginDisallow", false);
|
BPlayer.enableLoginDisallow = config.getBoolean("enableLoginDisallow", false);
|
||||||
|
|||||||
@@ -242,6 +242,9 @@ public class CommandListener implements CommandExecutor {
|
|||||||
public void cmdPlayer(CommandSender sender, String[] args) {
|
public void cmdPlayer(CommandSender sender, String[] args) {
|
||||||
|
|
||||||
int drunkeness = p.parseInt(args[1]);
|
int drunkeness = p.parseInt(args[1]);
|
||||||
|
if (drunkeness < 0) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
int quality = -1;
|
int quality = -1;
|
||||||
if (args.length > 2) {
|
if (args.length > 2) {
|
||||||
quality = p.parseInt(args[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.PlayerMoveEvent;
|
||||||
import org.bukkit.event.player.AsyncPlayerChatEvent;
|
import org.bukkit.event.player.AsyncPlayerChatEvent;
|
||||||
import org.bukkit.event.player.PlayerLoginEvent;
|
import org.bukkit.event.player.PlayerLoginEvent;
|
||||||
|
import org.bukkit.event.player.PlayerQuitEvent;
|
||||||
import org.bukkit.event.EventHandler;
|
import org.bukkit.event.EventHandler;
|
||||||
import org.bukkit.event.EventPriority;
|
import org.bukkit.event.EventPriority;
|
||||||
import org.bukkit.event.Listener;
|
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();
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user