diff --git a/Cameras/pom.xml b/Cameras/pom.xml
index 2d1ab3e..72869fa 100644
--- a/Cameras/pom.xml
+++ b/Cameras/pom.xml
@@ -1,30 +1,59 @@
- 4.0.0
- Achoowy
- CameraPlugin
- 0.0.1-SNAPSHOT
- Cameras
- Hand held cameras in minecraft
-
- src
-
-
- maven-compiler-plugin
- 3.8.0
-
- 1.8
- 1.8
-
-
-
-
-
-
-
- spigot-repo
- https://hub.spigotmc.org/nexus/content/repositories/snapshots/
-
-
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+
+4.0.0
+
+Achoowy
+CameraPlugin
+2.0
+Cameras
+Hand held cameras
+
+
+
+
+ src/main/resources
+
+
+
+
+ maven-compiler-plugin
+ 3.11.0
+
+ 17
+ 17
+
+
+
+
+
+
+
+ papermc
+ https://repo.papermc.io/repository/maven-public/
+
+
+
+ mojang
+ https://libraries.minecraft.net/
+
+
+
+
+
+ io.papermc.paper
+ paper-api
+ 1.20.4-R0.1-SNAPSHOT
+ provided
+
+
+
+ com.mojang
+ authlib
+ 3.17.30
+ provided
+
+
+
\ No newline at end of file
diff --git a/Cameras/src/main/java/water/of/cup/cameras/Camera.java b/Cameras/src/main/java/water/of/cup/cameras/Camera.java
new file mode 100644
index 0000000..eb7bb90
--- /dev/null
+++ b/Cameras/src/main/java/water/of/cup/cameras/Camera.java
@@ -0,0 +1,260 @@
+package water.of.cup.cameras;
+
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileReader;
+import java.io.IOException;
+import java.lang.reflect.Field;
+import java.util.*;
+import java.util.regex.Pattern;
+
+import org.bukkit.Bukkit;
+import org.bukkit.ChatColor;
+import org.bukkit.Material;
+import org.bukkit.NamespacedKey;
+import org.bukkit.block.Block;
+import org.bukkit.configuration.file.FileConfiguration;
+import org.bukkit.configuration.file.YamlConfiguration;
+import org.bukkit.entity.Player;
+import org.bukkit.event.Listener;
+import org.bukkit.inventory.ItemStack;
+import org.bukkit.inventory.ShapedRecipe;
+import org.bukkit.inventory.meta.SkullMeta;
+import org.bukkit.map.MapCanvas;
+import org.bukkit.map.MapRenderer;
+import org.bukkit.map.MapView;
+import org.bukkit.plugin.java.JavaPlugin;
+import org.bukkit.profile.PlayerProfile;
+
+import com.mojang.authlib.GameProfile;
+import com.mojang.authlib.properties.Property;
+
+import water.of.cup.cameras.bstats.Metrics;
+import water.of.cup.cameras.commands.CameraCommands;
+import water.of.cup.cameras.listeners.CameraClick;
+import water.of.cup.cameras.listeners.CameraPlace;
+import water.of.cup.cameras.listeners.PlayerJoin;
+import water.of.cup.cameras.listeners.PrepareItemCraft;
+
+public class Camera extends JavaPlugin {
+
+ private static Camera instance;
+ private List mapIDsNotToRender = new ArrayList<>();
+ private ResourcePackManager resourcePackManager = new ResourcePackManager();
+ private File configFile;
+ private FileConfiguration config;
+
+ @Override
+ public void onEnable() {
+ instance = this;
+
+ loadConfig();
+
+ this.resourcePackManager.initialize();
+
+ // Resource pack manager test
+ File grassFile = this.resourcePackManager.getTextureByMaterial(Material.GRASS_BLOCK);
+ if (grassFile != null)
+ Bukkit.getLogger().info("Loaded grass texture " + grassFile.getName());
+
+ File folder = new File(getDataFolder() + "/maps");
+ File[] listOfFiles = folder.listFiles();
+
+ if (listOfFiles != null) {
+ for (File file : listOfFiles) {
+ if (file.isFile()) {
+ int mapId = Integer.parseInt(file.getName().split("_")[1].split(Pattern.quote("."))[0]);
+ try (BufferedReader br = new BufferedReader(new FileReader(file))) {
+ String encodedData = br.readLine();
+
+ MapView mapView = Bukkit.getMap(mapId);
+ mapView.setTrackingPosition(false);
+
+ for (MapRenderer renderer : mapView.getRenderers())
+ mapView.removeRenderer(renderer);
+
+ mapView.addRenderer(new MapRenderer() {
+ @Override
+ public void render(MapView mapViewNew, MapCanvas mapCanvas, Player player) {
+ if (!mapIDsNotToRender.contains(mapId)) {
+ mapIDsNotToRender.add(mapId);
+
+ int x = 0;
+ int y = 0;
+ int skipsLeft = 0;
+ byte colorByte = 0;
+
+ for (int index = 0; index < encodedData.length(); index++) {
+ if (skipsLeft == 0) {
+ int end = index;
+ while (encodedData.charAt(end) != ',') end++;
+
+ String str = encodedData.substring(index, end);
+ index = end;
+
+ colorByte = Byte.parseByte(str.substring(0, str.indexOf('_')));
+ skipsLeft = Integer.parseInt(str.substring(str.indexOf('_') + 1));
+ }
+
+ while (skipsLeft != 0) {
+ Block block = Bukkit.getWorld("world").getBlockAt(x, y, 0);
+ colorByte = Utils.colorFromType(block, new double[]{1.0, 1.0, 1.0});
+
+ mapCanvas.setPixel(x, y, colorByte);
+
+ y++;
+ if (y == 128) {
+ y = 0;
+ x++;
+ }
+
+ skipsLeft--;
+ }
+ }
+ }
+ }
+ });
+
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+ }
+ }
+
+ Utils.loadColors();
+ getCommand("takePicture").setExecutor(new CameraCommands());
+ registerListeners(new CameraClick(), new CameraPlace(), new PlayerJoin(), new PrepareItemCraft());
+
+ if (config.getBoolean("settings.camera.recipe.enabled"))
+ addCameraRecipe();
+
+ // Add bStats
+ Metrics metrics = new Metrics(this, 9671);
+ Bukkit.getLogger().info("[Cameras] bStats: " + metrics.isEnabled() + " plugin ver: " + getDescription().getVersion());
+ metrics.addCustomChart(new Metrics.SimplePie("plugin_version", () -> getDescription().getVersion()));
+ }
+
+ @Override
+ public void onDisable() {
+ Bukkit.getScheduler().cancelTasks(this);
+ }
+
+ private void registerListeners(Listener... listeners) {
+ Arrays.stream(listeners).forEach(listener -> getServer().getPluginManager().registerEvents(listener, this));
+ }
+
+ public static Camera getInstance() {
+ return instance;
+ }
+
+ public void addCameraRecipe() {
+ ItemStack camera = new ItemStack(Material.PLAYER_HEAD);
+ SkullMeta meta = (SkullMeta) camera.getItemMeta();
+
+ if (meta == null) return;
+
+ meta.setDisplayName(ChatColor.DARK_BLUE + "Camera");
+
+ PlayerProfile profile = Bukkit.createProfile(UUID.randomUUID(), null);
+
+ try {
+ profile.getTextures().setSkin(
+ new java.net.URL("http://textures.minecraft.net/texture/6fb5eee40c3dd6683cec8dd1c6c3fc1b1f0137178663d76109cfe12ed7bf278e")
+ );
+ } catch (java.net.MalformedURLException e) {
+ e.printStackTrace();
+ }
+
+ meta.setOwnerProfile(profile);
+ camera.setItemMeta(meta);
+
+ NamespacedKey key = new NamespacedKey(this, "camera");
+ ShapedRecipe recipe = new ShapedRecipe(key, camera);
+
+ java.util.List shape = config.getStringList("settings.camera.recipe.shape");
+ recipe.shape(shape.toArray(new String[0]));
+
+ var section = config.getConfigurationSection("settings.camera.recipe.ingredients");
+ if (section != null) {
+ for (String k : section.getKeys(false)) {
+ Material mat = Material.matchMaterial(section.getString(k));
+ if (mat != null) {
+ recipe.setIngredient(k.charAt(0), mat);
+ }
+ }
+ }
+
+ Bukkit.addRecipe(recipe);
+ }
+
+ private void loadConfig() {
+ if (!getDataFolder().exists()) getDataFolder().mkdir();
+
+ configFile = new File(getDataFolder(), "config.yml");
+ if (!configFile.exists()) {
+ try {
+ configFile.createNewFile();
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ }
+
+ config = YamlConfiguration.loadConfiguration(configFile);
+
+ HashMap defaultConfig = new HashMap<>();
+
+ defaultConfig.put("settings.messages.notready", "&cCameras is still loading, please wait.");
+ defaultConfig.put("settings.messages.delay", "&cPlease wait before taking another picture.");
+ defaultConfig.put("settings.messages.invfull", "&cYou can not take a picture with a full inventory.");
+ defaultConfig.put("settings.messages.nopaper", "&cYou must have paper in order to take a picture.");
+ defaultConfig.put("settings.messages.enabled", true);
+ defaultConfig.put("settings.delay.amount", 1000);
+ defaultConfig.put("settings.delay.enabled", true);
+ defaultConfig.put("settings.camera.transparentWater", true);
+ defaultConfig.put("settings.camera.shadows", true);
+ defaultConfig.put("settings.camera.permissions", true);
+
+ HashMap defaultRecipe = new HashMap<>();
+ defaultRecipe.put("I", Material.IRON_INGOT.toString());
+ defaultRecipe.put("G", Material.GLASS_PANE.toString());
+ defaultRecipe.put("T", Material.GLOWSTONE_DUST.toString());
+ defaultRecipe.put("R", Material.REDSTONE.toString());
+
+ defaultConfig.put("settings.camera.recipe.enabled", true);
+ defaultConfig.put("settings.camera.recipe.shape", Arrays.asList("IGI", "ITI", "IRI"));
+
+ if (!config.contains("settings.camera.recipe.ingredients")) {
+ for (String key : defaultRecipe.keySet()) {
+ defaultConfig.put("settings.camera.recipe.ingredients." + key, defaultRecipe.get(key));
+ }
+ }
+
+ for (String key : defaultConfig.keySet()) {
+ if (!config.contains(key)) config.set(key, defaultConfig.get(key));
+ }
+
+ File mapDir = new File(getDataFolder(), "maps");
+ if (!mapDir.exists()) mapDir.mkdir();
+
+ saveConfig();
+ }
+
+ public ResourcePackManager getResourcePackManager() {
+ return this.resourcePackManager;
+ }
+
+ @Override
+ public void saveConfig() {
+ try {
+ config.save(configFile);
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ }
+
+ @Override
+ public FileConfiguration getConfig() {
+ return config;
+ }
+}
\ No newline at end of file
diff --git a/Cameras/src/water/of/cup/cameras/MapStorage.java b/Cameras/src/main/java/water/of/cup/cameras/MapStorage.java
similarity index 100%
rename from Cameras/src/water/of/cup/cameras/MapStorage.java
rename to Cameras/src/main/java/water/of/cup/cameras/MapStorage.java
diff --git a/Cameras/src/water/of/cup/cameras/Picture.java b/Cameras/src/main/java/water/of/cup/cameras/Picture.java
similarity index 100%
rename from Cameras/src/water/of/cup/cameras/Picture.java
rename to Cameras/src/main/java/water/of/cup/cameras/Picture.java
diff --git a/Cameras/src/water/of/cup/cameras/Renderer.java b/Cameras/src/main/java/water/of/cup/cameras/Renderer.java
similarity index 100%
rename from Cameras/src/water/of/cup/cameras/Renderer.java
rename to Cameras/src/main/java/water/of/cup/cameras/Renderer.java
diff --git a/Cameras/src/water/of/cup/cameras/ResourcePackManager.java b/Cameras/src/main/java/water/of/cup/cameras/ResourcePackManager.java
similarity index 100%
rename from Cameras/src/water/of/cup/cameras/ResourcePackManager.java
rename to Cameras/src/main/java/water/of/cup/cameras/ResourcePackManager.java
diff --git a/Cameras/src/water/of/cup/cameras/Utils.java b/Cameras/src/main/java/water/of/cup/cameras/Utils.java
similarity index 99%
rename from Cameras/src/water/of/cup/cameras/Utils.java
rename to Cameras/src/main/java/water/of/cup/cameras/Utils.java
index 1847210..d20ab6d 100644
--- a/Cameras/src/water/of/cup/cameras/Utils.java
+++ b/Cameras/src/main/java/water/of/cup/cameras/Utils.java
@@ -16,7 +16,7 @@ public class Utils {
public static void loadColors() {
// Materials we don't want to use minecraft images for (could be because the
// image provides a poor color)
- blocksMap.put(Material.GRASS, new Color(49, 101, 25));
+ blocksMap.put(Material.SHORT_GRASS, new Color(49, 101, 25));
blocksMap.put(Material.TALL_GRASS, new Color(49, 101, 25));
blocksMap.put(Material.LARGE_FERN, new Color(49, 101, 25));
blocksMap.put(Material.FERN, new Color(49, 101, 25));
@@ -55,7 +55,7 @@ public static void loadColors() {
blocksMap.put(Material.JUNGLE_LEAVES, new Color(60, 141, 24));
blocksMap.put(Material.OAK_LEAVES, new Color(49, 111, 21));
blocksMap.put(Material.SPRUCE_LEAVES, new Color(55, 91, 56));
- blocksMap.put(Material.GRASS_PATH, new Color(170, 148, 89));
+ blocksMap.put(Material.DIRT_PATH, new Color(170, 148, 89));
blocksMap.put(Material.COARSE_DIRT, new Color(104, 75, 51));
blocksMap.put(Material.ANDESITE, new Color(136, 136, 138));
blocksMap.put(Material.DIORITE, new Color(181, 181, 181));
diff --git a/Cameras/src/water/of/cup/cameras/ZipUtils.java b/Cameras/src/main/java/water/of/cup/cameras/ZipUtils.java
similarity index 100%
rename from Cameras/src/water/of/cup/cameras/ZipUtils.java
rename to Cameras/src/main/java/water/of/cup/cameras/ZipUtils.java
diff --git a/Cameras/src/water/of/cup/cameras/bstats/Metrics.java b/Cameras/src/main/java/water/of/cup/cameras/bstats/Metrics.java
similarity index 100%
rename from Cameras/src/water/of/cup/cameras/bstats/Metrics.java
rename to Cameras/src/main/java/water/of/cup/cameras/bstats/Metrics.java
diff --git a/Cameras/src/water/of/cup/cameras/commands/CameraCommands.java b/Cameras/src/main/java/water/of/cup/cameras/commands/CameraCommands.java
similarity index 100%
rename from Cameras/src/water/of/cup/cameras/commands/CameraCommands.java
rename to Cameras/src/main/java/water/of/cup/cameras/commands/CameraCommands.java
diff --git a/Cameras/src/water/of/cup/cameras/listeners/CameraClick.java b/Cameras/src/main/java/water/of/cup/cameras/listeners/CameraClick.java
similarity index 100%
rename from Cameras/src/water/of/cup/cameras/listeners/CameraClick.java
rename to Cameras/src/main/java/water/of/cup/cameras/listeners/CameraClick.java
diff --git a/Cameras/src/water/of/cup/cameras/listeners/CameraPlace.java b/Cameras/src/main/java/water/of/cup/cameras/listeners/CameraPlace.java
similarity index 100%
rename from Cameras/src/water/of/cup/cameras/listeners/CameraPlace.java
rename to Cameras/src/main/java/water/of/cup/cameras/listeners/CameraPlace.java
diff --git a/Cameras/src/water/of/cup/cameras/listeners/PlayerJoin.java b/Cameras/src/main/java/water/of/cup/cameras/listeners/PlayerJoin.java
similarity index 100%
rename from Cameras/src/water/of/cup/cameras/listeners/PlayerJoin.java
rename to Cameras/src/main/java/water/of/cup/cameras/listeners/PlayerJoin.java
diff --git a/Cameras/src/water/of/cup/cameras/listeners/PrepareItemCraft.java b/Cameras/src/main/java/water/of/cup/cameras/listeners/PrepareItemCraft.java
similarity index 100%
rename from Cameras/src/water/of/cup/cameras/listeners/PrepareItemCraft.java
rename to Cameras/src/main/java/water/of/cup/cameras/listeners/PrepareItemCraft.java
diff --git a/Cameras/src/main/resources/plugin.yml b/Cameras/src/main/resources/plugin.yml
new file mode 100644
index 0000000..70c20d9
--- /dev/null
+++ b/Cameras/src/main/resources/plugin.yml
@@ -0,0 +1,10 @@
+name: CameraPlugin
+version: 2.0
+main: water.of.cup.cameras.Camera
+api-version: 1.21
+author: Nicholas Kopiwoda
+description: A custom camera plugin for Paper.
+commands:
+ takePicture:
+ description: Take a picture with the camera
+ usage: /takepicture
\ No newline at end of file
diff --git a/Cameras/src/plugin.yml b/Cameras/src/plugin.yml
deleted file mode 100644
index 2f4d012..0000000
--- a/Cameras/src/plugin.yml
+++ /dev/null
@@ -1,9 +0,0 @@
-main: water.of.cup.cameras.Camera
-name: Cameras
-version: '1.05'
-description: Take Pictures.
-author: Nicholas Kopiwoda
-api-version: 1.14
-commands:
- takepicture:
- description: take a picture
\ No newline at end of file
diff --git a/Cameras/src/water/of/cup/cameras/Camera.java b/Cameras/src/water/of/cup/cameras/Camera.java
deleted file mode 100644
index 7fd3e04..0000000
--- a/Cameras/src/water/of/cup/cameras/Camera.java
+++ /dev/null
@@ -1,263 +0,0 @@
-package water.of.cup.cameras;
-
-import java.io.BufferedReader;
-import java.io.File;
-import java.io.FileReader;
-import java.io.IOException;
-import java.lang.reflect.Field;
-import java.util.*;
-import java.util.regex.Pattern;
-
-import org.bukkit.configuration.file.FileConfiguration;
-import org.bukkit.configuration.file.YamlConfiguration;
-import org.bukkit.inventory.ShapedRecipe;
-import org.bukkit.Bukkit;
-import org.bukkit.ChatColor;
-import org.bukkit.Material;
-import org.bukkit.NamespacedKey;
-import org.bukkit.entity.Player;
-import org.bukkit.event.Listener;
-import org.bukkit.inventory.ItemStack;
-import org.bukkit.inventory.meta.SkullMeta;
-import org.bukkit.map.MapCanvas;
-import org.bukkit.map.MapRenderer;
-import org.bukkit.map.MapView;
-import org.bukkit.plugin.java.JavaPlugin;
-
-import com.mojang.authlib.GameProfile;
-import com.mojang.authlib.properties.Property;
-
-import water.of.cup.cameras.bstats.Metrics;
-import water.of.cup.cameras.commands.CameraCommands;
-import water.of.cup.cameras.listeners.CameraClick;
-import water.of.cup.cameras.listeners.CameraPlace;
-import water.of.cup.cameras.listeners.PlayerJoin;
-import water.of.cup.cameras.listeners.PrepareItemCraft;
-
-public class Camera extends JavaPlugin {
-
- private static Camera instance;
- List mapIDsNotToRender = new ArrayList<>();
- ResourcePackManager resourcePackManager = new ResourcePackManager();
- private File configFile;
- private FileConfiguration config;
-
- @Override
- public void onEnable() {
- instance = this;
-
- loadConfig();
-
- this.resourcePackManager.initialize();
-
- // Resource pack manager test
- File grassFile = this.resourcePackManager.getTextureByMaterial(Material.GRASS);
- if(grassFile != null)
- Bukkit.getLogger().info("Loaded grass texture " + grassFile.getName());
-
- File folder = new File(getDataFolder() + "/maps");
- File[] listOfFiles = folder.listFiles();
-
- for (File file : listOfFiles) {
- if (file.isFile()) {
- int mapId = Integer.parseInt(file.getName().split("_")[1].split(Pattern.quote("."))[0]);
- try {
- BufferedReader br = new BufferedReader(new FileReader(file));
- String encodedData = br.readLine();
-
- MapView mapView = Bukkit.getMap(Integer.valueOf(mapId));
-
- mapView.setTrackingPosition(false);
- for(MapRenderer renderer : mapView.getRenderers())
- mapView.removeRenderer(renderer);
-
- mapView.addRenderer(new MapRenderer() {
- @Override
- public void render(MapView mapViewNew, MapCanvas mapCanvas, Player player) {
- if(!mapIDsNotToRender.contains(mapId)) {
- mapIDsNotToRender.add(mapId);
-
- int x = 0;
- int y = 0;
- int skipsLeft = 0;
- byte colorByte = 0;
- for(int index = 0; index < encodedData.length(); index++) {
- if(skipsLeft == 0) {
- int end = index;
-
- while(encodedData.charAt(end) != ',')
- end++;
-
- String str = encodedData.substring(index, end);
- index = end;
-
- colorByte = Byte.parseByte(str.substring(0, str.indexOf('_')));
-
- skipsLeft = Integer.parseInt(str.substring(str.indexOf('_') + 1));
-
- }
-
- while(skipsLeft != 0) {
- mapCanvas.setPixel(x, y, colorByte);
-
- y++;
- if(y == 128) {
- y = 0;
- x++;
- }
-
- skipsLeft -= 1;
- }
- }
- }
- }
- });
-
- } catch (Exception e) {
- e.printStackTrace();
- }
-
- }
- }
-
- Utils.loadColors();
- getCommand("takePicture").setExecutor(new CameraCommands());
- registerListeners(new CameraClick(), new CameraPlace(), new PlayerJoin(), new PrepareItemCraft());
-
- if(config.getBoolean("settings.camera.recipe.enabled"))
- addCameraRecipe();
-
- // Add bStats
- Metrics metrics = new Metrics(this, 9671);
- Bukkit.getLogger().info("[Cameras] bStats: " + metrics.isEnabled() + " plugin ver: " + getDescription().getVersion());
-
- metrics.addCustomChart(new Metrics.SimplePie("plugin_version", () -> getDescription().getVersion()));
- }
-
- @Override
- public void onDisable() {
- /* Disable all current async tasks */
- Bukkit.getScheduler().cancelTasks(this);
- }
-
- private void registerListeners(Listener... listeners) {
- Arrays.stream(listeners).forEach(listener -> getServer().getPluginManager().registerEvents(listener, this));
- }
-
- public static Camera getInstance() {
- return instance;
- }
-
- public void addCameraRecipe() {
- ItemStack camera = new ItemStack(Material.PLAYER_HEAD);
- SkullMeta cameraMeta = (SkullMeta) camera.getItemMeta();
- GameProfile profile = new GameProfile(UUID.randomUUID(), "");
- profile.getProperties().put("textures", new Property("textures",
- "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNmZiNWVlZTQwYzNkZDY2ODNjZWM4ZGQxYzZjM2ZjMWIxZjAxMzcxNzg2NjNkNzYxMDljZmUxMmVkN2JmMjc4ZSJ9fX0=="));
- Field profileField = null;
- cameraMeta.setDisplayName(ChatColor.DARK_BLUE + "Camera");
- try {
- profileField = cameraMeta.getClass().getDeclaredField("profile");
- profileField.setAccessible(true);
- profileField.set(cameraMeta, profile);
- } catch (IllegalArgumentException | IllegalAccessException | NoSuchFieldException | SecurityException e) {
- e.printStackTrace();
- }
- camera.setItemMeta(cameraMeta);
-
- NamespacedKey key = new NamespacedKey(this, "camera");
- ShapedRecipe recipe = new ShapedRecipe(key, camera);
-
- ArrayList shapeArr = (ArrayList) config.get("settings.camera.recipe.shape");
- recipe.shape(shapeArr.toArray(new String[shapeArr.size()]));
-
- for(String ingredientKey : config.getConfigurationSection("settings.camera.recipe.ingredients").getKeys(false)){
- recipe.setIngredient(ingredientKey.charAt(0), Material.valueOf((String) config.get("settings.camera.recipe.ingredients." + ingredientKey)));
- }
-
- Bukkit.addRecipe(recipe);
- }
-
- private void loadConfig() {
- if (!getDataFolder().exists()) {
- getDataFolder().mkdir();
- }
-
- configFile = new File(getDataFolder(), "config.yml");
- if (!configFile.exists()) {
- try {
- configFile.createNewFile();
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
-
- config = YamlConfiguration.loadConfiguration(configFile);
-
- HashMap defaultConfig = new HashMap<>();
-
- defaultConfig.put("settings.messages.notready", "&cCameras is still loading, please wait.");
- defaultConfig.put("settings.messages.delay", "&cPlease wait before taking another picture.");
- defaultConfig.put("settings.messages.invfull", "&cYou can not take a picture with a full inventory.");
- defaultConfig.put("settings.messages.nopaper", "&cYou must have paper in order to take a picture.");
- defaultConfig.put("settings.messages.enabled", true);
- defaultConfig.put("settings.delay.amount", 1000);
- defaultConfig.put("settings.delay.enabled", true);
- defaultConfig.put("settings.camera.transparentWater", true);
- defaultConfig.put("settings.camera.shadows", true);
- defaultConfig.put("settings.camera.permissions", true);
-
- HashMap defaultRecipe = new HashMap<>();
- defaultRecipe.put("I", Material.IRON_INGOT.toString());
- defaultRecipe.put("G", Material.GLASS_PANE.toString());
- defaultRecipe.put("T", Material.GLOWSTONE_DUST.toString());
- defaultRecipe.put("R", Material.REDSTONE.toString());
-
- defaultConfig.put("settings.camera.recipe.enabled", true);
- defaultConfig.put("settings.camera.recipe.shape", new ArrayList() {
- {
- add("IGI");
- add("ITI");
- add("IRI");
- }
- });
-
-
- if(!config.contains("settings.camera.recipe.ingredients")) {
- for (String key : defaultRecipe.keySet()) {
- defaultConfig.put("settings.camera.recipe.ingredients." + key, defaultRecipe.get(key));
- }
- }
-
- for (String key : defaultConfig.keySet()) {
- if(!config.contains(key)) {
- config.set(key, defaultConfig.get(key));
- }
- }
-
- File mapDir = new File(getDataFolder(), "maps");
- if (!mapDir.exists()) {
- mapDir.mkdir();
- }
-
- this.saveConfig();
- }
-
- public ResourcePackManager getResourcePackManager() {
- return this.resourcePackManager;
- }
-
- @Override
- public void saveConfig() {
- try {
- config.save(configFile);
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
-
- @Override
- public FileConfiguration getConfig() {
- return config;
- }
-}