Initial commit. Implement basic features. Just requires tweaking.
This commit is contained in:
commit
75790cb620
4
MCRandomizer/.gitignore
vendored
Normal file
4
MCRandomizer/.gitignore
vendored
Normal file
@ -0,0 +1,4 @@
|
||||
.classpath
|
||||
.project
|
||||
.settings
|
||||
bin/
|
8
MCRandomizer/plugin.yml
Normal file
8
MCRandomizer/plugin.yml
Normal file
@ -0,0 +1,8 @@
|
||||
main: scramble.plugin.Template
|
||||
name: MCRandomizer
|
||||
author: sig
|
||||
version: 1.0.0
|
||||
api-version: 1.13
|
||||
commands:
|
||||
block:
|
||||
description: Check a block's data.
|
9
MCRandomizer/readme.md
Normal file
9
MCRandomizer/readme.md
Normal file
@ -0,0 +1,9 @@
|
||||
# Creepinson's Spigot Plugin Template for Complete Beginners
|
||||
**Thank you for using my plugin template! It is free to use in any of your plugins, just please credit me. That's all I request.**
|
||||
*This template includes an example command, and an example event listener.*
|
||||
*This template also includes a few utilities made both by me, and some other programmers out there.*
|
||||
## Usage
|
||||
I am also providing a link to get Spigot's buildtools here:
|
||||
https://www.spigotmc.org/wiki/buildtools
|
||||
|
||||
|
9
MCRandomizer/src/scramble/plugin/RecipeStore.java
Normal file
9
MCRandomizer/src/scramble/plugin/RecipeStore.java
Normal file
@ -0,0 +1,9 @@
|
||||
package scramble.plugin;
|
||||
|
||||
import org.bukkit.inventory.Recipe;
|
||||
|
||||
public interface RecipeStore {
|
||||
public void setResultItem(String item);
|
||||
public void createRecipe();
|
||||
|
||||
}
|
46
MCRandomizer/src/scramble/plugin/ShapedRecipeStore.java
Normal file
46
MCRandomizer/src/scramble/plugin/ShapedRecipeStore.java
Normal file
@ -0,0 +1,46 @@
|
||||
package scramble.plugin;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
import org.bukkit.inventory.RecipeChoice;
|
||||
import org.bukkit.inventory.RecipeChoice.MaterialChoice;
|
||||
import org.bukkit.inventory.ShapedRecipe;
|
||||
import org.bukkit.inventory.ShapelessRecipe;
|
||||
|
||||
public class ShapedRecipeStore implements RecipeStore{
|
||||
public String finalItem;
|
||||
public String[] shape;
|
||||
public HashMap<Character,MaterialChoice> ingredientsMap = new HashMap<Character,MaterialChoice>();
|
||||
|
||||
public ShapedRecipeStore(String[] shape) {
|
||||
this.shape=shape;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void createRecipe() {
|
||||
ShapedRecipe sr = new ShapedRecipe(new ItemStack(Material.getMaterial(finalItem)));
|
||||
sr.shape(shape);
|
||||
for (Character c : ingredientsMap.keySet()) {
|
||||
MaterialChoice m = ingredientsMap.get(c);
|
||||
if (m==null) {
|
||||
sr.setIngredient(c, Material.AIR);
|
||||
} else {
|
||||
sr.setIngredient(c, m);
|
||||
}
|
||||
}
|
||||
Bukkit.getLogger().info("Added recipe for "+finalItem);
|
||||
Bukkit.addRecipe(sr);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setResultItem(String item) {
|
||||
this.finalItem=item;
|
||||
}
|
||||
|
||||
}
|
31
MCRandomizer/src/scramble/plugin/ShapelessRecipeStore.java
Normal file
31
MCRandomizer/src/scramble/plugin/ShapelessRecipeStore.java
Normal file
@ -0,0 +1,31 @@
|
||||
package scramble.plugin;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
import org.bukkit.inventory.ShapelessRecipe;
|
||||
|
||||
public class ShapelessRecipeStore implements RecipeStore{
|
||||
public List<String> craftingitems = new ArrayList<String>();
|
||||
public String finalItem;
|
||||
|
||||
@Override
|
||||
public void createRecipe() {
|
||||
ShapelessRecipe sr = new ShapelessRecipe(new ItemStack(Material.getMaterial(finalItem)));
|
||||
for (int i=0;i<craftingitems.size();i++) {
|
||||
sr.addIngredient(Material.getMaterial(craftingitems.get(i)));
|
||||
Bukkit.getLogger().info(" Added ingredient "+craftingitems.get(i));
|
||||
}
|
||||
Bukkit.getLogger().info("Added recipe for "+finalItem);
|
||||
Bukkit.addRecipe(sr);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setResultItem(String item) {
|
||||
this.finalItem=item;
|
||||
}
|
||||
|
||||
}
|
282
MCRandomizer/src/scramble/plugin/Template.java
Normal file
282
MCRandomizer/src/scramble/plugin/Template.java
Normal file
@ -0,0 +1,282 @@
|
||||
package scramble.plugin;
|
||||
|
||||
import java.io.BufferedReader;
|
||||
import java.io.File;
|
||||
import java.io.FileNotFoundException;
|
||||
import java.io.FileReader;
|
||||
import java.io.IOException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.HashMap;
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Random;
|
||||
import java.util.logging.Logger;
|
||||
import net.md_5.bungee.api.ChatColor;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.Server;
|
||||
import org.bukkit.World;
|
||||
import org.bukkit.command.PluginCommand;
|
||||
import org.bukkit.inventory.BlastingRecipe;
|
||||
import org.bukkit.inventory.CampfireRecipe;
|
||||
import org.bukkit.inventory.FurnaceRecipe;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
import org.bukkit.inventory.MerchantRecipe;
|
||||
import org.bukkit.inventory.Recipe;
|
||||
import org.bukkit.inventory.RecipeChoice;
|
||||
import org.bukkit.inventory.RecipeChoice.MaterialChoice;
|
||||
import org.bukkit.inventory.ShapedRecipe;
|
||||
import org.bukkit.inventory.ShapelessRecipe;
|
||||
import org.bukkit.inventory.SmokingRecipe;
|
||||
import org.bukkit.inventory.StonecuttingRecipe;
|
||||
import org.bukkit.plugin.PluginDescriptionFile;
|
||||
import org.bukkit.plugin.PluginManager;
|
||||
import org.bukkit.plugin.java.JavaPlugin;
|
||||
import scramble.plugin.command.ExampleCommand;
|
||||
import scramble.plugin.listener.ExampleListener;
|
||||
|
||||
|
||||
|
||||
|
||||
public class Template
|
||||
extends JavaPlugin
|
||||
{
|
||||
public static final String CHAT_PREFIX = ChatColor.AQUA + "Scrambled Recipes";
|
||||
|
||||
private static Template plugin;
|
||||
|
||||
public static List<String> craftingrecipes;
|
||||
|
||||
public static List<String> smeltingrecipes;
|
||||
|
||||
public static List<RecipeStore> recipeStorage;
|
||||
public static List<String> shufflelist;
|
||||
public static List<ItemStack> shufflelist2;
|
||||
public static boolean enableRecipeModifications = false;
|
||||
|
||||
PluginDescriptionFile pdfFile;
|
||||
|
||||
public static Random r;
|
||||
|
||||
public static Template getPlugin()
|
||||
{
|
||||
return plugin;
|
||||
}
|
||||
|
||||
public static void ReadRecipeData() {
|
||||
if (!enableRecipeModifications) {
|
||||
File f = new File("recipe_data");
|
||||
ReadIntoList(f, craftingrecipes);
|
||||
File f2 = new File("furnace_data");
|
||||
ReadIntoList(f2, smeltingrecipes);
|
||||
plugin.getLogger().info("Loaded " + craftingrecipes.size() + " crafting entries, " + smeltingrecipes.size() + " furnace entries.");
|
||||
String shape;
|
||||
for (String s : craftingrecipes)
|
||||
{
|
||||
String temp = s.substring(0, s.indexOf(","));
|
||||
s = s.substring(s.indexOf(",") + 1);
|
||||
switch (temp) {
|
||||
case "0":
|
||||
{
|
||||
String[] split = s.replace(" ", "").split(",");
|
||||
ShapelessRecipeStore srs = new ShapelessRecipeStore();
|
||||
for (int i = 0; i < split.length - 1; i++) {
|
||||
srs.craftingitems.add(split[i]);
|
||||
}
|
||||
recipeStorage.add(srs);
|
||||
shufflelist.add(split[(split.length - 1)]);
|
||||
}break;
|
||||
case "1":{
|
||||
shape = s.substring(s.indexOf('[') + 1, s.indexOf(']'));
|
||||
String[] shape_split = shape.replace(" ", "").split(",");
|
||||
s = s.substring(s.indexOf(']') + 1);
|
||||
String itemsList = s.substring(s.indexOf('[') + 1, s.lastIndexOf(']'));
|
||||
|
||||
String[] itemsSplit = itemsList.replace(" ", "").split("\\]\\[");
|
||||
|
||||
ShapedRecipeStore srs = new ShapedRecipeStore(shape_split);
|
||||
for (String s2 : itemsSplit) {
|
||||
String[] splitter = s2.split(",");
|
||||
|
||||
|
||||
List<Material> splitter2 = new ArrayList();
|
||||
for (int i = 1; i < splitter.length; i++) {
|
||||
Material m = Material.getMaterial(splitter[i]);
|
||||
|
||||
if (m != null) {
|
||||
splitter2.add(m);
|
||||
}
|
||||
else {
|
||||
splitter2.add(Material.AIR);
|
||||
}
|
||||
}
|
||||
|
||||
srs.ingredientsMap.put(Character.valueOf(splitter[0].charAt(0)), new RecipeChoice.MaterialChoice(splitter2));
|
||||
}
|
||||
recipeStorage.add(srs);
|
||||
s = s.substring(s.lastIndexOf(',') + 1);
|
||||
shufflelist.add(s);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
plugin.getLogger().info("There are " + recipeStorage.size() + " recipes and " + shufflelist.size() + " shuffle items.");
|
||||
if (recipeStorage.size() != shufflelist.size()) {
|
||||
plugin.getLogger().severe("Recipe storage and Shuffle list sizes DO NOT MATCH. Exiting here...");
|
||||
Bukkit.shutdown();
|
||||
}
|
||||
|
||||
plugin.getLogger().info("Creating recipes...");
|
||||
while (shufflelist.size() > 0)
|
||||
{
|
||||
Integer numb = Integer.valueOf(r.nextInt(recipeStorage.size()));
|
||||
RecipeStore rs = (RecipeStore)recipeStorage.get(numb.intValue());
|
||||
rs.setResultItem((String)shufflelist.get(0));
|
||||
if ((rs instanceof ShapedRecipeStore)) {
|
||||
ShapedRecipeStore rss = (ShapedRecipeStore)rs;
|
||||
Bukkit.getLogger().info(Arrays.toString(rss.shape));
|
||||
for (Character c : rss.ingredientsMap.keySet()) {
|
||||
Bukkit.getLogger().info(" " + c + ": " + rss.ingredientsMap.get(c));
|
||||
}
|
||||
}
|
||||
rs.createRecipe();
|
||||
shufflelist.remove(0);
|
||||
recipeStorage.remove(rs);
|
||||
}
|
||||
plugin.getLogger().info("Done! All recipes shuffled!");
|
||||
}
|
||||
}
|
||||
|
||||
private static void ReadIntoList(File f, List<String> list)
|
||||
{
|
||||
try {
|
||||
FileReader fr = new FileReader(f);
|
||||
BufferedReader br = new BufferedReader(fr);
|
||||
String s = br.readLine();
|
||||
while (s != null) {
|
||||
list.add(s);
|
||||
s = br.readLine();
|
||||
}
|
||||
br.close();
|
||||
fr.close();
|
||||
} catch (FileNotFoundException e) {
|
||||
e.printStackTrace();
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
public void AddInDefaultRecipes() {
|
||||
ShapedRecipe sr = new ShapedRecipe(new ItemStack(Material.CRAFTING_TABLE));
|
||||
sr.shape(new String[]{"aa","aa"});
|
||||
sr.setIngredient('a', new RecipeChoice.MaterialChoice(new Material[]{
|
||||
Material.ACACIA_PLANKS,
|
||||
Material.BIRCH_PLANKS,
|
||||
Material.DARK_OAK_PLANKS,
|
||||
Material.JUNGLE_PLANKS,
|
||||
Material.OAK_PLANKS,
|
||||
Material.SPRUCE_PLANKS,
|
||||
}));
|
||||
Bukkit.addRecipe(sr);
|
||||
}
|
||||
|
||||
|
||||
public void onEnable()
|
||||
{
|
||||
craftingrecipes = new ArrayList();
|
||||
smeltingrecipes = new ArrayList();
|
||||
shufflelist = new ArrayList();
|
||||
shufflelist2 = new ArrayList();
|
||||
recipeStorage = new ArrayList();
|
||||
plugin = (Template)getPlugin(Template.class);
|
||||
r = new Random(Bukkit.getWorld("world").getSeed());
|
||||
List<Recipe> defaultRecipes = new ArrayList();
|
||||
Iterator<Recipe> it = Bukkit.recipeIterator();
|
||||
while (it.hasNext()) {
|
||||
Recipe r = (Recipe)it.next();
|
||||
defaultRecipes.add(r);
|
||||
shufflelist2.add(r.getResult());
|
||||
Bukkit.getLogger().info("Found a recipe for " + r.getResult());
|
||||
}
|
||||
Bukkit.clearRecipes();
|
||||
HashMap<String, Integer> recipeTypeMap = new HashMap();
|
||||
|
||||
while (shufflelist2.size() > 0) {
|
||||
Recipe rr = (Recipe)defaultRecipes.get(r.nextInt(defaultRecipes.size()));
|
||||
boolean modified=true;
|
||||
try {
|
||||
if ((rr instanceof BlastingRecipe)) {
|
||||
BlastingRecipe br = (BlastingRecipe)rr;
|
||||
BlastingRecipe newbr = new BlastingRecipe(br.getKey(), (ItemStack)shufflelist2.get(0), br.getInputChoice(), br.getExperience(), br.getCookingTime());
|
||||
Bukkit.addRecipe(newbr);
|
||||
}
|
||||
else if ((rr instanceof CampfireRecipe)) {
|
||||
CampfireRecipe br = (CampfireRecipe)rr;
|
||||
CampfireRecipe newbr = new CampfireRecipe(br.getKey(), (ItemStack)shufflelist2.get(0), br.getInputChoice(), br.getExperience(), br.getCookingTime());
|
||||
Bukkit.addRecipe(newbr);
|
||||
}
|
||||
/*else if ((rr instanceof FurnaceRecipe)) {
|
||||
FurnaceRecipe br = (FurnaceRecipe)rr;
|
||||
FurnaceRecipe newbr = new FurnaceRecipe(br.getKey(), (ItemStack)shufflelist2.get(0), br.getInputChoice(), br.getExperience(), br.getCookingTime());
|
||||
Bukkit.addRecipe(newbr);
|
||||
}*/
|
||||
else if ((rr instanceof MerchantRecipe)) {
|
||||
MerchantRecipe br = (MerchantRecipe)rr;
|
||||
MerchantRecipe newbr = new MerchantRecipe((ItemStack)shufflelist2.get(0), br.getUses(), br.getMaxUses(), true, br.getVillagerExperience(), br.getPriceMultiplier());
|
||||
Bukkit.addRecipe(newbr);
|
||||
}
|
||||
/*else if ((rr instanceof ShapedRecipe)) {
|
||||
ShapedRecipe br = (ShapedRecipe)rr;
|
||||
ShapedRecipe newbr = new ShapedRecipe((ItemStack)shufflelist2.get(0));
|
||||
newbr.shape(br.getShape());
|
||||
|
||||
for (Character c : br.getChoiceMap().keySet())
|
||||
{
|
||||
newbr.setIngredient(c.charValue(), (RecipeChoice)br.getChoiceMap().get(c));
|
||||
}
|
||||
Bukkit.addRecipe(newbr);
|
||||
}
|
||||
else if ((rr instanceof ShapelessRecipe)) {
|
||||
ShapelessRecipe br = (ShapelessRecipe)rr;
|
||||
ShapelessRecipe newbr = new ShapelessRecipe((ItemStack)shufflelist2.get(0));
|
||||
for (ItemStack i : br.getIngredientList()) {
|
||||
newbr.addIngredient(i.getType());
|
||||
}
|
||||
Bukkit.addRecipe(newbr);
|
||||
}*/
|
||||
else if ((rr instanceof SmokingRecipe)) {
|
||||
SmokingRecipe br = (SmokingRecipe)rr;
|
||||
SmokingRecipe newbr = new SmokingRecipe(br.getKey(), (ItemStack)shufflelist2.get(0), br.getInputChoice(), br.getExperience(), br.getCookingTime());
|
||||
Bukkit.addRecipe(newbr);
|
||||
}
|
||||
else if ((rr instanceof StonecuttingRecipe)) {
|
||||
StonecuttingRecipe br = (StonecuttingRecipe)rr;
|
||||
StonecuttingRecipe newbr = new StonecuttingRecipe(br.getKey(), (ItemStack)shufflelist2.get(0), br.getInputChoice());
|
||||
Bukkit.addRecipe(newbr);
|
||||
} else {
|
||||
modified=false;
|
||||
}
|
||||
}
|
||||
catch (IllegalStateException localIllegalStateException) {}
|
||||
|
||||
if (modified) {
|
||||
recipeTypeMap.put(rr.getClass().getName(), Integer.valueOf(recipeTypeMap.containsKey(rr.getClass().getName()) ? ((Integer)recipeTypeMap.get(rr.getClass().getName())).intValue() + 1 : 1));
|
||||
}
|
||||
shufflelist2.remove(0);
|
||||
}
|
||||
ReadRecipeData();
|
||||
AddInDefaultRecipes();
|
||||
|
||||
for (String s : recipeTypeMap.keySet()) {
|
||||
Bukkit.getLogger().info(" Randomized " + recipeTypeMap.get(s) + " " + s + " recipes.");
|
||||
}
|
||||
|
||||
PluginManager pm = getServer().getPluginManager();
|
||||
|
||||
getCommand("block").setExecutor(new ExampleCommand());
|
||||
|
||||
pm.registerEvents(new ExampleListener(), this);
|
||||
}
|
||||
}
|
54
MCRandomizer/src/scramble/plugin/command/ExampleCommand.java
Normal file
54
MCRandomizer/src/scramble/plugin/command/ExampleCommand.java
Normal file
@ -0,0 +1,54 @@
|
||||
package scramble.plugin.command;
|
||||
|
||||
import static scramble.plugin.Template.CHAT_PREFIX;
|
||||
|
||||
import org.bukkit.command.Command;
|
||||
import org.bukkit.command.CommandExecutor;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.command.ConsoleCommandSender;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
import org.bukkit.inventory.meta.BlockDataMeta;
|
||||
|
||||
import net.md_5.bungee.api.ChatColor;
|
||||
import scramble.plugin.Template;
|
||||
|
||||
// All command classes need to implement the CommandExecutor interface to be a proper command!
|
||||
public class ExampleCommand implements CommandExecutor {
|
||||
|
||||
/* Called when the command is ran
|
||||
args variable is the commands arguments in an array of strings.
|
||||
sender variable is the sender who ran the command
|
||||
*/
|
||||
@Override
|
||||
public boolean onCommand(CommandSender sender, Command cmd, String cmdLabel, String[] args) {
|
||||
|
||||
/* Checks if the sender is sending from the console
|
||||
CHAT_PREFIX is the variable from the Template plugin class and can be removed
|
||||
if unwanted.
|
||||
*/
|
||||
if (!(sender instanceof Player)) {
|
||||
sender.sendMessage(CHAT_PREFIX + ChatColor.WHITE + " > " + ChatColor.RED + "You cannot run this command from the console!");
|
||||
return false;
|
||||
}
|
||||
/*
|
||||
* Since we made sure the sender is a player, we can create a new player
|
||||
* variable using our sender
|
||||
*/
|
||||
Player p = (Player) sender;
|
||||
|
||||
/*
|
||||
* checks if First argument (/command FIRSTARGUMENT) is equal to the string In
|
||||
* this case, the command would be: /example sayhi
|
||||
*/
|
||||
if (cmd.getName().equalsIgnoreCase("block")) {
|
||||
if (p.getInventory().getItemInMainHand()!=null) {
|
||||
ItemStack it = p.getInventory().getItemInMainHand();
|
||||
p.sendMessage(it.toString());
|
||||
}
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
}
|
133
MCRandomizer/src/scramble/plugin/listener/ExampleListener.java
Normal file
133
MCRandomizer/src/scramble/plugin/listener/ExampleListener.java
Normal file
@ -0,0 +1,133 @@
|
||||
package scramble.plugin.listener;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.FileWriter;
|
||||
import java.io.IOException;
|
||||
import java.util.Arrays;
|
||||
import java.util.Map;
|
||||
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.Listener;
|
||||
import org.bukkit.event.block.BlockBreakEvent;
|
||||
import org.bukkit.event.inventory.CraftItemEvent;
|
||||
import org.bukkit.event.inventory.FurnaceSmeltEvent;
|
||||
import org.bukkit.event.inventory.PrepareItemCraftEvent;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
import org.bukkit.inventory.Recipe;
|
||||
import org.bukkit.inventory.RecipeChoice;
|
||||
import org.bukkit.inventory.ShapedRecipe;
|
||||
import org.bukkit.inventory.ShapelessRecipe;
|
||||
|
||||
import net.md_5.bungee.api.ChatColor;
|
||||
import scramble.plugin.Template;
|
||||
|
||||
public class ExampleListener implements Listener {
|
||||
|
||||
@EventHandler
|
||||
public void onBlockBreak(BlockBreakEvent event) {
|
||||
/*
|
||||
* We get the player and make a variable to make it easier to access it when we
|
||||
* need to use it.
|
||||
*/
|
||||
//Player p = event.getPlayer();
|
||||
/*
|
||||
* Here we cancel the event. This means that they can't break the block. In this
|
||||
* case, we send a message to the player saying they don't have the required
|
||||
* permission.
|
||||
*/
|
||||
/*if (!p.hasPermission("template.breakblocks")) {
|
||||
p.sendMessage(Template.CHAT_PREFIX + ChatColor.WHITE + " > " + ChatColor.RED + "You do not have permission to break blocks!");
|
||||
event.setCancelled(true);
|
||||
}*/
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onCraftItemEvent(CraftItemEvent ev) {
|
||||
/*for (in
|
||||
//ev.getViewers().get(0).sendMessagt i=0;i<9;i++) {
|
||||
//ev.getViewers().get(0).sendMessage(ev.getInventory().getItem(0).getData().toString());
|
||||
}*/
|
||||
//ev.getInventory().getSize()
|
||||
|
||||
if (Template.enableRecipeModifications) {
|
||||
Recipe rec = ev.getRecipe();
|
||||
if (rec instanceof ShapelessRecipe) {
|
||||
StringBuilder sb = new StringBuilder("0");
|
||||
ShapelessRecipe rec2 = (ShapelessRecipe)rec;
|
||||
for (int i=0;i<rec2.getIngredientList().size();i++) {
|
||||
//ev.getViewers().get(0).sendMessage(rec2.getIngredientList().get(i).getData().toString());
|
||||
sb.append(","+getCutItemStackData(rec2.getIngredientList().get(i)));
|
||||
}
|
||||
sb.append(","+getCutItemStackData(rec2.getResult()));
|
||||
SaveData(ev, sb);
|
||||
}
|
||||
if (rec instanceof ShapedRecipe) {
|
||||
ShapedRecipe rec2 = (ShapedRecipe)rec;
|
||||
Map<Character,RecipeChoice> map1 = rec2.getChoiceMap();
|
||||
Map<Character,ItemStack> map2 = rec2.getIngredientMap();
|
||||
StringBuilder sb = new StringBuilder("1");
|
||||
//ev.getViewers().get(0).sendMessage(Arrays.toString(rec2.getShape()));
|
||||
sb.append(","+Arrays.toString(rec2.getShape()));
|
||||
for (Character c : map1.keySet()) {
|
||||
//ItemStack it = map2.get(c).;
|
||||
sb.append("["+c+","+getCutChoices(map1.get(c))+"]");
|
||||
//ev.getViewers().get(0).sendMessage(c+","+map1.get(c));
|
||||
//ev.getViewers().get(0).sendMessage(rec2.getIngredientList().get(i).getData().toString());
|
||||
}
|
||||
sb.append(","+getCutItemStackData(rec2.getResult()));
|
||||
SaveData(ev, sb);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onSmeltItemEvent(FurnaceSmeltEvent ev) {
|
||||
if (Template.enableRecipeModifications) {
|
||||
Player p = Bukkit.getPlayer("sigonasr2");
|
||||
if (p!=null && p.isOnline()) {
|
||||
StringBuilder sb = new StringBuilder(getCutItemStackData(ev.getSource()));
|
||||
sb.append(","+getCutItemStackData(ev.getResult()));
|
||||
Template.smeltingrecipes.add(sb.toString());
|
||||
p.sendMessage("Item["+Template.smeltingrecipes.size()+"] "+sb.toString()+" added.");
|
||||
File f = new File("furnace_data");
|
||||
try{
|
||||
FileWriter fw = new FileWriter(f,true);
|
||||
fw.write(sb.toString()+"\n");
|
||||
fw.close();
|
||||
} catch (IOException e) {
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public String getCutItemStackData(ItemStack it) {
|
||||
String s=it.toString().replace("ItemStack{", "");
|
||||
return s.substring(0,s.indexOf(' '));
|
||||
}
|
||||
public String getCutChoices(RecipeChoice c) {
|
||||
if (c!=null) {
|
||||
String s = c.toString().replace("MaterialChoice{choices=[", "");
|
||||
return s.substring(0,s.indexOf(']'));
|
||||
} else {
|
||||
return "NULL";
|
||||
}
|
||||
}
|
||||
|
||||
private void SaveData(CraftItemEvent ev, StringBuilder sb) {
|
||||
Template.craftingrecipes.add(sb.toString());
|
||||
ev.getViewers().get(0).sendMessage("Item["+Template.craftingrecipes.size()+"] " +sb.toString()+" added.");
|
||||
|
||||
File f = new File("recipe_data");
|
||||
try {
|
||||
FileWriter fw = new FileWriter(f,true);
|
||||
fw.write(sb.toString()+"\n");
|
||||
fw.close();
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user