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

Default values for item models are now read from a resource file.

This commit is contained in:
TheBusyBiscuit 2021-05-08 19:22:54 +02:00
parent 96f467d9f1
commit 81223004bf
3 changed files with 44 additions and 15 deletions

View File

@ -300,6 +300,7 @@
<includes>
<include>plugin.yml</include>
<include>config.yml</include>
<include>item-models.yml</include>
<include>wiki.json</include>
<include>languages/translators.json</include>

View File

@ -1,15 +1,23 @@
package io.github.thebusybiscuit.slimefun4.core.services;
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.nio.charset.StandardCharsets;
import java.util.Collection;
import java.util.logging.Level;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
import org.apache.commons.lang.Validate;
import org.bukkit.configuration.file.FileConfiguration;
import org.bukkit.configuration.file.YamlConfiguration;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.ItemMeta;
import io.github.thebusybiscuit.cscorelib2.config.Config;
import io.github.thebusybiscuit.slimefun4.implementation.SlimefunPlugin;
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem;
import me.mrCookieSlime.Slimefun.api.SlimefunItemStack;
@ -65,21 +73,7 @@ public class CustomTextureService {
public void register(@Nonnull Collection<SlimefunItem> items, boolean save) {
Validate.notEmpty(items, "items must neither be null or empty.");
config.setDefaultValue("SLIMEFUN_GUIDE", 0);
config.setDefaultValue("_UI_BACKGROUND", 0);
config.setDefaultValue("_UI_NO_PERMISSION", 0);
config.setDefaultValue("_UI_NOT_RESEARCHED", 0);
config.setDefaultValue("_UI_INPUT_SLOT", 0);
config.setDefaultValue("_UI_OUTPUT_SLOT", 0);
config.setDefaultValue("_UI_BACK", 0);
config.setDefaultValue("_UI_MENU", 0);
config.setDefaultValue("_UI_SEARCH", 0);
config.setDefaultValue("_UI_WIKI", 0);
config.setDefaultValue("_UI_PREVIOUS_ACTIVE", 0);
config.setDefaultValue("_UI_PREVIOUS_INACTIVE", 0);
config.setDefaultValue("_UI_NEXT_ACTIVE", 0);
config.setDefaultValue("_UI_NEXT_INACTIVE", 0);
loadDefaultValues();
for (SlimefunItem item : items) {
if (item != null) {
@ -98,6 +92,20 @@ public class CustomTextureService {
}
}
private void loadDefaultValues() {
InputStream inputStream = SlimefunPlugin.class.getResourceAsStream("/item-models.yml");
try (BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream, StandardCharsets.UTF_8))) {
FileConfiguration cfg = YamlConfiguration.loadConfiguration(reader);
for (String key : cfg.getKeys(false)) {
config.setDefaultValue(key, cfg.getInt(key));
}
} catch (Exception e) {
SlimefunPlugin.logger().log(Level.SEVERE, "Failed to load default item-models.yml file", e);
}
}
@Nullable
public String getVersion() {
return version;

View File

@ -0,0 +1,20 @@
# Slimefun items that are not registered.
SLIMEFUN_GUIDE: 0
ENDER_TALISMAN: 0
# UI elements also have their own id.
_UI_BACKGROUND: 0
_UI_NO_PERMISSION: 0
_UI_NOT_RESEARCHED: 0
_UI_INPUT_SLOT: 0
_UI_OUTPUT_SLOT: 0
_UI_BACK: 0
_UI_MENU: 0
_UI_SEARCH: 0
_UI_WIKI: 0
_UI_PREVIOUS_ACTIVE: 0
_UI_PREVIOUS_INACTIVE: 0
_UI_NEXT_ACTIVE: 0
_UI_NEXT_INACTIVE: 0
## The rest of the file will be auto-populated with all registered Slimefun items.