diff --git a/.gitea/workflows/release.yml b/.gitea/workflows/release.yml new file mode 100644 index 0000000..12ab5f2 --- /dev/null +++ b/.gitea/workflows/release.yml @@ -0,0 +1,44 @@ +name: Build and Release Minecraft Plugin + +on: + push: + branches: + - release + +jobs: + build: + steps: + - name: Checkout Repository + uses: actions/checkout@v2 + + - name: Set up Java + uses: actions/setup-java@v2 + with: + java-version: 17 + + - name: Build with Maven + run: mvn clean install + + - name: Upload Artifact + uses: actions/upload-artifact@v2 + with: + name: plugin-jar + path: target/BetterMinecraft.jar + + release: + needs: build + + steps: + - name: Checkout Repository + uses: actions/checkout@v2 + + - name: Create Release + id: create_release + uses: softprops/action-gh-release@v1 + with: + files: | + target/BetterMinecraft.jar + tag_name: ${{ gitea.ref }} + title: Release ${{ gitea.ref }} + draft: false + prerelease: false \ No newline at end of file diff --git a/pom.xml b/pom.xml index 4df35c9..74bef0f 100644 --- a/pom.xml +++ b/pom.xml @@ -1,89 +1,50 @@ - - + 4.0.0 - de.steev - betterminecraft - 1.2 - - betterminecraft - - http://www.example.com + de.vortexhq.lobby + vortexlobby + 1.0 - UTF-8 - 1.7 - 1.7 + 17 + 17 - spigot-repo - https://hub.spigotmc.org/nexus/content/repositories/snapshots/ + spigot-repo + https://hub.spigotmc.org/nexus/content/repositories/snapshots/ - + - - junit - junit - 4.11 - test - org.spigotmc spigot-api - 1.17-R0.1-SNAPSHOT + 1.20.1-R0.1-SNAPSHOT provided - + + + + org.xerial + sqlite-jdbc + 3.42.0.0 + - - - - - maven-clean-plugin - 3.1.0 - - - - maven-resources-plugin - 3.0.2 - - - maven-compiler-plugin - 3.8.0 - - - maven-surefire-plugin - 2.22.1 - - - maven-jar-plugin - 3.0.2 - - - maven-install-plugin - 2.5.2 - - - maven-deploy-plugin - 2.8.2 - - - - maven-site-plugin - 3.7.1 - - - maven-project-info-reports-plugin - 3.0.0 - - - + ${project.basedir}/src/main/java + + + ${project.basedir}/src/main/resources + + plugin.yml + + + - + \ No newline at end of file diff --git a/src/de/steev/bm/Commands/back.java b/src/main/java/de/steev/bm/Commands/back.java similarity index 96% rename from src/de/steev/bm/Commands/back.java rename to src/main/java/de/steev/bm/Commands/back.java index 8cc16bb..a863540 100644 --- a/src/de/steev/bm/Commands/back.java +++ b/src/main/java/de/steev/bm/Commands/back.java @@ -1,16 +1,16 @@ -package de.steev.bm.Commands; - -import org.bukkit.command.Command; -import org.bukkit.command.CommandExecutor; -import org.bukkit.command.CommandSender; - -public class back implements CommandExecutor { - // TODO save death coordinates in playerdata - // TODO grab them - // TODO ensure the position is safe - // TODO teleport player back - @Override - public boolean onCommand(CommandSender commandSender, Command command, String s, String[] strings) { - return false; - } -} +package de.steev.bm.Commands; + +import org.bukkit.command.Command; +import org.bukkit.command.CommandExecutor; +import org.bukkit.command.CommandSender; + +public class back implements CommandExecutor { + // TODO save death coordinates in playerdata + // TODO grab them + // TODO ensure the position is safe + // TODO teleport player back + @Override + public boolean onCommand(CommandSender commandSender, Command command, String s, String[] strings) { + return false; + } +} diff --git a/src/de/steev/bm/changes/env/weather.java b/src/main/java/de/steev/bm/changes/env/weather.java similarity index 95% rename from src/de/steev/bm/changes/env/weather.java rename to src/main/java/de/steev/bm/changes/env/weather.java index 467274a..afce37a 100644 --- a/src/de/steev/bm/changes/env/weather.java +++ b/src/main/java/de/steev/bm/changes/env/weather.java @@ -1,22 +1,22 @@ -package de.steev.bm.changes.env; - -import org.bukkit.World; - -public class weather { - - static long lastThunder = 0; - long delay = 24000; - private static boolean isThunder(World world) { - return world.getThunderDuration() > 0; - } - - public static void changeWeather(World world) { - if(isThunder(world)) { - if(lastThunder + 24000 > world.getFullTime()) { - world.setClearWeatherDuration(1000); - }else { - lastThunder = world.getFullTime(); - } - } - } -} +package de.steev.bm.changes.env; + +import org.bukkit.World; + +public class weather { + + static long lastThunder = 0; + long delay = 24000; + private static boolean isThunder(World world) { + return world.getThunderDuration() > 0; + } + + public static void changeWeather(World world) { + if(isThunder(world)) { + if(lastThunder + 24000 > world.getFullTime()) { + world.setClearWeatherDuration(1000); + }else { + lastThunder = world.getFullTime(); + } + } + } +} diff --git a/src/de/steev/bm/changes/interaction/Death.java b/src/main/java/de/steev/bm/changes/interaction/Death.java similarity index 100% rename from src/de/steev/bm/changes/interaction/Death.java rename to src/main/java/de/steev/bm/changes/interaction/Death.java diff --git a/src/de/steev/bm/changes/interaction/Item_Recipy_Override.java b/src/main/java/de/steev/bm/changes/interaction/Item_Recipy_Override.java similarity index 96% rename from src/de/steev/bm/changes/interaction/Item_Recipy_Override.java rename to src/main/java/de/steev/bm/changes/interaction/Item_Recipy_Override.java index 72cfe46..a41d23e 100644 --- a/src/de/steev/bm/changes/interaction/Item_Recipy_Override.java +++ b/src/main/java/de/steev/bm/changes/interaction/Item_Recipy_Override.java @@ -1,50 +1,50 @@ -package de.steev.bm.changes.interaction; - -import de.steev.bm.main; -import org.bukkit.Bukkit; -import org.bukkit.Material; -import org.bukkit.NamespacedKey; -import org.bukkit.inventory.ItemStack; -import org.bukkit.inventory.ShapedRecipe; - -public class Item_Recipy_Override { - - main plugin; - NamespacedKey item; - static ShapedRecipe rec_item; - - /** - * Overrides vanilla recipes - * @param plugin Plugin Reference - * @param Item Item name - * @param result the dropping item - * @param amount the droprate - */ - public Item_Recipy_Override(main plugin, String Item, Material result, int amount){ - this.plugin = plugin; - item = new NamespacedKey(plugin, Item); - ItemStack itemStack = new ItemStack(result); - itemStack.setAmount(amount); - - rec_item = new ShapedRecipe(item, itemStack); - } - - /** - * registers recipe to bukkit recipe handler - * @param ing Ingredience reference - * @param mat material ing will reference - * @param rec the recipe shape - */ - public static void register_recipy(char[] ing, Material[] mat, String[] rec){ - //Recipe shapes - rec_item.shape(rec[0], rec[1], rec[2]); - - for(int i = 0; i < ing.length; i++) { - // Material Definitions - rec_item.setIngredient(ing[i], mat[i]); - } - - // Add recipes to Server - Bukkit.addRecipe(rec_item); - } -} +package de.steev.bm.changes.interaction; + +import de.steev.bm.main; +import org.bukkit.Bukkit; +import org.bukkit.Material; +import org.bukkit.NamespacedKey; +import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.ShapedRecipe; + +public class Item_Recipy_Override { + + main plugin; + NamespacedKey item; + static ShapedRecipe rec_item; + + /** + * Overrides vanilla recipes + * @param plugin Plugin Reference + * @param Item Item name + * @param result the dropping item + * @param amount the droprate + */ + public Item_Recipy_Override(main plugin, String Item, Material result, int amount){ + this.plugin = plugin; + item = new NamespacedKey(plugin, Item); + ItemStack itemStack = new ItemStack(result); + itemStack.setAmount(amount); + + rec_item = new ShapedRecipe(item, itemStack); + } + + /** + * registers recipe to bukkit recipe handler + * @param ing Ingredience reference + * @param mat material ing will reference + * @param rec the recipe shape + */ + public static void register_recipy(char[] ing, Material[] mat, String[] rec){ + //Recipe shapes + rec_item.shape(rec[0], rec[1], rec[2]); + + for(int i = 0; i < ing.length; i++) { + // Material Definitions + rec_item.setIngredient(ing[i], mat[i]); + } + + // Add recipes to Server + Bukkit.addRecipe(rec_item); + } +} diff --git a/src/de/steev/bm/changes/interaction/replanting.java b/src/main/java/de/steev/bm/changes/interaction/replanting.java similarity index 96% rename from src/de/steev/bm/changes/interaction/replanting.java rename to src/main/java/de/steev/bm/changes/interaction/replanting.java index 5b75a78..852ad2e 100644 --- a/src/de/steev/bm/changes/interaction/replanting.java +++ b/src/main/java/de/steev/bm/changes/interaction/replanting.java @@ -1,47 +1,47 @@ -package de.steev.bm.changes.interaction; - -import de.steev.bm.main; -import org.bukkit.Location; -import org.bukkit.Material; -import org.bukkit.block.Block; -import org.bukkit.block.data.Ageable; -import org.bukkit.event.Listener; -import org.bukkit.inventory.ItemStack; - -public class replanting { - - private main plugin; - - /** - * event constructor - * @param plugin plugin instance - */ - public replanting(main plugin) { - plugin.getLogger().info("replanting handler Registered"); - this.plugin = plugin; - } - - /** - * simplified function for handling replanting works only with arrays - * @param item the material of each drop - * @param amount the drop amount of each item - */ - public static void planting(Material[] item, int[] amount, Block target){ - Ageable crop = (Ageable) target.getBlockData(); - Location loc = target.getLocation().clone().add(0.5, 0.5, 0.5); - - // TODO: validate if code may throw errors - - if(crop.getAge() == crop.getMaximumAge()){ - for(int i = 0; i < amount[0]; i++) { - target.getLocation().getWorld().dropItem(loc, new ItemStack(item[0])); - } - - for(int i = 0; i < amount[1]; i++) { - target.getLocation().getWorld().dropItem(loc, new ItemStack(item[1])); - } - crop.setAge(0); - target.setBlockData(crop); - } - } -} +package de.steev.bm.changes.interaction; + +import de.steev.bm.main; +import org.bukkit.Location; +import org.bukkit.Material; +import org.bukkit.block.Block; +import org.bukkit.block.data.Ageable; +import org.bukkit.event.Listener; +import org.bukkit.inventory.ItemStack; + +public class replanting { + + private main plugin; + + /** + * event constructor + * @param plugin plugin instance + */ + public replanting(main plugin) { + plugin.getLogger().info("replanting handler Registered"); + this.plugin = plugin; + } + + /** + * simplified function for handling replanting works only with arrays + * @param item the material of each drop + * @param amount the drop amount of each item + */ + public static void planting(Material[] item, int[] amount, Block target){ + Ageable crop = (Ageable) target.getBlockData(); + Location loc = target.getLocation().clone().add(0.5, 0.5, 0.5); + + // TODO: validate if code may throw errors + + if(crop.getAge() == crop.getMaximumAge()){ + for(int i = 0; i < amount[0]; i++) { + target.getLocation().getWorld().dropItem(loc, new ItemStack(item[0])); + } + + for(int i = 0; i < amount[1]; i++) { + target.getLocation().getWorld().dropItem(loc, new ItemStack(item[1])); + } + crop.setAge(0); + target.setBlockData(crop); + } + } +} diff --git a/src/de/steev/bm/events/BedEvent.java b/src/main/java/de/steev/bm/events/BedEvent.java similarity index 96% rename from src/de/steev/bm/events/BedEvent.java rename to src/main/java/de/steev/bm/events/BedEvent.java index 373d56e..e52faf0 100644 --- a/src/de/steev/bm/events/BedEvent.java +++ b/src/main/java/de/steev/bm/events/BedEvent.java @@ -1,52 +1,52 @@ -package de.steev.bm.events; - -import org.bukkit.Bukkit; -import org.bukkit.World; -import org.bukkit.event.EventHandler; -import org.bukkit.event.Listener; -import org.bukkit.event.player.PlayerBedEnterEvent; -import org.bukkit.event.player.PlayerBedLeaveEvent; - -import de.steev.bm.main; - -public class BedEvent implements Listener { - - private main plugin; - - public BedEvent(main plugin) { - plugin.getLogger().info("Bed events Registered"); - this.plugin = plugin; - } - - @EventHandler // Adding to the Player Variable - public void onPlayerBedEnter(PlayerBedEnterEvent event) { - final World world = event.getPlayer().getWorld(); - if(world.getTime() >= 13000 || world.getThunderDuration() > 0) { - plugin.playerInBed++; - // Checks if enough Players (currentSleeping >= OnlinePlayerAmount/2) are Sleeping - if(plugin.playerInBed >= (int)plugin.getServer().getOnlinePlayers().size()/2) { - // Delayed Task for detecting useless entries - Bukkit.getScheduler().scheduleSyncDelayedTask(plugin, new Runnable() { - @Override - public void run() { - if(plugin.playerInBed >= (int)plugin.getServer().getOnlinePlayers().size()/2) { - world.setTime(0); - world.setWeatherDuration(7 * 24000); - } - } - }, 20L); - } - } - } - - @EventHandler // Subtracting to the Player Variable - public void onPlayerBedLeave(PlayerBedLeaveEvent event) { - // Subtraction from the PlayerInBed variable - if(plugin.playerInBed > 0) { - plugin.playerInBed--; - // Failsafe to prevent integer underflow - }else if(plugin.playerInBed > 0) { - plugin.playerInBed = 0; - } - } +package de.steev.bm.events; + +import org.bukkit.Bukkit; +import org.bukkit.World; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; +import org.bukkit.event.player.PlayerBedEnterEvent; +import org.bukkit.event.player.PlayerBedLeaveEvent; + +import de.steev.bm.main; + +public class BedEvent implements Listener { + + private main plugin; + + public BedEvent(main plugin) { + plugin.getLogger().info("Bed events Registered"); + this.plugin = plugin; + } + + @EventHandler // Adding to the Player Variable + public void onPlayerBedEnter(PlayerBedEnterEvent event) { + final World world = event.getPlayer().getWorld(); + if(world.getTime() >= 13000 || world.getThunderDuration() > 0) { + plugin.playerInBed++; + // Checks if enough Players (currentSleeping >= OnlinePlayerAmount/2) are Sleeping + if(plugin.playerInBed >= (int)plugin.getServer().getOnlinePlayers().size()/2) { + // Delayed Task for detecting useless entries + Bukkit.getScheduler().scheduleSyncDelayedTask(plugin, new Runnable() { + @Override + public void run() { + if(plugin.playerInBed >= (int)plugin.getServer().getOnlinePlayers().size()/2) { + world.setTime(0); + world.setWeatherDuration(7 * 24000); + } + } + }, 20L); + } + } + } + + @EventHandler // Subtracting to the Player Variable + public void onPlayerBedLeave(PlayerBedLeaveEvent event) { + // Subtraction from the PlayerInBed variable + if(plugin.playerInBed > 0) { + plugin.playerInBed--; + // Failsafe to prevent integer underflow + }else if(plugin.playerInBed > 0) { + plugin.playerInBed = 0; + } + } } \ No newline at end of file diff --git a/src/de/steev/bm/events/InteractEvent.java b/src/main/java/de/steev/bm/events/InteractEvent.java similarity index 100% rename from src/de/steev/bm/events/InteractEvent.java rename to src/main/java/de/steev/bm/events/InteractEvent.java diff --git a/src/de/steev/bm/events/KillEvent.java b/src/main/java/de/steev/bm/events/KillEvent.java similarity index 96% rename from src/de/steev/bm/events/KillEvent.java rename to src/main/java/de/steev/bm/events/KillEvent.java index 95c32d1..8604d58 100644 --- a/src/de/steev/bm/events/KillEvent.java +++ b/src/main/java/de/steev/bm/events/KillEvent.java @@ -1,47 +1,47 @@ -package de.steev.bm.events; - -import java.util.UUID; - -import org.bukkit.Location; -import org.bukkit.Material; -import org.bukkit.entity.Animals; -import org.bukkit.entity.Player; -import org.bukkit.event.EventHandler; -import org.bukkit.event.Listener; -import org.bukkit.event.entity.EntityDeathEvent; - -import de.steev.bm.main; -import de.steev.bm.changes.interaction.Death; - -public class KillEvent implements Listener{ - private main plugin; - - public KillEvent(main plugin) { - plugin.getLogger().info("Mob Death events Registered"); - this.plugin = plugin; - } - - /** - * Implements drops on death and can handle other deaths - * @param event the parsed event on any death - */ - @EventHandler - public void onEntityDeath(EntityDeathEvent event) { - int[] amounts; - Material[] drops; - - if(event.getEntity() instanceof Player){ - Location death = ((Player) event.getEntity()).getPlayer().getLocation(); - UUID uuid = ((Player) event.getEntity()).getPlayer().getUniqueId(); - plugin.playerDataConfig.set("" + uuid + ".death", death); - } else if(event.getEntity() instanceof Animals) { - - - if(event.getEntity().toString() == "CraftPig"){ - amounts = new int[]{ 2,2 }; - drops = new Material[]{Material.LEATHER, Material.PORKCHOP}; - Death.onAnimalDeath(amounts, drops, plugin, event); - } - } - } -} +package de.steev.bm.events; + +import java.util.UUID; + +import org.bukkit.Location; +import org.bukkit.Material; +import org.bukkit.entity.Animals; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; +import org.bukkit.event.entity.EntityDeathEvent; + +import de.steev.bm.main; +import de.steev.bm.changes.interaction.Death; + +public class KillEvent implements Listener{ + private main plugin; + + public KillEvent(main plugin) { + plugin.getLogger().info("Mob Death events Registered"); + this.plugin = plugin; + } + + /** + * Implements drops on death and can handle other deaths + * @param event the parsed event on any death + */ + @EventHandler + public void onEntityDeath(EntityDeathEvent event) { + int[] amounts; + Material[] drops; + + if(event.getEntity() instanceof Player){ + Location death = ((Player) event.getEntity()).getPlayer().getLocation(); + UUID uuid = ((Player) event.getEntity()).getPlayer().getUniqueId(); + plugin.playerDataConfig.set("" + uuid + ".death", death); + } else if(event.getEntity() instanceof Animals) { + + + if(event.getEntity().toString() == "CraftPig"){ + amounts = new int[]{ 2,2 }; + drops = new Material[]{Material.LEATHER, Material.PORKCHOP}; + Death.onAnimalDeath(amounts, drops, plugin, event); + } + } + } +} diff --git a/src/de/steev/bm/main.java b/src/main/java/de/steev/bm/main.java similarity index 97% rename from src/de/steev/bm/main.java rename to src/main/java/de/steev/bm/main.java index d88018d..7439dda 100644 --- a/src/de/steev/bm/main.java +++ b/src/main/java/de/steev/bm/main.java @@ -1,100 +1,100 @@ -package de.steev.bm; - -import de.steev.bm.changes.interaction.Item_Recipy_Override; -import de.steev.bm.events.BedEvent; -import de.steev.bm.events.InteractEvent; -import de.steev.bm.events.KillEvent; - -import org.bukkit.ChatColor; -import org.bukkit.Material; -import org.bukkit.World; -import org.bukkit.configuration.file.FileConfiguration; -import org.bukkit.configuration.file.YamlConfiguration; -import org.bukkit.entity.Player; -import org.bukkit.event.EventHandler; -import org.bukkit.event.Listener; -import org.bukkit.event.player.PlayerJoinEvent; -import org.bukkit.plugin.java.JavaPlugin; - -import java.io.File; -import java.io.IOException; -import java.util.UUID; - -public class main extends JavaPlugin implements Listener { - - // Global Variables that might come helpfull later - public int playerInBed = 0; - public World world; - String version = "1.2"; - - // Custom Playerdata File - public File playerdata; - public FileConfiguration playerDataConfig; - public final String playerdatafilename = "playerdata.yml"; - - // Handles initialisation - public void onEnable() { - // Messaging - this.getLogger().info(ChatColor.AQUA + "Plugin Startet"); - - // Registers Events - this.getLogger().info(ChatColor.AQUA + "Lade Events"); - this.getServer().getPluginManager().registerEvents(new BedEvent(this), this); - this.getServer().getPluginManager().registerEvents(new KillEvent(this), this); - this.getServer().getPluginManager().registerEvents(new InteractEvent(this), this); - this.getServer().getPluginManager().registerEvents(this, this); - - // PlayerData - playerdata = new File(this.getDataFolder(), playerdatafilename); - playerDataConfig = YamlConfiguration.loadConfiguration(playerdata); - saveplayerdata(); - - // More Messaging - this.getLogger().info(ChatColor.AQUA + "Erstelle Rezepte"); - - Item_Recipy_Override Saddle = new Item_Recipy_Override(this, "Saddle", Material.SADDLE, 1); - char[] s_ing = { 'L', 'S', 'I' }; - String[] s_rec = { "LLL", "LSL", " I " }; - Material[] s_mat = { Material.LEATHER, Material.STRING, Material.IRON_NUGGET }; - Saddle.register_recipy(s_ing, s_mat, s_rec); - - Item_Recipy_Override Wool = new Item_Recipy_Override(this, "String", Material.STRING, 8); - char[] w_ing = { 'W', 'F', }; - String[] w_rec = { " W ", "WFW", " W " }; - Material[] w_mat = { Material.WHITE_WOOL, Material.FLINT }; - Wool.register_recipy(w_ing, w_mat, w_rec); - - // More Messaging - this.getLogger().info(ChatColor.AQUA + "Ich bin Fertig :D"); - } - - @EventHandler - void onPlayerJoin(PlayerJoinEvent e) { - Player p = (Player) e.getPlayer(); - UUID uuid = p.getUniqueId(); - // prevent this allways resetting the job count - if (this.playerDataConfig.get(uuid + "." + version + ".read") == null) { - p.sendMessage("================= Better Minecraft " + version + " ================="); - p.sendMessage("Command: /back eingefügt"); - p.sendMessage("====================================================="); - - this.playerDataConfig.set(uuid + ".name", p.getName()); - this.playerDataConfig.set(uuid + "." + version + ".read", "true"); - saveplayerdata(); - } - } - - void saveplayerdata() { - try { - playerDataConfig.save(playerdata); - } catch (IOException e) { - this.getLogger().warning("Unable to save " + playerdatafilename); // shouldn't really happen, but save - // throws the exception - } - } - - public void onDisable() { - // Even more Messaging - this.getLogger().info(ChatColor.AQUA + "Ich geh dann mal :c"); - } +package de.steev.bm; + +import de.steev.bm.changes.interaction.Item_Recipy_Override; +import de.steev.bm.events.BedEvent; +import de.steev.bm.events.InteractEvent; +import de.steev.bm.events.KillEvent; + +import org.bukkit.ChatColor; +import org.bukkit.Material; +import org.bukkit.World; +import org.bukkit.configuration.file.FileConfiguration; +import org.bukkit.configuration.file.YamlConfiguration; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; +import org.bukkit.event.player.PlayerJoinEvent; +import org.bukkit.plugin.java.JavaPlugin; + +import java.io.File; +import java.io.IOException; +import java.util.UUID; + +public class main extends JavaPlugin implements Listener { + + // Global Variables that might come helpfull later + public int playerInBed = 0; + public World world; + String version = "1.2"; + + // Custom Playerdata File + public File playerdata; + public FileConfiguration playerDataConfig; + public final String playerdatafilename = "playerdata.yml"; + + // Handles initialisation + public void onEnable() { + // Messaging + this.getLogger().info(ChatColor.AQUA + "Plugin Startet"); + + // Registers Events + this.getLogger().info(ChatColor.AQUA + "Lade Events"); + this.getServer().getPluginManager().registerEvents(new BedEvent(this), this); + this.getServer().getPluginManager().registerEvents(new KillEvent(this), this); + this.getServer().getPluginManager().registerEvents(new InteractEvent(this), this); + this.getServer().getPluginManager().registerEvents(this, this); + + // PlayerData + playerdata = new File(this.getDataFolder(), playerdatafilename); + playerDataConfig = YamlConfiguration.loadConfiguration(playerdata); + saveplayerdata(); + + // More Messaging + this.getLogger().info(ChatColor.AQUA + "Erstelle Rezepte"); + + Item_Recipy_Override Saddle = new Item_Recipy_Override(this, "Saddle", Material.SADDLE, 1); + char[] s_ing = { 'L', 'S', 'I' }; + String[] s_rec = { "LLL", "LSL", " I " }; + Material[] s_mat = { Material.LEATHER, Material.STRING, Material.IRON_NUGGET }; + Saddle.register_recipy(s_ing, s_mat, s_rec); + + Item_Recipy_Override Wool = new Item_Recipy_Override(this, "String", Material.STRING, 8); + char[] w_ing = { 'W', 'F', }; + String[] w_rec = { " W ", "WFW", " W " }; + Material[] w_mat = { Material.WHITE_WOOL, Material.FLINT }; + Wool.register_recipy(w_ing, w_mat, w_rec); + + // More Messaging + this.getLogger().info(ChatColor.AQUA + "Ich bin Fertig :D"); + } + + @EventHandler + void onPlayerJoin(PlayerJoinEvent e) { + Player p = (Player) e.getPlayer(); + UUID uuid = p.getUniqueId(); + // prevent this allways resetting the job count + if (this.playerDataConfig.get(uuid + "." + version + ".read") == null) { + p.sendMessage("================= Better Minecraft " + version + " ================="); + p.sendMessage("Command: /back eingefügt"); + p.sendMessage("====================================================="); + + this.playerDataConfig.set(uuid + ".name", p.getName()); + this.playerDataConfig.set(uuid + "." + version + ".read", "true"); + saveplayerdata(); + } + } + + void saveplayerdata() { + try { + playerDataConfig.save(playerdata); + } catch (IOException e) { + this.getLogger().warning("Unable to save " + playerdatafilename); // shouldn't really happen, but save + // throws the exception + } + } + + public void onDisable() { + // Even more Messaging + this.getLogger().info(ChatColor.AQUA + "Ich geh dann mal :c"); + } } \ No newline at end of file