Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package github.stormtrooper28.unCrafter;
- import java.io.File;
- import java.io.IOException;
- import java.io.InputStreamReader;
- import java.io.Reader;
- import java.io.UnsupportedEncodingException;
- import java.util.List;
- import java.util.Map;
- import java.util.logging.Level;
- import java.util.logging.Logger;
- import org.bukkit.Bukkit;
- import org.bukkit.configuration.file.FileConfiguration;
- import org.bukkit.configuration.file.YamlConfiguration;
- import org.bukkit.entity.HumanEntity;
- import org.bukkit.event.EventHandler;
- import org.bukkit.event.Listener;
- import org.bukkit.event.inventory.InventoryClickEvent;
- import org.bukkit.event.inventory.InventoryType;
- import org.bukkit.event.inventory.InventoryType.SlotType;
- import org.bukkit.inventory.FurnaceRecipe;
- import org.bukkit.inventory.ItemStack;
- import org.bukkit.inventory.Recipe;
- import org.bukkit.inventory.ShapedRecipe;
- import org.bukkit.inventory.ShapelessRecipe;
- import org.bukkit.plugin.java.JavaPlugin;
- public class UnCrafter extends JavaPlugin implements Listener{
- public static UnCrafter plugin;
- public final Logger logger = Logger.getLogger("Uncrafter Initialized");
- public void onEnable(){
- getServer().getPluginManager().registerEvents(this, this);
- getSaveData().options().copyDefaults(true);
- saveSaveData();
- }
- @EventHandler
- public void onClickRegister(InventoryClickEvent e){
- Bukkit.broadcastMessage(String.valueOf(e.getSlot()));
- Bukkit.broadcastMessage(String.valueOf(e.getSlotType()));
- Bukkit.broadcastMessage(String.valueOf(e.getRawSlot()));
- if(e.getClickedInventory().getType().equals(InventoryType.CRAFTING) && e.getSlotType().equals(SlotType.RESULT))
- onCraftingClick(e);
- ItemStack item;
- if(e.getCurrentItem() !=null)
- item = e.getCurrentItem();
- else if(e.getCursor() != null)
- item = e.getCursor();
- else
- return;
- String name = item.getType().toString();
- reloadSaveData();
- if(getSaveData().contains("Registered_UnCrafting_Recipes."+name))
- return;
- if(getSaveData().contains("Registered_UnCrafting_Recipes."+name+".enabled"))
- return;
- List<Recipe> recipes = Bukkit.getServer().getRecipesFor(item);
- for(int c = 0; c<recipes.size();c++){
- if(recipes.get(c) instanceof ShapedRecipe){
- ShapedRecipe recipe = (ShapedRecipe) recipes.get(c);
- logger.info("Registering Shaped UnCrafting Recipe for " + name);
- registerShapedUnCraftingRecipe(item, recipe, name, c);
- logger.info("Registered Shaped UnCrafting Recipe for " + name);
- return;
- }
- else if(recipes.get(c) instanceof ShapelessRecipe){
- ShapelessRecipe recipe = (ShapelessRecipe) recipes.get(c);
- logger.info("Registering Shapeless UnCrafting Recipe for " + name);
- registerShapelessUnCraftingRecipe(item, recipe, name, c);
- logger.info("Registered Shapeless UnCrafting Recipe for " + name);
- }
- else if(recipes.get(c) instanceof FurnaceRecipe){
- FurnaceRecipe recipe = (FurnaceRecipe) recipes.get(c);
- logger.info("Registering UnSmelting Recipe for " + name);
- registerUnSmeltingRecipe(item, recipe, name, c);
- logger.info("Registered UnSmelting UnCrafting Recipe for " + name);
- }
- else{
- logger.severe("If modded server, ignore (unless there are errors).\n Otherwise: REPORT THE FOLLOWING TEXT TO THE AUTHOR OF THIS PLUGIN: stormtrooper28\n"+recipes.get(c).toString());
- }
- }
- }
- private void registerShapedUnCraftingRecipe(ItemStack result, ShapedRecipe recipe, String name, int way){
- reloadSaveData();
- Map<Character, ItemStack> ingreMap = recipe.getIngredientMap(); //IngredientMap
- for(ItemStack i : ingreMap.values())
- if(i.getType().equals(result.getType())) //Stop infinite looping glitch, right now
- return;
- int c = 0;
- for(ItemStack i : ingreMap.values()){
- if(i.getType().equals(result.getType()))
- return;
- getSaveData().set("Registered_UnCrafting_Recipes."+name+".way"+way+"."+c, i.getType().toString());
- c++;
- }
- getSaveData().set("Registered_UnCrafting_Recipes."+name+".way"+way+"."+"._type", "shaped");
- saveSaveData();
- }
- private void registerShapelessUnCraftingRecipe(ItemStack result, ShapelessRecipe recipe, String name, int way){
- reloadSaveData();
- List<ItemStack> ingreList = recipe.getIngredientList();
- for(ItemStack i : ingreList)
- if(i.getType().equals(result.getType()))
- return;
- int c = 0;
- for(ItemStack i : ingreList){
- getSaveData().set("Registered_UnCrafting_Recipes."+name+".way"+way+"."+"."+c, i.getType().toString());
- c++;
- }
- getSaveData().set("Registered_UnCrafting_Recipes."+name+".way"+way+"."+"._type", "shapeless");
- saveSaveData();
- }
- private void registerUnSmeltingRecipe(ItemStack result, FurnaceRecipe recipe, String name, int way){
- reloadSaveData();
- if(recipe.getResult().getType().equals(recipe.getInput().getType()))
- return;
- getSaveData().set("Registered_UnCrafting_Recipes."+name+".way"+way+".", recipe.getInput().getType().toString());
- getSaveData().set("Registered_UnCrafting_Recipes."+name+".way"+way+"."+"._type", "furnace");
- saveSaveData();
- }
- public void onCraftingClick(InventoryClickEvent e){
- if(e.getClickedInventory().getHolder() instanceof HumanEntity)
- return;
- Bukkit.broadcastMessage("Crafting inv && isResultSlot");
- }
- // CUSTOM CONFIGS!!!!
- // CUSTOM CONFIGS!!!!
- // | | | | CUSTOM CONFIGS!!!! | | | | | | | | | | | |
- // CUSTOM CONFIGS!!!!
- // CUSTOM CONFIGS!!!!
- private FileConfiguration SaveData = null;
- private File SaveDataFile = null;
- public void reloadSaveData() {
- if (SaveDataFile == null) {
- SaveDataFile = new File(getDataFolder(), "SaveData.yml");
- }
- SaveData = YamlConfiguration.loadConfiguration(SaveDataFile);
- Reader defConfigStream = null;
- // Look for defaults in the jar
- try {
- defConfigStream = new InputStreamReader(
- this.getResource("SaveData.yml"), "UTF8");
- } catch (UnsupportedEncodingException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- if (defConfigStream != null) {
- YamlConfiguration defConfig = YamlConfiguration
- .loadConfiguration(defConfigStream);
- SaveData.setDefaults(defConfig);
- }
- }
- // read the config (highscores for most, current games for chess/other &
- // progress)
- public FileConfiguration getSaveData() {
- if (SaveData == null) {
- reloadSaveData();
- }
- return SaveData;
- }
- // save the file
- public void saveSaveData() {
- if (SaveData == null || SaveDataFile == null) {
- return;
- }
- try {
- getSaveData().save(SaveDataFile);
- } catch (IOException ex) {
- getLogger().log(Level.SEVERE,
- "Could not save config to " + SaveDataFile, ex);
- }
- }
- // implement backup with following
- public void saveDefaultSaveData() {
- if (SaveDataFile == null) {
- SaveDataFile = new File(plugin.getDataFolder(), "SaveData.yml");
- }
- if (!SaveDataFile.exists()) {
- plugin.saveResource("SaveData.yml", false);
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment