mirror of
https://github.com/StarWishsama/Slimefun4.git
synced 2024-09-20 11:45:51 +00:00
Merge pull request #1239 from TheBusyBiscuit/custom-textures
Added support for custom item models
This commit is contained in:
commit
40616ee47e
@ -28,19 +28,22 @@ import me.mrCookieSlime.Slimefun.api.Slimefun;
|
|||||||
|
|
||||||
public class GPSNetwork {
|
public class GPSNetwork {
|
||||||
|
|
||||||
private Map<UUID, Set<Location>> transmitters = new HashMap<>();
|
private static final String DIRECTORY = "data-storage/Slimefun/waypoints/";
|
||||||
private static final int[] border = new int[] {0, 1, 3, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 26, 27, 35, 36, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53};
|
private final Map<UUID, Set<Location>> transmitters = new HashMap<>();
|
||||||
private static final int[] inventory = new int[] {19, 20, 21, 22, 23, 24, 25, 28, 29, 30, 31, 32, 33, 34, 37, 38, 39, 40, 41, 42, 43};
|
|
||||||
|
|
||||||
private static final int[] teleporter_border = new int[] {0, 1, 2, 3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 26, 27, 35, 36, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53};
|
private final int[] border = new int[] {0, 1, 3, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 26, 27, 35, 36, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53};
|
||||||
private static final int[] teleporter_inventory = new int[] {19, 20, 21, 22, 23, 24, 25, 28, 29, 30, 31, 32, 33, 34, 37, 38, 39, 40, 41, 42, 43};
|
private final int[] inventory = new int[] {19, 20, 21, 22, 23, 24, 25, 28, 29, 30, 31, 32, 33, 34, 37, 38, 39, 40, 41, 42, 43};
|
||||||
|
|
||||||
|
private final int[] teleporterBorder = new int[] {0, 1, 2, 3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 26, 27, 35, 36, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53};
|
||||||
|
private final int[] teleporterInventory = new int[] {19, 20, 21, 22, 23, 24, 25, 28, 29, 30, 31, 32, 33, 34, 37, 38, 39, 40, 41, 42, 43};
|
||||||
|
|
||||||
public void updateTransmitter(Location l, UUID uuid, NetworkStatus status) {
|
public void updateTransmitter(Location l, UUID uuid, NetworkStatus status) {
|
||||||
Set<Location> set = transmitters.getOrDefault(uuid, new HashSet<>());
|
Set<Location> set = transmitters.getOrDefault(uuid, new HashSet<>());
|
||||||
|
|
||||||
if (status == NetworkStatus.ONLINE) {
|
if (status == NetworkStatus.ONLINE) {
|
||||||
if (set.add(l))
|
if (set.add(l)) {
|
||||||
transmitters.put(uuid, set);
|
transmitters.put(uuid, set);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
set.remove(l);
|
set.remove(l);
|
||||||
@ -49,11 +52,15 @@ public class GPSNetwork {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public int getNetworkComplexity(UUID uuid) {
|
public int getNetworkComplexity(UUID uuid) {
|
||||||
if (!transmitters.containsKey(uuid)) return 0;
|
if (!transmitters.containsKey(uuid)) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
int level = 0;
|
int level = 0;
|
||||||
for (Location l : transmitters.get(uuid)) {
|
for (Location l : transmitters.get(uuid)) {
|
||||||
level = level + l.getBlockY();
|
level += l.getBlockY();
|
||||||
}
|
}
|
||||||
|
|
||||||
return level;
|
return level;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -153,7 +160,7 @@ public class GPSNetwork {
|
|||||||
menu.addItem(slot, new CustomItem(globe, entry.getKey(), "&8\u21E8 &7World: &r" + l.getWorld().getName(), "&8\u21E8 &7X: &r" + l.getX(), "&8\u21E8 &7Y: &r" + l.getY(), "&8\u21E8 &7Z: &r" + l.getZ(), "", "&8\u21E8 &cClick to delete"));
|
menu.addItem(slot, new CustomItem(globe, entry.getKey(), "&8\u21E8 &7World: &r" + l.getWorld().getName(), "&8\u21E8 &7X: &r" + l.getX(), "&8\u21E8 &7Y: &r" + l.getY(), "&8\u21E8 &7Z: &r" + l.getZ(), "", "&8\u21E8 &cClick to delete"));
|
||||||
menu.addMenuClickHandler(slot, (pl, slotn, item, action) -> {
|
menu.addMenuClickHandler(slot, (pl, slotn, item, action) -> {
|
||||||
String id = ChatColor.stripColor(ChatColor.translateAlternateColorCodes('&', entry.getKey())).toUpperCase().replace(' ', '_');
|
String id = ChatColor.stripColor(ChatColor.translateAlternateColorCodes('&', entry.getKey())).toUpperCase().replace(' ', '_');
|
||||||
Config cfg = new Config("data-storage/Slimefun/waypoints/" + pl.getUniqueId().toString() + ".yml");
|
Config cfg = new Config(DIRECTORY + pl.getUniqueId().toString() + ".yml");
|
||||||
cfg.setValue(id, null);
|
cfg.setValue(id, null);
|
||||||
cfg.save();
|
cfg.save();
|
||||||
pl.playSound(pl.getLocation(), Sound.UI_BUTTON_CLICK, 1F, 1F);
|
pl.playSound(pl.getLocation(), Sound.UI_BUTTON_CLICK, 1F, 1F);
|
||||||
@ -174,12 +181,14 @@ public class GPSNetwork {
|
|||||||
|
|
||||||
public Map<String, Location> getWaypoints(UUID uuid) {
|
public Map<String, Location> getWaypoints(UUID uuid) {
|
||||||
Map<String, Location> map = new HashMap<>();
|
Map<String, Location> map = new HashMap<>();
|
||||||
Config cfg = new Config("data-storage/Slimefun/waypoints/" + uuid.toString() + ".yml");
|
Config cfg = new Config(DIRECTORY + uuid.toString() + ".yml");
|
||||||
for (String key: cfg.getKeys()) {
|
|
||||||
|
for (String key : cfg.getKeys()) {
|
||||||
if (cfg.contains(key + ".world") && Bukkit.getWorld(cfg.getString(key + ".world")) != null) {
|
if (cfg.contains(key + ".world") && Bukkit.getWorld(cfg.getString(key + ".world")) != null) {
|
||||||
map.put(cfg.getString(key + ".name"), cfg.getLocation(key));
|
map.put(cfg.getString(key + ".name"), cfg.getLocation(key));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return map;
|
return map;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -188,6 +197,7 @@ public class GPSNetwork {
|
|||||||
SlimefunPlugin.getLocal().sendMessage(p, "gps.waypoint.max", true);
|
SlimefunPlugin.getLocal().sendMessage(p, "gps.waypoint.max", true);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
SlimefunPlugin.getLocal().sendMessage(p, "gps.waypoint.new", true);
|
SlimefunPlugin.getLocal().sendMessage(p, "gps.waypoint.new", true);
|
||||||
p.playSound(p.getLocation(), Sound.BLOCK_NOTE_BLOCK_PLING, 0.5F, 1F);
|
p.playSound(p.getLocation(), Sound.BLOCK_NOTE_BLOCK_PLING, 0.5F, 1F);
|
||||||
|
|
||||||
@ -201,12 +211,14 @@ public class GPSNetwork {
|
|||||||
SlimefunPlugin.getLocal().sendMessage(p, "gps.waypoint.max", true);
|
SlimefunPlugin.getLocal().sendMessage(p, "gps.waypoint.max", true);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
Config cfg = new Config("data-storage/Slimefun/waypoints/" + p.getUniqueId().toString() + ".yml");
|
|
||||||
String id = ChatColor.stripColor(ChatColor.translateAlternateColorCodes('&', name)).toUpperCase()
|
Config cfg = new Config(DIRECTORY + p.getUniqueId().toString() + ".yml");
|
||||||
.replace(' ', '_');
|
String id = ChatColor.stripColor(ChatColor.translateAlternateColorCodes('&', name)).toUpperCase().replace(' ', '_');
|
||||||
|
|
||||||
cfg.setValue(id, l);
|
cfg.setValue(id, l);
|
||||||
cfg.setValue(id + ".name", name);
|
cfg.setValue(id + ".name", name);
|
||||||
cfg.save();
|
cfg.save();
|
||||||
|
|
||||||
p.playSound(p.getLocation(), Sound.BLOCK_NOTE_BLOCK_PLING, 1F, 1F);
|
p.playSound(p.getLocation(), Sound.BLOCK_NOTE_BLOCK_PLING, 1F, 1F);
|
||||||
SlimefunPlugin.getLocal().sendMessage(p, "gps.waypoint.added", true);
|
SlimefunPlugin.getLocal().sendMessage(p, "gps.waypoint.added", true);
|
||||||
}
|
}
|
||||||
@ -215,17 +227,18 @@ public class GPSNetwork {
|
|||||||
return transmitters.getOrDefault(uuid, new HashSet<>());
|
return transmitters.getOrDefault(uuid, new HashSet<>());
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void openTeleporterGUI(Player p, UUID uuid, Block b, final int complexity) {
|
public void openTeleporterGUI(Player p, UUID uuid, Block b, final int complexity) {
|
||||||
if (SlimefunPlugin.getUtilities().teleporterUsers.contains(p.getUniqueId())) return;
|
if (SlimefunPlugin.getUtilities().teleporterUsers.contains(p.getUniqueId())) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
p.playSound(p.getLocation(), Sound.UI_BUTTON_CLICK, 1F, 1F);
|
p.playSound(p.getLocation(), Sound.UI_BUTTON_CLICK, 1F, 1F);
|
||||||
SlimefunPlugin.getUtilities().teleporterUsers.add(p.getUniqueId());
|
SlimefunPlugin.getUtilities().teleporterUsers.add(p.getUniqueId());
|
||||||
|
|
||||||
ChestMenu menu = new ChestMenu("&3Teleporter");
|
ChestMenu menu = new ChestMenu("&3Teleporter");
|
||||||
|
|
||||||
menu.addMenuCloseHandler(pl -> SlimefunPlugin.getUtilities().teleporterUsers.remove(pl.getUniqueId()));
|
menu.addMenuCloseHandler(pl -> SlimefunPlugin.getUtilities().teleporterUsers.remove(pl.getUniqueId()));
|
||||||
|
|
||||||
for (int slot : teleporter_border) {
|
for (int slot : teleporterBorder) {
|
||||||
menu.addItem(slot, new CustomItem(new ItemStack(Material.GRAY_STAINED_GLASS_PANE), " "),
|
menu.addItem(slot, new CustomItem(new ItemStack(Material.GRAY_STAINED_GLASS_PANE), " "),
|
||||||
(pl, slotn, item, action) -> false
|
(pl, slotn, item, action) -> false
|
||||||
);
|
);
|
||||||
@ -237,9 +250,10 @@ public class GPSNetwork {
|
|||||||
|
|
||||||
final Location source = new Location(b.getWorld(), b.getX() + 0.5D, b.getY() + 2D, b.getZ() + 0.5D);
|
final Location source = new Location(b.getWorld(), b.getX() + 0.5D, b.getY() + 2D, b.getZ() + 0.5D);
|
||||||
int index = 0;
|
int index = 0;
|
||||||
for (final Map.Entry<String, Location> entry: Slimefun.getGPSNetwork().getWaypoints(uuid).entrySet()) {
|
|
||||||
if (index >= teleporter_inventory.length) break;
|
for (final Map.Entry<String, Location> entry : Slimefun.getGPSNetwork().getWaypoints(uuid).entrySet()) {
|
||||||
int slot = teleporter_inventory[index];
|
if (index >= teleporterInventory.length) break;
|
||||||
|
int slot = teleporterInventory[index];
|
||||||
|
|
||||||
final Location l = entry.getValue();
|
final Location l = entry.getValue();
|
||||||
ItemStack globe = getPlanet(entry);
|
ItemStack globe = getPlanet(entry);
|
||||||
|
@ -4,6 +4,7 @@ import java.util.ArrayList;
|
|||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Optional;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
import java.util.function.Consumer;
|
import java.util.function.Consumer;
|
||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
@ -13,9 +14,7 @@ import org.bukkit.ChatColor;
|
|||||||
import org.bukkit.World;
|
import org.bukkit.World;
|
||||||
import org.bukkit.entity.EntityType;
|
import org.bukkit.entity.EntityType;
|
||||||
import org.bukkit.inventory.ItemStack;
|
import org.bukkit.inventory.ItemStack;
|
||||||
import org.bukkit.inventory.meta.ItemMeta;
|
|
||||||
|
|
||||||
import io.github.thebusybiscuit.cscorelib2.data.PersistentDataAPI;
|
|
||||||
import io.github.thebusybiscuit.cscorelib2.inventory.ItemUtils;
|
import io.github.thebusybiscuit.cscorelib2.inventory.ItemUtils;
|
||||||
import me.mrCookieSlime.Slimefun.SlimefunPlugin;
|
import me.mrCookieSlime.Slimefun.SlimefunPlugin;
|
||||||
import me.mrCookieSlime.Slimefun.Lists.RecipeType;
|
import me.mrCookieSlime.Slimefun.Lists.RecipeType;
|
||||||
@ -164,7 +163,11 @@ public class SlimefunItem {
|
|||||||
if (SlimefunPlugin.getUtilities().itemIDs.containsKey(this.id)) {
|
if (SlimefunPlugin.getUtilities().itemIDs.containsKey(this.id)) {
|
||||||
throw new IllegalArgumentException("ID \"" + this.id + "\" already exists");
|
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};
|
|
||||||
|
if (this.recipe.length < 9) {
|
||||||
|
this.recipe = new ItemStack[] {null, null, null, null, null, null, null, null, null};
|
||||||
|
}
|
||||||
|
|
||||||
SlimefunPlugin.getUtilities().allItems.add(this);
|
SlimefunPlugin.getUtilities().allItems.add(this);
|
||||||
|
|
||||||
SlimefunPlugin.getItemCfg().setDefaultValue(this.id + ".enabled", true);
|
SlimefunPlugin.getItemCfg().setDefaultValue(this.id + ".enabled", true);
|
||||||
@ -192,7 +195,10 @@ public class SlimefunItem {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (SlimefunPlugin.getItemCfg().getBoolean(id + ".enabled")) {
|
if (SlimefunPlugin.getItemCfg().getBoolean(id + ".enabled")) {
|
||||||
if (!Category.list().contains(category)) category.register();
|
|
||||||
|
if (!Category.list().contains(category)) {
|
||||||
|
category.register();
|
||||||
|
}
|
||||||
|
|
||||||
this.state = ItemState.ENABLED;
|
this.state = ItemState.ENABLED;
|
||||||
|
|
||||||
@ -202,8 +208,13 @@ public class SlimefunItem {
|
|||||||
this.disenchantable = SlimefunPlugin.getItemCfg().getBoolean(this.id + ".allow-disenchanting");
|
this.disenchantable = SlimefunPlugin.getItemCfg().getBoolean(this.id + ".allow-disenchanting");
|
||||||
this.permission = SlimefunPlugin.getItemCfg().getString(this.id + ".required-permission");
|
this.permission = SlimefunPlugin.getItemCfg().getString(this.id + ".required-permission");
|
||||||
this.noPermissionTooltip = SlimefunPlugin.getItemCfg().getStringList(this.id + ".no-permission-tooltip");
|
this.noPermissionTooltip = SlimefunPlugin.getItemCfg().getStringList(this.id + ".no-permission-tooltip");
|
||||||
|
|
||||||
SlimefunPlugin.getUtilities().enabledItems.add(this);
|
SlimefunPlugin.getUtilities().enabledItems.add(this);
|
||||||
if (slimefun) SlimefunPlugin.getUtilities().vanillaItems++;
|
|
||||||
|
if (slimefun) {
|
||||||
|
SlimefunPlugin.getUtilities().vanillaItems++;
|
||||||
|
}
|
||||||
|
|
||||||
SlimefunPlugin.getUtilities().itemIDs.put(this.id, this);
|
SlimefunPlugin.getUtilities().itemIDs.put(this.id, this);
|
||||||
|
|
||||||
create();
|
create();
|
||||||
@ -285,17 +296,18 @@ public class SlimefunItem {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (item.hasItemMeta()) {
|
if (item.hasItemMeta()) {
|
||||||
String id = PersistentDataAPI.getString(item.getItemMeta(), SlimefunPlugin.getItemDataKey());
|
Optional<String> itemID = SlimefunPlugin.getItemDataService().getItemData(item);
|
||||||
if (id != null) return getByID(id);
|
|
||||||
|
if (itemID.isPresent()) {
|
||||||
|
return getByID(itemID.get());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
for (SlimefunItem sfi: SlimefunPlugin.getUtilities().enabledItems) {
|
for (SlimefunItem sfi: SlimefunPlugin.getUtilities().enabledItems) {
|
||||||
if (sfi.isItem(item)) {
|
if (sfi.isItem(item)) {
|
||||||
// If we have to loop all items for the given item, then at least
|
// If we have to loop all items for the given item, then at least
|
||||||
// set the id via PersistenDataAPI for future performance boosts
|
// set the id via PersistenDataAPI for future performance boosts
|
||||||
ItemMeta im = item.getItemMeta();
|
SlimefunPlugin.getItemDataService().setItemData(item, sfi.getID());
|
||||||
PersistentDataAPI.setString(im, SlimefunPlugin.getItemDataKey(), sfi.getID());
|
|
||||||
item.setItemMeta(im);
|
|
||||||
|
|
||||||
return sfi;
|
return sfi;
|
||||||
}
|
}
|
||||||
@ -309,8 +321,10 @@ public class SlimefunItem {
|
|||||||
if (item == null) return false;
|
if (item == null) return false;
|
||||||
|
|
||||||
if (item.hasItemMeta()) {
|
if (item.hasItemMeta()) {
|
||||||
String comparingId = PersistentDataAPI.getString(item.getItemMeta(), SlimefunPlugin.getItemDataKey());
|
Optional<String> itemID = SlimefunPlugin.getItemDataService().getItemData(item);
|
||||||
if (comparingId != null) return getID().equals(comparingId);
|
if (itemID.isPresent()) {
|
||||||
|
return getID().equals(itemID.get());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (this instanceof ChargableItem && SlimefunManager.isItemSimiliar(item, this.item, false)) return true;
|
if (this instanceof ChargableItem && SlimefunManager.isItemSimiliar(item, this.item, false)) return true;
|
||||||
|
@ -40,7 +40,6 @@ import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItem;
|
|||||||
import me.mrCookieSlime.CSCoreLibPlugin.general.Particles.FireworkShow;
|
import me.mrCookieSlime.CSCoreLibPlugin.general.Particles.FireworkShow;
|
||||||
import me.mrCookieSlime.CSCoreLibPlugin.general.World.CustomSkull;
|
import me.mrCookieSlime.CSCoreLibPlugin.general.World.CustomSkull;
|
||||||
import me.mrCookieSlime.Slimefun.SlimefunPlugin;
|
import me.mrCookieSlime.Slimefun.SlimefunPlugin;
|
||||||
import me.mrCookieSlime.Slimefun.GPS.GPSNetwork;
|
|
||||||
import me.mrCookieSlime.Slimefun.Lists.Categories;
|
import me.mrCookieSlime.Slimefun.Lists.Categories;
|
||||||
import me.mrCookieSlime.Slimefun.Lists.RecipeType;
|
import me.mrCookieSlime.Slimefun.Lists.RecipeType;
|
||||||
import me.mrCookieSlime.Slimefun.Lists.SlimefunItems;
|
import me.mrCookieSlime.Slimefun.Lists.SlimefunItems;
|
||||||
@ -179,11 +178,11 @@ import me.mrCookieSlime.Slimefun.holograms.ReactorHologram;
|
|||||||
|
|
||||||
public final class SlimefunSetup {
|
public final class SlimefunSetup {
|
||||||
|
|
||||||
|
private static final Random random = new Random();
|
||||||
|
|
||||||
private SlimefunSetup() {}
|
private SlimefunSetup() {}
|
||||||
|
|
||||||
public static void setupItems() {
|
public static void setupItems() {
|
||||||
Random random = new Random();
|
|
||||||
|
|
||||||
new SlimefunItem(Categories.WEAPONS, (SlimefunItemStack) SlimefunItems.GRANDMAS_WALKING_STICK, RecipeType.ENHANCED_CRAFTING_TABLE,
|
new SlimefunItem(Categories.WEAPONS, (SlimefunItemStack) SlimefunItems.GRANDMAS_WALKING_STICK, RecipeType.ENHANCED_CRAFTING_TABLE,
|
||||||
new ItemStack[] {null, new ItemStack(Material.OAK_LOG), null, null, new ItemStack(Material.OAK_LOG), null, null, new ItemStack(Material.OAK_LOG), null})
|
new ItemStack[] {null, new ItemStack(Material.OAK_LOG), null, null, new ItemStack(Material.OAK_LOG), null, null, new ItemStack(Material.OAK_LOG), null})
|
||||||
.register(true);
|
.register(true);
|
||||||
@ -2708,7 +2707,7 @@ public final class SlimefunSetup {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onInteract(final Player p, final Block b) {
|
public void onInteract(final Player p, final Block b) {
|
||||||
GPSNetwork.openTeleporterGUI(p, UUID.fromString(BlockStorage.getLocationInfo(b.getLocation(), "owner")), b, Slimefun.getGPSNetwork().getNetworkComplexity(UUID.fromString(BlockStorage.getLocationInfo(b.getLocation(), "owner"))));
|
Slimefun.getGPSNetwork().openTeleporterGUI(p, UUID.fromString(BlockStorage.getLocationInfo(b.getLocation(), "owner")), b, Slimefun.getGPSNetwork().getNetworkComplexity(UUID.fromString(BlockStorage.getLocationInfo(b.getLocation(), "owner"))));
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -11,6 +11,7 @@ import com.google.gson.JsonElement;
|
|||||||
import com.google.gson.JsonObject;
|
import com.google.gson.JsonObject;
|
||||||
import com.google.gson.JsonParser;
|
import com.google.gson.JsonParser;
|
||||||
|
|
||||||
|
import me.mrCookieSlime.Slimefun.SlimefunPlugin;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem;
|
||||||
import me.mrCookieSlime.Slimefun.api.Slimefun;
|
import me.mrCookieSlime.Slimefun.api.Slimefun;
|
||||||
|
|
||||||
@ -18,11 +19,11 @@ public final class WikiSetup {
|
|||||||
|
|
||||||
private WikiSetup() {}
|
private WikiSetup() {}
|
||||||
|
|
||||||
public static void addWikiPages(Class<?> c) {
|
public static void addWikiPages(SlimefunPlugin plugin) {
|
||||||
JsonParser parser = new JsonParser();
|
JsonParser parser = new JsonParser();
|
||||||
Slimefun.getLogger().log(Level.INFO, "Loading Wiki pages...");
|
Slimefun.getLogger().log(Level.INFO, "Loading Wiki pages...");
|
||||||
|
|
||||||
try (BufferedReader reader = new BufferedReader(new InputStreamReader(c.getResourceAsStream("/wiki.json")))) {
|
try (BufferedReader reader = new BufferedReader(new InputStreamReader(plugin.getClass().getResourceAsStream("/wiki.json")))) {
|
||||||
JsonElement element = parser.parse(reader.lines().collect(Collectors.joining("")));
|
JsonElement element = parser.parse(reader.lines().collect(Collectors.joining("")));
|
||||||
JsonObject json = element.getAsJsonObject();
|
JsonObject json = element.getAsJsonObject();
|
||||||
|
|
||||||
|
@ -4,7 +4,6 @@ import java.io.File;
|
|||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
|
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.NamespacedKey;
|
|
||||||
import org.bukkit.World;
|
import org.bukkit.World;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.inventory.ItemStack;
|
import org.bukkit.inventory.ItemStack;
|
||||||
@ -35,7 +34,6 @@ import me.mrCookieSlime.Slimefun.Setup.Files;
|
|||||||
import me.mrCookieSlime.Slimefun.Setup.MiscSetup;
|
import me.mrCookieSlime.Slimefun.Setup.MiscSetup;
|
||||||
import me.mrCookieSlime.Slimefun.Setup.ResearchSetup;
|
import me.mrCookieSlime.Slimefun.Setup.ResearchSetup;
|
||||||
import me.mrCookieSlime.Slimefun.Setup.SlimefunLocalization;
|
import me.mrCookieSlime.Slimefun.Setup.SlimefunLocalization;
|
||||||
import me.mrCookieSlime.Slimefun.Setup.SlimefunMetrics;
|
|
||||||
import me.mrCookieSlime.Slimefun.Setup.SlimefunSetup;
|
import me.mrCookieSlime.Slimefun.Setup.SlimefunSetup;
|
||||||
import me.mrCookieSlime.Slimefun.Setup.WikiSetup;
|
import me.mrCookieSlime.Slimefun.Setup.WikiSetup;
|
||||||
import me.mrCookieSlime.Slimefun.ancient_altar.AncientAltarListener;
|
import me.mrCookieSlime.Slimefun.ancient_altar.AncientAltarListener;
|
||||||
@ -71,6 +69,9 @@ import me.mrCookieSlime.Slimefun.listeners.TalismanListener;
|
|||||||
import me.mrCookieSlime.Slimefun.listeners.TeleporterListener;
|
import me.mrCookieSlime.Slimefun.listeners.TeleporterListener;
|
||||||
import me.mrCookieSlime.Slimefun.listeners.ToolListener;
|
import me.mrCookieSlime.Slimefun.listeners.ToolListener;
|
||||||
import me.mrCookieSlime.Slimefun.listeners.WorldListener;
|
import me.mrCookieSlime.Slimefun.listeners.WorldListener;
|
||||||
|
import me.mrCookieSlime.Slimefun.services.CustomItemDataService;
|
||||||
|
import me.mrCookieSlime.Slimefun.services.CustomTextureService;
|
||||||
|
import me.mrCookieSlime.Slimefun.services.MetricsService;
|
||||||
import me.mrCookieSlime.Slimefun.utils.Settings;
|
import me.mrCookieSlime.Slimefun.utils.Settings;
|
||||||
import me.mrCookieSlime.Slimefun.utils.Utilities;
|
import me.mrCookieSlime.Slimefun.utils.Utilities;
|
||||||
|
|
||||||
@ -79,7 +80,9 @@ public final class SlimefunPlugin extends JavaPlugin {
|
|||||||
public static SlimefunPlugin instance;
|
public static SlimefunPlugin instance;
|
||||||
|
|
||||||
private RecipeSnapshot recipeSnapshot;
|
private RecipeSnapshot recipeSnapshot;
|
||||||
private final NamespacedKey itemDataKey = new NamespacedKey(this, "slimefun_item");
|
|
||||||
|
private final CustomItemDataService itemDataService = new CustomItemDataService(this, "slimefun_item");
|
||||||
|
private final CustomTextureService textureService = new CustomTextureService(this);
|
||||||
|
|
||||||
private TickerTask ticker;
|
private TickerTask ticker;
|
||||||
private SlimefunLocalization local;
|
private SlimefunLocalization local;
|
||||||
@ -164,7 +167,7 @@ public final class SlimefunPlugin extends JavaPlugin {
|
|||||||
gps = new GPSNetwork();
|
gps = new GPSNetwork();
|
||||||
|
|
||||||
// Setting up bStats
|
// Setting up bStats
|
||||||
new SlimefunMetrics(this);
|
new MetricsService(this);
|
||||||
|
|
||||||
// Setting up the Auto-Updater
|
// Setting up the Auto-Updater
|
||||||
Updater updater;
|
Updater updater;
|
||||||
@ -210,13 +213,14 @@ public final class SlimefunPlugin extends JavaPlugin {
|
|||||||
MiscSetup.loadDescriptions();
|
MiscSetup.loadDescriptions();
|
||||||
|
|
||||||
settings.researchesEnabled = getResearchCfg().getBoolean("enable-researching");
|
settings.researchesEnabled = getResearchCfg().getBoolean("enable-researching");
|
||||||
settings.smelteryFireBreakChance = (Integer) Slimefun.getItemValue("SMELTERY", "chance.fireBreak");
|
settings.smelteryFireBreakChance = (int) Slimefun.getItemValue("SMELTERY", "chance.fireBreak");
|
||||||
|
|
||||||
getLogger().log(Level.INFO, "Loading Researches...");
|
getLogger().log(Level.INFO, "Loading Researches...");
|
||||||
ResearchSetup.setupResearches();
|
ResearchSetup.setupResearches();
|
||||||
|
|
||||||
MiscSetup.setupMisc();
|
MiscSetup.setupMisc();
|
||||||
WikiSetup.addWikiPages(getClass());
|
WikiSetup.addWikiPages(this);
|
||||||
|
textureService.setup(utilities.allItems);
|
||||||
|
|
||||||
getLogger().log(Level.INFO, "Loading World Generators...");
|
getLogger().log(Level.INFO, "Loading World Generators...");
|
||||||
|
|
||||||
@ -441,8 +445,12 @@ public final class SlimefunPlugin extends JavaPlugin {
|
|||||||
return instance.recipeSnapshot;
|
return instance.recipeSnapshot;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static NamespacedKey getItemDataKey() {
|
public static CustomItemDataService getItemDataService() {
|
||||||
return instance.itemDataKey;
|
return instance.itemDataService;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static CustomTextureService getItemTextureService() {
|
||||||
|
return instance.textureService;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -8,7 +8,6 @@ import org.bukkit.Material;
|
|||||||
import org.bukkit.inventory.ItemStack;
|
import org.bukkit.inventory.ItemStack;
|
||||||
import org.bukkit.inventory.meta.ItemMeta;
|
import org.bukkit.inventory.meta.ItemMeta;
|
||||||
|
|
||||||
import io.github.thebusybiscuit.cscorelib2.data.PersistentDataAPI;
|
|
||||||
import io.github.thebusybiscuit.cscorelib2.item.CustomItem;
|
import io.github.thebusybiscuit.cscorelib2.item.CustomItem;
|
||||||
import me.mrCookieSlime.CSCoreLibPlugin.general.World.CustomSkull;
|
import me.mrCookieSlime.CSCoreLibPlugin.general.World.CustomSkull;
|
||||||
import me.mrCookieSlime.Slimefun.SlimefunPlugin;
|
import me.mrCookieSlime.Slimefun.SlimefunPlugin;
|
||||||
@ -56,9 +55,12 @@ public class SlimefunItemStack extends CustomItem {
|
|||||||
private void setID(String id) {
|
private void setID(String id) {
|
||||||
this.id = id;
|
this.id = id;
|
||||||
|
|
||||||
ItemMeta im = getItemMeta();
|
ItemMeta meta = getItemMeta();
|
||||||
PersistentDataAPI.setString(im, SlimefunPlugin.getItemDataKey(), id);
|
|
||||||
setItemMeta(im);
|
SlimefunPlugin.getItemDataService().setItemData(meta, id);
|
||||||
|
SlimefunPlugin.getItemTextureService().setTexture(meta, id);
|
||||||
|
|
||||||
|
setItemMeta(meta);
|
||||||
}
|
}
|
||||||
|
|
||||||
private static ItemStack getSkull(String texture) {
|
private static ItemStack getSkull(String texture) {
|
||||||
|
@ -25,7 +25,7 @@ public class PlayerAutoSaver implements Runnable {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (players > 0) {
|
if (players > 0) {
|
||||||
Slimefun.getLogger().log(Level.INFO, "Auto-Saved Player Data for " + players + " Player(s)!");
|
Slimefun.getLogger().log(Level.INFO, "Auto-Saved Player Data for {0} Player(s)!", players);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -7,7 +7,7 @@ import org.bukkit.command.CommandSender;
|
|||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
import me.mrCookieSlime.Slimefun.SlimefunPlugin;
|
import me.mrCookieSlime.Slimefun.SlimefunPlugin;
|
||||||
import me.mrCookieSlime.Slimefun.GPS.GPSNetwork;
|
import me.mrCookieSlime.Slimefun.api.Slimefun;
|
||||||
import me.mrCookieSlime.Slimefun.commands.SlimefunCommand;
|
import me.mrCookieSlime.Slimefun.commands.SlimefunCommand;
|
||||||
import me.mrCookieSlime.Slimefun.commands.SubCommand;
|
import me.mrCookieSlime.Slimefun.commands.SubCommand;
|
||||||
|
|
||||||
@ -29,7 +29,7 @@ public class TeleporterCommand extends SubCommand {
|
|||||||
if (sender.hasPermission("slimefun.command.teleporter") && sender instanceof Player) {
|
if (sender.hasPermission("slimefun.command.teleporter") && sender instanceof Player) {
|
||||||
OfflinePlayer player = Bukkit.getOfflinePlayer(args[1]);
|
OfflinePlayer player = Bukkit.getOfflinePlayer(args[1]);
|
||||||
if (player.getName() != null) {
|
if (player.getName() != null) {
|
||||||
GPSNetwork.openTeleporterGUI((Player) sender, player.getUniqueId(), ((Player) sender).getLocation().getBlock().getRelative(BlockFace.DOWN), 999999999);
|
Slimefun.getGPSNetwork().openTeleporterGUI((Player) sender, player.getUniqueId(), ((Player) sender).getLocation().getBlock().getRelative(BlockFace.DOWN), 999999999);
|
||||||
}
|
}
|
||||||
else sender.sendMessage("&4Unknown Player: &c" + args[1]);
|
else sender.sendMessage("&4Unknown Player: &c" + args[1]);
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,38 @@
|
|||||||
|
package me.mrCookieSlime.Slimefun.services;
|
||||||
|
|
||||||
|
import java.util.Optional;
|
||||||
|
|
||||||
|
import org.bukkit.NamespacedKey;
|
||||||
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
import org.bukkit.inventory.meta.ItemMeta;
|
||||||
|
import org.bukkit.plugin.Plugin;
|
||||||
|
|
||||||
|
import io.github.thebusybiscuit.cscorelib2.data.PersistentDataAPI;
|
||||||
|
|
||||||
|
public class CustomItemDataService {
|
||||||
|
|
||||||
|
private final NamespacedKey namespacedKey;
|
||||||
|
|
||||||
|
public CustomItemDataService(Plugin plugin, String key) {
|
||||||
|
namespacedKey = new NamespacedKey(plugin, key);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setItemData(ItemStack item, String id) {
|
||||||
|
ItemMeta im = item.getItemMeta();
|
||||||
|
setItemData(im, id);
|
||||||
|
item.setItemMeta(im);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setItemData(ItemMeta im, String id) {
|
||||||
|
PersistentDataAPI.setString(im, namespacedKey, id);
|
||||||
|
}
|
||||||
|
|
||||||
|
public Optional<String> getItemData(ItemStack item) {
|
||||||
|
return getItemData(item.getItemMeta());
|
||||||
|
}
|
||||||
|
|
||||||
|
public Optional<String> getItemData(ItemMeta meta) {
|
||||||
|
return PersistentDataAPI.getOptionalString(meta, namespacedKey);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,44 @@
|
|||||||
|
package me.mrCookieSlime.Slimefun.services;
|
||||||
|
|
||||||
|
import java.util.Collection;
|
||||||
|
|
||||||
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
import org.bukkit.inventory.meta.ItemMeta;
|
||||||
|
import org.bukkit.plugin.Plugin;
|
||||||
|
|
||||||
|
import io.github.thebusybiscuit.cscorelib2.config.Config;
|
||||||
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem;
|
||||||
|
|
||||||
|
public class CustomTextureService {
|
||||||
|
|
||||||
|
private final Config config;
|
||||||
|
|
||||||
|
public CustomTextureService(Plugin plugin) {
|
||||||
|
this.config = new Config(plugin, "item-models.yml");
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setup(Collection<SlimefunItem> items) {
|
||||||
|
for (SlimefunItem item : items) {
|
||||||
|
if (item != null && item.getID() != null) {
|
||||||
|
config.setDefaultValue(item.getID(), 0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
config.save();
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getModelData(String id) {
|
||||||
|
return config.getInt(id);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setTexture(ItemStack item, String id) {
|
||||||
|
ItemMeta im = item.getItemMeta();
|
||||||
|
setTexture(im, id);
|
||||||
|
item.setItemMeta(im);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setTexture(ItemMeta im, String id) {
|
||||||
|
im.setCustomModelData(getModelData(id));
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -1,12 +1,12 @@
|
|||||||
package me.mrCookieSlime.Slimefun.Setup;
|
package me.mrCookieSlime.Slimefun.services;
|
||||||
|
|
||||||
import org.bstats.bukkit.Metrics;
|
import org.bstats.bukkit.Metrics;
|
||||||
|
|
||||||
import me.mrCookieSlime.Slimefun.SlimefunPlugin;
|
import me.mrCookieSlime.Slimefun.SlimefunPlugin;
|
||||||
|
|
||||||
public class SlimefunMetrics extends Metrics {
|
public class MetricsService extends Metrics {
|
||||||
|
|
||||||
public SlimefunMetrics(SlimefunPlugin plugin) {
|
public MetricsService(SlimefunPlugin plugin) {
|
||||||
super(plugin);
|
super(plugin);
|
||||||
|
|
||||||
addCustomChart(new SimplePie("auto_updates", () -> SlimefunPlugin.getCfg().getBoolean("options.auto-update") ? "enabled": "disabled"));
|
addCustomChart(new SimplePie("auto_updates", () -> SlimefunPlugin.getCfg().getBoolean("options.auto-update") ? "enabled": "disabled"));
|
Loading…
Reference in New Issue
Block a user