diff options
author | Celtic Minstrel <celtic.minstrel.ca@some.place> | 2011-07-14 20:54:07 -0400 |
---|---|---|
committer | EvilSeph <evilseph@gmail.com> | 2012-02-20 16:39:33 -0500 |
commit | 84ecdb5439ef5633c44b1ea0581174bf581b4969 (patch) | |
tree | ff5216b243f97bea871f9875edb8973296097200 /src | |
parent | 39048be4300b597a28ef153d705592cda638e691 (diff) | |
download | craftbukkit-84ecdb5439ef5633c44b1ea0581174bf581b4969.tar craftbukkit-84ecdb5439ef5633c44b1ea0581174bf581b4969.tar.gz craftbukkit-84ecdb5439ef5633c44b1ea0581174bf581b4969.tar.lz craftbukkit-84ecdb5439ef5633c44b1ea0581174bf581b4969.tar.xz craftbukkit-84ecdb5439ef5633c44b1ea0581174bf581b4969.zip |
Imported from mc-dev:
- ShapedRecipes
- ShapelessRecipes
- CraftingRecipe
- FurnaceRecipes
Diffstat (limited to 'src')
4 files changed, 197 insertions, 0 deletions
diff --git a/src/main/java/net/minecraft/server/CraftingRecipe.java b/src/main/java/net/minecraft/server/CraftingRecipe.java new file mode 100644 index 00000000..dee3749c --- /dev/null +++ b/src/main/java/net/minecraft/server/CraftingRecipe.java @@ -0,0 +1,12 @@ +package net.minecraft.server; + +public interface CraftingRecipe { + + boolean a(InventoryCrafting inventorycrafting); + + ItemStack b(InventoryCrafting inventorycrafting); + + int a(); + + ItemStack b(); +} diff --git a/src/main/java/net/minecraft/server/FurnaceRecipes.java b/src/main/java/net/minecraft/server/FurnaceRecipes.java new file mode 100644 index 00000000..8d4bd61b --- /dev/null +++ b/src/main/java/net/minecraft/server/FurnaceRecipes.java @@ -0,0 +1,44 @@ +package net.minecraft.server; + +import java.util.HashMap; +import java.util.Map; + +public class FurnaceRecipes { + + private static final FurnaceRecipes a = new FurnaceRecipes(); + private Map b = new HashMap(); + + public static final FurnaceRecipes getInstance() { + return a; + } + + private FurnaceRecipes() { + this.registerRecipe(Block.IRON_ORE.id, new ItemStack(Item.IRON_INGOT)); + this.registerRecipe(Block.GOLD_ORE.id, new ItemStack(Item.GOLD_INGOT)); + this.registerRecipe(Block.DIAMOND_ORE.id, new ItemStack(Item.DIAMOND)); + this.registerRecipe(Block.SAND.id, new ItemStack(Block.GLASS)); + this.registerRecipe(Item.PORK.id, new ItemStack(Item.GRILLED_PORK)); + this.registerRecipe(Item.RAW_BEEF.id, new ItemStack(Item.COOKED_BEEF)); + this.registerRecipe(Item.RAW_CHICKEN.id, new ItemStack(Item.COOKED_CHICKEN)); + this.registerRecipe(Item.RAW_FISH.id, new ItemStack(Item.COOKED_FISH)); + this.registerRecipe(Block.COBBLESTONE.id, new ItemStack(Block.STONE)); + this.registerRecipe(Item.CLAY_BALL.id, new ItemStack(Item.CLAY_BRICK)); + this.registerRecipe(Block.CACTUS.id, new ItemStack(Item.INK_SACK, 1, 2)); + this.registerRecipe(Block.LOG.id, new ItemStack(Item.COAL, 1, 1)); + this.registerRecipe(Block.COAL_ORE.id, new ItemStack(Item.COAL)); + this.registerRecipe(Block.REDSTONE_ORE.id, new ItemStack(Item.REDSTONE)); + this.registerRecipe(Block.LAPIS_ORE.id, new ItemStack(Item.INK_SACK, 1, 4)); + } + + public void registerRecipe(int i, ItemStack itemstack) { + this.b.put(Integer.valueOf(i), itemstack); + } + + public ItemStack a(int i) { + return (ItemStack) this.b.get(Integer.valueOf(i)); + } + + public Map b() { + return this.b; + } +} diff --git a/src/main/java/net/minecraft/server/ShapedRecipes.java b/src/main/java/net/minecraft/server/ShapedRecipes.java new file mode 100644 index 00000000..6fde0c73 --- /dev/null +++ b/src/main/java/net/minecraft/server/ShapedRecipes.java @@ -0,0 +1,82 @@ +package net.minecraft.server; + +public class ShapedRecipes implements CraftingRecipe { + + private int b; + private int c; + private ItemStack[] d; + private ItemStack e; + public final int a; + + public ShapedRecipes(int i, int j, ItemStack[] aitemstack, ItemStack itemstack) { + this.a = itemstack.id; + this.b = i; + this.c = j; + this.d = aitemstack; + this.e = itemstack; + } + + public ItemStack b() { + return this.e; + } + + public boolean a(InventoryCrafting inventorycrafting) { + for (int i = 0; i <= 3 - this.b; ++i) { + for (int j = 0; j <= 3 - this.c; ++j) { + if (this.a(inventorycrafting, i, j, true)) { + return true; + } + + if (this.a(inventorycrafting, i, j, false)) { + return true; + } + } + } + + return false; + } + + private boolean a(InventoryCrafting inventorycrafting, int i, int j, boolean flag) { + for (int k = 0; k < 3; ++k) { + for (int l = 0; l < 3; ++l) { + int i1 = k - i; + int j1 = l - j; + ItemStack itemstack = null; + + if (i1 >= 0 && j1 >= 0 && i1 < this.b && j1 < this.c) { + if (flag) { + itemstack = this.d[this.b - i1 - 1 + j1 * this.b]; + } else { + itemstack = this.d[i1 + j1 * this.b]; + } + } + + ItemStack itemstack1 = inventorycrafting.b(k, l); + + if (itemstack1 != null || itemstack != null) { + if (itemstack1 == null && itemstack != null || itemstack1 != null && itemstack == null) { + return false; + } + + if (itemstack.id != itemstack1.id) { + return false; + } + + if (itemstack.getData() != -1 && itemstack.getData() != itemstack1.getData()) { + return false; + } + } + } + } + + return true; + } + + public ItemStack b(InventoryCrafting inventorycrafting) { + return new ItemStack(this.e.id, this.e.count, this.e.getData()); + } + + public int a() { + return this.b * this.c; + } +} diff --git a/src/main/java/net/minecraft/server/ShapelessRecipes.java b/src/main/java/net/minecraft/server/ShapelessRecipes.java new file mode 100644 index 00000000..d38896a4 --- /dev/null +++ b/src/main/java/net/minecraft/server/ShapelessRecipes.java @@ -0,0 +1,59 @@ +package net.minecraft.server; + +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; + +public class ShapelessRecipes implements CraftingRecipe { + + private final ItemStack a; + private final List b; + + public ShapelessRecipes(ItemStack itemstack, List list) { + this.a = itemstack; + this.b = list; + } + + public ItemStack b() { + return this.a; + } + + public boolean a(InventoryCrafting inventorycrafting) { + ArrayList arraylist = new ArrayList(this.b); + + for (int i = 0; i < 3; ++i) { + for (int j = 0; j < 3; ++j) { + ItemStack itemstack = inventorycrafting.b(j, i); + + if (itemstack != null) { + boolean flag = false; + Iterator iterator = arraylist.iterator(); + + while (iterator.hasNext()) { + ItemStack itemstack1 = (ItemStack) iterator.next(); + + if (itemstack.id == itemstack1.id && (itemstack1.getData() == -1 || itemstack.getData() == itemstack1.getData())) { + flag = true; + arraylist.remove(itemstack1); + break; + } + } + + if (!flag) { + return false; + } + } + } + } + + return arraylist.isEmpty(); + } + + public ItemStack b(InventoryCrafting inventorycrafting) { + return this.a.cloneItemStack(); + } + + public int a() { + return this.b.size(); + } +} |