Mineplex2018-withcommit/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/Recipes.java
2016-03-10 02:47:48 +00:00

275 lines
8.9 KiB
Java

package mineplex.game.clans;
import org.bukkit.Material;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.inventory.PrepareItemCraftEvent;
import org.bukkit.inventory.CraftingInventory;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.ShapedRecipe;
import org.bukkit.material.SmoothBrick;
import org.bukkit.plugin.java.JavaPlugin;
import mineplex.core.MiniPlugin;
import mineplex.core.common.util.C;
import mineplex.core.common.util.F;
import mineplex.core.common.util.UtilGear;
import mineplex.core.common.util.UtilServer;
import mineplex.core.itemstack.ItemStackFactory;
public class Recipes extends MiniPlugin
{
public Recipes(JavaPlugin plugin)
{
super("Recipes", plugin);
ItemStack boosterAxe = ItemStackFactory.Instance.CreateStack(Material.GOLD_AXE, (byte) 0, 1, "Booster Axe", false);
ShapedRecipe goldAxe = new ShapedRecipe(boosterAxe);
goldAxe.shape("#MM","#SM","#S#");
goldAxe.setIngredient('M', Material.GOLD_BLOCK);
goldAxe.setIngredient('S', Material.STICK);
UtilServer.getServer().addRecipe(goldAxe);
ItemStack powerAxe = ItemStackFactory.Instance.CreateStack(Material.DIAMOND_AXE, (byte) 0, 1, "Power Axe", false);
ShapedRecipe diamondAxe = new ShapedRecipe(powerAxe);
diamondAxe.shape("#MM","#SM","#S#");
diamondAxe.setIngredient('M', Material.DIAMOND_BLOCK);
diamondAxe.setIngredient('S', Material.STICK);
UtilServer.getServer().addRecipe(diamondAxe);
ShapedRecipe bricks = new ShapedRecipe(new ItemStack(Material.SMOOTH_BRICK, 1));
bricks.shape("XX", "XX");
bricks.setIngredient('X', new SmoothBrick(Material.COBBLESTONE));
UtilServer.getServer().addRecipe(bricks);
ItemStack boosterSword = ItemStackFactory.Instance.CreateStack(Material.GOLD_SWORD, (byte) 0, 1, "Booster Sword", false);
ShapedRecipe goldSword = new ShapedRecipe(boosterSword);
goldSword.shape("M","M","S");
goldSword.setIngredient('M', Material.GOLD_BLOCK);
goldSword.setIngredient('S', Material.STICK);
UtilServer.getServer().addRecipe(goldSword);
ItemStack powerSword = ItemStackFactory.Instance.CreateStack(Material.DIAMOND_SWORD, (byte) 0, 1, "Power Sword", false);
ShapedRecipe diamondSword = new ShapedRecipe(powerSword);
diamondSword.shape("M","M","S");
diamondSword.setIngredient('M', Material.DIAMOND_BLOCK);
diamondSword.setIngredient('S', Material.STICK);
UtilServer.getServer().addRecipe(diamondSword);
//Iron Door
ShapedRecipe ironDoor = new ShapedRecipe(new ItemStack(Material.IRON_DOOR, 1));
ironDoor.shape("I","I");
ironDoor.setIngredient('I', Material.IRON_INGOT);
UtilServer.getServer().addRecipe(ironDoor);
//Chain Helm
ShapedRecipe chainHelm = new ShapedRecipe(new ItemStack(Material.CHAINMAIL_HELMET, 1));
chainHelm.shape("SIS","I#I");
chainHelm.setIngredient('I', Material.IRON_INGOT);
chainHelm.setIngredient('S', Material.GOLD_INGOT);
UtilServer.getServer().addRecipe(chainHelm);
//Chain Chest
ShapedRecipe chainChest = new ShapedRecipe(new ItemStack(Material.CHAINMAIL_CHESTPLATE, 1));
chainChest.shape("I#I","SIS","ISI");
chainChest.setIngredient('I', Material.IRON_INGOT);
chainChest.setIngredient('S', Material.GOLD_INGOT);
UtilServer.getServer().addRecipe(chainChest);
//Chain Legs
ShapedRecipe chainLegs = new ShapedRecipe(new ItemStack(Material.CHAINMAIL_LEGGINGS, 1));
chainLegs.shape("ISI","S#S","I#I");
chainLegs.setIngredient('I', Material.IRON_INGOT);
chainLegs.setIngredient('S', Material.GOLD_INGOT);
UtilServer.getServer().addRecipe(chainLegs);
//Chain Boots
ShapedRecipe chainBoots = new ShapedRecipe(new ItemStack(Material.CHAINMAIL_BOOTS, 1));
chainBoots.shape("S#S","I#I");
chainBoots.setIngredient('I', Material.IRON_INGOT);
chainBoots.setIngredient('S', Material.GOLD_INGOT);
UtilServer.getServer().addRecipe(chainBoots);
//Chain Helm
ShapedRecipe chainHelm2 = new ShapedRecipe(new ItemStack(Material.CHAINMAIL_HELMET, 1));
chainHelm2.shape("SIS","I#I");
chainHelm2.setIngredient('I', Material.GOLD_INGOT);
chainHelm2.setIngredient('S', Material.IRON_INGOT);
UtilServer.getServer().addRecipe(chainHelm2);
//Chain Chest
ShapedRecipe chainChest2 = new ShapedRecipe(new ItemStack(Material.CHAINMAIL_CHESTPLATE, 1));
chainChest2.shape("I#I","SIS","ISI");
chainChest2.setIngredient('I', Material.GOLD_INGOT);
chainChest2.setIngredient('S', Material.IRON_INGOT);
UtilServer.getServer().addRecipe(chainChest2);
//Chain Legs
ShapedRecipe chainLegs2 = new ShapedRecipe(new ItemStack(Material.CHAINMAIL_LEGGINGS, 1));
chainLegs2.shape("ISI","S#S","I#I");
chainLegs2.setIngredient('I', Material.GOLD_INGOT);
chainLegs2.setIngredient('S', Material.IRON_INGOT);
UtilServer.getServer().addRecipe(chainLegs2);
//Chain Boots
ShapedRecipe chainBoots2 = new ShapedRecipe(new ItemStack(Material.CHAINMAIL_BOOTS, 1));
chainBoots2.shape("S#S","I#I");
chainBoots2.setIngredient('I', Material.GOLD_INGOT);
chainBoots2.setIngredient('S', Material.IRON_INGOT);
UtilServer.getServer().addRecipe(chainBoots2);
ShapedRecipe stonebrick = new ShapedRecipe(new ItemStack(Material.SMOOTH_BRICK, 1));
stonebrick.shape("SS#", "SS#");
stonebrick.setIngredient('S', Material.STONE);
UtilServer.getServer().addRecipe(stonebrick);
stonebrick = new ShapedRecipe(new ItemStack(Material.SMOOTH_BRICK, 1));
stonebrick.shape("#SS", "#SS");
stonebrick.setIngredient('S', Material.STONE);
UtilServer.getServer().addRecipe(stonebrick);
stonebrick = new ShapedRecipe(new ItemStack(Material.SMOOTH_BRICK, 1));
stonebrick.shape("###", "SS#", "SS#");
stonebrick.setIngredient('S', Material.STONE);
UtilServer.getServer().addRecipe(stonebrick);
stonebrick = new ShapedRecipe(new ItemStack(Material.SMOOTH_BRICK, 1));
stonebrick.shape("###", "#SS", "#SS");
stonebrick.setIngredient('S', Material.STONE);
UtilServer.getServer().addRecipe(stonebrick);
}
@EventHandler(priority = EventPriority.LOW)
public void addLore(PrepareItemCraftEvent event)
{
if (event.getView().getPlayer() instanceof Player)
{
Player player = ((Player) event.getView().getPlayer());
CraftingInventory inv = (CraftingInventory)event.getInventory();
ItemStack itemStack = inv.getResult();
if (UtilGear.isWeapon(itemStack))
{
ItemStackFactory.Instance.addOwnerLore(itemStack, player.getName() + " Crafting");
inv.setResult(itemStack);
}
}
}
@EventHandler(priority = EventPriority.HIGH)
public void ReplaceDoor(PrepareItemCraftEvent event)
{
if (event.getRecipe().getResult() == null)
return;
Material type = event.getRecipe().getResult().getType();
if (type != Material.WOOD_DOOR && type != Material.WOODEN_DOOR)
return;
if (!(event.getInventory() instanceof CraftingInventory))
return;
CraftingInventory inv = (CraftingInventory)event.getInventory();
//Feedback
ItemStack result = ItemStackFactory.Instance.CreateStack(Material.IRON_DOOR);
inv.setResult(result);
}
@EventHandler(priority = EventPriority.HIGH)
public void DenySword(PrepareItemCraftEvent event)
{
if (event.getRecipe().getResult() == null)
return;
Material type = event.getRecipe().getResult().getType();
if (type != Material.DIAMOND_SWORD && type != Material.GOLD_SWORD &&
type != Material.DIAMOND_AXE && type != Material.GOLD_AXE)
return;
if (!(event.getInventory() instanceof CraftingInventory))
return;
CraftingInventory inv = (CraftingInventory)event.getInventory();
for (ItemStack cur : inv.getMatrix())
if (cur != null)
if (cur.getType() == Material.GOLD_BLOCK || cur.getType() == Material.DIAMOND_BLOCK)
return;
String name = ItemStackFactory.Instance.GetName(event.getRecipe().getResult(), true);
String matName = "Gold";
if (type == Material.DIAMOND_AXE || type == Material.DIAMOND_SWORD)
matName = "Diamond";
//Feedback
ItemStack result = ItemStackFactory.Instance.CreateStack(36, (byte)0, 1, "§r" + C.cGray + "Recipe changed for " + F.item(name) + ".",
new String[] {C.cGray + "Use " + F.item(matName + " Blocks") + " instead of " + F.item(matName + " Ingots") + "."});
inv.setResult(result);
}
@EventHandler(priority = EventPriority.HIGH)
public void DenyGeneral(PrepareItemCraftEvent event)
{
if (event.getRecipe().getResult() == null)
return;
Material type = event.getRecipe().getResult().getType();
if (
type != Material.GOLDEN_APPLE &&
type != Material.GOLDEN_CARROT &&
type != Material.ENDER_CHEST &&
type != Material.ENCHANTMENT_TABLE &&
type != Material.BREWING_STAND &&
type != Material.TNT)
return;
if (!(event.getInventory() instanceof CraftingInventory))
return;
CraftingInventory inv = (CraftingInventory)event.getInventory();
String name = ItemStackFactory.Instance.GetName(event.getRecipe().getResult(), true);
//Feedback
ItemStack result = ItemStackFactory.Instance.CreateStack(36, (byte)0, 1,
"§r" + C.cGray + "Crafting of " + F.item(name) + " is disabled.", new String[] {});
inv.setResult(result);
}
}