mirror of
https://github.com/exituser/Brewery.git
synced 2026-09-17 11:18:57 +00:00
More Options for Potion-Effects
This commit is contained in:
+48
-9
@@ -61,21 +61,46 @@ version: '1.3'
|
|||||||
# -- Recipes for Potions --
|
# -- Recipes for Potions --
|
||||||
|
|
||||||
# name: Different names for bad/normal/good (Formatting codes possible: such as &6)
|
# name: Different names for bad/normal/good (Formatting codes possible: such as &6)
|
||||||
# ingredients: List of 'material or id,data/amount' (Item-ids instead of material are deprecated by bukkit and may not work in the future!)
|
# ingredients: List of 'material or id,data/amount'
|
||||||
|
# (Item-ids instead of material are deprecated by bukkit and may not work in the future!)
|
||||||
# A list of materials can be found here: http://jd.bukkit.org/beta/apidocs/org/bukkit/Material.html
|
# A list of materials can be found here: http://jd.bukkit.org/beta/apidocs/org/bukkit/Material.html
|
||||||
# You can specify a data value, omitting it will ignore the data value of the added ingredient
|
# You can specify a data value, omitting it will ignore the data value of the added ingredient
|
||||||
# cookingtime: Time in real minutes ingredients have to boil
|
# cookingtime: Time in real minutes ingredients have to boil
|
||||||
# distillruns: How often it has to be distilled for full alcohol (0=without distilling)
|
# distillruns: How often it has to be distilled for full alcohol (0=without distilling)
|
||||||
# wood: Wood of the barrel 0=any 1=Birch 2=Oak 3=Jungle 4=Spruce 5=Acacia 6=Dark Oak
|
# wood: Wood of the barrel 0=any 1=Birch 2=Oak 3=Jungle 4=Spruce 5=Acacia 6=Dark Oak
|
||||||
# age: Time in Minecraft-days, the potion has to age in a barrel 0=no aging
|
# age: Time in Minecraft-days, the potion has to age in a barrel 0=no aging
|
||||||
# color: Color of the potion after distilling/aging. DARK_RED, RED, BRIGHT_RED, ORANGE, PINK, BLUE, CYAN, WATER, GREEN, BLACK, GREY, BRIGHT_GREY
|
# color: Color of the potion after distilling/aging.
|
||||||
|
# Usable Colors: DARK_RED, RED, BRIGHT_RED, ORANGE, PINK, BLUE, CYAN, WATER, GREEN, BLACK, GREY, BRIGHT_GREY
|
||||||
# difficulty: 1-10 accuracy needed to get good quality (1 = unaccurate/easy, 10 = very precise/hard)
|
# difficulty: 1-10 accuracy needed to get good quality (1 = unaccurate/easy, 10 = very precise/hard)
|
||||||
# alcohol: Absolute amount of alcohol 0-100 in a perfect potion (will be added directly to the player, where 100 means fainting)
|
# alcohol: Absolute amount of alcohol 0-100 in a perfect potion (will be added directly to the player, where 100 means fainting)
|
||||||
# effects: List of effect/duration Special potion-effect when drinking, duration in sek. Suffix name with 'X' to hide effect from label. Sample: POISONX/10
|
# effects: List of effect/level/duration Special potion-effect when drinking, duration in sek.
|
||||||
# (WEAKNESS, INCREASE_DAMAGE, SLOW and SPEED are always hidden.) Possible Effects: http://jd.bukkit.org/rb/apidocs/org/bukkit/potion/PotionEffectType.html
|
# Suffix name with 'X' to hide effect from label. Sample: 'POISONX/2/10' (WEAKNESS, INCREASE_DAMAGE, SLOW and SPEED are always hidden.)
|
||||||
# instant effects (such as HEAL) _must!_ have defined the level instead of the duration!
|
# Possible Effects: http://jd.bukkit.org/rb/apidocs/org/bukkit/potion/PotionEffectType.html
|
||||||
|
# Level or Duration ranges may be specified with a "-", ex. 'SPEED/1-2/30-40' = lvl 1 and 30 sec at worst and lvl 2 and 40 sec at best
|
||||||
|
# Ranges also work high-low, ex. 'POISON/3-1/20-5' for weaker effects at good quality.
|
||||||
|
# Highest possible Duration: 1638 sec. Instant Effects dont need any duration specified.
|
||||||
|
|
||||||
recipes:
|
recipes:
|
||||||
|
# Example Recipe with every possible entry first:
|
||||||
|
0:
|
||||||
|
name: Bad Example/Example/Good Example
|
||||||
|
ingredients:
|
||||||
|
- SUGAR_CANE/5
|
||||||
|
- 264/1
|
||||||
|
- INK_SACK,3/20
|
||||||
|
- 5,1/8
|
||||||
|
cookingtime: 3
|
||||||
|
distillruns: 2
|
||||||
|
wood: 4
|
||||||
|
age: 11
|
||||||
|
color: DARK_RED
|
||||||
|
difficulty: 3
|
||||||
|
alcohol: 23
|
||||||
|
effects:
|
||||||
|
- FIRE_RESISTANCE/20
|
||||||
|
- HEAL/1
|
||||||
|
- WEAKNESS/2-3/50-60
|
||||||
|
- POISONX/1-0/20-0
|
||||||
1:
|
1:
|
||||||
name: Skunky Wheatbeer/Wheatbeer/Fine Wheatbeer
|
name: Skunky Wheatbeer/Wheatbeer/Fine Wheatbeer
|
||||||
ingredients:
|
ingredients:
|
||||||
@@ -133,7 +158,7 @@ recipes:
|
|||||||
difficulty: 4
|
difficulty: 4
|
||||||
alcohol: 12
|
alcohol: 12
|
||||||
effects:
|
effects:
|
||||||
- WATER_BREATHINGX/150
|
- WATER_BREATHINGX/1-2/150
|
||||||
6:
|
6:
|
||||||
name: Bitter Rum/Spicy Rum/&6Golden Rum
|
name: Bitter Rum/Spicy Rum/&6Golden Rum
|
||||||
ingredients:
|
ingredients:
|
||||||
@@ -146,7 +171,8 @@ recipes:
|
|||||||
difficulty: 6
|
difficulty: 6
|
||||||
alcohol: 30
|
alcohol: 30
|
||||||
effects:
|
effects:
|
||||||
- FIRE_RESISTANCE/100
|
- FIRE_RESISTANCE/1/20-100
|
||||||
|
- POISONX/1-0/30-0
|
||||||
7:
|
7:
|
||||||
name: Lousy Vodka/Vodka/Russian Vodka
|
name: Lousy Vodka/Vodka/Russian Vodka
|
||||||
ingredients:
|
ingredients:
|
||||||
@@ -170,7 +196,7 @@ recipes:
|
|||||||
difficulty: 8
|
difficulty: 8
|
||||||
alcohol: 45
|
alcohol: 45
|
||||||
effects:
|
effects:
|
||||||
- POISON/20
|
- POISON/20-30
|
||||||
9:
|
9:
|
||||||
name: Potato soup
|
name: Potato soup
|
||||||
ingredients:
|
ingredients:
|
||||||
@@ -180,7 +206,18 @@ recipes:
|
|||||||
color: PINK
|
color: PINK
|
||||||
difficulty: 1
|
difficulty: 1
|
||||||
effects:
|
effects:
|
||||||
- HEAL/1
|
- HEAL/0-1
|
||||||
|
10:
|
||||||
|
name: Stale Coffee/Coffee/Strong Coffee
|
||||||
|
ingredients:
|
||||||
|
- INK_SACK,3/6
|
||||||
|
- MILK_BUCKET/1
|
||||||
|
cookingtime: 2
|
||||||
|
color: BLACK
|
||||||
|
difficulty: 3
|
||||||
|
effects:
|
||||||
|
- REGENERATION/1/2-5
|
||||||
|
- SPEED/1-2/10-25
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -194,6 +231,8 @@ cooked:
|
|||||||
POTATO_ITEM: Potatomash
|
POTATO_ITEM: Potatomash
|
||||||
LONG_GRASS: Boiled herbs
|
LONG_GRASS: Boiled herbs
|
||||||
RED_MUSHROOM: Mushroom brew
|
RED_MUSHROOM: Mushroom brew
|
||||||
|
INK_SACK: Colored brew
|
||||||
|
MILK_BUCKET: Milky water
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -110,7 +110,7 @@
|
|||||||
|
|
||||||
<repository>
|
<repository>
|
||||||
<id>sacredlabyrinth-repo</id>
|
<id>sacredlabyrinth-repo</id>
|
||||||
<url>http://repo.sacredlabyrinth.net:8081/artifactory/repo/</url>
|
<url>http://repo.sacredlabyrinth.net/artifactory/repo/</url>
|
||||||
<snapshots>
|
<snapshots>
|
||||||
<enabled>true</enabled>
|
<enabled>true</enabled>
|
||||||
<updatePolicy>always</updatePolicy>
|
<updatePolicy>always</updatePolicy>
|
||||||
|
|||||||
@@ -0,0 +1,120 @@
|
|||||||
|
package com.dre.brewery;
|
||||||
|
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
import org.bukkit.inventory.meta.PotionMeta;
|
||||||
|
import org.bukkit.potion.PotionEffectType;
|
||||||
|
|
||||||
|
public class BEffect {
|
||||||
|
|
||||||
|
private PotionEffectType type;
|
||||||
|
private short minlvl;
|
||||||
|
private short maxlvl;
|
||||||
|
private short minduration;
|
||||||
|
private short maxduration;
|
||||||
|
private boolean hidden = false;
|
||||||
|
|
||||||
|
|
||||||
|
public BEffect(String effectString) {
|
||||||
|
String[] effectSplit = effectString.split("/");
|
||||||
|
String effect = effectSplit[0];
|
||||||
|
if (effect.equalsIgnoreCase("WEAKNESS") ||
|
||||||
|
effect.equalsIgnoreCase("INCREASE_DAMAGE") ||
|
||||||
|
effect.equalsIgnoreCase("SLOW") ||
|
||||||
|
effect.equalsIgnoreCase("SPEED") ||
|
||||||
|
effect.equalsIgnoreCase("REGENERATION")) {
|
||||||
|
// hide these effects as they put crap into lore
|
||||||
|
// Dont write Regeneration into Lore, its already there storing data!
|
||||||
|
hidden = true;
|
||||||
|
} else if (effect.endsWith("X")) {
|
||||||
|
hidden = true;
|
||||||
|
effect = effect.substring(0, effect.length() - 1);
|
||||||
|
}
|
||||||
|
type = PotionEffectType.getByName(effect);
|
||||||
|
if (type == null) {
|
||||||
|
P.p.errorLog("Effect: " + effect + " does not exist!");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (effectSplit.length == 3) {
|
||||||
|
String[] range = effectSplit[1].split("-");
|
||||||
|
if (type.isInstant()) {
|
||||||
|
setLvl(range);
|
||||||
|
} else {
|
||||||
|
setLvl(range);
|
||||||
|
range = effectSplit[2].split("-");
|
||||||
|
setDuration(range);
|
||||||
|
}
|
||||||
|
} else if (effectSplit.length == 2) {
|
||||||
|
String[] range = effectSplit[1].split("-");
|
||||||
|
if (type.isInstant()) {
|
||||||
|
setLvl(range);
|
||||||
|
} else {
|
||||||
|
setDuration(range);
|
||||||
|
maxlvl = 3;
|
||||||
|
minlvl = 1;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
maxduration = 20;
|
||||||
|
minduration = 10;
|
||||||
|
maxlvl = 3;
|
||||||
|
minlvl = 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void setLvl(String[] range) {
|
||||||
|
if (range.length == 1) {
|
||||||
|
maxlvl = (short) P.p.parseInt(range[0]);
|
||||||
|
minlvl = 1;
|
||||||
|
} else {
|
||||||
|
maxlvl = (short) P.p.parseInt(range[1]);
|
||||||
|
minlvl = (short) P.p.parseInt(range[0]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void setDuration(String[] range) {
|
||||||
|
if (range.length == 1) {
|
||||||
|
maxduration = (short) P.p.parseInt(range[0]);
|
||||||
|
minduration = (short) (maxduration / 8);
|
||||||
|
} else {
|
||||||
|
maxduration = (short) P.p.parseInt(range[1]);
|
||||||
|
minduration = (short) P.p.parseInt(range[0]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void apply(int quality, Player player) {
|
||||||
|
int duration = calcDuration(quality);
|
||||||
|
int lvl = calcLvl(quality);
|
||||||
|
|
||||||
|
if (lvl < 1 || (duration < 1 && !type.isInstant())) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
duration *= 20;
|
||||||
|
duration /= type.getDurationModifier();
|
||||||
|
type.createEffect(duration, lvl - 1).apply(player);
|
||||||
|
}
|
||||||
|
|
||||||
|
public int calcDuration(float quality) {
|
||||||
|
return (int) Math.round(minduration + ((maxduration - minduration) * (quality / 10.0)));
|
||||||
|
}
|
||||||
|
|
||||||
|
public int calcLvl(float quality) {
|
||||||
|
return (int) Math.round(minlvl + ((maxlvl - minlvl) * (quality / 10.0)));
|
||||||
|
}
|
||||||
|
|
||||||
|
public void writeInto(PotionMeta meta, int quality) {
|
||||||
|
if ((calcDuration(quality) > 0 || type.isInstant()) && calcLvl(quality) > 0) {
|
||||||
|
meta.addCustomEffect(type.createEffect(0, 0), true);
|
||||||
|
} else {
|
||||||
|
meta.removeCustomEffect(type);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isValid() {
|
||||||
|
return type != null && minlvl >= 0 && maxlvl >= 0 && minduration >= 0 && maxduration >= 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isHidden() {
|
||||||
|
return hidden;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -79,7 +79,7 @@ public class BIngredients {
|
|||||||
int quality = (int) Math.round((getIngredientQuality(cookRecipe) + getCookingQuality(cookRecipe, false)) / 2.0);
|
int quality = (int) Math.round((getIngredientQuality(cookRecipe) + getCookingQuality(cookRecipe, false)) / 2.0);
|
||||||
P.p.debugLog("cooked potion has Quality: " + quality);
|
P.p.debugLog("cooked potion has Quality: " + quality);
|
||||||
Brew brew = new Brew(uid, quality, cookRecipe, this);
|
Brew brew = new Brew(uid, quality, cookRecipe, this);
|
||||||
Brew.addOrReplaceEffects(potionMeta, brew.getEffects());
|
Brew.addOrReplaceEffects(potionMeta, brew.getEffects(), brew.getQuality());
|
||||||
|
|
||||||
cookedName = cookRecipe.getName(quality);
|
cookedName = cookRecipe.getName(quality);
|
||||||
potion.setDurability(Brew.PotionColor.valueOf(cookRecipe.getColor()).getColorId(false));
|
potion.setDurability(Brew.PotionColor.valueOf(cookRecipe.getColor()).getColorId(false));
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
package com.dre.brewery;
|
package com.dre.brewery;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.Iterator;
|
import java.util.Iterator;
|
||||||
@@ -462,20 +463,10 @@ public class BPlayer {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static void addBrewEffects(Brew brew, Player player) {
|
public static void addBrewEffects(Brew brew, Player player) {
|
||||||
Map<String, Integer> effects = brew.getEffects();
|
ArrayList<BEffect> effects = brew.getEffects();
|
||||||
if (effects != null) {
|
if (effects != null) {
|
||||||
for (Map.Entry<String, Integer> entry : effects.entrySet()) {
|
for (BEffect effect : effects) {
|
||||||
PotionEffectType type = PotionEffectType.getByName(entry.getKey().replace("X", ""));
|
effect.apply(brew.getQuality(), player);
|
||||||
if (type != null) {
|
|
||||||
int duration = (entry.getValue() * brew.getQuality()) / 8;
|
|
||||||
if (type.isInstant()) {
|
|
||||||
type.createEffect(0, duration - 1).apply(player);
|
|
||||||
} else {
|
|
||||||
int amplifier = brew.getQuality() / 4;
|
|
||||||
duration /= type.getDurationModifier();
|
|
||||||
type.createEffect(duration * 20, amplifier).apply(player);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,8 +2,6 @@ package com.dre.brewery;
|
|||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
|
||||||
import java.util.HashMap;
|
|
||||||
|
|
||||||
import org.bukkit.configuration.ConfigurationSection;
|
import org.bukkit.configuration.ConfigurationSection;
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
@@ -22,7 +20,7 @@ public class BRecipe {
|
|||||||
private String color;// color of the destilled/finished potion
|
private String color;// color of the destilled/finished potion
|
||||||
private int difficulty;// difficulty to brew the potion, how exact the instruction has to be followed
|
private int difficulty;// difficulty to brew the potion, how exact the instruction has to be followed
|
||||||
private int alcohol;// Alcohol in perfect potion
|
private int alcohol;// Alcohol in perfect potion
|
||||||
private Map<String, Integer> effects = new HashMap<String, Integer>(); // Special Effect, Duration
|
private ArrayList<BEffect> effects = new ArrayList<BEffect>(); // Special Effects when drinking
|
||||||
|
|
||||||
public BRecipe(ConfigurationSection configSectionRecipes, String recipeId) {
|
public BRecipe(ConfigurationSection configSectionRecipes, String recipeId) {
|
||||||
String nameList = configSectionRecipes.getString(recipeId + ".name");
|
String nameList = configSectionRecipes.getString(recipeId + ".name");
|
||||||
@@ -80,20 +78,11 @@ public class BRecipe {
|
|||||||
List<String> effectStringList = configSectionRecipes.getStringList(recipeId + ".effects");
|
List<String> effectStringList = configSectionRecipes.getStringList(recipeId + ".effects");
|
||||||
if (effectStringList != null) {
|
if (effectStringList != null) {
|
||||||
for (String effectString : effectStringList) {
|
for (String effectString : effectStringList) {
|
||||||
String[] effectSplit = effectString.split("/");
|
BEffect effect = new BEffect(effectString);
|
||||||
String effect = effectSplit[0];
|
if (effect.isValid()) {
|
||||||
if (effect.equalsIgnoreCase("WEAKNESS") ||
|
effects.add(effect);
|
||||||
effect.equalsIgnoreCase("INCREASE_DAMAGE") ||
|
|
||||||
effect.equalsIgnoreCase("SLOW") ||
|
|
||||||
effect.equalsIgnoreCase("SPEED") ||
|
|
||||||
effect.equalsIgnoreCase("REGENERATION")) {
|
|
||||||
// hide these effects as they put crap into lore
|
|
||||||
effect = effect + "X";
|
|
||||||
}
|
|
||||||
if (effectSplit.length > 1) {
|
|
||||||
effects.put(effect, P.p.parseInt(effectSplit[1]));
|
|
||||||
} else {
|
} else {
|
||||||
effects.put(effect, 20);
|
P.p.errorLog("Error adding Effect to Recipe: " + getName(5));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -148,11 +137,16 @@ public class BRecipe {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
for (ItemStack ingredient : ingredients) {
|
for (ItemStack ingredient : ingredients) {
|
||||||
|
boolean matches = false;
|
||||||
for (ItemStack used : list) {
|
for (ItemStack used : list) {
|
||||||
if (!ingredientsMatch(used, ingredient)) {
|
if (ingredientsMatch(used, ingredient)) {
|
||||||
return true;
|
matches = true;
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if (!matches) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@@ -201,7 +195,7 @@ public class BRecipe {
|
|||||||
potionMeta.addCustomEffect((PotionEffectType.REGENERATION).createEffect((uid * 4), 0), true);
|
potionMeta.addCustomEffect((PotionEffectType.REGENERATION).createEffect((uid * 4), 0), true);
|
||||||
|
|
||||||
brew.convertLore(potionMeta, false);
|
brew.convertLore(potionMeta, false);
|
||||||
Brew.addOrReplaceEffects(potionMeta, effects);
|
Brew.addOrReplaceEffects(potionMeta, effects, quality);
|
||||||
|
|
||||||
potion.setItemMeta(potionMeta);
|
potion.setItemMeta(potionMeta);
|
||||||
return potion;
|
return potion;
|
||||||
@@ -282,7 +276,7 @@ public class BRecipe {
|
|||||||
return alcohol;
|
return alcohol;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Map<String, Integer> getEffects() {
|
public ArrayList<BEffect> getEffects() {
|
||||||
return effects;
|
return effects;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -242,7 +242,7 @@ public class Brew {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// return special effect
|
// return special effect
|
||||||
public Map<String, Integer> getEffects() {
|
public ArrayList<BEffect> getEffects() {
|
||||||
if (currentRecipe != null && quality > 0) {
|
if (currentRecipe != null && quality > 0) {
|
||||||
return currentRecipe.getEffects();
|
return currentRecipe.getEffects();
|
||||||
}
|
}
|
||||||
@@ -303,11 +303,12 @@ public class Brew {
|
|||||||
currentRecipe = recipe;
|
currentRecipe = recipe;
|
||||||
quality = calcQuality();
|
quality = calcQuality();
|
||||||
|
|
||||||
addOrReplaceEffects(potionMeta, getEffects());
|
addOrReplaceEffects(potionMeta, getEffects(), quality);
|
||||||
potionMeta.setDisplayName(P.p.color("&f" + recipe.getName(quality)));
|
potionMeta.setDisplayName(P.p.color("&f" + recipe.getName(quality)));
|
||||||
slotItem.setDurability(PotionColor.valueOf(recipe.getColor()).getColorId(canDistill()));
|
slotItem.setDurability(PotionColor.valueOf(recipe.getColor()).getColorId(canDistill()));
|
||||||
} else {
|
} else {
|
||||||
quality = 0;
|
quality = 0;
|
||||||
|
removeEffects(potionMeta);
|
||||||
potionMeta.setDisplayName(P.p.color("&f" + P.p.languageReader.get("Brew_DistillUndefined")));
|
potionMeta.setDisplayName(P.p.color("&f" + P.p.languageReader.get("Brew_DistillUndefined")));
|
||||||
slotItem.setDurability(PotionColor.GREY.getColorId(canDistill()));
|
slotItem.setDurability(PotionColor.GREY.getColorId(canDistill()));
|
||||||
}
|
}
|
||||||
@@ -347,11 +348,12 @@ public class Brew {
|
|||||||
currentRecipe = recipe;
|
currentRecipe = recipe;
|
||||||
quality = calcQuality();
|
quality = calcQuality();
|
||||||
|
|
||||||
addOrReplaceEffects(potionMeta, getEffects());
|
addOrReplaceEffects(potionMeta, getEffects(), quality);
|
||||||
potionMeta.setDisplayName(P.p.color("&f" + recipe.getName(quality)));
|
potionMeta.setDisplayName(P.p.color("&f" + recipe.getName(quality)));
|
||||||
item.setDurability(PotionColor.valueOf(recipe.getColor()).getColorId(canDistill()));
|
item.setDurability(PotionColor.valueOf(recipe.getColor()).getColorId(canDistill()));
|
||||||
} else {
|
} else {
|
||||||
quality = 0;
|
quality = 0;
|
||||||
|
removeEffects(potionMeta);
|
||||||
potionMeta.setDisplayName(P.p.color("&f" + P.p.languageReader.get("Brew_BadPotion")));
|
potionMeta.setDisplayName(P.p.color("&f" + P.p.languageReader.get("Brew_BadPotion")));
|
||||||
item.setDurability(PotionColor.GREY.getColorId(canDistill()));
|
item.setDurability(PotionColor.GREY.getColorId(canDistill()));
|
||||||
}
|
}
|
||||||
@@ -520,17 +522,26 @@ public class Brew {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Adds the Effect names to the Items description
|
// Adds the Effect names to the Items description
|
||||||
public static void addOrReplaceEffects(PotionMeta meta, Map<String, Integer> effects) {
|
public static void addOrReplaceEffects(PotionMeta meta, ArrayList<BEffect> effects, int quality) {
|
||||||
if (effects != null) {
|
if (effects != null) {
|
||||||
for (Map.Entry<String, Integer> entry : effects.entrySet()) {
|
for (BEffect effect : effects) {
|
||||||
if (!entry.getKey().endsWith("X")) {
|
if (!effect.isHidden()) {
|
||||||
PotionEffectType type = PotionEffectType.getByName(entry.getKey());
|
effect.writeInto(meta, quality);
|
||||||
if (type != null) {
|
|
||||||
meta.addCustomEffect(type.createEffect(0, 0), true);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Removes all effects except regeneration which stores data
|
||||||
|
public static void removeEffects(PotionMeta meta) {
|
||||||
|
if (meta.hasCustomEffects()) {
|
||||||
|
for (PotionEffect effect : meta.getCustomEffects()) {
|
||||||
|
PotionEffectType type = effect.getType();
|
||||||
|
if (!type.equals(PotionEffectType.REGENERATION)) {
|
||||||
|
meta.removeCustomEffect(type);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Returns the Index of a String from the list that contains this substring
|
// Returns the Index of a String from the list that contains this substring
|
||||||
|
|||||||
@@ -391,7 +391,7 @@ public class ConfigUpdater {
|
|||||||
// Add the new Wood Types to the Description
|
// Add the new Wood Types to the Description
|
||||||
int index = indexOfStart("# wood:");
|
int index = indexOfStart("# wood:");
|
||||||
if (index != -1) {
|
if (index != -1) {
|
||||||
setLine(index, "# wood: Wood of the barrel 0=any 1=Birch 2=Oak 3=Jungle 4=Spruce 5=Acacia 6=Dark Oak");
|
setLine(index, "# wood: Holz des Fasses 0=alle Holzsorten 1=Birke 2=Eiche 3=Jungel 4=Fichte 5=Akazie 6=Schwarzeiche");
|
||||||
}
|
}
|
||||||
|
|
||||||
// Add the Example to the Cooked Section
|
// Add the Example to the Cooked Section
|
||||||
@@ -401,8 +401,9 @@ public class ConfigUpdater {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Add new ingredients description
|
// Add new ingredients description
|
||||||
String replacedLine = "# ingredients: Auflistung von 'Material oder ID,Data/Anzahl' (Item-ids anstatt Material werden von Bukkit nicht mehr unterstützt und funktionieren möglicherweise in Zukunft nicht mehr!)";
|
String replacedLine = "# ingredients: Auflistung von 'Material oder ID,Data/Anzahl'";
|
||||||
String[] lines = new String[] {
|
String[] lines = new String[] {
|
||||||
|
"# (Item-ids anstatt Material werden von Bukkit nicht mehr unterstützt und funktionieren möglicherweise in Zukunft nicht mehr!)",
|
||||||
"# Eine Liste von allen Materialien kann hier gefunden werden: http://jd.bukkit.org/beta/apidocs/org/bukkit/Material.html",
|
"# Eine Liste von allen Materialien kann hier gefunden werden: http://jd.bukkit.org/beta/apidocs/org/bukkit/Material.html",
|
||||||
"# Es kann ein Data-Wert angegeben werden, weglassen ignoriert diesen beim hinzufügen einer Zutat"
|
"# Es kann ein Data-Wert angegeben werden, weglassen ignoriert diesen beim hinzufügen einer Zutat"
|
||||||
};
|
};
|
||||||
@@ -424,6 +425,62 @@ public class ConfigUpdater {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Split the Color explanation into two lines
|
||||||
|
replacedLine = "# color: Farbe des Getränks nach destillieren/reifen.";
|
||||||
|
lines = new String[] {
|
||||||
|
"# Benutzbare Farben: DARK_RED, RED, BRIGHT_RED, ORANGE, PINK, BLUE, CYAN, WATER, GREEN, BLACK, GREY, BRIGHT_GREY"
|
||||||
|
};
|
||||||
|
|
||||||
|
index = indexOfStart("# color:");
|
||||||
|
if (index != -1) {
|
||||||
|
setLine(index, replacedLine);
|
||||||
|
addLines(index + 1, lines);
|
||||||
|
} else {
|
||||||
|
index = indexOfStart("# age:");
|
||||||
|
if (index != -1) {
|
||||||
|
addLines(index + 1, lines);
|
||||||
|
addLines(index + 1, replacedLine);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Add all the new info to the effects description
|
||||||
|
replacedLine = "# effects: Auflistung Effekt/Level/Dauer Besonderere Trank-Effekte beim Trinken, Dauer in sek.";
|
||||||
|
lines = new String[] {
|
||||||
|
"# Ein 'X' an den Namen anhängen, um ihn zu verbergen. Bsp: 'POISONX/2/10' (WEAKNESS, INCREASE_DAMAGE, SLOW und SPEED sind immer verborgen.)",
|
||||||
|
"# Mögliche Effekte: http://jd.bukkit.org/rb/apidocs/org/bukkit/potion/PotionEffectType.html",
|
||||||
|
"# Minimale und Maximale Level/Dauer können durch \"-\" festgelegt werden, Bsp: 'SPEED/1-2/30-40' = Level 1 und 30 sek minimal, Level 2 und 40 sek maximal",
|
||||||
|
"# Diese Bereiche funktionieren auch umgekehrt, Bsp: 'POISON/3-1/20-5' für abschwächende Effekte bei guter Qualität",
|
||||||
|
"# Längste mögliche Effektdauer: 1638 sek. Es muss keine Dauer für Effekte mit sofortiger Wirkung angegeben werden."
|
||||||
|
};
|
||||||
|
|
||||||
|
index = indexOfStart("# effects:");
|
||||||
|
if (index != -1) {
|
||||||
|
setLine(index, replacedLine);
|
||||||
|
addLines(index + 1, lines);
|
||||||
|
} else {
|
||||||
|
index = indexOfStart("# alcohol:");
|
||||||
|
if (index != -1) {
|
||||||
|
addLines(index + 1, lines);
|
||||||
|
addLines(index + 1, replacedLine);
|
||||||
|
} else {
|
||||||
|
index = indexOfStart("# -- Rezepte für Getränke --");
|
||||||
|
if (index != -1) {
|
||||||
|
addLines(index + 2, lines);
|
||||||
|
addLines(index + 2, "", replacedLine);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (index != -1) {
|
||||||
|
index = indexOfStart("# (WEAKNESS, INCREASE_DAMAGE, SLOW und SPEED sind immer verborgen.) Mögliche Effekte:");
|
||||||
|
if (index != -1) {
|
||||||
|
config.remove(index);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
index = indexOfStart("# Bei Effekten mit sofortiger Wirkung ");
|
||||||
|
if (index != -1) {
|
||||||
|
config.remove(index);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Update en from 1.2 to 1.3
|
// Update en from 1.2 to 1.3
|
||||||
@@ -433,7 +490,7 @@ public class ConfigUpdater {
|
|||||||
// Add the new Wood Types to the Description
|
// Add the new Wood Types to the Description
|
||||||
int index = indexOfStart("# wood:");
|
int index = indexOfStart("# wood:");
|
||||||
if (index != -1) {
|
if (index != -1) {
|
||||||
setLine(index, "# wood: Holz des Fasses 0=alle Holzsorten 1=Birke 2=Eiche 3=Jungel 4=Fichte 5=Akazie 6=Schwarzeiche");
|
setLine(index, "# wood: Wood of the barrel 0=any 1=Birch 2=Oak 3=Jungle 4=Spruce 5=Acacia 6=Dark Oak");
|
||||||
}
|
}
|
||||||
|
|
||||||
// Add the Example to the Cooked Section
|
// Add the Example to the Cooked Section
|
||||||
@@ -443,8 +500,9 @@ public class ConfigUpdater {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Add new ingredients description
|
// Add new ingredients description
|
||||||
String replacedLine = "# ingredients: List of 'material or id,data/amount' (Item-ids instead of material are deprecated by bukkit and may not work in the future!)";
|
String replacedLine = "# ingredients: List of 'material or id,data/amount'";
|
||||||
String[] lines = new String[] {
|
String[] lines = new String[] {
|
||||||
|
"# (Item-ids instead of material are deprecated by bukkit and may not work in the future!)",
|
||||||
"# A list of materials can be found here: http://jd.bukkit.org/beta/apidocs/org/bukkit/Material.html",
|
"# A list of materials can be found here: http://jd.bukkit.org/beta/apidocs/org/bukkit/Material.html",
|
||||||
"# You can specify a data value, omitting it will ignore the data value of the added ingredient"
|
"# You can specify a data value, omitting it will ignore the data value of the added ingredient"
|
||||||
};
|
};
|
||||||
@@ -466,6 +524,62 @@ public class ConfigUpdater {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Split the Color explanation into two lines
|
||||||
|
replacedLine = "# color: Color of the potion after distilling/aging.";
|
||||||
|
lines = new String[] {
|
||||||
|
"# Usable Colors: DARK_RED, RED, BRIGHT_RED, ORANGE, PINK, BLUE, CYAN, WATER, GREEN, BLACK, GREY, BRIGHT_GREY"
|
||||||
|
};
|
||||||
|
|
||||||
|
index = indexOfStart("# color:");
|
||||||
|
if (index != -1) {
|
||||||
|
setLine(index, replacedLine);
|
||||||
|
addLines(index + 1, lines);
|
||||||
|
} else {
|
||||||
|
index = indexOfStart("# age:");
|
||||||
|
if (index != -1) {
|
||||||
|
addLines(index + 1, lines);
|
||||||
|
addLines(index + 1, replacedLine);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Add all the new info to the effects description
|
||||||
|
replacedLine = "# effects: List of effect/level/duration Special potion-effect when drinking, duration in sek.";
|
||||||
|
lines = new String[] {
|
||||||
|
"# Suffix name with 'X' to hide effect from label. Sample: 'POISONX/2/10' (WEAKNESS, INCREASE_DAMAGE, SLOW and SPEED are always hidden.)",
|
||||||
|
"# Possible Effects: http://jd.bukkit.org/rb/apidocs/org/bukkit/potion/PotionEffectType.html",
|
||||||
|
"# Level or Duration ranges may be specified with a \"-\", ex. 'SPEED/1-2/30-40' = lvl 1 and 30 sec at worst and lvl 2 and 40 sec at best",
|
||||||
|
"# Ranges also work high-low, ex. 'POISON/3-1/20-5' for weaker effects at good quality.",
|
||||||
|
"# Highest possible Duration: 1638 sec. Instant Effects dont need any duration specified."
|
||||||
|
};
|
||||||
|
|
||||||
|
index = indexOfStart("# effects:");
|
||||||
|
if (index != -1) {
|
||||||
|
setLine(index, replacedLine);
|
||||||
|
addLines(index + 1, lines);
|
||||||
|
} else {
|
||||||
|
index = indexOfStart("# alcohol:");
|
||||||
|
if (index != -1) {
|
||||||
|
addLines(index + 1, lines);
|
||||||
|
addLines(index + 1, replacedLine);
|
||||||
|
} else {
|
||||||
|
index = indexOfStart("# -- Recipes for Potions --");
|
||||||
|
if (index != -1) {
|
||||||
|
addLines(index + 2, lines);
|
||||||
|
addLines(index + 2, "", replacedLine);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (index != -1) {
|
||||||
|
index = indexOfStart("# (WEAKNESS, INCREASE_DAMAGE, SLOW and SPEED are always hidden.) Possible Effects:");
|
||||||
|
if (index != -1) {
|
||||||
|
config.remove(index);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
index = indexOfStart("# instant effects ");
|
||||||
|
if (index != -1) {
|
||||||
|
config.remove(index);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user