1
mirror of https://github.com/StarWishsama/Slimefun4.git synced 2024-09-20 03:35:51 +00:00

Merge pull request #397 from Poslovitch/documentation

Documentation - 1
This commit is contained in:
TheBusyBiscuit 2017-08-15 20:13:49 +02:00 committed by GitHub
commit 4152e3ed0e
7 changed files with 269 additions and 24 deletions

View File

@ -6,14 +6,37 @@ import me.mrCookieSlime.Slimefun.Objects.Category;
import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.ItemStack;
/**
* Represents an alloy, obtainable using the {@code SMELTERY}.
* <p>
* An alloy is generally made up of several minerals.
* As an example, {@code BRASS_INGOT} is made up of {@code COPPER_DUST}, {@code ZINC_DUST} and {@code COPPER_INGOT}.
*
* @since 4.0
*/
public class Alloy extends SlimefunItem { public class Alloy extends SlimefunItem {
public Alloy(ItemStack item, String name, ItemStack[] recipe) { /**
super(Categories.RESOURCES, item, name, RecipeType.SMELTERY, recipe); * Constructs an Alloy automatically bound to {@code Categories.RESOURCES}.
*
* @param item the item corresponding to this Alloy
* @param id the id of this Alloy
* @param recipe the recipe to obtain this Alloy in the Smeltery
*/
public Alloy(ItemStack item, String id, ItemStack[] recipe) {
super(Categories.RESOURCES, item, id, RecipeType.SMELTERY, recipe);
} }
public Alloy(Category category, ItemStack item, String name, ItemStack[] recipe) { /**
super(category, item, name, RecipeType.SMELTERY, recipe); * Constructs an Alloy with a definable {@link Category}.
*
* @param category the category to bind this Alloy to
* @param item the item corresponding to this Alloy
* @param id the id of this Alloy
* @param recipe the recipe to obtain this Alloy in the Smeltery
*/
public Alloy(Category category, ItemStack item, String id, ItemStack[] recipe) {
super(category, item, id, RecipeType.SMELTERY, recipe);
} }
} }

View File

@ -22,7 +22,7 @@ public class EnderTalisman extends SlimefunItem {
this.suffix = parent.getSuffix(); this.suffix = parent.getSuffix();
this.effects = parent.getEffects(); this.effects = parent.getEffects();
this.chance = parent.getChance(); this.chance = parent.getChance();
Slimefun.addDescription("ENDER_" + parent.getName(), "&eEnder Talismans have the advantage", "&eof still working while they", "&eare in your Ender Chest"); Slimefun.addHint("ENDER_" + parent.getName(), "&eEnder Talismans have the advantage", "&eof still working while they", "&eare in your Ender Chest");
} }
public PotionEffect[] getEffects() { return this.effects; } public PotionEffect[] getEffects() { return this.effects; }

View File

@ -64,12 +64,28 @@ public class SlimefunItem {
EnergyTicker energy; EnergyTicker energy;
public String hash; public String hash;
State state; private State state;
/**
* Defines whether a SlimefunItem is enabled, disabled or fall-back to its vanilla behavior.
*
* @since 4.1.10
*/
public enum State { public enum State {
/**
* This SlimefunItem is enabled.
*/
ENABLED, ENABLED,
/**
* This SlimefunItem is disabled and is not a {@link VanillaItem}.
*/
DISABLED, DISABLED,
VANILLA;
/**
* This SlimefunItem is fall-back to its vanilla behavior, because it is disabled and is a {@link VanillaItem}.
*/
VANILLA
} }
int month = -1; int month = -1;

View File

@ -1,8 +1,22 @@
package me.mrCookieSlime.Slimefun.Objects.SlimefunItem; package me.mrCookieSlime.Slimefun.Objects.SlimefunItem;
/**
* Defines how a block handled by Slimefun is being unregistered.
* <p>
* It is notably used by {@link me.mrCookieSlime.Slimefun.Objects.SlimefunBlockHandler#onBreak(org.bukkit.entity.Player, org.bukkit.block.Block, SlimefunItem, UnregisterReason)}.
*
* @since 4.0
*/
public enum UnregisterReason { public enum UnregisterReason {
/**
* An explosion destroys the block.
*/
EXPLODE, EXPLODE,
PLAYER_BREAK;
/**
* A player breaks the block.
*/
PLAYER_BREAK
} }

View File

@ -5,9 +5,27 @@ import org.bukkit.inventory.ItemStack;
import me.mrCookieSlime.Slimefun.Lists.RecipeType; import me.mrCookieSlime.Slimefun.Lists.RecipeType;
import me.mrCookieSlime.Slimefun.Objects.Category; import me.mrCookieSlime.Slimefun.Objects.Category;
/**
* Represents a vanilla item that is overridden by Slimefun (like {@code ELYTRA}).
* <p>
* A VanillaItem uses a non-modified ItemStack (no display name neither lore).
* When a VanillaItem gets disabled, its {@link SlimefunItem.State} goes on {@code State.VANILLA} which automatically
* replace it in the recipes by its vanilla equivalent.
*
* @since 4.1.6
*/
public class VanillaItem extends SlimefunItem { public class VanillaItem extends SlimefunItem {
public VanillaItem(Category category, ItemStack item, String name, RecipeType recipeType, ItemStack[] recipe) { /**
super(category, item, name, recipeType, recipe); * Constructs a VanillaItem.
*
* @param category the category to bind this VanillaItem to
* @param item the item corresponding to this VanillaItem
* @param id the id of this VanillaItem
* @param recipeType the type of the recipe to obtain this VanillaItem
* @param recipe the recipe to obtain this VanillaItem
*/
public VanillaItem(Category category, ItemStack item, String id, RecipeType recipeType, ItemStack[] recipe) {
super(category, item, id, recipeType, recipe);
} }
} }

View File

@ -2,8 +2,16 @@ package me.mrCookieSlime.Slimefun.Setup;
import me.mrCookieSlime.Slimefun.api.Slimefun; import me.mrCookieSlime.Slimefun.api.Slimefun;
/**
* Setups the official Wiki links.
*
* @since 4.1.2
*/
public class WikiSetup { public class WikiSetup {
/**
* Setups the official Wiki links.
*/
public static void setup() { public static void setup() {
// Weapons // Weapons

View File

@ -19,39 +19,99 @@ import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem.State;
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.VanillaItem; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.VanillaItem;
import me.mrCookieSlime.Slimefun.Setup.Messages; import me.mrCookieSlime.Slimefun.Setup.Messages;
/**
* Provides a few convenience methods.
*
* @since 4.0
*/
public class Slimefun { public class Slimefun {
public static Map<Integer, List<GuideHandler>> guide_handlers = new HashMap<Integer, List<GuideHandler>>(); public static Map<Integer, List<GuideHandler>> guide_handlers = new HashMap<>();
public static List<GuideHandler> guide_handlers2 = new ArrayList<GuideHandler>(); public static List<GuideHandler> guide_handlers2 = new ArrayList<>();
/**
* Instance of the GPSNetwork.
*/
private static GPSNetwork gps = new GPSNetwork(); private static GPSNetwork gps = new GPSNetwork();
/**
* Whether EmeraldEnchants is enabled or not.
*/
public static boolean emeraldenchants = false; public static boolean emeraldenchants = false;
public static List<Category> current_categories = new ArrayList<Category>(); /**
* Lists all the registered categories.
*/
public static List<Category> current_categories = new ArrayList<>();
public static void registerGuideHandler(GuideHandler handler) { public static void registerGuideHandler(GuideHandler handler) {
List<GuideHandler> handlers = new ArrayList<GuideHandler>(); List<GuideHandler> handlers = new ArrayList<>();
if (guide_handlers.containsKey(handler.getTier())) handlers = guide_handlers.get(handler.getTier()); if (guide_handlers.containsKey(handler.getTier())) handlers = guide_handlers.get(handler.getTier());
handlers.add(handler); handlers.add(handler);
guide_handlers.put(handler.getTier(), handlers); guide_handlers.put(handler.getTier(), handlers);
guide_handlers2.add(handler); guide_handlers2.add(handler);
} }
/**
* Returns the GPSNetwork instance.
*
* @return the GPSNetwork instance.
*/
public static GPSNetwork getGPSNetwork() { public static GPSNetwork getGPSNetwork() {
return gps; return gps;
} }
/**
* Returns the value associated to this key for the SlimefunItem corresponding to this id.
*
* @param id the id of the SlimefunItem, not null
* @param key the key of the value to get, not null
*
* @return the value associated to the key for the SlimefunItem corresponding to the id,
* or null if it doesn't exist.
*/
public static Object getItemValue(String id, String key) { public static Object getItemValue(String id, String key) {
return SlimefunStartup.getItemCfg().getValue(id + "." + key); return getItemConfig().getValue(id + "." + key);
} }
/**
* Sets a default value associated to this key for the SlimefunItem corresponding to this id.
*
* @param id the id of the SlimefunItem, not null
* @param key the key of the value to set, not null
* @param value the value to set, can be null
*/
public static void setItemVariable(String id, String key, Object value) { public static void setItemVariable(String id, String key, Object value) {
SlimefunStartup.getItemCfg().setDefaultValue(id + "." + key, value); getItemConfig().setDefaultValue(id + "." + key, value);
} }
/**
* Returns the Config instance of Items.yml file.
* <p>
* It calls {@code SlimefunStartup#getItemCfg()}.
*
* @return the Items.yml Config instance.
*/
public static Config getItemConfig() { public static Config getItemConfig() {
return SlimefunStartup.getItemCfg(); return SlimefunStartup.getItemCfg();
} }
/**
* Registers this Research and automatically binds these ItemStacks to it.
* <p>
* This convenience method spares from doing the code below:
* <pre>
* {@code
* Research r = new Research(7, "Glowstone Armor", 3);
* r.addItems(SlimefunItem.getByItem(SlimefunItems.GLOWSTONE_HELMET),
* SlimefunItem.getByItem(SlimefunItems.GLOWSTONE_CHESTPLATE),
* SlimefunItem.getByItem(SlimefunItems.GLOWSTONE_LEGGINGS),
* SlimefunItem.getByItem(SlimefunItems.GLOWSTONE_BOOTS));
* r.register();
* }*
* </pre>
* @param research the research to register, not null
* @param items the items to bind, not null
*/
public static void registerResearch(Research research, ItemStack... items) { public static void registerResearch(Research research, ItemStack... items) {
for (ItemStack item: items) { for (ItemStack item: items) {
research.addItems(SlimefunItem.getByItem(item)); research.addItems(SlimefunItem.getByItem(item));
@ -59,6 +119,16 @@ public class Slimefun {
research.register(); research.register();
} }
/**
* Checks if this player can use this item.
*
* @param p the player to check, not null
* @param item the item to check, not null
* @param message whether a message should be sent to the player or not
*
* @return <code>true</code> if the item is a SlimefunItem, enabled, researched and if the player has the permission to use it,
* <code>false</code> otherwise.
*/
public static boolean hasUnlocked(Player p, ItemStack item, boolean message) { public static boolean hasUnlocked(Player p, ItemStack item, boolean message) {
SlimefunItem sfItem = SlimefunItem.getByItem(item); SlimefunItem sfItem = SlimefunItem.getByItem(item);
State state = SlimefunItem.getState(item); State state = SlimefunItem.getState(item);
@ -80,6 +150,16 @@ public class Slimefun {
else return false; else return false;
} }
/**
* Checks if this player can use this item.
*
* @param p the player to check, not null
* @param sfItem the item to check, not null
* @param message whether a message should be sent to the player or not
*
* @return <code>true</code> if the item is enabled, researched and the player has the permission to use it,
* <code>false</code> otherwise.
*/
public static boolean hasUnlocked(Player p, SlimefunItem sfItem, boolean message) { public static boolean hasUnlocked(Player p, SlimefunItem sfItem, boolean message) {
if (isEnabled(p, sfItem, message) && hasPermission(p, sfItem, message)) { if (isEnabled(p, sfItem, message) && hasPermission(p, sfItem, message)) {
if (sfItem.getResearch() == null) return true; if (sfItem.getResearch() == null) return true;
@ -92,6 +172,16 @@ public class Slimefun {
return false; return false;
} }
/**
* Checks if this player has the permission to use this item.
*
* @param p the player to check, not null
* @param item the item to check, null returns <code>true</code>
* @param message whether a message should be sent to the player or not
*
* @return <code>true</code> if the item is not null and if the player has the permission to use it,
* <code>false</code> otherwise.
*/
public static boolean hasPermission(Player p, SlimefunItem item, boolean message) { public static boolean hasPermission(Player p, SlimefunItem item, boolean message) {
if (item == null) return true; if (item == null) return true;
else if (SlimefunStartup.getItemCfg().getString(item.getName() + ".required-permission").equalsIgnoreCase("")) return true; else if (SlimefunStartup.getItemCfg().getString(item.getName() + ".required-permission").equalsIgnoreCase("")) return true;
@ -102,6 +192,16 @@ public class Slimefun {
} }
} }
/**
* Checks if this item is enabled in the world of this player.
*
* @param p the player to get the world he is in, not null
* @param item the item to check, not null
* @param message whether a message should be sent to the player or not
*
* @return <code>true</code> if the item is a SlimefunItem and is enabled in the world the player is in,
* <code>false</code> otherwise.
*/
public static boolean isEnabled(Player p, ItemStack item, boolean message) { public static boolean isEnabled(Player p, ItemStack item, boolean message) {
String world = p.getWorld().getName(); String world = p.getWorld().getName();
SlimefunItem sfItem = SlimefunItem.getByItem(item); SlimefunItem sfItem = SlimefunItem.getByItem(item);
@ -123,6 +223,16 @@ public class Slimefun {
else return true; else return true;
} }
/**
* Checks if this item is enabled in the world of this player.
*
* @param p the player to get the world he is in, not null
* @param sfItem the item to check, not null
* @param message whether a message should be sent to the player or not
*
* @return <code>true</code> if the item is enabled in the world the player is in,
* <code>false</code> otherwise.
*/
public static boolean isEnabled(Player p, SlimefunItem sfItem, boolean message) { public static boolean isEnabled(Player p, SlimefunItem sfItem, boolean message) {
String world = p.getWorld().getName(); String world = p.getWorld().getName();
if (SlimefunStartup.getWhitelist().contains(world + ".enabled")) { if (SlimefunStartup.getWhitelist().contains(world + ".enabled")) {
@ -142,45 +252,101 @@ public class Slimefun {
else return true; else return true;
} }
/**
* Lists all the IDs of the enabled items.
*
* @return the list of all the IDs of the enabled items.
*/
public static List<String> listIDs() { public static List<String> listIDs() {
List<String> ids = new ArrayList<String>(); List<String> ids = new ArrayList<>();
for (SlimefunItem item: SlimefunItem.list()) { for (SlimefunItem item: SlimefunItem.list()) {
ids.add(item.getName()); ids.add(item.getName());
} }
return ids; return ids;
} }
/**
* Returns a list of all the ItemStacks representing the registered categories.
*
* @return the list of the display items of all the registered categories.
* @see #current_categories
*/
public static List<ItemStack> listCategories() { public static List<ItemStack> listCategories() {
List<ItemStack> items = new ArrayList<ItemStack>(); List<ItemStack> items = new ArrayList<>();
for (Category c: Category.list()) { for (Category c: Category.list()) {
items.add(c.getItem()); items.add(c.getItem());
} }
return items; return items;
} }
/**
* Binds this description to the SlimefunItem corresponding to this id.
*
* @param id the id of the SlimefunItem, not null
* @param description the description, not null
*
* @deprecated As of 4.1.10, renamed to {@link #addHint(String, String...)} for better name convenience.
*/
@Deprecated
public static void addDescription(String id, String... description) { public static void addDescription(String id, String... description) {
getItemConfig().setDefaultValue(id + ".description", Arrays.asList(description)); getItemConfig().setDefaultValue(id + ".description", Arrays.asList(description));
} }
/**
* Binds this hint to the SlimefunItem corresponding to this id.
*
* @param id the id of the SlimefunItem, not null
* @param hint the hint, not null
*
* @since 4.1.10, rename of {@link #addDescription(String, String...)}.
*/
public static void addHint(String id, String... hint) {
getItemConfig().setDefaultValue(id + ".hint", Arrays.asList(hint));
}
/**
* Binds this YouTube link to the SlimefunItem corresponding to this id.
*
* @param id the id of the SlimefunItem, not null
* @param link the link of the YouTube video, not null
*/
public static void addYoutubeVideo(String id, String link) { public static void addYoutubeVideo(String id, String link) {
getItemConfig().setDefaultValue(id + ".youtube", link); getItemConfig().setDefaultValue(id + ".youtube", link);
} }
/**
* Binds this link as a Wiki page to the SlimefunItem corresponding to this id.
*
* @param id the id of the SlimefunItem, not null
* @param link the link of the Wiki page, not null
*/
public static void addWikiPage(String id, String link) { public static void addWikiPage(String id, String link) {
getItemConfig().setDefaultValue(id + ".wiki", link); getItemConfig().setDefaultValue(id + ".wiki", link);
} }
/**
* Convenience method to simplify binding an official Wiki page to the SlimefunItem corresponding to this id.
*
* @param id the id of the SlimefunItem, not null
* @param page the ending of the link corresponding to the page, not null
*/
public static void addOfficialWikiPage(String id, String page) { public static void addOfficialWikiPage(String id, String page) {
addWikiPage(id, "https://github.com/TheBusyBiscuit/Slimefun4/wiki/" + page); addWikiPage(id, "https://github.com/TheBusyBiscuit/Slimefun4/wiki/" + page);
} }
/**
* Returns whether EmeraldEnchants is enabled or not.
* <p>
* It can be directly accessed by {@link #emeraldenchants}.
*
* @return <code>true</code> if EmeraldEnchants is enabled,
* <code>false</code> otherwise.
*/
public static boolean isEmeraldEnchantsInstalled() { public static boolean isEmeraldEnchantsInstalled() {
return emeraldenchants; return emeraldenchants;
} }
public static List<GuideHandler> getGuideHandlers(int tier) { public static List<GuideHandler> getGuideHandlers(int tier) {
return guide_handlers.containsKey(tier) ? guide_handlers.get(tier): new ArrayList<GuideHandler>(); return guide_handlers.containsKey(tier) ? guide_handlers.get(tier): new ArrayList<>();
} }
} }