mirror of
https://github.com/DieReicheErethons/Brewery.git
synced 2024-11-25 12:05:16 +01:00
Added vomiting, "-all" for Words
This commit is contained in:
parent
09c1e84317
commit
6e2df99c14
17
config.yml
17
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
|
||||
@ -379,3 +385,8 @@ words:
|
||||
to: ' *hicks*'
|
||||
percentage: 70
|
||||
alcohol: 50
|
||||
|
||||
- replace: -all
|
||||
to: '*rülps*'
|
||||
percentage: 3
|
||||
alcohol: 60
|
||||
|
@ -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
|
||||
|
@ -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