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

Reduced technical debt

This commit is contained in:
TheBusyBiscuit 2019-09-04 19:42:17 +02:00
parent af40186418
commit f623c5d2ea
15 changed files with 126 additions and 95 deletions

View File

@ -2,7 +2,6 @@ package me.mrCookieSlime.Slimefun.Objects;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import org.bukkit.inventory.ItemFlag;
@ -25,12 +24,6 @@ import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem;
* @see SeasonalCategory
*/
public class Category {
/**
* List of the registered Categories.
* @since 4.0
* @see Categories
*/
public static List<Category> list = new ArrayList<>();
private ItemStack item;
private List<SlimefunItem> items;
@ -79,15 +72,19 @@ public class Category {
* @since 4.0
*/
public void register() {
list.add(this);
Collections.sort(list, new CategorySorter());
SlimefunPlugin.getUtilities().allCategories.add(this);
Collections.sort(list(), SlimefunPlugin.getUtilities().categorySorter);
if (this instanceof SeasonalCategory) {
if (((SeasonalCategory) this).isUnlocked()) SlimefunPlugin.getUtilities().currentlyEnabledCategories.add(this);
if (((SeasonalCategory) this).isUnlocked()) {
SlimefunPlugin.getUtilities().enabledCategories.add(this);
}
}
else {
SlimefunPlugin.getUtilities().enabledCategories.add(this);
}
else SlimefunPlugin.getUtilities().currentlyEnabledCategories.add(this);
Collections.sort(SlimefunPlugin.getUtilities().currentlyEnabledCategories, new CategorySorter());
Collections.sort(SlimefunPlugin.getUtilities().enabledCategories, SlimefunPlugin.getUtilities().categorySorter);
}
/**
@ -99,7 +96,7 @@ public class Category {
* @see Categories
*/
public static List<Category> list() {
return list;
return SlimefunPlugin.getUtilities().allCategories;
}
/**
@ -143,8 +140,9 @@ public class Category {
*
* @since 4.0
*/
@Deprecated
public static Category getByItem(ItemStack item) {
for (Category c: list) {
for (Category c: list()) {
if (c.getItem().isSimilar(item)) return c;
}
return null;
@ -161,19 +159,4 @@ public class Category {
return tier;
}
/**
* @since 4.0
*/
class CategorySorter implements Comparator<Category> {
/**
* @since 4.0
*/
@Override
public int compare(Category c1, Category c2) {
return Integer.compare(c1.getTier(), c2.getTier());
}
}
}

View File

@ -34,9 +34,6 @@ import me.mrCookieSlime.Slimefun.api.inventory.BlockMenu;
public class SlimefunItem {
public static List<SlimefunItem> items = new ArrayList<>();
public static List<SlimefunItem> all = new ArrayList<>();
private String id;
private String hash;
private State state;
@ -211,7 +208,7 @@ public class SlimefunItem {
throw new IllegalArgumentException("ID \"" + this.id + "\" already exists");
}
if (this.recipe.length < 9) this.recipe = new ItemStack[] {null, null, null, null, null, null, null, null, null};
all.add(this);
SlimefunPlugin.getUtilities().allItems.add(this);
SlimefunPlugin.getItemCfg().setDefaultValue(this.id + ".enabled", true);
SlimefunPlugin.getItemCfg().setDefaultValue(this.id + ".can-be-used-in-workbenches", this.replacing);
@ -246,7 +243,7 @@ public class SlimefunItem {
this.enchantable = SlimefunPlugin.getItemCfg().getBoolean(this.id + ".allow-enchanting");
this.disenchantable = SlimefunPlugin.getItemCfg().getBoolean(this.id + ".allow-disenchanting");
this.permission = SlimefunPlugin.getItemCfg().getString(this.id + ".required-permission");
items.add(this);
SlimefunPlugin.getUtilities().enabledItems.add(this);
if (slimefun) SlimefunPlugin.getUtilities().vanillaItems++;
SlimefunPlugin.getUtilities().itemIDs.put(this.id, this);
@ -274,7 +271,7 @@ public class SlimefunItem {
}
public static List<SlimefunItem> list() {
return items;
return SlimefunPlugin.getUtilities().enabledItems;
}
public void bindToResearch(Research r) {
@ -325,7 +322,7 @@ public class SlimefunItem {
public static SlimefunItem getByItem(ItemStack item) {
if (item == null) return null;
for (SlimefunItem sfi: items) {
for (SlimefunItem sfi: SlimefunPlugin.getUtilities().enabledItems) {
if ((sfi instanceof ChargableItem && SlimefunManager.isItemSimiliar(item, sfi.getItem(), false)) ||
(sfi instanceof DamagableChargableItem && SlimefunManager.isItemSimiliar(item, sfi.getItem(), false)) ||
(sfi instanceof ChargedItem && SlimefunManager.isItemSimiliar(item, sfi.getItem(), false)) ||
@ -378,7 +375,7 @@ public class SlimefunItem {
}
public static State getState(ItemStack item) {
for (SlimefunItem i: all) {
for (SlimefunItem i: SlimefunPlugin.getUtilities().allItems) {
if (i.isItem(item)) {
return i.getState();
}
@ -387,7 +384,7 @@ public class SlimefunItem {
}
public static boolean isDisabled(ItemStack item) {
for (SlimefunItem i: all) {
for (SlimefunItem i: SlimefunPlugin.getUtilities().allItems) {
if (i.isItem(item)) {
return i.isDisabled();
}

View File

@ -98,7 +98,7 @@ public final class MachineHelper {
im.setLore(lore);
item.setItemMeta(im);
menu.replaceExistingItem(22, item);
menu.replaceExistingItem(slot, item);
}
}

View File

@ -0,0 +1,27 @@
package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines;
import org.bukkit.entity.Item;
import org.bukkit.inventory.ItemStack;
import me.mrCookieSlime.Slimefun.SlimefunPlugin;
import me.mrCookieSlime.Slimefun.Lists.RecipeType;
import me.mrCookieSlime.Slimefun.Objects.Category;
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem;
import me.mrCookieSlime.Slimefun.ancient_altar.AncientAltarListener;
public class AncientPedestal extends SlimefunItem {
public AncientPedestal(Category category, ItemStack item, String id, RecipeType recipeType, ItemStack[] recipe, ItemStack recipeOutput) {
super(category, item, id, recipeType, recipe, recipeOutput);
SlimefunItem.registerBlockHandler(getID(), (p, b, tool, reason) -> {
Item stack = AncientAltarListener.findItem(b);
if (stack != null) {
stack.removeMetadata("item_placed", SlimefunPlugin.instance);
b.getWorld().dropItem(b.getLocation(), AncientAltarListener.fixItemStack(stack.getItemStack(), stack.getCustomName()));
stack.remove();
}
return true;
});
}
}

View File

@ -23,34 +23,34 @@ import me.mrCookieSlime.Slimefun.api.energy.ChargableBlock;
public class AutoDrier extends AContainer implements RecipeDisplayItem {
private final List<ItemStack> recipes = new ArrayList<>();
private final List<ItemStack> recipeList = new ArrayList<>();
public AutoDrier(Category category, ItemStack item, String id, RecipeType recipeType, ItemStack[] recipe) {
super(category, item, id, recipeType, recipe);
recipes.add(new ItemStack(Material.ROTTEN_FLESH));
recipes.add(new ItemStack(Material.LEATHER));
recipeList.add(new ItemStack(Material.ROTTEN_FLESH));
recipeList.add(new ItemStack(Material.LEATHER));
recipes.add(new ItemStack(Material.WET_SPONGE));
recipes.add(new ItemStack(Material.SPONGE));
recipeList.add(new ItemStack(Material.WET_SPONGE));
recipeList.add(new ItemStack(Material.SPONGE));
recipes.add(new ItemStack(Material.KELP));
recipes.add(new ItemStack(Material.DRIED_KELP));
recipeList.add(new ItemStack(Material.KELP));
recipeList.add(new ItemStack(Material.DRIED_KELP));
recipes.add(new ItemStack(Material.COOKED_BEEF));
recipes.add(SlimefunItems.BEEF_JERKY);
recipeList.add(new ItemStack(Material.COOKED_BEEF));
recipeList.add(SlimefunItems.BEEF_JERKY);
recipes.add(new ItemStack(Material.POTION));
recipes.add(new ItemStack(Material.GLASS_BOTTLE));
recipeList.add(new ItemStack(Material.POTION));
recipeList.add(new ItemStack(Material.GLASS_BOTTLE));
recipes.add(new ItemStack(Material.OAK_SAPLING));
recipes.add(new ItemStack(Material.STICK, 2));
recipeList.add(new ItemStack(Material.OAK_SAPLING));
recipeList.add(new ItemStack(Material.STICK, 2));
recipes.add(new ItemStack(Material.OAK_LEAVES));
recipes.add(new ItemStack(Material.STICK));
recipeList.add(new ItemStack(Material.OAK_LEAVES));
recipeList.add(new ItemStack(Material.STICK));
recipes.add(new ItemStack(Material.WATER_BUCKET));
recipes.add(new ItemStack(Material.BUCKET));
recipeList.add(new ItemStack(Material.WATER_BUCKET));
recipeList.add(new ItemStack(Material.BUCKET));
}
@Override
@ -65,7 +65,7 @@ public class AutoDrier extends AContainer implements RecipeDisplayItem {
@Override
public List<ItemStack> getDisplayRecipes() {
return recipes;
return recipeList;
}
@Override
@ -100,9 +100,9 @@ public class AutoDrier extends AContainer implements RecipeDisplayItem {
Material mat = item.getType();
ItemStack output = null;
for (int i = 0; i < recipes.size(); i += 2) {
if (SlimefunManager.isItemSimiliar(item, recipes.get(i), true)) {
output = recipes.get(i + 1);
for (int i = 0; i < recipeList.size(); i += 2) {
if (SlimefunManager.isItemSimiliar(item, recipeList.get(i), true)) {
output = recipeList.get(i + 1);
}
}

View File

@ -16,7 +16,7 @@ import me.mrCookieSlime.Slimefun.Lists.SlimefunItems;
public class TableSaw extends MultiBlockMachine {
private final List<ItemStack> displayRecipes = new ArrayList<ItemStack>();
private final List<ItemStack> displayRecipes = new ArrayList<>();
public TableSaw() {
super(

View File

@ -49,7 +49,7 @@ public final class MiscSetup {
}
public static void loadItems(Settings settings) {
Iterator<SlimefunItem> iterator = SlimefunItem.items.iterator();
Iterator<SlimefunItem> iterator = SlimefunItem.list().iterator();
while (iterator.hasNext()) {
SlimefunItem item = iterator.next();
if (item == null) {

View File

@ -3,6 +3,7 @@ package me.mrCookieSlime.Slimefun.Setup;
import java.util.ArrayList;
import java.util.List;
import org.bukkit.ChatColor;
import org.bukkit.inventory.ItemStack;
import org.bukkit.potion.PotionEffect;
@ -116,14 +117,21 @@ public final class SlimefunManager {
}
private static boolean equalsLore(List<String> lore, List<String> lore2) {
String string1 = "";
String string2 = "";
StringBuilder string1 = new StringBuilder();
StringBuilder string2 = new StringBuilder();
for (String string: lore) {
if (!string.startsWith("&e&e&7")) string1 = string1 + "-NEW LINE-" + string;
if (!string.startsWith(ChatColor.translateAlternateColorCodes('&', "&e&e&7"))) {
string1.append("-NEW LINE-" + string);
}
}
for (String string: lore2) {
if (!string.startsWith("&e&e&7")) string2 = string2 + "-NEW LINE-" + string;
}
return string1.equals(string2);
if (!string.startsWith(ChatColor.translateAlternateColorCodes('&', "&e&e&7"))) {
string2.append("-NEW LINE-" + string);
}
}
return string1.toString().equals(string2.toString());
}
}

View File

@ -23,7 +23,6 @@ import org.bukkit.block.CreatureSpawner;
import org.bukkit.entity.EnderPearl;
import org.bukkit.entity.Entity;
import org.bukkit.entity.EntityType;
import org.bukkit.entity.Item;
import org.bukkit.entity.LivingEntity;
import org.bukkit.entity.Player;
import org.bukkit.event.block.BlockPlaceEvent;
@ -103,6 +102,7 @@ import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.SmeltersPickaxe;
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.StormStaff;
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.SwordOfBeheading;
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.TelepositionScroll;
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.AncientPedestal;
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.BlockPlacer;
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.Composter;
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.Crucible;
@ -162,7 +162,6 @@ import me.mrCookieSlime.Slimefun.Objects.handlers.ItemConsumptionHandler;
import me.mrCookieSlime.Slimefun.Objects.handlers.ItemInteractionHandler;
import me.mrCookieSlime.Slimefun.Objects.handlers.MultiBlockInteractionHandler;
import me.mrCookieSlime.Slimefun.Objects.tasks.RainbowTicker;
import me.mrCookieSlime.Slimefun.ancient_altar.AncientAltarListener;
import me.mrCookieSlime.Slimefun.androids.AndroidType;
import me.mrCookieSlime.Slimefun.androids.ProgrammableAndroid;
import me.mrCookieSlime.Slimefun.api.BlockStorage;
@ -1732,24 +1731,10 @@ public final class SlimefunSetup {
new CustomItem(SlimefunItems.WITHER_PROOF_OBSIDIAN, 4))
.register(true);
new SlimefunItem(Categories.LUMPS_AND_MAGIC, SlimefunItems.ANCIENT_PEDESTAL, "ANCIENT_PEDESTAL", RecipeType.MAGIC_WORKBENCH,
new AncientPedestal(Categories.LUMPS_AND_MAGIC, SlimefunItems.ANCIENT_PEDESTAL, "ANCIENT_PEDESTAL", RecipeType.MAGIC_WORKBENCH,
new ItemStack[] {new ItemStack(Material.OBSIDIAN), SlimefunItems.GOLD_8K, new ItemStack(Material.OBSIDIAN), null, new ItemStack(Material.STONE), null, new ItemStack(Material.OBSIDIAN), SlimefunItems.GOLD_8K, new ItemStack(Material.OBSIDIAN)}, new CustomItem(SlimefunItems.ANCIENT_PEDESTAL, 4))
.register(true);
SlimefunItem.registerBlockHandler("ANCIENT_PEDESTAL", new SlimefunBlockHandler() {
@Override
public boolean onBreak(Player p, Block b, SlimefunItem item, UnregisterReason reason) {
Item stack = AncientAltarListener.findItem(b);
if (stack != null) {
stack.removeMetadata("item_placed", SlimefunPlugin.instance);
b.getWorld().dropItem(b.getLocation(), AncientAltarListener.fixItemStack(stack.getItemStack(), stack.getCustomName()));
stack.remove();
}
return true;
}
});
new SlimefunItem(Categories.MAGIC, SlimefunItems.ANCIENT_ALTAR, "ANCIENT_ALTAR", RecipeType.MAGIC_WORKBENCH,
new ItemStack[] {null, new ItemStack(Material.ENCHANTING_TABLE), null, SlimefunItems.MAGIC_LUMP_3, SlimefunItems.GOLD_8K, SlimefunItems.MAGIC_LUMP_3, new ItemStack(Material.OBSIDIAN), SlimefunItems.GOLD_8K, new ItemStack(Material.OBSIDIAN)})
.register(true);

View File

@ -404,7 +404,7 @@ public final class SlimefunGuide {
pl -> pl.playSound(pl.getLocation(), Sound.ENTITY_BAT_TAKEOFF, 0.7F, 0.7F)
);
List<Category> categories = SlimefunPlugin.getUtilities().currentlyEnabledCategories;
List<Category> categories = SlimefunPlugin.getUtilities().enabledCategories;
List<GuideHandler> handlers = SlimefunPlugin.getUtilities().guideHandlers.values().stream().flatMap(List::stream).collect(Collectors.toList());
int index = 9;

View File

@ -359,8 +359,6 @@ public final class SlimefunPlugin extends JavaPlugin {
// Prevent Memory Leaks
Messages.local = null;
SlimefunItem.all = null;
SlimefunItem.items = null;
AContainer.processing = null;
AContainer.progress = null;
OreWasher.items = null;

View File

@ -1,16 +1,17 @@
package me.mrCookieSlime.Slimefun.api;
import org.bukkit.inventory.ItemStack;
import me.mrCookieSlime.Slimefun.SlimefunPlugin;
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem;
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.AContainer;
import org.bukkit.inventory.ItemStack;
public final class SlimefunRecipes {
private SlimefunRecipes() {}
public static void registerMachineRecipe(String machine, int seconds, ItemStack[] input, ItemStack[] output) {
for (SlimefunItem item: SlimefunItem.all) {
for (SlimefunItem item: SlimefunPlugin.getUtilities().allItems) {
if (item instanceof AContainer && ((AContainer) item).getMachineIdentifier().equals(machine)) {
((AContainer) item).registerRecipe(seconds, input, output);
}

View File

@ -30,6 +30,10 @@ public final class HologramProjectorHologram {
if (n instanceof ArmorStand && n.getCustomName() != null && n.getCustomName().equals(nametag) && l.distanceSquared(n.getLocation()) < 0.4D) return (ArmorStand) n;
}
if (!createIfNoneExists) {
return null;
}
ArmorStand hologram = ArmorStandFactory.createHidden(l);
hologram.setCustomName(nametag);
return hologram;

View File

@ -0,0 +1,17 @@
package me.mrCookieSlime.Slimefun.utils;
import java.util.Comparator;
import me.mrCookieSlime.Slimefun.Objects.Category;
public class CategorySorter implements Comparator<Category> {
/**
* @since 4.0
*/
@Override
public int compare(Category c1, Category c2) {
return Integer.compare(c1.getTier(), c2.getTier());
}
}

View File

@ -17,6 +17,7 @@ import org.bukkit.entity.EntityType;
import org.bukkit.inventory.ItemStack;
import me.mrCookieSlime.Slimefun.GEO.OreGenResource;
import me.mrCookieSlime.Slimefun.Lists.Categories;
import me.mrCookieSlime.Slimefun.Objects.Category;
import me.mrCookieSlime.Slimefun.Objects.MultiBlock;
import me.mrCookieSlime.Slimefun.Objects.Research;
@ -47,10 +48,22 @@ public final class Utilities {
public int vanillaItems = 0;
public final List<SlimefunItem> allItems = new ArrayList<>();
public final List<SlimefunItem> enabledItems = new ArrayList<>();
public final Map<String, SlimefunItem> itemIDs = new HashMap<>();
public final List<MultiBlock> allMultiblocks = new LinkedList<>();
public final List<Research> allResearches = new LinkedList<>();
/**
* List of the registered Categories.
* @since 4.0
* @see Categories
*/
public final List<Category> allCategories = new ArrayList<>();
public final List<Category> enabledCategories = new ArrayList<>();
public final CategorySorter categorySorter = new CategorySorter();
public final Set<ItemStack> radioactiveItems = new HashSet<>();
public final Map<String, Set<ItemHandler>> itemHandlers = new HashMap<>();
public final Map<String, SlimefunBlockHandler> blockHandlers = new HashMap<>();
@ -69,8 +82,6 @@ public final class Utilities {
public final Map<String, BlockMenuPreset> blockMenuPresets = new HashMap<>();
public final List<Category> currentlyEnabledCategories = new ArrayList<>();
public final Map<String, ItemStack> automatedCraftingChamberRecipes = new HashMap<>();
public final Map<String, BlockStorage> worlds = new HashMap<>();