1
mirror of https://github.com/StarWishsama/Slimefun4.git synced 2024-09-19 19:25:48 +00:00

[CI skip] Changed the API a bit

This commit is contained in:
TheBusyBiscuit 2020-02-16 12:17:14 +01:00
parent 70ee567b3c
commit 5e74657263
11 changed files with 592 additions and 449 deletions

View File

@ -27,6 +27,13 @@
## Release Candidate 6 (TBD)
### Additions
* Added a new language: Japanese
* Added a new language: Swedish
* Added a new language: Czech
* Added a new language: Portuguese (Brazil)
* Added a new language: Arabic
### Changes
* /sf research now uses namespaced keys instead of ids

View File

@ -0,0 +1,38 @@
package io.github.thebusybiscuit.slimefun4.api;
import org.bukkit.plugin.Plugin;
import org.bukkit.plugin.java.JavaPlugin;
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem;
/**
* This is a very basic interface that will be used to identify
* the {@link Plugin} that registered a {@link SlimefunItem}.
*
* It will also contain some utility methods such as {@link SlimefunAddon#getBugTrackerURL()}
* to provide some context when bugs arise.
*
* It is recommended to implement this interface if you are developing
* an Addon.
*
* @author TheBusyBiscuit
*
*/
public interface SlimefunAddon {
/**
* This method returns the instance of {@link JavaPlugin} that this
* {@link SlimefunAddon} refers to.
*
* @return The instance of your {@link JavaPlugin}
*/
JavaPlugin getJavaPlugin();
/**
* This method returns a link to the Bug Tracker of this {@link SlimefunAddon}
*
* @return The URL for this Plugin's Bug Tracker, or null
*/
String getBugTrackerURL();
}

View File

@ -90,6 +90,10 @@ public class Translators {
// Translators - Japanese
addTranslator("bito-blosh", "ja", true);
// Translators - Portuguese (Brazil)
addTranslator("G4stavoM1ster", "pt-BR", true);
addTranslator("yurinogueira", "pt-BR", true);
}
private void addTranslator(String name, String language, boolean lock) {

View File

@ -31,7 +31,7 @@ public final class WikiSetup {
SlimefunItem item = SlimefunItem.getByID(entry.getKey());
if (item != null) {
item.addWikipage(entry.getValue().getAsString());
item.addOficialWiki(entry.getValue().getAsString());
}
}
} catch (IOException e) {

View File

@ -19,6 +19,7 @@ import org.bukkit.inventory.ItemStack;
import io.github.thebusybiscuit.cscorelib2.collections.OptionalMap;
import io.github.thebusybiscuit.cscorelib2.inventory.ItemUtils;
import io.github.thebusybiscuit.slimefun4.api.SlimefunAddon;
import io.github.thebusybiscuit.slimefun4.api.items.Placeable;
import me.mrCookieSlime.Slimefun.SlimefunPlugin;
import me.mrCookieSlime.Slimefun.Lists.RecipeType;
@ -40,6 +41,7 @@ import me.mrCookieSlime.Slimefun.api.energy.EnergyTicker;
public class SlimefunItem implements Placeable {
private ItemState state;
private SlimefunAddon addon;
protected String id;
protected ItemStack item;
@ -54,7 +56,6 @@ public class SlimefunItem implements Placeable {
protected boolean hidden = false;
protected boolean useableInWorkbench = false;
private boolean addon = false;
private String permission = "";
private List<String> noPermissionTooltip;
@ -170,7 +171,7 @@ public class SlimefunItem implements Placeable {
}
public boolean isAddonItem() {
return addon;
return !(addon instanceof SlimefunPlugin);
}
public String getPermission() {
@ -192,13 +193,38 @@ public class SlimefunItem implements Placeable {
public boolean isDisabled() {
return state != ItemState.ENABLED;
}
/**
* This method is deprecated.
*
* @deprecated Use {@link SlimefunItem#register(SlimefunAddon)} instead.
* @param slimefun deprecated.
*/
@Deprecated
public void register() {
register(false);
register((SlimefunAddon) null);
}
/**
* This method is deprecated.
*
* @deprecated Use {@link SlimefunItem#register(SlimefunAddon)} instead.
* @param slimefun deprecated.
*/
@Deprecated
public void register(boolean slimefun) {
this.addon = !slimefun;
register(slimefun ? SlimefunPlugin.instance: null);
}
/**
* This method registers this {@link SlimefunItem}.
* Always call this method after your {@link SlimefunItem} has been initialized.
* Never call it more than once!
*
* @param addon The {@link SlimefunAddon} that this {@link SlimefunItem} belongs to.
*/
public void register(SlimefunAddon addon) {
this.addon = addon;
try {
preRegister();
@ -407,26 +433,56 @@ public class SlimefunItem implements Placeable {
}
else if (handler instanceof EnergyTicker) {
energyTicker = (EnergyTicker) handler;
EnergyNet.registerComponent(getID(), EnergyNetComponent.SOURCE);
EnergyNet.registerComponent(getID(), EnergyNetComponent.GENERATOR);
}
}
}
/**
* This method is deprecated.
*
* @deprecated Use {@link SlimefunItem#register(SlimefunAddon)} instead.
* @param vanilla deprecated.
* @param handlers deprecated.
*/
@Deprecated
public void register(boolean vanilla, ItemHandler... handlers) {
addItemHandler(handlers);
register(vanilla);
}
/**
* This method is deprecated.
*
* @deprecated Use {@link SlimefunItem#register(SlimefunAddon)} instead.
* @param handlers deprecated.
*/
@Deprecated
public void register(ItemHandler... handlers) {
addItemHandler(handlers);
register(false);
}
/**
* This method is deprecated.
*
* @deprecated Use {@link SlimefunItem#register(SlimefunAddon)} instead.
* @param vanilla deprecated.
* @param handler deprecated.
*/
@Deprecated
public void register(boolean vanilla, SlimefunBlockHandler handler) {
SlimefunPlugin.getRegistry().getBlockHandlers().put(getID(), handler);
register(vanilla);
}
/**
* This method is deprecated.
*
* @deprecated Use {@link SlimefunItem#register(SlimefunAddon)} instead.
* @param handler deprecated.
*/
@Deprecated
public void register(SlimefunBlockHandler handler) {
SlimefunPlugin.getRegistry().getBlockHandlers().put(getID(), handler);
register(false);
@ -442,26 +498,31 @@ public class SlimefunItem implements Placeable {
}
public void registerChargeableBlock(int capacity) {
this.registerChargeableBlock(false, capacity);
registerChargeableBlock(false, capacity);
}
public void registerEnergyGenerator(boolean slimefun, int capacity) {
this.register(slimefun);
register(slimefun);
SlimefunPlugin.getRegistry().getEnergyCapacities().put(id, capacity);
}
public void registerChargeableBlock(boolean slimefun, int capacity) {
this.register(slimefun);
register(slimefun);
ChargableBlock.registerChargableBlock(id, capacity);
EnergyNet.registerComponent(id, EnergyNetComponent.CONSUMER);
}
public void registerCapacitor(boolean slimefun, int capacity) {
this.register(slimefun);
EnergyNet.registerComponent(id, EnergyNetComponent.DISTRIBUTOR);
register(slimefun);
EnergyNet.registerComponent(id, EnergyNetComponent.CAPACITOR);
ChargableBlock.registerCapacitor(id, capacity);
}
public void registerChargeableBlock(boolean vanilla, int capacity, ItemHandler... handlers) {
addItemHandler(handlers);
registerChargeableBlock(vanilla, capacity);
}
public void preRegister() {
// Override this method to execute code before the Item has been registered
// Useful for calls to addItemHandler(...)
@ -484,11 +545,6 @@ public class SlimefunItem implements Placeable {
SlimefunPlugin.getRegistry().getBlockHandlers().put(id, handler);
}
public void registerChargeableBlock(boolean vanilla, int capacity, ItemHandler... handlers) {
addItemHandler(handlers);
registerChargeableBlock(vanilla, capacity);
}
/**
* This method will assign the given wiki page to this Item.
* Note that you only need to provide the page name itself,
@ -496,13 +552,13 @@ public class SlimefunItem implements Placeable {
*
* @param page The associated wiki page
*/
public void addWikipage(String page) {
public void addOficialWiki(String page) {
wiki = "https://github.com/TheBusyBiscuit/Slimefun4/wiki/" + page;
}
/**
* This method returns whether this item has been assigned a wiki page.
* @see SlimefunItem#addWikipage(String)
* @see SlimefunItem#addOficialWiki(String)
*
* @return Whether this Item has a wiki page
*/
@ -513,7 +569,7 @@ public class SlimefunItem implements Placeable {
/**
* This method returns the wiki page that has been asigned to this item.
* It will return null, if no wiki page was found.
* @see SlimefunItem#addWikipage(String)
* @see SlimefunItem#addOficialWiki(String)
*
* @return This item's wiki page
*/
@ -578,7 +634,7 @@ public class SlimefunItem implements Placeable {
@Override
public String toString() {
return "SlimefunItem: " + id + " (" + state + ", vanilla=" + !addon + ")";
return "SlimefunItem: " + id + " (" + state + ", addon=" + (addon == null ? "Unknown": addon.getJavaPlugin().getName()) + ")";
}
@Override

View File

@ -0,0 +1,26 @@
package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.blocks;
import org.bukkit.inventory.ItemStack;
import io.github.thebusybiscuit.slimefun4.implementation.tasks.RainbowTicker;
import me.mrCookieSlime.Slimefun.Lists.RecipeType;
import me.mrCookieSlime.Slimefun.Objects.Category;
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SimpleSlimefunItem;
import me.mrCookieSlime.Slimefun.api.SlimefunItemStack;
public class RainbowBlock extends SimpleSlimefunItem<RainbowTicker> {
private final RainbowTicker ticker;
public RainbowBlock(Category category, SlimefunItemStack item, RecipeType recipeType, ItemStack[] recipe, ItemStack recipeOutput, RainbowTicker ticker) {
super(category, item, recipeType, recipe, recipeOutput);
this.ticker = ticker;
}
@Override
public RainbowTicker getItemHandler() {
return ticker;
}
}

View File

@ -17,6 +17,7 @@ import io.github.thebusybiscuit.cscorelib2.config.Config;
import io.github.thebusybiscuit.cscorelib2.protection.ProtectionManager;
import io.github.thebusybiscuit.cscorelib2.recipes.RecipeSnapshot;
import io.github.thebusybiscuit.cscorelib2.reflection.ReflectionUtils;
import io.github.thebusybiscuit.slimefun4.api.SlimefunAddon;
import io.github.thebusybiscuit.slimefun4.api.gps.GPSNetwork;
import io.github.thebusybiscuit.slimefun4.api.network.NetworkManager;
import io.github.thebusybiscuit.slimefun4.core.SlimefunRegistry;
@ -83,7 +84,7 @@ import me.mrCookieSlime.Slimefun.api.inventory.UniversalBlockMenu;
import me.mrCookieSlime.Slimefun.utils.ConfigCache;
import me.mrCookieSlime.Slimefun.utils.Utilities;
public final class SlimefunPlugin extends JavaPlugin {
public final class SlimefunPlugin extends JavaPlugin implements SlimefunAddon {
public static SlimefunPlugin instance;
@ -179,7 +180,7 @@ public final class SlimefunPlugin extends JavaPlugin {
MiscSetup.setupItemSettings();
try {
SlimefunItemSetup.setup();
SlimefunItemSetup.setup(this);
} catch (Exception x) {
getLogger().log(Level.SEVERE, "An Error occured while initializing SlimefunItems for Slimefun " + getVersion(), x);
}
@ -509,4 +510,14 @@ public final class SlimefunPlugin extends JavaPlugin {
.collect(Collectors.toSet());
}
@Override
public JavaPlugin getJavaPlugin() {
return this;
}
@Override
public String getBugTrackerURL() {
return "https://github.com/TheBusyBiscuit/Slimefun4/issues";
}
}

View File

@ -26,8 +26,8 @@ public class EnergyNet extends Network {
}
public static EnergyNetComponent getComponent(String id) {
if (SlimefunPlugin.getRegistry().getEnergyGenerators().contains(id)) return EnergyNetComponent.SOURCE;
if (SlimefunPlugin.getRegistry().getEnergyCapacitors().contains(id)) return EnergyNetComponent.DISTRIBUTOR;
if (SlimefunPlugin.getRegistry().getEnergyGenerators().contains(id)) return EnergyNetComponent.GENERATOR;
if (SlimefunPlugin.getRegistry().getEnergyCapacitors().contains(id)) return EnergyNetComponent.CAPACITOR;
if (SlimefunPlugin.getRegistry().getEnergyConsumers().contains(id)) return EnergyNetComponent.CONSUMER;
return EnergyNetComponent.NONE;
}
@ -35,8 +35,8 @@ public class EnergyNet extends Network {
public static EnergyNetComponent getComponent(Location l) {
if (!BlockStorage.hasBlockInfo(l)) return EnergyNetComponent.NONE;
String id = BlockStorage.checkID(l);
if (SlimefunPlugin.getRegistry().getEnergyGenerators().contains(id)) return EnergyNetComponent.SOURCE;
if (SlimefunPlugin.getRegistry().getEnergyCapacitors().contains(id)) return EnergyNetComponent.DISTRIBUTOR;
if (SlimefunPlugin.getRegistry().getEnergyGenerators().contains(id)) return EnergyNetComponent.GENERATOR;
if (SlimefunPlugin.getRegistry().getEnergyCapacitors().contains(id)) return EnergyNetComponent.CAPACITOR;
if (SlimefunPlugin.getRegistry().getEnergyConsumers().contains(id)) return EnergyNetComponent.CONSUMER;
return EnergyNetComponent.NONE;
}
@ -46,10 +46,10 @@ public class EnergyNet extends Network {
case CONSUMER:
SlimefunPlugin.getRegistry().getEnergyConsumers().add(id);
break;
case DISTRIBUTOR:
case CAPACITOR:
SlimefunPlugin.getRegistry().getEnergyCapacitors().add(id);
break;
case SOURCE:
case GENERATOR:
SlimefunPlugin.getRegistry().getEnergyGenerators().add(id);
break;
default:
@ -87,10 +87,10 @@ public class EnergyNet extends Network {
public NetworkComponent classifyLocation(Location l) {
if (regulator.equals(l)) return NetworkComponent.REGULATOR;
switch (getComponent(l)) {
case DISTRIBUTOR:
case CAPACITOR:
return NetworkComponent.CONNECTOR;
case CONSUMER:
case SOURCE:
case GENERATOR:
return NetworkComponent.TERMINUS;
default:
return null;
@ -104,13 +104,13 @@ public class EnergyNet extends Network {
}
switch (getComponent(l)) {
case DISTRIBUTOR:
case CAPACITOR:
if (ChargableBlock.isCapacitor(l)) storage.add(l);
break;
case CONSUMER:
output.add(l);
break;
case SOURCE:
case GENERATOR:
input.add(l);
break;
default:

View File

@ -2,8 +2,8 @@ package me.mrCookieSlime.Slimefun.api.energy;
public enum EnergyNetComponent {
SOURCE,
DISTRIBUTOR,
GENERATOR,
CAPACITOR,
CONSUMER,
NONE;

View File

@ -286,8 +286,8 @@ languages:
id: 'Indonesian'
el: 'Greek'
he: 'Hebrew'
pt: 'Portugese (Portugal)'
pt-BR: 'Portugese (Brazil)'
pt: 'Portuguese (Portugal)'
pt-BR: 'Portuguese (Brazil)'
ar: 'Arabic'
af: 'Afrikaans'
da: 'Danish'