mirror of
https://github.com/DieReicheErethons/Brewery.git
synced 2024-11-22 11:35:16 +01:00
Added vomiting, "-all" for Words
This commit is contained in:
parent
09c1e84317
commit
6e2df99c14
19
config.yml
19
config.yml
@ -25,6 +25,12 @@ enableLoginDisallow: true
|
||||
# Ob der Spieler sich übertrinken kann und dann in Ohnmacht fällt (gekickt wird) und sich für einige Stunden nicht einloggen kann
|
||||
enableKickOnOverdrink: true
|
||||
|
||||
# Ob der Spieler sich bei großer Trunkenheit übergibt (unten definiertes Item aus dem Mund fallen lässt, dass nicht aufgesammelt werden kann und bis zum Despawnen liegen bleibt)
|
||||
enablePuke: true
|
||||
|
||||
# Item das beim Erbrechen mehrfach unaufsammelbar fallen gelassen wird
|
||||
pukeItem: SOUL_SAND
|
||||
|
||||
# Autosave Intervall in Minuten
|
||||
autosave: 3
|
||||
|
||||
@ -145,7 +151,7 @@ recipes:
|
||||
|
||||
|
||||
|
||||
# cooked: ALLE möglichen Zutaten und die nach dem Gähren daraus entstehenden Tranknamen: (leer für undefiniert)
|
||||
# cooked: ALLE möglichen Zutaten und die nach dem Gähren daraus entstehenden Tranknamen:
|
||||
|
||||
cooked:
|
||||
WHEAT: Getreideferment
|
||||
@ -153,14 +159,14 @@ cooked:
|
||||
APPLE: Apfelmost
|
||||
POTATO_ITEM: Kartoffelmaische
|
||||
LONG_GRASS: Kräuterbrühe
|
||||
RED_MUSHROOM:
|
||||
RED_MUSHROOM: Pilzsud
|
||||
|
||||
|
||||
|
||||
# words: Wörter und Buchstaben die bei Chatten während Trunkenheit ersetzt werden sollen.
|
||||
# Diese werden von oben nach unten gelesen und in dieser Reihenfolge wird ein geschriebener Satz dann verändert.
|
||||
|
||||
# replace: Zu ersetzendes Wort oder Buchstabe. (Besondere: "-space": ersetzt Leerzeichen, "-random": Einfügen in zufällige Position, "-start": Ganz am Anfang, "-end": Ganz ans Ende.)
|
||||
# replace: Zu ersetzendes Wort oder Buchstabe. (Besondere: "-space": ersetzt Leerzeichen, "-random": Einfügen in zufällige Position, "-all": Alles, "-start": Ganz am Anfang, "-end": Ganz ans Ende.)
|
||||
# to: In welches Wort es ersetzt werden soll.
|
||||
# pre: Wörter und Buchstaben vor dem gesuchten Wort (durch "," getrennt)
|
||||
# match: true = eines der "pre"-Wörter muss vor dem gesuchten Wort stehen, false = keines der "pre" Wörter darf vor dem gesuchten stehen
|
||||
@ -378,4 +384,9 @@ words:
|
||||
- replace: -end
|
||||
to: ' *hicks*'
|
||||
percentage: 70
|
||||
alcohol: 50
|
||||
alcohol: 50
|
||||
|
||||
- replace: -all
|
||||
to: '*rülps*'
|
||||
percentage: 3
|
||||
alcohol: 60
|
||||
|
10
readme.md
10
readme.md
@ -1,5 +1,4 @@
|
||||
# Brewery
|
||||
=======
|
||||
|
||||
**Brewery ist ein Bukkit-Plugin zum brauen auch alkoholischer Getränke.**
|
||||
|
||||
@ -116,11 +115,12 @@ Schlägt man den Zapfhahn mit einer Axt ab, so werden alle Getränke herausgesch
|
||||
|
||||
Der Alkoholgehalt des Trankes wird beim trinken auf den Spieler übertragen. Je nach Qualität hat dies verschiedene Auswirkungen.
|
||||
|
||||
* Der Spieler kann nicht mehr richtig laufen, er wird Torkeln und für eine Strecke weit aus länger brauchen
|
||||
* Der Spieler kann nicht mehr richtig laufen, er wird Torkeln und für eine Strecke weitaus länger brauchen
|
||||
* Es können Effekte wie Blindness, Confusion, Poison usw. auftreten
|
||||
* Der Chat wird stark verändert, vieles was geschrieben wird ist fast unverständlich, teilweise nur gebrabbel
|
||||
* Der Chat wird stark verändert, vieles was geschrieben wird ist fast unverständlich, teilweise nur Gebrabbel
|
||||
* Ist der getrunkene Alkohol sehr stark wird er sich leicht vergiften
|
||||
* Loggt der Spieler sich aus wird er Schwierigkeiten haben sich wieder ein zu loggen
|
||||
* Hat er sehr viel getrunken, besteht die Wahrscheinlichkeit, dass er sich übergibt
|
||||
* Loggt der Spieler sich aus wird er Schwierigkeiten haben sich wieder ein zu loggen, da sein Charakter nicht reagiert
|
||||
* Trinkt er zu viel wird er in Ohnmacht fallen (Disconnect)
|
||||
|
||||
### Ausnüchtern
|
||||
@ -129,4 +129,4 @@ Nach dem Trinken dauert es eine Weile, bis der Alkohol wieder verschwunden ist.
|
||||
|
||||
* Loggt der Spieler sich stark betrunken aus, kann es sein, dass er sich beim nächsten einloggen (wenn etwas Zeit vergangen ist) an einen ihm völlig unbekannten Ort mitten in der Pampa wiederfindet und keine Ahnung hat wie er dort hingkommen ist
|
||||
* Loggt er sich erst nach einigen Stunden oder am nächsten Morgen wieder ein befindet er sich bei seinem home, ebenfalls ohne jede Erinnerung
|
||||
* War der Alkohol nicht von der guten Qualität sind mit Nacherscheinungen zu rechnen (Slowness und Hunger).
|
||||
* War der Alkohol nicht von der guten Qualität sind mit Nacherscheinungen zu rechnen (Slowness und Hunger).
|
||||
|
@ -62,13 +62,13 @@ public class BIngredients {
|
||||
new Brew(uid, quality, cookRecipe, new BIngredients(ingredients, cookedTime));
|
||||
|
||||
cookedName = cookRecipe.getName(quality);
|
||||
potion.setDurability(Brew.PotionColor.valueOf(cookRecipe.getColor()).getColorId(false));
|
||||
potion.setDurability(Brew.PotionColor.valueOf(cookRecipe.getColor()).getColorId(true));
|
||||
|
||||
} else {
|
||||
// new base potion
|
||||
new Brew(uid, new BIngredients(ingredients, cookedTime));
|
||||
|
||||
if (state == 0) {// TODO sonst 1
|
||||
if (state == 1) {
|
||||
cookedName = "Schlammiger Sud";
|
||||
potion.setDurability(Brew.PotionColor.BLUE.getColorId(false));
|
||||
} else {
|
||||
|
@ -6,6 +6,8 @@ import java.util.HashMap;
|
||||
import org.bukkit.event.player.PlayerMoveEvent;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.entity.Entity;
|
||||
import org.bukkit.entity.Item;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
import org.bukkit.util.Vector;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.potion.PotionEffectType;
|
||||
@ -15,6 +17,9 @@ import com.dre.brewery.Brew;
|
||||
|
||||
public class BPlayer {
|
||||
public static Map<String, BPlayer> players = new HashMap<String, BPlayer>();// Players name and BPlayer
|
||||
private static Map<Player, Integer> pTasks = new HashMap<Player, Integer>();// Player and count
|
||||
private static int taskId;
|
||||
public static int pukeItemId;
|
||||
|
||||
private int quality = 0;// = quality of drunkeness * drunkeness
|
||||
private int drunkeness = 0;// = amount of drunkeness
|
||||
@ -92,6 +97,7 @@ public class BPlayer {
|
||||
} else {
|
||||
bPlayer.quality = bPlayer.getQuality() * 100;
|
||||
bPlayer.drunkeness = 100;
|
||||
addPuke(player, 60 + (int) (Math.random() * 60));
|
||||
P.p.msg(player, "Du kannst nicht mehr trinken");
|
||||
}
|
||||
}
|
||||
@ -253,6 +259,66 @@ public class BPlayer {
|
||||
PotionEffectType.HUNGER.createEffect(duration, amplifier).apply(player);
|
||||
}
|
||||
|
||||
// Chance that players puke on big drunkeness
|
||||
// runs every 6 sec, average chance is 10%, so should puke about every 60 sec
|
||||
// good quality can decrease the chance by up to 10%
|
||||
public void drunkPuke(Player player) {
|
||||
if (drunkeness >= 80) {
|
||||
if (drunkeness >= 90) {
|
||||
if (Math.random() < 0.15 - (getQuality() / 100)) {
|
||||
addPuke(player, 20 + (int) (Math.random() * 40));
|
||||
}
|
||||
} else {
|
||||
if (Math.random() < 0.08 - (getQuality() / 100)) {
|
||||
addPuke(player, 10 + (int) (Math.random() * 30));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// make a Player puke "count" items
|
||||
public static void addPuke(Player player, int count) {
|
||||
if (!P.p.getConfig().getBoolean("enablePuke", false)) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (pTasks.isEmpty()) {
|
||||
taskId = P.p.getServer().getScheduler().scheduleSyncRepeatingTask(P.p, new Runnable() {
|
||||
public void run() {
|
||||
pukeTask();
|
||||
}
|
||||
}, 1L, 1L);
|
||||
}
|
||||
pTasks.put(player, count);
|
||||
}
|
||||
|
||||
public static void pukeTask() {
|
||||
for (Player player : pTasks.keySet()) {
|
||||
puke(player);
|
||||
int newCount = pTasks.get(player) - 1;
|
||||
if (newCount == 0) {
|
||||
pTasks.remove(player);
|
||||
} else {
|
||||
pTasks.put(player, newCount);
|
||||
}
|
||||
}
|
||||
if (pTasks.isEmpty()) {
|
||||
P.p.getServer().getScheduler().cancelTask(taskId);
|
||||
}
|
||||
}
|
||||
|
||||
public static void puke(Player player) {
|
||||
Location loc = player.getLocation();
|
||||
Vector direction = loc.getDirection();
|
||||
direction.multiply(0.5);
|
||||
loc.setY(loc.getY() + 1.5);
|
||||
loc.setPitch(loc.getPitch() + 10);
|
||||
loc.add(direction);
|
||||
Item item = player.getWorld().dropItem(loc, new ItemStack(pukeItemId));
|
||||
item.setVelocity(direction);
|
||||
item.setPickupDelay(Integer.MAX_VALUE);
|
||||
}
|
||||
|
||||
public void drunkEffects(Player player) {
|
||||
int duration = 10 - getQuality();
|
||||
duration += drunkeness / 2;
|
||||
@ -293,11 +359,18 @@ public class BPlayer {
|
||||
public static void drunkeness() {
|
||||
for (String name : players.keySet()) {
|
||||
BPlayer bplayer = players.get(name);
|
||||
|
||||
if (bplayer.drunkeness > 30) {
|
||||
if (bplayer.offlineDrunk == 0) {
|
||||
Player player = getPlayer(name);
|
||||
if (player != null) {
|
||||
|
||||
bplayer.drunkEffects(player);
|
||||
|
||||
if (P.p.getConfig().getBoolean("enablePuke", false)) {
|
||||
bplayer.drunkPuke(player);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -99,6 +99,7 @@ public class P extends JavaPlugin {
|
||||
|
||||
// various Settings
|
||||
autosave = config.getInt("autosave", 3);
|
||||
BPlayer.pukeItemId = Material.matchMaterial(config.getString("pukeItem", "SOUL_SAND")).getId();
|
||||
|
||||
// loading recipes
|
||||
ConfigurationSection configSection = config.getConfigurationSection("recipes");
|
||||
@ -112,8 +113,9 @@ public class P extends JavaPlugin {
|
||||
configSection = config.getConfigurationSection("cooked");
|
||||
if (configSection != null) {
|
||||
for (String ingredient : configSection.getKeys(false)) {
|
||||
BIngredients.cookedNames.put(Material.matchMaterial(ingredient), (configSection.getString(ingredient)));
|
||||
BIngredients.possibleIngredients.add(Material.matchMaterial(ingredient));
|
||||
Material mat = Material.matchMaterial(ingredient);
|
||||
BIngredients.cookedNames.put(mat, (configSection.getString(ingredient, null)));
|
||||
BIngredients.possibleIngredients.add(mat);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -91,6 +91,8 @@ public class Words {
|
||||
} else if (from.equalsIgnoreCase("-start")) {
|
||||
from = words;
|
||||
to = to + words;
|
||||
} else if (from.equalsIgnoreCase("-all")) {
|
||||
from = words;
|
||||
} else if (from.equalsIgnoreCase("-space")) {
|
||||
from = " ";
|
||||
} else if (from.equalsIgnoreCase("-random")) {
|
||||
|
Loading…
Reference in New Issue
Block a user