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

[CI skip] More refactoring

This commit is contained in:
TheBusyBiscuit 2020-03-01 15:06:35 +01:00
parent aaff35152a
commit c3f6eb3a3d
17 changed files with 90 additions and 89 deletions

View File

@ -48,6 +48,7 @@
* Fixed a translation not showing properly * Fixed a translation not showing properly
* Fixed #1577 * Fixed #1577
* Fixed #1597 * Fixed #1597
* Fixed disabled Slimefun Addons not showing under /sf versions
## Release Candidate 6 (16 Feb 2020) ## Release Candidate 6 (16 Feb 2020)

View File

@ -116,7 +116,7 @@ public class BookSlimefunGuide implements SlimefunGuideImplementation {
actions.add(new PlayerRunnable(1) { actions.add(new PlayerRunnable(1) {
@Override @Override
public void run(final Player p) { public void run(Player p) {
Slimefun.runSync(() -> openCategory(profile, category, survival, 1), 1L); Slimefun.runSync(() -> openCategory(profile, category, survival, 1), 1L);
} }
@ -129,7 +129,7 @@ public class BookSlimefunGuide implements SlimefunGuideImplementation {
actions.add(new PlayerRunnable(1) { actions.add(new PlayerRunnable(1) {
@Override @Override
public void run(final Player p) { public void run(Player p) {
Slimefun.runSync(() -> openCategory(profile, category, survival, 1), 1L); Slimefun.runSync(() -> openCategory(profile, category, survival, 1), 1L);
} }
@ -196,8 +196,8 @@ public class BookSlimefunGuide implements SlimefunGuideImplementation {
actions.add(new PlayerRunnable(2) { actions.add(new PlayerRunnable(2) {
@Override @Override
public void run(final Player p) { public void run(Player p) {
if (!Research.isResearching(p)) { if (!SlimefunPlugin.getRegistry().getCurrentlyResearchingPlayers().contains(p.getUniqueId())) {
if (research.canUnlock(p)) { if (research.canUnlock(p)) {
if (profile.hasUnlocked(research)) { if (profile.hasUnlocked(research)) {
openCategory(profile, category, true, page); openCategory(profile, category, true, page);
@ -271,7 +271,7 @@ public class BookSlimefunGuide implements SlimefunGuideImplementation {
pageMessage.addClickEvent(new PlayerRunnable(2) { pageMessage.addClickEvent(new PlayerRunnable(2) {
@Override @Override
public void run(final Player p) { public void run(Player p) {
openMainMenu(profile, survival, 1); openMainMenu(profile, survival, 1);
} }

View File

@ -222,9 +222,8 @@ public class ChestSlimefunGuide implements SlimefunGuideImplementation {
if (Slimefun.hasPermission(p, sfitem, false)) { if (Slimefun.hasPermission(p, sfitem, false)) {
menu.addItem(index, new CustomItem(Material.BARRIER, "&r" + ItemUtils.getItemName(sfitem.getItem()), "&4&lLOCKED", "", "&a> Click to unlock", "", "&7Cost: &b" + research.getCost() + " Level")); menu.addItem(index, new CustomItem(Material.BARRIER, "&r" + ItemUtils.getItemName(sfitem.getItem()), "&4&lLOCKED", "", "&a> Click to unlock", "", "&7Cost: &b" + research.getCost() + " Level"));
menu.addMenuClickHandler(index, (pl, slot, item, action) -> { menu.addMenuClickHandler(index, (pl, slot, item, action) -> {
if (!Research.isResearching(pl)) { if (!SlimefunPlugin.getRegistry().getCurrentlyResearchingPlayers().contains(pl.getUniqueId())) {
if (research.canUnlock(pl)) { if (research.canUnlock(pl)) {
if (profile.hasUnlocked(research)) { if (profile.hasUnlocked(research)) {
openCategory(profile, category, true, page); openCategory(profile, category, true, page);
} }
@ -243,7 +242,9 @@ public class ChestSlimefunGuide implements SlimefunGuideImplementation {
} }
} }
} }
else SlimefunPlugin.getLocal().sendMessage(pl, "messages.not-enough-xp", true); else {
SlimefunPlugin.getLocal().sendMessage(pl, "messages.not-enough-xp", true);
}
} }
return false; return false;
}); });

View File

@ -19,9 +19,9 @@ import me.mrCookieSlime.Slimefun.api.BlockStorage;
import me.mrCookieSlime.Slimefun.api.SlimefunItemStack; import me.mrCookieSlime.Slimefun.api.SlimefunItemStack;
import me.mrCookieSlime.Slimefun.api.item_transport.CargoNet; import me.mrCookieSlime.Slimefun.api.item_transport.CargoNet;
public class CargoManagerBlock extends SlimefunItem { public class CargoManager extends SlimefunItem {
public CargoManagerBlock(Category category, SlimefunItemStack item, RecipeType recipeType, ItemStack[] recipe) { public CargoManager(Category category, SlimefunItemStack item, RecipeType recipeType, ItemStack[] recipe) {
super(category, item, recipeType, recipe); super(category, item, recipeType, recipe);
registerBlockHandler(getID(), (p, b, tool, reason) -> { registerBlockHandler(getID(), (p, b, tool, reason) -> {

View File

@ -8,10 +8,10 @@ import me.mrCookieSlime.Slimefun.Lists.RecipeType;
import me.mrCookieSlime.Slimefun.Objects.Category; import me.mrCookieSlime.Slimefun.Objects.Category;
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SimpleSlimefunItem; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SimpleSlimefunItem;
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem;
import me.mrCookieSlime.Slimefun.Objects.handlers.GeneratorTicker;
import me.mrCookieSlime.Slimefun.api.SlimefunItemStack; import me.mrCookieSlime.Slimefun.api.SlimefunItemStack;
import me.mrCookieSlime.Slimefun.api.energy.EnergyTicker;
public abstract class SolarGenerator extends SimpleSlimefunItem<EnergyTicker> { public abstract class SolarGenerator extends SimpleSlimefunItem<GeneratorTicker> {
public SolarGenerator(Category category, SlimefunItemStack item, RecipeType recipeType, ItemStack[] recipe) { public SolarGenerator(Category category, SlimefunItemStack item, RecipeType recipeType, ItemStack[] recipe) {
super(category, item, recipeType, recipe); super(category, item, recipeType, recipe);
@ -25,8 +25,8 @@ public abstract class SolarGenerator extends SimpleSlimefunItem<EnergyTicker> {
} }
@Override @Override
public EnergyTicker getItemHandler() { public GeneratorTicker getItemHandler() {
return new EnergyTicker() { return new GeneratorTicker() {
@Override @Override
public double generateEnergy(Location l, SlimefunItem item, Config data) { public double generateEnergy(Location l, SlimefunItem item, Config data) {

View File

@ -45,7 +45,7 @@ import io.github.thebusybiscuit.slimefun4.implementation.items.blocks.RepairedSp
import io.github.thebusybiscuit.slimefun4.implementation.items.cargo.AdvancedCargoOutputNode; import io.github.thebusybiscuit.slimefun4.implementation.items.cargo.AdvancedCargoOutputNode;
import io.github.thebusybiscuit.slimefun4.implementation.items.cargo.CargoConnector; import io.github.thebusybiscuit.slimefun4.implementation.items.cargo.CargoConnector;
import io.github.thebusybiscuit.slimefun4.implementation.items.cargo.CargoInputNode; import io.github.thebusybiscuit.slimefun4.implementation.items.cargo.CargoInputNode;
import io.github.thebusybiscuit.slimefun4.implementation.items.cargo.CargoManagerBlock; import io.github.thebusybiscuit.slimefun4.implementation.items.cargo.CargoManager;
import io.github.thebusybiscuit.slimefun4.implementation.items.cargo.CargoOutputNode; import io.github.thebusybiscuit.slimefun4.implementation.items.cargo.CargoOutputNode;
import io.github.thebusybiscuit.slimefun4.implementation.items.cargo.ReactorAccessPort; import io.github.thebusybiscuit.slimefun4.implementation.items.cargo.ReactorAccessPort;
import io.github.thebusybiscuit.slimefun4.implementation.items.cargo.TrashCan; import io.github.thebusybiscuit.slimefun4.implementation.items.cargo.TrashCan;
@ -3136,7 +3136,7 @@ public final class SlimefunItemSetup {
new CustomItem(SlimefunItems.CARGO_MOTOR, 4)) new CustomItem(SlimefunItems.CARGO_MOTOR, 4))
.register(plugin); .register(plugin);
new CargoManagerBlock(Categories.CARGO, (SlimefunItemStack) SlimefunItems.CARGO_MANAGER, RecipeType.ENHANCED_CRAFTING_TABLE, new CargoManager(Categories.CARGO, (SlimefunItemStack) SlimefunItems.CARGO_MANAGER, RecipeType.ENHANCED_CRAFTING_TABLE,
new ItemStack[] {null, SlimefunItems.HOLOGRAM_PROJECTOR, null, SlimefunItems.REINFORCED_PLATE, SlimefunItems.CARGO_MOTOR, SlimefunItems.REINFORCED_PLATE, SlimefunItems.ALUMINUM_BRONZE_INGOT, SlimefunItems.ANDROID_MEMORY_CORE, SlimefunItems.ALUMINUM_BRONZE_INGOT}) new ItemStack[] {null, SlimefunItems.HOLOGRAM_PROJECTOR, null, SlimefunItems.REINFORCED_PLATE, SlimefunItems.CARGO_MOTOR, SlimefunItems.REINFORCED_PLATE, SlimefunItems.ALUMINUM_BRONZE_INGOT, SlimefunItems.ANDROID_MEMORY_CORE, SlimefunItems.ALUMINUM_BRONZE_INGOT})
.register(plugin); .register(plugin);

View File

@ -15,6 +15,7 @@ import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.ItemMeta; import org.bukkit.inventory.meta.ItemMeta;
import io.github.thebusybiscuit.cscorelib2.item.CustomItem; import io.github.thebusybiscuit.cscorelib2.item.CustomItem;
import io.github.thebusybiscuit.slimefun4.core.guide.SlimefunGuide;
import me.mrCookieSlime.Slimefun.SlimefunPlugin; import me.mrCookieSlime.Slimefun.SlimefunPlugin;
import me.mrCookieSlime.Slimefun.Lists.Categories; import me.mrCookieSlime.Slimefun.Lists.Categories;
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem;
@ -32,10 +33,10 @@ import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem;
*/ */
public class Category implements Keyed { public class Category implements Keyed {
private final NamespacedKey key; protected final NamespacedKey key;
private final ItemStack item; protected final ItemStack item;
private final List<SlimefunItem> items; protected final List<SlimefunItem> items;
private final int tier; protected final int tier;
/** /**
* Constructs a Category with the given display item. * Constructs a Category with the given display item.
@ -51,6 +52,14 @@ public class Category implements Keyed {
this(item, 3); this(item, 3);
} }
/**
* Constructs a new {@link Category} with the given {@link NamespacedKey} as an identifier
* and the given {@link ItemStack} as its display item.
* The tier is set to a default value of {@code 3}.
*
* @param key The {@link NamespacedKey} that is used to identify this {@link Category}
* @param item The {@link ItemStack} that is used to display this {@link Category}
*/
public Category(NamespacedKey key, ItemStack item) { public Category(NamespacedKey key, ItemStack item) {
this(key, item, 3); this(key, item, 3);
} }
@ -71,6 +80,14 @@ public class Category implements Keyed {
this(new NamespacedKey(SlimefunPlugin.instance, "invalid_category"), item, tier); this(new NamespacedKey(SlimefunPlugin.instance, "invalid_category"), item, tier);
} }
/**
* Constructs a new {@link Category} with the given {@link NamespacedKey} as an identifier
* and the given {@link ItemStack} as its display item.
*
* @param key The {@link NamespacedKey} that is used to identify this {@link Category}
* @param item The {@link ItemStack} that is used to display this {@link Category}
* @param tier The tier of this {@link Category}, higher tiers will make this {@link Category} appear further down in the {@link SlimefunGuide}
*/
public Category(NamespacedKey key, ItemStack item, int tier) { public Category(NamespacedKey key, ItemStack item, int tier) {
this.item = item; this.item = item;
this.key = key; this.key = key;
@ -110,20 +127,21 @@ public class Category implements Keyed {
} }
/** /**
* Bounds the provided {@link SlimefunItem} to this category. * Adds the given {@link SlimefunItem} to this {@link Category}.
* *
* @param item the SlimefunItem to bound to this category * @param item the {@link SlimefunItem} that should be added to this {@link Category}
*
* @since 4.0
*/ */
public void add(SlimefunItem item) { public void add(SlimefunItem item) {
items.add(item); items.add(item);
} }
public ItemStack getItem() { /**
return item.clone(); * This method returns a localized display item of this {@link Category}
} * for the specified {@link Player}.
*
* @param p The Player to create this {@link ItemStack} for
* @return A localized display item for this {@link Category}
*/
public ItemStack getItem(Player p) { public ItemStack getItem(Player p) {
return new CustomItem(item, meta -> { return new CustomItem(item, meta -> {
String name = SlimefunPlugin.getLocal().getCategoryName(p, getKey()); String name = SlimefunPlugin.getLocal().getCategoryName(p, getKey());
@ -141,11 +159,9 @@ public class Category implements Keyed {
} }
/** /**
* Returns the list of SlimefunItems bound to this category. * Returns all instances of {@link SlimefunItem} bound to this {@link Category}.
* *
* @return the list of SlimefunItems bound to this category * @return the list of SlimefunItems bound to this category
*
* @since 4.0
*/ */
public List<SlimefunItem> getItems() { public List<SlimefunItem> getItems() {
return this.items; return this.items;
@ -153,10 +169,9 @@ public class Category implements Keyed {
/** /**
* Returns the tier of this category. * Returns the tier of this category.
* The tier determines the position of this {@link Category} in the {@link SlimefunGuide}.
* *
* @return the tier of this category * @return the tier of this category
*
* @since 4.0
*/ */
public int getTier() { public int getTier() {
return tier; return tier;
@ -164,7 +179,7 @@ public class Category implements Keyed {
@Override @Override
public String toString() { public String toString() {
return "Slimefun Category {" + item.getItemMeta().getDisplayName() + ",tier=" + tier + "}"; return "Slimefun Category {" + key + ",tier=" + tier + "}";
} }
} }

View File

@ -83,7 +83,9 @@ public class LockedCategory extends Category {
* @see #removeParent(Category) * @see #removeParent(Category)
*/ */
public void addParent(Category category) { public void addParent(Category category) {
if (category == this || category == null) throw new IllegalArgumentException("Category '" + this.getItem().getItemMeta().getDisplayName() + "' cannot be a parent of itself or have a 'null' parent."); if (category == this || category == null) {
throw new IllegalArgumentException("Category '" + item.getItemMeta().getDisplayName() + "' cannot be a parent of itself or have a 'null' parent.");
}
this.parents.add(category); this.parents.add(category);
} }

View File

@ -150,12 +150,10 @@ public class Research implements Keyed {
} }
/** /**
* Unlocks the research for the specified player. * Unlocks this {@link Research} for the specified {@link Player}.
* *
* @param p Player to unlock the research * @param p The {@link Player} for which to unlock this {@link Research}
* @param instant Whether to unlock the research instantly * @param instant Whether to unlock the research instantly
*
* @since 4.0
*/ */
public void unlock(final Player p, boolean instant) { public void unlock(final Player p, boolean instant) {
if (!instant) { if (!instant) {
@ -208,9 +206,7 @@ public class Research implements Keyed {
} }
/** /**
* Registers the research. * Registers this {@link Research}.
*
* @since 4.0
*/ */
public void register() { public void register() {
SlimefunPlugin.getResearchCfg().setDefaultValue("enable-researching", true); SlimefunPlugin.getResearchCfg().setDefaultValue("enable-researching", true);
@ -242,6 +238,7 @@ public class Research implements Keyed {
} }
} }
// Temporary migration method from ids to Namespaced Keys.
private void migrate(int id, String path) { private void migrate(int id, String path) {
if (SlimefunPlugin.getResearchCfg().contains(id + ".enabled")) { if (SlimefunPlugin.getResearchCfg().contains(id + ".enabled")) {
SlimefunPlugin.getResearchCfg().setValue(path + ".enabled", SlimefunPlugin.getResearchCfg().getBoolean(id + ".enabled")); SlimefunPlugin.getResearchCfg().setValue(path + ".enabled", SlimefunPlugin.getResearchCfg().getBoolean(id + ".enabled"));
@ -255,24 +252,10 @@ public class Research implements Keyed {
} }
/** /**
* Gets if the specified player is currently unlocking a research. * Attempts to get a {@link Research} with the given ID.
*
* @param p Player to check
* @return true if the player is unlocking a research, otherwise false
*
* @since 4.0
*/
public static boolean isResearching(Player p) {
return SlimefunPlugin.getRegistry().getCurrentlyResearchingPlayers().contains(p.getUniqueId());
}
/**
* Attempts to get the research with the given ID.
* *
* @param id ID of the research to get * @param id ID of the research to get
* @return Research if found, or null * @return Research if found, or null
*
* @since 4.0
*/ */
public static Research getByID(int id) { public static Research getByID(int id) {
for (Research research : SlimefunPlugin.getRegistry().getResearches()) { for (Research research : SlimefunPlugin.getRegistry().getResearches()) {

View File

@ -33,12 +33,12 @@ import me.mrCookieSlime.Slimefun.Objects.Category;
import me.mrCookieSlime.Slimefun.Objects.Research; import me.mrCookieSlime.Slimefun.Objects.Research;
import me.mrCookieSlime.Slimefun.Objects.SlimefunBlockHandler; import me.mrCookieSlime.Slimefun.Objects.SlimefunBlockHandler;
import me.mrCookieSlime.Slimefun.Objects.handlers.BlockTicker; import me.mrCookieSlime.Slimefun.Objects.handlers.BlockTicker;
import me.mrCookieSlime.Slimefun.Objects.handlers.GeneratorTicker;
import me.mrCookieSlime.Slimefun.Objects.handlers.ItemHandler; import me.mrCookieSlime.Slimefun.Objects.handlers.ItemHandler;
import me.mrCookieSlime.Slimefun.Setup.SlimefunManager; import me.mrCookieSlime.Slimefun.Setup.SlimefunManager;
import me.mrCookieSlime.Slimefun.api.SlimefunItemStack; import me.mrCookieSlime.Slimefun.api.SlimefunItemStack;
import me.mrCookieSlime.Slimefun.api.energy.EnergyNet; import me.mrCookieSlime.Slimefun.api.energy.EnergyNet;
import me.mrCookieSlime.Slimefun.api.energy.EnergyNetComponentType; import me.mrCookieSlime.Slimefun.api.energy.EnergyNetComponentType;
import me.mrCookieSlime.Slimefun.api.energy.EnergyTicker;
public class SlimefunItem implements Placeable { public class SlimefunItem implements Placeable {
@ -68,7 +68,7 @@ public class SlimefunItem implements Placeable {
private final OptionalMap<Class<? extends ItemHandler>, ItemHandler> itemhandlers = new OptionalMap<>(HashMap::new); private final OptionalMap<Class<? extends ItemHandler>, ItemHandler> itemhandlers = new OptionalMap<>(HashMap::new);
private boolean ticking = false; private boolean ticking = false;
private BlockTicker blockTicker; private BlockTicker blockTicker;
private EnergyTicker energyTicker; private GeneratorTicker energyTicker;
public SlimefunItem(Category category, SlimefunItemStack item, RecipeType recipeType, ItemStack[] recipe) { public SlimefunItem(Category category, SlimefunItemStack item, RecipeType recipeType, ItemStack[] recipe) {
this(category, item, recipeType, recipe, null); this(category, item, recipeType, recipe, null);
@ -193,7 +193,7 @@ public class SlimefunItem implements Placeable {
return blockTicker; return blockTicker;
} }
public EnergyTicker getEnergyTicker() { public GeneratorTicker getEnergyTicker() {
return energyTicker; return energyTicker;
} }
@ -467,8 +467,8 @@ public class SlimefunItem implements Placeable {
SlimefunPlugin.getRegistry().getTickerBlocks().add(getID()); SlimefunPlugin.getRegistry().getTickerBlocks().add(getID());
blockTicker = (BlockTicker) handler; blockTicker = (BlockTicker) handler;
} }
else if (handler instanceof EnergyTicker) { else if (handler instanceof GeneratorTicker) {
energyTicker = (EnergyTicker) handler; energyTicker = (GeneratorTicker) handler;
EnergyNet.registerComponent(getID(), EnergyNetComponentType.GENERATOR); EnergyNet.registerComponent(getID(), EnergyNetComponentType.GENERATOR);
} }
} }

View File

@ -31,12 +31,12 @@ import me.mrCookieSlime.Slimefun.Lists.SlimefunItems;
import me.mrCookieSlime.Slimefun.Objects.Category; import me.mrCookieSlime.Slimefun.Objects.Category;
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem;
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.interfaces.RecipeDisplayItem; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.interfaces.RecipeDisplayItem;
import me.mrCookieSlime.Slimefun.Objects.handlers.GeneratorTicker;
import me.mrCookieSlime.Slimefun.Setup.SlimefunManager; import me.mrCookieSlime.Slimefun.Setup.SlimefunManager;
import me.mrCookieSlime.Slimefun.api.BlockStorage; import me.mrCookieSlime.Slimefun.api.BlockStorage;
import me.mrCookieSlime.Slimefun.api.SlimefunItemStack; import me.mrCookieSlime.Slimefun.api.SlimefunItemStack;
import me.mrCookieSlime.Slimefun.api.energy.ChargableBlock; import me.mrCookieSlime.Slimefun.api.energy.ChargableBlock;
import me.mrCookieSlime.Slimefun.api.energy.EnergyNetComponentType; import me.mrCookieSlime.Slimefun.api.energy.EnergyNetComponentType;
import me.mrCookieSlime.Slimefun.api.energy.EnergyTicker;
import me.mrCookieSlime.Slimefun.api.inventory.BlockMenu; import me.mrCookieSlime.Slimefun.api.inventory.BlockMenu;
import me.mrCookieSlime.Slimefun.api.inventory.BlockMenuPreset; import me.mrCookieSlime.Slimefun.api.inventory.BlockMenuPreset;
import me.mrCookieSlime.Slimefun.api.item_transport.ItemTransportFlow; import me.mrCookieSlime.Slimefun.api.item_transport.ItemTransportFlow;
@ -167,7 +167,7 @@ public abstract class AGenerator extends SlimefunItem implements RecipeDisplayIt
@Override @Override
public void preRegister() { public void preRegister() {
addItemHandler(new EnergyTicker() { addItemHandler(new GeneratorTicker() {
@Override @Override
public double generateEnergy(Location l, SlimefunItem sf, Config data) { public double generateEnergy(Location l, SlimefunItem sf, Config data) {

View File

@ -33,13 +33,13 @@ import me.mrCookieSlime.Slimefun.Lists.SlimefunItems;
import me.mrCookieSlime.Slimefun.Objects.Category; import me.mrCookieSlime.Slimefun.Objects.Category;
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem;
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.interfaces.RecipeDisplayItem; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.interfaces.RecipeDisplayItem;
import me.mrCookieSlime.Slimefun.Objects.handlers.GeneratorTicker;
import me.mrCookieSlime.Slimefun.Setup.SlimefunManager; import me.mrCookieSlime.Slimefun.Setup.SlimefunManager;
import me.mrCookieSlime.Slimefun.api.BlockStorage; import me.mrCookieSlime.Slimefun.api.BlockStorage;
import me.mrCookieSlime.Slimefun.api.Slimefun; import me.mrCookieSlime.Slimefun.api.Slimefun;
import me.mrCookieSlime.Slimefun.api.SlimefunItemStack; import me.mrCookieSlime.Slimefun.api.SlimefunItemStack;
import me.mrCookieSlime.Slimefun.api.energy.ChargableBlock; import me.mrCookieSlime.Slimefun.api.energy.ChargableBlock;
import me.mrCookieSlime.Slimefun.api.energy.EnergyNetComponentType; import me.mrCookieSlime.Slimefun.api.energy.EnergyNetComponentType;
import me.mrCookieSlime.Slimefun.api.energy.EnergyTicker;
import me.mrCookieSlime.Slimefun.api.inventory.BlockMenu; import me.mrCookieSlime.Slimefun.api.inventory.BlockMenu;
import me.mrCookieSlime.Slimefun.api.inventory.BlockMenuPreset; import me.mrCookieSlime.Slimefun.api.inventory.BlockMenuPreset;
import me.mrCookieSlime.Slimefun.api.item_transport.ItemTransportFlow; import me.mrCookieSlime.Slimefun.api.item_transport.ItemTransportFlow;
@ -250,7 +250,7 @@ public abstract class AReactor extends SlimefunItem implements RecipeDisplayItem
@Override @Override
public void preRegister() { public void preRegister() {
addItemHandler(new EnergyTicker() { addItemHandler(new GeneratorTicker() {
private final Set<Location> explode = new HashSet<>(); private final Set<Location> explode = new HashSet<>();

View File

@ -1,19 +1,18 @@
package me.mrCookieSlime.Slimefun.api.energy; package me.mrCookieSlime.Slimefun.Objects.handlers;
import org.bukkit.Location; import org.bukkit.Location;
import me.mrCookieSlime.CSCoreLibPlugin.Configuration.Config; import me.mrCookieSlime.CSCoreLibPlugin.Configuration.Config;
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem;
import me.mrCookieSlime.Slimefun.Objects.handlers.ItemHandler;
public abstract class EnergyTicker implements ItemHandler { public abstract class GeneratorTicker implements ItemHandler {
public abstract double generateEnergy(Location l, SlimefunItem item, Config data); public abstract double generateEnergy(Location l, SlimefunItem item, Config data);
public abstract boolean explode(Location l); public abstract boolean explode(Location l);
@Override @Override
public Class<? extends ItemHandler> getIdentifier() { public Class<? extends ItemHandler> getIdentifier() {
return EnergyTicker.class; return GeneratorTicker.class;
} }
} }

View File

@ -213,7 +213,7 @@ public class CargoNet extends Network {
if (menu.getItemInSlot(17) == null) { if (menu.getItemInSlot(17) == null) {
Block target = getAttachedBlock(bus.getBlock()); Block target = getAttachedBlock(bus.getBlock());
ItemAndInt stack = CargoUtils.withdraw(bus.getBlock(), target, -1); ItemStackAndInteger stack = CargoUtils.withdraw(bus.getBlock(), target, -1);
if (stack != null) { if (stack != null) {
menu.replaceExistingItem(17, stack.getItem()); menu.replaceExistingItem(17, stack.getItem());
@ -354,7 +354,7 @@ public class CargoNet extends Network {
boolean roundrobin = "true".equals(cfg.getString("round-robin")); boolean roundrobin = "true".equals(cfg.getString("round-robin"));
if (inputTarget != null) { if (inputTarget != null) {
ItemAndInt slot = CargoUtils.withdraw(input.getBlock(), inputTarget, Integer.parseInt(cfg.getString("index"))); ItemStackAndInteger slot = CargoUtils.withdraw(input.getBlock(), inputTarget, Integer.parseInt(cfg.getString("index")));
if (slot != null) { if (slot != null) {
stack = slot.getItem(); stack = slot.getItem();
@ -413,7 +413,7 @@ public class CargoNet extends Network {
//Chest Terminal Code //Chest Terminal Code
if (extraChannels) { if (extraChannels) {
List<ItemAndInt> items = new ArrayList<>(); List<ItemStackAndInteger> items = new ArrayList<>();
for (Location l : providers) { for (Location l : providers) {
Block target = getAttachedBlock(l.getBlock()); Block target = getAttachedBlock(l.getBlock());
@ -438,7 +438,7 @@ public class CargoNet extends Network {
if (is != null && CargoUtils.matchesFilter(l.getBlock(), is, -1)) { if (is != null && CargoUtils.matchesFilter(l.getBlock(), is, -1)) {
boolean add = true; boolean add = true;
for (ItemAndInt item : items) { for (ItemStackAndInteger item : items) {
if (SlimefunManager.isItemSimilar(is, item.getItem(), true)) { if (SlimefunManager.isItemSimilar(is, item.getItem(), true)) {
add = false; add = false;
item.add(is.getAmount() + stored); item.add(is.getAmount() + stored);
@ -446,7 +446,7 @@ public class CargoNet extends Network {
} }
if (add) { if (add) {
items.add(new ItemAndInt(new CustomItem(is, 1), is.getAmount() + stored)); items.add(new ItemStackAndInteger(new CustomItem(is, 1), is.getAmount() + stored));
} }
} }
} }
@ -483,7 +483,7 @@ public class CargoNet extends Network {
int slot = terminal_slots[i]; int slot = terminal_slots[i];
if (items.size() > i + (terminal_slots.length * (page - 1))) { if (items.size() > i + (terminal_slots.length * (page - 1))) {
ItemAndInt item = items.get(i + (terminal_slots.length * (page - 1))); ItemStackAndInteger item = items.get(i + (terminal_slots.length * (page - 1)));
ItemStack stack = item.getItem().clone(); ItemStack stack = item.getItem().clone();
ItemMeta im = stack.getItemMeta(); ItemMeta im = stack.getItemMeta();
@ -539,17 +539,17 @@ public class CargoNet extends Network {
return freq; return freq;
} }
private void handleWithdraw(DirtyChestMenu menu, List<ItemAndInt> items, Location l) { private void handleWithdraw(DirtyChestMenu menu, List<ItemStackAndInteger> items, Location l) {
for (int slot : menu.getPreset().getSlotsAccessedByItemTransport(menu, ItemTransportFlow.WITHDRAW, null)) { for (int slot : menu.getPreset().getSlotsAccessedByItemTransport(menu, ItemTransportFlow.WITHDRAW, null)) {
filter(menu.getItemInSlot(slot), items, l); filter(menu.getItemInSlot(slot), items, l);
} }
} }
private void filter(ItemStack is, List<ItemAndInt> items, Location l) { private void filter(ItemStack is, List<ItemStackAndInteger> items, Location l) {
if (is != null && CargoUtils.matchesFilter(l.getBlock(), is, -1)) { if (is != null && CargoUtils.matchesFilter(l.getBlock(), is, -1)) {
boolean add = true; boolean add = true;
for (ItemAndInt item : items) { for (ItemStackAndInteger item : items) {
if (SlimefunManager.isItemSimilar(is, item.getItem(), true)) { if (SlimefunManager.isItemSimilar(is, item.getItem(), true)) {
add = false; add = false;
item.add(is.getAmount()); item.add(is.getAmount());
@ -557,7 +557,7 @@ public class CargoNet extends Network {
} }
if (add) { if (add) {
items.add(new ItemAndInt(new CustomItem(is, 1), is.getAmount())); items.add(new ItemStackAndInteger(new CustomItem(is, 1), is.getAmount()));
} }
} }
} }

View File

@ -86,7 +86,7 @@ public final class CargoUtils {
return null; return null;
} }
public static ItemAndInt withdraw(Block node, Block target, int index) { public static ItemStackAndInteger withdraw(Block node, Block target, int index) {
DirtyChestMenu menu = getChestMenu(target); DirtyChestMenu menu = getChestMenu(target);
if (menu != null) { if (menu != null) {
@ -95,7 +95,7 @@ public final class CargoUtils {
if (matchesFilter(node, is, index)) { if (matchesFilter(node, is, index)) {
menu.replaceExistingItem(slot, null); menu.replaceExistingItem(slot, null);
return new ItemAndInt(is.clone(), slot); return new ItemStackAndInteger(is.clone(), slot);
} }
} }
} }
@ -121,7 +121,7 @@ public final class CargoUtils {
if (matchesFilter(node, is, index)) { if (matchesFilter(node, is, index)) {
inv.setItem(slot, null); inv.setItem(slot, null);
return new ItemAndInt(is.clone(), slot); return new ItemStackAndInteger(is.clone(), slot);
} }
} }
} }

View File

@ -2,12 +2,12 @@ package me.mrCookieSlime.Slimefun.api.item_transport;
import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.ItemStack;
public class ItemAndInt { class ItemStackAndInteger {
private final ItemStack item; private final ItemStack item;
private int number; private int number;
public ItemAndInt(ItemStack item, int amount) { public ItemStackAndInteger(ItemStack item, int amount) {
this.number = amount; this.number = amount;
this.item = item; this.item = item;
} }