Added and Fixed lots of JavaDocs

This commit is contained in:
Sn0wStorm 2019-11-25 22:16:16 +01:00
parent c287b6350f
commit 16c03f9da1
32 changed files with 513 additions and 308 deletions

View File

@ -62,8 +62,8 @@ public class BIngredients {
}
/**
* Force add an ingredient to this
* Will not check if item is acceptable
* Force add an ingredient to this.
* <p>Will not check if item is acceptable
*
* @param ingredient the item to add
*/
@ -98,7 +98,9 @@ public class BIngredients {
ingredients.add(ingredientItem);
}
// returns an Potion item with cooked ingredients
/**
* returns an Potion item with cooked ingredients
*/
public ItemStack cook(int state) {
ItemStack potion = new ItemStack(Material.POTION);
@ -178,7 +180,9 @@ public class BIngredients {
return potion;
}
// returns amount of ingredients
/**
* returns amount of ingredients
*/
public int getIngredientsCount() {
int count = 0;
for (Ingredient ing : ingredients) {
@ -195,8 +199,9 @@ public class BIngredients {
return cookedTime;
}
// best recipe for current state of potion, STILL not always returns the
// correct one...
/**
* best recipe for current state of potion, STILL not always returns the correct one...
*/
public BRecipe getBestRecipe(float wood, float time, boolean distilled) {
float quality = 0;
int ingredientQuality;
@ -237,8 +242,9 @@ public class BIngredients {
return bestRecipe;
}
// returns recipe that is cooking only and matches the ingredients and
// cooking time
/**
* returns recipe that is cooking only and matches the ingredients and cooking time
*/
public BRecipe getCookRecipe() {
BRecipe bestRecipe = getBestRecipe(0, 0, false);
@ -272,7 +278,9 @@ public class BIngredients {
return best;
}
// returns the currently best matching recipe for distilling for the ingredients and cooking time
/**
* returns the currently best matching recipe for distilling for the ingredients and cooking time
*/
public BRecipe getDistillRecipe(float wood, float time) {
BRecipe bestRecipe = getBestRecipe(wood, time, true);
@ -285,7 +293,9 @@ public class BIngredients {
return null;
}
// returns currently best matching recipe for ingredients, cooking- and ageingtime
/**
* returns currently best matching recipe for ingredients, cooking- and ageingtime
*/
public BRecipe getAgeRecipe(float wood, float time, boolean distilled) {
BRecipe bestRecipe = getBestRecipe(wood, time, distilled);
@ -297,7 +307,9 @@ public class BIngredients {
return null;
}
// returns the quality of the ingredients conditioning given recipe, -1 if no recipe is near them
/**
* returns the quality of the ingredients conditioning given recipe, -1 if no recipe is near them
*/
public int getIngredientQuality(BRecipe recipe) {
float quality = 10;
int count;
@ -335,7 +347,9 @@ public class BIngredients {
return -1;
}
// returns the quality regarding the cooking-time conditioning given Recipe
/**
* returns the quality regarding the cooking-time conditioning given Recipe
*/
public int getCookingQuality(BRecipe recipe, boolean distilled) {
if (!recipe.needsDistilling() == distilled) {
return -1;
@ -351,7 +365,9 @@ public class BIngredients {
return -1;
}
// returns pseudo quality of distilling. 0 if doesnt match the need of the recipes distilling
/**
* returns pseudo quality of distilling. 0 if doesnt match the need of the recipes distilling
*/
public int getDistillQuality(BRecipe recipe, byte distillRuns) {
if (recipe.needsDistilling() != distillRuns > 0) {
return 0;
@ -359,7 +375,9 @@ public class BIngredients {
return 10 - Math.abs(recipe.getDistillRuns() - distillRuns);
}
// returns the quality regarding the barrel wood conditioning given Recipe
/**
* returns the quality regarding the barrel wood conditioning given Recipe
*/
public int getWoodQuality(BRecipe recipe, float wood) {
if (recipe.getWood() == 0) {
// type of wood doesnt matter
@ -370,7 +388,9 @@ public class BIngredients {
return Math.max(quality, 0);
}
// returns the quality regarding the ageing time conditioning given Recipe
/**
* returns the quality regarding the ageing time conditioning given Recipe
*/
public int getAgeQuality(BRecipe recipe, float time) {
int quality = 10 - Math.round(Math.abs(time - recipe.getAge()) * ((float) recipe.getDifficulty() / 2));

View File

@ -31,6 +31,9 @@ import java.util.ArrayList;
import java.util.List;
import java.util.Map;
/**
* A Multi Block Barrel with Inventory
*/
public class Barrel implements InventoryHolder {
public static List<Barrel> barrels = new ArrayList<>();
@ -52,7 +55,9 @@ public class Barrel implements InventoryHolder {
body = new BarrelBody(this, signoffset);
}
// load from file
/**
* load from file
*/
public Barrel(Block spigot, byte sign, BoundingBox bounds, Map<String, Object> items, float time) {
this.spigot = spigot;
if (isLarge()) {
@ -113,7 +118,9 @@ public class Barrel implements InventoryHolder {
return true;
}
// Ask for permission to destroy barrel
/**
* Ask for permission to destroy barrel
*/
public boolean hasPermsDestroy(Player player, Block block, BarrelDestroyEvent.Reason reason) {
// Listened to by LWCBarrel (IntegrationListener)
BarrelDestroyEvent destroyEvent = new BarrelDestroyEvent(this, block, reason, player);
@ -121,7 +128,9 @@ public class Barrel implements InventoryHolder {
return !destroyEvent.isCancelled();
}
// player opens the barrel
/**
* player opens the barrel
*/
public void open(Player player) {
if (inventory == null) {
if (isLarge()) {
@ -212,13 +221,15 @@ public class Barrel implements InventoryHolder {
return time;
}
// Returns true if this Block is part of this Barrel
/**
* Returns true if this Block is part of this Barrel
*/
public boolean hasBlock(Block block) {
return body.hasBlock(block);
}
/**
* Deprecated, just use hasBlock
* @deprecated just use hasBlock
*/
@Deprecated
public boolean hasWoodBlock(Block block) {
@ -226,14 +237,16 @@ public class Barrel implements InventoryHolder {
}
/**
* Deprecated, just use hasBlock
* @deprecated just use hasBlock
*/
@Deprecated
public boolean hasStairsBlock(Block block) {
return body.hasBlock(block);
}
// Get the Barrel by Block, null if that block is not part of a barrel
/**
* Get the Barrel by Block, null if that block is not part of a barrel
*/
@Nullable
public static Barrel get(Block block) {
if (block == null) {
@ -247,7 +260,9 @@ public class Barrel implements InventoryHolder {
}
}
// Get the Barrel by Sign or Spigot (Fastest)
/**
* Get the Barrel by Sign or Spigot (Fastest)
*/
@Nullable
public static Barrel getBySpigot(Block sign) {
// convert spigot if neccessary
@ -272,7 +287,9 @@ public class Barrel implements InventoryHolder {
return null;
}
// Get the barrel by its corpus (Wood Planks, Stairs)
/**
* Get the barrel by its corpus (Wood Planks, Stairs)
*/
@Nullable
public static Barrel getByWood(Block wood) {
if (LegacyUtil.isWoodPlanks(wood.getType()) || LegacyUtil.isWoodStairs(wood.getType())) {
@ -285,7 +302,9 @@ public class Barrel implements InventoryHolder {
return null;
}
// creates a new Barrel out of a sign
/**
* creates a new Barrel out of a sign
*/
public static boolean create(Block sign, Player player) {
Block spigot = BarrelBody.getSpigotOfSign(sign);
@ -383,39 +402,54 @@ public class Barrel implements InventoryHolder {
barrels.remove(this);
}
// is this a Large barrel?
/**
* is this a Large barrel?
*/
public boolean isLarge() {
return !isSmall();
}
// is this a Small barrel?
/**
* is this a Small barrel?
*/
public boolean isSmall() {
return LegacyUtil.isSign(spigot.getType());
}
// returns the Sign of a large barrel, the spigot if there is none
/**
* returns the Sign of a large barrel, the spigot if there is none
*/
public Block getSignOfSpigot() {
return body.getSignOfSpigot();
}
// returns the fence above/below a block, itself if there is none
/**
* returns the fence above/below a block, itself if there is none
*/
public static Block getSpigotOfSign(Block block) {
return BarrelBody.getSpigotOfSign(block);
}
// returns null if Barrel is correctly placed; the block that is missing when not
// the barrel needs to be formed correctly
// flag force to also check if chunk is not loaded
/**
* returns null if Barrel is correctly placed; the block that is missing when not.
* <p>The barrel needs to be formed correctly
*
* @param force to also check even if chunk is not loaded
*/
public Block getBrokenBlock(boolean force) {
return body.getBrokenBlock(force);
}
//unloads barrels that are in a unloading world
/**
* unloads barrels that are in a unloading world
*/
public static void onUnload(String name) {
barrels.removeIf(barrel -> barrel.spigot.getWorld().getName().equals(name));
}
// Saves all data
/**
* Saves all data
*/
public static void save(ConfigurationSection config, ConfigurationSection oldData) {
BUtil.createWorldSections(config);

View File

@ -10,7 +10,9 @@ import org.jetbrains.annotations.NotNull;
import java.util.Objects;
// The Blocks that make up a Barrel in the World
/**
* The Blocks that make up a Barrel in the World
*/
public class BarrelBody {
private final Barrel barrel;
@ -25,7 +27,9 @@ public class BarrelBody {
this.bounds = new BoundingBox(0, 0, 0, 0, 0, 0);
}
// Loading from file
/**
* Loading from file
*/
public BarrelBody(Barrel barrel, byte signoffset, BoundingBox bounds) {
this(barrel, signoffset);
@ -67,12 +71,16 @@ public class BarrelBody {
this.signoffset = signoffset;
}
// If the Sign of a Large Barrel gets destroyed, set signOffset to 0
/**
* If the Sign of a Large Barrel gets destroyed, set signOffset to 0
*/
public void destroySign() {
signoffset = 0;
}
// direction of the barrel from the spigot
/**
* direction of the barrel from the spigot
*/
public static int getDirection(Block spigot) {
int direction = 0;// 1=x+ 2=x- 3=z+ 4=z-
Material type = spigot.getRelative(0, 0, 1).getType();
@ -106,17 +114,23 @@ public class BarrelBody {
return direction;
}
// is this a Large barrel?
/**
* is this a Large barrel?
*/
public boolean isLarge() {
return barrel.isLarge();
}
// is this a Small barrel?
/**
* is this a Small barrel?
*/
public boolean isSmall() {
return barrel.isSmall();
}
// woodtype of the block the spigot is attached to
/**
* woodtype of the block the spigot is attached to
*/
public byte getWood() {
Block wood;
switch (getDirection(spigot)) { // 1=x+ 2=x- 3=z+ 4=z-
@ -160,13 +174,17 @@ public class BarrelBody {
return false;
}
// Returns true if the Offset of the clicked Sign matches the Barrel.
// This prevents adding another sign to the barrel and clicking that.
/**
* Returns true if the Offset of the clicked Sign matches the Barrel.
* <p>This prevents adding another sign to the barrel and clicking that.
*/
public boolean isSignOfBarrel(byte offset) {
return offset == 0 || signoffset == 0 || signoffset == offset;
}
// returns the Sign of a large barrel, the spigot if there is none
/**
* returns the Sign of a large barrel, the spigot if there is none
*/
public Block getSignOfSpigot() {
if (signoffset != 0) {
if (LegacyUtil.isSign(spigot.getType())) {
@ -182,7 +200,9 @@ public class BarrelBody {
return spigot;
}
// returns the fence above/below a block, itself if there is none
/**
* returns the fence above/below a block, itself if there is none
*/
public static Block getSpigotOfSign(Block block) {
int y = -2;
@ -197,9 +217,12 @@ public class BarrelBody {
return block;
}
// returns null if Barrel is correctly placed; the block that is missing when not
// the barrel needs to be formed correctly
// flag force to also check if chunk is not loaded
/**
* returns null if Barrel is correctly placed; the block that is missing when not.
* <p>the barrel needs to be formed correctly
*
* @param force to also check even if chunk is not loaded
*/
public Block getBrokenBlock(boolean force) {
if (force || BUtil.isChunkLoaded(spigot)) {
//spigot = getSpigotOfSign(spigot);

View File

@ -173,8 +173,11 @@ public class Brew implements Cloneable {
return null;
}
// returns a Brew by its UID
// Does not work anymore with new save system
/**
* returns a Brew by its UID
*
* @deprecated Does not work anymore with new save system
*/
@Deprecated
public static Brew get(int uid) {
if (uid < -1) {
@ -188,8 +191,11 @@ public class Brew implements Cloneable {
return legacyPotions.get(uid);
}
// returns UID of custom Potion item
// Does not work anymore with new save system
/**
* returns UID of custom Potion item
*
* @deprecated Does not work anymore with new save system
*/
@Deprecated
public static int getUID(ItemStack item) {
return getUID((PotionMeta) item.getItemMeta());
@ -197,6 +203,12 @@ public class Brew implements Cloneable {
// returns UID of custom Potion meta
// Does not work anymore with new save system
/**
* returns UID of custom Potion meta
*
* @deprecated Does not work anymore with new save system
*/
@Deprecated
public static int getUID(PotionMeta potionMeta) {
if (potionMeta.hasCustomEffect(PotionEffectType.REGENERATION)) {
@ -395,7 +407,9 @@ public class Brew implements Cloneable {
}
}
// return special effect
/**
* Get Special Drink Effects
*/
public List<BEffect> getEffects() {
if (currentRecipe != null && quality > 0) {
return currentRecipe.getEffects();
@ -427,7 +441,8 @@ public class Brew implements Cloneable {
}
/**
* Do some regular updates
* Do some regular updates.
* <p>Not really used, apart from legacy potion timed purge
*/
public void touch() {
lastUpdate = (int) ((double) (System.currentTimeMillis() - installTime) / 3600000D);
@ -734,8 +749,8 @@ public class Brew implements Cloneable {
}
/**
* Performant way of checking if this item is a Brew
* Does not give any guarantees that get() will return notnull for this item, i.e. if it is a brew but the data is corrupt
* Performant way of checking if this item is a Brew.
* <p>Does not give any guarantees that get() will return notnull for this item, i.e. if it is a brew but the data is corrupt
*
* @param item The Item to check
* @return True if the item is a brew
@ -854,8 +869,8 @@ public class Brew implements Cloneable {
}
/**
* Save brew data into meta: lore/nbt
* Should be called after any changes made to the brew
* Save brew data into meta: lore/nbt.
* <p>Should be called after any changes made to the brew
*/
public void save(ItemMeta meta) {
OutputStream itemSaveStream;
@ -881,8 +896,8 @@ public class Brew implements Cloneable {
}
/**
* Save brew data into the meta/lore of the specified item
* The meta on the item changes, so to make further changes to the meta, item.getItemMeta() has to be called again after this
* Save brew data into the meta/lore of the specified item.
* <p>The meta on the item changes, so to make further changes to the meta, item.getItemMeta() has to be called again after this
*
* @param item The item to save this brew into
*/
@ -1027,8 +1042,8 @@ public class Brew implements Cloneable {
}
/**
* Saves all data
* Legacy method to save to data file
* Saves all data,
* Legacy method to save to data file.
*/
public static void saveLegacy(ConfigurationSection config) {
for (Map.Entry<Integer, Brew> entry : legacyPotions.entrySet()) {

View File

@ -18,15 +18,22 @@ import org.jetbrains.annotations.Nullable;
import java.util.List;
/**
* Convenience methods to get common objects or do common things
* Convenience methods to get common objects or do common things.
* <p>Contains shortcuts and collects of some of the main functions of this Plugin
*
* <p>Next to this there are lots of public Methods in many Objects
* like Brew, Barrel, BCauldron, BRecipe, etc
* <p>In the api package, you can also find custom Events.
*/
public class BreweryApi {
/**
* Remove any data that this Plugin may associate with the given Block
* Currently Cauldrons and Barrels (Cauldron, Wood, Woodstairs, Fence, Sign)
* Does not remove any actual Blocks
* Returns true if anything was removed
* Remove any data that this Plugin may associate with the given Block.
* <p>Currently Cauldrons and Barrels (Cauldron, Wood, Woodstairs, Fence, Sign)
* <p>Does not remove any actual Blocks
* <p>Returns true if anything was removed
*
* @return true if anything was removed
*/
public static boolean removeAny(Block block) {
if (removeCauldron(block)) return true;
@ -34,8 +41,8 @@ public class BreweryApi {
}
/**
* Like removeAny() but removes data as if the given player broke the Block
* Currently only makes a difference for Logging
* <p>Like removeAny() but removes data as if the given player broke the Block.
* <p>Currently only makes a difference for Logging
*/
public static boolean removeAnyByPlayer(Block block, Player player) {
if (removeCauldron(block)) return true;
@ -47,17 +54,20 @@ public class BreweryApi {
// # # # # # Player # # # # #
// # # # # # # # # # # # #
/**
* Get the BPlayer for the given Player, containing drunkeness and hangover data.
*/
public static BPlayer getBPlayer(Player player) {
return BPlayer.get(player);
}
/**
* Set the Players drunkeness state
* Set the Players drunkeness state.
*
* @param player The Player to set the drunkeness on
* @param drunkeness The amount of drunkeness 0-100 to apply to the player
* @param quality The Quality 1-10 the drunkeness of the player should have
* zero Quality keeps the players current quality
* @param quality The Quality 1-10 the drunkeness of the player should have.
* <br>zero Quality keeps the players current quality
*/
public static void setPlayerDrunk(Player player, int drunkeness, int quality) {
if (drunkeness < 0) {
@ -100,10 +110,10 @@ public class BreweryApi {
// # # # # # # # # # # # #
/**
* Get a Brew from an ItemStack
* Reads the Brew data from the saved data on the item
* Checks if item is actually a Brew
* Returns null if item is not a Brew
* Get a Brew from an ItemStack.
* <p>Reads the Brew data from the saved data on the item
* <p>Checks if item is actually a Brew
* <p>Returns null if item is not a Brew
*/
@Nullable
public static Brew getBrew(ItemStack item) {
@ -111,10 +121,10 @@ public class BreweryApi {
}
/**
* Get a Brew from an ItemMeta
* Reads the Brew data from the saved data in the Meta
* Checks if meta has a Brew saved
* Returns null if meta is not a Brew
* Get a Brew from an ItemMeta.
* <p>Reads the Brew data from the saved data in the Meta
* <p>Checks if meta has a Brew saved
* <p>Returns null if meta is not a Brew
*/
@Nullable
public static Brew getBrew(ItemMeta meta) {
@ -123,14 +133,14 @@ public class BreweryApi {
/**
* Performant way to check if an item is a brew.
* Does not give any guarantees that getBrew() will return notnull for this item, i.e. if it is a brew but couldn't be loaded
* <p>Does not give any guarantees that getBrew() will return notnull for this item, i.e. if it is a brew but couldn't be loaded
*/
public static boolean isBrew(ItemStack item) {
return Brew.isBrew(item);
}
/**
* Create a Brew from the given Recipe
* Create a Brew from the given Recipe.
*
* @param recipe The Recipe to create a brew from
* @return The Brew that was created. Can use brew.createItem() to get an ItemStack
@ -145,9 +155,9 @@ public class BreweryApi {
// # # # # # # # # # # # #
/**
* Get a Barrel from a Block
* May be any Wood, Fence, Sign that is part of a Barrel
* Returns null if block is not part of a Barrel
* Get a Barrel from a Block.
* <p>May be any Wood, Fence, Sign that is part of a Barrel
* <p>Returns null if block is not part of a Barrel
*/
@Nullable
public static Barrel getBarrel(Block block) {
@ -155,9 +165,9 @@ public class BreweryApi {
}
/**
* Get the Inventory of a Block part of a Barrel
* May be any Wood, Fence or Sign that is part of a Barrel
* Returns null if block is not part of a Barrel
* Get the Inventory of a Block part of a Barrel.
* <p>May be any Wood, Fence or Sign that is part of a Barrel
* <p>Returns null if block is not part of a Barrel
*/
@Nullable
public static Inventory getBarrelInventory(Block block) {
@ -169,7 +179,7 @@ public class BreweryApi {
}
/**
* Remove any Barrel that this Block may be Part of
* Remove any Barrel that this Block may be Part of.
* Does not remove any actual Block
*
* @param block The Block thats part of the barrel, potions will drop there
@ -181,7 +191,7 @@ public class BreweryApi {
}
/**
* Remove any Barrel that this Block may be Part of, as if broken by the Player
* Remove any Barrel that this Block may be Part of, as if broken by the Player.
* Does not remove any actual Block from the World
*
* @param block The Block thats part of the barrel, potions will drop there
@ -203,8 +213,8 @@ public class BreweryApi {
// # # # # # # # # # # # #
/**
* Get a BCauldron from a Block
* Returns null if block is not a BCauldron
* Get a BCauldron from a Block.
* <p>Returns null if block is not a BCauldron
*/
@Nullable
public static BCauldron getCauldron(Block block) {
@ -212,9 +222,9 @@ public class BreweryApi {
}
/**
* Remove any data associated with a Cauldron at that given Block
* Returns true if a Cauldron was removed
* Does not remove the Block from the World
* Remove any data associated with a Cauldron at that given Block.
* <p>Returns true if a Cauldron was removed
* <p>Does not remove the Block from the World
*/
public static boolean removeCauldron(Block block) {
return BCauldron.remove(block);
@ -226,9 +236,9 @@ public class BreweryApi {
// # # # # # # # # # # # #
/**
* Get a BRecipe by its name
* The name is the middle one of the three if three are set in the config
* Returns null if recipe with that name does not exist
* Get a BRecipe by its name.
* <p>The name is the middle one of the three if three are set in the config
* <p>Returns null if recipe with that name does not exist
*/
@Nullable
public static BRecipe getRecipe(String name) {
@ -237,15 +247,15 @@ public class BreweryApi {
/**
* Add a New Recipe.
* Brews can be made out of this Recipe.
* The recipe can be changed or removed later.
* <p>Brews can be made out of this Recipe.
* <p>The recipe can be changed or removed later.
*
* @param recipe The Recipe to add
* @param saveForever Not Implemented yet
* If the recipe should be saved forever, even after the Server restarts
* If True: Recipe will be saved until removed manually
* If False: Recipe will be removed when the Server restarts, existing potions using
* this Recipe will become bad after continued aging, if the recipe is not added again.
* @param saveForever Not Implemented yet.
* <br>If the recipe should be saved forever, even after the Server restarts
* <br>If True: Recipe will be saved until removed manually
* <br>If False: Recipe will be removed when the Server restarts, existing potions using
* <br>this Recipe will become bad after continued aging, if the recipe is not added again.
*/
public static void addRecipe(BRecipe recipe, boolean saveForever) {
//recipe.setSaveInData(saveForever);
@ -258,7 +268,7 @@ public class BreweryApi {
/**
* Removes a Recipe from the List of all Recipes.
* This can also remove Recipes that were loaded from config, though these will be readded when reloading the config
* <p>This can also remove Recipes that were loaded from config, though these will be readded when reloading the config
*
* @param name The name of the recipe to remove
* @return The Recipe that was removed, null if none was removed
@ -296,8 +306,8 @@ public class BreweryApi {
// # # # # # # # # # # # #
/**
* Get A BCauldronRecipe by its name
* Returns null if recipe with that name does not exist
* Get A BCauldronRecipe by its name.
* <p>Returns null if recipe with that name does not exist
*/
@Nullable
public static BCauldronRecipe getCauldronRecipe(String name) {
@ -306,14 +316,14 @@ public class BreweryApi {
/**
* Add a New Cauldron Recipe.
* Base Brews coming out of the Cauldron can be made from this recipe
* The recipe can be changed or removed later.
* <p>Base Brews coming out of the Cauldron can be made from this recipe
* <p>The recipe can be changed or removed later.
*
* @param recipe The Cauldron Recipe to add
* @param saveForever Not Implemented yet
* If the recipe should be saved forever, even after the Server restarts
* If True: Recipe will be saved until removed manually
* If False: Recipe will be removed when the Server restarts
* @param saveForever Not Implemented yet.
* <br>If the recipe should be saved forever, even after the Server restarts
* <br>If True: Recipe will be saved until removed manually
* <br>If False: Recipe will be removed when the Server restarts
*/
public static void addCauldronRecipe(BCauldronRecipe recipe, boolean saveForever) {
//recipe.setSaveInData(saveForever);
@ -326,7 +336,8 @@ public class BreweryApi {
/**
* Removes a Cauldron Recipe from the List of all Cauldron Recipes.
* This can also remove Cauldron Recipes that were loaded from config, though these will be readded when reloading the config
* <p>This can also remove Cauldron Recipes that were loaded from config,
* though these will be readded when reloading the config
*
* @param name The name of the cauldron recipe to remove
* @return The Cauldron Recipe that was removed, null if none was removed

View File

@ -7,17 +7,15 @@ import org.bukkit.event.Event;
import org.bukkit.event.HandlerList;
import org.jetbrains.annotations.NotNull;
import java.util.List;
/**
* The Brewery Config was reloaded
* The Brewery Config was reloaded.
*/
public class ConfigLoadEvent extends Event {
private static final HandlerList handlers = new HandlerList();
/**
* One of the things one might need to do after reloading
* Removes a Recipe, can also remove config recipes
* Removes a Recipe, can also remove config recipes.
* One of the things one might need to do after reloading.
*
* @param name Name of the Recipe to remove
* @return The Recipe that was removed, null if none was removed
@ -27,8 +25,8 @@ public class ConfigLoadEvent extends Event {
}
/**
* One of the things one might need to do after reloading
* Removes a Cauldron Recipe, can also remove config recipes
* Removes a Cauldron Recipe, can also remove config recipes.
* One of the things one might need to do after reloading.
*
* @param name Name of the Cauldron Recipe to remove
* @return The Cauldron Recipe that was removed, null if none was removed

View File

@ -15,9 +15,9 @@ import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
/**
* Player adding an ingredient to a cauldron
* Always one item added at a time
* If needed use the caudrons add method to manually add more Items
* Player adding an ingredient to a cauldron.
* <p>Always one item added at a time.
* <p>If needed use the caudrons add method to manually add more Items
*/
public class IngedientAddEvent extends PlayerEvent implements Cancellable {
private static final HandlerList handlers = new HandlerList();
@ -46,17 +46,17 @@ public class IngedientAddEvent extends PlayerEvent implements Cancellable {
/**
* The Recipe item that matches the ingredient.
* This might not be the only recipe item that will match the ingredient
* Will be recalculated if the Ingredient is changed with the setIngredient Method
* <p>This might not be the only recipe item that will match the ingredient
* <p>Will be recalculated if the Ingredient is changed with the setIngredient Method
*/
public RecipeItem getRecipeItem() {
return rItem;
}
/**
* Get the item currently being added to the cauldron by the player
* Can be changed directly (mutable) or with the setter Method
* The amount is ignored and always one added
* Get the item currently being added to the cauldron by the player.
* <p>Can be changed directly (mutable) or with the setter Method
* <p>The amount is ignored and always one added
*
* @return The item being added
*/
@ -65,10 +65,10 @@ public class IngedientAddEvent extends PlayerEvent implements Cancellable {
}
/**
* Set the ingredient added to the cauldron to something else
* Will always be accepted, even when not in a recipe or the cooked lis
* The amount is ignored and always one added
* This also recalculates the recipeItem!
* Set the ingredient added to the cauldron to something else.
* <p>Will always be accepted, even when not in a recipe or the cooked lis
* <p>The amount is ignored and always one added
* <p>This also recalculates the recipeItem!
*
* @param ingredient The item to add instead
*/
@ -79,15 +79,15 @@ public class IngedientAddEvent extends PlayerEvent implements Cancellable {
}
/**
* If the amount of the item in the players hand should be decreased
* Default true
* If the amount of the item in the players hand should be decreased.
* (Default true)
*/
public boolean willTakeItem() {
return takeItem;
}
/**
* Set if the amount of the item in the players hand should be decreased
* Set if the amount of the item in the players hand should be decreased.
*
* @param takeItem if the item amount in the hand should be decreased
*/
@ -96,8 +96,8 @@ public class IngedientAddEvent extends PlayerEvent implements Cancellable {
}
/**
* Get the BlockData of the Cauldron
* May be null if the Cauldron does not exist anymore
* Get the BlockData of the Cauldron.
* <p>May be null if the Cauldron does not exist anymore
*
* @return The BlockData of the cauldron
*/
@ -111,9 +111,9 @@ public class IngedientAddEvent extends PlayerEvent implements Cancellable {
}
/**
* Get the water fill level of the Cauldron
* 0 = empty, 1 = something in, 2 = full
* Can use BCauldron.EMPTY, BCauldron.SOME, BCauldron.FULL
* Get the water fill level of the Cauldron.
* <p>0 = empty, 1 = something in, 2 = full
* <p>Can use BCauldron.EMPTY, BCauldron.SOME, BCauldron.FULL
*
* @return The fill level as a byte 0-2
*/
@ -127,7 +127,7 @@ public class IngedientAddEvent extends PlayerEvent implements Cancellable {
}
/**
* If the event is cancelled, no item will be added or taken from the player
* If the event is cancelled, no item will be added or taken from the player.
*/
@Override
public void setCancelled(boolean cancelled) {

View File

@ -13,7 +13,7 @@ import java.util.Objects;
/**
* The Player writes something in Chat or on a Sign and his words are distorted.
*
* This Event may be Async if the Chat Event is Async!
* <p>This Event may be Async if the Chat Event is Async!
*/
public class PlayerChatDistortEvent extends Event implements Cancellable {
private static final HandlerList handlers = new HandlerList();

View File

@ -11,8 +11,9 @@ import java.util.List;
/**
* A List of effects is applied to the player.
* This happens for various reasons like Alcohol level, Brew quality, Brew effects, etc.
* Can be changed or cancelled
* <p>This happens for various reasons like Alcohol level, Brew quality, Brew effects, etc.
*
* <p>Can be changed or cancelled
*/
public class PlayerEffectEvent extends PlayerEvent implements Cancellable {
private static final HandlerList handlers = new HandlerList();
@ -38,7 +39,7 @@ public class PlayerEffectEvent extends PlayerEvent implements Cancellable {
}
/**
* @return What type of effects are applied, sie EffectType
* @return What type of effects are applied, see EffectType
*/
public EffectType getEffectType() {
return effectType;
@ -66,27 +67,30 @@ public class PlayerEffectEvent extends PlayerEvent implements Cancellable {
}
/**
* The Type of Effect, or why an effect is being added to the player.
*/
public enum EffectType {
/**
* The Alcohol level demands its toll.
* Regularly applied depending on the players alcohol level
* By default it is just one Confusion effect
* <p>Regularly applied depending on the players alcohol level
* <p>By default it is just one Confusion effect
*/
ALCOHOL,
/**
* Effects of a Brew are applied to the player (drinking the Brew)
* These depend on alcohol and quality of the brew
* Effects of a Brew are applied to the player (drinking the Brew).
* <p>These depend on alcohol and quality of the brew
*/
DRINK,
/**
* When drinking a Brew with low Quality, these effects are applied
* When drinking a Brew with low Quality, these effects are applied.
*/
QUALITY,
/**
* When logging in after drinking, Hangover Effects are applied
* When logging in after drinking, Hangover Effects are applied.
*/
HANGOVER

View File

@ -8,9 +8,9 @@ import org.bukkit.event.player.PlayerEvent;
import org.jetbrains.annotations.NotNull;
/**
* The player pukes (throws puke items to the ground)
* Those items can never be picked up and despawn after the time set in the config
* Number of items to drop can be changed with count
* The player pukes (throws puke items to the ground).
* <p>Those items can never be picked up and despawn after the time set in the config
* <p>Number of items to drop can be changed with count
*/
public class PlayerPukeEvent extends PlayerEvent implements Cancellable {
private static final HandlerList handlers = new HandlerList();
@ -25,14 +25,14 @@ public class PlayerPukeEvent extends PlayerEvent implements Cancellable {
}
/**
* @return The Amount of items being dropped this time
* Get the Amount of items being dropped this time
*/
public int getCount() {
return count;
}
/**
* @param count Set the amount of items being dropped this time
* Set the amount of items being dropped this time
*/
public void setCount(int count) {
this.count = count;

View File

@ -9,9 +9,9 @@ import org.bukkit.util.Vector;
import org.jetbrains.annotations.NotNull;
/**
* The Players movement is hindered because of drunkeness
* Called each time before pushing the Player with the Vector push 10 times
* The Push Vector can be changed or multiplied
* The Players movement is hindered because of drunkeness.
* <p>Called each time before pushing the Player with the Vector push 10 times
* <p>The Push Vector can be changed or multiplied
*/
public class PlayerPushEvent extends PlayerEvent implements Cancellable {
private static final HandlerList handlers = new HandlerList();
@ -29,12 +29,9 @@ public class PlayerPushEvent extends PlayerEvent implements Cancellable {
return bPlayer;
}
// The Vector in which direction and magnitude the player is Pushed
// Can be changed directly or through setPush
/**
* Get the Vector in which direction and magnitude the player is pushed
* Can be changed directly or through setPush
* Get the Vector in which direction and magnitude the player is pushed.
* <p>Can be changed directly or through setPush
*
* @return The current push vector
*/
@ -43,7 +40,7 @@ public class PlayerPushEvent extends PlayerEvent implements Cancellable {
}
/**
* Set the Push vector
* Set the Push vector.
*
* @param push The new push vector, not null
*/

View File

@ -8,9 +8,9 @@ import org.bukkit.event.HandlerList;
import org.jetbrains.annotations.NotNull;
/**
* A Player opens a Barrel by rightclicking it
* The PlayerInteractEvent on the Barrel may be cancelled. In that case this never gets called
* Can be cancelled to silently deny opening the Barrel
* A Player opens a Barrel by rightclicking it.
* <p>The PlayerInteractEvent on the Barrel may be cancelled. In that case this never gets called
* <p>Can be cancelled to silently deny opening the Barrel
*/
public class BarrelAccessEvent extends BarrelEvent implements Cancellable {
private static final HandlerList handlers = new HandlerList();
@ -26,7 +26,7 @@ public class BarrelAccessEvent extends BarrelEvent implements Cancellable {
/**
* Gets the Block that was actually clicked.
* For access Permissions getSpigot() should be used
* <p>For access Permissions getSpigot() should be used
*/
public Block getClickedBlock() {
return clickedBlock;

View File

@ -7,8 +7,8 @@ import org.bukkit.event.HandlerList;
import org.jetbrains.annotations.NotNull;
/**
* Called when a Barrel is created by a Player by placing a Sign
* Cancelling this will silently fail the Barrel creation
* Called when a Barrel is created by a Player by placing a Sign.
* <p>Cancelling this will silently fail the Barrel creation
*/
public class BarrelCreateEvent extends BarrelEvent implements Cancellable {
private static final HandlerList handlers = new HandlerList();

View File

@ -9,10 +9,10 @@ import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
/**
* A Barrel is being destroyed by something, may not be by a Player
* A BarrelRemoveEvent will be called after this, if this is not cancelled
* Use the BarrelRemoveEvent to monitor any and all barrels being removed in a non cancellable way
* Cancelling the Event will stop the barrel from being destroyed
* A Barrel is being destroyed by something, may not be by a Player.
* <p>A BarrelRemoveEvent will be called after this, if this is not cancelled
* <p>Use the BarrelRemoveEvent to monitor any and all barrels being removed in a non cancellable way
* <p>Cancelling the Event will stop the barrel from being destroyed
*/
public class BarrelDestroyEvent extends BarrelEvent implements Cancellable {
private static final HandlerList handlers = new HandlerList();
@ -82,6 +82,9 @@ public class BarrelDestroyEvent extends BarrelEvent implements Cancellable {
return handlers;
}
/**
* The Reason why the Barrel is being destroyed.
*/
public enum Reason {
/**
* A Player Broke the Barrel

View File

@ -5,7 +5,8 @@ import org.bukkit.event.HandlerList;
import org.jetbrains.annotations.NotNull;
/**
* A Barrel is being removed. There may have been a BarrelDestroyEvent before this
* A Barrel is being removed.
* <p>There may have been a BarrelDestroyEvent before this.
* If not, Worldedit, other Plugins etc may be the cause for unexpected removal
*/
public class BarrelRemoveEvent extends BarrelEvent {

View File

@ -9,9 +9,9 @@ import org.bukkit.inventory.meta.ItemMeta;
import org.jetbrains.annotations.NotNull;
/**
* A Player Drinks a Brew
* The amount of alcohol and quality that will be added to the player can be get/set here
* If cancelled the drinking will fail silently
* A Player Drinks a Brew.
* <p>The amount of alcohol and quality that will be added to the player can be get/set here
* <p>If cancelled the drinking will fail silently
*/
public class BrewDrinkEvent extends BrewEvent implements Cancellable {
private static final HandlerList handlers = new HandlerList();

View File

@ -19,6 +19,9 @@ public abstract class BrewEvent extends Event {
return brew;
}
/**
* Gets the Meta of the Item this Brew is attached to
*/
@NotNull
public ItemMeta getItemMeta() {
return meta;

View File

@ -9,10 +9,10 @@ import org.bukkit.inventory.meta.PotionMeta;
import org.jetbrains.annotations.NotNull;
/**
* A Brew has been created or modified
* Usually happens on Filling from cauldron, distilling and aging.
* Modifications to the Brew or the PotionMeta can be done now
* Cancelling reverts the Brew to the state it was before the modification
* A Brew has been created or modified.
* <p>Usually happens on filling from cauldron, distilling and aging.
* <p>Modifications to the Brew or the PotionMeta can be done now
* <p>Cancelling reverts the Brew to the state it was before the modification
*/
public class BrewModifyEvent extends BrewEvent implements Cancellable {
private static final HandlerList handlers = new HandlerList();
@ -25,11 +25,17 @@ public class BrewModifyEvent extends BrewEvent implements Cancellable {
this.type = type;
}
/**
* Get the Type of modification being applied to the Brew.
*/
@NotNull
public Type getType() {
return type;
}
/**
* Get the BrewLore to modify lore on the Brew
*/
@NotNull
public BrewLore getLore() {
return new BrewLore(getBrew(), (PotionMeta) getItemMeta());
@ -42,7 +48,7 @@ public class BrewModifyEvent extends BrewEvent implements Cancellable {
/**
* Setting the Event cancelled cancels all modificatons to the brew.
* Modifications to the Brew or ItemMeta will not be applied
* <p>Modifications to the Brew or ItemMeta will not be applied
*/
@Override
public void setCancelled(boolean cancelled) {
@ -60,13 +66,44 @@ public class BrewModifyEvent extends BrewEvent implements Cancellable {
return handlers;
}
/**
* The Type of Modification being applied to the Brew.
*/
public enum Type {
CREATE, // A new Brew is created with arbitrary ways, like the create command
FILL, // Filled from a Cauldron into a new Brew
DISTILL, // Distilled in the Brewing stand
AGE, // Aged in a Barrel
UNLABEL, // Unlabeling Brew with command
STATIC, // Making Brew static with command
UNKNOWN // Unknown modification, unused
/**
* A new Brew is created with arbitrary ways, like the create command.
* <p>Cancelling this will disallow the creation
*/
CREATE,
/**
* Filled from a Cauldron into a new Brew.
*/
FILL,
/**
* Distilled in the Brewing stand.
*/
DISTILL,
/**
* Aged in a Barrel.
*/
AGE,
/**
* Unlabeling Brew with command.
*/
UNLABEL,
/**
* Making Brew static with command.
*/
STATIC,
/**
* Unknown modification, unused.
*/
UNKNOWN
}
}

View File

@ -68,7 +68,7 @@ public class InventoryListener implements Listener {
/**
* Clicking can either start or stop the new brew distillation tracking.
* Note that server restart will halt any ongoing brewing processes and
* <p>Note that server restart will halt any ongoing brewing processes and
* they will _not_ restart until a new click event.
*/
@EventHandler(priority = EventPriority.HIGH, ignoreCancelled = true)

View File

@ -15,6 +15,10 @@ import org.jetbrains.annotations.Nullable;
import java.util.ArrayList;
import java.util.List;
/**
* Represents the Lore on a Brew under Modification.
* <p>Can efficiently replace certain lines of lore, to update brew information on an item.
*/
public class BrewLore {
private Brew brew;
private PotionMeta meta;
@ -32,8 +36,8 @@ public class BrewLore {
}
/**
* Write the new lore into the Meta
* Should be called at the end of operation on this Brew Lore
* Write the new lore into the Meta.
* <p>Should be called at the end of operation on this Brew Lore
*/
public PotionMeta write() {
if (lineAddedOrRem) {
@ -286,7 +290,7 @@ public class BrewLore {
/**
* Adds or replaces a line of Lore.
* Searches for type and if not found for Substring lore and replaces it
* <p>Searches for type and if not found for Substring lore and replaces it
*
* @param type The Type of BrewLore to replace
* @param prefix The Prefix to add to the line of lore
@ -473,6 +477,9 @@ public class BrewLore {
return P.p.color(color);
}
/**
* Type of Lore Line
*/
public enum Type {
STARS("§s"),
CUSTOM("§t"),

View File

@ -7,8 +7,8 @@ import java.util.Random;
/**
* A Scramble Stream that uses XOR operations to scramble an outputstream.
* a byte generator feeded with the seed is used as xor source
* The resulting data can be unscrambled by the XORUnscrambleStream
* <p>a byte generator feeded with the seed is used as xor source
* <p>The resulting data can be unscrambled by the XORUnscrambleStream
*/
public class XORScrambleStream extends FilterOutputStream {
@ -29,8 +29,8 @@ public class XORScrambleStream extends FilterOutputStream {
/**
* To start the scrambling process this has to be called before writing any data to this stream.
* Before starting the scrambler, any data will just be passed through unscrambled to the underlying stream.
* The Scrambling can be started and stopped arbitrarily at any point, allowing for parts of unscrambled data in the stream.
* <br>Before starting the scrambler, any data will just be passed through unscrambled to the underlying stream.
* <br>The Scrambling can be started and stopped arbitrarily at any point, allowing for parts of unscrambled data in the stream.
*
* @throws IOException IOException
*/
@ -50,15 +50,15 @@ public class XORScrambleStream extends FilterOutputStream {
/**
* Stop the scrambling, any following data will be passed through unscrambled.
* The scrambling can be started again at any point after calling this
* <br>The scrambling can be started again at any point after calling this
*/
public void stop() {
running = false;
}
/**
* Mark the stream as unscrambled, any effort of unscrambing the data later will automatically read the already unscrambled data
* Useful if a stream may be scrambled or unscrambled, the unscrambler will automatically identify either way.
* Mark the stream as unscrambled, any effort of unscrambing the data later will automatically read the already unscrambled data.
* <p>Useful if a stream may be scrambled or unscrambled, the unscrambler will automatically identify either way.
*
* @throws IOException IOException
* @throws IllegalStateException If the Scrambler was started in normal scrambling mode before

View File

@ -11,8 +11,8 @@ import java.util.List;
/**
* A Scramble Stream that uses XOR operations to unscramble an inputstream.
* a byte generator feeded with the seed is used as xor source
* Used to unscramble data generated by the XORScrambleStream
* <p>a byte generator feeded with the seed is used as xor source
* <p>Used to unscramble data generated by the XORScrambleStream
*/
public class XORUnscrambleStream extends FilterInputStream {
@ -26,7 +26,7 @@ public class XORUnscrambleStream extends FilterInputStream {
private SuccessType successType = SuccessType.NONE;
/**
* Create a new instance of an XORUnscrambler, unscrambling the given inputstream
* Create a new instance of an XORUnscrambler, unscrambling the given inputstream.
*
* @param in The Inputstream to be unscrambled
* @param seed The seed used for unscrambling
@ -38,11 +38,12 @@ public class XORUnscrambleStream extends FilterInputStream {
}
/**
* Create a new instance of an XORUnscrambler, unscrambling the given inputstream
* If given a List of previous Seeds, the unscrambler will try all of them for unscrambling the stream in case the seed fails.
* Create a new instance of an XORUnscrambler, unscrambling the given inputstream.
* <p>If given a List of previous Seeds, the unscrambler will try all of them for unscrambling the stream in case the seed fails.
*
* @param in The Inputstream to be unscrambled
* @param seed The seed used for unscrambling
* @param prevSeeds List of previously used seeds
*/
public XORUnscrambleStream(InputStream in, long seed, List<Long> prevSeeds) {
super(in);
@ -52,8 +53,8 @@ public class XORUnscrambleStream extends FilterInputStream {
/**
* Before unscrambling, this has to be called to tell the unscrambler that scrambled data will follow.
* Before starting the unscrambler, any data will just be passed through unmodified to the underlying stream.
* The Unscrambling can be started and stopped arbitrarily at any point, allowing for parts of already unscrambled data in the stream.
* <br>Before starting the unscrambler, any data will just be passed through unmodified to the underlying stream.
* <br>The Unscrambling can be started and stopped arbitrarily at any point, allowing for parts of already unscrambled data in the stream.
*
* @throws IOException IOException
* @throws InvalidKeyException If the scrambled data could not be read, very likely caused by a wrong seed. Thrown after checking all previous seeds.
@ -99,7 +100,7 @@ public class XORUnscrambleStream extends FilterInputStream {
/**
* Stop the unscrambling, any following data will be passed through unmodified.
* The unscrambling can be started again at any point after calling this
* <p>The unscrambling can be started again at any point after calling this
*/
public void stop() {
running = false;
@ -126,7 +127,7 @@ public class XORUnscrambleStream extends FilterInputStream {
}
/**
* What was used to unscramble the stream, it was already unscrambled, Main Seed, Prev Seed
* What was used to unscramble the stream: it was already unscrambled | Main Seed | Prev Seed
*
* @return The Type of Seed used to unscramble this, if any
*/
@ -180,10 +181,28 @@ public class XORUnscrambleStream extends FilterInputStream {
markRunning = running;
}
/**
* What succeeded in unscrambling the Stream.
*/
public static enum SuccessType {
/**
* The Stream was already unscrambled.
*/
UNSCRAMBLED,
/**
* The Main Seed was used to unscramble the Stream.
*/
MAIN_SEED,
/**
* One of the Previous Seeds was used to unscramble the Stream.
*/
PREV_SEED,
/**
* It was not successful.
*/
NONE;
}
}

View File

@ -16,6 +16,9 @@ import java.util.List;
import java.util.Set;
import java.util.stream.Collectors;
/**
* A Recipe for the Base Potion coming out of the Cauldron.
*/
public class BCauldronRecipe {
public static List<BCauldronRecipe> recipes = new ArrayList<>();
public static int numConfigRecipes;
@ -32,8 +35,8 @@ public class BCauldronRecipe {
/**
* A New Cauldron Recipe with the given name
* Use new BCauldronRecipe.Builder() for easier Cauldron Recipe Creation
* A New Cauldron Recipe with the given name.
* <p>Use new BCauldronRecipe.Builder() for easier Cauldron Recipe Creation
*
* @param name Name of the Cauldron Recipe
*/
@ -134,9 +137,9 @@ public class BCauldronRecipe {
/**
* Find how much these ingredients match the given ones from 0-10.
* If any ingredient is missing, returns 0
* If all Ingredients and their amounts are equal, returns 10
* Returns something between 0 and 10 if all ingredients present, but differing amounts, depending on how much the amount differs.
* <p>If any ingredient is missing, returns 0
* <br>If all Ingredients and their amounts are equal, returns 10
* <br>Returns something between 0 and 10 if all ingredients present, but differing amounts, depending on how much the amount differs.
*/
public float getIngredientMatch(List<Ingredient> items) {
if (items.size() < ingredients.size()) {
@ -210,27 +213,27 @@ public class BCauldronRecipe {
}
/**
* Gets a Modifiable Sublist of the CauldronRecipes that are loaded by config
* Changes are directly reflected by the main list of all recipes
* Changes to the main List of all CauldronRecipes will make the reference to this sublist invalid
* Gets a Modifiable Sublist of the CauldronRecipes that are loaded by config.
* <p>Changes are directly reflected by the main list of all recipes
* <br>Changes to the main List of all CauldronRecipes will make the reference to this sublist invalid
*
* After adding or removing elements, CauldronRecipes.numConfigRecipes MUST be updated!
* <p>After adding or removing elements, CauldronRecipes.numConfigRecipes MUST be updated!
*/
public static List<BCauldronRecipe> getConfigRecipes() {
return recipes.subList(0, numConfigRecipes);
}
/**
* Gets a Modifiable Sublist of the CauldronRecipes that are added by plugins
* Changes are directly reflected by the main list of all recipes
* Changes to the main List of all CauldronRecipes will make the reference to this sublist invalid
* Gets a Modifiable Sublist of the CauldronRecipes that are added by plugins.
* <p>Changes are directly reflected by the main list of all recipes
* <br>Changes to the main List of all CauldronRecipes will make the reference to this sublist invalid
*/
public static List<BCauldronRecipe> getAddedRecipes() {
return recipes.subList(numConfigRecipes, recipes.size());
}
/**
* Gets the main List of all CauldronRecipes
* Gets the main List of all CauldronRecipes.
*/
public static List<BCauldronRecipe> getAllRecipes() {
return recipes;
@ -272,6 +275,9 @@ public class BCauldronRecipe {
return null;
}*/
/**
* Builder to easily create BCauldron recipes.
*/
public static class Builder {
private BCauldronRecipe recipe;

View File

@ -20,6 +20,9 @@ import java.util.Collections;
import java.util.List;
import java.util.ListIterator;
/**
* A Recipe used to Brew a Brewery Potion.
*/
public class BRecipe {
private static List<BRecipe> recipes = new ArrayList<>();
@ -54,8 +57,8 @@ public class BRecipe {
}
/**
* New BRecipe with Name
* Use new BRecipe.Builder() for easier Recipe Creation
* New BRecipe with Name.
* <p>Use new BRecipe.Builder() for easier Recipe Creation
*
* @param name The name for all qualities
*/
@ -66,8 +69,8 @@ public class BRecipe {
}
/**
* New BRecipe with Names
* Use new BRecipe.Builder() for easier Recipe Creation
* New BRecipe with Names.
* <p>Use new BRecipe.Builder() for easier Recipe Creation
*
* @param names {name bad, name normal, name good}
*/
@ -311,7 +314,9 @@ public class BRecipe {
return null;
}
// check every part of the recipe for validity
/**
* check every part of the recipe for validity.
*/
public boolean isValid() {
if (ingredients == null || ingredients.isEmpty()) {
P.p.errorLog("No ingredients could be loaded for Recipe: " + getRecipeName());
@ -348,7 +353,9 @@ public class BRecipe {
return true;
}
// allowed deviation to the recipes count of ingredients at the given difficulty
/**
* allowed deviation to the recipes count of ingredients at the given difficulty
*/
public int allowedCountDiff(int count) {
if (count < 8) {
count = 8;
@ -361,7 +368,9 @@ public class BRecipe {
return allowedCountDiff;
}
// allowed deviation to the recipes cooking-time at the given difficulty
/**
* allowed deviation to the recipes cooking-time at the given difficulty
*/
public int allowedTimeDiff(int time) {
if (time < 8) {
time = 8;
@ -374,7 +383,9 @@ public class BRecipe {
return allowedTimeDiff;
}
// difference between given and recipe-wanted woodtype
/**
* difference between given and recipe-wanted woodtype
*/
public float getWoodDiff(float wood) {
return Math.abs(wood - this.wood);
}
@ -391,7 +402,9 @@ public class BRecipe {
return age != 0;
}
// true if given list misses an ingredient
/**
* true if given list misses an ingredient
*/
public boolean isMissingIngredients(List<Ingredient> list) {
if (list.size() < ingredients.size()) {
return true;
@ -431,7 +444,8 @@ public class BRecipe {
}
/**
* Create a Potion from this Recipe with best values. Quality can be set, but will reset to 10 if put in a barrel
* Create a Potion from this Recipe with best values.
* Quality can be set, but will reset to 10 if unset immutable and put in a barrel
*
* @param quality The Quality of the Brew
* @return The Created Item
@ -441,7 +455,8 @@ public class BRecipe {
}
/**
* Create a Brew from this Recipe with best values. Quality can be set, but will reset to 10 if unset immutable and put in a barrel
* Create a Brew from this Recipe with best values.
* Quality can be set, but will reset to 10 if unset immutable and put in a barrel
*
* @param quality The Quality of the Brew
* @return The created Brew
@ -478,7 +493,9 @@ public class BRecipe {
// Getter
// how many of a specific ingredient in the recipe
/**
* how many of a specific ingredient in the recipe
*/
public int amountOf(Ingredient ing) {
for (RecipeItem rItem : ingredients) {
if (rItem.matches(ing)) {
@ -488,7 +505,9 @@ public class BRecipe {
return 0;
}
// how many of a specific ingredient in the recipe
/**
* how many of a specific ingredient in the recipe
*/
public int amountOf(ItemStack item) {
for (RecipeItem rItem : ingredients) {
if (rItem.matches(item)) {
@ -498,12 +517,16 @@ public class BRecipe {
return 0;
}
// Same as getName(5)
/**
* Same as getName(5)
*/
public String getRecipeName() {
return getName(5);
}
// name that fits the quality
/**
* name that fits the quality
*/
public String getName(int quality) {
if (name.length > 2) {
if (quality <= 3) {
@ -518,7 +541,9 @@ public class BRecipe {
}
}
// If one of the quality names equalIgnoreCase given name
/**
* If one of the quality names equalIgnoreCase given name
*/
public boolean hasName(String name) {
for (String test : this.name) {
if (test.equalsIgnoreCase(name)) {
@ -549,7 +574,9 @@ public class BRecipe {
return color;
}
// get the woodtype
/**
* get the woodtype
*/
public byte getWood() {
return wood;
}
@ -680,27 +707,27 @@ public class BRecipe {
}
/**
* Gets a Modifiable Sublist of the Recipes that are loaded by config
* Changes are directly reflected by the main list of all recipes
* Changes to the main List of all recipes will make the reference to this sublist invalid
* Gets a Modifiable Sublist of the Recipes that are loaded by config.
* <p>Changes are directly reflected by the main list of all recipes
* <br>Changes to the main List of all recipes will make the reference to this sublist invalid
*
* After adding or removing elements, BRecipe.numConfigRecipes MUST be updated!
* <p>After adding or removing elements, BRecipe.numConfigRecipes MUST be updated!
*/
public static List<BRecipe> getConfigRecipes() {
return recipes.subList(0, numConfigRecipes);
}
/**
* Gets a Modifiable Sublist of the Recipes that are added by plugins
* Changes are directly reflected by the main list of all recipes
* Changes to the main List of all recipes will make the reference to this sublist invalid
* Gets a Modifiable Sublist of the Recipes that are added by plugins.
* <p>Changes are directly reflected by the main list of all recipes
* <br>Changes to the main List of all recipes will make the reference to this sublist invalid
*/
public static List<BRecipe> getAddedRecipes() {
return recipes.subList(numConfigRecipes, recipes.size());
}
/**
* Gets the main List of all recipes
* Gets the main List of all recipes.
*/
public static List<BRecipe> getAllRecipes() {
return recipes;
@ -725,6 +752,9 @@ public class BRecipe {
}*/
/**
* Builder to easily create Recipes
*/
public static class Builder {
private BRecipe recipe;

View File

@ -16,7 +16,7 @@ import java.util.Objects;
/**
* Minecraft Item with custon name and lore.
* Mostly used for Custom Items of the Config, but also for general custom items
* <p>Mostly used for Custom Items of the Config, but also for general custom items
*/
public class CustomItem extends RecipeItem implements Ingredient {
@ -167,7 +167,7 @@ public class CustomItem extends RecipeItem implements Ingredient {
/**
* If this item has lore that matches the given lore.
* It matches if our lore is contained in the given lore consecutively, ignoring color of the given lore.
* <p>It matches if our lore is contained in the given lore consecutively, ignoring color of the given lore.
*
* @param usedLore The given lore to match
* @return True if the given lore contains our lore consecutively

View File

@ -13,7 +13,7 @@ import java.util.Objects;
/**
* Custom Item that matches any one of the given info.
* Does not implement Ingredient, as it can not directly be added to an ingredient
* <p>Does not implement Ingredient, as it can not directly be added to an ingredient
*/
public class CustomMatchAnyItem extends RecipeItem {

View File

@ -9,11 +9,11 @@ import java.util.Map;
import java.util.function.Function;
/**
* Item used in a BIngredients, inside BCauldron or Brew.
* Represents the Items used as ingredients in the Brewing process
* Can be a copy of a recipe item
* Will be saved and loaded with a DataStream
* Each implementing class needs to register a static function as Item Loader
* Item used in a BIngredients, inside BCauldron or Brew,
* Represents the Items used as ingredients in the Brewing process.
* <p>Can be a copy of a recipe item
* <p>Will be saved and loaded with a DataStream
* <p>Each implementing class needs to register a static function as Item Loader
*/
public interface Ingredient {
@ -21,7 +21,7 @@ public interface Ingredient {
/**
* Register a Static function as function that takes an ItemLoader, containing a DataInputStream.
* Using the Stream it constructs a corresponding Ingredient for the chosen SaveID
* <p>Using the Stream it constructs a corresponding Ingredient for the chosen SaveID
*
* @param saveID The SaveID should be a small identifier like "AB"
* @param loadFct The Static Function that loads the Item, i.e.
@ -43,10 +43,10 @@ public interface Ingredient {
/**
* Saves this Ingredient to the DataOutputStream.
* The first data HAS to be storing the SaveID like:
* <p>The first data HAS to be storing the SaveID like:
* out.writeUTF("AB");
* Amount will be saved automatically and does not have to be saved here.
* Saving is done to Brew or for BCauldron into data.yml
* <p>Amount will be saved automatically and does not have to be saved here.
* <p>Saving is done to Brew or for BCauldron into data.yml
*
* @param out The outputstream to write to
* @throws IOException Any IOException
@ -67,9 +67,8 @@ public interface Ingredient {
/*
* Does this Item match the given RecipeItem.
* An IngredientItem matches a RecipeItem if all required info of the RecipeItem are fulfilled on this IngredientItem
* This does not imply that the same holds the other way round, as this item might have more info than needed
*
* <p>An IngredientItem matches a RecipeItem if all required info of the RecipeItem are fulfilled on this IngredientItem
* <p>This does not imply that the same holds the other way round, as this item might have more info than needed
*
* @param recipeItem The recipeItem whose requirements need to be fulfilled
* @return True if this matches the required info of the recipeItem
@ -77,7 +76,7 @@ public interface Ingredient {
//boolean matches(RecipeItem recipeItem);
/**
* The other Ingredient is Similar if it is equal except amount
* The other Ingredient is Similar if it is equal except amount.
*
* @param item The item to check similarity with
* @return True if this is equal to item except for amount

View File

@ -16,8 +16,8 @@ import java.util.function.Supplier;
/**
* An Item of a Recipe or as Ingredient in a Brew that corresponds to an item from another plugin.
* See /integration/item for examples on how to extend this class.
* This class stores items as name of the plugin and item id
* <p>See /integration/item for examples on how to extend this class.
* <p>This class stores items as name of the plugin and item id
*/
public abstract class PluginItem extends RecipeItem implements Ingredient {
@ -72,14 +72,14 @@ public abstract class PluginItem extends RecipeItem implements Ingredient {
/**
* Called after Loading this Plugin Item from Config, or (by default) from Ingredients.
* Allows Override to define custom actions after an Item was constructed
* <p>Allows Override to define custom actions after an Item was constructed
*/
protected void onConstruct() {
}
/**
* Does this PluginItem Match the other Ingredient.
* By default it matches exactly when they are similar, i.e. also a PluginItem with same parameters
* <p>By default it matches exactly when they are similar, i.e. also a PluginItem with same parameters
*
* @param ingredient The ingredient that needs to fulfill the requirements
* @return True if the ingredient matches the required info of this
@ -132,8 +132,8 @@ public abstract class PluginItem extends RecipeItem implements Ingredient {
}
/**
* Called when loading this Plugin Item from Ingredients (of a Brew)
* The default loading is the same as loading from Config
* Called when loading this Plugin Item from Ingredients (of a Brew).
* <p>The default loading is the same as loading from Config
*
* @param loader The ItemLoader from which to load the data, use loader.getInputStream()
* @return The constructed PluginItem
@ -161,8 +161,8 @@ public abstract class PluginItem extends RecipeItem implements Ingredient {
}
/**
* Needs to be called at Server start
* Registers the chosen SaveID and the loading Method for loading from Brew or BCauldron
* Registers the chosen SaveID and the loading Method for loading from Brew or BCauldron.
* <p>Needs to be called at Server start.
*/
public static void registerItemLoader() {
Ingredient.registerForItemLoader("PI", PluginItem::loadFrom);
@ -170,8 +170,8 @@ public abstract class PluginItem extends RecipeItem implements Ingredient {
/**
* Called when loading trying to find a config defined Plugin Item, or by default also when loading from ingredients
* Will call a registered constructor matching the given plugin identifier
* Called when loading trying to find a config defined Plugin Item. By default also when loading from ingredients
* <p>Will call a registered constructor matching the given plugin identifier
*
* @param plugin The Identifier of the Plugin used in the config
* @param itemId The Identifier of the Item belonging to this Plugin used in the config
@ -193,11 +193,11 @@ public abstract class PluginItem extends RecipeItem implements Ingredient {
/**
* This needs to be called at Server Start before Brewery loads its data.
* When implementing this, put Brewery as softdepend in your plugin.yml!
* Registers a Constructor that returns a new or cloned instance of a PluginItem
* This Constructor will be called when loading a Plugin Item from Config or by default from ingredients
* After the Constructor is called, the plugin and itemid will be set on the new instance
* Finally the onConstruct is called.
* <p>When implementing this, put Brewery as softdepend in your plugin.yml!
* <p>Registers a Constructor that returns a new or cloned instance of a PluginItem
* <br>This Constructor will be called when loading a Plugin Item from Config or by default from ingredients
* <br>After the Constructor is called, the plugin and itemid will be set on the new instance
* <p>Finally the onConstruct is called.
*
* @param pluginId The ID to use in the config
* @param constructor The constructor i.e. YourPluginItem::new

View File

@ -17,8 +17,8 @@ import java.util.stream.Collectors;
/**
* Item that can be used in a Recipe.
* They are not necessarily only loaded from config
* They are immutable if used in a recipe. If one implements Ingredient,
* <p>They are not necessarily only loaded from config
* <p>They are immutable if used in a recipe. If one implements Ingredient,
* it can be used as mutable copy directly in a
* BIngredients. Otherwise it needs to be converted to an Ingredient
*/
@ -31,7 +31,7 @@ public abstract class RecipeItem implements Cloneable {
/**
* Does this RecipeItem match the given ItemStack?
* Used to determine if the given item corresponds to this recipeitem
* <p>Used to determine if the given item corresponds to this recipeitem
*
* @param item The ItemStack for comparison
* @return True if the given item matches this recipeItem
@ -39,9 +39,9 @@ public abstract class RecipeItem implements Cloneable {
public abstract boolean matches(ItemStack item);
/**
* Does this Item match the given Ingredient.
* A RecipeItem matches an Ingredient if all required info of the RecipeItem are fulfilled on the Ingredient
* This does not imply that the same holds the other way round, as the ingredient item might have more info than needed
* Does this Item match the given Ingredient?
* <p>A RecipeItem matches an Ingredient if all required info of the RecipeItem are fulfilled on the Ingredient
* <br>This does not imply that the same holds the other way round, as the ingredient item might have more info than needed
*
*
* @param ingredient The ingredient that needs to fulfill the requirements
@ -51,7 +51,7 @@ public abstract class RecipeItem implements Cloneable {
/**
* Get the Corresponding Ingredient Item. For Items implementing Ingredient, just getMutableCopy()
* This is called when this recipe item is added to a BIngredients
* <p>This is called when this recipe item is added to a BIngredients
*
* @param forItem The ItemStack that has previously matched this RecipeItem. Used if the resulting Ingredient needs more info from the ItemStack
* @return The IngredientItem corresponding to this RecipeItem
@ -92,9 +92,9 @@ public abstract class RecipeItem implements Cloneable {
}
/**
* Set the Amount of this Item in a Recipe
* The amount can not be set on an existing item in a recipe or existing custom item.
* To change amount you need to use getMutableCopy() and change the amount on the copy
* Set the Amount of this Item in a Recipe.
* <p>The amount can not be set on an existing item in a recipe or existing custom item.
* <br>To change amount you need to use getMutableCopy() and change the amount on the copy
*
* @param amount The new amount
*/
@ -128,12 +128,12 @@ public abstract class RecipeItem implements Cloneable {
/**
* Tries to find a matching RecipeItem for this item. It checks custom items and if it has found a unique custom item
* it will return that. If there are multiple matching custom items, a new CustomItem with all item info is returned
* If there is no matching CustomItem, it will return a SimpleItem with the items type
* it will return that. If there are multiple matching custom items, a new CustomItem with all item info is returned.
* <br>If there is no matching CustomItem, it will return a SimpleItem with the items type
*
* @param item The Item for which to find a matching RecipeItem
* @param acceptAll If true it will accept any item and return a SimpleItem even if not on the accepted list
* If false it will return null if the item is not acceptable by the Cauldron
* <br>If false it will return null if the item is not acceptable by the Cauldron
* @return The Matched CustomItem, new CustomItem with all item info or SimpleItem
*/
@Nullable

View File

@ -59,7 +59,9 @@ public class BUtil {
}
}
// returns the Player if online
/**
* returns the Player if online
*/
public static Player getPlayerfromString(String name) {
if (P.useUUID) {
try {
@ -97,7 +99,7 @@ public class BUtil {
}
/**
* Load A List of Strings from config. If found a single String, will convert to List
* Load A List of Strings from config, if found a single String, will convert to List
*/
@Nullable
public static List<String> loadCfgStringList(ConfigurationSection cfg, String path) {
@ -112,7 +114,7 @@ public class BUtil {
}
/**
* Load a String from config. If found a List, will return the first String
* Load a String from config, if found a List, will return the first String
*/
@Nullable
public static String loadCfgString(ConfigurationSection cfg, String path) {

View File

@ -191,7 +191,11 @@ public class LegacyUtil {
}
}
// 0 = empty, 1 = something in, 2 = full
/**
* Get The Fill Level of a Cauldron Block, 0 = empty, 1 = something in, 2 = full
*
* @return 0 = empty, 1 = something in, 2 = full
*/
public static byte getFillLevel(Block block) {
if (block.getType() != Material.CAULDRON) {
return EMPTY;
@ -219,7 +223,7 @@ public class LegacyUtil {
}
}
/*
/**
* only used to convert a very old Datafile or config from a very old version
*/
public static Material getMaterial(int id) {

View File

@ -46,8 +46,6 @@ public class Tuple<A, B> {
/**
* Gets the first value in the tuple
*
* @return
*/
public A first() {
return a;
@ -55,8 +53,6 @@ public class Tuple<A, B> {
/**
* Gets the second value in the tuple
*
* @return
*/
public B second() {
return b;
@ -64,8 +60,6 @@ public class Tuple<A, B> {
/**
* Gets the first value in the tuple, Synonym for first()
*
* @return
*/
public A a() {
return a;
@ -73,8 +67,6 @@ public class Tuple<A, B> {
/**
* Gets the second value in the tuple, Synonym for second()
*
* @return
*/
public B b() {
return b;